File size: 7,090 Bytes
c61fc87
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
914f045
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
c61fc87
914f045
c61fc87
914f045
c61fc87
 
914f045
c61fc87
 
 
 
 
 
914f045
c61fc87
914f045
 
c61fc87
 
914f045
 
c61fc87
914f045
 
 
c61fc87
914f045
 
 
c61fc87
914f045
c61fc87
 
914f045
 
c61fc87
 
 
 
914f045
 
 
 
 
 
 
 
 
 
 
 
 
 
c61fc87
914f045
 
 
 
c61fc87
 
914f045
 
 
 
 
c61fc87
914f045
 
 
 
 
c61fc87
914f045
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
:root{
  --bg:#0a0a0f;
  --panel:#121223;
  --panel-2:#0f1020;
  --text:#e7e7ff;
  --muted:#9aa0b3;
  --accent:#7c4dff;
  --accent-2:#00e5ff;
  --good:#00e676;
  --warn:#ffea00;
  --bad:#ff5252;
  --glass:rgba(255,255,255,0.06);
}

*{ box-sizing: border-box; }
html,body,#root{ height:100%; }
body{
  margin:0; background: radial-gradient(1200px 600px at 20% -10%, rgba(124,77,255,.25), transparent 40%),
    radial-gradient(1000px 700px at 120% 10%, rgba(0,229,255,.18), transparent 35%),
    var(--bg);
  color:var(--text); font-family: ui-sans-serif, system-ui, -apple-system, Segoe UI, Roboto, Ubuntu, Cantarell, Noto Sans, Arial, "Apple Color Emoji", "Segoe UI Emoji";
}

/* Responsive tweaks */
@media (max-width: 900px){
  .row { flex-direction: column; }
  .container { padding: 12px; }
  .player-header { gap: 10px; }
  .chat { height: 240px; }
}
@media (max-width: 520px){
  .now-playing .thumb { display:none; }
}

.app-shell{ display:flex; min-height:100%; flex-direction:column; }
.top-glow{ height:4px; width:100%; background: linear-gradient(90deg, var(--accent) 0%, var(--accent-2) 50%, var(--good) 100%); filter: blur(2px); }
.header{ padding:16px 20px; position:sticky; top:0; z-index:10; background: linear-gradient(180deg, rgba(10,10,15,.9), rgba(10,10,15,.5) 80%, transparent); backdrop-filter: blur(6px); border-bottom:1px solid rgba(255,255,255,.06); }
.brand{ display:flex; align-items:center; gap:10px; font-weight:700; }
.brand .logo{ width:28px; height:28px; border-radius:50%; background: radial-gradient(circle at 30% 30%, var(--accent-2), var(--accent)); box-shadow: 0 0 16px rgba(124,77,255,.6), 0 0 24px rgba(0,229,255,.4); }
.container{ max-width:1100px; margin:0 auto; padding:20px; }
.panel{ background: linear-gradient(180deg, var(--panel), var(--panel-2)); border:1px solid rgba(255,255,255,.08); border-radius:14px; padding:16px; box-shadow: 0 8px 40px rgba(0,0,0,.35), inset 0 1px 0 rgba(255,255,255,.04); }
.row{ display:flex; gap:16px; flex-wrap:wrap; }
.col{ flex:1 1 320px; min-width:320px; }

.input, .select { width:100%; padding:12px 14px; border-radius:10px; border:1px solid rgba(255,255,255,.12); background: rgba(10,10,20,.7); color:var(--text); outline:none; }
.input:focus, .select:focus { border-color: var(--accent-2); box-shadow: 0 0 0 3px rgba(0,229,255,.15); }

