:root{color-scheme:dark;font:16px/1.5 'DM Sans',sans-serif;--bg:#101114;--panel:#1a1c21;--text:#f4f1ec;--muted:#999ca7;--line:#303239;--accent:#ff9068}
*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--text)}button,input{font:inherit}button,a,input{outline-offset:4px}button:focus-visible,a:focus-visible,input:focus-visible,summary:focus-visible{outline:2px solid var(--accent)}button{color:inherit;cursor:pointer}a{color:inherit}button{border:0;background:none}button:disabled{opacity:.4;cursor:default}[hidden]{display:none!important}svg{width:20px;height:20px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}.header,.layout,.footer{width:calc(100% - 64px);max-width:1240px;margin-inline:auto}.header{display:flex;align-items:center;justify-content:space-between;gap:28px;padding:32px 0;border-bottom:1px solid #23252a}.brand{display:flex;align-items:center;text-decoration:none;font:800 28px/1 Manrope,sans-serif;letter-spacing:-1.3px}.brand svg{width:29px;height:32px;margin-right:10px;stroke:var(--accent);stroke-width:2.5}.brand>span{color:var(--accent)}.search{display:flex;align-items:center;gap:12px;width:360px;background:#1b1d22;border:1px solid var(--line);border-radius:10px;padding:11px 15px;color:var(--muted)}.search input{background:none;border:0;color:var(--text);width:100%;min-width:0;font-size:16px;outline:0}.search:focus-within{border-color:var(--accent)}.search svg{flex-shrink:0}.search input::placeholder{color:var(--muted)}.layout{display:grid;gap:32px;align-items:start;padding-top:32px;min-height:65vh}.layout:has(.player:not([hidden])){grid-template-columns:minmax(0,1fr) 340px}.catalog{min-width:0}.library-heading{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-bottom:24px}h1{font:700 25px/1.3 Manrope,sans-serif;margin:0;letter-spacing:-.6px}.views{display:flex;gap:4px}.views button{font-size:14px;color:var(--muted);padding:8px 11px;border-radius:7px}.views button.active{background:#292b32;color:var(--text)}.views button:hover{color:var(--text)}#total-count{color:var(--muted);margin-left:4px}.game-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(160px,1fr));gap:25px 20px}.game-card{min-width:0;position:relative}.game-button{padding:0;display:block;text-align:left;width:100%;border-radius:9px}.cover{position:relative;border-radius:9px;overflow:hidden;aspect-ratio:4/3;background:#22252d;border:1px solid #33363d}.cover img{display:block;width:100%;height:100%;object-fit:cover;transition:transform .2s,filter .2s;filter:brightness(.9)}.game-button:hover img{transform:scale(1.04);filter:brightness(1.05)}.game-card.selected .cover{outline:2px solid var(--accent);outline-offset:2px}.game-button h2{font-size:15px;font-weight:500;line-height:1.35;margin:11px 22px 0 0;min-height:2.7em}.favorite{position:absolute;right:-5px;bottom:18px;width:30px;height:30px;border-radius:6px;color:#848893;padding:6px}.favorite svg{width:18px;height:18px}.favorite[aria-pressed=true]{color:var(--accent)}.favorite[aria-pressed=true] svg{fill:var(--accent)}.favorite:hover{background:#2c2e35;color:var(--accent)}.cover-play{position:absolute;inset:0;display:grid;place-items:center;background:#0003;opacity:0;transition:opacity .2s}.cover-play svg{width:40px;height:40px;fill:var(--text);stroke:none;filter:drop-shadow(0 2px 8px #0008)}.game-button:hover .cover-play,.game-button:focus-visible .cover-play{opacity:1}.empty{padding:60px 15px;text-align:center;color:var(--muted)}.text-button{color:var(--accent);font-size:15px;padding:8px}.loading{color:var(--muted)}.player{position:sticky;top:24px;background:var(--panel);border:1px solid var(--line);border-radius:12px;padding:18px;min-width:0}.player-heading{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:16px}.player h2{font:700 19px/1.3 Manrope,sans-serif;margin:0;letter-spacing:-.3px}.close{font-size:26px;color:var(--muted);width:32px;min-width:32px;height:32px;line-height:1;border-radius:6px}.close:hover{background:#303239;color:var(--text)}#provider-panel{background:#101114;border-radius:8px;overflow:hidden;min-height:200px}#provider-panel iframe{display:block;width:100%;height:220px;border:0}#provider-panel:has(iframe[src*="spotify"]) iframe{height:500px}#player-status{font-size:13px;color:var(--muted);margin:12px 0;min-height:20px}#player-status.error{color:#ffb499}.game-controls{display:flex;gap:10px;justify-content:space-between}.game-controls button{font-size:14px;background:#292c33;border-radius:7px;padding:10px 11px}.game-controls button:hover{background:#363940}details{border-top:1px solid var(--line);margin-top:20px;padding-top:14px;font-size:14px;color:var(--muted)}summary{cursor:pointer;width:fit-content}details p{font-size:13px;line-height:1.5;margin:15px 0;color:var(--muted)}#source-buttons{display:flex;gap:8px;margin-bottom:16px}#source-buttons button{border:1px solid #41444e;border-radius:6px;padding:7px 10px;font-size:14px}#source-buttons button[aria-pressed=true]{color:var(--accent);border-color:var(--accent)}.autonext{display:flex;align-items:flex-start;gap:8px;font-size:14px}.autonext input{accent-color:var(--accent);margin:4px 0 0}.retry{background:var(--accent);color:#201710;padding:9px 14px;border-radius:7px;font-size:14px;margin-top:12px}.footer{display:flex;justify-content:space-between;border-top:1px solid #23252a;margin-top:48px;padding:24px 0 32px;color:#828691;font-size:13px}.footer a{text-decoration:none}.footer a:hover{color:var(--accent)}.toast{position:fixed;bottom:24px;left:50%;transform:translate(-50%,12px);opacity:0;background:#f3eee7;color:#202127;padding:10px 17px;border-radius:8px;font-size:14px;pointer-events:none;z-index:50;transition:.2s}.toast.visible{opacity:1;transform:translate(-50%,0)}.skip-link{position:fixed;left:16px;top:-60px;z-index:100;background:var(--accent);color:#111;padding:10px}.skip-link:focus{top:12px}
@media(max-width:1000px){.layout:has(.player:not([hidden])){grid-template-columns:minmax(0,1fr) 310px}.layout{gap:24px}.game-grid{gap:22px 16px}.game-controls button{font-size:13px;padding:10px 8px}}
@media(max-width:760px){.header,.layout,.footer{width:calc(100% - 40px)}.header{padding:24px 0;flex-wrap:wrap;gap:22px}.search{width:100%;order:2}.brand{font-size:27px}.layout,.layout:has(.player:not([hidden])){grid-template-columns:1fr;padding-top:24px;gap:24px}.player{position:static;grid-row:1;padding:18px}.catalog{grid-column:1}.game-grid{grid-template-columns:repeat(3,minmax(0,1fr))}#provider-panel iframe{height:250px}h1{font-size:23px}.game-controls button{font-size:14px;padding:11px 14px}}
@media(max-width:480px){.game-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:20px 16px}.library-heading{gap:10px}.views button{padding:8px;font-size:14px}h1{font-size:21px}.game-button h2{font-size:14px}.favorite{bottom:16px}#provider-panel iframe{height:220px}}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{transition:none!important;scroll-behavior:auto!important}}

.library-heading{flex-wrap:wrap}.game-controls{flex-wrap:wrap}

.game-button h2{min-height:0;margin-bottom:3px}.game-button .availability{display:block;color:var(--muted);font-size:12px;line-height:1.5;min-height:18px}.game-button .availability.ready{color:var(--accent)}.favorite{bottom:17px}#album-label{font-size:13px;color:var(--muted);margin:0 0 16px}#current-song{font-size:16px;font-weight:600;margin:0 0 12px}audio{display:block;width:100%;height:42px;margin:0 0 16px}.track-list{padding:0;margin:20px 0;list-style:none;max-height:390px;overflow-y:auto}.track-list button{display:flex;align-items:center;gap:10px;width:100%;text-align:left;padding:10px 8px;font-size:14px;border-radius:6px}.track-list button:hover{background:#292c33}.track-list button[aria-current=true]{background:#35251f;color:var(--accent)}.track-number{font-size:12px;width:18px;color:var(--muted);flex-shrink:0}.track-name{flex:1}.track-duration{font-size:12px;color:var(--muted);font-variant-numeric:tabular-nums}#missing-audio{font-size:14px;color:var(--muted);line-height:1.6}.views{flex-wrap:wrap}.player{max-height:calc(100dvh - 48px);overflow-y:auto}@media(max-width:760px){.player{max-height:none;overflow-y:visible}.track-list{max-height:330px}}

/* The player is the permanent main surface, above the library. */
.layout,.layout:has(.player:not([hidden])){grid-template-columns:minmax(0,1fr);gap:48px}
.player{position:static;width:100%;max-width:1100px;margin-inline:auto;padding:36px 40px;max-height:none;overflow:visible;scroll-margin-top:24px;border-radius:16px}
.player-heading{justify-content:center;margin-bottom:8px;text-align:center}
.player h2{font-size:clamp(26px,3vw,38px);line-height:1.2;letter-spacing:-1px}
#album-label{text-align:center;font-size:15px;margin-bottom:32px}
.player-content{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.15fr);gap:48px;align-items:center}
.now-playing{min-width:0;text-align:center}
#player-art{display:block;width:210px;height:210px;object-fit:cover;border-radius:10px;margin:0 auto 22px}
#current-song{font-size:22px;line-height:1.35;margin-bottom:18px}
audio{height:54px;margin-bottom:14px}
.game-controls{gap:12px;flex-wrap:nowrap}
.game-controls button{flex:1;padding:12px 8px;font-size:14px}
#player-status{margin-bottom:0;font-size:14px}
.song-list-panel{min-width:0}
.track-list{max-height:none;overflow:visible;margin:0 0 20px}
.track-list button{padding:13px 12px;font-size:16px;min-height:48px}
.track-number,.track-duration{font-size:13px}
.autonext{color:var(--muted);padding-left:12px}
#missing-audio{font-size:18px;text-align:center}
@media(max-width:900px){.player{padding:30px 24px}.player-content{gap:28px}.track-list button{font-size:14px}}
@media(max-width:640px){.layout,.layout:has(.player:not([hidden])){gap:32px}.player{padding:26px 18px}.player-content{grid-template-columns:minmax(0,1fr);gap:24px}#player-art{width:180px;height:180px}#album-label{font-size:14px;margin-bottom:24px}.track-list button{font-size:16px}.game-controls button{font-size:14px}.song-list-panel:has(#missing-audio:not([hidden])){padding-bottom:12px}}

.style-filters{display:flex;flex-wrap:wrap;gap:8px;margin:-4px 0 28px}
.style-filters button{padding:9px 15px;border:1px solid var(--line);border-radius:999px;color:var(--muted);font-size:14px;line-height:1.4;min-height:40px}
.style-filters button:hover{border-color:var(--muted);color:var(--text)}
.style-filters button[aria-pressed=true]{background:var(--accent);border-color:var(--accent);color:#201710}
@media(max-width:640px){.style-filters{gap:8px;margin-bottom:24px}.style-filters button{padding:9px 13px}}

/* Large, integrated streaming player. */
#source-buttons{justify-content:center;margin:20px 0}
#source-buttons button{padding:9px 22px;font-size:15px;border-radius:999px}
#source-buttons button[aria-pressed=true]{background:var(--accent);border-color:var(--accent);color:#201710}
#provider-panel{width:100%;min-height:200px}
#provider-panel iframe{width:100%;height:auto;min-height:200px;aspect-ratio:16/9}
#provider-panel:has(iframe[src*="spotify"]) iframe{height:500px;aspect-ratio:auto}
.player>.game-controls{max-width:520px;margin:20px auto 0}
.player>#player-status{text-align:center;margin:12px 0}
.player>.retry{display:block;margin:12px auto}
#source-title{text-align:center;color:var(--muted);font-size:14px;margin:18px 0 12px}
.player>.autonext{justify-content:center;padding:0}

#youtube-songs{margin:24px 0 18px;border-top:1px solid var(--line);padding-top:20px}
#youtube-songs h3{font-size:17px;font-weight:600;margin:0 0 12px}
#youtube-track-list{max-height:320px;overflow-y:auto;overscroll-behavior:contain;margin:0;scrollbar-color:#555861 transparent}
#youtube-track-list button{padding:11px 12px;min-height:46px}
#youtube-track-list .track-number{width:28px}
#youtube-track-list .track-duration{min-width:58px;text-align:right}
#youtube-tracks-empty{font-size:14px;color:var(--muted);margin:0}

#youtube-source-note{font-size:14px;color:var(--muted);margin:0 0 12px}

.surprise-button{display:inline-flex;align-items:center;justify-content:center;gap:9px;flex-shrink:0;background:var(--accent);color:#201710;border-radius:999px;padding:11px 18px;font-size:15px;font-weight:700;white-space:nowrap}
.surprise-button:hover{background:#ffa17f}.surprise-button svg{width:18px;height:18px}
#source-buttons{flex-wrap:wrap}
@media(max-width:760px){.header{gap:16px}.surprise-button{padding:10px 14px;font-size:14px}}
@media(max-width:420px){.header .brand{font-size:23px;letter-spacing:-1px}.header .brand svg{width:24px;margin-right:7px}.header{column-gap:8px}.surprise-button{padding:10px 12px;gap:6px}}

.catalog-pagination{text-align:center;margin:28px 0 0}.catalog-pagination p{font-size:14px;color:var(--muted)}
#show-more{border:1px solid var(--line);border-radius:999px;padding:12px 24px;background:var(--panel)}#show-more:hover{border-color:var(--accent)}
.game-card .availability{font-size:12px;font-weight:400;margin-top:6px}.game-card .favorite{bottom:20px}
.discovery-message{min-height:220px;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:30px}
.discovery-message p{font-size:20px;margin:0 0 10px}.discovery-message span{color:var(--muted);font-size:14px;max-width:380px}
.game-button h2{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;min-height:2.7em}

#load-more-sentinel{height:1px;width:100%;pointer-events:none}

/* A fixed gateway vista stays behind the player and the scrolling library. */
body{isolation:isolate;--muted:#b4b9c5;--line:#ffffff26;background:#10151f}
body::before{content:"";position:fixed;inset:0;z-index:-1;pointer-events:none;background:linear-gradient(180deg,rgba(8,12,20,.12),rgba(8,12,20,.02) 40%,rgba(8,12,20,.22)),url("assets/realm-open-valley.png") center center/cover no-repeat}
.header{border-bottom-color:#ffffff26;text-shadow:0 2px 12px #000}
.search{background:rgba(15,21,31,.9);text-shadow:none}
.layout,.layout:has(.player:not([hidden])){padding-top:40px}
.player,.catalog{background:rgba(14,20,30,.9);border:1px solid #ffffff26;box-shadow:0 18px 60px #0005;backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px)}
.catalog{padding:32px;border-radius:16px}
.style-filters button{background:#11192588}
.style-filters button[aria-pressed=true]{background:var(--accent)}
.footer{border-top-color:#ffffff26;color:#c4c8d1;text-shadow:0 1px 5px #000}
@media(max-width:760px){.layout,.layout:has(.player:not([hidden])){padding-top:24px}.catalog{padding:24px 18px}}
@media(max-width:480px){.catalog{padding:22px 14px}.game-grid{gap:20px 14px}body::before{background-position:center,65% center}}

/* Keep discovery controls together, with Surprise me in the header corner. */
.header .surprise-button{margin-left:auto}
.catalog-tools{display:flex;align-items:flex-start;gap:24px;margin-bottom:28px}
.catalog-tools .style-filters{flex:1;min-width:0;margin:0}
.catalog-tools .search{flex:0 0 270px;width:270px;order:0}
@media(max-width:900px){.catalog-tools{flex-direction:column;gap:18px}.catalog-tools .search{order:-1;flex:auto;width:100%}}

.player-toolbar{display:grid;grid-template-columns:minmax(0,1fr) 44px;align-items:start;gap:12px;margin:20px 0}
.player-toolbar #source-buttons{margin:0;min-width:0}
.player-favorite{display:grid;place-items:center;width:44px;height:44px;border:1px solid #41444e;border-radius:50%;color:var(--muted)}
.player-favorite:hover{border-color:var(--accent);color:var(--accent)}
.player-favorite[aria-pressed=true]{color:var(--accent);border-color:var(--accent);background:#35251f}
.player-favorite[aria-pressed=true] svg{fill:currentColor}
@media(max-width:640px){.player-toolbar{gap:8px}.player-toolbar #source-buttons{gap:6px}.player-toolbar #source-buttons button{padding:9px 12px;font-size:14px}}

/* Two independent, always-visible category rows. */
.category-groups{flex:1;min-width:0;display:grid;gap:20px}
.category-row h2{font-size:13px;font-weight:600;color:var(--muted);margin:0 0 9px}
.catalog-search-tools{flex:0 0 270px;display:grid;gap:12px}
.catalog-search-tools .search{width:100%}
.random-batch{justify-self:end;border:1px solid var(--line);border-radius:999px;padding:9px 15px;font-size:14px;min-height:40px}
.random-batch:hover{border-color:var(--accent)}
.random-batch[aria-pressed=true]{background:var(--accent);color:#201710;border-color:var(--accent)}
@media(max-width:900px){.catalog-search-tools{order:-1;flex:auto;width:100%;grid-template-columns:minmax(0,1fr) auto;align-items:center}.catalog-search-tools .search{order:0}.category-groups{width:100%}}
@media(max-width:480px){.catalog-search-tools{grid-template-columns:minmax(0,1fr)}.random-batch{justify-self:start}}

.browse-mode{display:flex;align-items:center;gap:6px;flex-wrap:wrap}
.browse-mode>span{font-size:13px;color:var(--muted);margin-right:7px}
.browse-mode button{font-size:14px;font-weight:600;padding:9px 16px;border-radius:8px;min-height:40px;color:var(--muted)}
.browse-mode button[aria-pressed=true]{background:#343e4f;color:var(--text)}
.browse-mode button:hover{color:var(--text)}
.visually-hidden{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}

.source-discovery-status{text-align:center;font-size:13px;color:var(--muted);margin:-8px 0 18px}

.library-progress { color: #e0d6cb; font-size: 13px; margin: -8px 0 20px; line-height: 1.5; }

.layout { padding-bottom: clamp(48px, 6vw, 80px); }

/* Crown equalizer identity */
.header .brand .brand-mark{width:48px;height:48px;object-fit:contain;flex-shrink:0;margin-right:10px}
@media(max-width:420px){.header .brand .brand-mark{width:38px;height:38px;margin-right:7px}}
