:root {
  --bg: #06101b;
  --bg-2: #0b182b;
  --panel: rgba(8, 17, 32, 0.84);
  --panel-2: rgba(255, 255, 255, 0.04);
  --line: rgba(124, 242, 255, 0.16);
  --line-strong: rgba(124, 242, 255, 0.34);
  --text: #edf6ff;
  --muted: #95abc3;
  --cyan: #7cf2ff;
  --lime: #26ff6b;
  --red: #ff6b6b;
  --orange: #ffb347;
  --deck-a: rgba(38, 255, 107, 0.18);
  --deck-b: rgba(124, 242, 255, 0.18);
  --shadow: 0 24px 70px rgba(0, 0, 0, 0.42);
  --radius: 24px;
}

* { box-sizing: border-box; }
html, body {
  margin: 0;
  min-height: 100%;
  overflow-x: hidden;
  font-family: Inter, Arial, Helvetica, sans-serif;
  color: var(--text);
  background:
    radial-gradient(circle at top left, rgba(38, 255, 107, 0.08), transparent 28%),
    radial-gradient(circle at top right, rgba(124, 242, 255, 0.08), transparent 30%),
    linear-gradient(135deg, var(--bg), var(--bg-2));
}
body {
  padding: 20px;
  padding-left: max(20px, env(safe-area-inset-left));
  padding-right: max(20px, env(safe-area-inset-right));
  padding-bottom: max(20px, env(safe-area-inset-bottom));
}
button, input { font: inherit; }
button, input[type="file"], input[type="range"] { touch-action: manipulation; }
button { cursor: pointer; min-height: 44px; }
code { color: var(--cyan); }
img { display: block; max-width: 100%; }
.only-mobile { display: none !important; }

.space-bg {
  position: fixed;
  inset: 0;
  z-index: 0;
  pointer-events: none;
  overflow: hidden;
}
.space-glow {
  position: absolute;
  width: 44vw;
  height: 44vw;
  filter: blur(64px);
  opacity: .25;
}
.glow-a { top: -14vw; left: -12vw; background: radial-gradient(circle, rgba(38,255,107,.35), transparent 62%); }
.glow-b { right: -10vw; top: 8vh; background: radial-gradient(circle, rgba(124,242,255,.28), transparent 62%); }
.space-grid {
  position: absolute;
  inset: 0;
  opacity: .11;
  background-image:
    linear-gradient(rgba(124,242,255,.06) 1px, transparent 1px),
    linear-gradient(90deg, rgba(124,242,255,.05) 1px, transparent 1px);
  background-size: 40px 40px;
  mask-image: linear-gradient(180deg, rgba(0,0,0,.55), transparent 88%);
}
.starfield, .starfall { position: absolute; inset: 0; }
.starfield .star {
  position: absolute; width: 2px; height: 2px; border-radius: 50%;
  background: rgba(255,255,255,.92); box-shadow: 0 0 8px rgba(124,242,255,.7); opacity: .55;
}
.starfall .meteor {
  position: absolute; width: 120px; height: 2px; border-radius: 999px;
  background: linear-gradient(90deg, rgba(255,255,255,0), rgba(124,242,255,.92), rgba(38,255,107,0));
  transform: rotate(-25deg); opacity: 0; animation: meteorFall linear infinite;
}
@keyframes meteorFall {
  0% { transform: translate3d(46vw, -18vh, 0) rotate(-25deg); opacity: 0; }
  10% { opacity: 1; }
  100% { transform: translate3d(-42vw, 120vh, 0) rotate(-25deg); opacity: 0; }
}

