:root{line-height:1.5;font-weight:400;font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}body{margin:0;min-width:320px;min-height:100vh}button:hover{cursor:pointer}*{box-sizing:border-box}:root{--app-bg: #090d0b;--panel-bg: rgba(14, 22, 18, .88);--panel-border: rgba(167, 255, 202, .16);--text-primary: #f3f8f4;--text-secondary: rgba(243, 248, 244, .72);--spotify-green: #1ed760;--danger: #ff7e72}html,body,#root{width:100%;height:100%;margin:0}body{overflow:hidden;background:#e8e8e8;font-family:Avenir Next,Helvetica Neue,sans-serif}button{font:inherit}code{font-family:SFMono-Regular,Consolas,Liberation Mono,monospace}.app-shell{width:100%;height:100%}.app-shell__auth-indicator{position:fixed;top:18px;right:18px;z-index:20;display:inline-flex;align-items:center;flex-wrap:wrap;gap:12px;padding:10px 14px;border:1px solid rgba(255,255,255,.12);border-radius:999px;background:#0a100cc2;-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);color:var(--text-primary)}.app-shell__auth-indicator button{border:1px solid rgba(255,255,255,.12);border-radius:999px;padding:8px 12px;background:#ffffff0a;color:var(--text-primary)}.spotify-auth-screen{position:relative;display:grid;place-items:center;width:100%;height:100%;padding:24px;overflow:hidden}.spotify-auth-screen__glow{position:absolute;width:38vw;aspect-ratio:1;border-radius:999px;filter:blur(48px);opacity:.58;pointer-events:none}.spotify-auth-screen__glow--left{left:-10vw;bottom:-8vw;background:#1ed7603d}.spotify-auth-screen__glow--right{top:-12vw;right:-10vw;background:#587cff33}.spotify-auth-card{position:relative;z-index:1;width:min(560px,100%);padding:clamp(28px,4vw,42px);border:1px solid var(--panel-border);border-radius:28px;background:linear-gradient(180deg,#ffffff14,#ffffff08),var(--panel-bg);box-shadow:0 30px 80px #00000057;-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px)}.spotify-auth-card--loading{text-align:center}.spotify-auth-card__eyebrow{margin:0 0 14px;color:#a7ffcac7;font-size:.78rem;font-weight:700;letter-spacing:.18em;text-transform:uppercase}.spotify-auth-card__title{margin:0;font-size:clamp(2.2rem,5vw,4.8rem);line-height:.95;letter-spacing:-.05em;color:#e8e8e8}.spotify-auth-card__copy,.spotify-auth-card__meta,.spotify-auth-card__status{color:var(--text-secondary)}.spotify-auth-card__copy{margin:18px 0 0;max-width:46ch;font-size:1rem}.spotify-auth-card__status{margin:22px 0 0}.spotify-auth-card__status--error{color:var(--danger)}.spotify-auth-card__status--success{color:#a7ffcaeb}.spotify-auth-card__primary-action,.spotify-auth-card__secondary-action{margin-top:26px;border:0;border-radius:999px;padding:15px 22px}.spotify-auth-card__primary-action{background:var(--spotify-green);color:#07120b;font-weight:700}.spotify-auth-card__primary-action:disabled{cursor:progress;opacity:.7}.spotify-auth-card__secondary-action{background:#ffffff14;color:var(--text-primary)}.spotify-auth-card__meta{margin:18px 0 0;font-size:.92rem}.spotify-auth-card__progress{margin-top:22px;width:100%;height:10px;border-radius:999px;background:#ffffff14;overflow:hidden}.spotify-auth-card__progress-fill{height:100%;border-radius:inherit;background:linear-gradient(90deg,rgba(30,215,96,.72),var(--spotify-green));transition:width .28s ease}.scene{position:fixed;inset:0}.gallery{position:absolute;inset:0}.block{position:absolute;border:none;padding:0;cursor:pointer;background-size:cover;background-position:center;background-repeat:no-repeat;transform-origin:0 0;box-shadow:0 10px 30px #0000002e;transition:width .45s ease,height .45s ease,box-shadow .3s ease,transform .3s ease,outline-color .3s ease}.block--active{outline:3px solid rgba(30,215,96,.95);outline-offset:4px;box-shadow:0 0 0 8px #1ed76029,0 18px 40px #00000047}.block--small{width:36px;height:36px}.block--medium{width:60px;height:60px}.block--large{width:88px;height:88px}.spotify-embed-player{position:fixed;right:18px;bottom:18px;width:min(420px,calc(100vw - 36px));z-index:30;overflow:hidden;border-radius:18px;box-shadow:0 22px 50px #00000038}.spotify-embed-player__frame{width:100%;min-height:80px}@media(max-width:720px){.app-shell__auth-indicator{left:18px;right:18px;border-radius:24px}.spotify-embed-player{left:18px;width:auto}}.cluster-label{position:absolute;top:0;left:0;max-width:320px;color:#4b4b4b3d;font-size:clamp(1.15rem,2vw,2rem);font-weight:600;letter-spacing:-.04em;line-height:.94;pointer-events:none;-webkit-user-select:none;user-select:none;white-space:pre-wrap}@media(max-width:720px){.app-shell__auth-indicator{left:14px;right:14px;justify-content:space-between}.spotify-auth-card{border-radius:22px}}.scene-cluster-scrollbar{position:fixed;top:50%;right:1.5rem;transform:translateY(-50%);z-index:24;display:flex;align-items:center;gap:.85rem;touch-action:none}.scene-cluster-scrollbar__track{position:relative;width:8px;height:min(58vh,520px);border-radius:999px;background:#00000014;cursor:pointer}.scene-cluster-scrollbar__thumb{position:absolute;left:50%;width:14px;height:14px;border-radius:50%;background:#585858e6;transform:translate(-50%,-50%);box-shadow:0 4px 12px #00000024;transition:top .18s ease-out}.scene-cluster-scrollbar__labels{display:flex;flex-direction:column;align-items:flex-end;gap:.45rem;max-width:220px}.scene-cluster-scrollbar__label{border:none;padding:.35rem .65rem;border-radius:10px;background:#dededec2;color:#444444d1;font-size:.9rem;line-height:1.1;text-align:right;cursor:pointer;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);transition:background .2s ease,color .2s ease,transform .2s ease}.scene-cluster-scrollbar__label:hover{background:#e8e8e8f2;transform:translate(-2px)}.scene-cluster-scrollbar__label.is-active{background:#fffffff5;color:#1c1c1ceb}@media(max-width:700px){.scene-cluster-scrollbar{right:.75rem;gap:.55rem}.scene-cluster-scrollbar__track{height:42vh}.scene-cluster-scrollbar__labels{max-width:132px}.scene-cluster-scrollbar__label{font-size:.76rem;padding:.3rem .5rem}}.filter-sidebar{position:fixed;left:2rem;top:50%;transform:translateY(-50%);z-index:20;display:flex;flex-direction:column;align-items:flex-start;gap:.75rem}.filter-sidebar__label{font-size:.72rem;font-weight:600;text-transform:uppercase;letter-spacing:.14em;color:#0000005c;margin-bottom:.15rem}.filter-sidebar__btn{min-width:144px;padding:.75rem 1rem;font-size:.95rem;text-align:center;border-radius:14px;border:1px solid transparent;background:#ffffff9e;color:#222222bd;cursor:pointer;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);transition:background .2s,border-color .2s,color .2s,transform .2s}.filter-sidebar__btn:hover{background:#ffffffe6;border-color:#00000014;transform:translate(4px)}.filter-sidebar__btn.is-active{background:#fffffffa;color:#222222f0;border-color:#00000014}@media(max-width:700px){.filter-sidebar{right:1rem;left:1rem;top:auto;bottom:1rem;transform:none;flex-direction:row;align-items:center;justify-content:center;flex-wrap:wrap}.filter-sidebar__label{width:100%;text-align:center}.filter-sidebar__btn{min-width:112px}}.filter-sidebar__btn.is-loading{opacity:.45;cursor:default;pointer-events:none;animation:filter-btn-pulse 1.4s ease-in-out infinite}@keyframes filter-btn-pulse{0%,to{opacity:.45}50%{opacity:.25}}.playlist-btn{position:fixed;top:2rem;left:2rem;z-index:20;min-width:144px;padding:.75rem 1rem;font-size:.95rem;text-align:center;border-radius:14px;border:1px solid transparent;background:#ffffff9e;color:#222222bd;cursor:pointer;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);transition:background .2s,border-color .2s,color .2s,transform .2s}.playlist-btn:hover{background:#ffffffe6;border-color:#00000014;transform:translateY(-1px)}.playlist-btn--active{background:#1ed7602e;border-color:#1ed76080;color:#1ed760}.playlist-btn--active:hover{background:#1ed76047;border-color:#1ed760cc}.playlist-mode-frame{position:fixed;inset:0;border:5px solid #1ed760;pointer-events:none;z-index:50;border-radius:0;box-shadow:0 0 24px #1ed76026 inset}.playlist-toast{position:fixed;bottom:2rem;left:50%;transform:translate(-50%);background:#090d0bd9;border:1px solid rgba(30,215,96,.6);color:#fff;padding:.6rem 1.4rem;border-radius:99px;font-size:.9rem;z-index:70;white-space:nowrap;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}.playlist-modal-overlay{position:fixed;inset:0;background:#0009;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);z-index:60;display:flex;align-items:center;justify-content:center}.playlist-modal{background:#0e1611f7;border:1px solid rgba(255,255,255,.08);border-radius:16px;padding:2rem;width:90%;max-width:440px;max-height:80vh;display:flex;flex-direction:column;gap:1rem;overflow:hidden}.playlist-modal__title{font-size:1.1rem;font-weight:600;color:#fff;margin:0}.playlist-modal__create-row{display:flex;align-items:center;gap:.75rem;padding:.75rem 1rem;border-radius:10px;border:1px solid rgba(30,215,96,.3);background:#1ed76014;color:#1ed760;cursor:pointer;font-size:.95rem;text-align:left;transition:background .15s,border-color .15s}.playlist-modal__create-row:hover{background:#1ed76026;border-color:#1ed76099}.playlist-modal__create-icon{font-size:1.2rem;line-height:1}.playlist-modal__list{list-style:none;margin:0;padding:0;overflow-y:auto;display:flex;flex-direction:column;gap:.25rem;flex:1}.playlist-modal__item{display:flex;align-items:center;gap:.75rem;width:100%;padding:.6rem .75rem;border-radius:8px;border:none;background:transparent;color:#fff;cursor:pointer;text-align:left;transition:background .15s}.playlist-modal__item:hover{background:#ffffff12}.playlist-modal__item-img{width:44px;height:44px;border-radius:4px;object-fit:cover;flex-shrink:0}.playlist-modal__item-img--placeholder{background:#ffffff1a}.playlist-modal__item-info{display:flex;flex-direction:column;gap:.15rem;overflow:hidden}.playlist-modal__item-name{font-size:.95rem;color:#fff;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.playlist-modal__item-count{font-size:.78rem;color:#fff6}.playlist-modal__status{font-size:.88rem;color:#ffffff80;margin:0;padding:.5rem 0}.playlist-modal__status--error{color:#ff5050d9}.playlist-modal__cancel{background:transparent;border:1px solid rgba(255,255,255,.15);color:#ffffff8c;padding:.6rem 1.2rem;border-radius:8px;cursor:pointer;font-size:.9rem;transition:border-color .15s,color .15s}.playlist-modal__cancel:hover{border-color:#ffffff59;color:#ffffffd9}.playlist-modal__form{display:flex;flex-direction:column;gap:.75rem}.playlist-modal__input{width:100%;padding:.7rem 1rem;background:#ffffff0f;border:1px solid rgba(255,255,255,.12);border-radius:8px;color:#fff;font-size:.95rem;outline:none;box-sizing:border-box;transition:border-color .15s;font-family:inherit}.playlist-modal__input:focus{border-color:#1ed76080}.playlist-modal__input::placeholder{color:#ffffff4d}.playlist-modal__textarea{resize:none}.playlist-modal__actions{display:flex;gap:.75rem;justify-content:flex-end}.playlist-modal__confirm{background:#1ed760;border:none;color:#000;padding:.6rem 1.4rem;border-radius:8px;cursor:pointer;font-size:.9rem;font-weight:600;transition:background .15s,opacity .15s}.playlist-modal__confirm:hover{background:#23f06e}.playlist-modal__confirm:disabled{opacity:.4;cursor:not-allowed}.playlist-modal__cancel:disabled{opacity:.4;cursor:not-allowed}
