/* ═══════════════════════════════════════════════════════════════
   PLATO KAFASI — Theatre Playback System  v2.0
   style.css
═══════════════════════════════════════════════════════════════ */

*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }

:root {
  /* Core palette */
  --bg-base:      #080b11;
  --bg-panel:     #0e1220;
  --bg-card:      #131828;
  --bg-row:       #171c2e;
  --bg-row-alt:   #131828;
  --bg-row-sel:   #162240;
  --bg-row-play:  #0c2318;
  --bg-row-cue:   #201800;

  /* Accent colors */
  --accent:       #00c8ff;
  --accent-dim:   rgba(0,200,255,.15);
  --accent2:      #00ffb3;
  --accent3:      #ff6b35;
  --purple:       #c96af5;
  --danger:       #e03535;
  --panic:        #ff2020;
  --warning:      #f0a500;
  --success:      #00e676;
  --muted:        #38405a;
  --text:         #c8d4f0;
  --text-dim:     #5a6888;
  --text-bright:  #ffffff;
  --border:       #232a42;

  /* Channel colors (1 to 9) */
  --ch1: #2979ff;
  --ch2: #00ffb3;
  --ch3: #f0a500;
  --ch4: #c96af5;
  --ch5: #ff4081;
  --ch6: #00e5ff;
  --ch7: #76ff03;
  --ch8: #ffd600;
  --ch9: #ff6e40;

  /* Sizing */
  --radius:    6px;
  --radius-lg: 10px;
  --font:      'Segoe UI', 'Helvetica Neue', Arial, sans-serif;
  --mono:      'Consolas', 'Courier New', monospace;
}

html, body { height: 100%; overflow: hidden; }

body {
  font-family: var(--font);
  background: var(--bg-base);
  color: var(--text);
  display: flex;
  flex-direction: column;
  height: 100vh;
  user-select: none;
}

/* ── Scrollbars ──────────────────────────────────────── */
::-webkit-scrollbar { width: 5px; height: 5px; }
::-webkit-scrollbar-track { background: var(--bg-base); }
::-webkit-scrollbar-thumb { background: var(--muted); border-radius: 3px; }
::-webkit-scrollbar-thumb:hover { background: var(--accent); }

/* ── Header ──────────────────────────────────────────── */
#app-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 6px 18px;
  background: linear-gradient(135deg, #060910 0%, #0f1525 100%);
  border-bottom: 2px solid var(--accent);
  flex-shrink: 0;
  min-height: 58px;
  gap: 12px;
}

#header-left {
  display: flex;
  align-items: center;
  gap: 11px;
  min-width: 0;
}

#header-logo {
  width: 40px;
  height: 40px;
  border-radius: 9px;
  flex-shrink: 0;
  box-shadow: 0 0 14px rgba(0, 200, 255, 0.35);
  border: 1px solid rgba(0, 200, 255, 0.4);
  background: #080b11;
}

#header-brand-block {
  display: flex;
  flex-direction: column;
  gap: 2px;
  min-width: 0;
}

.brand-top-line {
  display: flex;
  align-items: baseline;
  gap: 8px;
  flex-wrap: wrap;
}

#app-title {
  font-size: 18px;
  font-weight: 900;
  letter-spacing: 3.5px;
  color: var(--accent);
  text-shadow: 0 0 18px rgba(0,200,255,.55), 0 0 36px rgba(0,200,255,.2);
  line-height: 1.1;
  white-space: nowrap;
}

#app-subtitle {
  font-size: 8px;
  letter-spacing: 2.2px;
  color: var(--text-dim);
  white-space: nowrap;
}

#header-project-bar {
  display: inline-flex;
  align-items: center;
  gap: 5px;
  font-size: 11px;
  min-width: 0;
}

#project-label {
  color: var(--text-dim);
  letter-spacing: 1px;
  font-size: 9px;
  font-weight: 800;
}

#project-name {
  color: var(--accent2);
  font-weight: 800;
  font-size: 12px;
  cursor: pointer;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  max-width: 220px;
}
#project-name:hover {
  text-decoration: underline;
}

#btn-rename-project {
  background: transparent;
  border: none;
  color: var(--text-dim);
  font-size: 11px;
  cursor: pointer;
  padding: 1px 4px;
  border-radius: 4px;
  transition: color .15s;
}
#btn-rename-project:hover { color: var(--accent2); }

/* ── Header Center: Canlı Saat & Sahne Sayacı ── */
#header-center {
  display: flex;
  align-items: center;
  justify-content: center;
  flex: 1;
}

#stage-time-center {
  display: inline-flex;
  align-items: center;
  gap: 10px;
  background: rgba(8, 11, 18, 0.75);
  border: 1px solid #222c46;
  border-radius: 9px;
  padding: 4px 10px;
  box-shadow: inset 0 1px 6px rgba(0, 0, 0, 0.6);
}

.time-pill {
  display: inline-flex;
  align-items: center;
  gap: 7px;
  padding: 2px 6px;
  border-radius: 6px;
}

.clock-pill {
  border-right: 1px solid #222c46;
  padding-right: 12px;
}

.time-pill-label {
  font-size: 8.5px;
  font-weight: 800;
  letter-spacing: 1.2px;
  color: var(--text-dim);
  white-space: nowrap;
}

#live-clock-display {
  font-family: var(--mono);
  font-size: 15px;
  font-weight: 900;
  letter-spacing: 1.5px;
  color: var(--accent);
  text-shadow: 0 0 10px rgba(0, 200, 255, 0.4);
  min-width: 72px;
  text-align: center;
}

#stage-timer-display {
  font-family: var(--mono);
  font-size: 15px;
  font-weight: 900;
  letter-spacing: 1.5px;
  color: var(--warning);
  text-shadow: 0 0 10px rgba(240, 165, 0, 0.35);
  min-width: 72px;
  text-align: center;
  cursor: pointer;
}

.timer-pill.running #stage-timer-display {
  color: var(--accent2);
  text-shadow: 0 0 12px rgba(0, 255, 179, 0.55);
}

.timer-btn-group {
  display: inline-flex;
  align-items: center;
  gap: 3px;
}

.timer-btn {
  background: #141b2e;
  border: 1px solid var(--border);
  border-radius: 5px;
  color: var(--text);
  font-size: 10px;
  font-weight: 800;
  width: 22px;
  height: 22px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  cursor: pointer;
  transition: all 0.15s;
  padding: 0;
}
.timer-btn:hover {
  border-color: var(--accent);
  color: var(--accent);
  background: rgba(0, 200, 255, 0.1);
}
.timer-pill.running #btn-timer-toggle {
  background: rgba(0, 255, 179, 0.18);
  border-color: var(--accent2);
  color: var(--accent2);
}

/* Header Right & Master section */
#header-right {
  display: flex;
  align-items: center;
  gap: 10px;
}

#header-app-actions {
  display: inline-flex;
  align-items: center;
  gap: 6px;
}

#master-section {
  display: flex;
  align-items: center;
  gap: 8px;
}

.master-vu-wrap {
  display: flex;
  gap: 2px;
  align-items: flex-end;
  height: 24px;
}

.master-vu {
  width: 4px;
  border-radius: 2px;
  background: var(--muted);
  height: 4px;
  transition: height .08s linear, background .08s linear;
}

.master-label {
  font-size: 9px;
  letter-spacing: 2px;
  color: var(--text-dim);
}

#master-volume {
  -webkit-appearance: none;
  width: 100px;
  height: 4px;
  border-radius: 2px;
  background: var(--muted);
  outline: none;
  cursor: pointer;
}
#master-volume::-webkit-slider-thumb {
  -webkit-appearance: none;
  width: 14px; height: 14px;
  border-radius: 50%;
  background: var(--accent);
  cursor: pointer;
  box-shadow: 0 0 8px rgba(0,200,255,.6);
}

#master-vol-display {
  font-size: 11px;
  color: var(--accent);
  min-width: 36px;
  font-family: var(--mono);
}

/* ── Menu Bar ────────────────────────────────────────── */
#menu-bar {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 8px;
  padding: 5px 14px;
  background: var(--bg-panel);
  border-bottom: 1px solid var(--border);
  flex-shrink: 0;
}

.menu-buttons-group {
  display: flex;
  align-items: center;
  gap: 6px;
}

.menu-right-group {
  display: flex;
  align-items: center;
  gap: 10px;
  margin-left: auto;
}

.menu-btn {
  padding: 5px 12px;
  background: var(--bg-card);
  border: 1px solid var(--border);
  border-radius: var(--radius);
  color: var(--text);
  font-size: 11px;
  font-weight: 700;
  letter-spacing: .4px;
  cursor: pointer;
  transition: all .15s;
  white-space: nowrap;
}
.menu-btn:hover { border-color: var(--accent); color: var(--accent); background: rgba(0,200,255,.06); }

.install-pwa-btn {
  border-color: var(--purple) !important;
  color: var(--purple) !important;
  background: rgba(201,106,245,.1) !important;
}
.install-pwa-btn:hover {
  background: var(--purple) !important;
  color: #fff !important;
  box-shadow: 0 0 14px rgba(201,106,245,.45);
}

/* Çevrimdışı Durum Rozeti (Offline Status Badge) */
.offline-badge {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  padding: 3px 9px;
  border-radius: 12px;
  font-size: 9px;
  font-weight: 800;
  letter-spacing: 0.8px;
  white-space: nowrap;
  border: 1px solid var(--border);
  background: var(--bg-card);
  user-select: none;
}
.offline-badge .status-dot {
  width: 7px;
  height: 7px;
  border-radius: 50%;
  flex-shrink: 0;
}
.offline-badge.online {
  border-color: rgba(0, 230, 118, 0.4);
  color: var(--accent2);
  background: rgba(0, 230, 118, 0.08);
}
.offline-badge.online .status-dot {
  background: var(--success);
  box-shadow: 0 0 8px var(--success);
}
.offline-badge.offline {
  border-color: var(--warning);
  color: var(--warning);
  background: rgba(240, 165, 0, 0.14);
}
.offline-badge.offline .status-dot {
  background: var(--warning);
  box-shadow: 0 0 8px var(--warning);
  animation: status-blink 1.4s infinite;
}

#hotkeys-hint {
  display: flex;
  gap: 5px;
  font-size: 9px;
  color: var(--text-dim);
}
#hotkeys-hint span {
  background: var(--bg-card);
  padding: 2px 5px;
  border-radius: 3px;
  border: 1px solid var(--border);
  white-space: nowrap;
}

