:root{--bg-color: #ffffff;--text-color: #000000;--header-bg: #f5f5f5;--concert-border: #e0e0e0;--commercial-bar: #dc3545;--star-empty: #d0d0d0;--star-filled: #ffd700}[data-theme=dark]{--bg-color: #000000;--text-color: #ffffff;--header-bg: #1a1a1a;--concert-border: #333333;--commercial-bar: #dc3545;--star-empty: #4a4a4a;--star-filled: #ffd700}*{margin:0;padding:0;box-sizing:border-box}body{font-family:Special Elite,courier,monospace;background-color:var(--bg-color);color:var(--text-color);transition:background-color .3s,color .3s;padding:0;margin:0}header{background-color:var(--header-bg);padding:1rem;display:flex;justify-content:space-between;align-items:center;border-bottom:2px solid var(--concert-border);z-index:1000}header h1{font-size:1.2rem;font-weight:400}.header-controls{display:flex;gap:.5rem;align-items:center}.toggle-button{background-color:var(--concert-border);border:1px solid var(--text-color);color:var(--text-color);font-family:Special Elite,courier,monospace;font-size:.8rem;padding:.25rem .5rem;cursor:pointer;border-radius:3px;transition:background-color .2s,opacity .2s}.toggle-button.active{background-color:var(--text-color);color:var(--bg-color)}.theme-toggle{background:none;border:none;font-size:1.5rem;cursor:pointer;padding:.25rem}.theme-toggle .sun-icon,.theme-toggle .moon-icon{display:none}[data-theme=light] .theme-toggle .moon-icon,[data-theme=dark] .theme-toggle .sun-icon{display:inline}.concert-list{max-width:100%;position:relative;z-index:1}.concert{position:relative;margin-bottom:2rem;padding-left:.5rem;background:none!important}.concert.commercial{border-left:4px solid var(--commercial-bar);padding-left:.5rem}.concert.color-red{border-left:8px solid #dc3545;padding-left:.5rem}.concert.color-orange{border-left:8px solid #fd7e14;padding-left:.5rem}.concert.color-green{border-left:8px solid #28a745;padding-left:.5rem}.concert.color-blue{border-left:8px solid #007bff;padding-left:.5rem}.concert.color-darkblue{border-left:8px solid #004085;padding-left:.5rem}.concert.color-babyblue{border-left:8px solid #89cff0;padding-left:.5rem}.concert.color-purple{border-left:8px solid #6f42c1;padding-left:.5rem}.concert.color-brown{border-left:8px solid #8b4513;padding-left:.5rem}.concert-link{color:inherit!important;text-decoration:none!important;display:block;background:none!important;background-color:transparent!important}.concert-link:link,.concert-link:visited,.concert-link:hover,.concert-link:active,.concert-link:focus{background:none!important;background-color:transparent!important;outline:none}.concert-link:hover .concert{cursor:pointer}.concert-link *,.concert-link *:before,.concert-link *:after{background:none;background-color:transparent}.concert-header{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:0;padding:0;background:none!important;border:none!important}.concert-date{font-size:1.5rem;font-weight:700;display:flex;align-items:center;gap:.5rem;flex-wrap:wrap;color:var(--text-color);padding:0;margin:0}.concert-date time{color:var(--text-color)}.recording-icons{display:flex;align-items:center;gap:.25rem}.recording-icon{font-size:1.3rem;line-height:1;display:inline-flex;align-items:center;vertical-align:middle}.favorite-star{background:none;border:none;font-size:1.5rem;cursor:pointer;padding:0;color:var(--star-empty);transition:color .2s}.favorite-star.favorited{color:var(--star-filled)}.concert-venue{font-size:1.2rem;margin-bottom:.5rem;margin-top:.25rem;line-height:1.4;padding:0}.setlist{margin-bottom:.5rem}.set{margin-bottom:.75rem;display:flex;align-items:baseline}.set-number{font-weight:900;min-width:1.5rem;flex-shrink:0}.set-songs{flex:1;line-height:1.4;word-wrap:break-word}.concert-notes{font-size:.9rem;font-style:italic;margin-top:.5rem;opacity:.8}.header-search-btn{background:var(--header-bg);border:2px solid var(--concert-border);border-radius:4px;padding:.5rem .75rem;font-size:1.3rem;cursor:pointer;transition:all .2s;line-height:1}.header-search-btn:hover{background:var(--concert-border);opacity:.8;transform:translateY(-1px)}.header-search-btn:active{transform:translateY(0)}.mobile-search-fab{display:none;position:fixed;bottom:2rem;right:2rem;width:60px;height:60px;border-radius:50%;background:#4a9eff;color:#fff;border:none;font-size:1.5rem;cursor:pointer;box-shadow:0 4px 12px #0000004d;z-index:1500;transition:all .3s}.mobile-search-fab:hover{transform:scale(1.1);box-shadow:0 6px 16px #0006}.mobile-search-fab:active{transform:scale(.95)}@media (max-width: 768px){header h1{font-size:1rem}.concert-date{font-size:1.2rem}.concert-venue{font-size:1rem}.mobile-search-fab{display:block}.header-search-btn{display:none}}.loading{text-align:center;padding:2rem;font-size:1.2rem}.quick-filter-wrapper{padding:.75rem 0 1rem;border-bottom:1px solid var(--concert-border);margin-bottom:1rem}.quick-filter-container{position:relative;display:flex;align-items:center;background:var(--bg-color);border:2px solid var(--concert-border);border-radius:4px;transition:border-color .2s}.quick-filter-container:focus-within{border-color:#4a9eff;box-shadow:0 0 0 3px #4a9eff1a}.quick-filter-icon{position:absolute;left:.75rem;font-size:1rem;opacity:.5;pointer-events:none}.quick-filter-input{flex:1;width:100%;padding:.65rem 2rem .65rem 2.5rem;font-family:Special Elite,courier,monospace;font-size:.9rem;background:transparent;border:none;outline:none;color:var(--text-color)}.quick-filter-input::-webkit-search-cancel-button{display:none;-webkit-appearance:none}.quick-filter-input::-webkit-search-decoration{display:none;-webkit-appearance:none}.quick-filter-input::placeholder{color:var(--text-color);opacity:.4}.quick-filter-clear{position:absolute;right:.5rem;width:1.5rem;height:1.5rem;padding:0;background:var(--concert-border);border:none;border-radius:50%;font-size:1.2rem;line-height:1;cursor:pointer;opacity:.6;transition:all .2s;display:flex;align-items:center;justify-content:center;color:var(--text-color)}.quick-filter-clear:hover{opacity:1;background:var(--text-color);color:var(--bg-color)}.quick-filter-status{font-size:.85rem;opacity:.7;margin-top:.5rem;text-align:center;min-height:1.2rem}@media (max-width: 768px){.quick-filter-wrapper{padding:.5rem 0 .75rem}.quick-filter-input{font-size:16px}}
