  :root{
    --bg: #ffffff;
    --bg-panel: #f7f8fa;
    --bg-elev: #eef0f3;
    --line: #dfe3e8;
    --text: #1a1d23;
    --text-dim: #6b7280;
    --accent: #159c72;
    --accent-dim: #0d6b4f;
    --danger: #d9483a;
    --radius: 10px;
  }
  *{box-sizing:border-box;}
  html,body{height:100%;}
  body{
    margin:0;
    background:var(--bg);
    color:var(--text);
    font-family: -apple-system, "Segoe UI", "Pretendard", "Noto Sans KR", sans-serif;
    display:flex;
    flex-direction:column;
    height:100vh;
    height:100dvh; /* 모바일 브라우저 주소창/도구모음이 뜨고 사라져도 실제 보이는 높이를 정확히 잡기 위함(이게 없으면 재생바가 화면 아래로 밀려 안 보일 수 있음) */
    overflow:hidden;
  }

  /* --- Top bar --- */
  header{
    display:flex;
    align-items:center;
    justify-content:space-between;
    padding:14px 20px;
    border-bottom:1px solid var(--line);
    background:var(--bg-panel);
    flex-shrink:0;
  }
  .brand{
    display:flex;
    align-items:baseline;
    gap:8px;
    cursor:pointer;
    flex-shrink:0;
  }
  .brand:hover .n, .brand:hover .g{ opacity:0.8; }
  .brand .n{ font-weight:700; font-size:17px; letter-spacing:-0.01em; }
  .brand .arrow{ color:var(--text-dim); font-size:14px; }
  .brand .g{ font-weight:700; font-size:17px; color:var(--accent); }
  .status{ font-size:12px; color:var(--text-dim); display:flex; align-items:center; gap:6px; }
  .dot{ width:7px; height:7px; border-radius:50%; background:var(--text-dim); }
  .dot.on{ background:var(--accent); }
  .dot.err{ background:var(--danger); }
  #castBtn, #airplayBtn, #dlnaBtn, #serverBtn{
    background:none; border:1px solid var(--line); color:var(--text);
    border-radius:8px; padding:8px 14px; cursor:pointer; font-size:13px;
    display:flex; align-items:center; gap:8px;
  }
  #castBtn:hover, #airplayBtn:hover, #dlnaBtn:hover, #serverBtn:hover{ border-color:var(--accent); color:var(--accent); }
  #castBtn svg, #airplayBtn svg, #dlnaBtn svg, #serverBtn svg{ width:16px; height:16px; fill:currentColor; }

  /* --- Layout --- */
  main{ flex:1; display:flex; min-height:0; }
  .sidebar{
    width:300px; flex-shrink:0; border-right:1px solid var(--line);
    background:var(--bg-panel); padding:18px; overflow-y:auto;
    transition:width 0.2s ease;
  }
  .sidebar.collapsed{ width:170px; }
  .sidebar h2{ font-size:12px; text-transform:none; color:var(--text-dim); margin:0 0 12px; font-weight:600; }
  .field{ margin-bottom:10px; }
  .field label{ display:block; font-size:12px; color:var(--text-dim); margin-bottom:5px; }
  .field input{
    width:100%; padding:9px 10px; border-radius:7px; border:1px solid var(--line);
    background:var(--bg-elev); color:var(--text); font-size:13px;
  }
  .field input:focus{ outline:none; border-color:var(--accent); }
  .btn{
    width:100%; padding:10px; border-radius:7px; border:none;
    background:var(--accent); color:#0b1210; font-weight:600; font-size:13px;
    cursor:pointer; margin-top:6px;
  }
  .btn:hover{ background:#5fe0b3; }
  .btn.secondary{ background:var(--bg-elev); color:var(--text); border:1px solid var(--line); }
  .btn.secondary:hover{ border-color:var(--accent); color:var(--accent); }
  .msg{ font-size:12px; margin-top:8px; line-height:1.5; }
  .msg.err{ color:var(--danger); }
  .msg.ok{ color:var(--accent); }
  .loginFooter{
    text-align:center; font-size:11px; color:var(--text-dim); opacity:0.6;
    margin-top:24px; padding-top:14px; border-top:1px solid var(--line);
  }

  .content{ flex:1; overflow-y:auto; padding:20px 26px; min-width:0; }

  .headerSearch{ display:flex; gap:8px; flex:1; max-width:420px; margin:0 20px; }
  .headerSearch input{
    flex:1; padding:8px 12px; border-radius:8px; border:1px solid var(--line);
    background:var(--bg-elev); color:var(--text); font-size:13px; min-width:0;
  }
  .headerSearch input:focus{ outline:none; border-color:var(--accent); }
  .headerSearch button{
    padding:8px 14px; border-radius:8px; border:1px solid var(--line);
    background:var(--bg-elev); color:var(--text); cursor:pointer; font-size:12px; flex-shrink:0;
  }
  .headerSearch button:hover{ border-color:var(--accent); color:var(--accent); }

  .searchRow{ display:flex; gap:10px; margin-bottom:18px; }
  .searchRow input{
    flex:1; padding:10px 12px; border-radius:8px; border:1px solid var(--line);
    background:var(--bg-elev); color:var(--text); font-size:14px;
  }
  .searchRow input:focus{ outline:none; border-color:var(--accent); }
  .searchRow button{
    padding:10px 16px; border-radius:8px; border:1px solid var(--line);
    background:var(--bg-elev); color:var(--text); cursor:pointer; font-size:13px;
  }

  .tabRow{ display:flex; gap:8px; margin-bottom:16px; flex-wrap:wrap; }
  .tabRow button{
    padding:8px 16px; border-radius:20px; border:1px solid var(--line);
    background:var(--bg-elev); color:var(--text-dim); cursor:pointer; font-size:13px;
  }
  .tabRow button.active{ background:var(--accent); color:#0b1210; border-color:var(--accent); font-weight:600; }
  .tabRow button:not(.active):hover{ border-color:var(--accent); color:var(--accent); }

  .empty{ color:var(--text-dim); font-size:13px; margin-top:40px; text-align:center; }

  .section-title{ font-size:12px; color:var(--text-dim); margin:22px 0 10px; }
  .section-title:first-child{ margin-top:0; }

  .track{
    display:flex; align-items:center; gap:12px; padding:10px 12px;
    border-radius:8px; cursor:default;
  }
  .track:hover{ background:var(--bg-elev); }
  .track .num{ width:22px; color:var(--text-dim); font-size:12px; text-align:right; flex-shrink:0; }
  .track .meta{ flex:1; min-width:0; }
  .track .title{ font-size:14px; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
  .track .sub{ font-size:12px; color:var(--text-dim); overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
  .track .dur{ font-size:12px; color:var(--text-dim); flex-shrink:0; width:40px; text-align:right; }
  .playCountBadge{
    font-size:11px; color:var(--accent); background:var(--bg-elev); border:1px solid var(--line);
    border-radius:10px; padding:2px 8px; flex-shrink:0; white-space:nowrap;
  }
  .track .playBtn{
    flex-shrink:0; width:30px; height:30px; border-radius:50%; border:1px solid var(--line);
    background:var(--bg-elev); color:var(--text); cursor:pointer; display:flex;
    align-items:center; justify-content:center;
  }
  .track .playBtn:hover{ border-color:var(--accent); color:var(--accent); }
  .track.playing .title{ color:var(--accent); }
  .track.playing .playBtn{ border-color:var(--accent); color:var(--accent); }

  .heartBtn{
    background:none; border:none; padding:0; cursor:pointer;
    color:var(--text-dim); display:flex; align-items:center; justify-content:center;
    flex-shrink:0;
  }
  .heartBtn svg{ width:16px; height:16px; fill:currentColor; }
  .heartBtn:hover{ color:var(--danger); }
  .heartBtn.active{ color:var(--danger); }
  .heartBtn:disabled{ opacity:0.5; cursor:default; }

  .album-card .heartBtn{
    position:absolute; top:6px; right:6px; width:26px; height:26px;
    background:rgba(18,21,26,0.7); border-radius:50%; z-index:3;
  }
  .album-card .heartBtn svg{ width:14px; height:14px; }

  .album-card{
    display:inline-flex; flex-direction:column; width:150px; margin:0 14px 20px 0;
    cursor:pointer; vertical-align:top;
  }
  .album-card .cover{
    width:150px; height:150px; border-radius:8px; background:var(--bg-elev);
    display:flex; align-items:center; justify-content:center; color:var(--text-dim);
    font-size:11px; overflow:hidden; margin-bottom:8px; border:1px solid var(--line);
    position:relative;
  }
  .album-card .cover img{ width:100%; height:100%; object-fit:cover; }
  .album-card .name{ font-size:13px; line-height:1.3; }
  .album-card .artist{ font-size:12px; color:var(--text-dim); margin-top:2px; }
  .albumGrid{ display:flex; flex-wrap:wrap; }

  .albumGridWrap{ position:relative; }
  .pgArrow{
    position:absolute; top:50%; transform:translateY(-50%); z-index:5;
    width:36px; height:36px; border-radius:50%; border:1px solid var(--line);
    background:var(--bg-panel); color:var(--text); cursor:pointer;
    font-size:20px; line-height:1; display:flex; align-items:center; justify-content:center;
    box-shadow:0 4px 12px rgba(0,0,0,0.4); opacity:0.85;
  }
  .pgArrow:hover{ border-color:var(--accent); color:var(--accent); opacity:1; }
  .pgArrowLeft{ left:-6px; }
  .pgArrowRight{ right:-6px; }
  @media (max-width: 780px){
    .pgArrow{ width:30px; height:30px; font-size:16px; }
    .pgArrowLeft{ left:-2px; }
    .pgArrowRight{ right:-2px; }
  }

  .coverPlay{
    position:absolute; inset:0; display:flex; align-items:center; justify-content:center;
    background:rgba(10,12,15,0); opacity:0; transition:opacity 0.15s, background 0.15s;
    color:#fff; cursor:pointer;
  }
  .coverPlay svg{ width:36px; height:36px; fill:currentColor; filter:drop-shadow(0 1px 4px rgba(0,0,0,0.6)); }
  .album-card .cover:hover .coverPlay{ opacity:1; background:rgba(10,12,15,0.45); }

  .backRow{ display:flex; align-items:center; gap:10px; margin-bottom:16px; }
  .backRow button{
    background:none; border:1px solid var(--line); color:var(--text-dim);
    border-radius:7px; padding:6px 12px; cursor:pointer; font-size:12px;
  }
  .backRow button:hover{ color:var(--text); border-color:var(--accent); }
  .backRow h1{ font-size:18px; margin:0; flex:1; }
  .playAllBtn{
    background:var(--accent); color:#0b1210; border:none; font-weight:600;
    border-radius:7px; padding:7px 14px; cursor:pointer; font-size:12px;
    display:flex; align-items:center; gap:6px;
  }
  .playAllBtn:hover{ background:#5fe0b3; }
  .playAllBtn svg{ width:13px; height:13px; fill:currentColor; }
  .playAllBtn.secondary{
    background:var(--bg-elev); color:var(--text); border:1px solid var(--line);
  }
  .playAllBtn.secondary:hover{ background:var(--bg-elev); border-color:var(--accent); color:var(--accent); }

  /* 앨범 상세 페이지 헤더 (Symphonium 스타일) */
  .albumDetailHeader{ margin-bottom:20px; }
  .albumDetailBack{
    background:none; border:1px solid var(--line); color:var(--text-dim);
    border-radius:7px; padding:6px 12px; cursor:pointer; font-size:12px; margin-bottom:16px;
  }
  .albumDetailBack:hover{ color:var(--text); border-color:var(--accent); }
  .albumDetailTop{ display:flex; gap:20px; align-items:flex-start; }
  .albumDetailCoverWrap{ flex-shrink:0; }
  .albumDetailCover{
    width:160px; height:160px; border-radius:10px; object-fit:cover;
    background:var(--bg-elev); border:1px solid var(--line); box-shadow:0 8px 24px rgba(0,0,0,0.4);
  }
  .albumDetailCoverEmpty{ display:flex; align-items:center; justify-content:center; color:var(--text-dim); font-size:32px; }
  .albumDetailInfo{ min-width:0; padding-top:4px; }
  .albumDetailTitle{ font-size:22px; font-weight:700; line-height:1.25; margin-bottom:6px; }
  .albumDetailArtist{ font-size:15px; color:var(--text-dim); margin-bottom:6px; }
  .albumDetailArtist .trackArtist:hover{ color:var(--accent); text-decoration:underline; }
  .albumDetailMeta{ font-size:12px; color:var(--text-dim); margin-bottom:14px; }
  .albumDetailActions{ display:flex; align-items:center; gap:10px; flex-wrap:wrap; }
  .albumDetailActions .heartBtn{
    width:36px; height:36px; border-radius:50%; border:1px solid var(--line);
    background:var(--bg-elev);
  }
  .albumDetailActions .heartBtn svg{ width:16px; height:16px; }

  .searchJumpNav{ display:flex; gap:8px; margin-bottom:18px; }
  .searchJumpNav button{
    padding:8px 16px; border-radius:20px; border:1px solid var(--line);
    background:var(--bg-elev); color:var(--text); cursor:pointer; font-size:13px;
  }
  .searchJumpNav button:hover{ border-color:var(--accent); color:var(--accent); }

  .jumpBtn{
    background:none; border:1px solid var(--line); color:var(--text-dim);
    border-radius:6px; padding:5px 10px; cursor:pointer; font-size:11px;
  }
  .jumpBtn:hover{ border-color:var(--accent); color:var(--accent); }

  .pagination{
    display:flex; align-items:center; justify-content:center; gap:16px;
    margin:24px 0 8px; padding-top:16px; border-top:1px solid var(--line);
  }
  .pagination button{
    background:var(--bg-elev); border:1px solid var(--line); color:var(--text);
    border-radius:7px; padding:7px 14px; cursor:pointer; font-size:13px;
  }
  .pagination button:hover:not(:disabled){ border-color:var(--accent); color:var(--accent); }
  .pagination button:disabled{ opacity:0.4; cursor:default; }
  .pagination .pgInfo{ font-size:12px; color:var(--text-dim); }

  /* --- Now playing bar --- */
  .player{
    flex-shrink:0; border-top:1px solid var(--line); background:var(--bg-panel);
    padding:12px 20px; padding-bottom:calc(12px + env(safe-area-inset-bottom));
    display:flex; flex-direction:column; gap:8px;
    min-height:66px; position:relative;
  }
  .player .mainRow{ display:flex; align-items:center; gap:16px; width:100%; }
  .player .info{ flex:1; min-width:0; }
  .player .info .t{ font-size:13px; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
  .player .info .s{ font-size:12px; color:var(--text-dim); overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
  .npArtist{ cursor:pointer; }
  .npArtist:hover{ color:var(--accent); text-decoration:underline; }
  .trackArtist{ cursor:pointer; }
  .trackArtist:hover{ color:var(--accent); text-decoration:underline; }
  .trackAlbum{ cursor:pointer; }
  .trackAlbum:hover{ color:var(--accent); text-decoration:underline; }
  .player .target{
    font-size:11px; padding:4px 10px; border-radius:20px; border:1px solid var(--line);
    color:var(--text-dim); flex-shrink:0;
  }
  .player .target.casting{ border-color:var(--accent); color:var(--accent); }
  .player .ctrls{ display:flex; align-items:center; gap:10px; flex-shrink:0; }
  .player .ctrls button{
    width:36px; height:36px; border-radius:50%; border:1px solid var(--line);
    background:var(--bg-elev); color:var(--text); cursor:pointer;
    display:flex; align-items:center; justify-content:center;
  }
  .player .ctrls button:hover{ border-color:var(--accent); color:var(--accent); }
  .player .ctrls svg{ width:16px; height:16px; fill:currentColor; }
  .player.idle .info .t{ color:var(--text-dim); }

  .npCover{
    width:44px; height:44px; border-radius:6px; object-fit:cover;
    background:var(--bg-elev); border:1px solid var(--line); flex-shrink:0;
  }
  .player.idle .npCover{ opacity:0.4; }

  #lyricsBtn.has-lyrics{ border-color:var(--accent); color:var(--accent); }

  /* 진행바/시간 */
  .progressRow{ display:flex; align-items:center; gap:8px; width:100%; }
  .timeLabel{ font-size:11px; color:var(--text-dim); flex-shrink:0; width:34px; }
  .timeLabel:last-child{ text-align:right; }
  .progressBar{
    flex:1; height:5px; border-radius:3px; background:var(--bg-elev);
    position:relative; cursor:pointer;
  }
  .progressFill{
    position:absolute; left:0; top:0; bottom:0; width:0%;
    background:var(--accent); border-radius:3px;
  }
  .player.idle .progressRow{ opacity:0.4; pointer-events:none; }

  /* 즐겨찾기(하트) - 재생바용 */
  .npHeartBtn{
    width:36px; height:36px; border-radius:50%; border:1px solid var(--line);
    background:var(--bg-elev); display:flex; align-items:center; justify-content:center;
  }
  .npHeartBtn svg{ width:16px; height:16px; }

  /* 볼륨 */
  .volumePopup{
    position:absolute; bottom:100%; right:20px; margin-bottom:8px;
    background:var(--bg-elev); border:1px solid var(--line); border-radius:10px;
    padding:14px 10px; box-shadow:0 4px 16px rgba(0,0,0,0.4);
    width:40px; box-sizing:border-box; display:flex; justify-content:center;
  }
  .volumePopup input[type="range"]{
    -webkit-appearance: slider-vertical;
    writing-mode: vertical-lr; direction: rtl;
    width:6px; height:100px; accent-color:var(--accent); cursor:pointer;
  }

  /* 실시간 가사 - 재생바 바로 위에 뜨는 패널 */
  .lyricsInline{
    display:none; flex-shrink:0; max-height:38vh; overflow-y:auto;
    background:var(--bg-panel); border-top:1px solid var(--line);
    padding:16px 20px; text-align:center;
  }
  .lyricsInline.show{ display:block; }
  .lyricsInline .lyLine{
    font-size:14px; color:var(--text-dim); line-height:2; padding:2px 0;
    transition:color 0.2s, font-size 0.2s;
  }
  .lyricsInline .lyLine.current{ color:var(--accent); font-size:16px; font-weight:600; }
  .lyricsInline .lyEmpty{ color:var(--text-dim); font-size:13px; padding:12px 0; }

  /* ---------- 풀스크린 "지금 재생 중" 화면 ---------- */
  .npFullOverlay{
    position:fixed; inset:0; z-index:600; background:var(--bg);
    display:none; flex-direction:column;
  }
  .npFullOverlay.open{ display:flex; }
  .npPages{
    flex:1; display:flex; flex-direction:column; min-height:0;
  }
  .npPage{
    flex:1; min-height:0; display:none; flex-direction:column; box-sizing:border-box;
    padding:calc(10px + env(safe-area-inset-top)) 22px calc(16px + env(safe-area-inset-bottom));
  }
  .npPagePlayer{ display:flex; } /* 기본으로 보이는 화면 */
  .npPageHeader{ display:flex; align-items:center; justify-content:space-between; padding:6px 2px 14px; flex-shrink:0; }
  .npPageHeader button{
    background:none; border:none; color:var(--text-dim); font-size:22px; line-height:1;
    padding:10px; cursor:pointer; display:flex; align-items:center;
  }
  .npPageHeader button:hover{ color:var(--text); }
  .npPageHeaderTitle{ font-size:11px; color:var(--text-dim); text-transform:uppercase; letter-spacing:0.08em; }

  .npArtStage{
    flex:1; position:relative; display:flex; align-items:center; justify-content:center;
    min-height:0; margin:4px 0 22px;
  }
  .npArtBox{
    position:relative; width:100%; max-width:420px; aspect-ratio:1/1;
  }
  .npArtBig{
    width:100%; height:100%; border-radius:16px; object-fit:cover;
    background:var(--bg-elev); box-shadow:0 16px 44px rgba(0,0,0,0.5);
    transition:transform 0.22s ease, opacity 0.22s ease;
    cursor:pointer; -webkit-user-select:none; user-select:none;
  }
  .npArtBig.slide-out-left{ transform:translateX(-36px); opacity:0; }
  .npArtBig.slide-out-right{ transform:translateX(36px); opacity:0; }

  .npLyricsBig{
    display:none; position:absolute; inset:0; overflow-y:auto; text-align:center;
    padding:14% 6%; box-sizing:border-box; background:linear-gradient(160deg, var(--bg-elev), var(--bg-panel));
    border-radius:16px;
  }
  .npLyricsBig.show{ display:block; }
  .npLyricsBig .lyLine{ font-size:18px; color:var(--text-dim); line-height:2.15; padding:3px 0; transition:color 0.2s, font-size 0.2s; }
  .npLyricsBig .lyLine.current{ color:var(--accent); font-size:21px; font-weight:700; }
  .npLyricsBig .lyEmpty{ color:var(--text-dim); font-size:14px; margin-top:60%; }

  .npBigMeta{ text-align:center; flex-shrink:0; margin-bottom:16px; }
  .npBigTitle{ font-size:19px; font-weight:700; margin-bottom:6px; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
  .npBigSub{ font-size:14px; color:var(--text-dim); overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
  .npBigSub .npArtist{ cursor:pointer; }
  .npBigSub .npArtist:hover{ color:var(--accent); }
  .npAlbumLink{ cursor:pointer; }
  .npAlbumLink:hover{ color:var(--accent); }

  .npBigProgress{ display:flex; align-items:center; gap:10px; flex-shrink:0; margin-bottom:20px; }
  .npBigProgress .progressBar{ flex:1; height:5px; }
  .npBigProgress span{ font-size:11px; color:var(--text-dim); width:36px; flex-shrink:0; }
  .npBigProgress span:last-child{ text-align:right; }

  .npBigControls{ display:flex; align-items:center; justify-content:center; gap:30px; flex-shrink:0; margin-bottom:24px; }
  .npBigControls button{ background:none; border:none; color:var(--text); cursor:pointer; padding:8px; }
  .npBigControls svg{ width:26px; height:26px; fill:currentColor; }
  #npBigPlayPause{
    width:64px; height:64px; border-radius:50%; background:var(--accent); color:#0b1210;
    display:flex; align-items:center; justify-content:center; padding:0;
  }
  #npBigPlayPause svg{ width:28px; height:28px; }
  .npSideBtn{ position:relative; }
  .npSideBtn svg{ width:20px; height:20px; }
  .npSideBtn.active{ color:var(--accent); }
  .npRepeatOneBadge{
    position:absolute; top:2px; right:2px; background:var(--accent); color:#0b1210;
    font-size:9px; font-weight:700; width:13px; height:13px; border-radius:50%;
    display:flex; align-items:center; justify-content:center;
  }

  .npBigIconRow{ display:flex; align-items:center; justify-content:space-around; flex-shrink:0; position:relative; }
  .npVolumePopup{ position:absolute; bottom:100%; left:50%; transform:translateX(-50%); margin-bottom:10px; z-index:610; }
  .npBigIconRow button{
    background:none; border:none; color:var(--text-dim); cursor:pointer; padding:6px 10px;
    display:flex; flex-direction:column; align-items:center; gap:5px;
  }
  .npBigIconRow button svg{ width:20px; height:20px; fill:currentColor; }
  .npBigIconRow button span{ font-size:10px; }
  .npBigIconRow button.active{ color:var(--accent); }
  .npBigIconRow button.heartBtn{ position:static; width:auto; height:auto; background:none; }

  .npSwipeHint{ text-align:center; font-size:11px; color:var(--text-dim); opacity:0.5; padding-top:12px; flex-shrink:0; }

  .npQueueListBig{ flex:1; overflow-y:auto; }

  /* PC(넓은 화면)에서는 전체화면 대신 화면 우측 하단에 작은 카드로 뜨게 한다 */
  @media (min-width: 781px){
    .npFullOverlay.open{
      align-items:flex-end; justify-content:flex-end;
      background:rgba(0,0,0,0.25);
    }
    .npFullOverlay .npPages{
      width:32vw; min-width:320px; max-width:420px;
      height:70vh; max-height:640px;
      margin:24px; border-radius:18px; overflow:hidden;
      box-shadow:0 20px 60px rgba(0,0,0,0.55);
      background:var(--bg-panel); border:1px solid var(--line);
    }
    .npFullOverlay .npPage{ padding:16px 20px 20px; }
    .npArtBig{ max-width:100%; }

    /* 하단 재생바에서 여는 가사는 PC에서 화면을 너무 많이 차지하지 않도록 3줄 정도로만 */
    .lyricsInline{ max-height:132px; padding:10px 20px; }
  }

  #queueBtn{ display:flex; align-items:center; padding:0 8px; width:auto !important; }
  #queueBtn.active{ border-color:var(--accent); color:var(--accent); }

  .queueItem{
    display:flex; align-items:center; gap:10px; padding:9px 10px;
    border-radius:8px; cursor:pointer;
  }
  .queueItem:hover{ background:var(--bg-elev); }
  .queueItem.current{ background:var(--bg-elev); }
  .queueItem .qNum{ width:22px; font-size:12px; color:var(--text-dim); text-align:right; flex-shrink:0; }
  .queueItem.current .qNum{ color:var(--accent); }
  .queueItem .qMeta{ flex:1; min-width:0; }
  .queueItem .qTitle{ font-size:13px; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
  .queueItem.current .qTitle{ color:var(--accent); }
  .queueItem .qSub{ font-size:11px; color:var(--text-dim); overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
  .queueItem .qPlaying{ font-size:11px; color:var(--accent); flex-shrink:0; }

  ::-webkit-scrollbar{ width:9px; }
  ::-webkit-scrollbar-thumb{ background:var(--line); border-radius:5px; }
  ::-webkit-scrollbar-track{ background:transparent; }

  /* ---------- 반응형: 태블릿/모바일 ---------- */
  @media (max-width: 780px){
    header{ padding:10px 12px; flex-wrap:wrap; gap:8px; }
    .brand .n, .brand .g{ font-size:15px; }
    header > div{ gap:8px !important; flex-wrap:wrap; }
    .headerSearch{ order:3; max-width:none; width:100%; margin:0; }
    #castBtn, #airplayBtn, #dlnaBtn, #serverBtn{ padding:7px 10px; font-size:12px; }
    #castBtn span, #airplayBtn span, #dlnaBtn span, #serverBtn span{ display:none; }
    #diagBtn{ padding:7px 9px !important; font-size:11px !important; }

    .albumDetailTop{ flex-direction:column; align-items:center; text-align:center; }
    .albumDetailCover{ width:min(60vw, 220px); height:min(60vw, 220px); }
    .albumDetailInfo{ width:100%; }
    .albumDetailActions{ justify-content:center; }

    .content{ padding:14px 12px; }
    .tabRow button{ padding:6px 11px; font-size:12px; }

    .album-card{ width:calc(50% - 10px); margin:0 10px 16px 0; }
    .album-card:nth-child(2n){ margin-right:0; }
    .album-card .cover{ width:100%; height:auto; aspect-ratio:1/1; }

    .searchRow{ flex-direction:column; }
    .searchRow input, .searchRow button{ width:100%; }

    .backRow{ flex-wrap:wrap; }
    .backRow h1{ font-size:16px; width:100%; order:1; }
    .backRow .playAllBtn{ order:3; }

    .track{ padding:9px 6px; gap:8px; }
    .track .sub{ display:none; }
    .track .num{ display:none; }

    .player{ padding:8px 10px; padding-bottom:calc(8px + env(safe-area-inset-bottom)); gap:6px; }
    .player .mainRow{ gap:8px; }
    .player .target{ display:none; }
    .player .info{ min-width:0; }
    .player .ctrls{
      gap:6px; overflow-x:auto; max-width:52vw; padding-bottom:2px;
      scrollbar-width:none; -ms-overflow-style:none;
    }
    .player .ctrls::-webkit-scrollbar{ display:none; }
    .player .ctrls button{ width:32px; height:32px; flex-shrink:0; }
    .npCover{ width:36px; height:36px; }
    .volumePopup{ right:8px; }

    .lyricsInline{ padding:12px 14px; max-height:32vh; }

    .pagination{ flex-wrap:wrap; gap:10px; }
  }

  @media (max-width: 420px){
    .album-card{ width:100%; margin-right:0; }
  }
