@import "https://fonts.googleapis.com/css2?family=Noto+Serif+TC:wght@400;600;700;900&family=Space+Mono:wght@400;700&display=swap";html{background:#0a0a0f}body{margin:0}#root{min-height:100vh}:root{--bg:#0a0a0f;--surface:#12121a;--surface2:#1c1c2e;--border:#2a2a40;--accent:#e63946;--gold:#ffd166;--teal:#06d6a0;--text:#f0eee8;--muted:#8a8aa0}*,:before,:after{box-sizing:border-box;margin:0;padding:0}html{font-size:108%}body{background:var(--bg);color:var(--text);letter-spacing:.02em;min-height:100vh;font-family:Noto Serif TC,serif;line-height:1.5;overflow-x:hidden}body:before{content:"";pointer-events:none;z-index:9999;opacity:.5;background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 256 256' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='noise'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23noise)' opacity='0.04'/%3E%3C/svg%3E");position:fixed;inset:0}button,input,textarea{font:inherit}button{cursor:pointer}header{border-bottom:1px solid var(--border);z-index:100;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);background:linear-gradient(#0f0f1a 0%,#0000 100%);justify-content:space-between;align-items:center;gap:1.5rem;padding:2rem 3rem 1rem;display:flex;position:sticky;top:0}.logo{cursor:pointer;-webkit-user-select:none;user-select:none;align-items:center;gap:1rem;transition:opacity .2s;display:flex}.logo:hover{opacity:.85}.logo-icon{background:var(--accent);clip-path:polygon(50% 0%,100% 25%,100% 75%,50% 100%,0% 75%,0% 25%);justify-content:center;align-items:center;width:40px;height:40px;font-size:1.2rem;animation:2s ease-in-out infinite pulse-hex;display:flex}@keyframes pulse-hex{0%,to{box-shadow:0 0 #e6394666}50%{box-shadow:0 0 20px 8px #e6394626}}.logo-text h1{letter-spacing:.1em;color:var(--text);font-size:1.3rem;font-weight:900;line-height:1.2}.logo-text span{color:var(--muted);letter-spacing:.2em;font-family:Space Mono,monospace;font-size:.7rem}.stats-bar{flex-wrap:wrap;justify-content:flex-end;gap:clamp(.8rem,2vw,2rem);display:flex}.stat{text-align:center;min-width:58px}.stat-num{color:var(--gold);font-family:Space Mono,monospace;font-size:1.4rem;font-weight:700}.stat-label{color:var(--muted);letter-spacing:.15em;font-size:.65rem}.main-layout{grid-template-columns:1fr 450px;height:calc(100vh - 91px);min-height:560px;display:grid}.map-container{background:var(--surface);border-right:1px solid var(--border);position:relative;overflow:hidden}.map-bg{background:radial-gradient(at 40%,#1a1a2e 0%,#0a0a0f 70%);position:absolute;inset:0}svg#taiwan-map{z-index:1;cursor:grab;-webkit-user-select:none;user-select:none;width:100%;height:100%;position:relative}svg#taiwan-map.dragging{cursor:grabbing}.venue-dot{cursor:pointer;transition:all .3s}.venue-dot circle.bg{fill:var(--accent);opacity:.15;transition:all .3s}.venue-dot circle.core{fill:var(--accent);transition:all .3s}.venue-dot.visited circle.core,.venue-dot.visited circle.bg{fill:var(--teal)}.venue-dot:hover circle.bg{opacity:.5;r:22}.venue-dot:hover circle.core{r:9}.venue-dot.active circle.core{fill:var(--gold);r:10}.venue-dot.active circle.bg{fill:var(--gold);opacity:.3;r:24}.pulse-ring{fill:none;stroke:var(--accent);stroke-width:1.5px;opacity:0;animation:2.5s ease-out infinite pulse-ring}.venue-dot.visited .pulse-ring{stroke:var(--teal)}@keyframes pulse-ring{0%{r:8;opacity:.8}to{r:28;opacity:0}}.venue-label{fill:var(--text);pointer-events:auto;cursor:pointer;opacity:.85;font-family:Noto Serif TC,serif;font-size:11px}.map-legend{border:1px solid var(--border);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);z-index:2;background:#12121ae6;border-radius:8px;gap:1.2rem;padding:.8rem 1rem;display:flex;position:absolute;bottom:1.5rem;left:1.5rem}.legend-item{color:var(--muted);align-items:center;gap:.5rem;font-size:.75rem;display:flex}.legend-dot{border-radius:50%;width:10px;height:10px}.sidebar{background:var(--surface);flex-direction:column;display:flex;overflow:hidden}.venue-info{border-bottom:1px solid var(--border);background:linear-gradient(135deg, var(--surface2) 0%, var(--surface) 100%);min-height:160px;padding:2rem}.venue-info.empty{text-align:center;justify-content:center;align-items:center;display:flex}.empty-hint{color:var(--muted)}.empty-hint .icon{margin-bottom:.5rem;font-size:2.5rem}.empty-hint p{font-size:.85rem;line-height:1.6}.venue-header{justify-content:space-between;align-items:flex-start;gap:1rem;margin-bottom:.5rem;display:flex}.venue-name{color:var(--text);font-size:1.3rem;font-weight:700;line-height:1.3}.venue-top{justify-content:space-between;align-items:center;margin-bottom:.5rem;display:flex}.venue-city{color:var(--accent);letter-spacing:.2em;margin-bottom:0;font-family:Space Mono,monospace;font-size:.7rem}.clear-venue-btn{color:var(--muted);letter-spacing:.05em;cursor:pointer;background:0 0;border:none;border-radius:4px;align-items:center;gap:.2rem;padding:.25rem .5rem;font-family:Space Mono,monospace;font-size:.7rem;transition:all .2s;display:flex}.clear-venue-btn:hover{color:var(--accent);background:#e6394614}.venue-top-actions{align-items:center;gap:.5rem;display:flex}.toggle-collapse-btn{color:var(--muted);letter-spacing:.05em;cursor:pointer;background:0 0;border:none;border-radius:4px;align-items:center;gap:.2rem;padding:.25rem .5rem;font-family:Space Mono,monospace;font-size:.7rem;transition:all .2s;display:flex}.toggle-collapse-btn:hover{color:var(--gold);background:#ffd16614}.venue-info.collapsed{min-height:auto;padding-bottom:1.2rem}.venue-capacity{color:var(--muted);font-size:.8rem}.venue-count{color:var(--accent);white-space:nowrap;background:#e6394626;border:1px solid #e639464d;border-radius:4px;padding:.25rem .6rem;font-family:Space Mono,monospace;font-size:.75rem}.venue-count.has-visits{color:var(--teal);background:#06d6a026;border-color:#06d6a04d}.add-concert-btn{background:var(--accent);color:#fff;letter-spacing:.05em;border:none;border-radius:6px;width:100%;margin-top:1rem;padding:.65rem;font-size:.85rem;font-weight:600;transition:all .2s}.add-concert-btn:hover{background:#c1121f;transform:translateY(-1px);box-shadow:0 4px 20px #e6394666}.concert-list-area{flex:1;min-height:0;padding:1rem;overflow-y:auto}.concert-list-area::-webkit-scrollbar{width:4px}.modal::-webkit-scrollbar{width:4px}.concert-list-area::-webkit-scrollbar-track{background:0 0}.modal::-webkit-scrollbar-track{background:0 0}.concert-list-area::-webkit-scrollbar-thumb{background:var(--border);border-radius:2px}.modal::-webkit-scrollbar-thumb{background:var(--border);border-radius:2px}.section-title{letter-spacing:.25em;color:var(--muted);text-transform:uppercase;padding:.5rem .5rem .8rem;font-family:Space Mono,monospace;font-size:.65rem}.concert-card{background:var(--surface2);border:1px solid var(--border);cursor:pointer;border-radius:8px;margin-bottom:.8rem;padding:1rem;transition:all .25s;position:relative;overflow:hidden}.concert-card:before{content:"";background:var(--teal);width:3px;position:absolute;top:0;bottom:0;left:0}.concert-card:hover{border-color:var(--teal);transform:translate(3px);box-shadow:-3px 0 20px #06d6a01a}.concert-card-header{justify-content:space-between;align-items:flex-start;gap:.75rem;margin-bottom:.4rem;display:flex}.concert-artist{color:var(--text);overflow-wrap:anywhere;min-width:0;font-size:1rem;font-weight:700}.concert-date{color:var(--gold);white-space:nowrap;font-family:Space Mono,monospace;font-size:.7rem}.concert-venue-tag{color:var(--muted);overflow-wrap:anywhere;margin-top:.2rem;font-size:.75rem}.seat-tag{color:var(--teal)}.concert-media-preview{flex-wrap:wrap;gap:.4rem;margin-top:.7rem;display:flex}.media-thumb,.media-thumb-video,.more-media{border:1px solid var(--border);border-radius:6px;width:52px;height:52px}.media-thumb{object-fit:cover}.media-thumb-video{color:var(--accent);background:#1c1c2e;justify-content:center;align-items:center;font-size:1.4rem;display:flex}.more-media{background:var(--surface);color:var(--muted);justify-content:center;align-items:center;font-family:Space Mono,monospace;font-size:.7rem;display:flex}.delete-btn{color:var(--muted);z-index:1;background:0 0;border:none;padding:.2rem;font-size:.8rem;transition:color .2s;position:absolute;top:.5rem;right:.5rem}.delete-btn:hover{color:var(--accent)}.modal-overlay{z-index:1000;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);background:#000c;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.modal{background:var(--surface2);border:1px solid var(--border);border-radius:8px;width:600px;max-width:95vw;max-height:90vh;padding:2rem;animation:.3s slide-up;position:relative;overflow-y:auto}.all-modal{width:700px}@keyframes slide-up{0%{opacity:0;transform:translateY(30px)}to{opacity:1;transform:translateY(0)}}.modal-close{color:var(--muted);background:0 0;border:none;font-size:1.3rem;line-height:1;transition:color .2s;position:absolute;top:1rem;right:1rem}.modal-close:hover{color:var(--text)}.modal h2{margin-bottom:.3rem;font-size:1.3rem;font-weight:700}.modal-venue-name,.all-modal-kicker{color:var(--accent);letter-spacing:.1em;margin-bottom:1.5rem;font-family:Space Mono,monospace;font-size:.75rem}.all-modal-title{margin-bottom:.3rem}.all-modal-kicker{color:var(--muted)}.form-group{margin-bottom:1.2rem}.form-group label{letter-spacing:.15em;color:var(--muted);text-transform:uppercase;margin-bottom:.4rem;font-family:Space Mono,monospace;font-size:.75rem;display:block}.form-group input,.form-group textarea{background:var(--surface);border:1px solid var(--border);width:100%;color:var(--text);border-radius:8px;padding:.7rem .9rem;font-size:.9rem;transition:border-color .2s}.form-group input:focus,.form-group textarea:focus{border-color:var(--accent);outline:none}.form-group textarea{resize:vertical;height:90px}.media-upload-area{border:2px dashed var(--border);text-align:center;cursor:pointer;border-radius:8px;padding:2rem;transition:all .2s;position:relative}.media-upload-area:hover{border-color:var(--accent);background:#e639460a}.media-upload-area input[type=file]{opacity:0;cursor:pointer;width:100%;height:100%;position:absolute;inset:0}.upload-icon{margin-bottom:.5rem;font-size:2rem}.upload-text{color:var(--muted);font-size:.85rem}.upload-sub{color:var(--border);margin-top:.2rem;font-size:.72rem}.preview-grid{grid-template-columns:repeat(auto-fill,minmax(80px,1fr));gap:.6rem;margin-top:1rem;display:grid}.preview-item{aspect-ratio:1;background:var(--surface);border:1px solid var(--border);border-radius:8px;position:relative;overflow:hidden}.preview-item img,.preview-item video{object-fit:cover;width:100%;height:100%}.video-preview-overlay{background:#0006;justify-content:center;align-items:center;font-size:2rem;display:flex;position:absolute;inset:0}.preview-item .remove-media{color:#fff;background:#000000b3;border:none;border-radius:50%;justify-content:center;align-items:center;width:20px;height:20px;font-size:.7rem;display:flex;position:absolute;top:2px;right:2px}.modal-submit{background:var(--accent);color:#fff;letter-spacing:.1em;border:none;border-radius:8px;width:100%;margin-top:.5rem;padding:.8rem;font-size:1rem;font-weight:700;transition:all .2s}.modal-submit:hover{background:#c1121f;box-shadow:0 6px 30px #e6394666}.detail-modal .concert-detail-header{margin-bottom:1.5rem}.detail-artist{font-size:1.6rem;font-weight:900}.detail-meta{flex-wrap:wrap;gap:1rem;margin-top:.5rem;display:flex}.detail-tag{letter-spacing:.1em;border-radius:4px;padding:.2rem .6rem;font-family:Space Mono,monospace;font-size:.7rem}.tag-date{color:var(--gold);background:#ffd16626;border:1px solid #ffd1664d}.tag-venue{color:var(--teal);background:#06d6a01f;border:1px solid #06d6a040}.tag-seat{background:#ffffff14;border:1px solid #ffffff26}.detail-concert-name{color:var(--muted);margin-top:.5rem;font-size:.9rem}.detail-notes{color:#ccc;background:var(--surface);border-left:3px solid var(--teal);border-radius:8px;margin-bottom:1.5rem;padding:1rem;font-size:.9rem;line-height:1.7}.media-gallery{grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:.7rem;display:grid}.gallery-item{aspect-ratio:1;cursor:pointer;background:var(--surface);border:none;border-radius:8px;position:relative;overflow:hidden}.gallery-item img,.gallery-item video{object-fit:cover;width:100%;height:100%;transition:transform .3s}.gallery-item:hover img{transform:scale(1.05)}.gallery-item .video-overlay{background:#0006;justify-content:center;align-items:center;font-size:2rem;display:flex;position:absolute;inset:0}.lightbox{z-index:2000;background:#000000f2;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.lightbox img,.lightbox video{object-fit:contain;border-radius:8px;max-width:90vw;max-height:85vh}.lightbox-close{color:#fff;z-index:1;background:0 0;border:none;font-size:2rem;position:absolute;top:1.5rem;right:1.5rem}.all-concerts-btn{border:1px solid var(--border);color:var(--text);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);z-index:2;background:#12121ae6;border-radius:8px;padding:.6rem 1rem;font-size:.8rem;transition:all .2s;position:absolute;bottom:5rem;right:1.5rem}.all-concerts-btn:hover{border-color:var(--gold);color:var(--gold)}.empty-state{text-align:center;color:var(--muted);padding:2rem;font-size:.85rem}.empty-state.compact{padding:1rem}.upcoming-section{border-bottom:1px solid var(--border);margin-bottom:1.4rem;padding-bottom:1rem}.section-row{justify-content:space-between;align-items:flex-start;gap:1rem;display:flex}.remote-updated{color:var(--muted);margin:-.4rem 0 .7rem;padding:0 .5rem;font-family:Space Mono,monospace;font-size:.66rem}.refresh-events-btn{background:var(--surface);color:var(--gold);white-space:nowrap;border:1px solid #ffd16647;border-radius:6px;margin-top:.2rem;padding:.35rem .55rem;font-family:Space Mono,monospace;font-size:.68rem;transition:border-color .2s,background .2s}.refresh-events-btn:hover{border-color:var(--gold);background:#ffd16614}.refresh-events-btn:disabled{color:var(--muted);border-color:var(--border);cursor:wait}.show-more-btn{background:var(--surface2);width:100%;color:var(--gold);border:1px solid #ffd16638;border-radius:6px;margin-top:.5rem;padding:.65rem;font-family:Space Mono,monospace;font-size:.72rem;font-weight:600;transition:border-color .2s,background .2s,transform .2s}.show-more-btn:hover{border-color:var(--gold);background:#ffd16614;transform:translateY(-1px)}.remote-card{min-height:94px;color:var(--text);background:#ffd1660f;border:1px solid #ffd1662e;border-radius:8px;grid-template-columns:86px 1fr;gap:.75rem;margin-bottom:.7rem;padding:.65rem;text-decoration:none;transition:border-color .2s,background .2s,transform .2s;display:grid}.remote-card:hover{border-color:var(--gold);background:#ffd1661a;transform:translate(3px)}.remote-card img,.remote-card-fallback{border:1px solid var(--border);border-radius:6px;width:86px;height:82px}.remote-card img{object-fit:cover;background:var(--surface)}.remote-card-fallback{background:var(--surface);color:var(--gold);letter-spacing:.12em;justify-content:center;align-items:center;font-family:Space Mono,monospace;font-size:.72rem;display:flex}.remote-card-body{min-width:0}.remote-card-top{color:var(--gold);justify-content:space-between;gap:.7rem;margin-bottom:.25rem;font-family:Space Mono,monospace;font-size:.66rem;display:flex}.remote-card-name{color:var(--text);-webkit-line-clamp:2;-webkit-box-orient:vertical;font-size:.9rem;font-weight:700;line-height:1.35;display:-webkit-box;overflow:hidden}.remote-card-meta{color:var(--muted);overflow-wrap:anywhere;margin-top:.25rem;font-size:.72rem}.ticket-links{flex-wrap:wrap;gap:.35rem;margin-top:.45rem;display:flex}.ticket-links span{color:var(--teal);border:1px solid #06d6a040;border-radius:4px;padding:.15rem .35rem;font-family:Space Mono,monospace;font-size:.62rem}.music-bar{border-top:1px solid var(--border);-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px);z-index:200;background:#0a0a12f7;align-items:center;gap:0;height:90px;transition:transform .4s cubic-bezier(.4,0,.2,1);display:flex;position:fixed;bottom:0;left:0;right:0;transform:translateY(100%)}.music-bar.visible{transform:translateY(0)}.music-bar-toggle{z-index:300;color:#000;letter-spacing:.05em;background:#1db954;border:none;border-radius:50px;align-items:center;gap:.5rem;padding:.6rem 1.1rem;font-family:Space Mono,monospace;font-size:.75rem;font-weight:700;transition:all .25s;display:flex;position:fixed;bottom:1.5rem;right:1.5rem;box-shadow:0 4px 20px #1db95459}.music-bar-toggle:hover{transform:scale(1.05);box-shadow:0 6px 30px #1db95480}.music-bar-toggle .spotify-icon{background:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='black'%3E%3Cpath d='M12 0C5.4 0 0 5.4 0 12s5.4 12 12 12 12-5.4 12-12S18.66 0 12 0zm5.521 17.34c-.24.359-.66.48-1.021.24-2.82-1.74-6.36-2.101-10.561-1.141-.418.122-.779-.179-.899-.539-.12-.421.18-.78.54-.9 4.56-1.021 8.52-.6 11.64 1.32.42.18.479.659.301 1.02zm1.44-3.3c-.301.42-.841.6-1.262.3-3.239-1.98-8.159-2.58-11.939-1.38-.479.12-1.02-.12-1.14-.6-.12-.48.12-1.021.6-1.141C9.6 9.9 15 10.561 18.72 12.84c.361.181.54.78.241 1.2zm.12-3.36C15.24 8.4 8.82 8.16 5.16 9.301c-.6.179-1.2-.181-1.38-.721-.18-.601.18-1.2.72-1.381 4.26-1.26 11.28-1.02 15.721 1.621.539.3.719 1.02.419 1.56-.299.421-1.02.599-1.559.3z'/%3E%3C/svg%3E") 50%/contain no-repeat;width:18px;height:18px}.music-bar-content{flex:1;align-items:center;height:100%;display:flex;overflow:hidden}.music-bar iframe{border:none;border-radius:0;width:100%;height:90px}.music-bar-placeholder{color:var(--muted);flex:1;justify-content:center;align-items:center;gap:1rem;padding:0 2rem;font-size:.85rem;display:flex}.music-bar-placeholder .sp-logo{font-size:1.5rem}.music-bar-close{border:none;border-left:1px solid var(--border);width:50px;height:90px;color:var(--muted);background:0 0;flex-shrink:0;font-size:1.2rem;transition:color .2s}.music-bar-close:hover{color:var(--text)}body.player-open .main-layout{height:calc(100vh - 181px)}body.player-open .music-bar-toggle{bottom:calc(90px + 1.5rem)}.spotify-search-box{background:#1db9540d;border:1px solid #1db95433;border-radius:8px;padding:.8rem}.spotify-search-row{gap:.5rem;display:flex}.spotify-search-row input{background:var(--surface);border:1px solid var(--border);color:var(--text);border-radius:8px;flex:1;padding:.65rem .9rem;font-size:.9rem}.spotify-search-row input:focus{border-color:#1db954;outline:none}.sp-search-btn{color:#000;background:#1db954;border:none;border-radius:8px;padding:.65rem 1.1rem;font-family:Space Mono,monospace;font-size:.8rem;font-weight:700;transition:background .2s}.sp-search-btn:hover{background:#1ed760}.sp-search-btn:disabled{color:#888;cursor:not-allowed;background:#555}.spotify-hint{color:var(--muted);margin-top:.3rem;font-size:.72rem;line-height:1.5}.spotify-results{flex-direction:column;gap:.4rem;max-height:260px;margin-top:.7rem;display:flex;overflow-y:auto}.spotify-results::-webkit-scrollbar{width:4px}.spotify-results::-webkit-scrollbar-thumb{background:var(--border);border-radius:2px}.sp-tabs{gap:.4rem;margin-bottom:.3rem;display:flex}.sp-tab{background:var(--surface);border:1px solid var(--border);color:var(--muted);border-radius:6px;flex:1;padding:.4rem;font-family:Space Mono,monospace;font-size:.68rem;transition:all .2s}.sp-tab.active{color:#1db954;background:#1db9542e;border-color:#1db954}.sp-search-status{color:var(--muted);text-align:center;padding:.8rem;font-size:.8rem}.sp-result-item{background:var(--surface2);border:1px solid var(--border);color:var(--text);text-align:left;border-radius:8px;align-items:center;gap:.7rem;padding:.5rem .6rem;transition:all .2s;display:flex}.sp-result-item:hover{background:#1db95414;border-color:#1db954}.sp-result-img,.sp-selected-img{object-fit:cover;background:var(--surface);border-radius:6px;flex-shrink:0;width:44px;height:44px}.sp-result-img.round,.sp-selected-img.round{border-radius:50%}.sp-result-info,.sp-selected-info{flex:1;min-width:0}.sp-result-name,.sp-selected-name{color:var(--text);text-overflow:ellipsis;white-space:nowrap;font-size:.86rem;font-weight:700;overflow:hidden}.sp-result-sub,.sp-selected-sub{color:var(--muted);text-overflow:ellipsis;white-space:nowrap;font-size:.72rem;overflow:hidden}.sp-result-type{border-radius:4px;flex-shrink:0;padding:.2rem .45rem;font-family:Space Mono,monospace;font-size:.62rem}.sp-type-artist{color:var(--accent);background:#e6394626}.sp-type-album{color:var(--gold);background:#ffd16626}.sp-type-track{color:var(--teal);background:#06d6a026}.spotify-selected-preview{background:#1db9541f;border:1px solid #1db9544d;border-radius:8px;align-items:center;gap:.7rem;margin-top:.7rem;padding:.6rem;display:flex}.sp-selected-clear{color:var(--muted);background:0 0;border:none;font-size:.9rem}.sp-selected-clear:hover{color:var(--accent)}.detail-spotify{border:1px solid #1db95433;border-radius:8px;margin-bottom:1.5rem;overflow:hidden}.detail-spotify iframe{border:none;width:100%;display:block}.spotify-open-btn{color:#000;background:#1db954;border-radius:20px;align-items:center;gap:.4rem;margin-bottom:1.5rem;padding:.5rem 1rem;font-family:Space Mono,monospace;font-size:.72rem;font-weight:700;text-decoration:none;transition:all .2s;display:inline-flex}.spotify-open-btn:hover{background:#1ed760;transform:scale(1.03)}@media (width<=768px){header{flex-wrap:wrap;align-items:center;gap:1rem;padding:1rem}.logo{min-width:220px}.logo-text h1{font-size:1rem}.logo-text span{font-size:.58rem}.stats-bar{justify-content:space-between;gap:.8rem;width:100%}.stat-num{font-size:1.05rem}.stat-label{font-size:.58rem}.main-layout{grid-template-rows:60vh 1fr;grid-template-columns:1fr;height:auto;min-height:calc(100vh - 128px)}.map-container{border-right:none;border-bottom:1px solid var(--border)}.map-legend{flex-wrap:wrap;justify-content:center;gap:.7rem;bottom:1rem;left:1rem;right:1rem}.all-concerts-btn{bottom:5rem;right:1rem}.sidebar{min-height:45vh}body.player-open .main-layout{height:auto;padding-bottom:90px}.remote-card{grid-template-columns:76px 1fr}.remote-card img,.remote-card-fallback{width:76px;height:78px}.modal{padding:1.4rem}.spotify-search-row{flex-direction:column}.sp-tabs{flex-wrap:wrap}.music-bar-toggle{max-width:calc(100vw - 2rem);right:1rem}.music-bar-placeholder{justify-content:flex-start;padding:0 1rem;font-size:.78rem}}.venue-address,.venue-transit{color:var(--text);opacity:.95;align-items:flex-start;gap:.6rem;margin-top:.8rem;font-size:.82rem;line-height:1.5;display:flex}.venue-address .icon,.venue-transit .icon{flex-shrink:0;font-size:1rem}.venue-address .text,.venue-transit .text{flex:1}.venue-transit{border-top:1px solid #ffffff0d;padding-top:.6rem}.venue-actions{flex-direction:column;gap:.6rem;margin-top:1.2rem;display:flex}.venue-actions .add-concert-btn{margin-top:0}.nav-map-btn{background:var(--surface2);width:100%;color:var(--gold);letter-spacing:.05em;text-align:center;border:1px solid #ffd16638;border-radius:6px;justify-content:center;align-items:center;gap:.5rem;padding:.65rem;font-size:.85rem;font-weight:600;text-decoration:none;transition:all .2s;display:flex}.nav-map-btn:hover{border-color:var(--gold);background:#ffd16614;transform:translateY(-1px)}.transit-board{border-bottom:1px solid var(--border);margin-bottom:1.4rem;padding-bottom:1rem}.transit-selector-row{margin-bottom:.8rem;padding:0 .5rem}.transit-select{background:var(--surface);border:1px solid var(--border);width:100%;color:var(--text);cursor:pointer;border-radius:8px;outline:none;padding:.6rem .8rem;font-size:.88rem;transition:border-color .2s}.transit-select:focus{border-color:var(--gold)}.transit-select option{background:var(--surface2);color:var(--text)}.transit-card{border:1px solid var(--border);background:#ffffff05;border-radius:8px;flex-direction:column;gap:.6rem;padding:.9rem;transition:all .25s;display:flex}.transit-card:hover{background:#ffffff08;border-color:#ffd16640}.transit-card-header{justify-content:space-between;align-items:center;gap:.5rem;display:flex}.transit-service-name{color:var(--text);align-items:center;gap:.4rem;font-size:.9rem;font-weight:700;display:flex}.transit-icon{font-size:1.1rem}.transit-badge{text-align:center;white-space:nowrap;border-radius:4px;padding:.2rem .5rem;font-family:Space Mono,monospace;font-size:.72rem;font-weight:700}.transit-badge.normal{color:var(--teal);background:#06d6a01f;border:1px solid #06d6a040;animation:2s ease-in-out infinite pulse-green-badge}.transit-badge.warning{color:var(--gold);background:#ffd1661f;border:1px solid #ffd16640}.transit-badge.loading{border:1px solid var(--border);color:var(--muted);background:#ffffff0d}@keyframes pulse-green-badge{0%,to{box-shadow:0 0 #06d6a033}50%{box-shadow:0 0 10px 2px #06d6a01a}}.transit-detail{color:var(--muted);margin:0;font-size:.78rem;line-height:1.55}.transit-updated{color:var(--muted);opacity:.8;font-family:Space Mono,monospace;font-size:.65rem}.transit-link-btn{background:var(--surface2);border:1px solid var(--border);width:100%;color:var(--text);letter-spacing:.05em;text-align:center;border-radius:6px;justify-content:center;align-items:center;gap:.4rem;margin-top:.2rem;padding:.5rem;font-size:.76rem;text-decoration:none;transition:all .2s;display:flex}.transit-link-btn:hover{border-color:var(--gold);color:var(--gold);background:#ffffff0d}.venue-map-embed{border:1px solid var(--border);background:var(--bg);border-radius:8px;width:100%;height:200px;margin-top:.8rem;overflow:hidden;box-shadow:0 4px 12px #0000004d}.venue-map-embed iframe{filter:grayscale(.1)invert(.9)hue-rotate(180deg);border:none;width:100%;height:100%}.venue-chips-container{z-index:10;pointer-events:none;position:absolute;top:1rem;left:1.5rem;right:1.5rem;overflow:hidden}.venue-chips{pointer-events:auto;-webkit-overflow-scrolling:touch;scrollbar-width:none;-ms-overflow-style:none;gap:.5rem;padding:.4rem .2rem;display:flex;overflow-x:auto}.venue-chips::-webkit-scrollbar{display:none}.venue-chip{border:1px solid var(--border);color:var(--muted);white-space:nowrap;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);background:#12121ae0;border-radius:20px;align-items:center;gap:.4rem;padding:.45rem .8rem;font-family:Noto Serif TC,serif;font-size:.78rem;transition:all .2s;display:inline-flex;box-shadow:0 4px 10px #0003}.venue-chip:hover{border-color:var(--teal);color:var(--text);transform:translateY(-1px)}.venue-chip.active{border-color:var(--gold);color:var(--gold);background:#ffd1661f;font-weight:600;box-shadow:0 0 10px #ffd16626}.venue-chip.visited{border-color:#06d6a066}.venue-chip .dot{background:var(--border);border-radius:50%;width:6px;height:6px;transition:background .2s}.venue-chip.visited .dot{background:var(--teal);box-shadow:0 0 4px var(--teal)}.venue-chip.active .dot{background:var(--gold);box-shadow:0 0 6px var(--gold)}@media (width<=768px){.venue-chips-container{top:.6rem;left:.8rem;right:.8rem}.venue-chip{padding:.38rem .75rem;font-size:.74rem}}.map-zoom-control{border:1px solid var(--border);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);z-index:10;background:#12121ae6;border-radius:8px;align-items:center;gap:.8rem;padding:.6rem 1rem;display:flex;position:absolute;bottom:5rem;right:1.5rem;box-shadow:0 4px 20px #0003}.map-zoom-control input[type=range]{background:var(--border);-webkit-appearance:none;cursor:pointer;border-radius:2px;outline:none;width:100px;height:4px}.map-zoom-control input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;background:var(--gold);border:1px solid var(--border);border-radius:50%;width:14px;height:14px;transition:transform .1s}.map-zoom-control input[type=range]::-webkit-slider-thumb:hover{transform:scale(1.2)}.map-zoom-control .zoom-icon{font-size:.9rem}.map-zoom-control .zoom-value{color:var(--text);text-align:right;min-width:40px;font-family:Space Mono,monospace;font-size:.75rem}.zoom-reset-btn{color:var(--muted);cursor:pointer;background:0 0;border:none;justify-content:center;align-items:center;padding:.2rem;font-size:.9rem;transition:color .2s;display:flex}.zoom-reset-btn:hover{color:var(--gold)}@media (width<=768px){.map-zoom-control{top:auto;bottom:8.5rem;right:1rem}}.notes-label-row{justify-content:space-between;align-items:center;margin-bottom:.5rem;display:flex}.notes-tabs{background:var(--surface);border:1px solid var(--border);border-radius:6px;gap:.3rem;padding:.2rem;display:flex}.notes-tab-btn{color:var(--muted);cursor:pointer;background:0 0;border:none;border-radius:4px;padding:.2rem .6rem;font-family:Space Mono,monospace;font-size:.7rem;transition:all .2s}.notes-tab-btn.active{background:var(--surface2);color:var(--gold);font-weight:600}.notes-preview-box{background:var(--surface);border:1px solid var(--border);width:100%;min-height:120px;max-height:200px;color:var(--text);border-radius:8px;padding:.8rem 1rem;font-size:.9rem;line-height:1.6;overflow-y:auto}.notes-header-row{border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;margin-top:1.2rem;margin-bottom:.6rem;padding-bottom:.4rem;display:flex}.notes-header-row .section-title{margin-bottom:0;padding-bottom:0}.share-menu-container{display:inline-block;position:relative}.share-trigger-btn{background:var(--surface);border:1px solid var(--border);color:var(--muted);cursor:pointer;border-radius:6px;align-items:center;gap:.3rem;padding:.3rem .65rem;font-size:.72rem;transition:all .2s;display:flex}.share-trigger-btn:hover{border-color:var(--gold);color:var(--gold);background:#ffd1660d}.share-dropdown{background:var(--surface2);border:1px solid var(--border);z-index:100;border-radius:8px;flex-direction:column;gap:.25rem;min-width:210px;margin-top:.4rem;padding:.4rem;display:flex;position:absolute;top:100%;right:0;box-shadow:0 4px 20px #00000059}.share-dropdown button{color:var(--text);text-align:left;cursor:pointer;white-space:nowrap;background:0 0;border:none;border-radius:5px;padding:.45rem .8rem;font-size:.75rem;transition:all .2s}.share-dropdown button:hover{color:var(--gold);background:#ffffff0d}.share-status-toast{background:var(--teal);color:#000;white-space:nowrap;z-index:101;border-radius:4px;margin-top:.4rem;padding:.25rem .6rem;font-size:.7rem;font-weight:700;animation:2s forwards fade-in-out;position:absolute;top:100%;right:0}@keyframes fade-in-out{0%{opacity:0;transform:translateY(-5px)}10%{opacity:1;transform:translateY(0)}90%{opacity:1}to{opacity:0}}.markdown-body h1,.markdown-body h2,.markdown-body h3,.markdown-body h4{color:var(--text);margin-top:1rem;margin-bottom:.5rem;font-weight:700;line-height:1.25}.markdown-body h1{border-bottom:1px solid var(--border);padding-bottom:.2rem;font-size:1.35rem}.markdown-body h2{font-size:1.15rem}.markdown-body h3{font-size:1.05rem}.markdown-body h4{font-size:.95rem}.markdown-body p{margin-top:0;margin-bottom:.6rem}.markdown-body strong{color:var(--gold);font-weight:700}.markdown-body em{opacity:.9;font-style:italic}.markdown-body blockquote{border-left:3px solid var(--gold);color:var(--muted);background:#ffd16608;margin:.6rem 0;padding:.25rem .8rem;font-style:italic}.markdown-body ul,.markdown-body ol{margin-top:0;margin-bottom:.6rem;padding-left:1.2rem}.markdown-body li{margin-bottom:.25rem}.markdown-body code{background:var(--surface2);border:1px solid var(--border);color:var(--accent);border-radius:4px;padding:.1rem .3rem;font-family:Space Mono,monospace;font-size:.8rem}.markdown-body pre{border:1px solid var(--border);background:#0d0d15;border-radius:6px;margin:.6rem 0;padding:.8rem;overflow-x:auto}.markdown-body pre code{color:var(--text);background:0 0;border:none;padding:0;font-size:.8rem}.markdown-body hr{background:var(--border);border:none;height:1px;margin:.8rem 0}.markdown-body a{color:var(--teal);text-decoration:underline;transition:color .2s}.markdown-body a:hover{color:var(--gold)}.header-right{align-items:center;gap:1.5rem;display:flex}.nav-toggle-btn{color:var(--gold);cursor:pointer;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);letter-spacing:.05em;background:linear-gradient(135deg,#ffd16626 0%,#06d6a01a 100%);border:1px solid #ffd16666;border-radius:20px;align-items:center;gap:.4rem;padding:.55rem 1.1rem;font-size:.82rem;font-weight:700;transition:all .3s cubic-bezier(.4,0,.2,1);display:flex;box-shadow:0 4px 15px #0003}.nav-toggle-btn:hover{border-color:var(--teal);color:var(--teal);background:linear-gradient(135deg,#06d6a026 0%,#ffd1660d 100%);transform:translateY(-2px);box-shadow:0 6px 20px #06d6a040}.nav-toggle-btn:active{transform:translateY(0)}.share-board-container{max-width:1200px;margin:0 auto;padding:2rem 1.5rem 6rem;animation:.5s cubic-bezier(.4,0,.2,1) fadeInBoard}@keyframes fadeInBoard{0%{opacity:0;transform:translateY(15px)}to{opacity:1;transform:translateY(0)}}.share-board-header{text-align:center;margin-bottom:2.5rem}.share-board-title{color:var(--text);letter-spacing:.02em;background:linear-gradient(135deg, var(--text) 30%, var(--gold) 100%);-webkit-text-fill-color:transparent;text-shadow:0 4px 12px #0003;-webkit-background-clip:text;margin-bottom:.4rem;font-family:Noto Serif TC,serif;font-size:2.2rem;font-weight:900}.share-board-subtitle{color:var(--gold);letter-spacing:.25em;margin-bottom:1rem;font-family:Space Mono,monospace;font-size:.8rem}.share-board-description{max-width:600px;color:var(--muted);margin:0 auto;font-size:.92rem;line-height:1.6}.board-search-bar{border:1px solid var(--border);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);background:#12121ccc;border-radius:50px;align-items:center;max-width:640px;margin:0 auto 3rem;padding:.2rem .5rem .2rem 1.5rem;transition:all .3s;display:flex;position:relative;box-shadow:0 8px 30px #0000004d}.board-search-bar:focus-within{border-color:var(--gold);transform:translateY(-1px);box-shadow:0 8px 30px #ffd16626}.board-search-bar .search-icon{color:var(--muted);margin-right:.75rem;font-size:1rem}.board-search-bar input{color:var(--text);background:0 0;border:none;outline:none;flex:1;padding:.8rem 0;font-size:.95rem}.board-search-bar input::placeholder{color:var(--muted);opacity:.8}.board-search-bar .clear-search{width:30px;height:30px;color:var(--muted);cursor:pointer;background:#ffffff0d;border:none;border-radius:50%;justify-content:center;align-items:center;margin-right:.5rem;font-size:.75rem;transition:all .2s;display:flex}.board-search-bar .clear-search:hover{color:var(--accent);background:#e6394633}.board-empty-state{text-align:center;border:1px dashed var(--border);color:var(--muted);background:#12121c66;border-radius:12px;max-width:640px;margin:0 auto;padding:5rem 2rem;font-size:.95rem}.board-grid{grid-template-columns:repeat(auto-fill,minmax(340px,1fr));gap:2rem;display:grid}.shared-note-card{border:1px solid var(--border);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);background:linear-gradient(135deg,#141420b3 0%,#0c0c14e6 100%);border-radius:16px;flex-direction:column;padding:1.5rem;transition:all .3s cubic-bezier(.4,0,.2,1);display:flex;position:relative;box-shadow:0 10px 25px #0003}.shared-note-card:hover{border-color:#ffd16659;transform:translateY(-5px);box-shadow:0 15px 35px #ffd16614}.shared-card-header{justify-content:space-between;align-items:center;gap:1rem;margin-bottom:.8rem;display:flex}.card-artist-tag{color:var(--accent);letter-spacing:.05em;white-space:nowrap;text-overflow:ellipsis;background:#e639461f;border:1px solid #e6394640;border-radius:6px;max-width:180px;padding:.25rem .65rem;font-family:Space Mono,monospace;font-size:.72rem;font-weight:700;overflow:hidden}.card-like-btn{border:1px solid var(--border);cursor:pointer;color:var(--muted);background:#ffffff08;border-radius:20px;align-items:center;gap:.4rem;padding:.3rem .7rem;transition:all .2s;display:flex}.card-like-btn:hover{color:var(--accent);background:#e6394614;border-color:#e6394666;transform:scale(1.05)}.card-like-btn.liked{border-color:var(--accent);color:var(--accent);background:#e6394626;box-shadow:0 0 10px #e6394633}.card-like-btn .heart-icon{font-size:.85rem;transition:transform .2s;display:inline-block}.card-like-btn:active .heart-icon{transform:scale(1.3)}.card-like-btn.liked .heart-icon{animation:.3s ease-in-out heartBeat}@keyframes heartBeat{0%{transform:scale(1)}50%{transform:scale(1.4)}to{transform:scale(1)}}.card-like-btn .like-count{font-family:Space Mono,monospace;font-size:.78rem;font-weight:700}.shared-card-title{color:var(--text);margin-bottom:.5rem;font-family:Noto Serif TC,serif;font-size:1.15rem;font-weight:800;line-height:1.4}.shared-card-meta{color:var(--muted);border-bottom:1px dashed var(--border);flex-wrap:wrap;gap:.8rem;margin-bottom:1.2rem;padding-bottom:.8rem;font-size:.76rem;display:flex}.shared-card-meta span{align-items:center;gap:.25rem;display:flex}.shared-card-body{color:var(--text);opacity:.95;flex:1;font-size:.88rem;line-height:1.6}.shared-card-body .markdown-body{font-size:.86rem}.shared-card-body .markdown-body p{margin-bottom:.5rem}.expand-card-btn{color:var(--gold);cursor:pointer;text-align:center;background:0 0;border:none;border-top:1px solid #ffffff08;width:100%;margin-top:.6rem;padding:.4rem 0;font-size:.78rem;font-weight:700;transition:color .2s;display:block}.expand-card-btn:hover{color:var(--teal)}.shared-card-footer{color:var(--muted);border-top:1px solid #ffffff0d;justify-content:space-between;align-items:center;margin-top:1.2rem;padding-top:.8rem;font-size:.74rem;display:flex}.shared-card-footer .author{color:var(--text);font-weight:700}.shared-card-footer .post-date{opacity:.8;font-family:Space Mono,monospace}.publish-modal{max-width:460px!important}.publish-modal h2{color:var(--gold);margin-bottom:.8rem;font-family:Noto Serif TC,serif;font-size:1.3rem}.publish-prompt{color:var(--muted);border-bottom:1px solid var(--border);margin-bottom:1.2rem;padding-bottom:.8rem;font-size:.86rem;line-height:1.5}.publish-prompt strong{color:var(--text)}.publish-modal .form-group input{background:var(--surface);border:1px solid var(--border);width:100%;color:var(--text);border-radius:8px;outline:none;padding:.7rem .9rem;font-size:.88rem}.publish-modal .form-group input:focus{border-color:var(--gold);box-shadow:0 0 8px #ffd16633}.publish-actions{gap:.75rem;margin-top:1.5rem;display:flex}.publish-submit-btn,.publish-cancel-btn{cursor:pointer;text-align:center;border-radius:8px;flex:1;padding:.7rem;font-size:.85rem;font-weight:700;transition:all .2s}.publish-submit-btn{background:var(--gold);color:#000;border:none}.publish-submit-btn:hover{background:#ffe3a3;transform:translateY(-1px)}.publish-cancel-btn{background:var(--surface2);border:1px solid var(--border);color:var(--muted)}.publish-cancel-btn:hover{border-color:var(--accent);color:var(--accent)}@media (width<=768px){.header-right{flex-direction:column;gap:.8rem;width:100%}.nav-toggle-btn{justify-content:center;width:100%;padding:.5rem}.share-board-container{padding:1.5rem 1rem 5rem}.share-board-title{font-size:1.6rem}.board-search-bar{margin-bottom:2rem;padding-left:1rem}.board-grid{grid-template-columns:1fr;gap:1.2rem}}.board-publish-trigger{background:linear-gradient(135deg, var(--gold) 0%, #ffc04d 100%);color:#000;cursor:pointer;letter-spacing:.05em;border:none;border-radius:30px;align-items:center;gap:.5rem;margin-top:1.5rem;padding:.75rem 2rem;font-size:.92rem;font-weight:800;transition:all .3s cubic-bezier(.4,0,.2,1);display:inline-flex;box-shadow:0 4px 15px #ffd1664d}.board-publish-trigger:hover{filter:brightness(1.05);transform:translateY(-2px);box-shadow:0 6px 25px #ffd16680}.board-publish-trigger:active{transform:translateY(0)}.card-delete-btn{border:1px solid var(--border);cursor:pointer;color:var(--muted);background:#ffffff08;border-radius:20px;justify-content:center;align-items:center;padding:.3rem .55rem;font-size:.72rem;transition:all .2s;display:flex}.card-delete-btn:hover{color:var(--accent);background:#e639461f;border-color:#e6394673;transform:scale(1.05)}.card-delete-btn:active{transform:scale(.95)}.login-page-container{background:radial-gradient(circle at 100% 0,#ffd1660d,#0000 40%),radial-gradient(circle at 0 100%,#06d6a00d,#0000 40%);justify-content:center;align-items:center;min-height:calc(100vh - 91px);padding:3rem 1.5rem;animation:.5s cubic-bezier(.4,0,.2,1) fadeInBoard;display:flex}.login-card{border:1px solid var(--border);-webkit-backdrop-filter:blur(15px);backdrop-filter:blur(15px);background:linear-gradient(135deg,#161626cc 0%,#0e0e18f2 100%);border-radius:20px;flex-direction:column;width:100%;max-width:440px;padding:2.5rem;display:flex;position:relative;box-shadow:0 20px 50px #00000080}.login-back-btn{border:1px solid var(--border);color:var(--muted);cursor:pointer;background:#ffffff08;border-radius:50%;justify-content:center;align-items:center;width:32px;height:32px;font-size:.85rem;transition:all .2s;display:flex;position:absolute;top:1.2rem;right:1.2rem}.login-back-btn:hover{border-color:var(--accent);color:var(--accent);background:#e6394626;transform:rotate(90deg)}.login-header{text-align:center;margin-bottom:2rem}.login-logo{filter:drop-shadow(0 0 10px #ffd16666);margin-bottom:.6rem;font-size:2.5rem;animation:3s ease-in-out infinite bounceLogo}@keyframes bounceLogo{0%,to{transform:translateY(0)}50%{transform:translateY(-6px)}}.login-header h2{color:var(--text);margin-bottom:.4rem;font-family:Noto Serif TC,serif;font-size:1.6rem;font-weight:800}.login-subtitle{color:var(--muted);font-size:.82rem;line-height:1.45}.login-error-alert{color:var(--accent);text-align:left;background:#e6394626;border:1px solid #e6394659;border-radius:8px;margin-bottom:1.2rem;padding:.65rem 1rem;font-size:.78rem}.login-form{flex-direction:column;gap:1.1rem;display:flex}.login-form .form-group{flex-direction:column;gap:.4rem;margin-bottom:0;display:flex}.login-form .form-group label{color:var(--muted);font-size:.76rem;font-weight:600}.login-form .form-group input{background:var(--surface);border:1px solid var(--border);color:var(--text);border-radius:8px;outline:none;padding:.75rem 1rem;font-size:.88rem;transition:border-color .2s,box-shadow .2s}.login-form .form-group input:focus{border-color:var(--gold);box-shadow:0 0 10px #ffd16626}.login-submit-btn{background:linear-gradient(135deg, var(--gold) 0%, #ffc04d 100%);color:#000;cursor:pointer;border:none;border-radius:8px;margin-top:.5rem;padding:.75rem;font-size:.9rem;font-weight:800;transition:all .2s}.login-submit-btn:hover:not(:disabled){filter:brightness(1.05);transform:translateY(-1px);box-shadow:0 4px 15px #ffd16640}.login-submit-btn:disabled{color:#888;cursor:not-allowed;background:#555}.login-divider{text-align:center;color:var(--muted);align-items:center;margin:1.5rem 0;font-size:.7rem;display:flex}.login-divider:before,.login-divider:after{content:"";border-bottom:1px solid var(--border);flex:1}.login-divider:not(:empty):before{margin-right:.75em}.login-divider:not(:empty):after{margin-left:.75em}.login-oauth-group{flex-direction:column;gap:.75rem;display:flex}.oauth-btn{border:1px solid var(--border);color:var(--text);cursor:pointer;background:#ffffff08;border-radius:8px;justify-content:center;align-items:center;gap:.6rem;padding:.65rem;font-size:.85rem;font-weight:600;transition:all .2s;display:flex}.oauth-btn:hover:not(:disabled){background:#ffffff0f;border-color:#ffffff40}.oauth-icon{width:16px;height:16px}.g-icon{background:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='%23EA4335' d='M5.266 9.765A7.077 7.077 0 0 1 12 4.909c1.69 0 3.218.6 4.418 1.582L19.91 3C17.782 1.145 15.055 0 12 0 7.33 0 3.327 2.682 1.386 6.618l3.88 3.147z'/%3E%3Cpath fill='%234285F4' d='M16.04 15.345c1.2-.98 2.05-2.43 2.05-4.436 0-.6-.05-1.18-.17-1.745H12v3.745h4.15c-.18.98-.73 1.8-1.56 2.364l1.45 2.072z'/%3E%3Cpath fill='%23FBBC05' d='M5.266 14.235A7.077 7.077 0 0 1 4.909 12c0-.79.13-1.55.357-2.265l-3.88-3.147A11.96 11.96 0 0 0 0 12c0 2.07.53 4.02 1.45 5.764l3.816-3.529z'/%3E%3Cpath fill='%2334A853' d='M12 24c3.245 0 5.973-1.073 7.964-2.927l-3.882-3.127A7.077 7.077 0 0 1 12 19.09c-3.69 0-6.8-2.5-7.91-5.873L.273 16.745C2.218 20.682 6.22 24 12 24z'/%3E%3C/svg%3E") 50%/contain no-repeat}.a-icon{background:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='white'%3E%3Cpath d='M18.71 19.5c-.83 1.24-1.71 2.45-3.05 2.47-1.34.03-1.77-.79-3.29-.79-1.53 0-2 .77-3.27.82-1.31.05-2.3-1.32-3.14-2.53C4.25 17 2.94 12.45 4.7 9.39c.87-1.52 2.43-2.48 4.12-2.51 1.28-.02 2.5.87 3.29.87.78 0 2.26-1.07 3.81-.91.65.03 2.47.26 3.64 1.98-.09.06-2.17 1.28-2.15 3.81.03 3.02 2.65 4.03 2.68 4.04-.03.07-.42 1.44-1.38 2.83M15.97 4.17c.66-.81 1.11-1.93.99-3.06-1 .04-2.21.67-2.93 1.49-.62.69-1.16 1.84-1.01 2.96 1.12.09 2.27-.57 2.95-1.39z'/%3E%3C/svg%3E") 50%/contain no-repeat}.guest-login-btn{color:var(--gold);cursor:pointer;background:0 0;border:1px dashed #ffd16666;border-radius:8px;margin-top:1rem;padding:.6rem;font-size:.8rem;font-weight:700;transition:all .2s}.guest-login-btn:hover:not(:disabled){border-style:solid;border-color:var(--gold);background:#ffd1660d}.login-footer{text-align:center;color:var(--muted);margin-top:1.5rem;font-size:.78rem}.login-footer button{color:var(--gold);cursor:pointer;background:0 0;border:none;padding:0;font-weight:700;text-decoration:underline}.login-footer button:hover{color:#ffc04d}.user-profile-menu{background:#ffd1660d;border:1px solid #ffd1664d;border-radius:20px;align-items:center;padding:.2rem .3rem .2rem .8rem;display:flex}.user-name{margin-right:.3rem}.logout-btn{background:#e639460d!important;border-radius:15px!important;padding:.3rem .7rem!important;font-size:.74rem!important}.logout-btn:hover{background:#e6394633!important;box-shadow:0 0 10px #e6394633!important}
