/* 대시보드 시트 — 오디오 시트(#auSheet)와 같은 문법. 색은 앱 토큰(라이트·다크 공통) · 좌우 여백 14px. */
#dbScrim{position:fixed;inset:0;background:rgba(0,0,0,.35);opacity:0;pointer-events:none;transition:opacity .2s;z-index:1200}
#dbScrim.show{opacity:1;pointer-events:auto}
#dbSheet{position:fixed;left:0;right:0;bottom:0;z-index:1201;max-width:560px;margin:0 auto;max-height:94dvh;display:flex;flex-direction:column;
  background:var(--bg);color:var(--tx);border-radius:18px 18px 0 0;border-top:1px solid var(--brd2);
  padding:8px 14px calc(14px + env(safe-area-inset-bottom,0px));box-shadow:0 -8px 30px rgba(var(--shk),.18);
  transform:translateY(102%);visibility:hidden;transition:transform .26s cubic-bezier(.2,.8,.2,1),visibility 0s .26s}
#dbSheet.show{transform:none;visibility:visible;transition:transform .26s cubic-bezier(.2,.8,.2,1),visibility 0s}
@media (prefers-reduced-motion:reduce){#dbSheet,#dbSheet.show,#dbScrim{transition:none}}
#dbSheet button{font-family:inherit}
#dbSheet button:focus-visible{outline:3px solid var(--acc2);outline-offset:2px}
.db-grab{width:36px;height:4px;border-radius:2px;background:var(--brd2);margin:0 auto 6px;flex:none}
.db-head{display:flex;align-items:center;gap:6px;flex:none;min-height:44px}
.db-head b{flex:1;font-size:17px;font-weight:800;letter-spacing:-.3px}
.db-x{flex:none;width:40px;height:40px;border-radius:10px;border:1px solid var(--brd);background:var(--sur2);color:var(--tx);font-size:19px;line-height:1;cursor:pointer}
.db-body{flex:1;min-height:0;overflow-y:auto;overscroll-behavior:contain;display:flex;flex-direction:column;gap:10px;padding:4px 0 2px;-webkit-overflow-scrolling:touch}

.db-hello{display:flex;align-items:center;gap:8px;min-height:32px}
.db-hello b{font-size:15px;font-weight:800;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.db-pos{flex:none;padding:3px 9px;border-radius:999px;background:var(--acc-bg);color:var(--acc);font-size:12px;font-weight:800}

.db-card{background:var(--sur);border:1px solid var(--brd);border-radius:14px;padding:12px}
.db-card h3{display:flex;align-items:baseline;gap:8px;margin:0 0 8px;font-size:14px;font-weight:800;color:var(--tx2)}
.db-when{margin-left:auto;font-size:13px;font-weight:800;color:var(--acc);font-variant-numeric:tabular-nums}
.db-ctitle{margin:-2px 0 8px;font-size:16px;font-weight:800}
.db-empty{margin:4px 0 8px;font-size:13px;color:var(--tx3)}

.db-list{display:flex;flex-direction:column}
.db-row{display:flex;align-items:center;gap:8px;width:100%;min-height:44px;padding:6px 4px;border:0;border-top:1px solid var(--brd);background:none;color:var(--tx);text-align:left;cursor:pointer;border-radius:0}
.db-list .db-row:first-child{border-top:0}
.db-row:hover{background:var(--sur2)}
.db-row:active{background:var(--acc-bg)}
.db-ord{flex:none;width:20px;font-size:13px;font-weight:800;color:var(--tx3);text-align:center;font-variant-numeric:tabular-nums}
.db-no{flex:none;min-width:30px;font-size:12.5px;font-weight:800;color:var(--acc);font-variant-numeric:tabular-nums}
.db-ti{flex:1;min-width:0;font-size:15px;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.db-key{flex:none;min-width:30px;padding:2px 6px;border-radius:6px;background:var(--sur2);border:1px solid var(--brd);font-size:12.5px;font-weight:800;text-align:center}
.db-bar{flex:none;width:64px;height:6px;border-radius:3px;background:var(--sur2);overflow:hidden}
.db-bar i{display:block;height:100%;border-radius:3px;background:var(--acc)}
.db-min{flex:none;min-width:34px;text-align:right;font-size:12.5px;font-weight:700;color:var(--tx2);font-variant-numeric:tabular-nums}

/* 최근 곡은 한 줄 — 제목이 길어 줄바꿈하면 세로를 다 먹는다. 옆으로 밀어 보고, 카드 안쪽 여백까지 써서 잘림이 보이게 */
.db-chips{display:flex;flex-wrap:nowrap;gap:6px;overflow-x:auto;overscroll-behavior-x:contain;margin:0 -12px;padding:0 12px;scroll-padding:0 12px}
.db-chip{flex:none;display:inline-flex;align-items:center;gap:6px;max-width:100%;min-height:40px;padding:6px 10px;border:1px solid var(--brd);border-radius:10px;background:var(--sur2);color:var(--tx);cursor:pointer}
.db-chip .db-ti{font-size:14px;max-width:11em}
.db-chip:hover{border-color:var(--acc2)}

.db-tools{display:grid;grid-template-columns:repeat(4,1fr);gap:6px;margin-bottom:6px}
.db-tool{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;min-height:72px;padding:6px 2px;border:1px solid var(--brd);border-radius:12px;background:var(--sur2);color:var(--tx);font-size:12.5px;font-weight:700;cursor:pointer}
.db-tool img{width:36px;height:36px;object-fit:contain}
.db-tool:hover{border-color:var(--acc2)}
.db-tool:active{transform:scale(.97)}
.db-recrow{border-top:1px solid var(--brd)}
.db-recrow img{flex:none;width:28px;height:28px;object-fit:contain}

.db-btn{display:block;width:100%;min-height:42px;margin-top:8px;border:1px solid var(--acc);border-radius:10px;background:var(--acc-bg);color:var(--acc);font-size:14px;font-weight:800;cursor:pointer}
.db-btn:hover{filter:brightness(1.04)}
