feat: admin mode, worlds 4-6, and stereo output fix
- Admin panel: add/remove stars, unlock worlds, reset progress (🛠 button) - World 4 "Modulación" (8 levels): vibrato, sirena, wah-wah, auto-pan, FM, wobble bass - World 5 "Efectos" (8 levels): delay, slapback, reverb, distortion, dub echo, shoegaze, ambient - World 6 "Diseño Sonoro" (8 levels): kick, hi-hat, snare, pad, reese bass, laser, trance arp, final boss - Star unlock progression: W4=36★, W5=48★, W6=60★ (total 48 levels, 144 stars) - Fix stereo output: left/right channels now route through Tone.Merge for true stereo separation Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -630,3 +630,92 @@ html, body, #root {
|
||||
top: 12px;
|
||||
right: 220px;
|
||||
}
|
||||
|
||||
/* ===== Admin Panel ===== */
|
||||
.gm-admin-btn {
|
||||
background: var(--surface);
|
||||
border: 1px solid var(--border);
|
||||
color: var(--text2);
|
||||
padding: 6px 10px;
|
||||
border-radius: 6px;
|
||||
cursor: pointer;
|
||||
font-size: 16px;
|
||||
transition: all 0.15s;
|
||||
}
|
||||
.gm-admin-btn:hover { background: var(--surface2); color: var(--text); }
|
||||
|
||||
.admin-overlay {
|
||||
position: fixed; inset: 0; z-index: 1000;
|
||||
background: rgba(0,0,0,0.7);
|
||||
display: flex; align-items: center; justify-content: center;
|
||||
backdrop-filter: blur(4px);
|
||||
}
|
||||
.admin-panel {
|
||||
background: var(--panel);
|
||||
border: 1px solid var(--border);
|
||||
border-radius: 12px;
|
||||
width: 90%; max-width: 700px; max-height: 85vh;
|
||||
overflow-y: auto;
|
||||
padding: 20px;
|
||||
}
|
||||
.admin-header {
|
||||
display: flex; align-items: center; gap: 12px;
|
||||
margin-bottom: 16px; padding-bottom: 12px;
|
||||
border-bottom: 1px solid var(--border);
|
||||
}
|
||||
.admin-header h2 { font-size: 18px; color: var(--yellow); flex: 1; }
|
||||
.admin-total { color: var(--yellow); font-size: 14px; font-weight: 600; }
|
||||
.admin-close {
|
||||
background: none; border: none; color: var(--text2);
|
||||
cursor: pointer; font-size: 18px; padding: 4px 8px;
|
||||
}
|
||||
.admin-close:hover { color: var(--text); }
|
||||
|
||||
.admin-actions {
|
||||
display: flex; gap: 8px; margin-bottom: 16px;
|
||||
}
|
||||
.admin-action-btn {
|
||||
padding: 6px 14px; border-radius: 6px; border: 1px solid var(--border);
|
||||
background: var(--surface); color: var(--text); cursor: pointer;
|
||||
font-size: 12px; font-weight: 500; transition: all 0.15s;
|
||||
}
|
||||
.admin-action-btn.gold { border-color: var(--yellow); color: var(--yellow); }
|
||||
.admin-action-btn.gold:hover { background: var(--yellow); color: var(--bg); }
|
||||
.admin-action-btn.danger { border-color: var(--red); color: var(--red); }
|
||||
.admin-action-btn.danger:hover { background: var(--red); color: #fff; }
|
||||
|
||||
.admin-world { margin-bottom: 16px; }
|
||||
.admin-world-header {
|
||||
display: flex; align-items: center; gap: 8px;
|
||||
padding: 8px 0; border-bottom: 1px solid var(--border);
|
||||
margin-bottom: 6px;
|
||||
}
|
||||
.admin-world-icon { font-size: 18px; }
|
||||
.admin-world-name { flex: 1; font-size: 13px; font-weight: 600; color: var(--text); }
|
||||
.admin-world-stars { font-size: 12px; color: var(--yellow); }
|
||||
.admin-unlock-btn {
|
||||
padding: 3px 10px; border-radius: 4px; border: 1px solid var(--green);
|
||||
background: transparent; color: var(--green); cursor: pointer;
|
||||
font-size: 11px; transition: all 0.15s;
|
||||
}
|
||||
.admin-unlock-btn:hover { background: var(--green); color: var(--bg); }
|
||||
|
||||
.admin-levels { display: flex; flex-direction: column; gap: 2px; }
|
||||
.admin-level {
|
||||
display: flex; align-items: center; gap: 8px;
|
||||
padding: 4px 8px; border-radius: 4px;
|
||||
transition: background 0.1s;
|
||||
}
|
||||
.admin-level:hover { background: var(--surface); }
|
||||
.admin-level-num { font-size: 11px; color: var(--text2); width: 24px; }
|
||||
.admin-level-name { flex: 1; font-size: 12px; color: var(--text); }
|
||||
.admin-star-btns { display: flex; gap: 3px; }
|
||||
.admin-star-btn {
|
||||
padding: 2px 6px; border-radius: 3px; border: 1px solid var(--border);
|
||||
background: transparent; cursor: pointer; font-size: 11px;
|
||||
color: var(--text2); transition: all 0.1s;
|
||||
}
|
||||
.admin-star-btn:hover { border-color: var(--yellow); color: var(--yellow); }
|
||||
.admin-star-btn.active { background: var(--yellow); color: var(--bg); border-color: var(--yellow); }
|
||||
.admin-star-btn.zero { color: var(--red); }
|
||||
.admin-star-btn.zero:hover { border-color: var(--red); color: var(--red); }
|
||||
|
||||
Reference in New Issue
Block a user