diff --git a/web/src/plugins/game-library/game-library.css b/web/src/plugins/game-library/game-library.css index 2ed46b4..1b791da 100644 --- a/web/src/plugins/game-library/game-library.css +++ b/web/src/plugins/game-library/game-library.css @@ -62,7 +62,7 @@ align-items: center; gap: 8px; padding: 6px 12px; - border-radius: 20px; + border-radius: 4px; background: rgba(255,255,255,0.05); border: 1px solid rgba(255,255,255,0.1); cursor: pointer; @@ -234,7 +234,7 @@ gap: 6px; background: var(--bg-tertiary); padding: 6px 12px 6px 6px; - border-radius: 20px; + border-radius: 4px; cursor: pointer; transition: all var(--transition); } @@ -479,7 +479,6 @@ .gl-empty-icon { font-size: 64px; line-height: 1; - filter: drop-shadow(0 0 20px rgba(230,126,34,0.5)); animation: gl-empty-float 3s ease-in-out infinite; } @@ -704,7 +703,7 @@ } .gl-sort-select option { - background: #1a1a2e; + background: #1a1810; color: #c7d5e0; } @@ -723,7 +722,7 @@ color: #8899a6; border: 1px solid rgba(255, 255, 255, 0.08); padding: 5px 12px; - border-radius: 20px; + border-radius: 4px; font-size: 12px; cursor: pointer; transition: all 0.2s; @@ -778,12 +777,11 @@ align-items: center; justify-content: center; z-index: 1000; - backdrop-filter: blur(4px); } .gl-dialog { - background: #2a2a3e; - border-radius: 12px; + background: #2a2620; + border-radius: 6px; padding: 24px; max-width: 500px; width: 90%; @@ -806,9 +804,9 @@ .gl-dialog-input { width: 100%; padding: 10px 12px; - background: #1a1a2e; + background: #1a1810; border: 1px solid #444; - border-radius: 8px; + border-radius: 6px; color: #fff; font-size: 0.9rem; outline: none; @@ -847,16 +845,16 @@ .gl-dialog-cancel { padding: 8px 18px; - background: #3a3a4e; + background: #322d26; color: #ccc; border: none; - border-radius: 8px; + border-radius: 6px; cursor: pointer; font-size: 0.9rem; } .gl-dialog-cancel:hover { - background: #4a4a5e; + background: #3a352d; } .gl-dialog-submit { @@ -864,7 +862,7 @@ background: #a855f7; color: #fff; border: none; - border-radius: 8px; + border-radius: 6px; cursor: pointer; font-size: 0.9rem; font-weight: 600; @@ -902,8 +900,8 @@ } .gl-admin-panel { - background: #2a2a3e; - border-radius: 12px; + background: #2a2620; + border-radius: 6px; padding: 0; max-width: 600px; width: 92%; @@ -962,7 +960,7 @@ color: #fff; border: none; padding: 10px 20px; - border-radius: 8px; + border-radius: 6px; cursor: pointer; font-weight: 600; white-space: nowrap; diff --git a/web/src/plugins/lolstats/lolstats.css b/web/src/plugins/lolstats/lolstats.css index f4b552d..efa1a28 100644 --- a/web/src/plugins/lolstats/lolstats.css +++ b/web/src/plugins/lolstats/lolstats.css @@ -20,7 +20,7 @@ min-width: 0; padding: 10px 14px; border: 1px solid var(--bg-tertiary); - border-radius: 8px; + border-radius: 4px; background: var(--bg-secondary); color: var(--text-normal); font-size: 15px; @@ -33,7 +33,7 @@ .lol-search-region { padding: 10px 12px; border: 1px solid var(--bg-tertiary); - border-radius: 8px; + border-radius: 4px; background: var(--bg-secondary); color: var(--text-normal); font-size: 14px; @@ -44,7 +44,7 @@ .lol-search-btn { padding: 10px 20px; border: none; - border-radius: 8px; + border-radius: 4px; background: var(--accent); color: #fff; font-weight: 600; @@ -70,7 +70,7 @@ gap: 6px; padding: 4px 10px; border: 1px solid var(--bg-tertiary); - border-radius: 16px; + border-radius: 4px; background: var(--bg-secondary); color: var(--text-muted); font-size: 12px; @@ -94,13 +94,13 @@ align-items: center; gap: 16px; padding: 16px; - border-radius: 12px; + border-radius: 6px; background: var(--bg-secondary); margin-bottom: 12px; } .lol-profile-icon { width: 72px; height: 72px; - border-radius: 12px; + border-radius: 6px; border: 2px solid var(--bg-tertiary); object-fit: cover; } @@ -139,7 +139,7 @@ gap: 6px; padding: 8px 16px; border: 1px solid var(--bg-tertiary); - border-radius: 8px; + border-radius: 4px; background: var(--bg-primary); color: var(--text-muted); font-size: 13px; @@ -170,7 +170,7 @@ .lol-ranked-card { flex: 1; padding: 12px 14px; - border-radius: 10px; + border-radius: 6px; background: var(--bg-secondary); border-left: 4px solid var(--bg-tertiary); } @@ -232,7 +232,7 @@ align-items: center; gap: 8px; padding: 8px 12px; - border-radius: 8px; + border-radius: 4px; background: var(--bg-secondary); min-width: 180px; flex-shrink: 0; @@ -268,7 +268,7 @@ align-items: center; gap: 10px; padding: 10px 12px; - border-radius: 8px; + border-radius: 4px; background: var(--bg-secondary); border-left: 4px solid var(--bg-tertiary); cursor: pointer; @@ -374,7 +374,7 @@ /* ── Match Detail (expanded) ── */ .lol-match-detail { background: var(--bg-primary); - border-radius: 8px; + border-radius: 4px; padding: 8px; margin-top: 4px; margin-bottom: 4px; @@ -447,7 +447,7 @@ .lol-error { padding: 16px; - border-radius: 8px; + border-radius: 4px; background: rgba(231,76,60,0.1); color: #e74c3c; font-size: 13px; @@ -462,7 +462,6 @@ } .lol-empty-icon { font-size: 64px; line-height: 1; - filter: drop-shadow(0 0 20px rgba(230,126,34,0.5)); animation: lol-float 3s ease-in-out infinite; } @keyframes lol-float { @@ -470,11 +469,11 @@ 50% { transform: translateY(-8px); } } .lol-empty h3 { - font-size: 26px; font-weight: 700; color: #f2f3f5; + font-size: 26px; font-weight: 700; color: var(--text-normal); letter-spacing: -0.5px; margin: 0; } .lol-empty p { - font-size: 15px; color: #80848e; + font-size: 15px; color: var(--text-muted); text-align: center; max-width: 360px; line-height: 1.5; margin: 0; } @@ -485,7 +484,7 @@ padding: 10px; margin-top: 8px; border: 1px solid var(--bg-tertiary); - border-radius: 8px; + border-radius: 4px; background: transparent; color: var(--text-muted); font-size: 13px; @@ -521,7 +520,7 @@ .lol-tier-mode-btn { padding: 6px 14px; border: 1px solid var(--bg-tertiary); - border-radius: 16px; + border-radius: 4px; background: var(--bg-secondary); color: var(--text-muted); font-size: 12px; @@ -540,7 +539,7 @@ .lol-tier-filter { padding: 6px 12px; border: 1px solid var(--bg-tertiary); - border-radius: 8px; + border-radius: 4px; background: var(--bg-secondary); color: var(--text-normal); font-size: 12px; diff --git a/web/src/plugins/soundboard/soundboard.css b/web/src/plugins/soundboard/soundboard.css index 642dfb3..3031a6f 100644 --- a/web/src/plugins/soundboard/soundboard.css +++ b/web/src/plugins/soundboard/soundboard.css @@ -266,13 +266,12 @@ height: 7px; border-radius: 50%; background: var(--success); - box-shadow: 0 0 6px rgba(67, 181, 129, .6); animation: pulse-dot 2s ease-in-out infinite; } @keyframes pulse-dot { - 0%, 100% { box-shadow: 0 0 6px rgba(67, 181, 129, .5); } - 50% { box-shadow: 0 0 12px rgba(67, 181, 129, .8); } + 0%, 100% { opacity: 1; } + 50% { opacity: .6; } } .conn-ping { @@ -290,7 +289,6 @@ border-radius: var(--radius-full); background: rgba(237, 66, 69, .1); border: 1px solid rgba(237, 66, 69, .2); - backdrop-filter: blur(8px); color: var(--danger); font-size: var(--text-sm); font-weight: var(--weight-semibold); @@ -301,7 +299,6 @@ .disconnect-btn:hover { background: rgba(237, 66, 69, .2); border-color: rgba(237, 66, 69, .4); - box-shadow: 0 0 12px rgba(237, 66, 69, .15); } .disconnect-btn:active { @@ -317,7 +314,6 @@ display: flex; align-items: center; justify-content: center; - backdrop-filter: blur(16px); animation: fade-in .15s ease; } @@ -399,8 +395,8 @@ /* ── Admin Icon Button ── */ .admin-btn-icon { - width: 32px; - height: 32px; + width: 26px; + height: 26px; border-radius: var(--radius-sm); display: flex; align-items: center; @@ -442,7 +438,7 @@ /* Alias: SoundboardTab uses .filter-chip */ .filter-chip { - height: 30px; + height: 26px; display: flex; align-items: center; gap: var(--space-1); @@ -475,7 +471,7 @@ } .cat-tab { - height: 30px; + height: 26px; display: flex; align-items: center; gap: var(--space-1); @@ -530,7 +526,7 @@ .search-input { width: 100%; - height: 32px; + height: 26px; padding: 0 var(--space-7) 0 var(--space-8); border: 1px solid var(--border-default); border-radius: var(--radius-sm); @@ -712,20 +708,20 @@ .tb-btn.party:hover { background: var(--warning); - color: #1a1b1e; + color: #1a1810; border-color: var(--warning); } .tb-btn.party.active { background: var(--warning); - color: #1a1b1e; + color: #1a1810; border-color: var(--warning); animation: party-btn 600ms ease-in-out infinite alternate; } @keyframes party-btn { - from { box-shadow: 0 0 8px rgba(250, 166, 26, .4); } - to { box-shadow: 0 0 20px rgba(250, 166, 26, .7); } + from { opacity: .9; } + to { opacity: 1; } } .tb-btn.stop { @@ -815,7 +811,6 @@ .theme-dot.active { border-color: #fff; - box-shadow: 0 0 6px var(--accent-glow); } /* ── Analytics Strip ── */ @@ -1187,14 +1182,13 @@ border-radius: inherit; opacity: 0; transition: opacity var(--duration-fast); - background: radial-gradient(circle at 50% 0%, var(--accent-soft), transparent 70%); + background: var(--accent-soft); pointer-events: none; } .sound-card:hover { border-color: var(--accent); transform: translateY(-2px); - box-shadow: 0 4px 20px var(--accent-glow); background: var(--surface-glass-hover); } @@ -1209,14 +1203,13 @@ .sound-card.playing { border-color: var(--accent); - box-shadow: 0 0 20px var(--accent-glow); - background: linear-gradient(135deg, var(--accent-soft), var(--surface-glass)); + background: var(--accent-soft); animation: card-enter 350ms var(--ease-out) forwards, playing-glow 1.2s ease-in-out infinite alternate; } @keyframes playing-glow { - from { box-shadow: 0 0 4px var(--accent-glow); } - to { box-shadow: 0 0 16px var(--accent-glow); } + from { opacity: .85; } + to { opacity: 1; } } @keyframes card-enter { @@ -1491,14 +1484,12 @@ height: 14px; border-radius: 50%; background: var(--accent); - box-shadow: 0 0 8px var(--accent-glow); cursor: pointer; - transition: transform var(--duration-fast), box-shadow var(--duration-fast); + transition: transform var(--duration-fast); } .vol-slider::-webkit-slider-thumb:hover { transform: scale(1.3); - box-shadow: 0 0 14px var(--accent-glow); } .vol-slider::-moz-range-thumb { @@ -1506,7 +1497,6 @@ height: 14px; border-radius: 50%; background: var(--accent); - box-shadow: 0 0 8px var(--accent-glow); border: none; cursor: pointer; } @@ -1537,24 +1527,7 @@ animation: party-hue 2s linear infinite; } -.party-overlay::before { - content: ''; - position: absolute; - inset: 0; - background: linear-gradient(45deg, - rgba(255, 0, 0, .04), - rgba(0, 255, 0, .04), - rgba(0, 0, 255, .04), - rgba(255, 255, 0, .04) - ); - background-size: 400% 400%; - animation: party-grad 3s ease infinite; -} - -@keyframes party-grad { - 0% { background-position: 0% 50%; } - 50% { background-position: 100% 50%; } - 100% { background-position: 0% 50%; } +/* Party gradient removed per CI v2 */ } @keyframes party-hue { @@ -1574,7 +1547,6 @@ padding: var(--space-1); z-index: 1000; animation: ctx-in 100ms var(--ease-out); - backdrop-filter: blur(16px); } @keyframes ctx-in { @@ -1655,7 +1627,7 @@ .toast.warning { background: var(--warning); - color: #1a1b1e; + color: #1a1810; } .toast.notice { @@ -1675,8 +1647,6 @@ position: fixed; inset: 0; background: rgba(0, 0, 0, .6); - backdrop-filter: blur(16px); - -webkit-backdrop-filter: blur(16px); z-index: 60; display: flex; align-items: center; @@ -2096,8 +2066,6 @@ position: fixed; inset: 0; background: rgba(0, 0, 0, .78); - backdrop-filter: blur(6px); - -webkit-backdrop-filter: blur(6px); z-index: 300; display: flex; align-items: center; @@ -2126,7 +2094,7 @@ } 50% { border-color: var(--accent); - box-shadow: 0 0 60px 12px var(--accent-glow); + box-shadow: none; opacity: 1; } } @@ -2168,7 +2136,6 @@ border-radius: var(--radius-lg); box-shadow: var(--shadow-xl); z-index: 200; - backdrop-filter: blur(16px); animation: slide-up 200ms var(--ease-out); } @@ -2311,7 +2278,6 @@ align-items: center; justify-content: center; z-index: 300; - backdrop-filter: blur(16px); animation: fade-in 150ms ease; } diff --git a/web/src/plugins/streaming/streaming.css b/web/src/plugins/streaming/streaming.css index c9a6e27..bb90670 100644 --- a/web/src/plugins/streaming/streaming.css +++ b/web/src/plugins/streaming/streaming.css @@ -379,7 +379,6 @@ } .stream-empty-icon { font-size: 64px; line-height: 1; - filter: drop-shadow(0 0 20px rgba(230,126,34,0.5)); animation: stream-float 3s ease-in-out infinite; } @keyframes stream-float { @@ -539,7 +538,7 @@ .stream-admin-panel { background: var(--bg-secondary); - border-radius: 12px; + border-radius: 6px; width: 560px; max-width: 95vw; max-height: 80vh; @@ -652,7 +651,7 @@ align-items: center; gap: 4px; padding: 4px 10px; - border-radius: 14px; + border-radius: 6px; font-size: 12px; color: var(--text-muted); background: var(--bg-secondary); diff --git a/web/src/plugins/watch-together/watch-together.css b/web/src/plugins/watch-together/watch-together.css index c24e283..95111c5 100644 --- a/web/src/plugins/watch-together/watch-together.css +++ b/web/src/plugins/watch-together/watch-together.css @@ -167,7 +167,6 @@ } .wt-empty-icon { font-size: 64px; line-height: 1; - filter: drop-shadow(0 0 20px rgba(230,126,34,0.5)); animation: wt-float 3s ease-in-out infinite; } @keyframes wt-float { @@ -557,9 +556,9 @@ } .wt-quality-select { - background: var(--bg-secondary, #2a2a3e); + background: var(--bg-secondary, #2a2620); color: var(--text-primary, #e0e0e0); - border: 1px solid var(--border-color, #3a3a4e); + border: 1px solid var(--border-color, #3a352d); border-radius: 6px; padding: 2px 6px; font-size: 12px; @@ -865,9 +864,9 @@ border-radius: 50%; flex-shrink: 0; } -.wt-sync-synced { background: #2ecc71; box-shadow: 0 0 6px rgba(46, 204, 113, 0.5); } -.wt-sync-drifting { background: #f1c40f; box-shadow: 0 0 6px rgba(241, 196, 15, 0.5); } -.wt-sync-desynced { background: #e74c3c; box-shadow: 0 0 6px rgba(231, 76, 60, 0.5); } +.wt-sync-synced { background: #2ecc71; } +.wt-sync-drifting { background: #f1c40f; } +.wt-sync-desynced { background: #e74c3c; } /* ══════════════════════════════════════ VOTE BUTTONS diff --git a/web/src/styles.css b/web/src/styles.css index 89858fa..6319c92 100644 --- a/web/src/styles.css +++ b/web/src/styles.css @@ -1,63 +1,69 @@ /* ============================================================ GAMING HUB -- Global Styles - Design System v2.0 -- Codename "Neon Forge" + Design System v3.0 -- CI Redesign (warm brown, DM Sans) ============================================================ */ /* -- Google Fonts ------------------------------------------- */ -@import url('https://fonts.googleapis.com/css2?family=DM+Sans:ital,opsz,wght@0,9..40,400;0,9..40,500;0,9..40,600;1,9..40,400&family=Space+Grotesk:wght@600;700&display=swap'); +@import url('https://fonts.googleapis.com/css2?family=DM+Sans:opsz,wght@9..40,300;9..40,400;9..40,500;9..40,600;9..40,700&family=DM+Mono:wght@400;500&display=swap'); /* ============================================================ A) CSS CUSTOM PROPERTIES ============================================================ */ :root { - /* -- Surface Palette -------------------------------------- */ - --bg-deepest: #0d0e12; - --bg-deep: #12131a; - --bg-primary: #181a23; - --bg-secondary: #1e2030; - --bg-tertiary: #252839; - --bg-elevated: #2a2d42; - --bg-hover: #303450; - --bg-active: #383c58; + /* -- Surface Palette (warm brown) ------------------------- */ + --bg-deepest: #141209; + --bg-deep: #1a1810; + --bg-primary: #211e17; + --bg-secondary: #2a2620; + --bg-tertiary: #322d26; + --bg-elevated: #3a352d; + --bg-hover: #3e3830; + --bg-active: #453f36; + --bg-input: #1e1b15; + --bg-header: #1e1b14; /* -- Text Colors ------------------------------------------ */ - --text-primary: #eef0f6; - --text-secondary: #a0a5b8; - --text-tertiary: #6b7089; - --text-disabled: #484d64; + --text-primary: #dbdee1; + --text-secondary: #949ba4; + --text-tertiary: #6d6f78; + --text-disabled: #4a4940; /* -- Semantic Colors -------------------------------------- */ - --success: #43b581; - --warning: #faa61a; + --success: #57d28f; + --warning: #fee75c; --danger: #ed4245; --info: #5865f2; - /* -- Glass / Surface Tokens ------------------------------- */ - --surface-glass: rgba(255, 255, 255, .035); - --surface-glass-hover: rgba(255, 255, 255, .065); - --surface-glass-active: rgba(255, 255, 255, .09); - --surface-glass-border: rgba(255, 255, 255, .07); - --surface-glass-border-hover: rgba(255, 255, 255, .12); + /* -- Surface Tokens (solid, no glass) --------------------- */ + --surface-glass: rgba(255, 255, 255, .04); + --surface-glass-hover: rgba(255, 255, 255, .07); + --surface-glass-active: rgba(255, 255, 255, .10); + --surface-glass-border: rgba(255, 255, 255, .05); + --surface-glass-border-hover: rgba(255, 255, 255, .10); /* -- Border Tokens ---------------------------------------- */ --border-subtle: rgba(255, 255, 255, .05); --border-default: rgba(255, 255, 255, .08); - --border-strong: rgba(255, 255, 255, .14); + --border-strong: rgba(255, 255, 255, .12); + + /* -- Accent Helpers --------------------------------------- */ + --accent-dim: rgba(230, 126, 34, 0.15); + --accent-border: rgba(230, 126, 34, 0.35); /* -- Font Stacks ------------------------------------------ */ - --font-display: 'Space Grotesk', 'DM Sans', system-ui, sans-serif; + --font-display: 'DM Sans', system-ui, sans-serif; --font-body: 'DM Sans', system-ui, -apple-system, sans-serif; - --font-mono: 'JetBrains Mono', 'Fira Code', monospace; + --font-mono: 'DM Mono', monospace; /* -- Type Scale ------------------------------------------- */ --text-xs: 11px; --text-sm: 12px; - --text-base: 14px; - --text-md: 15px; - --text-lg: 18px; - --text-xl: 22px; - --text-2xl: 28px; - --text-3xl: 36px; + --text-base: 13px; + --text-md: 14px; + --text-lg: 16px; + --text-xl: 20px; + --text-2xl: 24px; + --text-3xl: 32px; /* -- Font Weights ----------------------------------------- */ --weight-regular: 400; @@ -78,31 +84,31 @@ --space-10: 64px; /* -- Border Radii ----------------------------------------- */ - --radius-xs: 4px; - --radius-sm: 6px; - --radius-md: 10px; - --radius-lg: 14px; - --radius-xl: 20px; + --radius-xs: 3px; + --radius-sm: 4px; + --radius-md: 6px; + --radius-lg: 8px; + --radius-xl: 8px; --radius-full: 9999px; /* -- Shadows / Elevation ---------------------------------- */ - --shadow-xs: 0 1px 2px rgba(0, 0, 0, .3); - --shadow-sm: 0 2px 8px rgba(0, 0, 0, .35); - --shadow-md: 0 4px 16px rgba(0, 0, 0, .4); - --shadow-lg: 0 8px 32px rgba(0, 0, 0, .5); - --shadow-xl: 0 16px 48px rgba(0, 0, 0, .6); + --shadow-xs: 0 1px 2px rgba(0, 0, 0, .25); + --shadow-sm: 0 2px 6px rgba(0, 0, 0, .3); + --shadow-md: 0 2px 8px rgba(0, 0, 0, .35); + --shadow-lg: 0 4px 16px rgba(0, 0, 0, .4); + --shadow-xl: 0 8px 24px rgba(0, 0, 0, .45); /* -- Motion ----------------------------------------------- */ - --duration-fast: 120ms; - --duration-normal: 200ms; - --duration-slow: 350ms; + --duration-fast: 100ms; + --duration-normal: 150ms; + --duration-slow: 200ms; --ease-out: cubic-bezier(0.16, 1, 0.3, 1); --ease-in-out: cubic-bezier(0.76, 0, 0.24, 1); --ease-spring: cubic-bezier(0.34, 1.56, 0.64, 1); /* -- Layout ----------------------------------------------- */ --sidebar-nav-w: 200px; - --header-h: 52px; + --header-h: 44px; } @@ -113,87 +119,45 @@ /* Default: Ember (orange) */ :root, [data-accent="ember"] { - --accent-h: 27; - --accent-s: 80%; - --accent-l: 52%; - --accent: hsl(var(--accent-h), var(--accent-s), var(--accent-l)); - --accent-hover: hsl(var(--accent-h), var(--accent-s), calc(var(--accent-l) - 8%)); - --accent-soft: hsla(var(--accent-h), var(--accent-s), var(--accent-l), 0.15); - --accent-glow: hsla(var(--accent-h), var(--accent-s), var(--accent-l), 0.45); - --accent-text: hsl(var(--accent-h), var(--accent-s), calc(var(--accent-l) + 15%)); - --accent-gradient: linear-gradient(135deg, - hsl(var(--accent-h), var(--accent-s), var(--accent-l)), - hsl(calc(var(--accent-h) + 30), var(--accent-s), var(--accent-l))); + --accent: #e67e22; + --accent-hover: #d35400; + --accent-soft: rgba(230, 126, 34, 0.15); + --accent-text: #f0a050; } [data-accent="amethyst"] { - --accent-h: 270; - --accent-s: 60%; - --accent-l: 55%; - --accent: hsl(var(--accent-h), var(--accent-s), var(--accent-l)); - --accent-hover: hsl(var(--accent-h), var(--accent-s), calc(var(--accent-l) - 8%)); - --accent-soft: hsla(var(--accent-h), var(--accent-s), var(--accent-l), 0.15); - --accent-glow: hsla(var(--accent-h), var(--accent-s), var(--accent-l), 0.45); - --accent-text: hsl(var(--accent-h), var(--accent-s), calc(var(--accent-l) + 15%)); - --accent-gradient: linear-gradient(135deg, - hsl(var(--accent-h), var(--accent-s), var(--accent-l)), - hsl(calc(var(--accent-h) + 30), var(--accent-s), var(--accent-l))); + --accent: #9b59b6; + --accent-hover: #8e44ad; + --accent-soft: rgba(155, 89, 182, 0.15); + --accent-text: #b580d0; } [data-accent="ocean"] { - --accent-h: 210; - --accent-s: 70%; - --accent-l: 52%; - --accent: hsl(var(--accent-h), var(--accent-s), var(--accent-l)); - --accent-hover: hsl(var(--accent-h), var(--accent-s), calc(var(--accent-l) - 8%)); - --accent-soft: hsla(var(--accent-h), var(--accent-s), var(--accent-l), 0.15); - --accent-glow: hsla(var(--accent-h), var(--accent-s), var(--accent-l), 0.45); - --accent-text: hsl(var(--accent-h), var(--accent-s), calc(var(--accent-l) + 15%)); - --accent-gradient: linear-gradient(135deg, - hsl(var(--accent-h), var(--accent-s), var(--accent-l)), - hsl(calc(var(--accent-h) + 30), var(--accent-s), var(--accent-l))); + --accent: #2e86c1; + --accent-hover: #2471a3; + --accent-soft: rgba(46, 134, 193, 0.15); + --accent-text: #5da8d8; } [data-accent="jade"] { - --accent-h: 152; - --accent-s: 60%; - --accent-l: 48%; - --accent: hsl(var(--accent-h), var(--accent-s), var(--accent-l)); - --accent-hover: hsl(var(--accent-h), var(--accent-s), calc(var(--accent-l) - 8%)); - --accent-soft: hsla(var(--accent-h), var(--accent-s), var(--accent-l), 0.15); - --accent-glow: hsla(var(--accent-h), var(--accent-s), var(--accent-l), 0.45); - --accent-text: hsl(var(--accent-h), var(--accent-s), calc(var(--accent-l) + 15%)); - --accent-gradient: linear-gradient(135deg, - hsl(var(--accent-h), var(--accent-s), var(--accent-l)), - hsl(calc(var(--accent-h) + 30), var(--accent-s), var(--accent-l))); + --accent: #27ae60; + --accent-hover: #1e8449; + --accent-soft: rgba(39, 174, 96, 0.15); + --accent-text: #52c47a; } [data-accent="rose"] { - --accent-h: 340; - --accent-s: 72%; - --accent-l: 55%; - --accent: hsl(var(--accent-h), var(--accent-s), var(--accent-l)); - --accent-hover: hsl(var(--accent-h), var(--accent-s), calc(var(--accent-l) - 8%)); - --accent-soft: hsla(var(--accent-h), var(--accent-s), var(--accent-l), 0.15); - --accent-glow: hsla(var(--accent-h), var(--accent-s), var(--accent-l), 0.45); - --accent-text: hsl(var(--accent-h), var(--accent-s), calc(var(--accent-l) + 15%)); - --accent-gradient: linear-gradient(135deg, - hsl(var(--accent-h), var(--accent-s), var(--accent-l)), - hsl(calc(var(--accent-h) + 30), var(--accent-s), var(--accent-l))); + --accent: #e74c8b; + --accent-hover: #c0397a; + --accent-soft: rgba(231, 76, 139, 0.15); + --accent-text: #f07aa8; } [data-accent="crimson"] { - --accent-h: 0; - --accent-s: 72%; - --accent-l: 52%; - --accent: hsl(var(--accent-h), var(--accent-s), var(--accent-l)); - --accent-hover: hsl(var(--accent-h), var(--accent-s), calc(var(--accent-l) - 8%)); - --accent-soft: hsla(var(--accent-h), var(--accent-s), var(--accent-l), 0.15); - --accent-glow: hsla(var(--accent-h), var(--accent-s), var(--accent-l), 0.45); - --accent-text: hsl(var(--accent-h), var(--accent-s), calc(var(--accent-l) + 15%)); - --accent-gradient: linear-gradient(135deg, - hsl(var(--accent-h), var(--accent-s), var(--accent-l)), - hsl(calc(var(--accent-h) + 30), var(--accent-s), var(--accent-l))); + --accent: #d63031; + --accent-hover: #b52728; + --accent-soft: rgba(214, 48, 49, 0.15); + --accent-text: #e25b5c; } @@ -298,14 +262,14 @@ html, body { height: 32px; min-width: 32px; border-radius: var(--radius-md); - background: var(--accent-gradient); + background: var(--accent); display: grid; place-items: center; font-family: var(--font-display); font-weight: var(--weight-bold); font-size: var(--text-base); color: #fff; - box-shadow: 0 0 12px var(--accent-glow); + /* no glow */ flex-shrink: 0; } @@ -314,7 +278,7 @@ html, body { font-weight: var(--weight-bold); font-size: var(--text-md); letter-spacing: -0.02em; - background: var(--accent-gradient); + background: var(--accent); -webkit-background-clip: text; -webkit-text-fill-color: transparent; background-clip: text; @@ -648,7 +612,7 @@ html, body { width: 32px; height: 32px; border-radius: var(--radius-full); - background: var(--accent-gradient); + background: var(--accent); display: grid; place-items: center; font-size: var(--text-base); @@ -678,8 +642,8 @@ html, body { } @keyframes pulse-status { - 0%, 100% { box-shadow: 0 0 0 0 rgba(67, 181, 129, .4); } - 50% { box-shadow: 0 0 0 5px rgba(67, 181, 129, 0); } + 0%, 100% { box-shadow: 0 0 0 0 rgba(87, 210, 143, .4); } + 50% { box-shadow: 0 0 0 5px rgba(87, 210, 143, 0); } } .sidebar-avatar .status-dot.online { @@ -756,7 +720,6 @@ html, body { .accent-swatch.active { border-color: #fff; transform: scale(1.15); - box-shadow: 0 0 8px currentColor; } @@ -803,14 +766,13 @@ html, body { } .playback-btn--party { - background: var(--accent-gradient); + background: var(--accent); color: #fff; font-weight: var(--weight-semibold); } .playback-btn--party:hover { - box-shadow: 0 0 16px var(--accent-glow); - transform: translateY(-1px); + opacity: 0.85; } /* -- Theme Picker ------------------------------------------- */ @@ -839,15 +801,15 @@ html, body { .theme-swatch.active { border-color: #fff; - box-shadow: 0 0 8px var(--accent-glow); + /* no glow */ } -.theme-swatch[data-t="ember"] { background: hsl(27, 80%, 52%); } -.theme-swatch[data-t="amethyst"] { background: hsl(270, 60%, 55%); } -.theme-swatch[data-t="ocean"] { background: hsl(210, 70%, 52%); } -.theme-swatch[data-t="jade"] { background: hsl(152, 60%, 48%); } -.theme-swatch[data-t="rose"] { background: hsl(340, 72%, 55%); } -.theme-swatch[data-t="crimson"] { background: hsl(0, 72%, 52%); } +.theme-swatch[data-t="ember"] { background: #e67e22; } +.theme-swatch[data-t="amethyst"] { background: #9b59b6; } +.theme-swatch[data-t="ocean"] { background: #2e86c1; } +.theme-swatch[data-t="jade"] { background: #27ae60; } +.theme-swatch[data-t="rose"] { background: #e74c8b; } +.theme-swatch[data-t="crimson"] { background: #d63031; } /* -- Connection Badge --------------------------------------- */ .connection-badge { @@ -862,7 +824,7 @@ html, body { .connection-badge.connected { color: var(--success); - background: rgba(67, 181, 129, .1); + background: rgba(87, 210, 143, .1); } .connection-badge .dot { @@ -874,8 +836,8 @@ html, body { } @keyframes pulse-dot { - 0%, 100% { opacity: 1; box-shadow: 0 0 0 0 rgba(67, 181, 129, .4); } - 50% { opacity: .8; box-shadow: 0 0 0 6px rgba(67, 181, 129, 0); } + 0%, 100% { opacity: 1; box-shadow: 0 0 0 0 rgba(87, 210, 143, .4); } + 50% { opacity: .8; box-shadow: 0 0 0 6px rgba(87, 210, 143, 0); } } /* -- Volume Control ----------------------------------------- */ @@ -907,7 +869,7 @@ html, body { background: var(--accent); cursor: pointer; border: none; - box-shadow: 0 0 8px var(--accent-glow); + /* no glow */ } .volume-slider::-moz-range-thumb { @@ -917,7 +879,7 @@ html, body { background: var(--accent); cursor: pointer; border: none; - box-shadow: 0 0 8px var(--accent-glow); + /* no glow */ } .volume-label { @@ -939,8 +901,7 @@ html, body { position: fixed; inset: 0; background: rgba(0, 0, 0, .7); - backdrop-filter: blur(6px); - -webkit-backdrop-filter: blur(6px); + /* no blur */ z-index: 1000; display: flex; align-items: center; @@ -1096,12 +1057,12 @@ html, body { } .hub-version-modal-update-btn.ready { - background: rgba(67, 181, 129, .15); + background: rgba(87, 210, 143, .15); color: var(--success); } .hub-version-modal-update-btn.ready:hover { - background: rgba(67, 181, 129, .25); + background: rgba(87, 210, 143, .25); } .hub-version-modal-update-status { @@ -1313,12 +1274,12 @@ html, body { padding: var(--space-3); cursor: pointer; transition: all var(--duration-fast); - box-shadow: 0 2px 10px var(--accent-glow); + box-shadow: 0 2px 6px rgba(0, 0, 0, .3); } .hub-admin-modal-login:hover { background: var(--accent-hover); - box-shadow: 0 4px 16px var(--accent-glow); + box-shadow: 0 2px 8px rgba(0, 0, 0, .35); } .hub-admin-modal-info { @@ -1332,14 +1293,14 @@ html, body { width: 44px; height: 44px; border-radius: 50%; - background: var(--accent-gradient); + background: var(--accent); display: flex; align-items: center; justify-content: center; font-size: 20px; font-weight: var(--weight-bold); color: #fff; - box-shadow: 0 0 12px var(--accent-glow); + /* no glow */ } .hub-admin-modal-text { @@ -1396,7 +1357,7 @@ html, body { .hub-admin-btn:hover { background: var(--surface-glass-hover); - border-color: var(--accent-glow); + border-color: var(--accent); box-shadow: 0 0 12px var(--accent-soft); } @@ -1492,7 +1453,7 @@ html, body { } .badge--success { - background: rgba(67, 181, 129, .15); + background: rgba(87, 210, 143, .15); color: var(--success); } @@ -1526,9 +1487,9 @@ html, body { white-space: nowrap; } -.btn--sm { height: 30px; padding: 0 var(--space-3); font-size: var(--text-sm); } -.btn--md { height: 36px; padding: 0 var(--space-4); font-size: var(--text-base); } -.btn--lg { height: 42px; padding: 0 var(--space-5); font-size: var(--text-md); } +.btn--sm { height: 24px; padding: 0 var(--space-2); font-size: var(--text-xs); } +.btn--md { height: 26px; padding: 0 var(--space-3); font-size: var(--text-sm); } +.btn--lg { height: 32px; padding: 0 var(--space-4); font-size: var(--text-base); } .btn--primary { background: var(--accent); @@ -1568,7 +1529,7 @@ html, body { background: #d63638; } -/* -- Glass Surfaces ----------------------------------------- */ +/* Glass classes kept as simple surface */ .glass--subtle { background: var(--surface-glass); border: 1px solid var(--surface-glass-border); @@ -1577,15 +1538,11 @@ html, body { .glass--medium { background: rgba(255, 255, 255, .06); border: 1px solid rgba(255, 255, 255, .10); - backdrop-filter: blur(8px); - -webkit-backdrop-filter: blur(8px); } .glass--strong { background: rgba(255, 255, 255, .09); border: 1px solid rgba(255, 255, 255, .14); - backdrop-filter: blur(16px); - -webkit-backdrop-filter: blur(16px); } /* -- Toast Notifications ------------------------------------ */ @@ -1661,18 +1618,7 @@ html, body { } -/* ============================================================ - K) NOISE TEXTURE OVERLAY - ============================================================ */ -.content-area::before, -.app-main::before { - content: ''; - position: absolute; - inset: 0; - background: url("data:image/svg+xml,%3Csvg viewBox='0 0 256 256' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.9' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='.015'/%3E%3C/svg%3E"); - pointer-events: none; - z-index: 0; -} +/* Noise texture removed per CI v2 */ /* ============================================================ @@ -1717,7 +1663,7 @@ html, body { width: 34px; height: 34px; border-radius: 50%; - background: var(--accent-gradient); + background: var(--accent); display: flex; align-items: center; justify-content: center; @@ -1776,37 +1722,37 @@ html, body { /* -- Radio Themes ------------------------------------------- */ .radio-container[data-theme="purple"] { - --bg-deep: #13111c; - --bg-primary: #1a1726; - --bg-secondary: #241f35; - --bg-tertiary: #2e2845; + --bg-deep: #16131c; + --bg-primary: #1d1926; + --bg-secondary: #272235; + --bg-tertiary: #312b42; --accent: #9b59b6; --accent-hover: #8e44ad; } .radio-container[data-theme="forest"] { - --bg-deep: #0f1a14; - --bg-primary: #142119; - --bg-secondary: #1c2e22; - --bg-tertiary: #253a2c; + --bg-deep: #121a14; + --bg-primary: #172119; + --bg-secondary: #1f2e22; + --bg-tertiary: #283a2c; --accent: #2ecc71; --accent-hover: #27ae60; } .radio-container[data-theme="ocean"] { - --bg-deep: #0a1628; - --bg-primary: #0f1e33; - --bg-secondary: #162a42; - --bg-tertiary: #1e3652; + --bg-deep: #101620; + --bg-primary: #151e2c; + --bg-secondary: #1c2a38; + --bg-tertiary: #243646; --accent: #3498db; --accent-hover: #2980b9; } .radio-container[data-theme="cherry"] { - --bg-deep: #1a0f14; - --bg-primary: #22141a; - --bg-secondary: #301c25; - --bg-tertiary: #3e2530; + --bg-deep: #1a1014; + --bg-primary: #22151a; + --bg-secondary: #301e25; + --bg-tertiary: #3e2830; --accent: #e74c6f; --accent-hover: #c0392b; } @@ -1916,8 +1862,8 @@ html, body { .radio-search-wrap { display: flex; align-items: center; - background: rgba(30, 31, 34, 0.92); - backdrop-filter: blur(12px); + background: rgba(33, 30, 23, 0.92); + /* no blur */ border: 1px solid var(--border-default); border-radius: var(--radius-lg); padding: 0 var(--space-3); @@ -1964,8 +1910,8 @@ html, body { /* -- Radio Search Results ----------------------------------- */ .radio-search-results { margin-top: var(--space-2); - background: rgba(30, 31, 34, 0.95); - backdrop-filter: blur(12px); + background: rgba(33, 30, 23, 0.95); + /* no blur */ border: 1px solid var(--border-default); border-radius: var(--radius-lg); max-height: 360px; @@ -2035,8 +1981,8 @@ html, body { align-items: center; gap: var(--space-1); padding: var(--space-3) var(--space-3); - background: rgba(30, 31, 34, 0.92); - backdrop-filter: blur(12px); + background: rgba(33, 30, 23, 0.92); + /* no blur */ border: 1px solid var(--border-default); border-radius: var(--radius-lg); color: var(--text-primary); @@ -2071,8 +2017,8 @@ html, body { width: 340px; height: 100%; z-index: 15; - background: rgba(30, 31, 34, 0.95); - backdrop-filter: blur(16px); + background: rgba(33, 30, 23, 0.95); + /* no blur */ border-left: 1px solid var(--border-default); display: flex; flex-direction: column; @@ -2420,7 +2366,7 @@ html, body { z-index: 10; font-size: var(--text-sm); color: var(--text-tertiary); - background: rgba(30, 31, 34, 0.8); + background: rgba(33, 30, 23, 0.8); padding: var(--space-1) var(--space-3); border-radius: var(--radius-full); pointer-events: none; @@ -2433,7 +2379,7 @@ html, body { z-index: 10; font-size: var(--text-sm); color: var(--text-tertiary); - background: rgba(30, 31, 34, 0.8); + background: rgba(33, 30, 23, 0.8); padding: var(--space-1) var(--space-3); border-radius: var(--radius-full); text-decoration: none; @@ -2442,7 +2388,7 @@ html, body { .radio-attribution:hover { color: var(--text-primary); - background: rgba(30, 31, 34, 0.92); + background: rgba(33, 30, 23, 0.92); } /* -- Radio Spinner ------------------------------------------ */ @@ -2465,14 +2411,14 @@ html, body { cursor: pointer; padding: var(--space-1) var(--space-3); border-radius: var(--radius-full); - background: rgba(67, 181, 129, .08); + background: rgba(87, 210, 143, .08); transition: all var(--duration-fast); flex-shrink: 0; user-select: none; } .radio-conn:hover { - background: rgba(67, 181, 129, .15); + background: rgba(87, 210, 143, .15); } .radio-conn-dot { @@ -2499,7 +2445,7 @@ html, body { display: flex; align-items: center; justify-content: center; - backdrop-filter: blur(4px); + /* no blur */ animation: fade-in .15s ease; }