:root{--bg-color:#0f1117;--card-bg:#181b24;--card-hover:#212532;--accent-color:#ff3e6c;--text-main:#f0f2f5;--text-muted:#9ba1b0;--border-color:#2a2f3d;--tag-bg:#272c3d}*{box-sizing:border-box;margin:0;padding:0}body{background:radial-gradient(900px 400px at 50% -120px, #ff3e6c2e, transparent 70%), var(--bg-color);min-height:100vh;color:var(--text-main);background-repeat:no-repeat;justify-content:center;padding:20px 15px;font-family:Inter,sans-serif;line-height:1.5;display:flex}#app{flex:1;justify-content:center;min-width:0;display:flex}.container{width:100%;max-width:680px}header{margin:12px 0 28px}header h1{letter-spacing:-.04em;color:#fff;flex-wrap:wrap;align-items:center;gap:12px;font-size:2.8rem;font-weight:900;line-height:1;display:flex}header h1 .logo em{background:linear-gradient(90deg, var(--accent-color), #ff9a3e);color:#0000;filter:drop-shadow(0 0 18px #ff3e6c73);-webkit-background-clip:text;background-clip:text;font-style:normal}header h1 .city-tag{letter-spacing:.2em;color:var(--accent-color);border:1px solid var(--accent-color);border-radius:999px;padding:4px 10px;font-size:.7rem;font-weight:700;box-shadow:0 0 14px #ff3e6c4d}header p{color:var(--text-muted);margin-top:4px;font-size:.95rem}.concert-list{flex-direction:column;gap:10px;display:flex}.date-section{border:1px solid var(--border-color);background:#ffffff05;border-radius:12px}.date-section[hidden]{display:none}.date-section.highlight{border-color:var(--accent-color);box-shadow:0 0 0 1px var(--accent-color) inset}.date-section>summary{cursor:pointer;border-radius:12px;justify-content:space-between;align-items:center;gap:12px;padding:14px 16px;font-size:1.1rem;font-weight:700;list-style:none;display:flex}.date-section>summary::-webkit-details-marker{display:none}.date-section>summary:before{content:"›";width:1em;color:var(--text-muted);transition:transform .2s;display:inline-block}.date-section[open]>summary:before{transform:rotate(90deg)}.date-section>summary:focus-visible{outline:2px solid var(--accent-color);outline-offset:2px}.section-title{flex:1}.date-section.highlight .section-title{color:var(--accent-color)}.section-count{background:var(--tag-bg);color:var(--text-muted);border-radius:999px;padding:2px 10px;font-size:.8rem;font-weight:600}.section-body{flex-direction:column;gap:10px;padding:0 12px 12px;display:flex}.section-empty{color:var(--text-muted);padding:0 16px 14px;font-size:.9rem}[hidden]{display:none!important}.search-row{z-index:20;-webkit-backdrop-filter:blur(12px);background:#0f1117e0;gap:8px;margin:0 -15px 8px;padding:10px 15px;display:flex;position:sticky;top:0}.search-box{flex:1;min-width:0;position:relative}.search-box:before{content:"";pointer-events:none;background:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%239ba1b0' stroke-width='2.5' stroke-linecap='round'%3E%3Ccircle cx='11' cy='11' r='7'/%3E%3Cpath d='m20 20-3.5-3.5'/%3E%3C/svg%3E") 50%/contain no-repeat;width:16px;height:16px;position:absolute;top:50%;left:14px;transform:translateY(-50%)}.search-box input{background:var(--card-bg);width:100%;height:46px;color:var(--text-main);border:1px solid var(--border-color);font:inherit;border-radius:12px;padding:0 42px 0 40px;font-size:1rem;transition:border-color .15s,box-shadow .15s}.search-box input::placeholder{color:var(--text-muted)}.search-box input:focus{border-color:var(--accent-color);outline:none;box-shadow:0 0 0 3px #ff3e6c33,0 0 22px #ff3e6c40}.search-clear{width:34px;height:34px;color:var(--text-muted);cursor:pointer;background:0 0;border:none;font-size:1.4rem;line-height:1;position:absolute;top:50%;right:6px;transform:translateY(-50%)}.search-clear:hover{color:var(--text-main)}.filter-toggle{background:var(--card-bg);height:46px;color:var(--text-main);border:1px solid var(--border-color);font:inherit;cursor:pointer;border-radius:12px;align-items:center;gap:8px;padding:0 16px;font-weight:600;display:inline-flex}.filter-toggle[aria-expanded=true]{border-color:var(--accent-color)}.filter-badge{background:var(--accent-color);color:#fff;text-align:center;border-radius:999px;min-width:20px;padding:1px 6px;font-size:.75rem}.filter-panel{background:var(--card-bg);border:1px solid var(--border-color);border-radius:14px;margin-bottom:12px;padding:14px;display:none}.filter-panel.open{display:block}.filter-group{margin-bottom:14px}.filter-label{color:var(--text-muted);letter-spacing:.12em;text-transform:uppercase;margin-bottom:8px;font-size:.7rem;font-weight:700}.chips{flex-wrap:wrap;gap:8px;display:flex}.chips.scroll{scrollbar-width:none;flex-wrap:nowrap;margin:0 -14px;padding:2px 14px;overflow-x:auto}.chips.scroll::-webkit-scrollbar{display:none}.chip{background:var(--tag-bg);min-height:36px;color:var(--text-muted);border:1px solid var(--border-color);font:inherit;white-space:nowrap;cursor:pointer;border-radius:999px;flex:none;padding:7px 14px;font-size:.85rem;font-weight:600;transition:border-color .15s,color .15s,background-color .15s}.chip:hover{border-color:var(--accent-color);color:var(--text-main)}.chip[aria-pressed=true]{background:var(--accent-color);border-color:var(--accent-color);color:#fff;box-shadow:0 0 14px #ff3e6c66}.chip:focus-visible,.link-button:focus-visible,.filter-toggle:focus-visible,.search-clear:focus-visible{outline:2px solid var(--accent-color);outline-offset:2px}.venue-select{background:var(--tag-bg);width:100%;max-width:320px;height:40px;color:var(--text-main);border:1px solid var(--border-color);font:inherit;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;cursor:pointer;border-radius:10px;padding:0 12px;font-size:.9rem}.venue-select:focus-visible{outline:2px solid var(--accent-color);outline-offset:2px}.custom-dates{flex-wrap:wrap;gap:8px;margin-top:10px;display:flex}.custom-dates label{background:var(--tag-bg);border:1px solid var(--border-color);color:var(--text-muted);border-radius:999px;align-items:center;gap:8px;padding:4px 12px;font-size:.85rem;display:inline-flex}.custom-dates input{color:var(--text-main);font:inherit;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;background:0 0;border:none}.filter-options{flex-wrap:wrap;align-items:center;gap:8px 18px;display:flex}.switch{color:var(--text-main);cursor:pointer;align-items:center;gap:10px;font-size:.9rem;display:inline-flex;position:relative}.switch input{opacity:0;position:absolute}.switch-track{background:var(--tag-bg);border:1px solid var(--border-color);border-radius:999px;width:38px;height:22px;transition:background-color .15s;position:relative}.switch-track:after{content:"";background:var(--text-muted);border-radius:50%;width:16px;height:16px;transition:transform .15s,background-color .15s;position:absolute;top:2px;left:2px}.switch input:checked+.switch-track{background:var(--accent-color);border-color:var(--accent-color)}.switch input:checked+.switch-track:after{background:#fff;transform:translate(16px)}.switch input:focus-visible+.switch-track{outline:2px solid var(--accent-color);outline-offset:2px}.link-button{color:var(--accent-color);font:inherit;cursor:pointer;background:0 0;border:none;margin-left:auto;font-size:.85rem;text-decoration:underline}.day-view{flex-direction:column;gap:10px;display:flex}.day-heading{color:var(--text-muted);letter-spacing:.1em;text-transform:uppercase;margin:12px 2px 0;font-size:.8rem;font-weight:700}.day-heading:first-child{margin-top:0}.day-heading.today{color:var(--accent-color)}.result-count{color:var(--text-muted);margin:0 2px 10px;font-size:.82rem}@media (width>=720px){.filter-panel{background:0 0;border:none;padding:0;display:block}.filter-toggle{display:none}.chips.scroll{flex-wrap:wrap;margin:0;padding:0;overflow:visible}}.admin-panel{color:var(--text-muted);flex-wrap:wrap;align-items:center;gap:8px;margin-bottom:16px;font-size:.85rem;display:flex}.admin-button{border:1px solid var(--border-color);background:var(--tag-bg);color:var(--text-main);font:inherit;cursor:pointer;border-radius:6px;padding:6px 10px}.admin-button:disabled{cursor:wait;opacity:.6}.fav-button{color:var(--text-muted);cursor:pointer;background:0 0;border:none;padding:6px;font-size:1.3rem;line-height:1}.fav-button:hover,.fav-button.saved{color:var(--accent-color)}.admin-override-actions{flex-wrap:wrap;align-items:center;gap:8px;margin-top:12px;display:flex}.concert-card{background-color:var(--card-bg);border:1px solid var(--border-color);border-radius:14px;transition:background-color .15s,border-color .15s,transform .15s;overflow:hidden}.concert-card:hover{background-color:var(--card-hover);border-color:#3a4054}.concert-card.open{border-color:var(--accent-color)}.concert-header:focus-visible{outline:2px solid var(--accent-color);outline-offset:-2px}.concert-header{cursor:pointer;-webkit-user-select:none;user-select:none;align-items:center;gap:16px;padding:14px 16px;display:flex}.date-badge{background:var(--tag-bg);text-align:center;border-radius:10px;flex-direction:column;justify-content:center;align-items:center;min-width:58px;height:74px;display:flex}.date-badge .weekday{color:var(--text-muted);text-transform:uppercase;letter-spacing:.05em;margin-bottom:3px;font-size:.65rem;font-weight:600}.date-badge .day{color:#fff;font-size:1.4rem;font-weight:800;line-height:1}.date-badge .month{color:var(--accent-color);text-transform:uppercase;margin-top:2px;font-size:.7rem;font-weight:600}.date-badge .year{color:var(--text-muted);margin-top:2px;font-size:.6rem;line-height:1}.info-main{flex:1;min-width:0}.title-row{align-items:baseline;gap:8px;display:flex}.artist-title{color:#fff;white-space:nowrap;text-overflow:ellipsis;font-size:1.05rem;font-weight:700;overflow:hidden}.support-act{color:var(--text-muted);font-size:.85rem;font-weight:400}.venue-row{color:var(--text-muted);flex-wrap:wrap;align-items:center;gap:4px 8px;margin-top:4px;font-size:.85rem;display:flex}.venue-name{color:var(--text-main);font-weight:500}.meta-chip{background:var(--tag-bg);border-radius:999px;padding:1px 8px;font-size:.75rem}.expand-icon{color:var(--text-muted);font-size:1.4rem;line-height:1;transition:transform .2s,color .15s}.concert-card:hover .expand-icon,.concert-card.open .expand-icon{color:var(--accent-color)}.concert-card.open .expand-icon{transform:rotate(180deg)}.concert-body{border-top:1px dashed var(--border-color);margin-top:4px;padding:12px 16px 16px 84px;display:none}.concert-card.open .concert-body{display:block}.description{color:#d0d4dc;margin-bottom:12px;font-size:.9rem}.description.clamped{-webkit-line-clamp:4;line-clamp:4;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.more-button{color:var(--accent-color);font:inherit;cursor:pointer;background:0 0;border:none;margin:-6px 0 12px;padding:4px 0;font-size:.85rem;font-weight:600}.more-button:focus-visible{outline:2px solid var(--accent-color);outline-offset:2px}.details-grid{color:var(--text-muted);flex-wrap:wrap;gap:12px;margin-bottom:14px;font-size:.82rem;display:flex}.details-grid div{background:var(--tag-bg);border-radius:6px;padding:4px 10px}.actions{align-items:center;gap:10px;display:flex}@media (width<=520px){header h1{font-size:2.1rem}.concert-header{gap:12px;padding:12px}.concert-body{padding-left:16px}.artist-title{white-space:normal}.title-row{flex-wrap:wrap;gap:0 8px}}.ticket-btn{background-color:var(--accent-color);color:#fff;border-radius:6px;padding:8px 16px;font-size:.85rem;font-weight:600;text-decoration:none;transition:opacity .15s;display:inline-block}.ticket-btn:hover{opacity:.9}.empty-state{text-align:center;color:var(--text-muted);padding:40px}