/* Mobil Görünüm Sekmeleri (Masaüstünde gizli, Mobil/Tablette aktif) */
#mobile-view-tabs {
  display: none;
  background: #0a0e19;
  border-bottom: 1px solid var(--border);
  padding: 5px 8px;
  gap: 6px;
  flex-shrink: 0;
}
.mobile-tab-btn {
  flex: 1;
  padding: 7px 6px;
  background: var(--bg-card);
  border: 1px solid var(--border);
  border-radius: var(--radius);
  color: var(--text-dim);
  font-size: 11px;
  font-weight: 800;
  letter-spacing: 0.5px;
  cursor: pointer;
  text-align: center;
  transition: all 0.15s;
}
.mobile-tab-btn.active {
  background: linear-gradient(135deg, rgba(0,200,255,0.2), rgba(0,255,179,0.15));
  color: var(--text-bright);
  border-color: var(--accent);
  box-shadow: 0 0 12px rgba(0,200,255,0.25);
}

/* ── Main Layout ─────────────────────────────────────── */
#main-layout {
  display: flex;
  flex: 1;
  min-height: 0;
  overflow: hidden;
}

/* ── Playlist ────────────────────────────────────────── */
#playlist-section {
  display: flex;
  flex-direction: column;
  width: 52%;
  min-width: 380px;
  border-right: 1px solid var(--border);
  background: var(--bg-panel);
  overflow: hidden;
}

#playlist-header {
  display: flex;
  align-items: center;
  gap: 8px;
  padding: 7px 12px;
  border-bottom: 1px solid var(--border);
  flex-shrink: 0;
}

#playlist-header h2 {
  font-size: 11px;
  letter-spacing: 3px;
  color: var(--text-dim);
  white-space: nowrap;
}

#playlist-search-wrap { flex: 1; }

#playlist-search {
  width: 100%;
  background: var(--bg-base);
  border: 1px solid var(--border);
  border-radius: var(--radius);
  color: var(--text);
  font-size: 11px;
  padding: 5px 8px;
  outline: none;
  transition: border-color .15s;
}
#playlist-search:focus { border-color: var(--accent); }

#btn-add-music {
  padding: 6px 14px;
  background: linear-gradient(135deg, var(--accent) 0%, #007aaa 100%);
  border: none;
  border-radius: var(--radius);
  color: #000;
  font-weight: 800;
  font-size: 11px;
  letter-spacing: .8px;
  cursor: pointer;
  white-space: nowrap;
  transition: all .15s;
  box-shadow: 0 0 12px rgba(0,200,255,.25);
}
#btn-add-music:hover { box-shadow: 0 0 22px rgba(0,200,255,.55); transform: translateY(-1px); }

/* ── HIZLI ÖN DİNLEME OYNATICISI (QUICK PREVIEW PLAYER) ── */
#quick-player {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 8px 12px;
  background: #090e1a;
  border-bottom: 2px solid #1a233a;
  flex-shrink: 0;
}

.qp-info-col {
  display: flex;
  flex-direction: column;
  min-width: 140px;
  max-width: 180px;
  overflow: hidden;
}
.qp-label {
  font-size: 8px;
  letter-spacing: 2px;
  color: var(--accent);
  font-weight: 800;
}
.qp-track-name {
  font-size: 11px;
  color: var(--text-bright);
  font-weight: 600;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

.qp-middle-col {
  flex: 1;
  display: flex;
  flex-direction: column;
  gap: 4px;
}
.qp-controls {
  display: flex;
  align-items: center;
  gap: 5px;
}
.qp-btn {
  padding: 3px 8px;
  background: var(--bg-card);
  border: 1px solid var(--border);
  border-radius: 4px;
  color: var(--text);
  font-size: 11px;
  font-weight: 700;
  cursor: pointer;
  transition: all .15s;
}
.qp-btn:hover {
  border-color: var(--accent);
  color: var(--accent);
}
.qp-loop-btn.active {
  background: rgba(0,255,179,0.15);
  color: var(--accent2);
  border-color: var(--accent2);
}
.qp-solo-btn {
  font-size: 10px;
  padding: 3px 6px;
  background: #151b2e;
}
.qp-solo-btn.active {
  background: var(--warning);
  color: #000;
  border-color: var(--warning);
  box-shadow: 0 0 10px rgba(240,165,0,0.5);
}

.qp-progress-wrap {
  width: 100%;
  height: 6px;
  background: #060910;
  border-radius: 3px;
  border: 1px solid var(--border);
  cursor: pointer;
  position: relative;
  overflow: hidden;
}
.qp-progress-fill {
  height: 100%;
  width: 0%;
  background: linear-gradient(to right, #00c8ff, #00ffb3);
  border-radius: 3px;
  pointer-events: none;
  transition: width 0.08s linear;
}

.qp-right-col {
  display: flex;
  align-items: center;
  gap: 8px;
  flex-shrink: 0;
}
.qp-time {
  font-family: var(--mono);
  font-size: 10px;
  color: var(--text-dim);
  min-width: 65px;
  text-align: right;
}
.qp-volume-wrap {
  display: flex;
  align-items: center;
  gap: 4px;
}
.qp-vol-icon { font-size: 10px; color: var(--text-dim); }
#qp-volume {
  -webkit-appearance: none;
  width: 60px;
  height: 3px;
  border-radius: 2px;
  background: var(--muted);
  outline: none;
  cursor: pointer;
}
#qp-volume::-webkit-slider-thumb {
  -webkit-appearance: none;
  width: 10px; height: 10px;
  border-radius: 50%;
  background: var(--accent);
  cursor: pointer;
}

#playlist-table-wrapper {
  flex: 1;
  overflow-y: auto;
  position: relative;
}

#playlist-table-wrapper.drag-over {
  outline: 2px dashed var(--accent);
  outline-offset: -3px;
  background: rgba(0,200,255,.04);
}

#playlist-table { width: 100%; border-collapse: collapse; font-size: 12px; }

#playlist-table thead th {
  position: sticky;
  top: 0;
  z-index: 10;
  background: #0c1020;
  border-bottom: 1px solid var(--border);
  padding: 5px 6px;
  text-align: left;
  font-size: 9px;
  letter-spacing: .8px;
  color: var(--text-dim);
}

.col-num    { width: 32px; text-align: center; }
.col-name   { min-width: 140px; }
.col-dur    { width: 50px; text-align: center; }
.col-ch     { width: 72px; text-align: center; }
.col-loop   { width: 28px; text-align: center; }
.col-fade   { width: 44px; text-align: center; }
.col-actions{ width: 88px; text-align: center; white-space: nowrap; }

#playlist-body tr {
  cursor: pointer;
  border-bottom: 1px solid rgba(35,42,66,.6);
  transition: background .1s;
}
#playlist-body tr:nth-child(even) { background: var(--bg-row-alt); }
#playlist-body tr:nth-child(odd)  { background: var(--bg-row); }
#playlist-body tr:hover           { background: rgba(0,200,255,.06); }
#playlist-body tr.selected        { background: var(--bg-row-sel) !important; outline: 1px solid rgba(0,200,255,.25); }
#playlist-body tr.row-cued,
#playlist-body tr.selected.row-cued {
  background: var(--bg-row-cue) !important;
  outline: 1px solid rgba(240,165,0,.35) !important;
  box-shadow: inset 3px 0 0 var(--warning);
}
#playlist-body tr.row-playing,
#playlist-body tr.selected.row-playing {
  background: linear-gradient(90deg, rgba(0, 230, 118, 0.22) 0%, #0b2619 100%) !important;
  outline: 1px solid rgba(0, 255, 179, 0.45) !important;
  box-shadow: inset 3px 0 0 #00e676;
}
#playlist-body tr.row-hidden      { display: none; }

#playlist-body td { padding: 4px 6px; vertical-align: middle; }