.app-shell { position: relative; z-index: 1; max-width: 1820px; margin: 0 auto; }
.panel {
  border: 1px solid var(--line);
  background: var(--panel);
  border-radius: var(--radius);
  backdrop-filter: blur(18px);
  box-shadow: var(--shadow);
}
.topbar {
  padding: 16px 18px;
  display: grid;
  grid-template-columns: 58px minmax(0, 1fr) auto;
  gap: 14px;
  align-items: center;
  margin-bottom: 16px;
}
.menu-btn, .ghost-btn, .small-btn, .action-btn, .tab-btn, .item-btn, .preset-btn {
  border: 1px solid rgba(124,242,255,.18);
  background: rgba(255,255,255,.05);
  color: var(--text);
  border-radius: 14px;
  transition: transform .18s ease, border-color .18s ease, background .18s ease, box-shadow .18s ease;
}
.menu-btn:hover, .ghost-btn:hover, .small-btn:hover, .action-btn:hover, .tab-btn:hover, .item-btn:hover, .preset-btn:hover {
  transform: translateY(-1px);
  border-color: var(--line-strong);
  background: rgba(255,255,255,.08);
  box-shadow: 0 0 18px rgba(124,242,255,.08);
}
.menu-btn {
  display: grid; gap: 5px; width: 58px; padding: 10px 12px;
}
.menu-btn span {
  height: 2px; border-radius: 999px; background: linear-gradient(90deg, var(--lime), var(--cyan));
}
.eyebrow {
  margin: 0 0 7px; color: var(--cyan); letter-spacing: .16em; text-transform: uppercase; font-size: .78rem; font-weight: 700;
}
.brand-block h1, .hero-copy-block h2 { margin: 0; line-height: 1; }
.brand-block h1 { font-size: clamp(1.8rem, 2.4vw, 3rem); }
.hero-copy {
  margin: 8px 0 0; color: var(--muted); line-height: 1.55; max-width: 80ch;
}
.hero-status {
  min-width: 260px; display: flex; align-items: center; gap: 12px; padding: 14px 16px; border-radius: 18px;
  background: rgba(255,255,255,.04); border: 1px solid rgba(38,255,107,.18);
}
.status-dot {
  width: 14px; height: 14px; border-radius: 50%; background: var(--lime); box-shadow: 0 0 16px rgba(38,255,107,.5);
}
.hero-status small, .muted, .section-hint, .upload-box small, .library-meta, .playlist-meta, .empty-state { color: var(--muted); }
.hero-panel {
  display: grid; grid-template-columns: minmax(0, 1.15fr) minmax(280px, .85fr); gap: 22px; padding: 20px; margin-bottom: 18px;
}
.hero-copy-block { align-self: center; }
.hero-copy-block h2 { font-size: clamp(1.5rem, 2vw, 2.35rem); margin-bottom: 12px; }
.hero-chip-row { display: flex; flex-wrap: wrap; gap: 10px; margin-top: 16px; }
.hero-chip {
  padding: 10px 12px; border-radius: 999px; border: 1px solid var(--line); background: rgba(255,255,255,.04); font-weight: 800; font-size: .85rem;
}
.chip-a { border-color: rgba(38,255,107,.28); color: var(--lime); }
.chip-b { border-color: rgba(124,242,255,.28); color: var(--cyan); }
.chip-m { border-color: rgba(255,179,71,.28); color: var(--orange); }
.hero-art {
  border-radius: 22px; overflow: hidden; border: 1px solid rgba(124,242,255,.12); background: rgba(255,255,255,.04);
}
.hero-art img { width: 100%; height: 100%; object-fit: cover; aspect-ratio: 16 / 10; }

