{"project":{"id":"EE5oRky","userId":"raj.shah.uk@gmail.com","username":null,"userPicture":null,"name":"Audio Player","thumbnail":"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","visible":true,"contributors":"","githubRepo":null,"forkedFrom":null,"tags":"","files":{"folder":"","files":[{"name":"index.html","content":"<!DOCTYPE html>\n<html lang=\"en\">\n<head>\n  <meta charset=\"UTF-8\">\n  <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n  <title>Untitled</title>\n  <link rel=\"stylesheet\" href=\"style.css\">\n<script src=\"https://unpkg.com/lucide@latest/dist/umd/lucide.js\"></script>\n</head>\n<body>\n<div class=\"player\" role=\"region\" aria-label=\"Audio Player\">\n\t<div class=\"player__body\">\n\t\t<div class=\"player__screws\" aria-hidden=\"true\">\n\t\t\t<div class=\"player__screw\"></div>\n\t\t\t<div class=\"player__screw\"></div>\n\t\t\t<div class=\"player__screw\"></div>\n\t\t\t<div class=\"player__screw\"></div>\n\t\t</div>\n\n\t\t<div class=\"player__display\" role=\"status\" aria-live=\"polite\">\n\t\t\t<div class=\"player__display-inner\">\n\t\t\t\t<div class=\"player__lcd\">\n\t\t\t\t\t<div class=\"player__lcd-scanlines\" aria-hidden=\"true\"></div>\n\t\t\t\t\t<div class=\"player__info\">\n\t\t\t\t\t\t<span class=\"player__status\" id=\"playerStatus\" aria-label=\"Playback status\">STOPPED</span>\n\t\t\t\t\t\t<span class=\"player__format\" id=\"playerFormat\" aria-label=\"Audio format\">--</span>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div class=\"player__title\" id=\"trackTitle\" aria-label=\"Track name\">No Track Loaded</div>\n\t\t\t\t\t<div class=\"player__time-row\">\n\t\t\t\t\t\t<span class=\"player__time\" id=\"currentTime\" aria-label=\"Current time\">0:00</span>\n\t\t\t\t\t\t<div class=\"player__meter\" id=\"meterContainer\" aria-hidden=\"true\">\n\t\t\t\t\t\t\t<div class=\"player__meter-bar\" id=\"meter1\"></div>\n\t\t\t\t\t\t\t<div class=\"player__meter-bar\" id=\"meter2\"></div>\n\t\t\t\t\t\t\t<div class=\"player__meter-bar\" id=\"meter3\"></div>\n\t\t\t\t\t\t\t<div class=\"player__meter-bar\" id=\"meter4\"></div>\n\t\t\t\t\t\t\t<div class=\"player__meter-bar\" id=\"meter5\"></div>\n\t\t\t\t\t\t\t<div class=\"player__meter-bar\" id=\"meter6\"></div>\n\t\t\t\t\t\t\t<div class=\"player__meter-bar\" id=\"meter7\"></div>\n\t\t\t\t\t\t\t<div class=\"player__meter-bar\" id=\"meter8\"></div>\n\t\t\t\t\t\t\t<div class=\"player__meter-bar\" id=\"meter9\"></div>\n\t\t\t\t\t\t\t<div class=\"player__meter-bar\" id=\"meter10\"></div>\n\t\t\t\t\t\t\t<div class=\"player__meter-bar\" id=\"meter11\"></div>\n\t\t\t\t\t\t\t<div class=\"player__meter-bar\" id=\"meter12\"></div>\n\t\t\t\t\t\t\t<div class=\"player__meter-bar\" id=\"meter13\"></div>\n\t\t\t\t\t\t\t<div class=\"player__meter-bar\" id=\"meter14\"></div>\n\t\t\t\t\t\t\t<div class=\"player__meter-bar\" id=\"meter15\"></div>\n\t\t\t\t\t\t\t<div class=\"player__meter-bar\" id=\"meter16\"></div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<span class=\"player__duration\" id=\"duration\" aria-label=\"Total duration\">0:00</span>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div class=\"player__progress-track\">\n\t\t\t\t\t\t<div class=\"player__progress-fill\" id=\"progressFill\" aria-hidden=\"true\"></div>\n\t\t\t\t\t\t<input type=\"range\" class=\"player__progress-input\" id=\"progressInput\" min=\"0\" max=\"100\" value=\"0\" step=\"0.1\" aria-label=\"Seek through track\" aria-valuemin=\"0\" aria-valuemax=\"100\" aria-valuenow=\"0\">\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\n\t\t<div class=\"player__brand\" aria-hidden=\"true\">\n\t\t\t<span class=\"player__brand-name\">SONARC</span>\n\t\t\t<span class=\"player__brand-model\">DX-7200</span>\n\t\t</div>\n\n\t\t<div class=\"player__controls\">\n\t\t\t<div class=\"player__transport\" role=\"group\" aria-label=\"Transport controls\">\n\t\t\t\t<button class=\"player__btn player__btn--prev\" id=\"btnPrev\" aria-label=\"Skip back 10 seconds\">\n\t\t\t\t\t<i data-lucide=\"skip-back\" aria-hidden=\"true\"></i>\n\t\t\t\t</button>\n\t\t\t\t<button class=\"player__btn player__btn--play\" id=\"btnPlay\" aria-label=\"Play\">\n\t\t\t\t\t<i data-lucide=\"play\" id=\"playIcon\" aria-hidden=\"true\"></i>\n\t\t\t\t</button>\n\t\t\t\t<button class=\"player__btn player__btn--stop\" id=\"btnStop\" aria-label=\"Stop\">\n\t\t\t\t\t<i data-lucide=\"square\" id=\"stopIcon\" aria-hidden=\"true\"></i>\n\t\t\t\t</button>\n\t\t\t\t<button class=\"player__btn player__btn--next\" id=\"btnNext\" aria-label=\"Skip forward 10 seconds\">\n\t\t\t\t\t<i data-lucide=\"skip-forward\" aria-hidden=\"true\"></i>\n\t\t\t\t</button>\n\t\t\t</div>\n\n\t\t\t<div class=\"player__knobs\" role=\"group\" aria-label=\"Audio adjustments\">\n\t\t\t\t<div class=\"player__knob-group\">\n\t\t\t\t\t<div class=\"player__knob\" id=\"volumeKnob\" role=\"slider\" aria-label=\"Volume\" aria-valuemin=\"0\"\n\t\t\t\t\t\taria-valuemax=\"100\" aria-valuenow=\"75\" tabindex=\"0\">\n\t\t\t\t\t\t<div class=\"player__knob-body\">\n\t\t\t\t\t\t\t<div class=\"player__knob-indicator\"></div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t\t<span class=\"player__knob-label\" id=\"volumeLabel\">VOLUME</span>\n\t\t\t\t\t<span class=\"player__knob-value\" id=\"volumeValue\" aria-live=\"polite\">75%</span>\n\t\t\t\t</div>\n\t\t\t\t<div class=\"player__knob-group\">\n\t\t\t\t\t<div class=\"player__knob\" id=\"bassKnob\" role=\"slider\" aria-label=\"Bass\" aria-valuemin=\"0\"\n\t\t\t\t\t\taria-valuemax=\"100\" aria-valuenow=\"50\" tabindex=\"0\">\n\t\t\t\t\t\t<div class=\"player__knob-body\">\n\t\t\t\t\t\t\t<div class=\"player__knob-indicator\"></div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t\t<span class=\"player__knob-label\" id=\"bassLabel\">BASS</span>\n\t\t\t\t\t<span class=\"player__knob-value\" id=\"bassValue\" aria-live=\"polite\">50%</span>\n\t\t\t\t</div>\n\t\t\t\t<div class=\"player__knob-group\">\n\t\t\t\t\t<div class=\"player__knob\" id=\"trebleKnob\" role=\"slider\" aria-label=\"Treble\" aria-valuemin=\"0\"\n\t\t\t\t\t\taria-valuemax=\"100\" aria-valuenow=\"50\" tabindex=\"0\">\n\t\t\t\t\t\t<div class=\"player__knob-body\">\n\t\t\t\t\t\t\t<div class=\"player__knob-indicator\"></div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t\t<span class=\"player__knob-label\" id=\"trebleLabel\">TREBLE</span>\n\t\t\t\t\t<span class=\"player__knob-value\" id=\"trebleValue\" aria-live=\"polite\">50%</span>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\n\t\t<div class=\"player__bottom\">\n\t\t\t<label class=\"player__load-btn\" for=\"audioFileInput\" role=\"button\" tabindex=\"0\">\n\t\t\t\t<i data-lucide=\"folder-open\" aria-hidden=\"true\"></i>\n\t\t\t\t<span>LOAD FILE</span>\n\t\t\t</label>\n\t\t\t<input type=\"file\" id=\"audioFileInput\" accept=\"audio/*\" hidden aria-label=\"Load audio file\">\n\n\t\t\t<div class=\"player__toggles\" role=\"group\" aria-label=\"Playback options\">\n\t\t\t\t<button class=\"player__toggle\" id=\"btnRepeat\" aria-label=\"Repeat\" aria-pressed=\"false\">\n\t\t\t\t\t<i data-lucide=\"repeat\" aria-hidden=\"true\"></i>\n\t\t\t\t</button>\n\t\t\t\t<button class=\"player__toggle\" id=\"btnShuffle\" aria-label=\"Shuffle\" aria-pressed=\"false\">\n\t\t\t\t\t<i data-lucide=\"shuffle\" aria-hidden=\"true\"></i>\n\t\t\t\t</button>\n\t\t\t</div>\n\n\t\t\t<div class=\"player__led-group\" aria-hidden=\"true\">\n\t\t\t\t<div class=\"player__led player__led--power player__led--on\"></div>\n\t\t\t\t<span class=\"player__led-label\">PWR</span>\n\t\t\t\t<div class=\"player__led player__led--signal\" id=\"signalLed\"></div>\n\t\t\t\t<span class=\"player__led-label\">SIG</span>\n\t\t\t</div>\n\t\t</div>\n\n\t\t<div class=\"player__speaker-grilles\" aria-hidden=\"true\">\n\t\t\t<div class=\"player__grille player__grille--left\">\n\t\t\t\t<div class=\"player__grille-holes\"></div>\n\t\t\t</div>\n\t\t\t<div class=\"player__grille player__grille--right\">\n\t\t\t\t<div class=\"player__grille-holes\"></div>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n</div>\n  <script type=\"module\" src=\"main.js\"></script>\n</body>\n</html>"},{"name":"main.js","content":"// Initialize Lucide icons\nlucide.createIcons();\n\n// State\nconst state = {\n\taudio: new Audio(),\n\tisPlaying: false,\n\trepeat: false,\n\tshuffle: false,\n\tvolume: 0.75,\n\tbass: 0.5,\n\ttreble: 0.5,\n\tknobAngles: {\n\t\tvolumeKnob: 200,\n\t\tbassKnob: 135,\n\t\ttrebleKnob: 135\n\t},\n\taudioContext: null,\n\tanalyser: null,\n\tsource: null,\n\tanimFrame: null\n};\n\n// DOM refs\nconst els = {\n\tstatus: document.getElementById('playerStatus'),\n\tformat: document.getElementById('playerFormat'),\n\ttitle: document.getElementById('trackTitle'),\n\tcurrentTime: document.getElementById('currentTime'),\n\tduration: document.getElementById('duration'),\n\tprogressFill: document.getElementById('progressFill'),\n\tprogressInput: document.getElementById('progressInput'),\n\tbtnPlay: document.getElementById('btnPlay'),\n\tplayIcon: document.getElementById('playIcon'),\n\tbtnStop: document.getElementById('btnStop'),\n\tbtnPrev: document.getElementById('btnPrev'),\n\tbtnNext: document.getElementById('btnNext'),\n\tbtnRepeat: document.getElementById('btnRepeat'),\n\tbtnShuffle: document.getElementById('btnShuffle'),\n\tfileInput: document.getElementById('audioFileInput'),\n\tsignalLed: document.getElementById('signalLed'),\n\tmeterBars: Array.from({\n\t\tlength: 16\n\t}, (_, i) => document.getElementById(`meter${i + 1}`))\n};\n\n// Helpers\nfunction formatTime(s) {\n\tif (isNaN(s)) return '0:00';\n\tconst m = Math.floor(s / 60);\n\tconst sec = Math.floor(s % 60);\n\treturn `${m}:${sec.toString().padStart(2, '0')}`;\n}\n\nfunction getFileExtension(name) {\n\tconst ext = name.split('.').pop().toUpperCase();\n\treturn ext.length <= 5 ? ext : '--';\n}\n\n// Audio Context & Analyser\nfunction initAudioContext() {\n\tif (state.audioContext) return;\n\tstate.audioContext = new(window.AudioContext || window.webkitAudioContext)();\n\tstate.analyser = state.audioContext.createAnalyser();\n\tstate.analyser.fftSize = 64;\n\tstate.source = state.audioContext.createMediaElementSource(state.audio);\n\tstate.source.connect(state.analyser);\n\tstate.analyser.connect(state.audioContext.destination);\n}\n\n// Meter animation\nfunction animateMeter() {\n\tif (!state.analyser || !state.isPlaying) {\n\t\tels.meterBars.forEach(bar => {\n\t\t\tbar.style.height = '2px';\n\t\t\tbar.classList.remove('active', 'hot');\n\t\t});\n\t\treturn;\n\t}\n\n\tconst data = new Uint8Array(state.analyser.frequencyBinCount);\n\tstate.analyser.getByteFrequencyData(data);\n\n\tels.meterBars.forEach((bar, i) => {\n\t\tconst val = data[i] || 0;\n\t\tconst pct = Math.max(8, (val / 255) * 100);\n\t\tbar.style.height = pct + '%';\n\t\tbar.classList.toggle('active', val > 30);\n\t\tbar.classList.toggle('hot', val > 200);\n\t});\n\n\t// Signal LED\n\tconst avg = data.reduce((a, b) => a + b, 0) / data.length;\n\tels.signalLed.classList.toggle('player__led--on', avg > 20);\n\n\tstate.animFrame = requestAnimationFrame(animateMeter);\n}\n\n// File loading\nels.fileInput.addEventListener('change', (e) => {\n\tconst file = e.target.files[0];\n\tif (!file) return;\n\n\tstop();\n\tconst url = URL.createObjectURL(file);\n\tstate.audio.src = url;\n\tels.title.textContent = file.name.replace(/\\.[^/.]+$/, '');\n\tels.format.textContent = getFileExtension(file.name);\n\tels.status.textContent = 'READY';\n\n\tstate.audio.addEventListener('loadedmetadata', () => {\n\t\tels.duration.textContent = formatTime(state.audio.duration);\n\t\tels.progressInput.max = state.audio.duration;\n\t\tels.progressInput.setAttribute('aria-valuemax', Math.round(state.audio.duration));\n\t}, {\n\t\tonce: true\n\t});\n});\n\n// Transport controls\nfunction play() {\n\tif (!state.audio.src) return;\n\tinitAudioContext();\n\tif (state.audioContext.state === 'suspended') state.audioContext.resume();\n\tstate.audio.play();\n\tstate.isPlaying = true;\n\tels.status.textContent = 'PLAYING';\n\tels.btnPlay.classList.add('playing');\n\tels.btnPlay.setAttribute('aria-label', 'Pause');\n\tels.playIcon.setAttribute('data-lucide', 'pause');\n\tlucide.createIcons();\n\tanimateMeter();\n}\n\nfunction pause() {\n\tstate.audio.pause();\n\tstate.isPlaying = false;\n\tels.status.textContent = 'PAUSED';\n\tels.btnPlay.classList.remove('playing');\n\tels.btnPlay.setAttribute('aria-label', 'Play');\n\tels.playIcon.setAttribute('data-lucide', 'play');\n\tlucide.createIcons();\n\tcancelAnimationFrame(state.animFrame);\n\tels.signalLed.classList.remove('player__led--on');\n}\n\nfunction stop() {\n\tstate.audio.pause();\n\tstate.audio.currentTime = 0;\n\tstate.isPlaying = false;\n\tels.status.textContent = 'STOPPED';\n\tels.btnPlay.classList.remove('playing');\n\tels.btnPlay.setAttribute('aria-label', 'Play');\n\tels.playIcon.setAttribute('data-lucide', 'play');\n\tlucide.createIcons();\n\tels.progressFill.style.width = '0%';\n\tels.currentTime.textContent = '0:00';\n\tels.progressInput.value = 0;\n\tels.progressInput.setAttribute('aria-valuenow', '0');\n\tcancelAnimationFrame(state.animFrame);\n\tels.meterBars.forEach(bar => {\n\t\tbar.style.height = '2px';\n\t\tbar.classList.remove('active', 'hot');\n\t});\n\tels.signalLed.classList.remove('player__led--on');\n}\n\nels.btnPlay.addEventListener('click', () => {\n\tstate.isPlaying ? pause() : play();\n});\n\nels.btnStop.addEventListener('click', stop);\n\nels.btnPrev.addEventListener('click', () => {\n\tstate.audio.currentTime = Math.max(0, state.audio.currentTime - 10);\n});\n\nels.btnNext.addEventListener('click', () => {\n\tstate.audio.currentTime = Math.min(state.audio.duration || 0, state.audio.currentTime + 10);\n});\n\n// Progress\nstate.audio.addEventListener('timeupdate', () => {\n\tif (!state.audio.duration) return;\n\tconst pct = (state.audio.currentTime / state.audio.duration) * 100;\n\tels.progressFill.style.width = pct + '%';\n\tels.currentTime.textContent = formatTime(state.audio.currentTime);\n\tels.progressInput.value = state.audio.currentTime;\n\tels.progressInput.setAttribute('aria-valuenow', Math.round(state.audio.currentTime));\n});\n\nels.progressInput.addEventListener('input', (e) => {\n\tstate.audio.currentTime = parseFloat(e.target.value);\n});\n\nstate.audio.addEventListener('ended', () => {\n\tif (state.repeat) {\n\t\tstate.audio.currentTime = 0;\n\t\tstate.audio.play();\n\t} else {\n\t\tstop();\n\t}\n});\n\n// Toggles\nels.btnRepeat.addEventListener('click', () => {\n\tstate.repeat = !state.repeat;\n\tels.btnRepeat.classList.toggle('active', state.repeat);\n\tels.btnRepeat.setAttribute('aria-pressed', state.repeat.toString());\n});\n\nels.btnShuffle.addEventListener('click', () => {\n\tstate.shuffle = !state.shuffle;\n\tels.btnShuffle.classList.toggle('active', state.shuffle);\n\tels.btnShuffle.setAttribute('aria-pressed', state.shuffle.toString());\n});\n\n// Load button keyboard support\nconst loadBtn = document.querySelector('.player__load-btn');\nloadBtn.addEventListener('keydown', (e) => {\n\tif (e.key === 'Enter' || e.key === ' ') {\n\t\te.preventDefault();\n\t\tels.fileInput.click();\n\t}\n});\n\n// Knobs - rotary drag with keyboard support\nfunction initKnob(knobId, valueElId, onChange) {\n\tconst knob = document.getElementById(knobId);\n\tconst body = knob.querySelector('.player__knob-body');\n\tconst valueEl = document.getElementById(valueElId);\n\tlet dragging = false;\n\tlet startY, startAngle;\n\n\tconst minAngle = 30;\n\tconst maxAngle = 330;\n\n\tfunction setAngle(angle) {\n\t\tangle = Math.max(minAngle, Math.min(maxAngle, angle));\n\t\tstate.knobAngles[knobId] = angle;\n\t\tbody.style.transform = `rotate(${angle}deg)`;\n\t\tconst normalized = (angle - minAngle) / (maxAngle - minAngle);\n\t\tconst pctVal = Math.round(normalized * 100);\n\t\tif (valueEl) valueEl.textContent = pctVal + '%';\n\t\tknob.setAttribute('aria-valuenow', pctVal);\n\t\tonChange(normalized);\n\t}\n\n\tsetAngle(state.knobAngles[knobId]);\n\n\tknob.addEventListener('mousedown', (e) => {\n\t\tdragging = true;\n\t\tstartY = e.clientY;\n\t\tstartAngle = state.knobAngles[knobId];\n\t\te.preventDefault();\n\t});\n\n\tknob.addEventListener('touchstart', (e) => {\n\t\tdragging = true;\n\t\tstartY = e.touches[0].clientY;\n\t\tstartAngle = state.knobAngles[knobId];\n\t\te.preventDefault();\n\t}, {\n\t\tpassive: false\n\t});\n\n\twindow.addEventListener('mousemove', (e) => {\n\t\tif (!dragging) return;\n\t\tconst delta = startY - e.clientY;\n\t\tsetAngle(startAngle + delta * 0.8);\n\t});\n\n\twindow.addEventListener('touchmove', (e) => {\n\t\tif (!dragging) return;\n\t\tconst delta = startY - e.touches[0].clientY;\n\t\tsetAngle(startAngle + delta * 0.8);\n\t});\n\n\twindow.addEventListener('mouseup', () => {\n\t\tdragging = false;\n\t});\n\twindow.addEventListener('touchend', () => {\n\t\tdragging = false;\n\t});\n\n\t// Mouse wheel support\n\tknob.addEventListener('wheel', (e) => {\n\t\te.preventDefault();\n\t\tconst delta = e.deltaY > 0 ? -8 : 8;\n\t\tsetAngle(state.knobAngles[knobId] + delta);\n\t}, {\n\t\tpassive: false\n\t});\n\n\t// Keyboard support for knobs\n\tknob.addEventListener('keydown', (e) => {\n\t\tconst step = 10;\n\t\tif (e.key === 'ArrowUp' || e.key === 'ArrowRight') {\n\t\t\te.preventDefault();\n\t\t\tsetAngle(state.knobAngles[knobId] + step);\n\t\t} else if (e.key === 'ArrowDown' || e.key === 'ArrowLeft') {\n\t\t\te.preventDefault();\n\t\t\tsetAngle(state.knobAngles[knobId] - step);\n\t\t} else if (e.key === 'Home') {\n\t\t\te.preventDefault();\n\t\t\tsetAngle(minAngle);\n\t\t} else if (e.key === 'End') {\n\t\t\te.preventDefault();\n\t\t\tsetAngle(maxAngle);\n\t\t}\n\t});\n}\n\ninitKnob('volumeKnob', 'volumeValue', (val) => {\n\tstate.volume = val;\n\tstate.audio.volume = val;\n});\n\ninitKnob('bassKnob', 'bassValue', (val) => {\n\tstate.bass = val;\n});\n\ninitKnob('trebleKnob', 'trebleValue', (val) => {\n\tstate.treble = val;\n});\n\n// Set initial volume\nstate.audio.volume = state.volume;"},{"name":"style.css","content":"@import url('https://fonts.googleapis.com/css2?family=VT323&family=Orbitron:wght@400;700;900&family=Michroma&display=swap');\n\n:root {\n\tcolor-scheme: dark;\n\t--chassis: #2a2a2e;\n\t--chassis-light: #3a3a40;\n\t--chassis-dark: #1a1a1e;\n\t--display-bg: #0a1a0a;\n\t--display-text: #33ff66;\n\t--display-dim: #1a6633;\n\t--accent: #ff6633;\n\t--accent-glow: #ff663366;\n\t--btn-face: #3a3a40;\n\t--btn-highlight: #55555a;\n\t--btn-shadow: #111114;\n\t--knob-body: #444448;\n\t--knob-edge: #2a2a2e;\n\t--led-green: #33ff66;\n\t--led-red: #ff3333;\n\t--screw: #888;\n}\n\n* {\n\tbox-sizing: border-box;\n\tmargin: 0;\n\tpadding: 0;\n}\n\nbody {\n\tmin-height: 100vh;\n\tdisplay: flex;\n\talign-items: center;\n\tjustify-content: center;\n\tbackground: #111;\n\tbackground-image:\n\t\tradial-gradient(ellipse at 30% 20%, #1a1a2e 0%, transparent 50%),\n\t\tradial-gradient(ellipse at 70% 80%, #1e1a1a 0%, transparent 50%);\n\tfont-family: 'Michroma', sans-serif;\n\tpadding: 20px;\n}\n\n.player {\n\twidth: 100%;\n\tmax-width: 580px;\n\tperspective: 800px;\n}\n\n.player__body {\n\tposition: relative;\n\tbackground: var(--chassis);\n\tborder-radius: 18px;\n\tpadding: 28px 24px 20px;\n\tbox-shadow:\n\t\t0 2px 0 var(--chassis-light),\n\t\t0 -2px 0 var(--chassis-dark),\n\t\tinset 0 1px 0 rgba(255, 255, 255, 0.06),\n\t\t0 20px 60px rgba(0, 0, 0, 0.7),\n\t\t0 2px 8px rgba(0, 0, 0, 0.5);\n\tbackground-image:\n\t\trepeating-linear-gradient(0deg,\n\t\t\ttransparent,\n\t\t\ttransparent 2px,\n\t\t\trgba(255, 255, 255, 0.008) 2px,\n\t\t\trgba(255, 255, 255, 0.008) 4px),\n\t\tlinear-gradient(180deg, var(--chassis-light) 0%, var(--chassis) 15%, var(--chassis-dark) 100%);\n\tborder: 1px solid #444;\n\tborder-bottom-color: #111;\n}\n\n/* Screws */\n.player__screws {\n\tposition: absolute;\n\tinset: 0;\n\tpointer-events: none;\n}\n\n.player__screw {\n\tposition: absolute;\n\twidth: 10px;\n\theight: 10px;\n\tborder-radius: 50%;\n\tbackground: radial-gradient(circle at 35% 35%, #999, #555 60%, #333);\n\tbox-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.5), 0 1px 0 rgba(255, 255, 255, 0.1);\n}\n\n.player__screw::after {\n\tcontent: '';\n\tposition: absolute;\n\ttop: 50%;\n\tleft: 50%;\n\twidth: 6px;\n\theight: 1px;\n\tbackground: #333;\n\ttransform: translate(-50%, -50%) rotate(35deg);\n\tbox-shadow: 0 0 1px rgba(0, 0, 0, 0.5);\n}\n\n.player__screw:nth-child(1) {\n\ttop: 10px;\n\tleft: 14px;\n}\n\n.player__screw:nth-child(2) {\n\ttop: 10px;\n\tright: 14px;\n}\n\n.player__screw:nth-child(3) {\n\tbottom: 10px;\n\tleft: 14px;\n}\n\n.player__screw:nth-child(4) {\n\tbottom: 10px;\n\tright: 14px;\n}\n\n/* Display */\n.player__display {\n\tbackground: #111;\n\tborder-radius: 8px;\n\tpadding: 4px;\n\tbox-shadow:\n\t\tinset 0 3px 8px rgba(0, 0, 0, 0.8),\n\t\tinset 0 1px 2px rgba(0, 0, 0, 0.5),\n\t\t0 1px 0 rgba(255, 255, 255, 0.05);\n}\n\n.player__display-inner {\n\tborder: 1px solid #0a0a0a;\n\tborder-radius: 6px;\n\toverflow: hidden;\n}\n\n.player__lcd {\n\tposition: relative;\n\tbackground: var(--display-bg);\n\tpadding: 16px 18px 14px;\n\tmin-height: 130px;\n\tdisplay: flex;\n\tflex-direction: column;\n\tgap: 6px;\n}\n\n.player__lcd-scanlines {\n\tposition: absolute;\n\tinset: 0;\n\tbackground: repeating-linear-gradient(0deg,\n\t\t\ttransparent,\n\t\t\ttransparent 1px,\n\t\t\trgba(0, 0, 0, 0.15) 1px,\n\t\t\trgba(0, 0, 0, 0.15) 2px);\n\tpointer-events: none;\n\tz-index: 1;\n}\n\n.player__info {\n\tdisplay: flex;\n\tjustify-content: space-between;\n\tfont-family: 'VT323', monospace;\n\tfont-size: 13px;\n\tcolor: var(--display-dim);\n\tletter-spacing: 2px;\n}\n\n.player__status {\n\tcolor: var(--display-text);\n\ttext-shadow: 0 0 8px var(--display-text);\n}\n\n.player__title {\n\tfont-family: 'VT323', monospace;\n\tfont-size: 22px;\n\tcolor: var(--display-text);\n\ttext-shadow: 0 0 10px rgba(51, 255, 102, 0.5);\n\tletter-spacing: 1px;\n\twhite-space: nowrap;\n\toverflow: hidden;\n\ttext-overflow: ellipsis;\n\tmargin: 4px 0;\n}\n\n.player__time-row {\n\tdisplay: flex;\n\talign-items: center;\n\tgap: 10px;\n}\n\n.player__time,\n.player__duration {\n\tfont-family: 'Orbitron', monospace;\n\tfont-size: 13px;\n\tfont-weight: 700;\n\tcolor: var(--display-text);\n\ttext-shadow: 0 0 6px rgba(51, 255, 102, 0.4);\n\tmin-width: 42px;\n}\n\n.player__duration {\n\ttext-align: right;\n}\n\n/* VU Meter */\n.player__meter {\n\tdisplay: flex;\n\talign-items: flex-end;\n\tgap: 2px;\n\tflex: 1;\n\theight: 20px;\n\tpadding: 2px 0;\n}\n\n.player__meter-bar {\n\tflex: 1;\n\theight: 20%;\n\tmin-height: 2px;\n\tbackground: var(--display-dim);\n\tborder-radius: 1px;\n\ttransition: height 0.08s ease, background 0.08s ease;\n}\n\n.player__meter-bar.active {\n\tbackground: var(--display-text);\n\tbox-shadow: 0 0 4px rgba(51, 255, 102, 0.4);\n}\n\n.player__meter-bar.hot {\n\tbackground: var(--accent);\n\tbox-shadow: 0 0 4px var(--accent-glow);\n}\n\n/* Progress */\n.player__progress-track {\n\tposition: relative;\n\theight: 6px;\n\tbackground: rgba(51, 255, 102, 0.1);\n\tborder-radius: 3px;\n\tmargin-top: 6px;\n\toverflow: visible;\n}\n\n.player__progress-fill {\n\tposition: absolute;\n\ttop: 0;\n\tleft: 0;\n\theight: 100%;\n\twidth: 0%;\n\tbackground: var(--display-text);\n\tborder-radius: 3px;\n\tbox-shadow: 0 0 6px rgba(51, 255, 102, 0.4);\n\ttransition: width 0.1s linear;\n}\n\n.player__progress-input {\n\tposition: absolute;\n\ttop: -6px;\n\tleft: 0;\n\twidth: 100%;\n\theight: 18px;\n\topacity: 0;\n\tcursor: pointer;\n\tz-index: 2;\n\tmargin: 0;\n}\n\n/* Brand */\n.player__brand {\n\tdisplay: flex;\n\talign-items: baseline;\n\tgap: 12px;\n\tmargin: 14px 0 6px;\n\tpadding: 0 4px;\n}\n\n.player__brand-name {\n\tfont-family: 'Orbitron', sans-serif;\n\tfont-weight: 900;\n\tfont-size: 18px;\n\tletter-spacing: 6px;\n\tcolor: #999;\n\ttext-shadow: 0 1px 0 rgba(255, 255, 255, 0.1), 0 -1px 0 rgba(0, 0, 0, 0.3);\n}\n\n.player__brand-model {\n\tfont-family: 'Michroma', sans-serif;\n\tfont-size: 9px;\n\tletter-spacing: 3px;\n\tcolor: #666;\n}\n\n/* Transport Controls */\n.player__controls {\n\tdisplay: flex;\n\talign-items: center;\n\tgap: 24px;\n\tmargin: 10px 0;\n}\n\n.player__transport {\n\tdisplay: flex;\n\tgap: 8px;\n}\n\n.player__btn {\n\tposition: relative;\n\twidth: 48px;\n\theight: 44px;\n\tborder: none;\n\tborder-radius: 6px;\n\tbackground: linear-gradient(180deg, var(--btn-highlight) 0%, var(--btn-face) 40%, var(--btn-shadow) 100%);\n\tcolor: #ccc;\n\tcursor: pointer;\n\tdisplay: flex;\n\talign-items: center;\n\tjustify-content: center;\n\tbox-shadow:\n\t\t0 3px 6px rgba(0, 0, 0, 0.4),\n\t\t0 1px 2px rgba(0, 0, 0, 0.3),\n\t\tinset 0 1px 0 rgba(255, 255, 255, 0.12);\n\ttransition: all 0.08s ease;\n}\n\n.player__btn:active {\n\ttransform: translateY(2px);\n\tbox-shadow:\n\t\t0 1px 2px rgba(0, 0, 0, 0.4),\n\t\tinset 0 2px 4px rgba(0, 0, 0, 0.3);\n\tbackground: linear-gradient(180deg, var(--btn-face) 0%, var(--btn-shadow) 100%);\n}\n\n.player__btn svg {\n\twidth: 18px;\n\theight: 18px;\n}\n\n.player__btn--play {\n\twidth: 56px;\n\theight: 48px;\n\tborder-radius: 8px;\n\tbackground: linear-gradient(180deg, #555 0%, #444 40%, #222 100%);\n\tcolor: var(--display-text);\n\tbox-shadow:\n\t\t0 3px 8px rgba(0, 0, 0, 0.5),\n\t\t0 1px 2px rgba(0, 0, 0, 0.3),\n\t\tinset 0 1px 0 rgba(255, 255, 255, 0.15);\n}\n\n.player__btn--play:active {\n\tbackground: linear-gradient(180deg, #444 0%, #222 100%);\n}\n\n.player__btn--play svg {\n\twidth: 22px;\n\theight: 22px;\n}\n\n.player__btn--play.playing {\n\tcolor: var(--accent);\n}\n\n/* Knobs */\n.player__knobs {\n\tdisplay: flex;\n\tgap: 20px;\n\tmargin-left: auto;\n}\n\n.player__knob-group {\n\tdisplay: flex;\n\tflex-direction: column;\n\talign-items: center;\n\tgap: 6px;\n}\n\n.player__knob {\n\twidth: 44px;\n\theight: 44px;\n\tborder-radius: 50%;\n\tbackground: radial-gradient(circle at 35% 35%, #555, #2a2a2e 70%);\n\tbox-shadow:\n\t\t0 3px 8px rgba(0, 0, 0, 0.5),\n\t\tinset 0 1px 0 rgba(255, 255, 255, 0.1),\n\t\t0 1px 0 rgba(255, 255, 255, 0.05);\n\tpadding: 4px;\n\tcursor: pointer;\n\tuser-select: none;\n}\n\n.player__knob-body {\n\twidth: 100%;\n\theight: 100%;\n\tborder-radius: 50%;\n\tbackground:\n\t\tconic-gradient(from 220deg, #555, #333, #555, #333, #555);\n\tbox-shadow:\n\t\tinset 0 2px 4px rgba(0, 0, 0, 0.5),\n\t\tinset 0 -1px 2px rgba(255, 255, 255, 0.05);\n\tposition: relative;\n\tdisplay: flex;\n\talign-items: center;\n\tjustify-content: center;\n}\n\n.player__knob-indicator {\n\tposition: absolute;\n\ttop: 3px;\n\tleft: 50%;\n\twidth: 2px;\n\theight: 10px;\n\tbackground: var(--accent);\n\tborder-radius: 1px;\n\ttransform: translateX(-50%);\n\tbox-shadow: 0 0 4px var(--accent-glow);\n}\n\n.player__knob-label {\n\tfont-size: 8px;\n\tletter-spacing: 2px;\n\tcolor: #777;\n\ttext-transform: uppercase;\n}\n\n.player__knob-value {\n\tfont-family: 'Orbitron', monospace;\n\tfont-size: 10px;\n\tfont-weight: 700;\n\tcolor: var(--accent);\n\ttext-shadow: 0 0 6px var(--accent-glow);\n\tletter-spacing: 1px;\n\tmin-width: 32px;\n\ttext-align: center;\n}\n\n/* Bottom Controls */\n.player__bottom {\n\tdisplay: flex;\n\talign-items: center;\n\tgap: 16px;\n\tmargin-top: 8px;\n\tpadding-top: 12px;\n\tborder-top: 1px solid rgba(255, 255, 255, 0.04);\n}\n\n.player__load-btn {\n\tdisplay: flex;\n\talign-items: center;\n\tgap: 6px;\n\tpadding: 8px 14px;\n\tborder-radius: 5px;\n\tbackground: linear-gradient(180deg, var(--btn-highlight) 0%, var(--btn-face) 40%, var(--btn-shadow) 100%);\n\tcolor: #aaa;\n\tfont-family: 'Michroma', sans-serif;\n\tfont-size: 9px;\n\tletter-spacing: 2px;\n\tcursor: pointer;\n\tbox-shadow:\n\t\t0 2px 4px rgba(0, 0, 0, 0.4),\n\t\tinset 0 1px 0 rgba(255, 255, 255, 0.1);\n\ttransition: all 0.08s ease;\n}\n\n.player__load-btn:active {\n\ttransform: translateY(1px);\n\tbox-shadow: 0 1px 2px rgba(0, 0, 0, 0.4), inset 0 2px 4px rgba(0, 0, 0, 0.3);\n}\n\n.player__load-btn svg {\n\twidth: 14px;\n\theight: 14px;\n}\n\n.player__toggles {\n\tdisplay: flex;\n\tgap: 6px;\n}\n\n.player__toggle {\n\twidth: 36px;\n\theight: 32px;\n\tborder: none;\n\tborder-radius: 5px;\n\tbackground: linear-gradient(180deg, var(--btn-highlight) 0%, var(--btn-face) 40%, var(--btn-shadow) 100%);\n\tcolor: #666;\n\tcursor: pointer;\n\tdisplay: flex;\n\talign-items: center;\n\tjustify-content: center;\n\tbox-shadow:\n\t\t0 2px 4px rgba(0, 0, 0, 0.4),\n\t\tinset 0 1px 0 rgba(255, 255, 255, 0.08);\n\ttransition: all 0.08s ease;\n}\n\n.player__toggle:active {\n\ttransform: translateY(1px);\n}\n\n.player__toggle.active {\n\tcolor: var(--accent);\n\tbox-shadow:\n\t\t0 2px 4px rgba(0, 0, 0, 0.4),\n\t\tinset 0 2px 6px rgba(0, 0, 0, 0.3),\n\t\t0 0 8px var(--accent-glow);\n}\n\n.player__toggle svg {\n\twidth: 14px;\n\theight: 14px;\n}\n\n/* LEDs */\n.player__led-group {\n\tdisplay: flex;\n\talign-items: center;\n\tgap: 6px;\n\tmargin-left: auto;\n}\n\n.player__led {\n\twidth: 8px;\n\theight: 8px;\n\tborder-radius: 50%;\n\tbackground: #333;\n\tbox-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.5);\n}\n\n.player__led--on.player__led--power {\n\tbackground: var(--led-green);\n\tbox-shadow: 0 0 6px var(--led-green), 0 0 12px rgba(51, 255, 102, 0.3);\n}\n\n.player__led--on.player__led--signal {\n\tbackground: var(--accent);\n\tbox-shadow: 0 0 6px var(--accent), 0 0 12px var(--accent-glow);\n}\n\n.player__led-label {\n\tfont-size: 7px;\n\tletter-spacing: 1px;\n\tcolor: #555;\n}\n\n/* Speaker Grilles */\n.player__speaker-grilles {\n\tdisplay: flex;\n\tjustify-content: space-between;\n\tmargin-top: 14px;\n\tgap: 20px;\n}\n\n.player__grille {\n\tflex: 1;\n\theight: 24px;\n\tbackground: var(--chassis-dark);\n\tborder-radius: 4px;\n\tbox-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.5), 0 1px 0 rgba(255, 255, 255, 0.03);\n\toverflow: hidden;\n}\n\n.player__grille-holes {\n\twidth: 100%;\n\theight: 100%;\n\tbackground-image:\n\t\tradial-gradient(circle, #111 1.2px, transparent 1.2px);\n\tbackground-size: 8px 8px;\n\tbackground-position: 2px 2px;\n}\n\n/* Responsive */\n@media (max-width: 500px) {\n\t.player__controls {\n\t\tflex-direction: column;\n\t\tgap: 14px;\n\t}\n\n\t.player__knobs {\n\t\tmargin-left: 0;\n\t}\n\n\t.player__body {\n\t\tpadding: 22px 16px 16px;\n\t}\n}"}],"folders":[]},"variants":null,"createdAt":"2026-02-07T12:34:00.546Z","updatedAt":"2026-03-07T08:29:29.237Z"}}