.track-num { font-family: var(--mono); font-size: 10px; color: var(--text-dim); text-align: center; }
tr.row-playing .track-num { color: #00e676; font-weight: 700; }

.track-name-wrap {
  display: flex;
  flex-direction: column;
  gap: 2px;
  min-width: 0;
}

.track-name-cell {
  display: flex;
  align-items: center;
  gap: 5px;
  max-width: 100%;
}

.drag-handle { cursor: grab; color: var(--muted); font-size: 13px; flex-shrink: 0; }
.drag-handle:active { cursor: grabbing; }

.track-name-text {
  font-weight: 500;
  color: var(--text);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  flex: 1;
  min-width: 0;
}
tr.row-playing .track-name-text { color: #00ffb3 !important; font-weight: 700; }
tr.row-cued    .track-name-text { color: var(--warning); font-weight: 600; }

.track-cue-note {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  margin-left: 16px;
  padding: 2px 7px;
  background: rgba(240, 165, 0, 0.11);
  border-left: 2px solid var(--warning);
  border-radius: 3px;
  color: #ffd166;
  font-size: 10.5px;
  font-weight: 500;
  line-height: 1.3;
  max-width: 100%;
  cursor: pointer;
  transition: background .15s, border-color .15s;
}
.track-cue-note:hover {
  background: rgba(240, 165, 0, 0.22);
  border-left-color: #ffe08a;
}
.track-cue-note .cue-note-icon {
  font-size: 10px;
  flex-shrink: 0;
}
.track-cue-note .cue-note-text {
  word-break: break-word;
}

.row-hotkey-badge {
  font-family: var(--mono);
  font-size: 9px;
  font-weight: 800;
  padding: 1px 5px;
  border-radius: 4px;
  white-space: nowrap;
  flex-shrink: 0;
  color: #e0aaff;
  background: rgba(201, 106, 245, 0.16);
  border: 1px solid rgba(201, 106, 245, 0.42);
  cursor: pointer;
  transition: all .15s;
}
.row-hotkey-badge:hover {
  background: rgba(201, 106, 245, 0.3);
  border-color: var(--purple);
}

.row-ch-badge, .row-preview-badge {
  font-size: 9px;
  font-weight: 800;
  padding: 1px 5px;
  border-radius: 4px;
  white-space: nowrap;
  flex-shrink: 0;
  letter-spacing: 0.3px;
}
.row-ch-badge.playing, .row-preview-badge.playing {
  color: #00ffb3;
  background: rgba(0, 230, 118, 0.18);
  border: 1px solid rgba(0, 255, 179, 0.4);
}
.row-ch-badge.cued, .row-preview-badge.paused {
  color: var(--warning);
  background: rgba(240, 165, 0, 0.16);
  border: 1px solid rgba(240, 165, 0, 0.35);
}

.track-name-input {
  flex: 1;
  background: var(--bg-base);
  border: 1px solid var(--accent);
  border-radius: 3px;
  color: var(--text-bright);
  font-size: 12px;
  padding: 1px 5px;
  outline: none;
}

.track-dur { font-family: var(--mono); font-size: 10px; color: var(--text-dim); text-align: center; }

.ch-select {
  background: var(--bg-card);
  border: 1px solid var(--border);
  border-radius: 4px;
  color: var(--text);
  font-size: 10px;
  padding: 2px 3px;
  cursor: pointer;
  width: 64px;
}

.loop-check {
  accent-color: var(--accent2);
  width: 13px; height: 13px;
  cursor: pointer;
}

.fade-field {
  background: var(--bg-base);
  border: 1px solid var(--border);
  border-radius: 3px;
  color: var(--text);
  font-size: 10px;
  width: 36px;
  padding: 2px 3px;
  text-align: center;
  font-family: var(--mono);
}

.btn-note-track, .btn-play-track, .btn-del-track {
  background: transparent;
  border: 1px solid var(--border);
  border-radius: 4px;
  color: var(--text-dim);
  cursor: pointer;
  padding: 2px 5px;
  min-width: 23px;
  font-size: 11px;
  transition: all .15s;
}
.btn-note-track:hover {
  border-color: var(--warning);
  color: var(--warning);
  background: rgba(240, 165, 0, 0.12);
}
.btn-note-track.has-note {
  border-color: rgba(240, 165, 0, 0.55);
  color: #ffd166;
  background: rgba(240, 165, 0, 0.16);
}
.btn-play-track:hover { border-color: var(--accent2); color: var(--accent2); }
.btn-play-track.is-playing {
  background: rgba(0, 230, 118, 0.24);
  border-color: #00e676;
  color: #00ffb3;
  box-shadow: 0 0 8px rgba(0, 230, 118, 0.45);
  font-weight: 900;
}
.btn-play-track.is-paused {
  background: rgba(240, 165, 0, 0.18);
  border-color: var(--warning);
  color: var(--warning);
}
.btn-del-track:hover  { border-color: var(--danger);  color: var(--danger);  }

tr.drag-source { opacity: .35; }
tr.drag-target { border-top: 2px solid var(--accent) !important; }

#playlist-empty {
  position: absolute;
  top: 50%; left: 50%;
  transform: translate(-50%, -50%);
  color: var(--text-dim);
  text-align: center;
  font-size: 13px;
  line-height: 2;
  pointer-events: none;
}
#playlist-empty strong { color: var(--accent); }

/* ── Channels Section ────────────────────────────────── */
#channels-section {
  display: flex;
  flex-direction: column;
  flex: 1;
  overflow-y: auto;
  padding: 8px 10px;
  gap: 8px;
  background: var(--bg-base);
}

.channels-title-row {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 0 4px;
  flex-shrink: 0;
}
.channels-title-left {
  display: flex;
  flex-direction: column;
  gap: 2px;
}
.channels-title-left h2 {
  font-size: 11px;
  letter-spacing: 3px;
  color: var(--accent);
}
.channels-subtitle {
  font-size: 9px;
  color: var(--text-dim);
}

.add-channel-btn {
  padding: 5px 12px;
  background: linear-gradient(135deg, #162447, #1f4068);
  border: 1px solid var(--accent);
  border-radius: var(--radius);
  color: var(--accent);
  font-size: 11px;
  font-weight: 800;
  cursor: pointer;
  letter-spacing: 0.5px;
  transition: all 0.15s;
}
.add-channel-btn:hover {
  background: var(--accent);
  color: #000;
  box-shadow: 0 0 14px rgba(0,200,255,0.4);
  transform: translateY(-1px);
}

#channels-grid {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 10px;
}

/* ── Channel Card ────────────────────────────────────── */
.channel-card {
  background: var(--bg-card);
  border: 1px solid var(--border);
  border-radius: var(--radius-lg);
  padding: 9px 10px;
  display: flex;
  flex-direction: column;
  gap: 6px;
  transition: border-color .2s, box-shadow .2s;
  position: relative;
}

/* Top color bar (Kanallar 1..9) */
#ch-1 { border-top: 3px solid var(--ch1); }
#ch-2 { border-top: 3px solid var(--ch2); }
#ch-3 { border-top: 3px solid var(--ch3); }
#ch-4 { border-top: 3px solid var(--ch4); }
#ch-5 { border-top: 3px solid var(--ch5); }
#ch-6 { border-top: 3px solid var(--ch6); }
#ch-7 { border-top: 3px solid var(--ch7); }
#ch-8 { border-top: 3px solid var(--ch8); }
#ch-9 { border-top: 3px solid var(--ch9); }

/* State glow */
.channel-card[data-state="playing"] { box-shadow: 0 0 14px rgba(0,255,179,.15); border-color: var(--accent2); }
.channel-card[data-state="cued"]    { box-shadow: 0 0 14px rgba(240,165,0,.15); border-color: var(--warning); }
.channel-card[data-state="paused"]  { box-shadow: 0 0 10px rgba(240,165,0,.1); }

/* ── Channel top bar ── */
.ch-top-bar {
  display: flex;
  align-items: center;
  gap: 6px;
}

.ch-label {
  font-size: 12px;
  font-weight: 900;
  letter-spacing: 2px;
  flex-shrink: 0;
}
#ch-1 .ch-label { color: var(--ch1); }
#ch-2 .ch-label { color: var(--ch2); }
#ch-3 .ch-label { color: var(--ch3); }
#ch-4 .ch-label { color: var(--ch4); }
#ch-5 .ch-label { color: var(--ch5); }
#ch-6 .ch-label { color: var(--ch6); }
#ch-7 .ch-label { color: var(--ch7); }
#ch-8 .ch-label { color: var(--ch8); }
#ch-9 .ch-label { color: var(--ch9); }

/* Sonradan eklenen kanalları silme butonu */
.ch-remove-btn {
  background: transparent;
  border: 1px solid rgba(224,53,53,0.3);
  border-radius: 3px;
  color: var(--danger);
  font-size: 10px;
  font-weight: 700;
  padding: 1px 4px;
  cursor: pointer;
  transition: all 0.15s;
}
.ch-remove-btn:hover {
  background: var(--danger);
  color: #fff;
  box-shadow: 0 0 8px rgba(224,53,53,0.6);
}

/* Status badge */
.ch-status-badge {
  flex: 1;
  font-size: 9px;
  font-weight: 700;
  letter-spacing: 1.5px;
  padding: 2px 7px;
  border-radius: 10px;
  text-align: center;
  background: var(--muted);
  color: var(--text-dim);
  transition: all .2s;
}

.ch-status-badge[data-state="playing"] {
  background: rgba(0,255,179,.2);
  color: var(--accent2);
  animation: status-blink 1.5s ease-in-out infinite;
}
.ch-status-badge[data-state="cued"]   { background: rgba(240,165,0,.2); color: var(--warning); }
.ch-status-badge[data-state="paused"] { background: rgba(240,165,0,.15); color: var(--warning); }

@keyframes status-blink {
  0%,100% { opacity: 1; }
  50%      { opacity: .7; }
}

.ch-top-right {
  display: flex;
  gap: 4px;
  flex-shrink: 0;
}

.ch-loop-btn, .ch-solo-btn, .ch-mute-btn {
  background: var(--bg-base);
  border: 1px solid var(--border);
  border-radius: 4px;
  color: var(--text-dim);
  font-size: 10px;
  font-weight: 700;
  padding: 2px 6px;
  cursor: pointer;
  transition: all .15s;
}
.ch-loop-btn:hover, .ch-solo-btn:hover, .ch-mute-btn:hover {
  border-color: var(--text);
  color: var(--text);
}
.ch-loop-btn.active { 
  background: rgba(0,255,179,.2); 
  color: #00ffb3; 
  border-color: #00ffb3; 
  box-shadow: 0 0 6px rgba(0,255,179,0.4); 
}
.ch-solo-btn.active { 
  background: rgba(255,183,3,.25); 
  color: #ffb703; 
  border-color: #ffb703; 
  box-shadow: 0 0 8px rgba(255,183,3,0.5); 
}
.ch-mute-btn.muted { 
  background: rgba(230,57,70,.25); 
  color: #ff4d6d; 
  border-color: #ff4d6d; 
  box-shadow: 0 0 8px rgba(230,57,70,0.5); 
}

/* Track name row with eject button */
.ch-name-row {
  display: flex;
  align-items: center;
  gap: 5px;
  min-height: 18px;
}

.ch-track-name {
  flex: 1;
  font-size: 12px;
  font-weight: 600;
  color: var(--text);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  min-width: 0;
}
[data-state="playing"] .ch-track-name { color: var(--accent2); }
[data-state="cued"]    .ch-track-name { color: var(--warning); }

/* Kanal Reji Notu (📝) butonu ve Eject (⏏) butonu */
.ch-note-btn,
.ch-eject-btn {
  flex-shrink: 0;
  background: transparent;
  border: 1px solid transparent;
  border-radius: 4px;
  color: var(--muted);
  font-size: 11px;
  cursor: pointer;
  padding: 1px 4px;
  line-height: 1;
  transition: all .15s;
  opacity: 0;      /* Varsayılan: gizli */
}

/* Kanalda parça varken göster */
.channel-card[data-state="cued"]    .ch-note-btn,
.channel-card[data-state="playing"] .ch-note-btn,
.channel-card[data-state="paused"]  .ch-note-btn,
.channel-card[data-state="cued"]    .ch-eject-btn,
.channel-card[data-state="playing"] .ch-eject-btn,
.channel-card[data-state="paused"]  .ch-eject-btn {
  opacity: 1;
}

.channel-card:hover .ch-note-btn,
.channel-card:hover .ch-eject-btn { opacity: 1; }

.ch-note-btn.has-note {
  color: #ffd166;
  border-color: rgba(240, 165, 0, 0.45);
  background: rgba(240, 165, 0, 0.14);
}
.ch-note-btn:hover {
  border-color: var(--warning);
  color: var(--warning);
  background: rgba(240, 165, 0, 0.18);
}

