:root{--bg: #0a0a0a;--ink: #ededed;--ink-dim: rgba(237, 237, 237, .55);--ink-mute: rgba(237, 237, 237, .32);--line: rgba(237, 237, 237, .08);--line-2: rgba(237, 237, 237, .15);--accent: #b07bff;--panel: rgba(10, 10, 10, .78);--blur: saturate(140%) blur(18px)}*{box-sizing:border-box;margin:0;padding:0}html,body{height:100%;overflow:hidden;background:var(--bg);color:var(--ink);font-family:Space Grotesk,system-ui,-apple-system,sans-serif;-webkit-font-smoothing:antialiased;user-select:none;-webkit-user-select:none;overscroll-behavior:none}a,button,input{color:inherit;font-family:inherit}input{user-select:text;-webkit-user-select:text}#viz-canvas{position:fixed;inset:0;width:100%;height:100%;display:block;z-index:0;touch-action:none;cursor:grab}#viz-canvas:active{cursor:grabbing}.grain{position:fixed;inset:-50%;pointer-events:none;z-index:1;opacity:.06;mix-blend-mode:overlay;background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='200' height='200'><filter id='n'><feTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='2' stitchTiles='stitch'/></filter><rect width='100%25' height='100%25' filter='url(%23n)' opacity='0.9'/></svg>");animation:grain 1.2s steps(6) infinite}@keyframes grain{0%{transform:translate(0)}20%{transform:translate(-2%,1%)}40%{transform:translate(1%,-2%)}60%{transform:translate(-1%,2%)}80%{transform:translate(2%,1%)}to{transform:translate(0)}}#vhs-overlay{position:fixed;inset:0;pointer-events:none;z-index:1;overflow:hidden}.vhs__glow{position:absolute;inset:0;background:radial-gradient(ellipse at 50% 34%,rgba(82,38,105,.24) 0%,transparent 52%),radial-gradient(ellipse at 50% 90%,rgba(26,52,118,.26) 0%,transparent 52%);mix-blend-mode:screen}.vhs__scan{position:absolute;inset:0;background:repeating-linear-gradient(0deg,rgba(0,0,0,.09) 0px,rgba(0,0,0,.09) 1px,transparent 1px,transparent 3px);mix-blend-mode:multiply}.vhs__vignette{position:absolute;inset:0;background:radial-gradient(ellipse at center,transparent 46%,rgba(0,0,0,.65) 100%)}.vhs__bar{position:absolute;left:0;right:0;top:-4%;height:3%;background:linear-gradient(180deg,transparent 0%,rgba(255,255,255,.018) 50%,transparent 100%);mix-blend-mode:screen;filter:blur(2px);animation:vhsBarDrift 13s linear infinite;animation-delay:-5s}@keyframes vhsBarDrift{0%{top:-4%}to{top:104%}}.logo{font-family:Righteous,sans-serif;font-weight:400;letter-spacing:-.02em;text-transform:lowercase;color:var(--ink)}.logo--xl{font-size:clamp(4.2rem,13vw,11rem);line-height:.85;font-weight:400;letter-spacing:-.04em}.logo--sm{font-size:1.3rem;letter-spacing:-.03em;font-weight:500}.intro{position:fixed;inset:0;z-index:100;display:flex;align-items:center;justify-content:center;background:transparent;overflow:hidden;animation:introFade .9s steps(20) forwards;animation-delay:1.6s;pointer-events:none}.intro:before{content:"";position:absolute;inset:-20%;background:none;animation:introBgShift 1.4s steps(8) infinite}@keyframes introBgShift{0%,to{transform:translate(0)}20%{transform:translate(-1%,.5%)}40%{transform:translate(.5%,-1%)}60%{transform:translate(-.5%,1%)}80%{transform:translate(1%,-.5%)}}.intro__vhs{position:absolute;inset:0;pointer-events:none;overflow:hidden;background:transparent}.intro__vhs-noise{position:absolute;inset:-10%;background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='220' height='220' viewBox='0 0 220 220'><filter id='n'><feTurbulence type='fractalNoise' baseFrequency='0.95' numOctaves='2' stitchTiles='stitch'/><feColorMatrix values='0 0 0 0 1  0 0 0 0 1  0 0 0 0 1  0 0 0 0.55 0'/></filter><rect width='100%' height='100%' filter='url(%23n)' opacity='0.85'/></svg>");background-size:220px 220px;mix-blend-mode:screen;opacity:.07;animation:vhsNoise .18s steps(6) infinite}@keyframes vhsNoise{0%{transform:translate(0)}16%{transform:translate(-3%,2%)}33%{transform:translate(2%,-3%)}50%{transform:translate(-2%,-2%)}66%{transform:translate(3%,1%)}83%{transform:translate(-1%,3%)}to{transform:translate(0)}}.intro__vhs:after,.intro__vhs-bars{content:"";position:absolute;inset:0;pointer-events:none}.intro__vhs:after{background:repeating-linear-gradient(0deg,rgba(0,0,0,.14) 0px,rgba(0,0,0,.14) 1px,transparent 1px,transparent 3px);mix-blend-mode:multiply;opacity:.8}.intro__vhs-bars{background:repeating-linear-gradient(0deg,transparent 0px,transparent 60px,rgba(255,255,255,.03) 60px,rgba(255,255,255,.03) 62px,transparent 62px,transparent 120px);mix-blend-mode:screen;animation:vhsBarsSlide 5.2s linear infinite}@keyframes vhsBarsSlide{0%{transform:translateY(0)}to{transform:translateY(120px)}}.intro__vhs-track{position:absolute;left:-5%;right:-5%;top:-20%;height:14%;background:linear-gradient(180deg,transparent 0%,rgba(255,255,255,0) 30%,rgba(255,255,255,.12) 45%,rgba(255,255,255,.28) 50%,rgba(255,255,255,.12) 55%,rgba(255,255,255,0) 70%,transparent 100%);mix-blend-mode:screen;filter:blur(1px);animation:vhsTrack 2.6s steps(80) forwards}@keyframes vhsTrack{0%{top:-20%;opacity:0}6%{opacity:.9}18%{top:110%;opacity:1}19%,46%{opacity:0;top:-20%}52%{top:-20%;opacity:.9}68%{top:110%;opacity:1}69%,88%{opacity:0;top:-20%}92%{top:-20%;opacity:.95}to{top:110%;opacity:0}}.intro__vhs-vignette{position:absolute;inset:0;background:radial-gradient(ellipse at center,transparent 50%,rgba(0,0,0,.75) 100%);mix-blend-mode:multiply;pointer-events:none}.intro__logo{position:relative;margin:0;padding:.05em .18em;color:transparent}.intro__layer{position:absolute;top:.05em;left:0;right:0;display:block;text-align:center;white-space:nowrap;will-change:transform,opacity,clip-path}.intro__layer--base{position:static;text-align:left;color:var(--ink);animation:glitchBase 1.6s steps(40) forwards}.intro__layer--r{color:#ff2d3a;mix-blend-mode:screen;animation:glitchR 1.6s steps(40) forwards}.intro__layer--g{color:#2dffb1;mix-blend-mode:screen;animation:glitchG 1.6s steps(40) forwards}.intro__layer--b{color:#2dabff;mix-blend-mode:screen;animation:glitchB 1.6s steps(40) forwards}@keyframes glitchBase{0%{opacity:0;transform:translate(0) skew(0) scaleY(1);clip-path:inset(0 0 100% 0);filter:none}3%{opacity:1;clip-path:inset(0 0 0 0);transform:translate(-22px,6px) skew(-12deg);filter:invert(1)}6%{transform:translate(18px,-5px) skew(7deg);clip-path:inset(45% 0 30% 0);filter:none}9%{transform:translate(-10px) skew(-3deg) scaleY(1.15);clip-path:inset(0 0 60% 0)}12%{transform:translate(6px,8px) skew(2deg);clip-path:polygon(0 0,100% 0,100% 22%,0 28%,0 60%,100% 55%,100% 78%,0 82%,0 100%,100% 100%)}16%{transform:translate(-3px) skew(0);clip-path:inset(0 0 0 0)}20%{transform:translate(0) skew(0);clip-path:inset(20% 0 50% 0);filter:invert(1)}24%{transform:translate(-8px);clip-path:inset(0 0 0 0);filter:none}28%{transform:translate(0) skew(0);clip-path:inset(0 0 0 0)}40%{transform:translate(1px)}44%{transform:translate(-1px)}60%{transform:translate(0)}74%{transform:translate(0);clip-path:inset(0 0 0 0)}78%{transform:translate(-14px,2px) skew(5deg);clip-path:polygon(0 0,100% 0,100% 30%,0 35%,0 65%,100% 60%,100% 100%,0 100%)}84%{transform:translate(18px,-4px) skew(-6deg);clip-path:inset(30% 0 35% 0);filter:invert(1)}90%{transform:translate(-22px,8px) skew(8deg) scaleY(.6);clip-path:inset(0 0 70% 0);opacity:.7;filter:none}96%{transform:translate(10px,-12px) scaleY(.15);opacity:.5;filter:blur(2px)}to{opacity:0;transform:translateY(-20px) scaleY(0);filter:blur(8px)}}@keyframes glitchR{0%,to{opacity:0;transform:translate(0)}3%{opacity:1;transform:translate(-26px,3px);clip-path:inset(10% 0 60% 0)}7%{opacity:.95;transform:translate(22px,-6px);clip-path:inset(55% 0 15% 0)}11%{opacity:.85;transform:translate(-14px,2px);clip-path:inset(0 0 40% 0)}15%{opacity:.7;transform:translate(8px,4px);clip-path:polygon(0 20%,100% 25%,100% 45%,0 50%)}20%{opacity:.5;transform:translate(3px);clip-path:inset(20% 0 50% 0)}28%{opacity:.15;transform:translate(0)}44%{opacity:.35;transform:translate(-4px)}48%{opacity:.1;transform:translate(0)}60%{opacity:.12;transform:translate(-1px)}78%{opacity:.85;transform:translate(-20px,3px);clip-path:inset(40% 0 20% 0)}86%{opacity:.7;transform:translate(16px,-4px);clip-path:polygon(0 0,100% 0,100% 40%,0 50%)}94%{opacity:.45;transform:translate(-10px,8px) scaleY(.4);clip-path:inset(0 0 70% 0)}}@keyframes glitchG{0%,to{opacity:0;transform:translate(0)}5%{opacity:.8;transform:translate(14px,-3px);clip-path:inset(40% 0 25% 0)}10%{opacity:.9;transform:translate(-18px,5px);clip-path:inset(0 0 55% 0)}16%{opacity:.65;transform:translate(8px);clip-path:polygon(0 30%,100% 35%,100% 70%,0 65%)}22%{opacity:.5;transform:translate(-4px)}30%{opacity:.08;transform:translate(0)}46%{opacity:.25;transform:translate(3px)}60%{opacity:.08}82%{opacity:.65;transform:translate(12px,-5px);clip-path:inset(15% 0 60% 0)}90%{opacity:.5;transform:translate(-8px,4px) scaleY(.5);clip-path:inset(0 0 50% 0)}96%{opacity:.3;transform:translateY(6px)}}@keyframes glitchB{0%,to{opacity:0;transform:translate(0)}3%{opacity:.9;transform:translate(18px,4px);clip-path:inset(0 0 50% 0)}8%{opacity:.95;transform:translate(-16px,-4px);clip-path:inset(30% 0 30% 0)}14%{opacity:.65;transform:translate(10px);clip-path:polygon(0 50%,100% 55%,100% 80%,0 85%)}20%{opacity:.55;transform:translate(-3px,2px);clip-path:inset(60% 0 10% 0)}28%{opacity:.15;transform:translate(0)}44%{opacity:.3;transform:translate(4px)}60%{opacity:.12;transform:translate(1px)}80%{opacity:.7;transform:translate(18px,-3px);clip-path:inset(50% 0 20% 0)}88%{opacity:.5;transform:translate(-14px,5px);clip-path:polygon(0 0,100% 0,100% 45%,0 35%)}94%{opacity:.35;transform:translate(8px,8px) scaleY(.35);clip-path:inset(0 0 60% 0)}}@keyframes scanSweep{0%{top:-10%;opacity:0}4%{opacity:1}18%{top:110%;opacity:1}19%,50%{opacity:0}54%{top:-10%;opacity:1}68%{top:110%;opacity:1}69%,88%{opacity:0}92%{top:-10%;opacity:1}to{top:110%;opacity:0}}.intro__scan{position:absolute;left:-5%;right:-5%;height:6%;top:0;background:linear-gradient(to bottom,transparent 0%,rgba(176,123,255,0) 40%,rgba(176,123,255,.55) 50%,rgba(176,123,255,0) 60%,transparent 100%);mix-blend-mode:screen;filter:blur(2px);animation:scanSweep 1.6s cubic-bezier(.7,0,.3,1) forwards}@keyframes introFade{0%{opacity:1}85%{opacity:1}to{opacity:0;visibility:hidden}}.topbar{position:fixed;top:0;left:0;right:0;z-index:25;display:flex;justify-content:space-between;align-items:center;padding:1.4rem 1.6rem;pointer-events:none}.topbar>*{pointer-events:auto}.icon-btn{width:40px;height:40px;display:inline-flex;align-items:center;justify-content:center;background:var(--panel);-webkit-backdrop-filter:var(--blur);backdrop-filter:var(--blur);border:1px solid var(--line);border-radius:4px;color:var(--ink);cursor:pointer;transition:border-color .22s,background .22s,box-shadow .22s}.icon-btn:hover{border-color:var(--line-2)}#playlist-toggle{position:relative;overflow:hidden}#playlist-toggle svg{position:absolute;transition:opacity .22s cubic-bezier(.22,.61,.36,1),transform .22s cubic-bezier(.22,.61,.36,1)}#playlist-toggle .icon-menu{opacity:1;transform:rotate(0) scale(1)}#playlist-toggle .icon-close{opacity:0;transform:rotate(-45deg) scale(.65)}#playlist-toggle.is-active .icon-menu{opacity:0;transform:rotate(45deg) scale(.65)}#playlist-toggle.is-active .icon-close{opacity:1;transform:rotate(0) scale(1)}#playlist-toggle{transition:width .22s cubic-bezier(.22,.61,.36,1),height .22s cubic-bezier(.22,.61,.36,1),border-color .22s,background .22s,box-shadow .22s}#playlist-toggle.is-active{width:32px;height:32px;border-color:#b07bffa6;background:#b07bff1a;box-shadow:0 0 14px #b07bff33}.icon-btn--sm{width:32px;height:32px;font-size:1.3rem;line-height:1}@keyframes toastIn{0%{opacity:0;clip-path:inset(50% 0 50% 0);transform:translate(-50%,calc(-50% + 4px))}7%{opacity:1;clip-path:inset(0 0 0 0);transform:translate(calc(-50% + 6px),calc(-50% - 12px)) skew(-3deg);filter:hue-rotate(24deg) brightness(1.3)}15%{clip-path:inset(28% 0 44% 0);transform:translate(calc(-50% - 4px),calc(-50% - 9px));filter:none}24%{clip-path:inset(0 0 0 0);transform:translate(-50%,calc(-50% - 11px))}32%{clip-path:inset(12% 0 60% 0);transform:translate(calc(-50% + 3px),calc(-50% - 9px)) skew(1.5deg)}40%{clip-path:inset(0 0 0 0);transform:translate(-50%,calc(-50% - 10px))}54%{transform:translate(calc(-50% + 1px),calc(-50% - 8px))}to{opacity:1;clip-path:inset(0 0 0 0 round 8px);transform:translate(-50%,calc(-50% - 8px));filter:none}}@keyframes toastOut{0%{opacity:1;clip-path:inset(0 0 0 0 round 8px);transform:translate(-50%,calc(-50% - 8px))}18%{clip-path:inset(20% 0 52% 0);transform:translate(calc(-50% - 6px),calc(-50% - 8px)) skew(4deg);filter:hue-rotate(-20deg) brightness(1.2)}34%{clip-path:inset(60% 0 8% 0);transform:translate(calc(-50% + 5px),calc(-50% - 7px));filter:none}52%{opacity:.65;clip-path:inset(0 0 76% 0);transform:translate(-50%,calc(-50% - 10px))}72%{opacity:.3;clip-path:inset(84% 0 0 0)}to{opacity:0;clip-path:inset(100% 0 0 0);transform:translate(-50%,calc(-50% - 14px))}}.toast{position:fixed;top:50%;left:50%;transform:translate(-50%,-50%);z-index:8;padding:1.3rem 1.8rem;background:#0000008c;-webkit-backdrop-filter:var(--blur);backdrop-filter:var(--blur);border:1px solid var(--line);border-radius:8px;text-align:center;min-width:280px;max-width:80vw;opacity:0;pointer-events:none;clip-path:inset(0 0 0 0 round 8px)}.toast.is-visible{animation:toastIn .44s steps(16) forwards;pointer-events:auto}.toast.is-hiding{animation:toastOut .36s steps(12) forwards;pointer-events:none}.toast__label{font-family:JetBrains Mono,monospace;font-size:.6rem;letter-spacing:.3em;text-transform:uppercase;color:var(--ink-mute);margin-bottom:.6rem}.toast__title{font-size:1.3rem;font-weight:500;margin-bottom:.2rem}.toast__artist{font-family:JetBrains Mono,monospace;font-size:.8rem;color:var(--ink-dim);letter-spacing:.05em}.toast__meta{margin-top:.8rem;display:flex;gap:.4rem;justify-content:center;flex-wrap:wrap;font-family:JetBrains Mono,monospace;font-size:.6rem;color:var(--ink-mute);text-transform:uppercase;letter-spacing:.15em}.toast__meta span{padding:.15rem .45rem;border:1px solid var(--line)}.playlist{position:fixed;top:0;right:0;bottom:0;width:min(420px,92vw);z-index:20;background:var(--panel);-webkit-backdrop-filter:var(--blur);backdrop-filter:var(--blur);border-left:1px solid var(--line);transform:translate(105%);transition:transform .45s cubic-bezier(.22,.61,.36,1);display:flex;flex-direction:column;padding-top:env(safe-area-inset-top)}@media (max-width: 720px){.playlist{width:100vw;border-left:none;background:#080612f2}#viz-canvas,#vhs-overlay,#grain{transition:opacity .42s ease}body.sidebar-open #viz-canvas,body.sidebar-open #vhs-overlay,body.sidebar-open #grain{opacity:0;pointer-events:none}}.playlist.is-open{transform:translate(0)}.playlist__head{display:flex;align-items:center;padding:1.8rem 1.4rem 1.2rem;font-family:JetBrains Mono,monospace;font-size:.7rem;text-transform:uppercase;letter-spacing:.25em;color:var(--ink-dim)}.playlist__search{display:flex;align-items:center;gap:.5rem;margin:.6rem 1.4rem;padding:.5rem .7rem;background:#ffffff0a;border:1px solid var(--line);color:var(--ink-dim)}.playlist__search input{flex:1;background:transparent;border:none;outline:none;color:var(--ink);font-size:.85rem;font-family:JetBrains Mono,monospace}@media (max-width: 720px){.playlist__search input{font-size:16px}}.playlist__search input::placeholder{color:var(--ink-mute)}.search-count{font-family:JetBrains Mono,monospace;font-size:.65rem;color:var(--ink-mute);white-space:nowrap}.filters{display:flex;gap:.35rem;flex-wrap:wrap;padding:0 1.4rem .9rem;border-bottom:1px solid var(--line)}.artists{display:flex;flex-direction:column;padding:.2rem 1.4rem .9rem;gap:.15rem}.artist-tab{display:flex;align-items:baseline;justify-content:space-between;gap:.6rem;background:transparent;border:none;border-left:1px solid var(--line);padding:.45rem .7rem;color:var(--ink-dim);font-family:Space Grotesk,sans-serif;font-size:.78rem;letter-spacing:.02em;text-align:left;cursor:pointer;transition:color .18s,border-color .18s,background .18s}.artist-tab:hover{color:var(--ink);border-left-color:var(--ink-dim)}.artist-tab.is-active{color:var(--accent);border-left-color:var(--accent);background:#b07bff0d}.artist-tab__name{font-weight:500}.artist-tab__count{font-family:JetBrains Mono,monospace;font-size:.6rem;color:var(--ink-mute);letter-spacing:.1em}.artist-tab.is-active .artist-tab__count{color:var(--accent);opacity:.6}.chip{font-family:JetBrains Mono,monospace;font-size:.6rem;letter-spacing:.18em;text-transform:uppercase;padding:.3rem .55rem;background:transparent;border:1px solid var(--line);color:var(--ink-dim);cursor:pointer;transition:all .18s}.chip:hover{color:var(--ink);border-color:var(--line-2)}.chip.is-active{color:var(--bg);background:var(--ink);border-color:var(--ink)}.playlist__body{flex:1;overflow-y:auto;overscroll-behavior:contain;padding:.4rem 0 6rem}.playlist__body::-webkit-scrollbar{width:4px}.playlist__body::-webkit-scrollbar-thumb{background:var(--line-2)}.pl-macro{margin-top:.6rem}.pl-macro:first-child{margin-top:0}.pl-macro__head{position:sticky;top:0;z-index:2;display:flex;align-items:baseline;justify-content:space-between;padding:1rem 1.4rem .5rem;background:linear-gradient(to bottom,var(--panel) 0%,var(--panel) 60%,rgba(10,10,10,.6) 100%);-webkit-backdrop-filter:var(--blur);backdrop-filter:var(--blur);border-bottom:1px solid var(--line)}.pl-macro__name{font-size:1rem;font-weight:500;letter-spacing:-.02em;color:var(--ink)}.pl-macro__count{font-family:JetBrains Mono,monospace;font-size:.6rem;letter-spacing:.18em;color:var(--ink-mute)}.pl-sub{margin:.2rem 0 .6rem}.pl-sub__head{display:flex;align-items:baseline;gap:.6rem;padding:.6rem 1.4rem .3rem;font-family:JetBrains Mono,monospace;font-size:.6rem;letter-spacing:.25em;text-transform:uppercase;color:var(--ink-mute)}.pl-sub__head:before{content:"";display:inline-block;width:8px;height:1px;background:var(--line-2)}.pl-sub__count{margin-left:auto;opacity:.6}.pl-track__sub .dot{opacity:.5;margin:0 .1em}.pl-track{display:grid;grid-template-columns:1.8em 1fr auto;align-items:center;gap:.7rem;padding:.7rem 1.4rem;cursor:pointer;border-left:2px solid transparent;transition:background .15s,border-color .15s}.pl-track:hover{background:#ffffff08}.pl-track.is-active{background:#b07bff12;border-left-color:var(--accent)}.pl-track__num{font-family:JetBrains Mono,monospace;font-size:.65rem;color:var(--ink-mute)}.pl-track__meta{min-width:0}.pl-track__title{font-size:.9rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.pl-track__sub{display:flex;gap:.45rem;align-items:center;font-family:JetBrains Mono,monospace;font-size:.65rem;color:var(--ink-dim);margin-top:.18rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.pl-track__sub .tag{text-transform:uppercase;letter-spacing:.12em;color:var(--ink-mute);font-size:.55rem;padding:.05rem .4rem;border:1px solid var(--line)}.pl-track__dur{font-family:JetBrains Mono,monospace;font-size:.65rem;color:var(--ink-mute)}.pl-empty{padding:2rem 1.4rem;text-align:center;font-family:JetBrains Mono,monospace;font-size:.7rem;color:var(--ink-mute);letter-spacing:.15em;text-transform:uppercase}.player{position:fixed;left:0;right:0;bottom:0;z-index:15;display:flex;flex-direction:column;gap:.55rem;padding:.9rem 1.4rem calc(.9rem + env(safe-area-inset-bottom));background:linear-gradient(to top,rgba(10,10,10,.95) 0%,rgba(10,10,10,.6) 70%,transparent);transform:translateY(110%);transition:transform .5s cubic-bezier(.22,.61,.36,1)}.player.is-visible{transform:translateY(0)}.player__top{display:flex;align-items:center;gap:1.2rem}.player__meta{flex:1;min-width:0}.player__actions{flex:1;min-width:0;display:flex;align-items:center;justify-content:flex-end;gap:.15rem}.np-artist{font-family:JetBrains Mono,monospace;font-size:.7rem;color:var(--ink-dim);letter-spacing:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.np-title{font-size:.95rem;font-weight:500;margin-top:.1rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.player__controls{display:flex;align-items:center;gap:.3rem}.ctrl{width:36px;height:36px;border-radius:50%;display:inline-flex;align-items:center;justify-content:center;background:transparent;border:none;color:var(--ink);cursor:pointer;opacity:.7;transition:opacity .2s}.ctrl:hover{opacity:1}.ctrl--big{width:44px;height:44px;background:var(--ink);color:var(--bg);opacity:1}.ctrl--big:hover{background:var(--accent)}.player__wave{display:flex;align-items:center;gap:.7rem}.time{font-family:JetBrains Mono,monospace;font-size:.65rem;color:var(--ink-dim);min-width:3em;text-align:center}.wave{position:relative;flex:1;height:44px;cursor:pointer;user-select:none;touch-action:none}.wave__canvas{display:block;width:100%;height:100%}.wave__hover{position:absolute;top:0;left:0;bottom:0;width:0;background:#ffffff0a;pointer-events:none}.wave__tooltip{position:absolute;bottom:100%;left:0;transform:translate(-50%) translateY(-4px);font-family:JetBrains Mono,monospace;font-size:.6rem;color:var(--ink);background:#0a0a0ad9;border:1px solid var(--line-2);padding:.2rem .4rem;pointer-events:none;opacity:0;transition:opacity .15s;white-space:nowrap}@media (max-width: 720px){.toast{min-width:auto;padding:1.1rem 1.3rem}.player{padding:.9rem 1rem calc(.9rem + env(safe-area-inset-bottom))}.player__top{gap:.6rem}.player__spacer{display:none}.player__actions{flex:0 0 auto}.player__wave{min-width:0;gap:.45rem}.wave{height:36px;min-width:0}.time{min-width:2.4em;font-size:.62rem}.playlist__head span{display:none}.playlist__head{padding-top:4.4rem;padding-bottom:.4rem}}.modal{position:fixed;inset:0;z-index:60;display:none;align-items:center;justify-content:center;padding:1.2rem}.modal.is-open{display:flex}.modal__backdrop{position:absolute;inset:0;background:#050505b8;backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px);animation:modal-fade .25s ease}.modal__card{position:relative;z-index:1;width:100%;max-width:360px;background:#121212;border:1px solid var(--line-2);border-radius:14px;padding:1.6rem 1.5rem 1.4rem;box-shadow:0 24px 60px #0000008c;animation:modal-pop .28s cubic-bezier(.22,.61,.36,1)}.modal__close{position:absolute;top:.7rem;right:.7rem;width:32px;height:32px;border-radius:50%;display:inline-flex;align-items:center;justify-content:center;background:transparent;border:none;color:var(--ink-dim);cursor:pointer;transition:color .2s}.modal__close:hover{color:var(--ink)}.modal__label{font-family:JetBrains Mono,monospace;font-size:.6rem;letter-spacing:.25em;text-transform:uppercase;color:var(--accent);margin-bottom:.4rem}.modal__title{font-size:1.15rem;font-weight:500;margin:0 0 .4rem}.modal__text{font-size:.82rem;color:var(--ink-dim);margin:0 0 1.1rem;line-height:1.5}.modal__form{display:flex;gap:.5rem}.modal__form input{flex:1;min-width:0;background:#ffffff0a;border:1px solid var(--line-2);border-radius:9px;padding:.6rem .75rem;color:var(--ink);font-family:inherit;font-size:.85rem;outline:none;transition:border-color .2s}.modal__form input:focus{border-color:var(--accent)}.modal__btn{background:var(--ink);color:var(--bg);border:none;border-radius:9px;padding:.6rem 1rem;font-family:inherit;font-size:.82rem;font-weight:600;cursor:pointer;transition:background .2s}.modal__btn:hover{background:var(--accent);color:var(--ink)}.modal__error{font-size:.75rem;color:#ff6b6b;margin:.7rem 0 0;display:none}.modal__error.is-visible{display:block}.modal__hint{font-size:.72rem;color:var(--ink-dim);margin:1rem 0 0;line-height:1.5}.modal__hint a{color:var(--accent);text-decoration:none}.modal__hint a:hover{text-decoration:underline}@keyframes modal-fade{0%{opacity:0}to{opacity:1}}@keyframes modal-pop{0%{opacity:0;transform:translateY(12px) scale(.97)}to{opacity:1;transform:translateY(0) scale(1)}}.mini-toast{position:fixed;left:50%;bottom:calc(7.5rem + env(safe-area-inset-bottom));transform:translate(-50%) translateY(10px);z-index:55;background:#1a1a1a;color:var(--ink);border:1px solid var(--line-2);border-radius:999px;padding:.5rem 1rem;font-size:.78rem;white-space:nowrap;pointer-events:none;opacity:0;transition:opacity .25s,transform .25s}.mini-toast.is-visible{opacity:1;transform:translate(-50%) translateY(0)}
