:root{font-family:system-ui,-apple-system,"Segoe UI",Tahoma,sans-serif;color:#192340;background:#f7f8fd;font-synthesis:none}*{box-sizing:border-box}body{margin:0;min-width:300px}button,input{font:inherit}button{cursor:pointer}button:disabled{cursor:wait;opacity:.65}.app-shell{max-width:680px;min-height:100svh;margin:0 auto;background:#fbfbfe;box-shadow:0 0 60px #101b4020;padding-bottom:92px}.topbar{height:75px;padding:16px 19px;background:#111b33;display:flex;align-items:center;gap:10px;color:#fff}.mark{width:40px;height:40px;border-radius:13px;background:linear-gradient(135deg,#ab9afc,#f9a2bd);display:grid;place-items:center;font-size:23px;font-weight:800;color:#fff;box-shadow:0 4px 15px #ad9afd50}.top-text{display:flex;flex-direction:column;line-height:1.13}.top-text b{font-size:20px;font-weight:850;letter-spacing:-.7px}.top-text small{font-size:9px;letter-spacing:2.2px;color:#bfc6df;margin-top:5px;font-weight:800}.connect{margin-left:auto;font-size:10px;color:#bfd8d2;display:flex;gap:6px;align-items:center;background:#ffffff10;border:1px solid #ffffff15;border-radius:40px;padding:8px 9px}.connect-dot{width:6px;height:6px;border-radius:50%;background:#4cdca4;box-shadow:0 0 10px #4cdca4}.hero{background:#111b33;min-height:224px;border-radius:0 0 29px 29px;padding:26px 24px 28px;color:#fff;position:relative;overflow:hidden}.hero:after{content:"♫";position:absolute;right:-9px;top:21px;color:#bbc7ff0c;font-size:215px;transform:rotate(-16deg);pointer-events:none}.hero-eyebrow{font-size:12px;color:#c1b7ff;font-weight:730;letter-spacing:.4px}.sparkle{margin-right:6px;color:#e5aff5}.hero h1,.login-section h1{font-size:35px;line-height:1.33;letter-spacing:-1.25px;margin:13px 0 17px;position:relative;z-index:1}.hero h1 em,.login-section h1 em{font-style:normal;color:#b5a6ff}.hero-total{font-size:12px;color:#c2cbe1}.hero-total strong{font-size:17px;color:#fff}.panel-page{padding:20px 17px 30px}.search-wrap{display:flex;align-items:center;gap:12px;background:#fff;border:1.8px solid #e8e9f6;border-radius:18px;padding:0 15px;box-shadow:0 7px 20px #1e254708;transition:border-color .2s}.search-wrap:focus-within{border-color:#ab9afc}.magnify{font-size:28px;line-height:1;color:#8b83b9}.search-wrap input{border:0;outline:0;background:transparent;min-width:0;width:100%;padding:17px 0;font-size:15px;color:#162240}.search-wrap input::placeholder{color:#9ca1b9}.clear-search{border:0;background:none;font-size:25px;color:#a3a6b7;padding:0 3px}.filters{display:flex;gap:8px;overflow-x:auto;padding:17px 0 18px;scrollbar-width:none}.filters::-webkit-scrollbar{display:none}.chip{flex-shrink:0;border:1px solid #e7e8f1;background:#fff;color:#777e9a;padding:9px 18px;border-radius:25px;font-size:12px;font-weight:750}.chip.selected{background:#6b61b8;color:#fff;border-color:#6b61b8;box-shadow:0 4px 13px #6b61b830}.section-head{display:flex;align-items:center;justify-content:space-between;padding:0 2px;margin-bottom:15px;gap:10px}.section-head h2{font-size:18px;letter-spacing:-.3px;margin:0;color:#1d2845}.section-head span,.section-head p{font-size:11px;color:#9298ab;margin:3px 0}.results,.queue-items{display:grid;gap:10px}.song{display:grid;grid-template-columns:40px minmax(0,1fr) auto;gap:10px;align-items:center;background:#fff;border:1px solid #ececf6;border-radius:17px;padding:13px 12px;box-shadow:0 4px 18px #1b275807}.song-symbol{width:39px;height:39px;border-radius:12px;background:linear-gradient(135deg,#f2eaff,#e9f1ff);color:#7263bf;display:grid;place-items:center;font-size:21px}.song-main{min-width:0}.song-title{font-size:14px;font-weight:760;line-height:1.45;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#202a47}.song-artist{font-size:12px;color:#8a90a5;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;margin:3px 0 5px}.song-meta{display:flex;align-items:center;flex-wrap:wrap;gap:5px;font-size:10px;color:#a4a7ba}.format{color:#765ab4;background:#eee9ff;border-radius:5px;padding:2px 5px;font-weight:800;font-size:9px}.format.xmk{background:#def5ec;color:#168e70}.format.ncn{background:#e9f0ff;color:#4672bc}.format.mp3{background:#fff1db;color:#ab7c1f}.add-btn{min-width:55px;border:0;background:#eae7ff;color:#6354b2;padding:10px 12px;border-radius:11px;font-size:12px;font-weight:800}.add-btn:active{transform:scale(.97)}.bottom-note{text-align:center;margin:23px auto;color:#a5aabd;font-size:11px;line-height:1.6}.bottom-nav{position:fixed;bottom:0;left:50%;transform:translateX(-50%);display:flex;justify-content:space-around;max-width:680px;width:100%;background:#fff;border-top:1px solid #ebebf3;padding:9px 8px max(12px,env(safe-area-inset-bottom));box-shadow:0 -8px 24px #171a3511;z-index:5}.nav-item{border:0;background:none;color:#a0a6bb;display:flex;flex-direction:column;gap:2px;align-items:center;min-width:85px;padding:4px 9px;font-weight:720}.nav-item.active{color:#7263bf}.nav-item span{font-size:25px;line-height:26px}.nav-item small{font-size:10px}.nav-item b{font-size:10px;background:#efeaff;border-radius:30px;padding:1px 5px;color:#6f61b5}.queue-head{padding-top:6px;margin-bottom:20px}.queue-song{grid-template-columns:38px minmax(0,1fr);align-items:start}.queue-index{width:36px;height:36px;display:grid;place-items:center;background:#f0edff;color:#6557b8;border-radius:11px;font-weight:850}.queue-buttons{grid-column:2;display:flex;gap:8px;flex-wrap:wrap;margin-top:3px}.queue-buttons button{border:0;border-radius:10px;padding:10px 13px;font-size:11px;font-weight:800;background:#eeeaff;color:#6255b6}.queue-buttons .remove{background:#fff0f1;color:#bd6672}.queue-buttons .sent{background:#e1f6ed;color:#217852}.queue-disclaimer,.advisory{font-size:12px;color:#81899e;line-height:1.65;padding:12px;background:#f2f3fa;border-radius:12px;margin-top:18px}.settings-card{background:#fff;border:1px solid #eaecf5;border-radius:18px;padding:18px;margin:12px 0;box-shadow:0 5px 16px #1b275507}.settings-card h3{margin:0 0 10px;font-size:16px}.settings-card p{font-size:13px;color:#778198;line-height:1.7;margin:8px 0}.settings-card .advisory{font-size:11px}.toggle-row{display:flex;justify-content:space-between;align-items:center;gap:12px;font-size:13px;font-weight:750;margin-top:18px}.toggle-row input{width:23px;height:23px;accent-color:#7164b6}.text-button{border:0;background:transparent;color:#8b83b3;padding:18px;font-weight:720}.breakdown{word-break:break-word}.empty-state{padding:38px 15px;text-align:center;border:1px dashed #dcdaf0;border-radius:18px;color:#8e92ad;font-size:13px;background:#fff}.empty-icon{font-size:33px;display:block;margin-bottom:10px}.login-section{background:#111b33;color:#fff;padding:54px 25px;min-height:calc(100svh - 75px);text-align:center}.login-art{margin:0 auto 27px;display:grid;place-items:center;font-size:55px;border-radius:28px;background:linear-gradient(145deg,#8c74ef,#ca8acc);width:110px;height:110px;box-shadow:0 20px 50px #a885eb47}.login-section h1{font-size:36px}.subline{color:#b4bfd9;line-height:1.7;font-size:13px}.login-form{display:grid;text-align:left;gap:10px;margin:40px auto 0;max-width:365px}.login-form label{font-size:13px;color:#d8def4}.login-form input{width:100%;background:#263450;border:1.5px solid #63708e;color:#fff;border-radius:14px;padding:15px 16px;font-size:22px;letter-spacing:5px;text-align:center;outline:0}.login-form input:focus{border-color:#b3a4ff}.primary{border:0;background:linear-gradient(100deg,#a89aff,#f6abc1);color:#212a4c;padding:16px;border-radius:14px;font-size:14px;font-weight:850;display:flex;justify-content:space-between;margin-top:10px}.message.error{color:#ffc2c7;font-size:12px}.bottom-note,#toast{pointer-events:none}#toast{position:fixed;bottom:98px;left:50%;transform:translateX(-50%) translateY(20px);background:#202943;color:#fff;padding:12px 18px;border-radius:13px;min-width:230px;max-width:min(90%,550px);text-align:center;font-size:12px;line-height:1.5;box-shadow:0 10px 25px #20294350;opacity:0;transition:transform .15s,opacity .15s;z-index:20}#toast.show{opacity:1;transform:translateX(-50%) translateY(0)}[hidden]{display:none!important}@media(min-width:680px){.hero{border-radius:0 0 27px 27px}.app-shell{border-left:1px solid #eaeaf2;border-right:1px solid #eaeaf2}}

.qr-entry{display:none}@media(min-width:760px){.qr-entry{display:flex;flex-direction:column;gap:12px;align-items:center;margin-top:20px;padding-top:20px;border-top:1px solid #ffffff20}.qr-entry p{font-size:12px;color:#c3cbea}.qr-entry img{height:160px;width:160px;background:white;padding:9px;border-radius:16px}.qr-entry small{font-size:10px;color:#a9b5d2}}

/* Live assisted queue v1.1 */
.queue-mode-warning{margin:14px 0 20px;padding:15px 17px;border:1px solid #efd6a0;background:#fff6df;border-radius:18px;color:#755126;font-size:13px;line-height:1.75}
.now-playing{padding:18px;margin-bottom:19px;background:linear-gradient(120deg,#1a2a47,#233d55);border-radius:22px;color:white;box-shadow:0 4px 18px #0d183014}
.now-playing b{font-size:16px;color:#aee7ca}
.now-playing .song-title{color:white;margin-top:7px}
.now-playing .song-artist{color:#c5cddc}
.now-playing p{font-size:13px;color:#c5cddc;line-height:1.7}
.queue-status{margin-top:8px;font-size:12px;color:#6955a6;font-weight:700}
.queue-buttons button.finish,.finished-now{background:#dff5e9!important;color:#20644e!important}
.finished-now{display:inline-flex;margin-top:12px;border:0;padding:12px 18px;border-radius:13px;font-weight:800}
.history-title{font-size:17px;margin:24px 0 10px}.hist-song{padding:12px 16px;margin:7px 0;background:#f3f6f8;border-radius:13px;color:#343f55;font-size:14px}.hist-song small{color:#788392}
.quiet{color:#7a859a;font-size:13px}
@media(max-width:550px){.queue-buttons{flex-wrap:wrap}.queue-buttons button{min-height:40px}}

/* v1.2 remote transport controls */
.transport-panel{background:#fff;border:1px solid #e6e8f4;border-radius:20px;padding:16px;margin:12px 0 18px;box-shadow:0 5px 20px #1223520d}
.transport-head{display:flex;align-items:start;justify-content:space-between;gap:10px;flex-wrap:wrap;font-size:14px;color:#1b2848}
.transport-head span{font-size:10px;color:#787d99;background:#f3f2fb;padding:7px 9px;border-radius:15px;max-width:100%}
.transport-buttons{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-top:16px}
.transport-buttons button{min-width:0;display:flex;flex-direction:column;align-items:center;gap:3px;padding:15px 5px;border:1px solid transparent;border-radius:15px;font-size:12px}
.transport-buttons button span{font-size:26px;line-height:1.3}.transport-buttons button b{font-size:13px}
.transport-buttons button small{font-size:11px;letter-spacing:1px;opacity:.65}
.transport-home{background:#edeaff;color:#5443a3}.transport-end{background:#ffe9e9;color:#963c51}
.transport-panel>p{font-size:11px;line-height:1.7;margin:11px 0 0;color:#8790aa}


/* Load further results without hiding the second-priority SNK group. */
.load-more{display:block;margin:12px auto 20px;padding:13px 24px;border:1px solid rgba(136,154,218,.42);background:#202b49;border-radius:13px;color:#fff;font:inherit;font-weight:650;cursor:pointer;min-width:160px}
.load-more[hidden]{display:none!important}.load-more:disabled{opacity:.6;cursor:wait}

/* Homepage chart indicator; the list order is driven by Thai chart titles, never format. */
.popular-label{display:inline-flex;vertical-align:middle;white-space:nowrap;padding:3px 6px;font-size:9px;line-height:1.3;font-weight:700;border-radius:7px;background:#fff2e5;color:#985921;margin-left:5px}
.section-head{align-items:flex-start}.section-head span{line-height:1.5;text-align:right;max-width:60%}
/* v1.9.3: Thai-hits homepage and touch-first sortable shared queue */
.hit-song{grid-template-columns:27px 35px minmax(0,1fr) auto;gap:8px}
.hit-position{font-size:11px;font-weight:900;color:#796bb5;text-align:center}
.hit-song .add-btn{padding:10px 9px}
.queue-song{grid-template-columns:41px minmax(0,1fr)}
.drag-handle{width:41px;height:48px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:0;touch-action:none;cursor:grab;border:0;background:#eeeaff;color:#5d50ab;font-size:21px;line-height:23px;font-weight:900}
.drag-handle small{font-size:11px;line-height:13px}
.dragging{opacity:.8;z-index:2;position:relative;box-shadow:0 8px 24px #594fa02c;border-color:#afa2ec;background:#f9f7ff}
.version-pill{display:inline-flex;align-items:center;padding:5px 9px;margin:12px 0 0;border:1px solid #c5bdec;color:#dcd5ff;background:#332b55;border-radius:9px;font-size:11px;font-weight:800}
@media(max-width:375px){.hit-song{grid-template-columns:23px 32px minmax(0,1fr) auto;gap:6px}.hit-song .add-btn{font-size:10px;padding:10px 6px}}

/* Precise touch drop preview; rows stay attached to DOM during pointer capture. */
.queue-song.drop-before{border-top:3px solid #7565bf}
.queue-song.drop-after{border-bottom:3px solid #7565bf}

/* v1.9.3: safe queue staging/insert-next actions */
.song-actions{display:flex;flex-direction:column;gap:6px;min-width:112px;align-items:stretch}
.song-actions button{font-family:inherit;white-space:nowrap}
.insert-btn{border:1px solid #aea1e6;background:#f7f4ff;color:#51439b;font-weight:700;border-radius:12px;padding:7px 8px;font-size:.79rem;cursor:pointer}
.song-actions .add-btn{width:100%;margin:0}
.queue-buttons button:disabled,.queue-index:disabled{opacity:.36;cursor:not-allowed;touch-action:auto}
@media (max-width:420px){.song-actions{min-width:94px}.insert-btn{font-size:.7rem;padding:7px 3px}}

.native-drag-handle{touch-action:none;user-select:none;border:0;cursor:grab}.native-drag-handle:active{cursor:grabbing}

/* v1.9.7 safe catalog manager — uses existing pastel settings layout. */
#catalog-manager .catalog-current{padding:12px 14px;background:#f5f4ff;border-radius:12px;color:#4d467f;font-size:13px;line-height:1.6;margin:12px 0}
#catalog-manager .catalog-label{display:block;font-weight:800;font-size:13px;margin:14px 0 7px;color:#273557}
#catalog-manager input[type=file]{display:block;width:100%;max-width:100%;font:inherit;font-size:13px;padding:13px;border:1px solid #d9d5ef;background:#fff;border-radius:13px;box-sizing:border-box}
#catalog-manager button{width:100%;padding:13px 11px;border-radius:13px;margin-top:11px;font:inherit;font-weight:750;cursor:pointer}
#catalog-manager button[hidden]{display:none!important}
#catalog-manager button:disabled{opacity:.5;cursor:wait}
#catalog-manager .catalog-primary{border:0;background:#6258b2;color:#fff}
#catalog-manager .catalog-rollback{border:1px solid #ada5dc;background:#fff;color:#5b4b9d}
#catalog-preview-result{font-size:13px;line-height:1.7;color:#34415f;margin-top:13px;overflow-wrap:anywhere}

/* v1.9.8: clean, touch-friendly genre discovery. Original colors remain. */
.genre-heading{display:flex;justify-content:space-between;align-items:center;margin:18px 2px 8px;font-size:13px;font-weight:800;color:#273050}
.genre-heading small{font-size:10px;color:#8d93a7;font-weight:500}
.genre-filters{display:flex;gap:8px;overflow-x:auto;scrollbar-width:none;scroll-snap-type:x proximity;padding:3px 2px 13px;touch-action:pan-x}
.genre-filters::-webkit-scrollbar{display:none}
.genre-chip{white-space:nowrap;scroll-snap-align:start;flex-shrink:0;background:#fff;border:1px solid #e5e6f0;color:#696f8b;font-size:12px;font-weight:750;border-radius:13px;padding:11px 13px;min-height:44px;transition:background .15s}
.genre-chip.selected{background:#6b61b8;color:#fff;border-color:#6b61b8;box-shadow:0 4px 12px #6b61b825}
.genre-chip:focus-visible,.chip:focus-visible{outline:2px solid #927dff;outline-offset:2px}
.file-heading{display:flex;justify-content:space-between;font-size:11px;color:#8288a3;font-weight:800;margin:0 2px -5px}
.file-heading span{color:#a1a5b6;font-weight:500}
.filters{padding:13px 0 15px}
@media(max-width:400px){.genre-chip{padding:10px 12px;font-size:11px}}

/* v1.9.8.1: De-emphasize advanced file-format filters; keep genres primary. */
.file-type-details{margin:-2px 0 14px;display:block}
.file-type-details summary{list-style:none}
.file-type-details summary::-webkit-details-marker{display:none}
.file-type-summary{display:flex;width:max-content;margin-left:auto;align-items:center;gap:6px;justify-content:flex-end;min-height:38px;padding:7px 11px;border:1px solid #ececf4;border-radius:12px;background:#fafafe;color:#9096ad;cursor:pointer;font-size:11px;font-weight:630;user-select:none;-webkit-tap-highlight-color:transparent}
.file-type-summary-title{font-weight:680}
.file-type-active{color:#7b81a0}
.file-type-chevron{font-size:15px;color:#9ea4b8;transition:transform .15s}
.file-type-details[open] .file-type-chevron{transform:rotate(180deg)}
.file-type-details.has-type-filter .file-type-active{color:#6b61b8;font-weight:800}
.file-type-details.has-type-filter .file-type-summary{background:#f5f2ff;border-color:#d9d1f8}
.file-type-summary:focus-visible{outline:2px solid #927dff;outline-offset:2px}
.file-type-details .filters{width:100%;flex-wrap:wrap;justify-content:flex-end;gap:7px;padding:9px 0 2px;overflow-x:visible}
.file-type-details .chip{min-height:38px;padding:8px 14px;font-size:11px}

/* v1.9.8.5: discreet search available from deep in a 300-song category. */
.quick-search-toggle[hidden],.quick-search-panel[hidden]{display:none!important}
.quick-search-toggle{position:fixed;z-index:12;right:max(16px,calc((100vw - 680px)/2 + 17px));bottom:calc(99px + env(safe-area-inset-bottom));border:1px solid #dddaf2;background:#ffffffed;color:#695db6;border-radius:50%;width:49px;height:49px;display:grid;place-items:center;font-size:31px;line-height:1;box-shadow:0 4px 20px #2a245631;backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px)}
.quick-search-panel{position:fixed;z-index:13;bottom:calc(102px + env(safe-area-inset-bottom));left:max(12px,calc((100vw - 680px)/2 + 14px));right:max(12px,calc((100vw - 680px)/2 + 14px));display:flex;align-items:center;gap:10px;border:1px solid #cec7ed;background:#fff;border-radius:16px;padding:11px 12px;box-shadow:0 12px 32px #28215038}
.quick-search-panel span{color:#8b7cc6;font-size:23px}.quick-search-panel input{min-width:0;flex:1;border:0;outline:0;font:inherit;color:#222844;background:transparent;font-size:16px}.quick-search-panel button{border:0;background:#eeeaff;color:#7364b5;border-radius:10px;font-size:24px;line-height:1;padding:5px 11px}
#results-head{scroll-margin-top:14px}

/* v1.9.8.6 - reliable quick search and one-tap scroll-to-top. */
.back-to-top[hidden]{display:none!important}
.back-to-top{position:fixed;z-index:12;right:max(16px,calc((100vw - 680px)/2 + 17px));bottom:calc(158px + env(safe-area-inset-bottom));height:46px;width:46px;display:grid;place-items:center;border-radius:50%;border:1px solid #e0ddf2;background:#fffffff2;color:#7063b8;box-shadow:0 4px 16px #28215021;font-size:25px;font-weight:750;line-height:1;backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px)}
.quick-search-panel .quick-search-submit{border:0;background:#7162bb;color:#fff;border-radius:10px;font-size:14px;font-weight:750;line-height:1.25;padding:10px 13px;white-space:nowrap}
.quick-search-panel input{font-size:16px;min-height:36px}
.quick-search-panel button{flex-shrink:0}
@media(max-width:370px){.quick-search-panel{gap:6px;padding:8px}.quick-search-panel .quick-search-submit{padding:9px 8px}}