.ch-eject-btn:hover {
  border-color: var(--danger);
  color: var(--danger);
  background: rgba(224,53,53,.1);
}

/* Kanal içi Reji Notu Kutusu */
.ch-cue-note {
  font-size: 10.5px;
  font-weight: 600;
  color: #ffd166;
  background: rgba(240, 165, 0, 0.12);
  border-left: 2.5px solid var(--warning);
  border-radius: 4px;
  padding: 3px 7px;
  line-height: 1.35;
  word-break: break-word;
  cursor: pointer;
  transition: background .15s;
}
.ch-cue-note:hover {
  background: rgba(240, 165, 0, 0.22);
}


/* ── VU Meter ── */
.vu-meter-row {
  display: flex;
  align-items: center;
  gap: 5px;
}
.vu-lbl {
  font-size: 8px;
  color: var(--text-dim);
  letter-spacing: 1px;
  width: 14px;
  flex-shrink: 0;
}
.vu-wrap {
  flex: 1;
  height: 6px;
  background: #0a0d14;
  border-radius: 3px;
  overflow: hidden;
  position: relative;
}
.vu-bar {
  height: 100%;
  width: 0%;
  border-radius: 3px;
  background: linear-gradient(to right, #00e676 0%, #ffee00 70%, #ff4444 100%);
  transition: width .07s linear;
}
.vu-peak {
  position: absolute;
  top: 0;
  width: 2px;
  height: 100%;
  background: rgba(255,255,255,.7);
  border-radius: 1px;
  left: 0;
  transition: left .07s linear;
}

/* ── Progress bar (Sarma & İlerleme Çubuğu) ── */
.ch-progress-wrap {
  height: 12px;
  background: #090c14;
  border-radius: 6px;
  border: 1px solid var(--border);
  position: relative;
  overflow: visible;
  cursor: pointer;
  touch-action: none;
  user-select: none;
  margin: 2px 0;
  transition: height .15s, border-color .15s;
}
.ch-progress-wrap:hover {
  height: 14px;
  border-color: var(--accent);
}
.ch-progress-fill {
  height: 100%;
  width: 0%;
  border-radius: 5px;
  position: relative;
  pointer-events: none;
  background: linear-gradient(to right, rgba(0,200,255,0.4), var(--accent, #00c8ff));
  transition: width .08s linear;
}
.ch-progress-fill::after {
  content: '';
  position: absolute;
  right: -5px;
  top: 50%;
  transform: translateY(-50%);
  width: 12px;
  height: 12px;
  border-radius: 50%;
  background: #ffffff;
  box-shadow: 0 0 6px rgba(0,0,0,.8);
  opacity: 0;
  transition: opacity .15s, transform .15s;
}
.ch-progress-wrap:hover .ch-progress-fill::after,
.ch-progress-wrap.scrubbing .ch-progress-fill::after {
  opacity: 1;
  transform: translateY(-50%) scale(1.1);
}
#ch-1 .ch-progress-fill { background: linear-gradient(to right, rgba(41,121,255,0.4), var(--ch1)); }
#ch-2 .ch-progress-fill { background: linear-gradient(to right, rgba(0,255,179,0.4), var(--ch2)); }
#ch-3 .ch-progress-fill { background: linear-gradient(to right, rgba(240,165,0,0.4), var(--ch3)); }
#ch-4 .ch-progress-fill { background: linear-gradient(to right, rgba(201,106,245,0.4), var(--ch4)); }
#ch-5 .ch-progress-fill { background: linear-gradient(to right, rgba(255,64,129,0.4), var(--ch5)); }
#ch-6 .ch-progress-fill { background: linear-gradient(to right, rgba(0,229,255,0.4), var(--ch6)); }
#ch-7 .ch-progress-fill { background: linear-gradient(to right, rgba(118,255,3,0.4), var(--ch7)); }
#ch-8 .ch-progress-fill { background: linear-gradient(to right, rgba(255,214,0,0.4), var(--ch8)); }
#ch-9 .ch-progress-fill { background: linear-gradient(to right, rgba(255,110,64,0.4), var(--ch9)); }

/* Time row */
.ch-time-row {
  display: flex;
  justify-content: space-between;
  font-family: var(--mono);
  font-size: 10px;
  color: var(--text-dim);
  font-weight: 600;
}

/* ── Channel controls ── */
.ch-main-controls {
  display: flex;
  gap: 4px;
}

.ch-btn {
  flex: 1;
  padding: 5px 3px;
  background: var(--bg-base);
  border: 1px solid var(--border);
  border-radius: var(--radius);
  color: var(--text-dim);
  font-size: 11px;
  font-weight: 600;
  cursor: pointer;
  text-align: center;
  transition: all .15s;
  white-space: nowrap;
  letter-spacing: .3px;
}
.ch-btn:hover { border-color: var(--accent); color: var(--accent); background: rgba(0,200,255,.06); }

.cue-btn:hover   { border-color: var(--warning);  color: var(--warning);  background: rgba(240,165,0,.08); }
.play-btn:hover  { border-color: var(--accent2);  color: var(--accent2);  background: rgba(0,255,179,.08); }
.stop-btn:hover  { border-color: var(--danger);   color: var(--danger);   background: rgba(224,53,53,.08); }
.pause-btn:hover { border-color: var(--warning);  color: var(--warning);  background: rgba(240,165,0,.08); }

.fade-in-btn:hover  { border-color: var(--accent2); color: var(--accent2); }
.fade-out-btn:hover { border-color: var(--danger);  color: var(--danger);  }

/* Volume row */
.ch-volume-row {
  display: flex;
  align-items: center;
  gap: 6px;
}
.vol-lbl {
  font-size: 8px;
  letter-spacing: 1px;
  color: var(--text-dim);
  width: 20px;
  flex-shrink: 0;
}
.ch-vol-slider {
  -webkit-appearance: none;
  flex: 1;
  height: 3px;
  border-radius: 2px;
  background: var(--muted);
  outline: none;
  cursor: pointer;
}
.ch-vol-slider::-webkit-slider-thumb {
  -webkit-appearance: none;
  width: 14px;
  height: 14px;
  border-radius: 50%;
  cursor: pointer;
  box-shadow: 0 0 6px rgba(0, 0, 0, 0.8);
  transition: transform .12s, box-shadow .12s;
}
.ch-vol-slider::-webkit-slider-thumb:hover {
  transform: scale(1.25);
}

.ch-vol-slider::-moz-range-thumb {
  width: 14px;
  height: 14px;
  border-radius: 50%;
  border: none;
  cursor: pointer;
  box-shadow: 0 0 6px rgba(0, 0, 0, 0.8);
  transition: transform .12s, box-shadow .12s;
}
.ch-vol-slider::-moz-range-thumb:hover {
  transform: scale(1.25);
}

/* Webkit (Edge / Chrome / Opera / Safari) */
#ch-1 .ch-vol-slider::-webkit-slider-thumb { background: var(--ch1); box-shadow: 0 0 8px var(--ch1); }
#ch-2 .ch-vol-slider::-webkit-slider-thumb { background: var(--ch2); box-shadow: 0 0 8px var(--ch2); }
#ch-3 .ch-vol-slider::-webkit-slider-thumb { background: var(--ch3); box-shadow: 0 0 8px var(--ch3); }
#ch-4 .ch-vol-slider::-webkit-slider-thumb { background: var(--ch4); box-shadow: 0 0 8px var(--ch4); }
#ch-5 .ch-vol-slider::-webkit-slider-thumb { background: var(--ch5); box-shadow: 0 0 8px var(--ch5); }
#ch-6 .ch-vol-slider::-webkit-slider-thumb { background: var(--ch6); box-shadow: 0 0 8px var(--ch6); }
#ch-7 .ch-vol-slider::-webkit-slider-thumb { background: var(--ch7); box-shadow: 0 0 8px var(--ch7); }
#ch-8 .ch-vol-slider::-webkit-slider-thumb { background: var(--ch8); box-shadow: 0 0 8px var(--ch8); }
#ch-9 .ch-vol-slider::-webkit-slider-thumb { background: var(--ch9); box-shadow: 0 0 8px var(--ch9); }

/* Firefox (Gecko) */
#ch-1 .ch-vol-slider::-moz-range-thumb { background: var(--ch1); box-shadow: 0 0 8px var(--ch1); }
#ch-2 .ch-vol-slider::-moz-range-thumb { background: var(--ch2); box-shadow: 0 0 8px var(--ch2); }
#ch-3 .ch-vol-slider::-moz-range-thumb { background: var(--ch3); box-shadow: 0 0 8px var(--ch3); }
#ch-4 .ch-vol-slider::-moz-range-thumb { background: var(--ch4); box-shadow: 0 0 8px var(--ch4); }
#ch-5 .ch-vol-slider::-moz-range-thumb { background: var(--ch5); box-shadow: 0 0 8px var(--ch5); }
#ch-6 .ch-vol-slider::-moz-range-thumb { background: var(--ch6); box-shadow: 0 0 8px var(--ch6); }
#ch-7 .ch-vol-slider::-moz-range-thumb { background: var(--ch7); box-shadow: 0 0 8px var(--ch7); }
#ch-8 .ch-vol-slider::-moz-range-thumb { background: var(--ch8); box-shadow: 0 0 8px var(--ch8); }
#ch-9 .ch-vol-slider::-moz-range-thumb { background: var(--ch9); box-shadow: 0 0 8px var(--ch9); }

.ch-vol-display {
  font-size: 9px;
  font-family: var(--mono);
  color: var(--text-dim);
  min-width: 32px;
  text-align: right;
}

/* Fade */
.ch-fade-row { display: flex; gap: 4px; }

.ch-fade-times {
  display: flex;
  gap: 6px;
  font-size: 9px;
  color: var(--text-dim);
}
.ch-fade-times label { display: flex; align-items: center; gap: 2px; }

.fade-in-time, .fade-out-time {
  width: 36px;
  background: var(--bg-base);
  border: 1px solid var(--border);
  border-radius: 3px;
  color: var(--text);
  font-size: 10px;
  padding: 1px 3px;
  text-align: center;
  font-family: var(--mono);
}

/* ── Transport Bar & Kompakt Çapraz Geçiş (Alt Kontrol Masası) ───────────────── */
#transport-bar {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 7px 14px;
  background: linear-gradient(180deg, #0d1222 0%, #080c16 100%);
  border-top: 2px solid #1a2540;
  box-shadow: 0 -4px 20px rgba(0,0,0,0.5);
  flex-shrink: 0;
  gap: 10px;
}

#transport-top-strip {
  display: flex;
  align-items: center;
  gap: 10px;
  flex: 1;
  min-width: 0;
}

#selected-track-info {
  display: flex;
  align-items: center;
  gap: 6px;
  min-width: 140px;
  max-width: 240px;
  overflow: hidden;
  background: rgba(0,0,0,0.35);
  padding: 6px 10px;
  border-radius: var(--radius);
  border: 1px solid rgba(255,255,255,0.06);
}
#selected-label {
  font-size: 8.5px;
  letter-spacing: 1.2px;
  color: var(--accent);
  font-weight: 800;
  flex-shrink: 0;
}
#selected-track-name {
  font-size: 11.5px;
  color: var(--text-bright);
  font-weight: 700;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