.layout-grid {
  display: grid; grid-template-columns: 360px minmax(0, 1fr); gap: 18px; align-items: start;
}
.sidebar-left, .decks-zone, .deck-card, .mixer-column { min-width: 0; }
.sidebar-left { position: sticky; top: 20px; padding: 18px; }
.panel-head, .deck-head, .display-head, .option-row {
  display: flex; justify-content: space-between; gap: 10px; align-items: center;
}
.panel-head.compact { margin-bottom: 10px; }
.panel-head h2, .deck-head h2 { margin: 0; }
.ghost-btn, .small-btn, .action-btn, .tab-btn, .preset-btn { padding: 11px 12px; font-weight: 700; }
.ghost-btn.danger, .item-btn.remove { border-color: rgba(255,107,107,.26); }
.source-tabs { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 10px; margin-bottom: 14px; }
.tab-btn { font-weight: 800; letter-spacing: .04em; }
.tab-btn.active, .preset-btn.active {
  background: linear-gradient(135deg, rgba(38,255,107,.14), rgba(124,242,255,.12)); border-color: rgba(38,255,107,.42);
}
.source-section { display: none; }
.source-section.active { display: block; }
.section-hint { margin: 0 0 14px; line-height: 1.5; }
.upload-box {
  padding: 14px; margin-bottom: 14px; border-radius: 18px; border: 1px dashed rgba(124,242,255,.18); background: rgba(255,255,255,.03);
}
.upload-box label { display: block; margin-bottom: 8px; font-weight: 700; }
.upload-box input { width: 100%; }
.library-list, .playlist-list { display: grid; gap: 10px; max-height: 400px; overflow: auto; padding-right: 4px; }
.library-item, .playlist-item {
  display: grid; gap: 10px; padding: 14px; border-radius: 18px; background: rgba(255,255,255,.04); border: 1px solid transparent;
}
.library-item:hover, .playlist-item:hover, .library-item.active, .playlist-item.active {
  border-color: rgba(38,255,107,.3); background: rgba(38,255,107,.08);
}
.library-title, .playlist-title { font-weight: 800; }
.library-meta, .playlist-meta { font-size: .84rem; word-break: break-word; }
.item-actions, .playlist-actions-row, .playlist-actions { display: flex; flex-wrap: wrap; gap: 8px; }
.item-btn {
  border: 1px solid rgba(124,242,255,.18); background: rgba(255,255,255,.05); color: var(--text); border-radius: 12px; padding: 8px 10px; font-size: .84rem; font-weight: 700;
}
.sidebar-playlist { margin-top: 16px; padding: 14px; border-radius: 20px; border: 1px solid rgba(124,242,255,.1); background: rgba(255,255,255,.035); }

