@import url('https://fonts.googleapis.com/css2?family=DM+Sans:wght@400;500;600;700;800&display=swap');
:root{color-scheme:dark;--bg:#070707;--panel:#121212;--panel2:#181818;--hover:#262626;--fg:#f7f7f7;--dim:#a6a6a6;--line:#2b2b2b;--accent:#1ed760;font-family:"DM Sans","Segoe UI",Arial,sans-serif;background:var(--bg);color:var(--fg)}
*{box-sizing:border-box}html{height:100%}body{margin:0;background:#000;color:var(--fg);font-size:14px;-webkit-font-smoothing:antialiased}button,input{font:inherit}button{cursor:pointer}button:focus-visible,a:focus-visible,input:focus-visible{outline:2px solid #fff;outline-offset:3px}button:disabled{opacity:.35;cursor:not-allowed}button{border:0;color:inherit;background:none}a{color:inherit;text-decoration:none}[hidden]{display:none!important}
.app-topbar{height:64px;display:flex;align-items:center;gap:20px;padding:0 24px;background:#080808;position:relative;z-index:20;border-bottom:1px solid #171717}.top-back{width:34px;height:34px;background:#202020;border-radius:50%;display:grid;place-items:center;font-size:30px;line-height:1;color:#c9c9c9}.top-back:hover{background:#303030;color:white}.top-brand{display:flex;align-items:center;gap:9px;font-size:16px;font-weight:800;white-space:nowrap}.top-brand span:not(.brand-glyph){font-weight:500;color:#aaa}.brand-glyph{font-size:21px;color:#1ed760}.top-search{height:43px;max-width:470px;width:100%;border:1px solid transparent;background:#242424;border-radius:26px;text-align:left;color:#aaa;display:flex;align-items:center;gap:12px;padding:0 17px;transition:.18s}.top-search>span{font-size:24px;line-height:1}.top-search:hover{background:#303030;border-color:#4b4b4b}.top-search kbd{font-size:10px;background:#393939;border:1px solid #555;color:#ddd;padding:4px 7px;border-radius:5px;margin-left:auto}.top-spacer{flex:1}.premium-chip{font-weight:800;font-size:12px;white-space:nowrap;color:#111;background:#d8f9dd;border-radius:50px;padding:8px 14px}
.layout{display:grid;grid-template-columns:258px minmax(0,1fr);gap:8px;padding:8px 8px 104px;min-height:calc(100vh - 64px)}.side{background:#121212;border-radius:9px;min-width:0;padding:22px 11px;display:flex;flex-direction:column;gap:6px}.side>.back,.side>.brand{display:none}.side .tiny{color:#898989;font-size:11px;letter-spacing:.35px;font-weight:800;margin:10px 13px 8px}.side nav{display:grid;gap:3px}.side nav button{width:100%;text-align:left;font-weight:800;color:#b3b3b3;border-radius:6px;padding:13px 15px;background:none;font-size:14px;transition:background .15s}.side nav button:hover{background:#242424;color:white}.side nav button.active{background:#272727;color:white}.side .rule{height:1px;background:#303030;margin:16px 10px 6px}.library-caption{padding:6px 13px 12px;display:grid;gap:3px}.library-caption strong{font-size:15px}.library-caption small{font-size:11px;color:#999}.side .genre{color:#b3b3b3;font-size:13px;line-height:1.35;padding:10px 13px;border-radius:6px;font-weight:600;text-align:left;background:transparent}.side .genre:hover{background:#242424;color:white}.side-note{margin-top:auto;color:#818181;padding:18px 12px 5px;display:grid;gap:6px;border-top:1px solid #292929}.side-note strong{color:#bcbcbc;font-size:12px}.side-note small{font-size:11px;line-height:1.6}
.stage{min-width:0;border-radius:9px;background:linear-gradient(#232d2b 0,#191c1b 170px,#181818 380px);padding:0 clamp(24px,3.2vw,46px) 50px;overflow:hidden}.header{height:100px;display:flex;align-items:center;justify-content:space-between;gap:24px}.eyebrow{display:block;color:#b2b9b6;font-size:10px;letter-spacing:1.1px;font-weight:800;margin-bottom:8px}.header h1{margin:0;font-size:clamp(24px,2.8vw,32px);font-weight:800;letter-spacing:-.9px}.account{display:flex;align-items:center;gap:12px;flex-wrap:wrap}.account #accountName{color:#cecece;max-width:155px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:12px}.primary{background:#1ed760;color:#000;border:0;border-radius:999px;padding:12px 20px;font-weight:800;line-height:1.2;transition:transform .16s,background .16s}.primary:hover{background:#39e675;transform:scale(1.03)}.outline{background:#282828;border:1px solid #555;border-radius:999px;padding:9px 14px;font-size:12px;font-weight:750;color:white}.outline:hover{background:#373737}.notice{margin:3px 0 20px;background:#21332b;border-left:3px solid #1ed760;border-radius:4px;padding:12px 16px;color:#e7f3e9;font-size:12px;line-height:1.5}.notice.error{background:#392523;border-color:#ff7979;color:#ffdfdc}.setup{border-radius:8px;background:#242424;padding:25px;margin-bottom:24px}.setup h2{margin:0 0 12px;font-size:20px}.setup p{font-size:13px;color:#b3b3b3;line-height:1.7}.setup .settings{display:flex;gap:24px;flex-wrap:wrap}.setup .settings>div{display:grid;gap:7px;max-width:100%}.setup .settings small{color:#999}.setup code{color:#e5e5e5;font-size:12px;overflow-wrap:anywhere}.helper,.muted{color:#b3b3b3;font-size:13px;line-height:1.6}.view{display:none}.view.active{display:block}
.hero{display:grid;grid-template-columns:minmax(0,1.5fr) minmax(175px,.68fr);align-items:center;gap:20px;min-height:257px;padding:29px 36px;background:linear-gradient(108deg,#385b4d 0%,#3e5b58 48%,#5b5b63 100%);border-radius:9px;margin-bottom:35px;position:relative;overflow:hidden}.hero-copy{z-index:1}.hero-chip{font-size:11px;letter-spacing:1px;font-weight:800;color:#d3f6de;margin-bottom:15px}.hero h2{font-size:clamp(38px,4.2vw,62px);letter-spacing:-2.7px;line-height:1.02;margin:0 0 15px;font-weight:800}.hero p{font-size:13px;line-height:1.6;color:#ecf0ee;max-width:410px;margin:0 0 19px}.hero-launch{font-size:13px;padding:13px 21px;background:#fff}.hero-launch:hover{background:#f0f0f0}.hero-visual{width:100%;height:205px;max-width:220px;justify-self:end;border-radius:5px;background:#263d39;box-shadow:0 18px 35px #0007;transform:rotate(6deg);display:grid;place-items:center;overflow:hidden}.hero-visual>img{height:100%;width:100%;object-fit:cover}.hero-placeholder{font-size:85px;color:#b0d7c2;font-weight:600}.hero-visual:has(img:not([hidden])) .hero-placeholder{display:none}
.section-head{display:flex;justify-content:space-between;align-items:end;gap:10px;margin:24px 0 13px}.section-head h2{font-size:22px;letter-spacing:-.5px;margin:0;font-weight:800}.section-head p{font-size:12px;color:#acacac;margin:7px 0 0}
.cards{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px;margin-bottom:30px}.card{min-height:190px;display:flex;flex-direction:column;align-items:flex-start;gap:0;padding:13px;border-radius:8px;text-align:left;background:#222;color:#fff;border:0;transition:background .16s}.card:hover{background:#303030}.card-art{position:relative;width:100%;aspect-ratio:1.7;border-radius:5px;display:grid;place-items:center;background:var(--tile,#353535);overflow:hidden;margin-bottom:13px;box-shadow:0 5px 17px #0004}.card-art img{width:100%;height:100%;object-fit:cover}.card-art .tile-icon{font-size:33px;font-weight:800;color:#ffffffa8}.card-art:has(img:not([hidden])) .tile-icon{display:none}.card strong{font-size:14px;font-weight:800;line-height:1.35;margin:0 0 5px}.card small{color:#a9a9a9;font-size:11px;line-height:1.4}
.results{display:grid;gap:2px;margin-top:15px}.track{display:flex;align-items:center;gap:13px;padding:9px 11px;border-radius:5px;min-height:65px}.track:hover{background:#2e2e2e}.track .num{width:19px;font-size:13px;color:#999;flex:none}.track img{width:46px;height:46px;object-fit:cover;border-radius:3px;flex:none}.track-info{min-width:0;flex:1}.track-info strong{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:13px;font-weight:750}.track-info small{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:12px;color:#aaa;margin-top:5px}.track-actions{display:flex;align-items:center;gap:10px}.track-actions button{background:transparent;color:#bcbcbc;padding:7px;border-radius:999px;font-size:13px}.track-actions button:first-child{color:#171717;background:#1ed760;font-weight:800;padding:9px 15px}.track-actions button:hover{color:white}.track-actions button:first-child:hover{background:#44e87c;color:#000}.track-actions .outline{font-size:12px;padding:6px 11px;background:transparent;border:1px solid #474747;color:#ccc}.track-actions .outline:hover{border-color:#eee;color:#fff}
#searchForm{display:flex;gap:12px;margin:18px 0}#searchInput{flex:1;min-width:0;max-width:780px;border:1px solid #454545;border-radius:6px;background:#2c2c2c;color:white;padding:14px 17px}#searchInput::placeholder{color:#aaa}
.player{position:fixed;z-index:30;bottom:0;left:0;right:0;min-height:90px;background:#111;border-top:1px solid #292929;display:grid;grid-template-columns:minmax(230px,1fr) minmax(360px,1.2fr) minmax(210px,1fr);align-items:center;gap:18px;padding:10px 20px}.song{display:flex;align-items:center;gap:11px;min-width:0}.song img,.song #artPlaceholder{width:56px;height:56px;object-fit:cover;border-radius:3px}.song #artPlaceholder{display:grid;place-items:center;background:#333;color:#e2e2e2;font-size:25px}.song-meta{flex:1;min-width:0}.song-meta strong,.song-meta small{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.song-meta strong{font-size:13px;font-weight:800}.song-meta small{font-size:11px;color:#a8a8a8;margin-top:4px}#favouriteButton{font-size:23px;color:#adadad;padding:4px}#favouriteButton:hover{color:#1ed760}.transport{display:grid;gap:10px}.buttons{display:flex;align-items:center;justify-content:center;gap:18px}.buttons button{font-size:19px;color:#b2b2b2;line-height:1;padding:4px}.buttons button:hover{color:#fff}.buttons button.active{color:#1ed760}.buttons button.play{width:33px;height:33px;display:grid;place-items:center;background:#fff;border-radius:50%;color:#111;font-size:17px}.buttons button.play:hover{transform:scale(1.08);color:#111}.seek{display:flex;align-items:center;gap:9px;color:#a9a9a9;font-size:11px;font-variant-numeric:tabular-nums}.seek span{min-width:32px}.seek span:last-child{text-align:right}
input[type=range]{--progress:0%;appearance:none;-webkit-appearance:none;height:4px;border-radius:9px;background:linear-gradient(to right,#fff var(--progress),#505050 var(--progress));outline:none;cursor:pointer;transition:height .1s}input[type=range]:hover,input[type=range]:focus-visible{height:5px;background:linear-gradient(to right,#1ed760 var(--progress),#545454 var(--progress))}input[type=range]::-webkit-slider-thumb{appearance:none;-webkit-appearance:none;width:0;height:0;border-radius:50%;background:#fff;transition:width .12s,height .12s}input[type=range]:hover::-webkit-slider-thumb,input[type=range]:focus-visible::-webkit-slider-thumb{width:12px;height:12px}input[type=range]::-moz-range-thumb{width:0;height:0;border:0;border-radius:50%;background:#fff}input[type=range]:hover::-moz-range-thumb,input[type=range]:focus-visible::-moz-range-thumb{width:12px;height:12px} .seek input{width:100%;flex:1;min-width:0}.right{display:flex;align-items:center;justify-content:flex-end;gap:10px;font-size:11px;color:#aaa}.right #deviceStatus{max-width:120px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.right .outline{white-space:nowrap;padding:8px 11px}.right input{width:75px;flex:none}
@media(max-width:1100px){.cards{grid-template-columns:repeat(2,minmax(0,1fr))}.player{grid-template-columns:minmax(180px,1fr) minmax(280px,1.2fr) minmax(150px,.8fr)}.right #deviceStatus{display:none}}
@media(max-width:850px){.layout{grid-template-columns:190px minmax(0,1fr)}.side{padding:14px 7px}.stage{padding:0 20px 35px}.hero{grid-template-columns:1fr minmax(115px,.55fr);padding:24px}.hero-visual{height:155px}.player{grid-template-columns:1fr 1fr}.right{display:none}.top-brand{display:none}}
@media(max-width:650px){.app-topbar{height:58px;padding:0 11px;gap:9px}.top-search{flex:1;font-size:12px}.top-search kbd{display:none}.premium-chip{padding:7px;font-size:10px}.layout{display:block;padding:5px 5px 155px}.side{border-radius:7px;display:block;padding:9px;min-height:auto}.side nav{display:flex;justify-content:space-around}.side nav button{font-size:12px;padding:9px}.side .tiny,.side .rule,.side .library-caption,.side .genre,.side .side-note{display:none}.stage{border-radius:7px;padding:0 15px 30px}.header{height:auto;min-height:93px;display:block;padding:20px 0}.header h1{font-size:24px}.account{margin-top:12px}.hero{grid-template-columns:1fr;min-height:218px;margin-bottom:24px;padding:21px}.hero h2{font-size:44px}.hero-visual{position:absolute;right:-32px;bottom:-28px;width:145px;height:145px;opacity:.24}.hero-copy{position:relative;z-index:2}.cards{gap:9px}.card{min-height:140px;padding:9px}.card-art{aspect-ratio:1.55;margin-bottom:9px}.card strong{font-size:12px}.player{grid-template-columns:1fr;gap:7px;padding:9px 14px;min-height:135px}.song img,.song #artPlaceholder{height:37px;width:37px}.song-meta strong{font-size:12px}.buttons{gap:22px}.transport{gap:7px}.track{gap:8px}.track .num{display:none}.track img{height:40px;width:40px}.track-actions{gap:2px}.track-actions button:first-child{font-size:11px;padding:7px}.track-actions .outline{display:none}}
@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;transition:none!important}}

/* Personal Spotify playlist shelf */
.playlist-grid{display:flex;gap:14px;overflow-x:auto;padding:2px 0 18px;margin-bottom:18px;scroll-snap-type:x proximity}
.playlist-card{flex:0 0 174px;min-width:0;display:flex;flex-direction:column;gap:7px;padding:13px;background:#222;border-radius:9px;scroll-snap-align:start}
.playlist-card:hover{background:#2e2e2e}
.playlist-card img{width:100%;aspect-ratio:1;object-fit:cover;border-radius:5px;background:#313131}
.playlist-card strong{font-size:13px;line-height:1.35;overflow:hidden;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2}
.playlist-card small{font-size:11px;color:#aaa;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.playlist-card button{margin-top:auto;background:#1ed760;color:#101010;border-radius:30px;padding:9px 12px;font-weight:800}
.playlist-card a{font-size:11px;color:#ccc;text-align:center;padding:4px}