/* ── Kompakt Çapraz Geçiş (Crossfade) Barı ── */
#crossfade-panel {
  display: inline-flex;
  align-items: center;
  gap: 5px;
  background: rgba(20, 14, 36, 0.75);
  border: 1px solid rgba(201, 106, 245, 0.35);
  border-radius: 7px;
  padding: 4px 8px;
  flex-shrink: 0;
  box-shadow: 0 0 12px rgba(201, 106, 245, 0.12);
}

.xf-badge {
  font-size: 9.5px;
  font-weight: 900;
  letter-spacing: 0.8px;
  color: var(--purple);
  white-space: nowrap;
  padding-right: 2px;
}

#crossfade-panel select {
  background: var(--bg-base);
  border: 1px solid var(--border);
  border-radius: 5px;
  color: var(--text-bright);
  padding: 3px 5px;
  font-size: 11px;
  font-weight: 700;
  cursor: pointer;
  outline: none;
}
#crossfade-panel select:focus {
  border-color: var(--purple);
}

.xf-swap-btn {
  background: rgba(201, 106, 245, 0.14);
  border: 1px solid rgba(201, 106, 245, 0.4);
  border-radius: 5px;
  color: var(--purple);
  font-size: 12px;
  font-weight: 900;
  width: 24px;
  height: 24px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  cursor: pointer;
  transition: all 0.15s;
  padding: 0;
  flex-shrink: 0;
}
.xf-swap-btn:hover {
  background: var(--purple);
  color: #fff;
  box-shadow: 0 0 10px rgba(201, 106, 245, 0.5);
}

#btn-crossfade {
  padding: 5px 11px;
  background: linear-gradient(135deg, #6b21a8, var(--purple));
  border: 1px solid #d8b4fe;
  border-radius: 5px;
  color: #fff;
  font-weight: 800;
  font-size: 11px;
  cursor: pointer;
  letter-spacing: 0.5px;
  white-space: nowrap;
  transition: all 0.15s;
  box-shadow: 0 0 10px rgba(201, 106, 245, 0.35);
}
#btn-crossfade:hover {
  box-shadow: 0 0 18px rgba(201, 106, 245, 0.65);
  transform: translateY(-1px);
}
#btn-crossfade:active {
  transform: translateY(1px);
}

#transport-buttons {
  display: flex;
  align-items: center;
  gap: 7px;
  flex-shrink: 0;
}

.transport-btn {
  padding: 9px 16px;
  border: 1px solid transparent;
  border-radius: 8px;
  font-size: 12.5px;
  font-weight: 900;
  letter-spacing: 1px;
  cursor: pointer;
  transition: all .15s ease-out;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 6px;
  user-select: none;
  position: relative;
  overflow: hidden;
  box-shadow: 0 4px 10px rgba(0,0,0,0.3);
}
.transport-btn:active {
  transform: translateY(2px) scale(0.98);
  box-shadow: 0 1px 4px rgba(0,0,0,0.4);
}