.btn{ display:inline-flex; align-items:center; justify-content:center; gap:8px; padding:10px 14px; border-radius:10px; cursor:pointer; border:1px solid rgba(255,255,255,.12); background: rgba(20,20,35,.7); color:var(--text); transition: transform .08s ease, box-shadow .15s ease, background .15s ease; }
.btn:hover{ transform: translateY(-1px); box-shadow: 0 6px 16px rgba(124,77,255,.25); }
.btn.primary{ background: linear-gradient(90deg, var(--accent), var(--accent-2)); border-color: transparent; }
.btn.good{ background: linear-gradient(90deg, #00c853, #00e5ff); border-color: transparent; }
.btn.warn{ background: linear-gradient(90deg, #ff9800, #ff5252); border-color: transparent; }

.section-title{ font-weight:700; margin:0 0 10px; letter-spacing:.3px; }
.kbd{ font-family: ui-monospace, SFMono-Regular, Menlo, monospace; padding:2px 6px; border-radius:6px; background: rgba(255,255,255,.08); border:1px solid rgba(255,255,255,.1); }

.player{ border-radius:14px; overflow:hidden; position:relative; background: rgba(0,0,0,.25); border:1px solid rgba(255,255,255,.08); }
.player-header{ display:flex; align-items:center; justify-content:space-between; padding:12px 14px; background: linear-gradient(90deg, rgba(124,77,255,.18), rgba(0,229,255,.18)); border-bottom:1px solid rgba(255,255,255,.08); flex-wrap: wrap; gap:8px; }
.player-body{ padding:12px; }

.badge{ display:inline-block; padding:4px 8px; border-radius:999px; font-size:12px; letter-spacing:.3px; background: rgba(124,77,255,.18); border:1px solid rgba(124,77,255,.35); }
.tag{ font-size:12px; opacity:.9; padding:2px 6px; border-radius:999px; border:1px solid rgba(255,255,255,.12); }

.chat{ display:flex; flex-direction:column; gap:8px; height:280px; }
.chat-log{ flex:1; overflow:auto; padding:10px; border-radius:10px; background: rgba(255,255,255,.04); border:1px solid rgba(255,255,255,.08); }
.chat-input{ display:flex; gap:8px; flex-wrap: wrap; }

.member-list{ display:flex; flex-direction:column; gap:8px; max-height:280px; overflow:auto; }
.member{ display:flex; align-items:center; gap:10px; padding:8px; border-radius:10px; background: rgba(255,255,255,.04); border:1px solid rgba(255,255,255,.08); }
.avatar{ width:28px; height:28px; border-radius:50%; background: radial-gradient(circle at 30% 30%, var(--accent-2), var(--accent)); box-shadow: 0 0 10px rgba(124,77,255,.4); }

.bar{ height:8px; background: rgba(255,255,255,.06); border-radius:999px; overflow:hidden; border:1px solid rgba(255,255,255,.08); }
.bar > span{ display:block; height:100%; background: linear-gradient(90deg, var(--accent), var(--accent-2)); }

.toast-wrap{ position:fixed; right:16px; bottom:16px; display:flex; flex-direction:column; gap:10px; z-index:9999; }
.toast{ background: rgba(15,15,30,.9); border:1px solid rgba(255,255,255,.12); color:var(--text); padding:10px 12px; border-radius:10px; min-width:220px; max-width:320px; box-shadow: 0 8px 24px rgba(0,0,0,.45); }
.toast.good{ border-color: rgba(0,230,118,.5); }
.toast.warn{ border-color: rgba(255,234,0,.5); }
.toast.bad{ border-color: rgba(255,82,82,.5); }

.modal-backdrop{ position:fixed; inset:0; background: rgba(0,0,0,.5); display:flex; align-items:center; justify-content:center; z-index: 2000; }
.modal{ width: min(520px, 92vw); background: var(--panel); border:1px solid rgba(255,255,255,.1); border-radius:14px; padding:16px; box-shadow: 0 16px 60px rgba(0,0,0,.6); }

.room-grid{ display:grid; grid-template-columns: repeat(auto-fit, minmax(220px, 1fr)); gap:12px; }
.room-card{ border:1px solid rgba(255,255,255,.1); border-radius:12px; padding:12px; background: rgba(255,255,255,.04); }

/* DJ vibe ambient overlay for players */
.ambient{
  position:absolute; inset:0; pointer-events:none;
  background: radial-gradient(600px 300px at 20% 10%, rgba(124,77,255,.15), transparent 40%),
              radial-gradient(600px 300px at 80% 90%, rgba(0,229,255,.12), transparent 40%);
  mix-blend-mode: screen;
  animation: pulse 8s ease-in-out infinite;
  opacity:.8;
}
@keyframes pulse{
  0%{ transform: scale(1); opacity:.6; }
  50%{ transform: scale(1.03); opacity:.95; }
  100%{ transform: scale(1); opacity:.6; }
}

/* Hero background using artwork with glow */
.hero-thumb{
  position:absolute; inset:0; filter: blur(40px) saturate(140%); opacity:.22;
  background-size: cover; background-position: center;
  transform: scale(1.1);
}

/* Mentions dropdown */
.mentions{
  position: absolute; background: var(--panel); border:1px solid rgba(255,255,255,.12); border-radius:10px; padding:6px;
  box-shadow: 0 8px 24px rgba(0,0,0,.45); z-index: 20; width: 220px; max-height: 220px; overflow: auto;
}
.mentions .item{ padding:6px 8px; border-radius:8px; cursor:pointer; }
.mentions .item:hover{ background: rgba(255,255,255,.08); }