.decks-zone { display: grid; gap: 18px; }
.dual-deck-grid {
  display: grid; grid-template-columns: minmax(0, 1fr) 340px minmax(0, 1fr); gap: 18px; align-items: start;
}
.deck-card, .mixer-column {
  padding: 16px; border-radius: 22px; border: 1px solid rgba(124,242,255,.1); background: rgba(255,255,255,.035);
}
.deck-a { box-shadow: inset 0 0 0 1px rgba(38,255,107,.06); }
.deck-b { box-shadow: inset 0 0 0 1px rgba(124,242,255,.06); }
.deck-head { align-items: flex-start; margin-bottom: 12px; }
.deck-head h2 { font-size: 1.35rem; margin-bottom: 6px; }
.deck-label {
  margin: 0 0 6px; color: var(--cyan); text-transform: uppercase; letter-spacing: .12em; font-size: .76rem; font-weight: 700;
}
.deck-badge {
  display: inline-flex; align-items: center; padding: 7px 12px; border-radius: 999px; font-size: .82rem; font-weight: 800;
}
.badge-a { border: 1px solid rgba(38,255,107,.28); background: rgba(38,255,107,.08); color: var(--lime); }
.badge-b { border: 1px solid rgba(124,242,255,.28); background: rgba(124,242,255,.08); color: var(--cyan); }
.waveform-wrap {
  border-radius: 16px; overflow: hidden; border: 1px solid rgba(124,242,255,.12); background: rgba(0,0,0,.28); margin-bottom: 14px;
}
.waveform-wrap canvas { width: 100%; height: 112px; display: block; }
.turntable-stage {
  position: relative; min-height: 430px; border-radius: 28px; display: grid; place-items: center; background: linear-gradient(180deg, rgba(0,0,0,.22), rgba(255,255,255,.03)); border: 1px solid rgba(124,242,255,.12); overflow: hidden; padding: 92px 18px 16px; margin-bottom: 14px;
}
.deck-glow {
  position: absolute; inset: auto 14% 8% 14%; height: 20%; border-radius: 999px; background: radial-gradient(circle, rgba(38,255,107,.10), transparent 70%); filter: blur(18px);
}
.stage-b .deck-glow { background: radial-gradient(circle, rgba(124,242,255,.12), transparent 70%); }
.vinyl {
  width: min(27vw, 360px); aspect-ratio: 1 / 1; border-radius: 50%; position: relative; cursor: grab; user-select: none; touch-action: none;
  background:
    radial-gradient(circle at center, #101010 0 7%, #2b2b2b 7% 10%, #151515 10% 14%, #070707 14% 100%),
    repeating-radial-gradient(circle at center, rgba(255,255,255,.05) 0 1px, transparent 1px 6px),
    radial-gradient(circle at center, #2a2a2a 0%, #050505 72%);
  box-shadow: inset 0 0 60px rgba(255,255,255,.04), inset 0 0 100px rgba(0,0,0,.5), 0 14px 40px rgba(0,0,0,.34);
  transform: rotate(0deg); will-change: transform;
}
.vinyl.playing { box-shadow: inset 0 0 60px rgba(255,255,255,.04), inset 0 0 100px rgba(0,0,0,.5), 0 14px 40px rgba(0,0,0,.34), 0 0 18px rgba(38,255,107,.10); }
.deck-b .vinyl.playing { box-shadow: inset 0 0 60px rgba(255,255,255,.04), inset 0 0 100px rgba(0,0,0,.5), 0 14px 40px rgba(0,0,0,.34), 0 0 18px rgba(124,242,255,.12); }
.vinyl.dragging { cursor: grabbing; }
.vinyl::before { content: ""; position: absolute; inset: 18px; border-radius: 50%; border: 1px dashed rgba(124,242,255,.1); }
.vinyl-label {
  position: absolute; inset: 34%; border-radius: 50%; display: grid; place-items: center; text-align: center; padding: 12px; background: radial-gradient(circle at center, rgba(124,242,255,.28), rgba(38,255,107,.22)); border: 2px solid rgba(255,255,255,.08); box-shadow: inset 0 0 18px rgba(0,0,0,.28), 0 0 16px rgba(124,242,255,.14); text-transform: uppercase;
}
.deck-b .vinyl-label { background: radial-gradient(circle at center, rgba(124,242,255,.32), rgba(19,155,255,.14)); }
.vinyl-label span { font-size: .78rem; letter-spacing: .16em; font-weight: 700; }
.vinyl-label strong { font-size: 1rem; }
.spindle {
  position: absolute; width: 18px; height: 18px; border-radius: 50%; background: linear-gradient(180deg, #f0f3f9, #7c8798); box-shadow: 0 0 8px rgba(255,255,255,.2);
}
.arm-base, .arm-rest { position: absolute; z-index: 2; }
.arm-base {
  top: 28px; right: 16px; width: 82px; height: 82px; border-radius: 50%; background: radial-gradient(circle, #394454 0%, #101925 70%); border: 1px solid rgba(255,255,255,.08);
}
.arm-rest {
  top: 98px; right: 110px; width: 34px; height: 12px; border-radius: 999px; background: rgba(255,255,255,.12); border: 1px solid rgba(255,255,255,.08);
}
.tonearm {
  position: absolute; top: 56px; right: 58px; width: 220px; height: 12px; transform-origin: right center; transform: rotate(34deg); border-radius: 999px; background: linear-gradient(90deg, #c2cad6, #677485); box-shadow: 0 0 12px rgba(255,255,255,.08); transition: transform .25s ease; z-index: 3;
}
.tonearm::before { content: ""; position: absolute; left: -18px; top: -7px; width: 28px; height: 26px; border-radius: 7px; background: linear-gradient(180deg, #8996aa, #4b5664); }
.tonearm::after { content: ""; position: absolute; left: 10px; top: 2px; width: 18px; height: 8px; border-radius: 3px; background: var(--red); box-shadow: 0 0 10px rgba(255,107,107,.32); }
.tonearm.active { transform: rotate(12deg); }
.tonearm-right { transform: rotate(-34deg); left: 58px; right: auto; transform-origin: left center; }
.deck-b .arm-base { left: 16px; right: auto; }
.deck-b .arm-rest { left: 110px; right: auto; }
.deck-b .tonearm::before { left: auto; right: -18px; }
.deck-b .tonearm::after { left: auto; right: 10px; }
.tonearm-right.active { transform: rotate(-12deg); }
.transport-card {
  padding: 16px; border-radius: 20px; border: 1px solid rgba(124,242,255,.12); background: rgba(255,255,255,.03); margin-bottom: 14px;
}
.transport-grid { display: grid; grid-template-columns: repeat(4, minmax(0,1fr)); gap: 10px; margin-bottom: 12px; }
.action-btn { padding: 14px 12px; font-weight: 800; text-transform: uppercase; letter-spacing: .08em; }
.action-btn.play { border-color: rgba(38,255,107,.32); }
.action-btn.cue { border-color: rgba(255,179,71,.3); }
.progress-row {
  display: grid; grid-template-columns: 70px 1fr 70px; align-items: center; gap: 10px; color: var(--muted); font-weight: 700; margin-bottom: 12px;
}
.progress-track {
  position: relative; height: 8px; border-radius: 999px; background: rgba(255,255,255,.06); overflow: hidden;
}
.progress-fill { position: absolute; inset: 0 auto 0 0; width: 0; border-radius: 999px; background: linear-gradient(90deg, var(--lime), var(--cyan)); }
.option-row { display: flex; flex-wrap: wrap; gap: 10px; }
.deck-stats {
  display: grid; grid-template-columns: repeat(3, minmax(0,1fr)); gap: 10px; margin-bottom: 14px;
}
.deck-stats article, .slider-row, .mixer-mini, .crossfader-card {
  padding: 13px 14px; border-radius: 16px; border: 1px solid rgba(255,255,255,.04); background: rgba(255,255,255,.04);
}
.deck-stats span, .mixer-mini span {
  display: block; margin-bottom: 6px; font-size: .75rem; color: var(--muted); letter-spacing: .1em; text-transform: uppercase;
}
.slider-grid { display: grid; gap: 12px; }
.slider-row span { display: flex; justify-content: space-between; gap: 10px; margin-bottom: 8px; font-weight: 700; }
.slider-row input, .crossfader-range { width: 100%; accent-color: var(--lime); }

.mixer-column { display: grid; gap: 14px; position: sticky; top: 20px; }
.crossfader-card { padding: 16px; }
.xfader-head { display: grid; grid-template-columns: 1fr auto 1fr; gap: 10px; align-items: center; font-weight: 800; margin-bottom: 10px; }
.xfader-head span:first-child { color: var(--lime); }
.xfader-head span:last-child { color: var(--cyan); text-align: right; }
.crossfader-range { margin-bottom: 12px; }
.xfader-meter {
  display: grid; grid-template-columns: 1fr 1fr; gap: 10px; align-items: center;
}
.xfader-fill {
  height: 10px; border-radius: 999px; background: rgba(255,255,255,.07); position: relative; overflow: hidden;
}
.xfader-fill::after { content: ""; position: absolute; inset: 0; transform-origin: left center; transform: scaleX(var(--amount, .5)); }
.fill-a::after { background: linear-gradient(90deg, rgba(38,255,107,.9), rgba(38,255,107,.2)); }
.fill-b::after { background: linear-gradient(90deg, rgba(124,242,255,.2), rgba(124,242,255,.9)); }
.master-strip, .preset-strip, .mixer-status-grid { display: grid; gap: 10px; }
.preset-strip { grid-template-columns: repeat(2, minmax(0,1fr)); }
.enhancer-row { border-color: rgba(38,255,107,.1); background: linear-gradient(180deg, rgba(38,255,107,.06), rgba(124,242,255,.03)); }
.mixer-status-grid { grid-template-columns: repeat(3, minmax(0,1fr)); }

.drawer-overlay[hidden] { display: none; }

.empty-state {
  padding: 18px; border-radius: 18px; border: 1px dashed rgba(124,242,255,.16); background: rgba(255,255,255,.02); line-height: 1.5;
}