/* 🟢 BAŞLAT (GO) - Canlı Sahne Butonu */
.go-btn {
  background: linear-gradient(135deg, #00e676 0%, #00b0ff 100%);
  color: #03140a;
  font-size: 16px;
  min-width: 140px;
  border-color: #00ffb3;
  box-shadow: 0 0 20px rgba(0,230,118,0.4), inset 0 1px 1px rgba(255,255,255,0.6);
  text-shadow: 0 1px 0 rgba(255,255,255,0.3);
}
.go-btn:hover {
  background: linear-gradient(135deg, #1de9b6 0%, #00e5ff 100%);
  box-shadow: 0 0 30px rgba(0,230,118,0.7), inset 0 1px 2px rgba(255,255,255,0.8);
  transform: translateY(-2px);
}

/* 🔵 SONRAKİ (NEXT) */
.next-btn {
  background: linear-gradient(135deg, #1a2a4a 0%, #204080 100%);
  color: #e0f2fe;
  border-color: #3b82f6;
  box-shadow: 0 0 12px rgba(59,130,246,0.2);
}
.next-btn:hover {
  background: linear-gradient(135deg, #2563eb 0%, #3b82f6 100%);
  color: #fff;
  border-color: #60a5fa;
  box-shadow: 0 0 20px rgba(59,130,246,0.5);
  transform: translateY(-2px);
}

/* 🟠 YAVAŞ SUSTUR (FADE OUT) */
.warning-btn {
  background: linear-gradient(135deg, #3d2605 0%, #7c4a03 100%);
  color: #fef08a;
  border-color: #f59e0b;
  box-shadow: 0 0 12px rgba(245,158,11,0.2);
}
.warning-btn:hover {
  background: linear-gradient(135deg, #d97706 0%, #f59e0b 100%);
  color: #000;
  box-shadow: 0 0 22px rgba(245,158,11,0.5);
  transform: translateY(-2px);
}

/* 🔴 TÜMÜNÜ DURDUR */
.danger-btn {
  background: linear-gradient(135deg, #420d0d 0%, #7f1d1d 100%);
  color: #fecaca;
  border-color: #ef4444;
  box-shadow: 0 0 12px rgba(239,68,68,0.2);
}
.danger-btn:hover {
  background: linear-gradient(135deg, #dc2626 0%, #ef4444 100%);
  color: #fff;
  box-shadow: 0 0 22px rgba(239,68,68,0.6);
  transform: translateY(-2px);
}

/* ⚡ KANALLARI TEMİZLE (Acil Temizlik) */
.panic-btn {
  background: linear-gradient(135deg, #3b0764 0%, #6b21a8 100%);
  color: #f5d0fe;
  border-color: #a855f7;
  box-shadow: 0 0 14px rgba(168,85,247,0.3);
}
.panic-btn:hover {
  background: linear-gradient(135deg, #7e22ce 0%, #a855f7 100%);
  color: #fff;
  box-shadow: 0 0 24px rgba(168,85,247,0.6);
  transform: translateY(-2px);
}

/* ── Toast ───────────────────────────────────────────── */
#toast-container {
  position: fixed;
  bottom: 76px;
  right: 16px;
  z-index: 13000;
  display: flex;
  flex-direction: column;
  gap: 5px;
  pointer-events: none;
}
.toast {
  padding: 9px 16px;
  border-radius: var(--radius);
  font-size: 12px;
  font-weight: 600;
  opacity: 0;
  transform: translateX(30px);
  transition: all .25s ease;
  max-width: 300px;
}
.toast.show { opacity: 1; transform: translateX(0); }
.toast.info    { background: #132a48; border-left: 3px solid var(--accent);  color: var(--text); }
.toast.success { background: #082818; border-left: 3px solid var(--accent2); color: var(--text); }
.toast.warning { background: #2e2000; border-left: 3px solid var(--warning); color: var(--text); }
.toast.error   { background: #2a0808; border-left: 3px solid var(--danger);  color: var(--text); }

/* ── Text Modal ──────────────────────────────────────── */
#modal-overlay {
  position: fixed;
  inset: 0;
  background: rgba(0,0,0,.78);
  z-index: 12000;
  display: flex;
  align-items: center;
  justify-content: center;
  backdrop-filter: blur(4px);
}
#modal-overlay.hidden { display: none; }

#modal-box {
  background: var(--bg-card);
  border: 1px solid var(--accent);
  border-radius: var(--radius-lg);
  padding: 22px 26px;
  min-width: 320px;
  box-shadow: 0 0 40px rgba(0,200,255,.2);
}
#modal-title { font-size: 13px; letter-spacing: 2px; color: var(--accent); margin-bottom: 12px; }
#modal-input {
  width: 100%;
  background: var(--bg-base);
  border: 1px solid var(--border);
  border-radius: var(--radius);
  color: var(--text-bright);
  font-size: 14px;
  padding: 7px 11px;
  outline: none;
  margin-bottom: 12px;
}
#modal-input:focus { border-color: var(--accent); }
.modal-buttons { display: flex; gap: 8px; justify-content: flex-end; }
#modal-ok, #modal-cancel {
  padding: 6px 16px;
  border-radius: var(--radius);
  font-size: 12px;
  font-weight: 700;
  cursor: pointer;
  border: none;
}
#modal-ok     { background: var(--accent); color: #000; }
#modal-cancel { background: var(--bg-base); color: var(--text-dim); border: 1px solid var(--border); }

/* ── Upload Modal ────────────────────────────────────── */
#upload-modal {
  position: fixed;
  inset: 0;
  background: rgba(0,0,0,.75);
  z-index: 8000;
  display: flex;
  align-items: center;
  justify-content: center;
  backdrop-filter: blur(4px);
}
#upload-modal.hidden { display: none; }

#upload-modal-box {
  background: var(--bg-card);
  border: 1px solid var(--purple);
  border-radius: var(--radius-lg);
  padding: 20px 24px;
  width: 520px;
  max-width: 95vw;
  box-shadow: 0 0 40px rgba(201,106,245,.2);
  display: flex;
  flex-direction: column;
  gap: 12px;
  max-height: 80vh;
  overflow-y: auto;
}

.upload-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
}
.upload-header h3 { font-size: 14px; letter-spacing: 2px; color: var(--purple); }
#btn-close-upload {
  background: transparent;
  border: none;
  color: var(--text-dim);
  font-size: 16px;
  cursor: pointer;
  padding: 2px 6px;
  border-radius: 4px;
  transition: color .15s;
}
#btn-close-upload:hover { color: var(--danger); }

.upload-server-row {
  display: flex;
  align-items: center;
  gap: 8px;
}
.upload-server-row label {
  font-size: 11px;
  color: var(--text-dim);
  white-space: nowrap;
}
#server-url-input {
  flex: 1;
  background: var(--bg-base);
  border: 1px solid var(--border);
  border-radius: var(--radius);
  color: var(--text);
  font-size: 12px;
  padding: 5px 9px;
  outline: none;
  font-family: var(--mono);
}
#server-url-input:focus { border-color: var(--purple); }
#btn-test-server {
  padding: 5px 12px;
  background: var(--bg-base);
  border: 1px solid var(--purple);
  border-radius: var(--radius);
  color: var(--purple);
  font-size: 11px;
  font-weight: 700;
  cursor: pointer;
  transition: all .15s;
}
#btn-test-server:hover { background: rgba(201,106,245,.1); }

.upload-info {
  background: rgba(201,106,245,.06);
  border: 1px solid rgba(201,106,245,.2);
  border-radius: var(--radius);
  padding: 8px 12px;
  font-size: 11px;
  color: var(--text-dim);
  line-height: 1.6;
}
.upload-info strong { color: var(--purple); }

.upload-actions { display: flex; gap: 8px; }
.upload-action-btn {
  flex: 1;
  padding: 7px 12px;
  background: linear-gradient(135deg, #3a1260, var(--purple));
  border: none;
  border-radius: var(--radius);
  color: #fff;
  font-size: 12px;
  font-weight: 700;
  cursor: pointer;
  transition: all .15s;
  letter-spacing: .5px;
}
.upload-action-btn:hover { box-shadow: 0 0 18px rgba(201,106,245,.4); transform: translateY(-1px); }

#upload-list {
  display: flex;
  flex-direction: column;
  gap: 5px;
  max-height: 240px;
  overflow-y: auto;
}

.upload-item {
  display: flex;
  align-items: center;
  gap: 8px;
  background: var(--bg-base);
  border: 1px solid var(--border);
  border-radius: var(--radius);
  padding: 6px 10px;
  font-size: 11px;
}
.upload-item-name { flex: 1; color: var(--text); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.upload-progress-wrap {
  width: 80px;
  height: 4px;
  background: var(--muted);
  border-radius: 2px;
  overflow: hidden;
  flex-shrink: 0;
}
.upload-progress-bar { height: 100%; background: var(--purple); border-radius: 2px; width: 0%; transition: width .2s; }
.upload-item-status {
  font-size: 10px;
  font-weight: 700;
  min-width: 48px;
  text-align: right;
}
.upload-item-status.done   { color: var(--accent2); }
.upload-item-status.error  { color: var(--danger); }
.upload-item-status.pending{ color: var(--text-dim); }

.highlight-menu-btn {
  border-color: var(--accent2) !important;
  color: var(--accent2) !important;
  background: rgba(0,255,179,0.08) !important;
}
.highlight-menu-btn:hover {
  background: rgba(0,255,179,0.18) !important;
  box-shadow: 0 0 14px rgba(0,255,179,0.4) !important;
}

/* Upload Modal Sekmeleri */
.upload-tabs {
  display: flex;
  gap: 6px;
  border-bottom: 1px solid var(--border);
  padding-bottom: 8px;
}
.upload-tab-btn {
  background: var(--bg-base);
  border: 1px solid var(--border);
  border-radius: var(--radius);
  color: var(--text-dim);
  font-size: 11px;
  font-weight: 700;
  padding: 6px 12px;
  cursor: pointer;
  transition: all 0.15s;
}
.upload-tab-btn:hover {
  color: var(--text-bright);
  border-color: var(--purple);
}
.upload-tab-btn.active {
  background: var(--purple);
  color: #fff;
  border-color: var(--purple);
  box-shadow: 0 0 12px rgba(201,106,245,0.4);
}
.upload-tab-content {
  display: none;
}
.upload-tab-content.active {
  display: flex;
  flex-direction: column;
  gap: 10px;
}

/* ── Utility ─────────────────────────────────────────── */
.hidden { display: none !important; }
input[type="number"]::-webkit-inner-spin-button { opacity: .4; }

/* ── Playlist → Kanal Sürükle-Bırak ─────────────────── */

/* Kanal kartı drag hedefi olduğunda */
.channel-card.ch-drop-target {
  outline: 2px dashed var(--accent2) !important;
  outline-offset: 2px;
  background: rgba(0,255,179,.08) !important;
  transition: none;
}

/* Sürükleme anında çocuk elementler fare olayını yakalamasın */
.channel-card.ch-drop-target * {
  pointer-events: none !important;
}

/* Sol yarı = CUE modu */
.channel-card[data-drop-mode="cue"].ch-drop-target {
  outline-color: var(--warning) !important;
  background: rgba(240,165,0,.08) !important;
}

/* Sağ yarı = OYNAT modu */
.channel-card[data-drop-mode="play"].ch-drop-target {
  outline-color: var(--accent2) !important;
  background: rgba(0,255,179,.08) !important;
}

/* CUE / OYNAT ipucu etiketi */
.ch-drop-hint {
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  padding: 10px 22px;
  border-radius: var(--radius-lg);
  font-size: 16px;
  font-weight: 900;
  letter-spacing: 2px;
  pointer-events: none;
  z-index: 50;
  white-space: nowrap;
  backdrop-filter: blur(8px);
}

.ch-drop-hint.cue {
  background: rgba(240,165,0,.9);
  color: #000;
  border: 2px solid var(--warning);
  box-shadow: 0 0 25px rgba(240,165,0,.6);
}

.ch-drop-hint.play {
  background: rgba(0,255,179,.9);
  color: #000;
  border: 2px solid var(--accent2);
  box-shadow: 0 0 25px rgba(0,255,179,.6);
}

/* ═══════════════════════════════════════════════════════
   MOBİL & DAR EKRANLAR İÇİN DUYARLI TASARIM (RESPONSIVE)
═══════════════════════════════════════════════════════ */

@media (max-width: 1280px) {
  #hotkeys-hint {
    display: none;
  }
}

@media (max-width: 1180px) and (min-width: 1025px) {
  #channels-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
}

@media (max-width: 1024px) {
  html, body {
    overflow-x: hidden;
    overflow-y: auto;
    height: auto;
    min-height: 100vh;
    min-height: 100dvh;
  }
  body {
    padding-bottom: 108px; /* Sabit alt barın (Geçiş + 5 Buton) içeriği kapatmaması için boşluk */
  }
  #mobile-view-tabs {
    display: flex;
    position: sticky;
    top: 0;
    z-index: 95;
  }
  #main-layout {
    flex-direction: column;
    overflow: visible;
    height: auto;
    flex: 1;
  }
  #playlist-section {
    width: 100%;
    min-width: 0;
    max-height: 440px;
    border-right: none;
    border-bottom: 2px solid var(--border);
  }
  #channels-section {
    width: 100%;
    overflow: visible;
  }
  /* Mobil Sekme Görünüm Modları */
  body[data-mobile-view="playlist"] #channels-section {
    display: none !important;
  }
  body[data-mobile-view="playlist"] #playlist-section {
    max-height: none;
    min-height: calc(100dvh - 235px);
    border-bottom: none;
  }
  body[data-mobile-view="channels"] #playlist-section {
    display: none !important;
  }
  body[data-mobile-view="channels"] #channels-section {
    min-height: calc(100dvh - 235px);
  }
  #channels-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
  #transport-bar {
    position: fixed;
    bottom: 0;
    left: 0;
    right: 0;
    width: 100%;
    z-index: 9500;
    flex-direction: column;
    background: rgba(8, 12, 22, 0.98);
    backdrop-filter: blur(12px);
    border-top: 2px solid #203054;
    box-shadow: 0 -6px 24px rgba(0,0,0,0.85);
    padding: 5px 10px max(7px, env(safe-area-inset-bottom));
    gap: 5px;
  }
  #transport-top-strip {
    width: 100%;
    justify-content: space-between;
    gap: 8px;
  }
  #selected-track-info {
    flex: 1;
    max-width: none;
    min-width: 0;
    padding: 4px 8px;
  }
  #transport-buttons {
    width: 100%;
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 6px;
  }
  #toast-container {
    bottom: 106px;
  }
}

