@keyframes shake{0%,to{transform:translateX(0)}20%{transform:translateX(-8px)}40%{transform:translateX(8px)}60%{transform:translateX(-6px)}80%{transform:translateX(6px)}}@keyframes spin{to{transform:rotate(360deg)}}@keyframes float{0%,to{transform:translateY(0)}50%{transform:translateY(-10px)}}:root{--primary:#198754;--primary-dark:#157347;--bg-dark:#0c0c0c;--bg-card:rgb(212,212,212);--bg-card-dark:rgba(20,20,20,0.9);--text:#1a1a1a;--text-light:#ffffff;--text-muted:#666;--shadow:0 25px 50px -12px rgba(0, 0, 0, 0.4)}*{margin:0;padding:0;box-sizing:border-box}.hero,body{min-height:100dvh}body{font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen,Ubuntu,Cantarell,sans-serif;background:var(--bg-dark);color:var(--text-light)}.hero{display:flex;flex-direction:column;justify-content:center;align-items:center;position:relative;padding:2rem;padding-bottom:240px}.hero-bg{position:absolute;inset:0;background:url(/assets/img/radio.webp)center/cover no-repeat;z-index:0}.hero-content{position:relative;z-index:1;width:100%;max-width:650px}.search-card{background:var(--bg-card);border-radius:1rem;padding:.35rem;box-shadow:var(--shadow);display:flex;align-items:center;gap:.5rem}.search-icon{padding:0 1rem;color:#999}.search-icon svg{width:24px;height:24px}.search-input{flex:1;border:0;background:0 0;padding:1rem 0;font-size:1.125rem;color:#000;font-family:inherit}.search-input:focus{outline:0}.search-input::placeholder{color:#333}.search-btn{background:var(--primary);border:0;border-radius:.75rem;padding:1rem 2rem;color:#fff;font-weight:600;font-size:1rem;cursor:pointer;transition:background .2s,transform .2s;font-family:inherit}.search-btn:hover{background:var(--primary-dark);transform:scale(1.02)}.filters{display:flex;gap:.75rem;margin-top:1rem;flex-wrap:wrap}.filter-select{background:rgba(255,255,255,.1);border:1px solid rgba(255,255,255,.2);border-radius:.5rem;padding:.75rem 1rem;color:#fff;font-size:16px;cursor:pointer;font-family:inherit;min-width:150px}.filter-select option{background:#222;color:#fff}.filter-select:focus,.report-details textarea:focus{outline:0;border-color:var(--primary)}.header{background:var(--bg-dark);padding:1rem 2rem;display:flex;justify-content:space-between;align-items:center;border-bottom:1px solid #222}.logo{font-size:1.25rem;font-weight:700;color:#fff;text-decoration:none}.logo-highlight{color:var(--primary)}.search-compact{max-width:500px;flex:1;margin:0 2rem}.search-compact .search-card{padding:.25rem .25rem .25rem 1rem;border-radius:.5rem}.search-compact .search-input{padding:.75rem 0;font-size:.9375rem}.search-compact .search-btn{padding:.75rem 1.5rem;font-size:16px;border-radius:.375rem}.results-page{min-height:100dvh;background:#111}.results{max-width:1200px;margin:0 auto;padding:2rem 2rem 4rem}.results-info{color:#888;margin-bottom:1.5rem;font-size:16px;display:flex;align-items:center;gap:.5rem}.search-info-tooltip{cursor:help;color:#666;display:inline-flex;align-items:center;position:relative}.search-info-tooltip:hover{color:#22c55e}.search-info-icon{width:16px;height:16px}.search-info-text{display:none;position:absolute;left:50%;top:100%;transform:translateX(-50%);margin-top:8px;padding:10px 14px;background:#1a1a1a;border:1px solid #333;border-radius:8px;color:#ccc;font-size:13px;line-height:1.5;white-space:nowrap;z-index:100;box-shadow:0 4px 12px rgba(0,0,0,.3)}.search-info-tooltip:hover .search-info-text{display:block}.results-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:1rem}.station-card{background:#1a1a1a;border:1px solid #2a2a2a;border-radius:.75rem;padding:1rem;text-decoration:none;color:inherit;transition:background .2s,border-color .2s,transform .2s;display:flex;gap:1rem;align-items:center}.station-card:hover{background:#222;border-color:var(--primary);transform:translateY(-2px)}.station-logo{width:60px;height:60px;border-radius:.5rem;object-fit:cover;background:#2a2a2a;flex-shrink:0}.station-logo-fallback{background:url(/assets/img/default-radio.svg)center/cover no-repeat}.station-info{flex:1;min-width:0}.station-name{font-weight:600;margin-bottom:.25rem;display:flex;align-items:center;gap:.5rem}.verified{background:var(--primary);color:#000;padding:.125rem .375rem;border-radius:4px;font-size:.625rem;font-weight:700;text-transform:uppercase}.station-meta{color:#888;font-size:.8125rem}.pagination{display:flex;justify-content:center;gap:.5rem;margin-top:2rem}.pagination-form{display:inline}.page-btn{background:#222;border:1px solid #333;border-radius:.375rem;padding:.5rem 1rem;color:#fff;cursor:pointer;font-family:inherit;font-size:16px}.page-btn:hover{background:#333;border-color:var(--primary)}.page-info{color:#999;padding:.5rem 1rem}.alert{max-width:600px;margin:1rem auto;padding:1rem;border-radius:.5rem;text-align:center;font-size:16px}.alert-error{background:rgba(239,68,68,.2);border:1px solid rgba(239,68,68,.4)}.alert-warning{background:rgba(245,158,11,.2);border:1px solid rgba(245,158,11,.4)}.no-results{max-width:400px;margin:4rem auto;padding:3rem 2rem;background:linear-gradient(135deg,#1a1a1a 0,#141414 100%);border:1px solid #2a2a2a;border-radius:1rem;text-align:center}.no-results-icon{width:80px;height:80px;margin:0 auto 1.5rem;color:#444}.no-results h3{font-size:1.25rem;font-weight:500}.no-results p{color:#666;font-size:.95rem;margin-bottom:1.5rem}.no-results-query{color:var(--primary);font-weight:500}.no-results-link{display:inline-block;padding:.75rem 1.5rem;background:var(--primary);color:#fff;text-decoration:none;border-radius:.5rem;font-weight:500;transition:background .2s}.no-results-link:hover{background:var(--primary-dark)}.error-box{max-width:500px;margin:3rem auto;padding:2.5rem;background:#1a1a1a;border:1px solid #2a2a2a;border-radius:1rem;text-align:center}.error-box-icon{width:64px;height:64px;margin:0 auto 1.5rem;color:#f59e0b}.error-box-icon.error{color:#ef4444}.error-box-icon.info{color:#3b82f6}.error-box h2{font-size:1.5rem;font-weight:600;margin-bottom:.75rem;color:#fff}.error-box p,.no-results h3{color:#888;margin-bottom:.5rem}.error-box p{line-height:1.6}.error-box p:last-of-type{margin-bottom:1.5rem}.error-box-hint{background:#222;border-radius:.5rem;padding:1rem;margin:1.5rem 0;font-size:.875rem}.error-box-hint code{color:var(--primary);font-family:monospace}.error-box-btn{display:inline-block;padding:.75rem 1.5rem;background:var(--primary);color:#fff;text-decoration:none;border-radius:.5rem;font-weight:600;transition:background .2s,transform .2s}.error-box-btn:hover{background:var(--primary-dark);transform:translateY(-2px)}footer{text-align:center;padding:2rem;padding-bottom:240px;color:#888;font-size:.8125rem}.hidden{display:none!important}.results-page footer{display:none}@media (max-width:640px){.hero{min-height:100dvh;height:100dvh;overflow:hidden;padding-bottom:2rem}.results-page{overflow-y:auto;-webkit-overflow-scrolling:touch}.search-input{padding-left:1rem}.search-icon{display:none}.search-card{flex-wrap:wrap}.search-btn{width:100%;margin-top:.5rem}.header{flex-wrap:wrap;padding:1rem}.search-compact{order:3;flex:none;width:100%;margin:.75rem 0 0}.search-compact .search-card{background:#1a1a1a;border:1px solid #333;padding:.5rem}.search-compact .search-input{color:#fff;padding:.75rem 1rem}.search-compact .search-input::placeholder{color:#888}.search-compact .search-btn{padding:.6rem 1rem}.filters{flex-direction:column}.search-input{font-size:16px}.filter-select{width:100%}}.maintenance-banner{background:linear-gradient(90deg,#ff9800 0,#f57c00 100%);color:#fff;padding:12px 20px;display:flex;align-items:center;justify-content:center;gap:10px;font-size:14px;font-weight:500;position:sticky;top:0;z-index:1000;box-shadow:0 2px 8px rgba(0,0,0,.2)}.maintenance-banner svg{flex-shrink:0}.search-compact altcha-widget{margin-top:.5rem}.search-card.shake{animation:shake .4s ease-in-out;box-shadow:0 0 0 2px #dc3545}.back-link{display:inline-block;color:#22c55e;text-decoration:none;margin-bottom:1.5rem;font-size:.9375rem}.back-link:hover{text-decoration:underline}.station-detail{background:#1a1a1a;border:1px solid #2a2a2a;border-radius:1rem;padding:2rem}.station-header{display:flex;gap:2rem;margin-bottom:2rem}.station-logo-large{width:150px;height:150px;border-radius:1rem;object-fit:cover;background:#2a2a2a;flex-shrink:0}.station-header-info{flex:1}.station-title{font-size:1.75rem;font-weight:700;margin-bottom:.5rem;display:flex;align-items:center;gap:.75rem;flex-wrap:wrap}.station-slogan{color:#888;font-style:italic;margin-bottom:.75rem}.station-description{color:#aaa;line-height:1.6}.station-actions{margin-top:1rem;display:flex;gap:.75rem}.report-btn,.share-btn{display:inline-flex;align-items:center;gap:.5rem;background:#222;border:1px solid #333;border-radius:.5rem;padding:.625rem 1rem;color:#ccc;font-size:.875rem;font-weight:500;cursor:pointer;transition:background .2s,border-color .2s,color .2s;font-family:inherit}.share-btn.shared,.share-btn:hover{border-color:var(--primary);color:#fff}.share-btn:hover{background:#2a2a2a}.share-btn.shared{background:var(--primary)}.report-btn:hover{background:#2a2a2a;border-color:#f59e0b;color:#fff}.modal{position:fixed;inset:0;z-index:10000;display:flex;align-items:center;justify-content:center;padding:1rem}.modal.hidden{display:none!important}.modal-backdrop{position:absolute;inset:0;background:rgba(0,0,0,.75);backdrop-filter:blur(4px)}.modal-content{position:relative;background:#1a1a1a;border:1px solid #333;border-radius:1rem;width:100%;max-width:480px;max-height:90vh;overflow-y:auto;box-shadow:0 25px 50px -12px rgba(0,0,0,.5)}.modal-header{display:flex;justify-content:space-between;align-items:center;padding:1.25rem 1.5rem;border-bottom:1px solid #2a2a2a}.modal-header h3{font-size:1.125rem;font-weight:600;color:#fff}.modal-close{background:0 0;border:0;color:#888;cursor:pointer;padding:.25rem;transition:color .2s}.modal-close:hover{color:#fff}.modal-body{padding:1.5rem}.modal-station-name{color:#888;font-size:.875rem;margin-bottom:1rem}.report-options{display:flex;flex-direction:column;gap:.5rem}.report-option{display:flex;align-items:center;gap:.75rem;padding:.875rem 1rem;background:#222;border:1px solid #333;border-radius:.5rem;cursor:pointer;transition:background .2s,border-color .2s}.report-option:hover{background:#2a2a2a;border-color:#444}.report-option input[type=radio]{width:18px;height:18px;accent-color:var(--primary);cursor:pointer}.report-option-text{color:#ccc;font-size:.9375rem}.report-option:has(input:checked){border-color:var(--primary);background:rgba(25,135,84,.1)}.report-details{margin-top:1rem}.report-details label{display:block;color:#888;font-size:.875rem;margin-bottom:.5rem}.report-details textarea{width:100%;background:#222;border:1px solid #333;border-radius:.5rem;padding:.75rem 1rem;color:#fff;font-family:inherit;font-size:.9375rem;resize:vertical;min-height:80px}.report-details textarea::placeholder{color:#666}.modal-footer{display:flex;justify-content:flex-end;gap:.75rem;padding:1rem 1.5rem;border-top:1px solid #2a2a2a}.modal-btn{padding:.625rem 1.25rem;border-radius:.5rem;font-size:.875rem;font-weight:500;cursor:pointer;transition:background .2s,opacity .2s;font-family:inherit}.modal-btn-cancel{background:#333;border:1px solid #444;color:#ccc}.modal-btn-cancel:hover{background:#444}.modal-btn-submit{background:var(--primary);border:0;color:#fff}.modal-btn-submit:hover:not(:disabled){background:var(--primary-dark)}.modal-btn-submit:disabled{opacity:.5;cursor:not-allowed}.modal-status{padding:1rem 1.5rem;text-align:center;font-size:.9375rem}.modal-status.success{color:#22c55e;background:rgba(34,197,94,.1)}.modal-status.info{color:#3b82f6;background:rgba(59,130,246,.1)}.already-reported-message{text-align:center;padding:1.5rem 1rem}.already-reported-message.hidden{display:none}.already-reported-icon{margin-bottom:1rem}.already-reported-icon svg{width:48px;height:48px;color:#22c55e}.already-reported-title{font-size:1.125rem;font-weight:600;color:var(--color-text);margin-bottom:.75rem}.already-reported-details{font-size:.9375rem;color:var(--color-text-secondary);line-height:1.6;margin-bottom:1rem}.already-reported-note{font-size:.875rem;color:var(--color-text-muted);font-style:italic}.toast{position:fixed;top:2rem;left:50%;transform:translateX(-50%) translateY(-120px) scale(.9);background:#1a1a1a;border:1px solid #333;border-radius:.75rem;padding:1rem 1.5rem;display:flex;align-items:center;gap:.75rem;box-shadow:0 10px 40px rgba(0,0,0,.4);z-index:10001;opacity:0;transition:all .5s cubic-bezier(.34,1.56,.64,1);max-width:calc(100% - 2rem)}.toast.visible{transform:translateX(-50%) translateY(0) scale(1);opacity:1}.toast-icon{width:24px;height:24px;flex-shrink:0}.toast.success .toast-icon{color:#22c55e}.toast.error .toast-icon{color:#ef4444}.toast.warning{background:#1a1a1a;border:1px solid #22c55e;box-shadow:0 10px 40px rgba(0,0,0,.6),0 0 30px rgba(34,197,94,.2),inset 0 1px 0 rgba(255,255,255,.05);padding:1.25rem 1.5rem;max-width:650px}.toast.warning .toast-icon{color:#fbbf24;fill:#fbbf24;width:28px;height:28px;filter:drop-shadow(0 0 8px rgba(251,191,36,.5))}.toast.warning .toast-message{line-height:1.6;color:#e5e5e5}.toast-message{color:#fff;font-size:.9375rem;font-weight:500}@media (max-width:640px){.modal{padding:0 .75rem;align-items:center}.modal-content{border-radius:1rem;width:calc(100% - 1.5rem);margin:auto;max-height:85vh}.station-actions{flex-wrap:wrap}.report-btn,.share-btn{flex:1;justify-content:center}}.station-meta-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:1rem;margin-bottom:2rem;padding-bottom:2rem;border-bottom:1px solid #2a2a2a}.meta-item{display:flex;flex-direction:column;gap:.25rem}.meta-label{font-size:.75rem;color:#999;text-transform:uppercase;letter-spacing:.05em}.meta-value{color:#ccc}.meta-link{color:var(--primary);text-decoration:none}.meta-link:hover{text-decoration:underline}.streams-section{margin-top:1.5rem}.streams-title{font-size:1.25rem;font-weight:600;margin-bottom:1rem;color:#fff}.no-streams{color:#999;font-style:italic}.streams-list{display:flex;flex-direction:column;gap:1rem}.stream-item{background:#222;border:1px solid #333;border-radius:.75rem;padding:1rem}.stream-url-container{display:flex;gap:.75rem;align-items:center}.stream-url{flex:1;background:#1a1a1a;border:1px solid #333;border-radius:.5rem;padding:.75rem 1rem;color:#fff;font-family:monospace;font-size:.875rem;min-width:0}.stream-url:focus{outline:0;border-color:var(--primary)}.copy-btn{display:flex;align-items:center;gap:.5rem;background:var(--primary);border:0;border-radius:.5rem;padding:.75rem 1.25rem;color:#fff;font-weight:600;font-size:.875rem;cursor:pointer;transition:background .2s,transform .1s;white-space:nowrap;font-family:inherit}.copy-btn:hover{background:var(--primary-dark)}.copy-btn:active{transform:scale(.98)}.copy-btn.copied{background:#22c55e}.copy-btn .check-icon,.copy-btn.copied .copy-icon{display:none}.copy-btn.copied .check-icon{display:block}.stream-meta{display:flex;gap:.5rem;margin-top:.75rem}.stream-badge{background:#333;color:#aaa;padding:.25rem .5rem;border-radius:.25rem;font-size:.75rem;font-weight:500}@media (max-width:640px){.station-header{flex-direction:column;align-items:center;text-align:center}.station-title{justify-content:center}.station-logo-large{width:120px;height:120px}.station-detail{padding:1.5rem}.stream-url-container{flex-direction:column}.copy-btn,.stream-url{width:100%}.copy-btn{justify-content:center}}.loading-overlay{position:fixed;top:0;left:0;width:100%;height:100%;background:rgba(0,0,0,.7);backdrop-filter:blur(4px);display:flex;align-items:center;justify-content:center;z-index:9999;opacity:0;visibility:hidden;transition:opacity .2s ease,visibility .2s ease}.loading-overlay.visible{opacity:1;visibility:visible}.loading-content{text-align:center;color:#fff}.loading-spinner{width:48px;height:48px;border:4px solid rgba(255,255,255,.2);border-top-color:#3b82f6;border-radius:50%;animation:spin .8s linear infinite;margin:0 auto 16px}.loading-text{font-size:1.125rem;font-weight:500;color:rgba(255,255,255,.9)}.not-found{min-height:100vh;display:flex;align-items:center;justify-content:center;text-align:center;padding:2rem}.not-found-content{max-width:500px}.not-found-icon{font-size:6rem;margin-bottom:1rem;animation:float 3s ease-in-out infinite}.not-found h1{font-size:2rem;margin-bottom:.5rem;color:var(--text-primary)}.not-found p{color:var(--text-secondary);margin-bottom:1.5rem;font-size:1.1rem;line-height:1.6}.not-found-btn{display:inline-block;padding:.75rem 2rem;background:var(--primary-gradient);color:#fff;text-decoration:none;border-radius:50px;font-weight:600;transition:transform .2s,box-shadow .2s}.not-found-btn:hover{transform:translateY(-2px);box-shadow:0 4px 15px rgba(99,102,241,.4)}.refresh-btn{display:inline-flex;align-items:center;justify-content:center;width:44px;height:44px;margin-right:8px;background:rgba(59,130,246,.1);border:1px solid rgba(59,130,246,.3);border-radius:8px;color:#3b82f6;font-size:1.25rem;text-decoration:none;transition:all .2s ease}.refresh-btn:hover{background:rgba(59,130,246,.2);border-color:#3b82f6;transform:scale(1.1)}.load-more-container{display:flex;justify-content:center;margin:2.5rem 0 1.5rem}.load-more-btn{background:0 0;color:var(--primary);border:2px solid var(--primary);padding:.875rem 2.5rem;font-size:1rem;font-weight:600;font-family:inherit;border-radius:.75rem;cursor:pointer;transition:all .2s ease;position:relative;overflow:hidden}.load-more-btn::before{content:"";position:absolute;top:0;left:-100%;width:100%;height:100%;background:var(--primary);transition:left .3s ease;z-index:-1}.load-more-btn:hover:not(:disabled){color:#fff;transform:scale(1.02)}.load-more-btn:hover:not(:disabled)::before{left:0}.load-more-btn:disabled{opacity:.6;cursor:not-allowed;color:#888;border-color:#444}.load-more-btn:disabled::before{display:none}.station-id{display:inline-block;margin-top:1rem;font-size:.7rem;font-family:monospace;color:#444;cursor:pointer;opacity:.4;transition:opacity .2s}.station-id:hover{opacity:.8}.station-id.copied{color:var(--primary);opacity:1}.stream-url{user-select:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none}.header--station{min-height:84px}span.stream-url{overflow-x:auto;overflow-y:hidden;white-space:nowrap;scrollbar-width:thin;scrollbar-color:#444 transparent;cursor:pointer;transition:background .2s,border-color .2s}span.stream-url::-webkit-scrollbar{height:4px}span.stream-url::-webkit-scrollbar-track{background:0 0}span.stream-url::-webkit-scrollbar-thumb{background:#444;border-radius:2px}span.stream-url:hover{background:#222;border-color:var(--primary)}span.stream-url:active{background:#2a2a2a}span.stream-url.copied{background:rgba(34,197,94,.2);border-color:#22c55e}.no-hotlink{user-select:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;-webkit-user-drag:none;-khtml-user-drag:none;-moz-user-drag:none;-o-user-drag:none;user-drag:none;pointer-events:auto}.toast-message strong{font-weight:700;color:#fbbf24}.toast-message .hotlink-warning{font-weight:700;color:#fb923c;text-decoration:underline;text-decoration-color:rgba(251,146,60,.5);text-underline-offset:2px}.geo-banner{display:flex;align-items:flex-start;gap:.75rem;background:linear-gradient(135deg,rgba(251,191,36,.15)0,rgba(245,158,11,.1) 100%);border:1px solid rgba(251,191,36,.4);border-radius:.5rem;padding:.875rem 1rem;margin-bottom:1.5rem}.geo-banner-icon{flex-shrink:0;color:#fbbf24;margin-top:.125rem}.geo-banner-content{display:flex;flex-direction:column;gap:.25rem;font-size:.875rem;line-height:1.4}.geo-banner-content strong{color:#fbbf24;font-weight:600}.geo-banner-content span{color:#d1d5db}.report-btn{position:relative}.report-badge{position:absolute;top:-4px;right:-4px;min-width:18px;height:18px;padding:0 5px;background:#ef4444;color:#fff;font-size:11px;font-weight:600;line-height:18px;text-align:center;border-radius:9px;box-shadow:0 1px 3px rgba(0,0,0,.3)}.existing-reports-note.hidden,.report-badge.hidden{display:none}.existing-reports-note{background:rgba(251,191,36,.1);border:1px solid rgba(251,191,36,.3);border-radius:.5rem;padding:.75rem 1rem;margin-bottom:1rem;font-size:.875rem;color:#fbbf24}.existing-reports-note strong{color:#fcd34d}@media (max-width:640px){.station-meta-grid{display:grid;grid-template-columns:auto auto;gap:.75rem 3rem;width:fit-content;margin-left:auto;margin-right:auto}.meta-item{min-width:0}.meta-link,.meta-value{font-size:.875rem;word-break:break-word}}.stream-item,.stream-url-container,span.stream-url{max-width:100%;overflow:hidden}span.stream-url{box-sizing:border-box;display:block;width:100%;text-overflow:ellipsis}