.custom-player{background:#000000b3!important;border-radius:12px;padding:12px;box-shadow:0 6px 24px #0006;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border:1px solid rgba(255,255,255,.2);max-width:380px;width:100%;min-height:280px;position:relative;overflow:hidden}.loading-state{position:absolute;top:0;left:0;width:100%;height:100%;display:flex;flex-direction:column;align-items:center;justify-content:center;opacity:1;transition:opacity .5s ease-in-out;z-index:10}.loading-state.hidden{opacity:0;pointer-events:none}.loading-spinner{width:1.5rem;height:1.5rem}.loading-text{margin-top:.5rem;font-size:.875rem;color:#fffc}.player-state{opacity:0;transition:opacity .5s ease-in-out .2s}.player-state.visible{opacity:1}.player-info{text-align:left;color:#fff;width:100%;margin-bottom:12px}.track-details{font-size:.83rem;opacity:.7;display:flex;justify-content:flex-start;flex-wrap:wrap;gap:8px;margin-bottom:6px}.now-playing{font-size:.88rem;opacity:.8;margin-right:8px}.genre-badge{background:#fff3;padding:2px 8px;border-radius:12px;font-size:.77rem}.anticipation-badge{background:#ffc107cc;color:#000c;padding:2px 6px;border-radius:10px;font-size:.7rem;font-weight:700;margin-left:4px;cursor:help}.sync-badge{background:#4caf50cc;color:#ffffffe6;padding:2px 6px;border-radius:10px;font-size:.7rem;font-weight:700;margin-left:4px;cursor:help}.error-badge{background:#ff6b6bcc;color:#ffffffe6;padding:2px 6px;border-radius:10px;font-size:.7rem;font-weight:700;margin-left:4px;cursor:help;animation:pulse-error 2s infinite}.track-line{margin-bottom:6px}.track-title{font-size:1.1rem;font-weight:400;text-shadow:0 2px 4px rgba(0,0,0,.3)}.track-artist{font-weight:700}.track-song{font-style:italic;font-weight:400}.player-controls{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:12px}.controls-left{display:flex;align-items:center;gap:12px}.controls-right{display:flex;align-items:center}.play-btn{width:40px;height:40px;border-radius:50%;border:none;background:transparent;color:#fff;font-size:16px;cursor:pointer;transition:all .3s ease;position:relative;display:flex;align-items:center;justify-content:center}.play-btn:hover{background:#fff3;transform:scale(1.05)}.play-btn:active{transform:scale(.95);background:#ffffff4d}.reconnect-btn{width:35px;height:35px;border-radius:50%;border:2px solid #ff6b6b;background:#ff6b6b33;color:#ff6b6b;font-size:14px;cursor:pointer;transition:all .3s ease;position:relative;display:flex;align-items:center;justify-content:center;animation:pulse-error 2s infinite}.reconnect-btn:hover{background:#ff6b6b66;transform:scale(1.05);animation:none}.reconnect-btn:active{transform:scale(.95);background:#ff6b6b99}@keyframes pulse-error{0%,to{box-shadow:0 0 #ff6b6b66}50%{box-shadow:0 0 0 6px #ff6b6b1a}}.volume-container{display:flex;align-items:center;gap:8px}.volume-btn{background:none;border:none;color:#fff;font-size:16px;cursor:pointer;transition:opacity .3s ease}.volume-btn:hover{opacity:.7}.volume-slider{width:60px;height:3px;border-radius:2px;background:#ffffff4d;outline:none;cursor:pointer;-webkit-appearance:none;-moz-appearance:none;appearance:none}.volume-slider::-webkit-slider-thumb{-webkit-appearance:none;-moz-appearance:none;appearance:none;width:14px;height:14px;border-radius:50%;background:#1f6ee4;cursor:pointer;box-shadow:0 2px 4px #0000004d}.volume-slider::-moz-range-thumb{width:14px;height:14px;border-radius:50%;background:#1f6ee4;cursor:pointer;border:none;box-shadow:0 2px 4px #0000004d}.progress-container{margin-bottom:12px;display:flex;align-items:center;gap:8px}.progress-bar{flex-grow:1;height:5px;background:#fff3;border-radius:3px;overflow:hidden;cursor:pointer}.progress-fill{height:100%;background:linear-gradient(90deg,#ff6b6b,#feca57);border-radius:3px;transition:width .3s ease;width:0%}.time-display{color:#fffc;font-family:digital,monospace;font-size:.88rem;min-width:40px;text-align:center}.equalizer{display:flex;gap:2px;align-items:end;height:24px;padding:2px}.equalizer-bar{width:3px;background:linear-gradient(to top,#ff6b6b,#feca57,#48dbfb);border-radius:2px;animation:equalizer .8s infinite ease-in-out;box-shadow:0 0 4px #ff6b6b4d}.equalizer-bar:nth-child(1){animation-delay:0s}.equalizer-bar:nth-child(2){animation-delay:.1s}.equalizer-bar:nth-child(3){animation-delay:.2s}.equalizer-bar:nth-child(4){animation-delay:.3s}.equalizer-bar:nth-child(5){animation-delay:.4s}.equalizer-bar:nth-child(6){animation-delay:.1s}.equalizer-bar:nth-child(7){animation-delay:.2s}@keyframes equalizer{0%,to{height:4px;opacity:.7;transform:scaleY(.3)}20%{height:8px;opacity:.8;transform:scaleY(.5)}40%{height:16px;opacity:.9;transform:scaleY(.8)}60%{height:20px;opacity:1;transform:scaleY(1)}80%{height:12px;opacity:.9;transform:scaleY(.7)}}.playlist-section{margin-top:15px;width:100%;min-height:110px}.playlist-container{background:#00000080;border-radius:6px;padding:6px;-webkit-backdrop-filter:blur(5px);backdrop-filter:blur(5px);transition:all .3s ease;border:1px solid rgba(255,255,255,.1)}.playlist-container.scrollable{max-height:240px;overflow-y:auto}.playlist-loading{text-align:center;color:#fff9;font-size:.83rem;padding:8px;height:100%;display:flex;align-items:center;justify-content:center}.playlist-item{display:flex;justify-content:space-between;align-items:flex-start;background:#0000004d;border:1px solid rgba(255,255,255,.15);border-radius:5px;padding:6px;margin-bottom:3px;transition:all .3s ease;flex-direction:column}.playlist-item.current-track{background:#ff6b6b33;border:2px solid rgba(255,107,107,.6);box-shadow:0 0 10px #ff6b6b4d;transform:scale(1.02)}.playlist-item.current-track .playlist-song{color:#fff;text-shadow:0 0 5px rgba(255,107,107,.8)}.playlist-item.current-track .playlist-artist{color:#ffffffe6}.playlist-item:hover{background:#ffffff1a;border-left-color:#ff6b6b}.playlist-item:last-child{margin-bottom:0}.playlist-track-info{flex-grow:1;min-width:0;margin-bottom:3px}.playlist-track-title{font-size:.77rem;color:#ffffffe6;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-weight:500}.playlist-track-meta{display:flex;align-items:center;gap:6px;margin-top:1px}.playlist-genre{background:#ff6b6b4d;color:#fffc;padding:1px 6px;border-radius:8px;font-size:.66rem;font-weight:500}.playlist-duration{color:#fff9;font-size:.72rem;font-family:digital,monospace}.playlist-container::-webkit-scrollbar{width:4px}.playlist-container::-webkit-scrollbar-track{background:#ffffff1a;border-radius:2px}.playlist-container::-webkit-scrollbar-thumb{background:#ff6b6b80;border-radius:2px}.playlist-container::-webkit-scrollbar-thumb:hover{background:#ff6b6bb3}@media (max-width: 480px){.custom-player{padding:10px;margin:0 8px;min-height:260px;background:#000c!important}.player-controls{gap:8px}.play-btn{width:35px;height:35px;font-size:14px}.reconnect-btn{width:30px;height:30px;font-size:12px}.volume-slider{width:45px}.playlist-container{height:80px}.playlist-section{min-height:90px}}@font-face{font-family:superpoint_rounded;src:url(/assets/fonts/sfont.woff) format("woff")}@font-face{font-family:digital;src:url(/assets/fonts/digital-7.woff) format("woff")}body{margin:0;font-family:Inter,Arial,sans-serif;background:#000;color:#fff;overflow-x:hidden}.background-image{position:fixed;left:0;top:0;width:100%;height:100%;background-image:url(/assets/img/pont-radiofrance.jpg);background-size:cover;background-position:center;background-repeat:no-repeat;z-index:-1;filter:brightness(.75) contrast(2.5) saturate(1.5)}.app-container{min-height:100vh;display:flex;flex-direction:column;position:relative}.header-wrapper{background-color:#ffffffeb!important;box-shadow:0 2px 12px #1e284614;height:56px}.header-wrapper nav{height:56px}.navbar-brand{text-decoration:none;display:flex;align-items:center;gap:.3rem}.logo-text{font-family:superpoint_rounded,sans-serif;font-size:.8rem;color:#2d3bb8;font-weight:700}.logo-img{height:24px}.header-clock{font-family:digital,monospace;font-size:1.1em;color:#2d3bb8;min-width:140px;text-align:right;font-weight:700}.debug-timers{position:static;background:#000000f2;padding:12px;font-family:Inter,Arial,sans-serif;font-size:.85rem;border:2px solid rgba(255,255,255,.2);border-radius:8px;display:flex;flex-direction:column;align-items:flex-start;min-width:280px;box-shadow:4px 4px 12px #0006}.timer-row{display:flex;align-items:center;justify-content:space-between;width:100%;gap:12px;margin-bottom:4px;padding:3px 0;border-bottom:1px solid rgba(255,255,255,.1)}.timer-row:last-child{margin-bottom:0}.timer-label{color:#fffc;font-size:.8rem;flex:1}.timer-value{color:#00ff41;font-weight:700;min-width:60px;text-align:right;font-size:.85rem;font-family:digital,monospace}.api-logs-panel{position:static;background:#000000f2;padding:12px;font-family:Inter,Arial,sans-serif;font-size:.85rem;border:2px solid rgba(0,255,65,.3);border-radius:8px;display:flex;flex-direction:column;align-items:flex-start;min-width:320px;box-shadow:4px 4px 12px #0006}.main-content{flex:1;display:flex;min-height:calc(100vh - 56px);padding:1rem;gap:1rem}.debug-panels-container{display:flex;flex-direction:column;gap:1rem;min-width:600px}.player-section{flex:1;display:flex;align-items:flex-start;justify-content:flex-start}.player-section .container{max-width:none;width:100%}.player-card{background:transparent!important;min-width:320px;max-width:95vw;width:100%;max-width:400px}.radio-warning{background:#ffd6d6;color:#a80000;padding:4px 10px;margin:10px auto 0;border-radius:4px;font-size:.85em;line-height:1.25;text-align:left;max-width:95vw;width:320px;box-shadow:0 1px 4px #a8000022}.warning-title{font-size:.95em;font-weight:700}.warning-text{font-size:.85em}@media (max-width: 767.98px){.header-wrapper{height:48px}.header-wrapper nav{height:48px;padding-left:1rem;padding-right:1rem}.main-content{min-height:calc(100vh - 136px)}.header-clock{font-size:.9em;min-width:120px}}