@media (max-width: 768px) {
  body {
    padding-bottom: 104px;
  }
  #app-header {
    flex-wrap: wrap;
    padding: 6px 10px;
    gap: 6px;
    min-height: auto;
  }
  #header-left {
    flex: 1 1 auto;
    gap: 8px;
  }
  #header-logo {
    width: 34px;
    height: 34px;
  }
  #app-title {
    font-size: 14px;
    letter-spacing: 2px;
  }
  #app-subtitle {
    display: none;
  }
  #project-name {
    max-width: 145px;
    font-size: 11px;
  }
  #header-center {
    order: 3;
    width: 100%;
    justify-content: center;
    padding-top: 4px;
    border-top: 1px solid rgba(255,255,255,0.06);
  }
  #stage-time-center {
    width: 100%;
    justify-content: space-around;
    padding: 3px 8px;
    gap: 6px;
  }
  #live-clock-display,
  #stage-timer-display {
    font-size: 13.5px;
    min-width: 62px;
  }
  #header-right {
    flex: 0 0 auto;
    gap: 6px;
  }
  #header-app-actions .menu-btn {
    padding: 4px 7px;
    font-size: 9.5px;
  }
  #menu-bar {
    overflow-x: auto;
    flex-wrap: nowrap;
    -webkit-overflow-scrolling: touch;
    padding: 5px 8px;
    gap: 6px;
  }
  .menu-buttons-group {
    flex-shrink: 0;
    gap: 5px;
  }
  .menu-right-group {
    flex-shrink: 0;
  }
  .menu-btn {
    padding: 5px 9px;
    font-size: 10.5px;
    flex-shrink: 0;
  }
  #channels-grid {
    grid-template-columns: 1fr; /* Mobilde kanallar tek sütun */
    gap: 10px;
  }
  .channel-card {
    padding: 10px;
    gap: 7px;
  }
  .ch-btn {
    padding: 8px 4px;
    font-size: 11.5px;
  }
  .ch-loop-btn, .ch-solo-btn, .ch-mute-btn {
    padding: 4px 8px;
    font-size: 11px;
  }
  .ch-progress-wrap {
    height: 16px; /* Mobilde daha kolay dokunulabilir */
  }
  .ch-vol-slider::-webkit-slider-thumb {
    width: 18px;
    height: 18px;
  }
  .ch-vol-slider::-moz-range-thumb {
    width: 18px;
    height: 18px;
  }
  .btn-play-track, .btn-del-track {
    padding: 4px 7px;
    min-width: 28px;
    font-size: 12px;
  }

  /* Alt Kontrol Çubuğu: Üstte Çapraz Geçiş + Seçili Parça, Altta 3 Buton Tek Sırada */
  #transport-bar {
    position: fixed;
    bottom: 0;
    left: 0;
    right: 0;
    width: 100%;
    z-index: 9500;
    flex-direction: column;
    padding: 4px 6px max(6px, env(safe-area-inset-bottom));
    gap: 4px;
  }
  #transport-top-strip {
    width: 100%;
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 5px;
  }
  #selected-track-info {
    flex: 1 1 80px;
    min-width: 0;
    padding: 3px 6px;
  }
  #selected-label {
    font-size: 7px;
    letter-spacing: 0.5px;
  }
  #selected-track-name {
    font-size: 10px;
  }
  #crossfade-panel {
    flex: 0 0 auto;
    padding: 3px 5px;
    gap: 3px;
  }
  .xf-badge {
    font-size: 8.5px;
    letter-spacing: 0.3px;
  }
  #crossfade-panel select {
    padding: 2px 3px;
    font-size: 10px;
  }
  .xf-swap-btn {
    width: 20px;
    height: 20px;
    font-size: 10px;
  }
  #btn-crossfade {
    padding: 4px 7px;
    font-size: 9.5px;
    letter-spacing: 0.2px;
  }
  #transport-buttons {
    width: 100%;
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 5px;
  }
  .transport-btn,
  .warning-btn,
  .danger-btn,
  .panic-btn {
    grid-column: span 1 !important;
    padding: 7px 4px;
    font-size: 10.5px;
    font-weight: 800;
    letter-spacing: 0.3px;
    line-height: 1.15;
    min-width: 0;
    min-height: 36px;
    border-radius: 6px;
    text-align: center;
    white-space: normal;
    word-break: keep-all;
  }

  /* Quick Player Mobilde Esnek Yerleşim */
  #quick-player {
    flex-wrap: wrap;
    gap: 6px;
    padding: 7px 10px;
  }
  .qp-info-col {
    width: 100%;
    max-width: none;
    min-width: 0;
  }
  .qp-middle-col {
    width: 100%;
  }
  .qp-progress-wrap {
    height: 10px;
  }
  .qp-right-col {
    width: 100%;
    justify-content: space-between;
  }
  #qp-volume {
    width: 90px;
  }
  /* Oyunlar Modalı Mobil Uyum */
  #games-modal-box {
    width: 96%;
    max-height: 92vh;
    max-height: 92dvh;
  }
  .game-card {
    flex-direction: column;
    align-items: flex-start;
  }
  .game-card-actions {
    width: 100%;
    display: flex;
  }
  .btn-play-game {
    flex: 1;
    text-align: center;
  }
}

@media (max-width: 480px) {
  #app-title {
    font-size: 13px;
    letter-spacing: 1.5px;
  }
  #master-volume {
    width: 56px;
  }
  .master-label {
    display: none;
  }
  #selected-label {
    display: none;
  }
  .xf-badge {
    display: none;
  }
  .col-dur {
    width: 44px;
  }
  .col-actions {
    width: 72px;
  }
  .track-name-cell {
    max-width: 175px;
  }
  #playlist-search {
    font-size: 11px;
  }
  #btn-add-music {
    padding: 6px 9px;
    font-size: 10px;
  }
  #transport-buttons {
    gap: 4px;
  }
  .transport-btn,
  .warning-btn,
  .danger-btn,
  .panic-btn {
    font-size: 9.5px;
    padding: 6px 3px;
    min-height: 34px;
    gap: 3px;
  }
  .games-url-input-wrap {
    min-width: 100%;
  }
  .games-toolbar-btns {
    width: 100%;
    display: flex;
    gap: 6px;
  }
  .games-toolbar-btns button {
    flex: 1;
  }
}

/* ═══════════════════════════════════════════════════════
   SUNUCU OYUN KÜTÜPHANESİ MODALI (GAMES MODAL)
═══════════════════════════════════════════════════════ */
.games-menu-btn {
  border-color: #ffd600 !important;
  color: #ffd600 !important;
  background: rgba(255, 214, 0, 0.08) !important;
  font-weight: 800 !important;
}
.games-menu-btn:hover {
  background: rgba(255, 214, 0, 0.2) !important;
  box-shadow: 0 0 16px rgba(255, 214, 0, 0.5) !important;
}

#games-modal {
  position: fixed;
  inset: 0;
  background: rgba(0, 0, 0, 0.85);
  backdrop-filter: blur(8px);
  z-index: 10000;
  display: flex;
  align-items: center;
  justify-content: center;
}
#games-modal.hidden { display: none !important; }

#games-modal-box {
  background: #0f1424;
  border: 1px solid var(--accent);
  border-radius: var(--radius-lg);
  width: 92%;
  max-width: 800px;
  max-height: 86vh;
  display: flex;
  flex-direction: column;
  box-shadow: 0 0 40px rgba(0, 200, 255, 0.25);
  overflow: hidden;
}

.games-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 12px 18px;
  background: #090d18;
  border-bottom: 1px solid var(--border);
}
.games-header-left h3 {
  font-size: 16px;
  color: var(--accent);
  font-weight: 800;
  letter-spacing: 0.5px;
}
.games-header-sub {
  font-size: 10px;
  color: var(--text-dim);
}
#btn-close-games {
  background: transparent;
  border: none;
  color: var(--text-dim);
  font-size: 18px;
  cursor: pointer;
  padding: 4px 8px;
}
#btn-close-games:hover { color: #fff; }

.games-header-right {
  display: flex;
  align-items: center;
  gap: 10px;
}

.games-doc-link {
  display: inline-flex;
  align-items: center;
  gap: 5px;
  padding: 5px 10px;
  border-radius: 6px;
  background: rgba(0, 200, 255, 0.1);
  border: 1px solid rgba(0, 200, 255, 0.4);
  color: var(--accent);
  font-size: 11px;
  font-weight: 800;
  text-decoration: none;
  transition: all 0.15s;
  white-space: nowrap;
}
.games-doc-link:hover {
  background: var(--accent);
  color: #031018;
  box-shadow: 0 0 12px rgba(0, 200, 255, 0.4);
}

.games-toolbar {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 10px 18px;
  background: #0c111e;
  border-bottom: 1px solid var(--border);
  gap: 10px;
  flex-wrap: wrap;
}
.games-url-input-wrap {
  display: flex;
  align-items: center;
  gap: 6px;
  flex: 1.5;
  min-width: 240px;
}
.games-url-input-wrap label,
.games-pass-input-wrap label {
  font-size: 10px;
  font-weight: 700;
  color: var(--text-dim);
  white-space: nowrap;
}
#games-server-url {
  flex: 1;
  background: var(--bg-base);
  border: 1px solid var(--border);
  border-radius: var(--radius);
  color: var(--text-bright);
  font-size: 11px;
  padding: 6px 8px;
  outline: none;
}
#games-server-url:focus { border-color: var(--accent); }

.games-pass-input-wrap {
  display: flex;
  align-items: center;
  gap: 6px;
  min-width: 185px;
}
#games-server-pass {
  width: 125px;
  background: var(--bg-base);
  border: 1px solid var(--border);
  border-radius: var(--radius);
  color: var(--warning);
  font-family: var(--mono);
  font-size: 11px;
  font-weight: 700;
  padding: 6px 8px;
  outline: none;
}
#games-server-pass:focus { border-color: var(--warning); }

.games-pass-toggle-btn {
  background: var(--bg-card);
  border: 1px solid var(--border);
  border-radius: var(--radius);
  color: var(--text-dim);
  font-size: 11px;
  padding: 5px 7px;
  cursor: pointer;
  transition: all 0.15s;
}
.games-pass-toggle-btn:hover {
  border-color: var(--accent);
  color: var(--text-bright);
}

.games-toolbar-btns {
  display: flex;
  align-items: center;
  gap: 6px;
  flex-wrap: wrap;
}

.games-secondary-btn {
  padding: 6px 10px;
  background: var(--bg-card);
  border: 1px solid var(--border);
  border-radius: var(--radius);
  color: var(--text);
  font-size: 11px;
  font-weight: 700;
  cursor: pointer;
  transition: all 0.15s;
}
.games-secondary-btn:hover {
  border-color: var(--accent);
  color: var(--accent);
}
.games-secondary-btn.danger-outline {
  border-color: rgba(239, 68, 68, 0.45);
  color: #f87171;
}
.games-secondary-btn.danger-outline:hover {
  background: var(--danger);
  border-color: var(--danger);
  color: #fff;
}
.games-secondary-btn.hidden {
  display: none !important;
}

.games-action-btn {
  padding: 6px 14px;
  background: linear-gradient(135deg, #162447, #1f4068);
  border: 1px solid var(--accent);
  border-radius: var(--radius);
  color: var(--accent);
  font-size: 11px;
  font-weight: 800;
  cursor: pointer;
  transition: all 0.15s;
}
.games-action-btn:hover {
  background: var(--accent);
  color: #000;
  box-shadow: 0 0 14px rgba(0, 200, 255, 0.4);
}
.games-action-btn.connected {
  border-color: var(--accent2);
  color: var(--accent2);
  background: rgba(0, 255, 179, 0.1);
}
.games-action-btn.connected:hover {
  background: var(--accent2);
  color: #02140a;
}

.games-section-title {
  padding: 7px 18px;
  background: #0b1020;
  border-bottom: 1px solid var(--border);
  font-size: 10px;
  font-weight: 800;
  letter-spacing: 1.5px;
  color: var(--accent);
  display: flex;
  align-items: center;
  justify-content: space-between;
}
.games-section-title.connected {
  color: var(--accent2);
  background: rgba(0, 255, 179, 0.06);
}

#offline-games-section {
  border-bottom: 2px solid var(--border);
  background: rgba(0, 255, 179, 0.02);
  max-height: 185px;
  overflow-y: auto;
}
#offline-games-section .games-section-title {
  color: var(--accent2);
  background: rgba(0, 255, 179, 0.06);
}
#offline-games-list {
  padding: 10px 18px;
  display: flex;
  flex-direction: column;
  gap: 8px;
}

