:root{--primary-color: #CD2C58;--secondary-color: #E06B80;--accent-color: #FFC69D;--light-bg-color: #FFE6D4;--text-color: #333;--bg-color: #f8f9fa;--white: #ffffff;--shadow: 0 10px 30px rgba(0,0,0,.2);--border-radius: 15px;--z-index-base: 100;--z-index-fab: 1000;--z-index-drawer: 300;--z-index-panel: 400;--z-index-radio: 400;--z-index-modal: 500;--z-index-overlay: 600}*{margin:0;padding:0;box-sizing:border-box}body{font-family:Segoe UI,Tahoma,Geneva,Verdana,sans-serif;background:linear-gradient(135deg,var(--primary-color) 0%,var(--secondary-color) 100%);min-height:100vh;color:var(--text-color);line-height:1.6}body.webcam-active{background:var(--white)}.container{max-width:1400px;margin:0 auto;padding:20px;display:flex;flex-direction:column;min-height:100vh}header{text-align:center;margin-bottom:30px;color:#fff}header h1{font-size:2.5rem;margin-bottom:10px;text-shadow:2px 2px 4px rgba(0,0,0,.3)}header p{font-size:1.1rem;opacity:.9}.attribution{margin-top:15px;text-align:center}.attribution-link{color:#ffffffb3;text-decoration:none;font-size:.8rem;font-weight:400;transition:color .3s ease}.attribution-link:hover{color:#ffffffe6;text-decoration:underline}.main-content{display:flex;flex-direction:column;gap:20px;margin-bottom:30px;flex-grow:1}.map-container{background:var(--white);border-radius:var(--border-radius);box-shadow:var(--shadow);overflow:hidden;height:300px;order:1;z-index:var(--z-index-base, 100);transition:opacity .3s ease}.map-container.hidden{display:none}#map{width:100%;height:100%}.webcam-panel{position:fixed;top:0;left:0;right:0;bottom:0;background:var(--white);z-index:var(--z-index-panel, 100);transform:translateY(100%);transition:transform .3s ease;display:flex;flex-direction:column}.webcam-panel.active{transform:translateY(0)}.webcam-header{display:flex;justify-content:space-between;align-items:center;padding:20px;border-bottom:1px solid #eee;background:var(--bg-color);border-radius:var(--border-radius) var(--border-radius) 0 0}.webcam-header h3{color:var(--primary-color);font-size:1.2rem}.close-btn{background:var(--primary-color);color:#fff;border:none;border-radius:50%;width:30px;height:30px;cursor:pointer;font-size:18px;display:flex;align-items:center;justify-content:center;transition:background .3s ease}.close-btn:hover{background:var(--secondary-color)}.webcam-content{flex:1;display:flex;flex-direction:column;padding:20px}.webcam-frame{flex:1;background:#000;border-radius:10px;overflow:hidden;margin-bottom:15px;position:relative;width:100%;aspect-ratio:16 / 9;height:0;padding-bottom:56.25%}.webcam-frame iframe{position:absolute;top:0;left:0;width:100%;height:100%;border:none}.webcam-info{background:var(--bg-color);padding:15px;border-radius:10px;font-size:.9rem;line-height:1.5}.camera-list{background:var(--white);border-radius:var(--border-radius);box-shadow:var(--shadow);padding:25px}.camera-list h3{margin-bottom:20px;color:var(--primary-color);font-size:1.3rem}.camera-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:15px}.camera-item{background:var(--light-bg-color);border-radius:10px;padding:15px;cursor:pointer;transition:all .3s ease;border:2px solid transparent}.camera-item:hover{background:var(--accent-color);border-color:var(--primary-color);transform:translateY(-2px);box-shadow:0 5px 15px #0000001a}.camera-item h4{color:var(--primary-color);margin-bottom:8px;font-size:1.1rem}.camera-item p{color:#666;font-size:.9rem;margin-bottom:5px}.camera-item .coordinates{font-family:monospace;background:#e9ecef;padding:4px 8px;border-radius:4px;font-size:.8rem;color:#495057}.custom-marker{background:var(--accent-color);border:3px solid white;border-radius:50%;width:20px;height:20px;box-shadow:0 2px 10px #0000004d}.custom-marker:hover{background:#ff3742;transform:scale(1.2)}.popup-content{text-align:center;min-width:200px}.popup-content h4{margin-bottom:10px;color:var(--text-color)}.popup-content p{margin-bottom:8px;font-size:.9rem;color:#666}.view-camera-btn{background:var(--primary-color);color:#fff;border:none;padding:8px 16px;border-radius:5px;cursor:pointer;font-size:.9rem;margin-top:10px;transition:background .3s ease}.view-camera-btn:hover{background:var(--secondary-color)}.youtube-link{color:var(--primary-color);text-decoration:none;font-weight:700}.youtube-link:hover{text-decoration:underline}.note{font-style:italic;color:#ff6b6b;font-size:.8rem}@media (max-width: 1024px){.main-content{grid-template-columns:1fr;grid-template-rows:400px auto}.webcam-panel,.map-container{height:400px}}@media (max-width: 768px){.container{padding:15px}header h1{font-size:2rem}.camera-grid{grid-template-columns:1fr}.main-content{gap:15px}}@media (max-width: 480px){header h1{font-size:1.8rem}header p{font-size:1rem}.webcam-header h3,.camera-item h4{font-size:1rem}.camera-item{padding:12px}.webcam-content{padding:15px}.popup-content{min-width:180px}.view-camera-btn{padding:10px 18px;font-size:1rem}footer{margin-top:30px;padding:15px}footer p{font-size:.8rem}}.loading{display:flex;justify-content:center;align-items:center;height:200px;color:#666}.loading:after{content:"";width:20px;height:20px;border:2px solid #f3f3f3;border-top:2px solid var(--primary-color);border-radius:50%;animation:spin 1s linear infinite;margin-left:10px}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}@keyframes pulse{0%{transform:scale(1);opacity:1}50%{transform:scale(1.2);opacity:.7}to{transform:scale(1);opacity:1}}.weather-panel{position:fixed;top:0;left:0;right:0;bottom:0;background:var(--white);z-index:var(--z-index-panel, 100);transform:translateY(100%);transition:transform .3s ease;display:flex;flex-direction:column}.weather-panel.active{transform:translateY(0)}.weather-header{display:flex;justify-content:space-between;align-items:center;padding:20px;border-bottom:1px solid #eee;background:var(--bg-color);border-radius:var(--border-radius) var(--border-radius) 0 0}.weather-header h3{color:var(--primary-color);font-size:1.2rem}.weather-content{flex:1;display:flex;flex-direction:column;padding:20px}.weather-frame{flex:1;background:#000;border-radius:10px;overflow:hidden;margin-bottom:15px}.weather-frame iframe{width:100%;height:100%;border:none}.weather-placeholder{flex:1;display:flex;align-items:center;justify-content:center;background:var(--light-bg-color);border-radius:10px;color:var(--primary-color);font-size:1.1rem;text-align:center;padding:40px}.weather-info{background:var(--light-bg-color);padding:15px;border-radius:10px;font-size:.9rem;line-height:1.5}.windy-link{color:var(--primary-color);text-decoration:none;font-weight:700}.windy-link:hover{text-decoration:underline}.radio-panel{position:fixed;top:0;left:0;right:0;bottom:0;background:var(--white);z-index:var(--z-index-panel, 400);transform:translateY(100%);transition:transform .3s ease;display:flex;flex-direction:column}.radio-panel.active{transform:translateY(0)}.radio-header h3{color:var(--primary-color);font-size:1.2rem}.radio-content{flex:1;display:flex;flex-direction:column;padding:20px;overflow-y:auto}.now-playing{background:var(--light-bg-color);border-radius:10px;padding:20px;margin-bottom:20px;text-align:center}.station-info h4{color:var(--primary-color);margin-bottom:10px;font-size:1.1rem}.station-info h5{color:var(--text-color);margin-bottom:5px;font-size:1.3rem}.station-info p{color:#666;margin-bottom:10px;font-size:.9rem}.genre{background:var(--accent-color);color:var(--text-color);padding:4px 12px;border-radius:15px;font-size:.8rem;font-weight:500}.player-controls{margin:15px 0}.play-btn,.stop-btn{background:var(--primary-color);color:#fff;border:none;border-radius:50%;width:50px;height:50px;font-size:1.5rem;cursor:pointer;margin:0 10px;transition:background .3s ease}.play-btn:hover,.stop-btn:hover{background:var(--secondary-color)}.station-link{display:inline-block;background:var(--primary-color);color:#fff;text-decoration:none;padding:8px 16px;border-radius:20px;font-size:.9rem;transition:background .3s ease}.station-link:hover{background:var(--secondary-color)}.radio-placeholder{flex:1;display:flex;align-items:center;justify-content:center;background:var(--light-bg-color);border-radius:10px;color:var(--primary-color);font-size:1.1rem;text-align:center;padding:40px}.stations-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(250px,1fr));gap:15px;margin-bottom:20px}.station-item{background:var(--light-bg-color);border-radius:10px;padding:15px;cursor:pointer;transition:all .3s ease;border:2px solid transparent}.station-item:hover{background:var(--accent-color);border-color:var(--primary-color);transform:translateY(-2px);box-shadow:0 5px 15px #0000001a}.station-name{font-weight:700;color:var(--primary-color);margin-bottom:5px;font-size:1rem}.station-genre{color:var(--secondary-color);font-size:.8rem;margin-bottom:8px;font-weight:500}.station-description{color:#666;font-size:.85rem;line-height:1.4}.radio-info{background:var(--light-bg-color);padding:15px;border-radius:10px;font-size:.9rem;line-height:1.5}.radio-player{position:fixed;bottom:0;left:0;right:0;background:var(--primary-color);color:#fff;padding:12px 15px;display:flex;align-items:center;justify-content:space-between;z-index:var(--z-index-base, 100);box-shadow:0 -4px 20px #0000004d;border-top:2px solid var(--secondary-color);user-select:none;-webkit-user-select:none;touch-action:pan-y}.station-carousel{display:flex;align-items:center;flex:1;min-width:0}.carousel-btn{background:#fff3;color:#fff;border:none;border-radius:50%;width:28px;height:28px;font-size:1rem;font-weight:700;cursor:pointer;transition:background .3s ease;display:flex;align-items:center;justify-content:center;margin:0 6px}.carousel-btn:hover{background:#ffffff4d}.station-info{flex:1;min-width:0;text-align:center;margin:0 5px;max-width:140px;position:relative}.station-info:before{content:"← Swipe →";position:absolute;top:-20px;left:50%;transform:translate(-50%);font-size:.6rem;color:#fff9;opacity:0;transition:opacity .3s ease;pointer-events:none}.radio-player:hover .station-info:before{opacity:1}.station-name{font-weight:700;font-size:.8rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:#fff;text-shadow:1px 1px 2px rgba(0,0,0,.5);max-width:120px}.station-genre{font-size:.65rem;font-weight:500;margin-top:1px;color:#fff;text-shadow:1px 1px 2px rgba(0,0,0,.5);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:120px}.player-controls{display:flex;gap:8px;margin:0 10px}.play-btn,.stop-btn{background:#fff3;color:#fff;border:none;border-radius:50%;width:32px;height:32px;font-size:.9rem;cursor:pointer;transition:background .3s ease;display:flex;align-items:center;justify-content:center}.play-btn:hover,.stop-btn:hover{background:#ffffff4d}.player-status{font-size:.7rem;font-weight:700;min-width:60px;text-align:center}.status-playing{color:#ff6b6b;text-shadow:1px 1px 2px rgba(0,0,0,.5);font-weight:700}.status-paused{color:#ffd93d;text-shadow:1px 1px 2px rgba(0,0,0,.5);font-weight:700}.webcam-drawer{position:fixed;bottom:0;left:0;right:0;background:var(--white);border-radius:20px 20px 0 0;box-shadow:0 -4px 20px #0000004d;z-index:var(--z-index-drawer, 100);transform:translateY(100%);transition:transform .3s ease;max-height:70vh;display:flex;flex-direction:column}.webcam-drawer.open{transform:translateY(0)}.drawer-header{display:flex;justify-content:space-between;align-items:center;padding:20px;border-bottom:1px solid #eee;background:var(--bg-color);border-radius:20px 20px 0 0}.drawer-header h3{color:var(--primary-color);font-size:1.2rem;margin:0}.drawer-content{flex:1;overflow-y:auto;padding:10px}.drawer-instruction{background:var(--light-bg-color);padding:15px;border-radius:10px;margin-bottom:20px;text-align:center}.drawer-instruction p{margin:0;color:var(--primary-color);font-weight:500;font-size:.9rem}.webcam-drawer .webcam-option{width:100%;background:var(--light-bg-color);border:none;border-radius:10px;padding:15px;margin-bottom:10px;cursor:pointer;transition:all .3s ease;display:flex;justify-content:space-between;align-items:center;text-align:left}.webcam-drawer .webcam-option:hover{background:var(--accent-color);transform:translateY(-1px);box-shadow:0 2px 10px #0000001a}.webcam-drawer .webcam-option.selected{background:var(--primary-color)!important;color:#fff!important}.webcam-drawer .webcam-option.selected .webcam-info h4{color:#fff!important;font-weight:700;text-shadow:0 1px 3px rgba(0,0,0,.5)}.webcam-drawer .webcam-option.selected .webcam-info p{color:#fff!important;opacity:1!important;text-shadow:0 1px 2px rgba(0,0,0,.4)}.webcam-drawer .webcam-option.selected .webcam-info{background:transparent!important}.webcam-drawer .webcam-option.selected .webcam-info .webcam-description{color:#ffe6d4!important;opacity:1!important;text-shadow:0 1px 2px rgba(0,0,0,.3)}.webcam-drawer .webcam-info h4{margin:0 0 5px;font-size:1rem;color:inherit}.webcam-drawer .webcam-info p{margin:0;font-size:.8rem;opacity:.8;color:inherit}.webcam-drawer .webcam-status{display:flex;align-items:center}.webcam-drawer .selected-indicator{color:var(--accent-color);font-size:1.2rem;font-weight:700}.webcam-drawer .webcam-option.selected .selected-indicator{color:#fff!important;font-size:1.4rem;font-weight:700;text-shadow:0 1px 3px rgba(0,0,0,.5)}.fab-container{position:fixed;bottom:52px;right:20px;display:flex;flex-direction:column;gap:12px;z-index:var(--z-index-fab, 1000)}.radio-fab-container{position:fixed;bottom:20px;right:20px;z-index:var(--z-index-fab, 1000)}.radio-fab{width:56px;height:56px;background:var(--primary-color);color:#fff;border:none;border-radius:50%;font-size:1.5rem;cursor:pointer;box-shadow:0 4px 20px #cd2c5866;transition:all .3s ease;display:flex;align-items:center;justify-content:center;position:relative}.radio-fab:hover{background:var(--secondary-color);transform:translateY(-2px);box-shadow:0 6px 25px #cd2c5880}.radio-fab:active{transform:translateY(0);box-shadow:0 2px 15px #cd2c5866}.radio-fab-content{position:relative;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px}.fab-label{font-size:8px;font-weight:500;line-height:1;opacity:.9;text-transform:uppercase;letter-spacing:.5px}.play-indicator{position:absolute;top:-2px;right:-2px;background:var(--secondary-color);border-radius:50%;width:16px;height:16px;display:flex;align-items:center;justify-content:center;border:2px solid white;box-shadow:0 2px 4px #0003;opacity:.7}.play-indicator.playing{background:#4caf50}.play-indicator.paused{background:#ff9800}.radio-fab-expanded{position:fixed;top:0;left:0;right:0;bottom:0;background:var(--primary-color);color:#fff;padding:20px;user-select:none;-webkit-user-select:none;touch-action:pan-y;transform:translateY(100%);transition:transform .3s ease;opacity:0;pointer-events:none;z-index:var(--z-index-modal, 500);display:flex;flex-direction:column;justify-content:center;align-items:center}.radio-fab-expanded.active{transform:translateY(0);opacity:1;pointer-events:auto}.radio-close-btn{position:absolute;top:20px;right:20px;background:#fff3;color:#fff;border:none;border-radius:50%;width:40px;height:40px;cursor:pointer;transition:background .3s ease;display:flex;align-items:center;justify-content:center;z-index:var(--z-index-overlay, 600)}.radio-close-btn:hover{background:#ffffff4d}.radio-fab-expanded .station-carousel{display:flex;align-items:center;justify-content:space-between;margin-bottom:40px;width:100%;max-width:400px}.radio-fab-expanded .station-info{flex:1;text-align:center;margin:0 20px}.radio-fab-expanded .station-counter{font-size:.8rem;color:#ffffffb3;margin-bottom:8px;font-weight:500}.radio-fab-expanded .station-name{font-weight:700;font-size:1.4rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:#fff;text-shadow:1px 1px 2px rgba(0,0,0,.5);margin-bottom:8px}.radio-fab-expanded .station-genre{font-size:1rem;font-weight:500;color:#fff;text-shadow:1px 1px 2px rgba(0,0,0,.5);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin-bottom:4px}.radio-fab-expanded .station-description{font-size:.8rem;color:#fffc;font-style:italic;line-height:1.3}.radio-fab-expanded .carousel-btn{background:#fff3;color:#fff;border:none;border-radius:50%;width:48px;height:48px;font-size:1.5rem;font-weight:700;cursor:pointer;transition:background .3s ease;display:flex;align-items:center;justify-content:center}.radio-fab-expanded .carousel-btn:hover{background:#ffffff4d}.radio-fab-expanded .player-controls{display:flex;gap:20px;justify-content:center;margin-bottom:30px}.radio-fab-expanded .play-btn,.radio-fab-expanded .stop-btn{background:#fff3;color:#fff;border:none;border-radius:50%;width:64px;height:64px;font-size:1.5rem;cursor:pointer;transition:background .3s ease;display:flex;align-items:center;justify-content:center}.radio-fab-expanded .play-btn:hover,.radio-fab-expanded .stop-btn:hover{background:#ffffff4d}.radio-fab-expanded .player-status{text-align:center;font-size:1rem;font-weight:500}.radio-fab-expanded .status-playing{color:#4caf50;text-shadow:1px 1px 2px rgba(0,0,0,.5);font-weight:700}.radio-fab-expanded .status-paused{color:#ff9800;text-shadow:1px 1px 2px rgba(0,0,0,.5);font-weight:700}.station-navigation{margin-bottom:20px;text-align:center}.station-navigation p{font-size:.9rem;opacity:.8;color:#fffc;text-shadow:1px 1px 2px rgba(0,0,0,.3);margin:0}.radio-interface{position:fixed;top:0;left:0;right:0;bottom:0;background:var(--primary-color);color:#fff;padding:20px;overflow-y:auto;z-index:var(--z-index-radio, 400)}.radio-interface .radio-header{background:transparent}.radio-header{text-align:center;margin-bottom:20px;padding:10px 0}.radio-header h2{font-size:1.2rem;margin:0 0 5px;color:#fff;opacity:.8;font-weight:500}.radio-header h2,.radio-header p,.station-navigation p{color:#fff!important}.radio-header h2{display:flex;align-items:center;justify-content:center;gap:8px}.radio-icon{color:#fff;opacity:.8}.station-navigation p{display:flex;align-items:center;justify-content:center;gap:6px}.scroll-icon{color:#fff;opacity:.8}.radio-header p{font-size:.9rem;color:#fff;opacity:.6;margin:0}.radio-stations{display:flex;flex-direction:column;gap:12px;margin-bottom:30px;max-height:60vh;overflow-y:auto;padding-right:10px}.radio-stations::-webkit-scrollbar{width:6px}.radio-stations::-webkit-scrollbar-track{background:#ffffff1a;border-radius:3px}.radio-stations::-webkit-scrollbar-thumb{background:#ffffff4d;border-radius:3px}.radio-stations::-webkit-scrollbar-thumb:hover{background:#ffffff80}.station-option{background:transparent;border:2px solid rgba(255,255,255,.3);border-radius:8px;padding:15px;cursor:pointer;transition:all .3s ease;display:flex;justify-content:space-between;align-items:center}.station-option:hover{border-color:#fff9;transform:translateY(-1px)}.station-option.selected{border-color:#ffc69d;background:#ffc69d33;box-shadow:0 4px 12px #ffc69d4d;transform:scale(1.02)}.station-info h4{margin:0 0 8px;font-size:1.2rem;font-weight:700;color:#fff;text-shadow:1px 1px 2px rgba(0,0,0,.5)}.station-info p{margin:0 0 5px;font-size:.9rem;color:#fff;opacity:.9;text-shadow:1px 1px 2px rgba(0,0,0,.3)}.selected-badge{display:flex;flex-direction:column;align-items:center;gap:4px;padding:8px 12px;background:#ffc69de6;border-radius:6px;color:#333;font-weight:700;font-size:.8rem;box-shadow:0 2px 4px #0003}.selected-indicator{font-size:1.2rem}.selected-text{font-size:.7rem;letter-spacing:.5px}.station-info .station-description{font-size:.8rem;opacity:.8;font-style:italic;color:#fffc;text-shadow:1px 1px 2px rgba(0,0,0,.3)}.station-status{display:flex;align-items:center}.selected-indicator{font-size:1.5rem;font-weight:700;color:#fff!important}.radio-controls{display:flex;justify-content:center;gap:20px;margin-bottom:30px}.control-btn{background:#fff3;color:#fff;border:none;border-radius:50%;width:64px;height:64px;font-size:1.5rem;cursor:pointer;transition:background .3s ease;display:flex;align-items:center;justify-content:center}.control-btn:hover{background:#ffffff4d}.current-station{text-align:center;background:transparent;border:2px solid rgba(255,255,255,.3);border-radius:8px;padding:20px}.current-station h3{margin:0 0 10px;font-size:1.5rem;color:#fff;text-shadow:1px 1px 2px rgba(0,0,0,.5)}.current-station p{margin:0 0 15px;color:#fff;opacity:.8;text-shadow:1px 1px 2px rgba(0,0,0,.3)}.status{font-size:1.1rem;font-weight:700}.status.playing{color:#4caf50}.status.paused{color:#ff9800}.bottom-ticker{position:sticky;bottom:0;left:0;right:0;background:#000c;border-top:2px solid rgba(255,255,255,.3);padding:8px 0;overflow:hidden;z-index:var(--z-index-fab, 1000);margin-top:auto}.ticker-content{display:flex;align-items:center;justify-content:center;gap:8px;white-space:nowrap;animation:ticker-scroll 15s linear infinite}.ticker-label{font-size:.8rem;font-weight:700;color:#fff;opacity:.8;text-transform:uppercase;letter-spacing:1px}.ticker-station{font-size:1rem;font-weight:700;color:#fff;text-shadow:1px 1px 2px rgba(0,0,0,.3)}.ticker-separator{font-size:.9rem;color:#fff;opacity:.6}.ticker-genre{font-size:.9rem;color:#fff;opacity:.8}.ticker-status{font-size:.8rem;font-weight:700;text-transform:uppercase;letter-spacing:.5px}.ticker-status.playing{color:#4caf50;text-shadow:1px 1px 2px rgba(0,0,0,.3)}.ticker-status.paused{color:#ff9800;text-shadow:1px 1px 2px rgba(0,0,0,.3)}@keyframes ticker-scroll{0%{transform:translate(100%)}to{transform:translate(-100%)}}.bottom-ticker.clickable{cursor:pointer;transition:all .3s ease;-webkit-user-select:none;user-select:none}.bottom-ticker.clickable:hover{background:#000000e6;border-top-color:#ffffff80;transform:translateY(-2px);box-shadow:0 4px 12px #0000004d}.bottom-ticker.clickable:active{transform:translateY(0);box-shadow:0 2px 6px #0003}.bottom-ticker.clickable:focus{outline:2px solid var(--accent-color);outline-offset:2px}.nav-hint{display:flex;align-items:center;justify-content:center;gap:8px;background:#ffffff1a;padding:12px 20px;border-radius:25px;font-size:.9rem;color:#ffffffe6}.station-preview{width:100%;max-width:500px;margin-bottom:30px}.preview-header{text-align:center;margin-bottom:20px}.preview-header h3{font-size:1.2rem;margin:0 0 8px;color:#fff;text-shadow:1px 1px 2px rgba(0,0,0,.5)}.preview-header p{font-size:.9rem;margin:0;color:#fffc}.station-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:12px;max-height:200px;overflow-y:auto;padding:10px;background:#ffffff0d;border-radius:15px}.station-preview-item{background:#ffffff1a;border:2px solid transparent;border-radius:12px;padding:12px;text-align:left;cursor:pointer;transition:all .3s ease;position:relative}.station-preview-item:hover{background:#fff3;transform:translateY(-2px)}.station-preview-item.active{background:#ffffff40;border-color:#4caf50;box-shadow:0 4px 12px #4caf504d}.preview-station-name{font-weight:600;font-size:.9rem;color:#fff;margin-bottom:4px;text-shadow:1px 1px 2px rgba(0,0,0,.5)}.preview-station-genre{font-size:.75rem;color:#fffc}.preview-active-indicator{position:absolute;top:8px;right:8px;color:#4caf50;font-size:1.2rem;text-shadow:0 0 4px rgba(76,175,80,.5)}.webcam-fab{width:56px;height:56px;background:var(--primary-color);color:#fff;border:none;border-radius:50%;font-size:1.5rem;cursor:pointer;box-shadow:0 4px 20px #cd2c5866;transition:all .3s ease;display:flex;align-items:center;justify-content:center}.webcam-fab:hover{background:var(--secondary-color);transform:translateY(-2px);box-shadow:0 6px 25px #cd2c5880}.webcam-fab:active{transform:translateY(0);box-shadow:0 2px 15px #cd2c5866}.webcam-fab .fab-content{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px}.webcam-fab .fab-label{font-size:8px;font-weight:500;line-height:1;opacity:.9;text-transform:uppercase;letter-spacing:.5px}.weather-fab{width:56px;height:56px;background:var(--primary-color);color:#fff;border:none;border-radius:50%;font-size:1.5rem;cursor:pointer;box-shadow:0 4px 20px #cd2c5866;transition:all .3s ease;display:flex;align-items:center;justify-content:center}.weather-fab:hover{background:var(--secondary-color);transform:translateY(-2px);box-shadow:0 6px 25px #cd2c5880}.weather-fab:active{transform:translateY(0);box-shadow:0 2px 15px #cd2c5866}.weather-fab .fab-content{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px}.weather-fab .fab-label{font-size:8px;font-weight:500;line-height:1;opacity:.9;text-transform:uppercase;letter-spacing:.5px}body.radio-playing{padding-bottom:80px}.offline-notification.svelte-7fp6zu.svelte-7fp6zu{position:fixed;top:0;left:0;right:0;z-index:9999;padding:12px 20px;display:flex;align-items:center;justify-content:center;animation:svelte-7fp6zu-slideDown .3s ease-out;box-shadow:0 2px 10px #0003}.offline-notification.offline.svelte-7fp6zu.svelte-7fp6zu{background:#f44336;color:#fff}.offline-notification.reconnected.svelte-7fp6zu.svelte-7fp6zu{background:#4caf50;color:#fff}.offline-content.svelte-7fp6zu.svelte-7fp6zu{display:flex;align-items:center;gap:12px;text-align:center}.offline-content.svelte-7fp6zu svg.svelte-7fp6zu{flex-shrink:0}.offline-content.svelte-7fp6zu span.svelte-7fp6zu{font-weight:600;font-size:16px}.offline-content.svelte-7fp6zu p.svelte-7fp6zu{margin:0;font-size:14px;opacity:.9}@keyframes svelte-7fp6zu-slideDown{0%{transform:translateY(-100%)}to{transform:translateY(0)}}@keyframes svelte-7fp6zu-slideUp{0%{transform:translateY(0)}to{transform:translateY(-100%)}}@media (max-width: 768px){.offline-notification.svelte-7fp6zu.svelte-7fp6zu{padding:10px 16px}.offline-content.svelte-7fp6zu.svelte-7fp6zu{flex-direction:column;gap:8px}.offline-content.svelte-7fp6zu span.svelte-7fp6zu{font-size:14px}.offline-content.svelte-7fp6zu p.svelte-7fp6zu{font-size:12px}}.toast.svelte-1gwcgf5{position:fixed;top:20px;right:20px;background:#000000e6;color:#fff;padding:12px 16px;border-radius:8px;box-shadow:0 4px 12px #0000004d;z-index:9999;max-width:300px;cursor:pointer;animation:svelte-1gwcgf5-slideIn .3s ease-out;border-left:4px solid}.toast-info.svelte-1gwcgf5{border-left-color:#3b82f6}.toast-success.svelte-1gwcgf5{border-left-color:#10b981}.toast-warning.svelte-1gwcgf5{border-left-color:#f59e0b}.toast-error.svelte-1gwcgf5{border-left-color:#ef4444}.toast-content.svelte-1gwcgf5{display:flex;align-items:center;justify-content:space-between;gap:12px}.toast-message.svelte-1gwcgf5{flex:1;font-size:14px;line-height:1.4}.toast-close.svelte-1gwcgf5{background:none;border:none;color:#fff;font-size:18px;cursor:pointer;padding:0;width:20px;height:20px;display:flex;align-items:center;justify-content:center;border-radius:50%;transition:background-color .2s ease}.toast-close.svelte-1gwcgf5:hover{background-color:#fff3}.toast-close.svelte-1gwcgf5:focus{outline:2px solid rgba(255,255,255,.5);outline-offset:2px}@keyframes svelte-1gwcgf5-slideIn{0%{transform:translate(100%);opacity:0}to{transform:translate(0);opacity:1}}@keyframes svelte-1gwcgf5-slideOut{0%{transform:translate(0);opacity:1}to{transform:translate(100%);opacity:0}}.toast.closing.svelte-1gwcgf5{animation:svelte-1gwcgf5-slideOut .3s ease-in forwards}
