*{margin:0;padding:0}body{min-width:320px;min-height:100vh}button{font-family:inherit;cursor:pointer}input{font-family:inherit}.header{background:var(--header-bg);border-bottom:1px solid var(--border);position:sticky;top:0;z-index:100;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}.discord-banner{background:var(--accent-gradient);color:#fff;text-align:center;padding:.5rem 1rem;font-size:.85rem}.discord-banner a{color:#fff;font-weight:600;text-decoration:underline}.discord-banner span{opacity:.9}.header-content{max-width:1600px;margin:0 auto;padding:1rem clamp(1rem,3vw,2rem)}.header-top{display:flex;align-items:center;justify-content:space-between;gap:1rem;margin-bottom:1rem;flex-wrap:wrap}.logo-text{font-size:1.3rem;font-weight:700;background:var(--accent-gradient);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text;white-space:nowrap}.tagline{font-size:.85rem;color:var(--text-muted);margin:0}.filter-bar{display:flex;align-items:stretch;gap:.5rem;flex-wrap:wrap}.region-dropdown{position:relative}.region-toggle{display:flex;align-items:center;gap:.5rem;padding:.5rem .75rem;border:1px solid var(--border);border-radius:8px;background:var(--card-bg);color:var(--text);font-size:.85rem;cursor:pointer;transition:all .2s;height:100%}.region-toggle:hover{border-color:var(--accent)}.region-toggle-label{display:flex;align-items:center;gap:.5rem}.region-toggle-area{font-size:.65rem;text-transform:uppercase;letter-spacing:.05em;color:var(--text-muted);padding:.15rem .4rem;background:var(--border);border-radius:4px}.region-toggle-city{font-weight:600}.dropdown-arrow{width:14px;height:14px;color:var(--text-muted);transition:transform .2s;flex-shrink:0}.dropdown-arrow.open{transform:rotate(180deg)}.region-menu{position:absolute;top:calc(100% + .5rem);left:0;min-width:320px;max-height:400px;overflow-y:auto;background:var(--card-bg);border:1px solid var(--border);border-radius:12px;box-shadow:0 10px 40px #0000004d;z-index:1000;padding:.5rem}.location-option{padding:.75rem;border-bottom:1px solid var(--border);display:flex;flex-direction:column;gap:.35rem}.use-location-btn{display:flex;align-items:center;justify-content:center;gap:.5rem;width:100%;padding:.6rem 1rem;border:1px dashed var(--accent);border-radius:8px;background:transparent;color:var(--accent);font-size:.85rem;font-weight:500;cursor:pointer;transition:all .2s}.use-location-btn:hover:not(:disabled){background:var(--accent);color:#fff;border-style:solid}.use-location-btn:disabled{cursor:wait;opacity:.7}.use-location-btn.loading{border-color:var(--text-muted);color:var(--text-muted)}.use-location-btn.success{border-color:#22c55e;color:#22c55e;border-style:solid}.use-location-btn.denied,.use-location-btn.error{border-color:#ef4444;color:#ef4444}.location-icon{width:16px;height:16px}.location-privacy{font-size:.7rem;color:var(--text-muted);text-align:center;font-style:italic}.region-group{padding:.5rem 0}.region-group:not(:last-child){border-bottom:1px solid var(--border)}.region-group-label{font-size:.65rem;font-weight:700;text-transform:uppercase;letter-spacing:.1em;color:var(--text-muted);padding:.4rem .75rem .3rem}.region-group-cities{display:flex;flex-wrap:wrap;gap:.25rem;padding:0 .5rem}.region-city-btn{padding:.35rem .65rem;border:none;border-radius:6px;background:transparent;color:var(--text);font-size:.8rem;cursor:pointer;transition:all .15s}.region-city-btn:hover{background:var(--hover-bg);color:var(--accent)}.region-city-btn.active{background:var(--accent);color:#fff}.date-selector{display:flex;align-items:center;background:var(--card-bg);border:1px solid var(--border);border-radius:8px;padding:.25rem;gap:.15rem}.date-btn{padding:.35rem .65rem;border:none;border-radius:6px;background:transparent;color:var(--text-muted);font-size:.8rem;font-weight:500;cursor:pointer;transition:all .15s;white-space:nowrap}.date-btn:hover{color:var(--text);background:var(--hover-bg)}.date-btn.active{background:var(--accent);color:#fff}.date-range-wrapper{position:relative}.date-range-btn{display:flex;align-items:center;gap:.35rem}.calendar-icon{width:14px;height:14px;flex-shrink:0}.date-picker-dropdown{position:absolute;top:calc(100% + .5rem);right:0;background:var(--card-bg);border:1px solid var(--border);border-radius:12px;padding:1rem;box-shadow:0 10px 40px #0000004d;z-index:1000;min-width:280px}.date-picker-row{display:flex;gap:.75rem}.date-picker-row label{flex:1;display:flex;flex-direction:column;gap:.35rem;font-size:.75rem;color:var(--text-muted);text-transform:uppercase;letter-spacing:.05em}.date-picker-row input[type=date]{padding:.5rem;border:1px solid var(--border);border-radius:6px;background:var(--bg);color:var(--text);font-size:.85rem;width:100%}.date-picker-row input[type=date]:focus{outline:none;border-color:var(--accent)}.date-picker-clear{margin-top:.75rem;width:100%;padding:.5rem;border:1px dashed var(--text-muted);border-radius:6px;background:transparent;color:var(--text-muted);font-size:.8rem;cursor:pointer;transition:all .15s}.date-picker-clear:hover{border-color:var(--accent);color:var(--accent)}.search-container{position:relative;flex:1;min-width:200px;max-width:350px}.search-icon{position:absolute;left:.75rem;top:50%;transform:translateY(-50%);width:16px;height:16px;color:var(--text-muted)}.search-input{width:100%;padding:.5rem .75rem .5rem 2.25rem;border:1px solid var(--border);border-radius:8px;background:var(--card-bg);color:var(--text);font-size:.85rem;transition:border-color .2s,box-shadow .2s}.search-input:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-glow)}.search-input::placeholder{color:var(--text-muted)}.result-count{font-size:.75rem;color:var(--text-muted);display:flex;align-items:center;padding:0 .5rem;white-space:nowrap}@media(max-width:768px){.header-content{padding:.75rem 1rem}.header-top{margin-bottom:.75rem}.logo-text{font-size:1.1rem}.tagline{display:none}.filter-bar{gap:.5rem}.region-toggle{flex:1}.region-menu{position:fixed;left:1rem;right:1rem;min-width:unset;max-width:unset}.date-selector{order:3;width:100%;overflow-x:auto;justify-content:flex-start}.search-container{flex:2;min-width:150px;max-width:none}.result-count{order:4;width:100%;justify-content:center;padding:.25rem 0}}@media(max-width:480px){.region-toggle-area{display:none}.date-btn{padding:.3rem .5rem;font-size:.75rem}}.filters{width:clamp(200px,20vw,280px);flex-shrink:0;position:sticky;top:180px;max-height:calc(100vh - 200px);overflow-y:auto}.clear-all-btn{display:flex;align-items:center;gap:.5rem;width:100%;padding:.6rem .85rem;margin-bottom:1rem;border:1px solid var(--border);border-radius:8px;background:transparent;color:var(--text-muted);font-size:.8rem;font-weight:500;cursor:pointer;transition:all .2s}.clear-all-btn:hover{background:var(--hover-bg);color:var(--text);border-color:var(--text-muted)}.clear-all-btn .icon{width:14px;height:14px}.filter-section{margin-bottom:1.5rem}.filter-title{font-size:.8rem;text-transform:uppercase;letter-spacing:.05em;color:var(--text-muted);margin:0 0 .75rem;display:flex;align-items:center;justify-content:space-between}.clear-btn{font-size:.7rem;color:var(--accent);background:none;border:none;cursor:pointer;text-transform:none;letter-spacing:normal}.clear-btn:hover{text-decoration:underline}.filter-options{display:flex;flex-direction:row;flex-wrap:wrap;gap:.5rem}.filter-btn{display:flex;align-items:center;gap:.4rem;padding:.4rem .75rem;border:1px solid var(--border);border-radius:20px;background:transparent;color:var(--text-muted);font-size:.8rem;cursor:pointer;transition:all .2s;text-align:left;white-space:nowrap}.filter-btn:hover{background:var(--hover-bg);color:var(--text);border-color:var(--text-muted)}.filter-btn.active{background:var(--accent);border-color:var(--accent);color:#fff}.filter-btn .count{font-size:.75rem;opacity:.7;margin-left:.5rem}.prefs-section{border-top:1px solid var(--border);padding-top:1rem;margin-top:.5rem}.prefs-actions{display:flex;flex-direction:column;gap:.5rem}.prefs-btn{display:flex;align-items:center;gap:.5rem;padding:.6rem .85rem;border-radius:8px;font-size:.8rem;font-weight:500;cursor:pointer;transition:all .2s}.prefs-btn .icon{width:14px;height:14px}.prefs-btn.save{background:var(--accent-gradient);border:none;color:#fff}.prefs-btn.save:hover{transform:translateY(-1px);box-shadow:0 4px 12px var(--accent-glow)}.prefs-btn.clear{background:transparent;border:1px solid var(--border);color:var(--text-muted)}.prefs-btn.clear:hover{background:var(--hover-bg);color:var(--text)}.prefs-note{font-size:.7rem;color:var(--text-muted);margin:.5rem 0 0;opacity:.7}.filters-mobile-header{display:none}@media(max-width:1024px){.filters{width:100%;position:sticky;top:140px;z-index:50;max-height:none;background:var(--bg);border-bottom:1px solid var(--border);padding:.75rem 0;margin-bottom:1rem}.filters-mobile-header{display:flex;flex-direction:column;gap:.75rem}.filters-toggle{display:flex;align-items:center;gap:.5rem;padding:.75rem 1rem;background:var(--card-bg);border:1px solid var(--border);border-radius:8px;color:var(--text);font-size:.9rem;font-weight:500;cursor:pointer;transition:all .2s}.filters-toggle:hover{border-color:var(--accent)}.filters-toggle .icon{width:18px;height:18px;color:var(--text-muted)}.filters-toggle .chevron{width:16px;height:16px;margin-left:auto;color:var(--text-muted);transition:transform .2s}.filters-toggle .chevron.up{transform:rotate(180deg)}.filter-badge{background:var(--accent);color:#fff;font-size:.7rem;font-weight:600;padding:.15rem .5rem;border-radius:10px;min-width:18px;text-align:center}.active-filters-chips{display:flex;flex-wrap:wrap;gap:.5rem}.filter-chip{display:flex;align-items:center;gap:.35rem;padding:.4rem .6rem;background:var(--accent);border:none;border-radius:16px;color:#fff;font-size:.8rem;cursor:pointer;transition:all .2s}.filter-chip:hover{background:var(--accent);filter:brightness(1.1)}.filter-chip.clear-all{background:transparent;border:1px solid var(--border);color:var(--text-muted)}.filter-chip.clear-all:hover{background:var(--hover-bg);color:var(--text)}.filter-chip .chip-x{width:14px;height:14px;opacity:.8}.filters-content{display:none;margin-top:1rem}.filters.expanded .filters-content{display:block}.prefs-actions{flex-direction:row}}@media(max-width:480px){.filter-btn{padding:.35rem .6rem;font-size:.75rem}.filter-btn .count{font-size:.7rem}}.event-card{display:flex;gap:clamp(1rem,2vw,1.5rem);padding:clamp(1rem,2vw,1.5rem);background:var(--card-bg);border-radius:12px;border:1px solid var(--border);transition:transform .2s,box-shadow .2s}.event-card:hover{transform:translateY(-2px);box-shadow:0 8px 30px #0000004d}.event-card.clickable{cursor:pointer}.event-card.ra{border-left:3px solid #ff4d4d}.event-card.\31 9hz{border-left:3px solid #4dabf7}.event-card.edmtrain{border-left:3px solid #ffa500}.event-card.today{background:#66a9f126}.event-date{display:flex;flex-direction:column;align-items:center;min-width:80px;padding:.75rem;background:var(--accent-gradient);border-radius:8px;color:#fff;text-align:center}.event-date .day-of-week{font-size:.75rem;text-transform:uppercase;letter-spacing:.05em;opacity:.9}.event-date .date{font-size:.9rem;font-weight:600;margin-top:.25rem}.event-date .time{font-size:.7rem;margin-top:.5rem;opacity:.9;line-height:1.3}.event-details{flex:1;min-width:0}.event-header{display:flex;align-items:flex-start;gap:.75rem;margin-bottom:.5rem}.event-title{margin:0;font-size:1.1rem;font-weight:600;line-height:1.3;flex:1}.event-title a{color:var(--text);text-decoration:none;transition:color .2s}.event-title a:hover{color:var(--accent)}.event-badges{display:flex;flex-direction:column;align-items:flex-end;gap:.35rem;flex-shrink:0}.today-badge{padding:.2rem .5rem;border-radius:4px;font-size:.65rem;font-weight:700;text-transform:uppercase;letter-spacing:.05em;background:#75f74d33;color:#75f74d;border:1px solid rgba(117,247,77,.3)}.source-badge{flex-shrink:0;padding:.2rem .5rem;border-radius:4px;font-size:.65rem;font-weight:700;text-transform:uppercase;letter-spacing:.05em}.source-badge.ra{background:#ff4d4d33;color:#ff6b6b;border:1px solid rgba(255,77,77,.3)}.source-badge.\31 9hz{background:#4dabf733;color:#4dabf7;border:1px solid rgba(77,171,247,.3)}.source-badge.edmtrain{background:#ffa50033;color:orange;border:1px solid rgba(255,165,0,.3)}.event-artists{font-size:.85rem;color:var(--text-muted);margin-bottom:.5rem;font-style:italic}.event-venue{display:flex;align-items:center;gap:.5rem;font-size:.9rem;color:var(--text-muted);margin-bottom:.75rem}.event-venue .city{opacity:.7}.event-tags{display:flex;flex-wrap:wrap;gap:.5rem;margin-bottom:.75rem}.tag{padding:.25rem .75rem;background:var(--tag-bg);color:var(--tag-text);border-radius:20px;font-size:.75rem;font-weight:500}.tag.more{background:var(--border);color:var(--text-muted)}.event-meta{display:flex;flex-wrap:wrap;gap:1rem;font-size:.85rem;color:var(--text-muted)}.event-meta>span{display:flex;align-items:center;gap:.35rem}.event-meta .attending{color:#69db7c}.event-links{display:flex;flex-wrap:wrap;gap:.75rem;margin-top:.75rem}.event-links .link{font-size:.8rem;color:var(--accent);text-decoration:none;padding:.25rem .5rem;border:1px solid var(--accent);border-radius:4px;transition:background .2s,color .2s}.event-links .link:hover{background:var(--accent);color:#fff}.event-card-compact{display:flex;align-items:center;gap:.75rem;padding:.75rem 1rem;background:var(--card-bg);border-radius:8px;border:1px solid var(--border);border-left:3px solid var(--border);transition:background .2s}.event-card-compact:hover{background:var(--hover-bg)}.event-card-compact.clickable{cursor:pointer}.event-card-compact.today{background:#66a9f11a}.event-card-compact.ra{border-left-color:#ff4d4d}.event-card-compact.\31 9hz{border-left-color:#4dabf7}.event-card-compact.edmtrain{border-left-color:orange}.event-card-compact.ticketmaster{border-left-color:#0096ff}.compact-votes{display:flex;align-items:center;gap:.25rem;flex-shrink:0}.compact-votes .vote-btn{background:none;border:none;padding:.15rem;cursor:pointer;font-size:.85rem;opacity:.5;transition:opacity .2s,transform .2s;line-height:1}.compact-votes .vote-btn:hover{opacity:1;transform:scale(1.15)}.compact-votes .vote-btn.active{opacity:1}.compact-votes .vote-score{font-size:.75rem;font-weight:600;min-width:20px;text-align:center;color:var(--text-muted)}.compact-votes .vote-score.positive{color:#75f74d}.compact-votes .vote-score.negative{color:#ff6b6b}.compact-time{font-size:.8rem;font-weight:600;color:var(--text-muted);min-width:50px;text-align:center}.compact-main{flex:1;min-width:0}.compact-title-row{display:flex;align-items:center;gap:.5rem}.compact-title{font-size:.9rem;font-weight:500;color:var(--text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.compact-venue{font-size:.75rem;color:var(--text-muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.compact-tags{display:flex;align-items:center;gap:.35rem;flex-shrink:0;flex-wrap:wrap;justify-content:center}.compact-badge{font-size:.65rem;font-weight:600;padding:.15rem .45rem;border-radius:4px;white-space:nowrap}.compact-badge.today{background:#75f74d33;color:#75f74d}.compact-badge.source{font-weight:700;text-transform:uppercase}.compact-badge.source.ra{background:#ff4d4d33;color:#ff6b6b}.compact-badge.source.\31 9hz{background:#4dabf733;color:#4dabf7}.compact-badge.source.edmtrain{background:#ffa50033;color:orange}.compact-badge.source.ticketmaster{background:#0096ff33;color:#0096ff}.compact-badge.genre{background:var(--tag-bg);color:var(--tag-text);font-weight:500}.compact-badge.more{background:var(--border);color:var(--text-muted);font-weight:500}@media(max-width:600px){.event-card-compact{flex-wrap:wrap;padding:.6rem .75rem;gap:.5rem}.compact-time{min-width:45px;font-size:.75rem}.compact-main{flex:1 1 calc(100% - 120px);min-width:150px}.compact-title-row{flex-wrap:wrap;gap:.35rem}.compact-title{font-size:.85rem;white-space:normal;word-break:break-word}.compact-venue{white-space:normal;word-break:break-word}.compact-tags{flex-basis:100%;justify-content:flex-start;margin-top:.25rem}.compact-badge{font-size:.6rem}.compact-votes{position:absolute;right:.75rem;top:.6rem}.event-card-compact{position:relative;padding-right:70px}}.event-list{flex:1;min-width:0}.date-section{margin-bottom:2rem}.date-header{display:flex;align-items:center;gap:.75rem;font-size:1rem;font-weight:600;color:var(--text-muted);margin:0 0 1rem;padding-bottom:.5rem;border-bottom:1px solid var(--border)}.date-header .event-count{background:var(--accent);color:#fff;font-size:.7rem;font-weight:600;padding:.15rem .5rem;border-radius:10px;min-width:20px;text-align:center}.date-events{display:flex;flex-direction:column;gap:.35rem}.event-list-state{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:4rem 2rem;text-align:center;color:var(--text-muted)}.event-list-state p{margin:1rem 0 .5rem;font-size:1.1rem;color:var(--text)}.event-list-state.error{color:#ef4444}.error-icon,.empty-icon{width:48px;height:48px;opacity:.5}.error-detail{font-size:.9rem;opacity:.7}.loader{width:48px;height:48px;position:relative}.loader-ring{width:100%;height:100%;border:3px solid var(--border);border-top-color:var(--accent);border-radius:50%;animation:spin 1s linear infinite}.pagination{display:flex;align-items:center;justify-content:center;gap:.5rem;margin-top:2rem;padding:1.5rem 0;border-top:1px solid var(--border)}.pagination-btn{display:flex;align-items:center;justify-content:center;min-width:36px;height:36px;padding:0 .5rem;border:1px solid var(--border);border-radius:8px;background:transparent;color:var(--text-muted);font-size:.85rem;font-weight:500;cursor:pointer;transition:all .2s}.pagination-btn:hover:not(:disabled){background:var(--hover-bg);border-color:var(--accent);color:var(--text)}.pagination-btn.active{background:var(--accent);border-color:var(--accent);color:#fff}.pagination-btn:disabled{opacity:.4;cursor:not-allowed}.pagination-btn svg{width:16px;height:16px}.pagination-ellipsis{color:var(--text-muted);padding:0 .25rem}.pagination-info{margin-left:1rem;font-size:.8rem;color:var(--text-muted)}@media(max-width:600px){.pagination{flex-wrap:wrap;gap:.35rem}.pagination-btn{min-width:32px;height:32px;font-size:.8rem}.pagination-info{width:100%;text-align:center;margin:.5rem 0 0}}.venue-card{display:flex;justify-content:space-between;align-items:center;gap:1rem;padding:clamp(1rem,2vw,1.5rem);background:var(--card-bg);border-radius:12px;border:1px solid var(--border);transition:transform .2s,box-shadow .2s}.venue-card:hover{transform:translateY(-2px);box-shadow:0 8px 30px #0000004d}.venue-info{flex:1;min-width:0}.venue-name{margin:0 0 .25rem;font-size:1.1rem;font-weight:600;color:var(--text)}.venue-city{font-size:.85rem;color:var(--text-muted)}.venue-stats{display:flex;gap:1rem;margin-top:.5rem;font-size:.85rem;color:var(--text-muted)}.venue-stats .stat{display:flex;align-items:center;gap:.35rem}.venue-stats .icon{width:14px;height:14px}.venue-genres{display:flex;flex-wrap:wrap;gap:.5rem;margin-top:.75rem}.venue-voting{display:flex;align-items:center;gap:.25rem;flex-shrink:0}.venue-voting .vote-button{display:flex;align-items:center;justify-content:center;padding:.5rem;border-radius:6px;border:1px solid var(--border);background:var(--bg);color:var(--text-muted);cursor:pointer;transition:all .2s}.venue-voting .vote-button:hover{background:var(--hover-bg)}.venue-voting .vote-button.upvote:hover{border-color:#69db7c}.venue-voting .vote-button.upvote.active{background:#69db7c;border-color:#69db7c}.venue-voting .vote-button.downvote:hover{border-color:#ff6b6b}.venue-voting .vote-button.downvote.active{background:#ff6b6b;border-color:#ff6b6b}.venue-voting .vote-emoji{font-size:1rem;line-height:1}.venue-voting .vote-score{min-width:2ch;text-align:center;font-size:.9rem;font-weight:600;color:var(--text);padding:0 .25rem}@media(max-width:500px){.venue-card{flex-direction:column;align-items:stretch}.venue-voting{justify-content:center;padding-top:.75rem;border-top:1px solid var(--border);margin-top:.75rem}}.venue-list{flex:1;min-width:0}.venue-list-header{margin-bottom:1rem;padding-bottom:.5rem;border-bottom:1px solid var(--border)}.venue-count{font-size:.9rem;color:var(--text-muted)}.venue-grid{display:flex;flex-direction:column;gap:1rem}.venue-list-state{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:4rem 2rem;text-align:center;color:var(--text-muted)}.venue-list-state p{margin:1rem 0 .5rem;font-size:1.1rem;color:var(--text)}.venue-list-state .detail{font-size:.9rem;opacity:.7}.venue-list-state .empty-icon{width:48px;height:48px;opacity:.5}.venue-list-state .loader{width:48px;height:48px;position:relative}.venue-list-state .loader-ring{width:100%;height:100%;border:3px solid var(--border);border-top-color:var(--accent);border-radius:50%;animation:spin 1s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.artists-container{display:flex;flex-direction:column;gap:.75rem;margin-top:1rem}.artist-pill{display:flex;align-items:center;justify-content:space-between;gap:1rem;padding:.75rem 1rem;background:var(--hover-bg);border-radius:8px;border:1px solid var(--border)}.artist-name{font-weight:500;color:var(--text);flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.artist-links{display:flex;gap:.5rem;flex-shrink:0}.artist-link{display:flex;align-items:center;justify-content:center;width:32px;height:32px;border-radius:6px;background:var(--card-bg);border:1px solid var(--border);color:var(--text-muted);transition:all .2s}.artist-link svg{width:16px;height:16px}.artist-link:hover{transform:translateY(-2px);text-decoration:none}.artist-link.spotify:hover{background:#1db954;border-color:#1db954;color:#fff}.artist-link.apple:hover{background:#fa243c;border-color:#fa243c;color:#fff}.artist-link.soundcloud:hover{background:#f50;border-color:#f50;color:#fff}.artist-link.bandcamp:hover{background:#1da0c3;border-color:#1da0c3;color:#fff}@media(max-width:500px){.artist-pill{flex-direction:column;align-items:flex-start;gap:.5rem}.artist-links{width:100%;justify-content:flex-start}}.modal-overlay{position:fixed;inset:0;background:#000c;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);z-index:1000;display:flex;align-items:center;justify-content:center;padding:clamp(.5rem,2vw,1rem);overflow-y:auto}.modal-content{background:var(--card-bg);border:1px solid var(--border);border-radius:16px;max-width:min(600px,95vw);width:100%;max-height:90vh;overflow-y:auto;position:relative}.modal-close{position:absolute;top:1rem;right:1rem;width:36px;height:36px;border-radius:50%;border:1px solid var(--border);background:var(--bg);color:var(--text-muted);cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all .2s;z-index:10}.modal-close:hover{background:var(--hover-bg);color:var(--text)}.modal-close svg{width:18px;height:18px}.modal-header{display:flex;gap:clamp(1rem,3vw,1.5rem);padding:clamp(1rem,3vw,1.5rem);border-bottom:1px solid var(--border)}.modal-date{display:flex;flex-direction:column;align-items:center;justify-content:center;min-width:90px;padding:1rem;background:var(--accent-gradient);border-radius:12px;color:#fff;text-align:center}.modal-day{font-size:.75rem;text-transform:uppercase;letter-spacing:.05em;opacity:.9}.modal-date-text{font-size:1rem;font-weight:600;margin-top:.25rem}.modal-time{font-size:.75rem;margin-top:.5rem;opacity:.9}.modal-info{flex:1;min-width:0;padding-right:2rem}.modal-title{font-size:1.25rem;font-weight:600;margin:0 0 .75rem;color:var(--text);line-height:1.3}.modal-venue{display:flex;align-items:center;gap:.5rem;color:var(--text-muted);font-size:.9rem;margin-bottom:.75rem}.modal-city{opacity:.7}.modal-meta{display:flex;flex-wrap:wrap;gap:1rem;margin-bottom:.75rem}.meta-item{display:flex;align-items:center;gap:.35rem;font-size:.85rem;color:var(--text-muted)}.meta-item.attending{color:#69db7c}.modal-tags{display:flex;flex-wrap:wrap;gap:.5rem}.modal-artists{padding:clamp(1rem,3vw,1.5rem);border-bottom:1px solid var(--border)}.section-title{font-size:1rem;font-weight:600;margin:0 0 .25rem;color:var(--text)}.section-subtitle{font-size:.8rem;color:var(--text-muted);margin:0 0 1rem}.modal-links{padding:clamp(1rem,3vw,1.5rem)}.links-list{display:flex;flex-direction:column;gap:.75rem}.link-row{display:flex;align-items:center;gap:.75rem}.link-row .modal-button{flex:1}.vote-controls{display:flex;align-items:center;gap:.25rem;flex-shrink:0}.vote-button{display:flex;align-items:center;gap:.25rem;padding:.4rem .6rem;border-radius:6px;border:1px solid var(--border);background:var(--bg);color:var(--text-muted);cursor:pointer;transition:all .2s;font-size:.75rem;font-weight:500}.vote-button svg{width:14px;height:14px}.vote-emoji{font-size:1rem;line-height:1}.vote-button:hover{background:var(--hover-bg);color:var(--text)}.vote-button:disabled{opacity:.5;cursor:not-allowed}.vote-button.upvote:hover{border-color:#69db7c;color:#69db7c}.vote-button.upvote.active{background:#69db7c;border-color:#69db7c;color:#fff}.vote-button.downvote:hover{border-color:#ff6b6b;color:#ff6b6b}.vote-button.downvote.active{background:#ff6b6b;border-color:#ff6b6b;color:#fff}.vote-score{min-width:2ch;text-align:center;font-size:.85rem;font-weight:600;color:var(--text);padding:0 .25rem}.modal-button{display:inline-flex;align-items:center;gap:.5rem;padding:.75rem 1.25rem;border-radius:8px;font-size:.9rem;font-weight:500;text-decoration:none;transition:all .2s}.modal-button svg{width:16px;height:16px}.modal-button.primary{background:var(--accent-gradient);color:#fff}.modal-button.primary:hover{transform:translateY(-1px);box-shadow:0 4px 15px var(--accent-glow);text-decoration:none}.modal-button.secondary{background:transparent;border:1px solid var(--border);color:var(--text)}.modal-button.secondary:hover{background:var(--hover-bg);text-decoration:none}.icon{width:16px;height:16px;flex-shrink:0}@media(max-width:500px){.modal-header{flex-direction:column;gap:1rem}.modal-date{flex-direction:row;gap:1rem;min-width:auto;justify-content:center}.modal-info{padding-right:0}}.region-picker-overlay{position:fixed;inset:0;background:var(--bg);z-index:1000;display:flex;align-items:center;justify-content:center;padding:2rem;overflow-y:auto}.region-picker{max-width:700px;width:100%;text-align:center}.region-picker-header{margin-bottom:3rem}.region-picker-logo{font-size:2.5rem;font-weight:700;margin:0;background:var(--accent-gradient);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text;line-height:1.2}.region-picker-subtitle{color:var(--text-muted);margin:.5rem 0 0;font-size:1.1rem}.zipcode-form{display:flex;gap:.75rem;max-width:400px;margin:0 auto 1.5rem}.zipcode-input{flex:1;padding:.875rem 1.25rem;border:1px solid var(--border);border-radius:8px;background:var(--input-bg);color:var(--text);font-size:1rem;text-align:center;letter-spacing:.1em}.zipcode-input:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-glow)}.zipcode-input::placeholder{color:var(--text-muted);letter-spacing:normal}.zipcode-button{padding:.875rem 1.5rem;border:none;border-radius:8px;background:var(--accent-gradient);color:#fff;font-size:.95rem;font-weight:600;cursor:pointer;transition:transform .2s,box-shadow .2s;white-space:nowrap}.zipcode-button:hover:not(:disabled){transform:translateY(-1px);box-shadow:0 4px 15px var(--accent-glow)}.zipcode-button:disabled{opacity:.7;cursor:not-allowed}.zipcode-error{color:#ef4444;font-size:.85rem;margin:-.5rem 0 1rem}.divider{display:flex;align-items:center;gap:1rem;margin:2rem 0;color:var(--text-muted);font-size:.85rem}.divider:before,.divider:after{content:"";flex:1;height:1px;background:var(--border)}.region-picker-title{font-size:1.25rem;font-weight:500;color:var(--text);margin:0 0 2rem}.region-groups{display:flex;flex-direction:column;gap:1.5rem;text-align:left}.region-group{background:var(--card-bg);border:1px solid var(--border);border-radius:12px;padding:1.25rem}.group-name{font-size:.75rem;text-transform:uppercase;letter-spacing:.1em;color:var(--text-muted);margin:0 0 .75rem}.group-regions{display:flex;flex-wrap:wrap;gap:.5rem}.region-button{padding:.6rem 1.25rem;border:1px solid var(--border);border-radius:8px;background:transparent;color:var(--text);font-size:.95rem;cursor:pointer;transition:all .2s}.region-button:hover{background:var(--accent-gradient);border-color:transparent;color:#fff;transform:translateY(-1px)}.region-picker-footer{margin-top:3rem;color:var(--text-muted);font-size:.85rem}.region-picker-footer a{color:var(--accent)}@media(max-width:600px){.region-picker-logo{font-size:1.8rem}.region-picker-header{margin-bottom:2rem}.zipcode-form{flex-direction:column}.zipcode-button{width:100%}.region-button{padding:.5rem 1rem;font-size:.85rem}}:root{--bg: #0a0a0b;--card-bg: #141416;--header-bg: rgba(10, 10, 11, .9);--border: #2a2a2e;--hover-bg: #1e1e22;--input-bg: #1a1a1e;--text: #f4f4f5;--text-muted: #a1a1aa;--accent: #8b5cf6;--accent-gradient: linear-gradient(135deg, #8b5cf6 0%, #d946ef 100%);--accent-glow: rgba(139, 92, 246, .2);--tag-bg: rgba(139, 92, 246, .15);--tag-text: #c4b5fd}*{box-sizing:border-box}html{color-scheme:dark}body{margin:0;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif;background:var(--bg);color:var(--text);line-height:1.5;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}a{color:var(--accent);text-decoration:none}a:hover{text-decoration:underline}.app{min-height:100vh;display:flex;flex-direction:column}.main{flex:1;max-width:1600px;margin:0 auto;padding:2rem clamp(1rem,3vw,2rem);width:100%}.main-content{display:flex;gap:clamp(1rem,2vw,2rem)}.footer{padding:2rem;text-align:center;border-top:1px solid var(--border);color:var(--text-muted);font-size:.85rem}.footer p{margin:.5rem 0}.footer-sub{font-size:.75rem;opacity:.7}.footer a{color:var(--accent)}.footer-discord{margin-top:.75rem}.footer-discord a{font-weight:500}.content-area{flex:1;min-width:0;display:flex;flex-direction:column}.tabs{display:flex;gap:.5rem;margin-bottom:1.5rem;border-bottom:1px solid var(--border);padding-bottom:.5rem}.tab{display:flex;align-items:center;gap:.5rem;padding:.6rem 1rem;border:none;background:transparent;color:var(--text-muted);font-size:.95rem;font-weight:500;cursor:pointer;border-radius:8px;transition:all .2s}.tab:hover{background:var(--hover-bg);color:var(--text)}.tab.active{background:var(--accent);color:#fff}.tab-icon{width:18px;height:18px}@media(max-width:1024px){.main-content{flex-direction:column}}@media(max-width:480px){.main{padding:1rem .75rem}}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-track{background:var(--bg)}::-webkit-scrollbar-thumb{background:var(--border);border-radius:4px}::-webkit-scrollbar-thumb:hover{background:var(--text-muted)}