/* İndirme Durum Çubuğu */
#games-download-progress-wrap {
  padding: 8px 18px;
  background: #111a30;
  border-bottom: 1px solid var(--border);
}
.games-progress-info {
  display: flex;
  justify-content: space-between;
  font-size: 11px;
  color: var(--accent2);
  font-weight: 700;
  margin-bottom: 4px;
}
.games-progress-bar-bg {
  width: 100%;
  height: 8px;
  background: #060910;
  border-radius: 4px;
  overflow: hidden;
  border: 1px solid var(--border);
}
#games-progress-bar-fill {
  height: 100%;
  width: 0%;
  background: linear-gradient(to right, #00c8ff, #00ffb3);
  transition: width 0.1s linear;
}

/* Oyunlar Kart Listesi */
#games-list-container {
  flex: 1;
  overflow-y: auto;
  padding: 14px 18px;
  display: flex;
  flex-direction: column;
  gap: 10px;
  min-height: 180px;
}

.games-loading {
  text-align: center;
  color: var(--text-dim);
  font-size: 13px;
  padding: 36px 20px;
}

.game-card {
  display: flex;
  align-items: center;
  justify-content: space-between;
  background: #13182a;
  border: 1px solid var(--border);
  border-radius: var(--radius);
  padding: 10px 14px;
  transition: all 0.15s;
  gap: 12px;
}
.game-card:hover {
  border-color: var(--accent);
  background: #171e35;
  box-shadow: 0 0 14px rgba(0, 200, 255, 0.15);
}
.game-card.offline-card {
  border-left: 3px solid var(--accent2);
}

.game-card-left {
  display: flex;
  flex-direction: column;
  gap: 3px;
  flex: 1;
  overflow: hidden;
}
.game-title {
  font-size: 14px;
  font-weight: 800;
  color: var(--text-bright);
}
.game-meta {
  font-size: 10px;
  color: var(--text-dim);
  display: flex;
  flex-wrap: wrap;
  gap: 10px;
}
.game-meta span { display: inline-flex; align-items: center; gap: 3px; }

.game-card-actions {
  display: flex;
  align-items: center;
  gap: 8px;
  flex-shrink: 0;
}

.btn-play-game {
  padding: 7px 14px;
  background: linear-gradient(135deg, #00e676, #00b0ff);
  border: none;
  border-radius: var(--radius);
  color: #03140a;
  font-size: 12px;
  font-weight: 900;
  letter-spacing: 0.5px;
  cursor: pointer;
  box-shadow: 0 0 12px rgba(0, 230, 118, 0.3);
  transition: all 0.15s;
}
.btn-play-game:hover {
  box-shadow: 0 0 20px rgba(0, 230, 118, 0.6);
  transform: translateY(-1px);
}

.btn-download-game {
  padding: 7px 10px;
  background: #1f2740;
  border: 1px solid var(--border);
  border-radius: var(--radius);
  color: var(--text);
  font-size: 11px;
  text-decoration: none;
  cursor: pointer;
  transition: all 0.15s;
}
.btn-download-game:hover {
  background: var(--border);
  color: #fff;
}

.btn-del-offline-game {
  padding: 7px 10px;
  background: rgba(224, 53, 53, 0.12);
  border: 1px solid rgba(224, 53, 53, 0.4);
  border-radius: var(--radius);
  color: var(--danger);
  font-size: 11px;
  font-weight: 700;
  cursor: pointer;
  transition: all 0.15s;
}
.btn-del-offline-game:hover {
  background: var(--danger);
  color: #fff;
}

.games-footer-hint {
  padding: 10px 18px;
  background: #090d18;
  border-top: 1px solid var(--border);
  font-size: 10px;
  color: var(--text-dim);
  line-height: 1.5;
}
.games-footer-hint code {
  color: var(--accent2);
}

/* ════════════════════════════════════════════════════════
   UYGULAMAYI KUR (PWA) & WINDOWS İÇİN İNDİR (ANA SES YANI)
════════════════════════════════════════════════════════ */
.pwa-install-wrap {
  position: relative;
  display: inline-flex;
  align-items: center;
}
.pwa-install-wrap.hidden {
  display: none !important;
}

.install-pwa-btn {
  display: inline-flex;
  align-items: center;
  gap: 5px;
  padding: 5px 11px;
  border-radius: 6px;
  border: 1px solid rgba(0, 230, 118, 0.55) !important;
  background: rgba(0, 230, 118, 0.12) !important;
  color: #b9ffd9 !important;
  font-size: 11px;
  font-weight: 800;
  letter-spacing: 0.3px;
  white-space: nowrap;
  cursor: pointer;
  transition: all 0.15s ease;
}
.install-pwa-btn:hover {
  border-color: var(--accent2) !important;
  background: rgba(0, 230, 118, 0.24) !important;
  color: #ffffff !important;
  box-shadow: 0 0 14px rgba(0, 230, 118, 0.35);
  transform: translateY(-1px);
}

/* Açılır Hızlı Uygulama / Eklenti Kurulum Bildirimi (Popover) */
.pwa-install-popover {
  position: absolute;
  top: calc(100% + 10px);
  right: 0;
  width: 340px;
  background: linear-gradient(165deg, #131b2e 0%, #0b101d 100%);
  border: 1px solid var(--accent2);
  border-radius: 10px;
  padding: 13px 14px;
  box-shadow: 0 16px 42px rgba(0, 0, 0, 0.85), 0 0 24px rgba(0, 230, 118, 0.22);
  z-index: 9200;
  animation: pwaPopoverSlideIn 0.22s ease-out;
}
.pwa-install-popover::before {
  content: '';
  position: absolute;
  top: -6px;
  right: 28px;
  width: 10px;
  height: 10px;
  background: #131b2e;
  border-top: 1px solid var(--accent2);
  border-left: 1px solid var(--accent2);
  transform: rotate(45deg);
}
.pwa-install-popover.hidden {
  display: none !important;
}

@keyframes pwaPopoverSlideIn {
  from {
    opacity: 0;
    transform: translateY(-8px);
  }
  to {
    opacity: 1;
    transform: translateY(0);
  }
}

.pwa-popover-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 8px;
  margin-bottom: 6px;
}
.pwa-popover-badge {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  padding: 2px 7px;
  border-radius: 99px;
  background: rgba(0, 230, 118, 0.15);
  border: 1px solid rgba(0, 230, 118, 0.4);
  color: var(--accent2);
  font-size: 9px;
  font-weight: 900;
  letter-spacing: 0.6px;
}
.pwa-popover-close {
  background: rgba(255, 255, 255, 0.05);
  border: 1px solid var(--border);
  color: var(--text-dim);
  width: 22px;
  height: 22px;
  border-radius: 5px;
  font-size: 11px;
  font-weight: 800;
  cursor: pointer;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  transition: all 0.15s;
}
.pwa-popover-close:hover {
  background: var(--danger);
  border-color: var(--danger);
  color: #fff;
}

.pwa-popover-title {
  font-size: 12.5px;
  font-weight: 800;
  color: #ffffff;
  margin-bottom: 5px;
}
.pwa-popover-desc {
  font-size: 11px;
  color: var(--text-dim);
  line-height: 1.45;
  margin-bottom: 11px;
}
.pwa-popover-desc strong {
  color: var(--accent);
}

.pwa-popover-actions {
  display: flex;
  align-items: center;
  gap: 8px;
}
.pwa-popover-install-btn {
  flex: 1;
  padding: 7px 12px;
  border: none;
  border-radius: 6px;
  background: linear-gradient(135deg, #00e676, #00b0ff);
  color: #03180c;
  font-size: 11.5px;
  font-weight: 900;
  letter-spacing: 0.3px;
  cursor: pointer;
  box-shadow: 0 4px 14px rgba(0, 230, 118, 0.3);
  transition: all 0.15s;
}
.pwa-popover-install-btn:hover {
  transform: translateY(-1px);
  box-shadow: 0 6px 18px rgba(0, 230, 118, 0.45);
}
.pwa-popover-later-btn {
  padding: 7px 11px;
  border-radius: 6px;
  border: 1px solid var(--border);
  background: #141c2f;
  color: var(--text-dim);
  font-size: 11px;
  font-weight: 700;
  cursor: pointer;
  transition: all 0.15s;
}
.pwa-popover-later-btn:hover {
  border-color: var(--text-dim);
  color: #fff;
}

.windows-download-btn {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  padding: 5px 11px;
  border-radius: 6px;
  border: 1px solid rgba(0, 200, 255, 0.55) !important;
  background: linear-gradient(135deg, rgba(0, 200, 255, 0.14), rgba(201, 106, 245, 0.14)) !important;
  color: #e8f7ff !important;
  font-size: 11px;
  font-weight: 800;
  letter-spacing: 0.4px;
  text-decoration: none;
  white-space: nowrap;
  cursor: pointer;
  transition: all 0.15s ease;
}
.windows-download-btn:hover {
  border-color: var(--accent) !important;
  background: linear-gradient(135deg, rgba(0, 200, 255, 0.28), rgba(201, 106, 245, 0.25)) !important;
  color: #ffffff !important;
  box-shadow: 0 0 14px rgba(0, 200, 255, 0.35);
  transform: translateY(-1px);
}

/* Mobilde ve dokunmatik cihazlarda Windows için İndir, Reklam Alanı ve açılır geniş ekran bildirimini gizle */
@media (max-width: 1024px) {
  #plato-ad-slot {
    display: none !important;
  }
}

@media (max-width: 1120px), (hover: none) and (pointer: coarse) {
  #btn-windows-download,
  .windows-download-btn,
  #pwa-install-popover,
  #plato-ad-slot {
    display: none !important;
  }
}

/* Uygulama zaten standalone (kurulu) çalışıyorsa kurulum butonlarını gizle */
@media (display-mode: standalone), (display-mode: window-controls-overlay), (display-mode: minimal-ui) {
  #pwa-install-wrap,
  #btn-install-pwa,
  #pwa-install-popover {
    display: none !important;
  }
}

body.pwa-app-installed #pwa-install-wrap,
body.pwa-app-installed #btn-install-pwa,
body.pwa-app-installed #pwa-install-popover,
#pwa-install-wrap.hidden {
  display: none !important;
}

body.windows-app-installed #btn-windows-download,
body.windows-app-installed .windows-download-btn,
#btn-windows-download.hidden {
  display: none !important;
}





