html{background:var(--bg)}body{margin:0;font-family:Noto Sans TC,PingFang TC,Microsoft JhengHei,sans-serif}button,input,select,textarea{font-family:inherit}#root{min-height:100vh}::view-transition-old(root){animation-duration:.55s;animation-timing-function:cubic-bezier(.4,0,.2,1)}::view-transition-new(root){animation-duration:.55s;animation-timing-function:cubic-bezier(.4,0,.2,1)}:root,:root[data-palette=sage]{--bottom-offset:0px;--bg:#181c14;--bg-rgb:24, 28, 20;--surface:#3c3d37;--surface-rgb:60, 61, 55;--surface2:#262920;--border:#52544c;--accent:#82947d;--accent-rgb:130, 148, 125;--gold:#82947d;--gold-rgb:130, 148, 125;--teal:#82947d;--teal-rgb:130, 148, 125;--text:#ecdfcc;--muted:#a89f92;--chip-bg:rgba(var(--surface-rgb), .88);--header-bg:linear-gradient(180deg, rgba(var(--surface-rgb), .95) 0%, rgba(var(--bg-rgb), .4) 100%);--map-bg-center:#181c14;--map-bg-edge:#181c14;--map-glow-start:transparent;--map-glow-end:transparent;--map-land:#3c3d37;--map-land-stroke:#51544a;--map-contour:#3c3d37;--map-mountain:#1d2119;--map-mountain-stroke:#33372c;--map-label:#a89f92;--search-bg:rgba(var(--accent-rgb), .08);--search-border:rgba(var(--accent-rgb), .22);--search-hover-bg:rgba(var(--accent-rgb), .15);--search-focus-bg:rgba(var(--accent-rgb), .22);--legend-bg:rgba(var(--surface-rgb), .9);--mobile-nav-bg:rgba(var(--surface-rgb), .95)}[data-theme=light],[data-theme=light][data-palette=sage]{--bg:#faf9ee;--bg-rgb:250, 249, 238;--surface:#fff;--surface-rgb:255, 255, 255;--surface2:#fff;--border:#dccfc0;--accent:#6b7f64;--accent-rgb:107, 127, 100;--gold:#596b53;--gold-rgb:89, 107, 83;--teal:#4c5c46;--teal-rgb:76, 92, 70;--text:#272e25;--muted:#6e796a;--chip-bg:rgba(var(--surface-rgb), .85);--header-bg:linear-gradient(180deg, rgba(var(--bg-rgb), .95) 0%, rgba(var(--bg-rgb), .4) 100%);--map-bg-center:#faf9ee;--map-bg-edge:#faf9ee;--map-glow-start:transparent;--map-glow-end:transparent;--map-land:#e8e4da;--map-land-stroke:#dccfc0;--map-contour:#e8e4da;--map-mountain:#e8e4da;--map-mountain-stroke:#dccfc0;--map-label:#6e796a;--search-bg:rgba(var(--accent-rgb), .05);--search-border:rgba(var(--accent-rgb), .15);--search-hover-bg:rgba(var(--accent-rgb), .1);--search-focus-bg:rgba(var(--accent-rgb), .15);--legend-bg:#fffffff2;--mobile-nav-bg:#fffffff2}:root[data-palette=volcano]{--bottom-offset:0px;--bg:#0b0b0e;--bg-rgb:11, 11, 14;--surface:#141419;--surface-rgb:20, 20, 25;--surface2:#181820;--border:#ff910047;--accent:#ff9100;--accent-rgb:255, 145, 0;--gold:#ff9100;--gold-rgb:255, 145, 0;--teal:#ff9100;--teal-rgb:255, 145, 0;--text:#f5f5f7;--muted:#a0a0ab;--chip-bg:rgba(var(--surface-rgb), .88);--header-bg:linear-gradient(180deg, rgba(var(--surface-rgb), .95) 0%, rgba(var(--bg-rgb), .4) 100%);--map-bg-center:#120e0a;--map-bg-edge:#0b0b0e;--map-glow-start:transparent;--map-glow-end:transparent;--map-land:#1c1814;--map-land-stroke:#3d2d1d;--map-contour:#1c1814;--map-mountain:#14100c;--map-mountain-stroke:#2e2014;--map-label:#a0a0ab;--search-bg:rgba(var(--accent-rgb), .08);--search-border:rgba(var(--accent-rgb), .22);--search-hover-bg:rgba(var(--accent-rgb), .15);--search-focus-bg:rgba(var(--accent-rgb), .22);--legend-bg:rgba(var(--surface-rgb), .9);--mobile-nav-bg:rgba(var(--surface-rgb), .95)}[data-theme=light][data-palette=volcano]{--bg:#fff;--bg-rgb:255, 255, 255;--surface:#fff;--surface-rgb:255, 255, 255;--surface2:#fff;--border:#ffe0b2;--accent:#f57c00;--accent-rgb:245, 124, 0;--gold:#e65100;--gold-rgb:230, 81, 0;--teal:#e65100;--teal-rgb:230, 81, 0;--text:#1a1a1f;--muted:#666670;--chip-bg:rgba(var(--surface-rgb), .85);--header-bg:linear-gradient(180deg, rgba(var(--bg-rgb), .95) 0%, rgba(var(--bg-rgb), .4) 100%);--map-bg-center:#fff;--map-bg-edge:#fff;--map-glow-start:transparent;--map-glow-end:transparent;--map-land:#f3e8d6;--map-land-stroke:#e2d2ba;--map-contour:#f3e8d6;--map-mountain:#f3e8d6;--map-mountain-stroke:#e2d2ba;--map-label:#666670;--search-bg:rgba(var(--accent-rgb), .05);--search-border:rgba(var(--accent-rgb), .15);--search-hover-bg:rgba(var(--accent-rgb), .1);--search-focus-bg:rgba(var(--accent-rgb), .15);--legend-bg:#fffffff2;--mobile-nav-bg:#fffffff2}*,:before,:after{box-sizing:border-box;margin:0;padding:0}html{font-size:108%}body{background:var(--bg);color:var(--text);letter-spacing:.02em;overscroll-behavior-y:contain;min-height:100vh;font-family:Noto Sans TC,PingFang TC,Microsoft JhengHei,sans-serif;line-height:1.5;overflow-x:hidden}body.modal-open{width:100%!important;height:100vh!important;position:fixed!important;overflow:hidden!important}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);background:var(--header-bg);z-index:100;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);justify-content:space-between;align-items:center;gap:1.5rem;padding:2rem 3rem 1rem;display:flex;position:sticky;top:0}@media (width>=1025px){header{--sidebar-w:420px;top:12px!important;left:calc((100% - var(--sidebar-w)) / 2)!important;width:max-content!important;min-width:0!important;max-width:min(calc(100% - var(--sidebar-w) - 24px), calc(100vw - 32px))!important;z-index:1000!important;-webkit-backdrop-filter:blur(12px)!important;box-sizing:border-box!important;background:#fcfbfae6!important;border:1.5px solid #1414131f!important;border-radius:999px!important;justify-content:space-between!important;align-items:center!important;gap:8px!important;height:52px!important;margin:0!important;padding:0 16px!important;transition:left .3s cubic-bezier(.16,1,.3,1),max-width .3s cubic-bezier(.16,1,.3,1),background-color .3s,border-color .3s!important;display:inline-flex!important;position:fixed!important;transform:translate(-50%)!important;box-shadow:0 4px 24px #0000000a!important}header.full-width-header{max-width:calc(100vw - 32px)!important;left:50%!important;transform:translate(-50%)!important}@media (width<=1200px){header{--sidebar-w:400px}}[data-theme=dark] header{background:#14120fe0!important;border:1.5px solid #f6f3eb26!important;box-shadow:0 8px 32px #00000026!important}.logo{cursor:pointer!important;flex-shrink:0!important;align-items:center!important;gap:10px!important;transition:opacity .2s!important;display:flex!important}.logo:hover{opacity:.85!important}.logo-icon{filter:none!important;justify-content:center!important;align-items:center!important;width:34px!important;height:34px!important;animation:none!important;display:flex!important}.logo-icon svg{width:28px!important;height:28px!important;color:var(--accent)!important}[data-theme=dark] .logo-icon svg{color:var(--accent)!important}.logo-text h1{letter-spacing:-.01em!important;color:var(--text)!important;font-size:1.08rem!important;font-weight:700!important;line-height:1.2!important}[data-theme=dark] .logo-text h1{color:var(--text)!important}.logo-text span{color:var(--muted)!important;letter-spacing:.05em!important;white-space:nowrap!important;font-size:.72rem!important;display:block!important}[data-theme=dark] .logo-text span{color:var(--muted)!important}.header-search{max-width:280px!important;box-shadow:none!important;background:0 0!important;border:none!important;flex:1!important;margin:0 16px!important;padding:0!important;position:relative!important}.header-search input{color:#1d1610!important;background:#1414130d!important;border:1.5px solid #0000!important;border-radius:999px!important;width:100%!important;padding:8px 16px 8px 36px!important;font-size:.88rem!important;transition:all .25s!important}[data-theme=dark] .header-search input{color:#f6f3eb!important;background:#f6f3eb14!important}.header-search input:focus{background:#fff!important;border-color:#1d1610!important;outline:none!important}[data-theme=dark] .header-search input:focus{background:#14120f!important;border-color:#f6f3eb!important}.header-search .search-icon{color:#7c7064!important;display:flex!important;position:absolute!important;top:50%!important;left:12px!important;transform:translateY(-50%)!important}[data-theme=dark] .header-search .search-icon{color:#9c8e82!important}.header-search .search-clear-btn{cursor:pointer!important;color:#7c7064!important;background:0 0!important;border:none!important;display:flex!important;position:absolute!important;top:50%!important;right:12px!important;transform:translateY(-50%)!important}[data-theme=dark] .header-search .search-clear-btn{color:#9c8e82!important}.header-right{align-items:center!important;gap:8px!important;display:flex!important}.stats-bar{align-items:center!important;gap:14px!important;margin-right:8px!important;display:flex!important}.stat{flex-direction:column!important;align-items:center!important;min-width:auto!important;display:flex!important}.stat-num{color:#1d1610!important;font-size:1rem!important;font-weight:700!important}[data-theme=dark] .stat-num{color:#f6f3eb!important}.stat-label{color:#7c7064!important;text-transform:uppercase!important;letter-spacing:.02em!important;font-size:.65rem!important}[data-theme=dark] .stat-label{color:#9c8e82!important}.nav-toggle-btn{color:#1d1610!important;cursor:pointer!important;background:#fff!important;border:1.5px solid #1414131f!important;border-radius:999px!important;align-items:center!important;padding:6px 14px!important;font-size:.88rem!important;font-weight:500!important;transition:all .25s!important;display:flex!important}[data-theme=dark] .nav-toggle-btn{color:#f6f3eb!important;background:#14120f!important;border:1.5px solid #f6f3eb26!important}.nav-toggle-btn svg{width:14px!important;height:14px!important}.nav-toggle-btn:hover{color:#fff!important;background:#1d1610!important;border-color:#1d1610!important}[data-theme=dark] .nav-toggle-btn:hover{color:#1d1610!important;background:#f6f3eb!important;border-color:#f6f3eb!important}.nav-toggle-btn.active{color:#fff!important;background:#1d1610!important;border-color:#1d1610!important}[data-theme=dark] .nav-toggle-btn.active{color:#1d1610!important;background:#f6f3eb!important;border-color:#f6f3eb!important}.theme-toggle-btn{color:#1d1610!important;cursor:pointer!important;background:#fff!important;border:1.5px solid #1414131f!important;border-radius:50%!important;justify-content:center!important;align-items:center!important;width:34px!important;height:34px!important;transition:all .25s!important;display:flex!important}[data-theme=dark] .theme-toggle-btn{color:#f6f3eb!important;background:#14120f!important;border:1.5px solid #f6f3eb26!important}.theme-toggle-btn:hover{background:#1414130d!important}[data-theme=dark] .theme-toggle-btn:hover{background:#f6f3eb14!important}.theme-toggle-btn svg{width:15px!important;height:15px!important}.user-profile-menu{align-items:center!important;gap:6px!important;display:flex!important}.logout-btn,[data-theme=dark] .logout-btn{border-color:var(--accent)!important;color:var(--accent)!important}.logout-btn:hover,[data-theme=dark] .logout-btn:hover{background:var(--accent)!important;color:#fff!important;border-color:var(--accent)!important}.main-layout{height:100vh!important;padding-top:0!important}.sidebar{padding-top:20px!important}.calendar-main-layout,.share-board-container,.profile-board-container,.login-page-container{padding-top:100px!important}.venue-panel-container,.map-weather-overlay,.shuangbei-popover{top:76px!important}}.logo{cursor:pointer;-webkit-user-select:none;user-select:none;align-items:center;gap:1rem;transition:opacity .2s;display:flex}.logo:hover{opacity:.85}.header-search{background:var(--search-bg);border:1px solid var(--search-border);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border-radius:20px;flex:1;align-items:center;min-width:160px;max-width:320px;margin:0 1rem;padding:.45rem 1rem;transition:all .3s cubic-bezier(.4,0,.2,1);display:flex;position:relative}.header-search:hover{border-color:rgba(var(--teal-rgb), .25);background:var(--search-hover-bg);box-shadow:0 0 10px rgba(var(--teal-rgb), .1)}.header-search:focus-within{border-color:var(--gold);background:var(--search-focus-bg);box-shadow:0 0 15px rgba(var(--gold-rgb), .2)}.header-search .search-icon{color:var(--muted);-webkit-user-select:none;user-select:none;align-items:center;margin-right:.6rem;font-size:.85rem;display:flex}.header-search input{color:var(--text);background:0 0;border:none;outline:none;width:100%;font-family:inherit;font-size:.82rem}.header-search input::placeholder{color:var(--muted);opacity:.7}.header-search .search-clear-btn{color:var(--muted);cursor:pointer;opacity:.8;background:0 0;border:none;border-radius:50%;justify-content:center;align-items:center;width:16px;height:16px;margin-left:.4rem;padding:.1rem;font-size:.82rem;transition:all .2s;display:flex}.header-search .search-clear-btn:hover{color:var(--accent);opacity:1;background:#ffffff1a}.search-info-tip{color:var(--muted);flex-wrap:wrap;align-items:center;gap:.3rem;margin:-.2rem 0 .8rem;padding:0 .2rem;font-size:.76rem;display:flex}.clear-filter-inline-btn{font-weight:700;transition:color .2s}.clear-filter-inline-btn:hover{color:var(--gold)!important}.logo-icon{width:40px;height:40px;color:var(--accent);filter:drop-shadow(0 2px 8px rgba(var(--accent-rgb), .3));justify-content:center;align-items:center;font-size:2.2rem;animation:3s ease-in-out infinite pulse-hex;display:flex}@keyframes pulse-hex{0%,to{filter:drop-shadow(0 2px 8px rgba(var(--accent-rgb), .3));transform:scale(1)}50%{filter:drop-shadow(0 4px 16px rgba(var(--accent-rgb), .5));transform:scale(1.06)}}.logo-text{display:none!important}.logo-text h1{letter-spacing:.1em;color:var(--text);white-space:nowrap;font-size:1.3rem;font-weight:900;line-height:1.2}.logo-text span{color:var(--muted);letter-spacing:.2em;white-space:nowrap;font-family:Noto Sans TC,PingFang TC,Microsoft JhengHei,sans-serif;font-size:.7rem}.stats-bar{flex-wrap:nowrap;justify-content:flex-end;gap:clamp(.5rem,1.5vw,2rem);display:flex}.stat{text-align:center;white-space:nowrap;min-width:65px}.stat-num{color:var(--gold);font-family:Noto Sans TC,PingFang TC,Microsoft JhengHei,sans-serif;font-size:1.4rem;font-weight:700}.stat-label{color:var(--muted);letter-spacing:.15em;font-size:.65rem}.main-layout{grid-template-columns:1fr minmax(360px,420px);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(ellipse at 40% 50%, var(--map-bg-center) 0%, var(--map-bg-edge) 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-icon-group.category-inactive{opacity:.12;pointer-events:none;filter:grayscale(85%);transition:all .3s}.venue-icon-group{cursor:pointer}.venue-icon{pointer-events:none;transform-origin:0 0;transition:opacity .25s,transform .25s cubic-bezier(.4,0,.2,1);overflow:visible}.venue-icon-group .placeholder-dot{fill:#1a1a24;stroke:var(--accent);stroke-width:1.5px;opacity:1;transform-origin:0 0;transition:opacity .25s,transform .25s cubic-bezier(.4,0,.2,1)}.venue-icon-group.visited .placeholder-dot{stroke:var(--teal)}.venue-icon-group.show-dot .venue-icon{opacity:0;transform:scale(calc(.5 / var(--map-zoom,1)));pointer-events:none}.venue-icon-group.show-dot .placeholder-dot,.venue-icon-group.show-icon .venue-icon{opacity:1;transform:scale(calc(1 / var(--map-zoom,1)))}.venue-icon-group.show-icon .placeholder-dot{opacity:0;transform:scale(0)}.venue-icon-group:hover .venue-icon{opacity:1;transform:scale(calc(1 / var(--map-zoom,1)))}.venue-icon-group:hover .placeholder-dot{opacity:0;transform:scale(0)}.venue-icon-group .icon-plate{fill:#1a1a24;stroke:var(--accent);stroke-width:1.5px;transition:all .3s cubic-bezier(.4,0,.2,1)}.venue-icon-group .icon-symbol{fill:var(--accent);stroke:var(--accent);stroke-width:1.2px;transition:all .3s cubic-bezier(.4,0,.2,1)}.venue-icon-group.visited .icon-plate{stroke:var(--teal)}.venue-icon-group.visited .icon-symbol{fill:var(--teal);stroke:var(--teal)}.venue-icon-group:hover .icon-plate{stroke:var(--accent);fill:var(--accent);filter:drop-shadow(0 0 6px var(--accent))}.venue-icon-group:hover .icon-symbol{fill:#1a1a24;stroke:#1a1a24}.venue-icon-group.visited:hover .icon-plate{stroke:var(--teal);fill:var(--teal);filter:drop-shadow(0 0 6px var(--teal))}.venue-icon-group.visited:hover .icon-symbol{fill:#1a1a24;stroke:#1a1a24}.venue-icon-group.active .icon-plate{stroke:var(--gold);fill:var(--gold);filter:drop-shadow(0 0 8px var(--gold))}.venue-icon-group.active .icon-symbol{fill:#1a1a24;stroke:#1a1a24}.pulse-ring{fill:none;stroke:var(--accent);stroke-width:calc(1.2px / var(--map-zoom,1));opacity:0;pointer-events:none}.venue-icon-group:hover .pulse-ring{opacity:.6;animation:2s ease-out infinite pulse-ring}.venue-icon-group.active .pulse-ring{opacity:.8;stroke:var(--gold);animation:2s ease-out infinite pulse-ring}.venue-icon-group.visited:hover .pulse-ring{stroke:var(--teal)}@keyframes pulse-ring{0%{r:calc(10px / var(--map-zoom,1));opacity:.8}to{r:calc(26px / var(--map-zoom,1));opacity:0}}.venue-label{fill:var(--text);pointer-events:auto;cursor:pointer;opacity:.85;font-family:Noto Sans TC,PingFang TC,Microsoft JhengHei,sans-serif;font-size:11px}.map-legend{background:rgba(var(--surface-rgb), .7);-webkit-backdrop-filter:blur(12px)saturate(160%);z-index:2;border:1px solid #ffffff14;border-radius:12px;gap:1.5rem;padding:.8rem 1.2rem;transition:all .3s cubic-bezier(.4,0,.2,1);display:flex;position:absolute;bottom:1.5rem;left:1.5rem;box-shadow:0 8px 32px #0000004d}.map-legend:hover{background:rgba(var(--surface-rgb), .85);border-color:#ffffff26;box-shadow:0 12px 40px #0006}.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:1px solid var(--border);background:linear-gradient(135deg, rgba(var(--surface-rgb), .7) 0%, rgba(var(--surface-rgb), .2) 100%);border-radius:12px;margin:1rem 1rem 1.2rem;padding:1.5rem;transition:all .3s;box-shadow:0 4px 20px #00000026}.venue-info:hover{border-color:rgba(var(--gold-rgb), .25);box-shadow:0 8px 30px #00000040}.venue-info.empty{text-align:center;background:rgba(var(--surface-rgb), .15);border-style:dashed;border-color:#ffffff1a;justify-content:center;align-items:center;min-height:160px;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:Noto Sans TC,PingFang TC,Microsoft JhengHei,sans-serif;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:Noto Sans TC,PingFang TC,Microsoft JhengHei,sans-serif;font-size:.7rem;transition:all .2s;display:flex}.clear-venue-btn:hover{color:var(--accent);background:rgba(var(--accent-rgb), .08)}.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:Noto Sans TC,PingFang TC,Microsoft JhengHei,sans-serif;font-size:.7rem;transition:all .2s;display:flex}.toggle-collapse-btn:hover{color:var(--gold);background:rgba(var(--gold-rgb), .08)}.venue-info.collapsed{min-height:auto;padding-bottom:1.2rem}.venue-capacity{color:var(--muted);font-size:.8rem}.venue-count{background:rgba(var(--accent-rgb), .15);border:1px solid rgba(var(--accent-rgb), .3);color:var(--accent);white-space:nowrap;border-radius:4px;padding:.25rem .6rem;font-family:Noto Sans TC,PingFang TC,Microsoft JhengHei,sans-serif;font-size:.75rem}.venue-count.has-visits{background:rgba(var(--teal-rgb), .15);border-color:rgba(var(--teal-rgb), .3);color:var(--teal)}.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{box-shadow:0 4px 20px rgba(var(--accent-rgb), .4);background:#c1121f;transform:translateY(-1px)}.concert-list-area{flex:1;min-height:0;padding:1rem;overflow-y:auto}.concert-list-area::-webkit-scrollbar{width:6px;height:6px}.venue-panel-content::-webkit-scrollbar{width:6px;height:6px}.modal::-webkit-scrollbar{width:6px;height:6px}.concert-list-area::-webkit-scrollbar-track{background:0 0}.venue-panel-content::-webkit-scrollbar-track{background:0 0}.modal::-webkit-scrollbar-track{background:0 0}.concert-list-area::-webkit-scrollbar-thumb{background:#33271e80;border-radius:4px}.venue-panel-content::-webkit-scrollbar-thumb{background:#33271e80;border-radius:4px}.modal::-webkit-scrollbar-thumb{background:#33271e80;border-radius:4px}.concert-list-area::-webkit-scrollbar-thumb:hover{background:#ffbe0b80}.venue-panel-content::-webkit-scrollbar-thumb:hover{background:#ffbe0b80}.modal::-webkit-scrollbar-thumb:hover{background:#ffbe0b80}.section-title{letter-spacing:.25em;color:var(--muted);text-transform:uppercase;padding:.5rem .5rem .8rem;font-family:Noto Sans TC,PingFang TC,Microsoft JhengHei,sans-serif;font-size:.65rem}.concert-card{background:var(--surface2);border:1px solid var(--border);cursor:pointer;border-radius:8px;flex-direction:column;flex-shrink:0;justify-content:center;margin-bottom:.8rem;padding:1.1rem 1rem;transition:all .25s;display:flex;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);box-shadow:-3px 0 20px rgba(var(--teal-rgb), .1);transform:translate(3px)}.concert-card-header{justify-content:space-between;align-items:center;gap:.75rem;display:flex}.concert-card-header:not(:last-child){margin-bottom:.4rem}.concert-artist{color:var(--text);overflow-wrap:anywhere;align-items:center;min-width:0;font-family:Noto Sans TC,PingFang TC,Microsoft JhengHei,sans-serif;font-size:1rem;font-weight:700;line-height:1.2;display:inline-flex}.concert-date{color:var(--gold);white-space:nowrap;font-family:Noto Sans TC,PingFang TC,Microsoft JhengHei,sans-serif;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:Noto Sans TC,PingFang TC,Microsoft JhengHei,sans-serif;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);overscroll-behavior:contain;background:#000c;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.modal{background:var(--surface2);border:1px solid var(--border);overscroll-behavior:contain;border-radius:8px;width:600px;max-width:95vw;max-height:90vh;padding:2rem;animation:.3s slide-up;position:relative;overflow-y:auto}.modal-drag-handle-container{display:none}.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:Noto Sans TC,PingFang TC,Microsoft JhengHei,sans-serif;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:Noto Sans TC,PingFang TC,Microsoft JhengHei,sans-serif;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:rgba(var(--accent-rgb), .04)}.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}.media-uploading-overlay{z-index:1;background:#00000080;justify-content:center;align-items:center;display:flex;position:absolute;inset:0}.media-uploading-overlay .spinner{border-width:3px;border-top-color:var(--accent);width:20px;height:20px}.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{box-shadow:0 6px 30px rgba(var(--accent-rgb), .4);background:#c1121f}.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:Noto Sans TC,PingFang TC,Microsoft JhengHei,sans-serif;font-size:.7rem}.tag-date{background:rgba(var(--gold-rgb), .15);color:var(--gold);border:1px solid rgba(var(--gold-rgb), .3)}.tag-venue{background:rgba(var(--teal-rgb), .12);color:var(--teal);border:1px solid rgba(var(--teal-rgb), .25)}.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{background:rgba(var(--surface-rgb), .7);-webkit-backdrop-filter:blur(12px)saturate(160%);color:var(--text);z-index:2;border:1px solid #ffffff14;border-radius:10px;padding:.6rem 1.2rem;font-size:.82rem;font-weight:600;transition:all .25s cubic-bezier(.4,0,.2,1);position:absolute;bottom:5rem;right:1.5rem;box-shadow:0 8px 32px #0000004d}.all-concerts-btn:hover{background:rgba(var(--gold-rgb), .15);border-color:var(--gold);color:var(--gold);box-shadow:0 12px 36px 0 rgba(var(--gold-rgb), .2);transform:translateY(-2px)}.add-concert-desktop-btn{background:rgba(var(--surface-rgb), .7);-webkit-backdrop-filter:blur(12px)saturate(160%);color:var(--text);cursor:pointer;z-index:2;border:1px solid #ffffff14;border-radius:10px;justify-content:center;align-items:center;padding:.6rem 1.2rem;font-size:.82rem;font-weight:600;transition:all .25s cubic-bezier(.4,0,.2,1);display:inline-flex;position:absolute;bottom:1.5rem;right:1.5rem;box-shadow:0 8px 32px #0000004d}.add-concert-desktop-btn:hover{background:rgba(var(--gold-rgb), .15);border-color:var(--gold);color:var(--gold);box-shadow:0 12px 36px 0 rgba(var(--gold-rgb), .2);transform:translateY(-2px)}.empty-state{text-align:center;color:var(--muted);padding:2rem;font-size:.85rem}.empty-state.compact{padding:1rem}.upcoming-section{background:rgba(var(--surface-rgb), .3);border:1px solid var(--border);border-radius:12px;margin-bottom:1.2rem;padding:1.25rem;transition:all .3s;box-shadow:0 4px 15px #0000001a}.upcoming-section:hover{border-color:rgba(var(--gold-rgb), .25);box-shadow:0 6px 20px #00000026}.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:Noto Sans TC,PingFang TC,Microsoft JhengHei,sans-serif;font-size:.66rem}.refresh-events-btn{background:var(--surface);border:1px solid rgba(var(--gold-rgb), .28);color:var(--gold);white-space:nowrap;border-radius:6px;margin-top:.2rem;padding:.35rem .55rem;font-family:Noto Sans TC,PingFang TC,Microsoft JhengHei,sans-serif;font-size:.68rem;transition:border-color .2s,background .2s}.refresh-events-btn:hover{border-color:var(--gold);background:rgba(var(--gold-rgb), .08)}.refresh-events-btn:disabled{color:var(--muted);border-color:var(--border);cursor:wait}.category-filter-bar{gap:.4rem;margin:.2rem 0 1rem;padding:0;display:flex}.filter-tab-btn{background:var(--card-bg,#ffffff08);border:1px solid var(--border,#ffffff14);color:var(--muted,#8a8a9e);cursor:pointer;border-radius:8px;flex:1;justify-content:center;align-items:center;gap:.2rem;padding:.5rem .4rem;font-size:.72rem;font-weight:600;transition:all .2s;display:flex}.filter-tab-btn:hover{background:rgba(var(--gold-rgb), .05);border-color:rgba(var(--gold-rgb), .3);color:var(--text,#fff)}.filter-tab-btn.active{background:rgba(var(--gold-rgb), .12);border-color:var(--gold,#ffd166);color:var(--gold,#ffd166);box-shadow:0 0 12px rgba(var(--gold-rgb), .15)}.show-more-btn{background:var(--surface2);border:1px solid rgba(var(--gold-rgb), .22);width:100%;color:var(--gold);border-radius:6px;margin-top:.5rem;padding:.65rem;font-family:Noto Sans TC,PingFang TC,Microsoft JhengHei,sans-serif;font-size:.72rem;font-weight:600;transition:border-color .2s,background .2s,transform .2s}.show-more-btn:hover{border-color:var(--gold);background:rgba(var(--gold-rgb), .08);transform:translateY(-1px)}.remote-card{background:rgba(var(--gold-rgb), .06);border:1px solid rgba(var(--gold-rgb), .18);min-height:94px;color:var(--text);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:rgba(var(--gold-rgb), .1);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:Noto Sans TC,PingFang TC,Microsoft JhengHei,sans-serif;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:Noto Sans TC,PingFang TC,Microsoft JhengHei,sans-serif;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,.ticket-links .ticket-link-btn{border:1px solid rgba(var(--teal-rgb), .25);color:var(--teal);background:rgba(var(--teal-rgb), .03);border-radius:4px;padding:.15rem .35rem;font-family:Noto Sans TC,PingFang TC,Microsoft JhengHei,sans-serif;font-size:.62rem;text-decoration:none;transition:all .2s;display:inline-block}.ticket-links .ticket-link-btn{cursor:pointer}.ticket-links .ticket-link-btn:hover{background:rgba(var(--teal-rgb), .15);border-color:var(--teal);color:#fff;transform:translateY(-.5px)}.music-bar{height:var(--player-height,152px);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;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:Noto Sans TC,PingFang TC,Microsoft JhengHei,sans-serif;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{width:100%;height:var(--player-height,152px);border:none;border-radius:0}.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{width:50px;height:var(--player-height,152px);border:none;border-left:1px solid var(--border);color:var(--muted);background:0 0;flex-shrink:0;font-size:1.2rem;transition:color .2s}.music-bar-close:hover{color:var(--text)}@media (width<=768px){body.player-open .main-layout{height:calc(100vh - 91px - var(--player-height,152px))}body.player-open .music-bar-toggle{bottom:calc(var(--player-height,152px) + 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:Noto Sans TC,PingFang TC,Microsoft JhengHei,sans-serif;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:Noto Sans TC,PingFang TC,Microsoft JhengHei,sans-serif;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:Noto Sans TC,PingFang TC,Microsoft JhengHei,sans-serif;font-size:.62rem}.sp-type-artist{background:rgba(var(--accent-rgb), .15);color:var(--accent)}.sp-type-album{background:rgba(var(--gold-rgb), .15);color:var(--gold)}.sp-type-track{background:rgba(var(--teal-rgb), .15);color:var(--teal)}.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:Noto Sans TC,PingFang TC,Microsoft JhengHei,sans-serif;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:auto}.header-search{min-width:0;max-width:150px;margin:0 .5rem;padding:.35rem .7rem}.header-search .search-icon{margin-right:.4rem;font-size:.75rem}.header-search input{font-size:.75rem}.logo-text{display:none!important}.venue-name{font-size:1.1rem}.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:var(--player-height,152px)}.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{display:none!important}.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}.address-nav-btn{border:1px solid var(--border);color:var(--text);cursor:pointer;white-space:nowrap;background:#ffffff0f;border-radius:4px;align-items:center;gap:.25rem;margin-top:-.1rem;margin-left:.4rem;padding:.15rem .5rem;font-family:inherit;font-size:.72rem;transition:all .2s;display:inline-flex}.address-nav-btn:hover{border-color:var(--teal);color:var(--teal);background:rgba(var(--teal-rgb), .05)}.address-nav-btn.active{border-color:var(--gold);color:var(--gold);background:rgba(var(--gold-rgb), .12);box-shadow:0 0 8px rgba(var(--gold-rgb), .15)}.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);border:1px solid rgba(var(--gold-rgb), .22);width:100%;color:var(--gold);letter-spacing:.05em;text-align:center;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{background:rgba(var(--gold-rgb), .08);border-color:var(--gold);transform:translateY(-1px)}.transit-board{background:rgba(var(--surface-rgb), .3);border:1px solid var(--border);border-radius:12px;margin-bottom:1.2rem;padding:1.25rem;transition:all .3s;box-shadow:0 4px 15px #0000001a}.transit-board:hover{border-color:rgba(var(--gold-rgb), .25);box-shadow:0 6px 20px #00000026}.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{border-color:rgba(var(--gold-rgb), .25);background:#ffffff08}.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:Noto Sans TC,PingFang TC,Microsoft JhengHei,sans-serif;font-size:.72rem;font-weight:700}.transit-badge.normal{background:rgba(var(--teal-rgb), .12);border:1px solid rgba(var(--teal-rgb), .25);color:var(--teal);animation:2s ease-in-out infinite pulse-green-badge}.transit-badge.warning{background:rgba(var(--gold-rgb), .12);border:1px solid rgba(var(--gold-rgb), .25);color:var(--gold)}.transit-badge.loading{border:1px solid var(--border);color:var(--muted);background:#ffffff0d}@keyframes pulse-green-badge{0%,to{box-shadow:0 0 0 0 rgba(var(--teal-rgb), .2)}50%{box-shadow:0 0 10px 2px rgba(var(--teal-rgb), .1)}}.transit-detail{color:var(--muted);margin:0;font-size:.78rem;line-height:1.55}.transit-updated{color:var(--muted);opacity:.8;font-family:Noto Sans TC,PingFang TC,Microsoft JhengHei,sans-serif;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}.transit-retry-btn{background:rgba(var(--accent-rgb), .12);border:1px solid rgba(var(--accent-rgb), .4);color:var(--accent);cursor:pointer;white-space:nowrap;border-radius:20px;justify-content:center;align-items:center;gap:.3rem;margin-top:.5rem;padding:.4rem .9rem;font-family:inherit;font-size:.76rem;font-weight:700;transition:all .2s;display:inline-flex}.transit-retry-btn:hover{border-color:var(--accent);background:rgba(var(--accent-rgb), .2);transform:translateY(-1px)}.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-panel-container{-webkit-backdrop-filter:blur(16px)saturate(180%);z-index:100;pointer-events:auto;background:#1a1a26d9;border:1px solid #ffffff1a;border-radius:14px;flex-direction:column;width:320px;max-height:calc(100% - 15rem);transition:all .3s cubic-bezier(.4,0,.2,1);display:flex;position:absolute;top:1.5rem;left:1.5rem;overflow:hidden;box-shadow:0 10px 40px #00000080}.venue-panel-container.collapsed{background:var(--surface);border-color:var(--border);border-radius:50%;width:50px;height:50px;overflow:hidden}.venue-panel-header{box-sizing:border-box;align-items:center;gap:8px;height:50px;padding:8px 10px;display:flex}.search-input-wrapper{flex:1;align-items:center;display:flex;position:relative}.venue-panel-container.collapsed .search-input-wrapper{display:none}.search-input-wrapper input{width:100%;height:34px;color:var(--text);background:#ffffff0d;border:1px solid #ffffff1a;border-radius:8px;outline:none;padding:0 32px;font-size:.82rem;transition:all .2s}.search-input-wrapper input:hover{border-color:rgba(var(--gold-rgb), .4)}.search-input-wrapper input:focus{border-color:var(--gold);box-shadow:0 0 0 2px rgba(var(--gold-rgb), .25);background:#ffffff14}.search-input-wrapper .search-icon{color:var(--muted);pointer-events:none;align-items:center;display:flex;position:absolute;left:10px}.search-input-wrapper .search-icon svg{width:14px;height:14px}.search-input-wrapper .search-clear-btn{color:var(--muted);cursor:pointer;background:0 0;border:none;align-items:center;padding:4px;display:flex;position:absolute;right:8px}.search-input-wrapper .search-clear-btn svg{width:14px;height:14px}.panel-toggle-btn{color:var(--text);cursor:pointer;background:0 0;border:none;border-radius:8px;justify-content:center;align-items:center;width:34px;height:34px;transition:background .2s;display:flex}.panel-toggle-btn:hover{background:#ffffff14}.venue-panel-container.collapsed .panel-toggle-btn{border-radius:50%;width:100%;height:100%}.guide-panel-container{-webkit-backdrop-filter:blur(16px)saturate(180%);z-index:100;pointer-events:auto;background:#1a1a26d9;border:1px solid #ffffff1a;border-radius:14px;flex-direction:column;width:320px;max-height:calc(100% - 15rem);transition:all .3s cubic-bezier(.4,0,.2,1);display:flex;position:absolute;top:1.5rem;right:1.5rem;overflow:hidden;box-shadow:0 10px 40px #00000080}.guide-panel-container.collapsed{background:var(--surface);border-color:var(--border);border-radius:50%;width:50px;height:50px;overflow:hidden}.guide-panel-header{box-sizing:border-box;justify-content:space-between;align-items:center;gap:8px;height:50px;padding:8px 12px;display:flex}.guide-title{color:var(--text);white-space:nowrap;text-overflow:ellipsis;font-family:inherit;font-size:.82rem;font-weight:700;overflow:hidden}.guide-panel-container.collapsed .guide-title{display:none}.guide-panel-content{border-top:1px solid #ffffff0d;flex-direction:column;flex:1;gap:1.2rem;padding:1.2rem;display:flex;overflow-y:auto}.guide-screenshot-wrapper{border:1px solid #ffffff14;border-radius:8px;width:100%;overflow:hidden}.guide-screenshot{width:100%;height:auto;display:block}.guide-steps{flex-direction:column;gap:1rem;display:flex}.guide-step{align-items:flex-start;gap:.8rem;display:flex}.guide-step .step-num{background:var(--gold);width:20px;height:20px;color:var(--bg);border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;margin-top:2px;font-size:.75rem;font-weight:700;display:flex}.guide-step .step-text strong{color:var(--text);margin-bottom:2px;font-size:.82rem;display:block}.guide-step .step-text p{color:var(--muted);margin:0;font-size:.72rem;line-height:1.4}.guide-panel-container.collapsed .panel-toggle-btn{border-radius:50%;width:100%;height:100%}@media (width<=768px){.guide-panel-container{display:none!important}}.venue-panel-content{scrollbar-width:thin;border-top:1px solid #ffffff14;padding:8px 0;overflow-y:auto}.no-venues-found{text-align:center;color:var(--muted);padding:16px;font-size:.8rem}.region-group{margin-bottom:4px}.region-group-header{width:100%;color:var(--text);cursor:pointer;text-align:left;box-sizing:border-box;background:0 0;border:none;align-items:center;padding:8px 16px;transition:background .2s;display:flex}.region-group-header:hover{background:#ffffff08}.region-title{flex:1;font-size:.85rem;font-weight:600}.region-count{color:var(--muted);background:#ffffff14;border-radius:10px;margin-right:8px;padding:2px 6px;font-size:.75rem}.region-arrow{color:var(--muted);font-size:.65rem}@keyframes slideDown{0%{opacity:0;max-height:0;transform:translateY(-6px)}to{opacity:1;max-height:1000px;transform:translateY(0)}}.region-group-list{background:#00000026;flex-direction:column;padding:4px 0;animation:.28s cubic-bezier(.4,0,.2,1) forwards slideDown;display:flex;overflow:hidden}.venue-list-item{width:100%;color:var(--muted);cursor:pointer;text-align:left;box-sizing:border-box;background:0 0;border:none;align-items:center;padding:8px 24px;font-size:.8rem;transition:all .25s cubic-bezier(.4,0,.2,1);display:flex}.venue-list-item:hover{color:var(--text);background:#ffffff0d;transform:translate(4px)}.venue-list-item.active{color:var(--gold);border-left:3px solid var(--gold);background:#ff6b0026;padding-left:21px;font-weight:600}.venue-list-item.visited{color:var(--teal)}.venue-list-item.visited.active{color:var(--gold)}.venue-list-item .dot{background:var(--accent);border-radius:50%;flex-shrink:0;width:6px;height:6px;margin-right:8px}.venue-list-item.visited .dot{background:var(--teal)}.venue-list-item.active .dot{background:var(--gold)}.venue-list-item .name{text-overflow:ellipsis;white-space:nowrap;flex:1;overflow:hidden}.venue-list-item .visited-badge{color:var(--teal);margin-left:4px;font-size:.75rem}.map-tooltip{-webkit-backdrop-filter:blur(12px)saturate(180%);color:var(--text);pointer-events:none;background:#1a1a26d9;border:1px solid #ffffff1f;border-radius:12px;min-width:160px;padding:10px 14px;font-family:Noto Sans TC,PingFang TC,Microsoft JhengHei,sans-serif;transition:opacity .15s;transform:translate(0);box-shadow:0 8px 32px #00000080}.tooltip-title{color:var(--text);letter-spacing:.03em;margin-bottom:6px;font-size:.85rem;font-weight:700}.tooltip-meta{color:var(--muted);gap:12px;margin-bottom:6px;font-size:.72rem;display:flex}.tooltip-status{color:var(--teal);background:#146e7826;border:1px solid #146e7840;border-radius:4px;margin-top:4px;padding:2px 6px;font-size:.7rem;display:inline-block}@media (width<=768px){.venue-panel-container{width:auto;max-height:45%;top:1rem;left:1rem;right:1rem}.venue-panel-container.collapsed{width:44px;height:44px;left:1rem;right:auto}}.map-zoom-control.vertical{background:rgba(var(--surface-rgb), .7);-webkit-backdrop-filter:blur(12px)saturate(160%);z-index:10;border:1px solid #ffffff14;border-radius:12px;flex-direction:column;align-items:center;gap:.5rem;padding:.6rem;transition:all .3s cubic-bezier(.4,0,.2,1);display:flex;position:absolute;bottom:6.5rem;left:1.5rem;right:auto;box-shadow:0 8px 32px #0000004d}.map-zoom-control.vertical:hover{background:rgba(var(--surface-rgb), .85);border-color:#ffffff26;box-shadow:0 12px 40px #0006}.map-zoom-control.vertical .zoom-btn{width:32px;height:32px;color:var(--text);cursor:pointer;background:#ffffff0d;border:1px solid #ffffff14;border-radius:6px;justify-content:center;align-items:center;font-size:1.1rem;font-weight:700;transition:all .2s;display:flex}.map-zoom-control.vertical .zoom-btn:hover{background:rgba(var(--gold-rgb), .15);border-color:var(--gold);color:var(--gold);transform:translateY(-1px)}.map-zoom-control.vertical .zoom-btn:active{transform:scale(.95)}.map-zoom-control.vertical .zoom-btn.reset{font-size:.95rem}.map-zoom-control.vertical .zoom-value{color:var(--muted);text-align:center;min-width:unset;margin-top:.1rem;font-family:Noto Sans TC,PingFang TC,Microsoft JhengHei,sans-serif;font-size:.65rem;font-weight:600}.map-zoom-control.vertical .zoom-input{width:32px;height:20px;color:var(--text);border:1px solid var(--border);text-align:center;box-sizing:border-box;background:#ffffff14;border-radius:4px;outline:none;margin-top:.1rem;font-family:inherit;font-size:.65rem;font-weight:600}.map-zoom-control.vertical .zoom-input:focus{border-color:var(--gold);background:rgba(var(--gold-rgb), .05)}@media (width<=768px){.map-zoom-control.vertical{inset:auto auto 6.5rem 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:Noto Sans TC,PingFang TC,Microsoft JhengHei,sans-serif;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:rgba(var(--gold-rgb), .05)}.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:rgba(var(--gold-rgb), .03);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:Noto Sans TC,PingFang TC,Microsoft JhengHei,sans-serif;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}.theme-toggle-btn{background:var(--search-bg);border:1px solid var(--search-border);color:var(--text);cursor:pointer;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);-webkit-user-select:none;user-select:none;border-radius:50%;justify-content:center;align-items:center;width:38px;height:38px;padding:0;font-size:1.1rem;transition:all .3s cubic-bezier(.4,0,.2,1);display:flex}.theme-toggle-btn:hover{border-color:var(--teal);background:var(--search-hover-bg);box-shadow:0 0 10px rgba(var(--teal-rgb), .2);transform:scale(1.08)rotate(15deg)}.theme-toggle-btn:active{transform:scale(.95)}.nav-toggle-btn{background:rgba(var(--accent-rgb), .12);border:1px solid rgba(var(--accent-rgb), .4);color:var(--accent);cursor:pointer;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);letter-spacing:.05em;white-space:nowrap;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(--accent);color:var(--accent);box-shadow:0 6px 20px rgba(var(--accent-rgb), .25);background:rgba(var(--accent-rgb), .2);transform:translateY(-2px)}.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(--accent);letter-spacing:.02em;text-shadow:0 4px 12px #0003;margin-bottom:.4rem;font-family:Noto Sans TC,PingFang TC,Microsoft JhengHei,sans-serif;font-size:2.2rem;font-weight:900}.share-board-subtitle{color:var(--gold);letter-spacing:.25em;margin-bottom:1rem;font-family:Noto Sans TC,PingFang TC,Microsoft JhengHei,sans-serif;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);box-shadow:0 8px 30px rgba(var(--gold-rgb), .15);transform:translateY(-1px)}.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{background:rgba(var(--accent-rgb), .2);color:var(--accent)}.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:rgba(var(--gold-rgb), .35);box-shadow:0 15px 35px rgba(var(--gold-rgb), .08);transform:translateY(-5px)}.shared-card-header{justify-content:space-between;align-items:center;gap:1rem;margin-bottom:.8rem;display:flex}.card-artist-tag{background:rgba(var(--accent-rgb), .12);border:1px solid rgba(var(--accent-rgb), .25);color:var(--accent);letter-spacing:.05em;white-space:nowrap;text-overflow:ellipsis;border-radius:6px;max-width:180px;padding:.25rem .65rem;font-family:Noto Sans TC,PingFang TC,Microsoft JhengHei,sans-serif;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{background:rgba(var(--accent-rgb), .08);border-color:rgba(var(--accent-rgb), .4);color:var(--accent);transform:scale(1.05)}.card-like-btn.liked{background:rgba(var(--accent-rgb), .15);border-color:var(--accent);color:var(--accent);box-shadow:0 0 10px rgba(var(--accent-rgb), .2)}.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:Noto Sans TC,PingFang TC,Microsoft JhengHei,sans-serif;font-size:.78rem;font-weight:700}.shared-card-title{color:var(--text);margin-bottom:.5rem;font-family:Noto Sans TC,PingFang TC,Microsoft JhengHei,sans-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:Noto Sans TC,PingFang TC,Microsoft JhengHei,sans-serif}.publish-modal{max-width:460px!important}.publish-modal h2{color:var(--gold);margin-bottom:.8rem;font-family:Noto Sans TC,PingFang TC,Microsoft JhengHei,sans-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 rgba(var(--gold-rgb), .2)}.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:var(--accent);color:#fff;cursor:pointer;box-shadow:0 4px 15px rgba(var(--accent-rgb), .3);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}.board-publish-trigger:hover{box-shadow:0 6px 25px rgba(var(--gold-rgb), .5);filter:brightness(1.05);transform:translateY(-2px)}.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{background:rgba(var(--accent-rgb), .12);border-color:rgba(var(--accent-rgb), .45);color:var(--accent);transform:scale(1.05)}.card-delete-btn:active{transform:scale(.95)}.login-page-container{background:radial-gradient(circle at top right, rgba(var(--gold-rgb), .05), transparent 40%), radial-gradient(circle at bottom left, rgba(var(--teal-rgb), .05), transparent 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;z-index:10;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{background:rgba(var(--accent-rgb), .15);border-color:var(--accent);color:var(--accent);transform:rotate(90deg)}.login-header{text-align:center;margin-bottom:2rem}.login-logo{color:var(--accent);filter:drop-shadow(0 0 12px rgba(var(--accent-rgb), .4));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 Sans TC,PingFang TC,Microsoft JhengHei,sans-serif;font-size:1.6rem;font-weight:800}.login-subtitle{color:var(--muted);font-size:.82rem;line-height:1.45}.login-error-alert{background:rgba(var(--accent-rgb), .15);border:1px solid rgba(var(--accent-rgb), .35);color:var(--accent);text-align:left;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 rgba(var(--gold-rgb), .15)}.login-submit-btn{background:var(--accent);color:#fff;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);box-shadow:0 4px 15px rgba(var(--gold-rgb), .25);transform:translateY(-1px)}.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{border:1px dashed rgba(var(--gold-rgb), .4);color:var(--gold);cursor:pointer;background:0 0;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:rgba(var(--gold-rgb), .05)}.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{flex-shrink:0;align-items:center;gap:.6rem;display:flex}.profile-trigger-btn.active{border-color:var(--gold)!important;color:var(--gold)!important}.user-name{color:var(--gold);white-space:nowrap;text-overflow:ellipsis;vertical-align:middle;max-width:120px;margin-right:.3rem;font-size:.8rem;font-weight:700;display:inline-block;overflow:hidden}.logout-btn{background:rgba(var(--accent-rgb), .05)!important;border:1px solid rgba(var(--accent-rgb), .4)!important;color:var(--accent)!important;border-radius:15px!important;padding:.3rem .7rem!important;font-size:.74rem!important}.logout-btn:hover{background:rgba(var(--accent-rgb), .2)!important;box-shadow:0 0 10px rgba(var(--accent-rgb), .2)!important}.weather-widget{background:var(--surface2);border:1px solid var(--border);border-radius:8px;margin-top:1.2rem;padding:1.2rem;font-family:Noto Sans TC,PingFang TC,Microsoft JhengHei,sans-serif;transition:all .3s;position:relative;overflow:hidden;box-shadow:0 4px 12px #0003}.weather-widget:hover{border-color:rgba(var(--gold-rgb), .4);box-shadow:0 4px 20px #0000004d}.weather-widget.loading{color:var(--muted);justify-content:center;align-items:center;gap:.6rem;padding:2rem;font-size:.9rem;display:flex}.weather-widget.error{color:var(--accent);background:rgba(var(--accent-rgb), .05);border-color:rgba(var(--accent-rgb), .2);text-align:center;padding:1rem;font-size:.85rem}.weather-header{border-bottom:1px dashed var(--border);justify-content:space-between;align-items:center;margin-bottom:1rem;padding-bottom:.6rem;display:flex}.weather-title{color:var(--text);letter-spacing:.05em;align-items:center;gap:.5rem;font-size:.9rem;font-weight:700;display:flex}.fallback-badge{background:rgba(var(--gold-rgb), .1);border:1px solid rgba(var(--gold-rgb), .3);color:var(--gold);cursor:help;border-radius:4px;padding:.1rem .4rem;font-size:.65rem}.weather-refresh-btn{color:var(--muted);cursor:pointer;background:0 0;border:none;border-radius:50%;justify-content:center;align-items:center;width:24px;height:24px;font-size:1rem;transition:all .2s;display:flex}.weather-refresh-btn:hover{color:var(--text);background:#ffffff0d}.weather-refresh-btn:disabled{opacity:.5;cursor:not-allowed}.weather-body{flex-direction:column;gap:1rem;display:flex}.weather-main{grid-template-columns:1.2fr 1fr;align-items:center;gap:1rem;display:grid}.weather-temp-section{align-items:center;gap:.8rem;display:flex}.weather-emoji{font-size:2.2rem;line-height:1}.weather-temp-wrap{flex-direction:column;display:flex}.temp-val{color:var(--text);font-family:Noto Sans TC,PingFang TC,Microsoft JhengHei,sans-serif;font-size:1.8rem;font-weight:700;line-height:1.1}.weather-desc{color:var(--muted);font-size:.8rem}.weather-details{border-left:1px solid var(--border);flex-direction:column;gap:.3rem;padding-left:.8rem;font-size:.72rem;display:flex}.detail-item{color:var(--muted);justify-content:space-between;display:flex}.detail-item .value{color:var(--text);font-family:Noto Sans TC,PingFang TC,Microsoft JhengHei,sans-serif;font-weight:600}.weather-aqi-section{border:1px solid var(--border);background:#ffffff05;border-radius:6px;flex-direction:column;gap:.4rem;padding:.75rem .9rem;display:flex}.aqi-badge-container{justify-content:space-between;align-items:center;display:flex}.aqi-badge-container .label{color:var(--muted);font-size:.75rem}.aqi-badge{white-space:nowrap;border-radius:4px;padding:.2rem .6rem;font-size:.75rem;font-weight:700}.aqi-good{background:rgba(var(--teal-rgb), .15);border:1px solid rgba(var(--teal-rgb), .4);color:var(--teal)}.aqi-moderate{background:rgba(var(--gold-rgb), .15);border:1px solid rgba(var(--gold-rgb), .4);color:var(--gold)}.aqi-sensitive{color:#ff9f1c;background:#e6730026;border:1px solid #e6730066}.aqi-unhealthy{background:rgba(var(--accent-rgb), .15);border:1px solid rgba(var(--accent-rgb), .4);color:var(--accent)}.aqi-particles{color:var(--muted);gap:1rem;font-size:.7rem;display:flex}.aqi-particles strong{color:var(--text);font-family:Noto Sans TC,PingFang TC,Microsoft JhengHei,sans-serif}.weather-alerts{flex-direction:column;gap:.4rem;display:flex}.alerts-title{color:var(--gold);font-size:.78rem;font-weight:700}.alerts-list{flex-direction:column;gap:.4rem;display:flex}.alert-item{border-left:3px solid #0000;border-radius:6px;padding:.5rem .7rem;font-size:.75rem;line-height:1.4}.alert-item.aqi-advice{color:var(--text);border-left-color:var(--muted);background:#ffffff08}.alert-item.weather-warning{background:rgba(var(--accent-rgb), .08);color:var(--text);border-left-color:var(--accent)}.alert-item.weather-sunny{background:rgba(var(--accent-rgb), .06);color:var(--text);border-left-color:var(--accent)}.spinner{border:2px solid var(--border);border-top-color:var(--muted);border-radius:50%;width:14px;height:14px;animation:1s linear infinite spin;display:inline-block}@keyframes spin{to{transform:rotate(360deg)}}.map-weather-overlay{z-index:10;pointer-events:auto;width:330px;max-height:calc(100% - 6.5rem);animation:.3s ease-out slide-in-fade;position:absolute;top:5rem;right:1.5rem;overflow-y:auto}@keyframes slide-in-fade{0%{opacity:0;transform:translate(20px)}to{opacity:1;transform:translate(0)}}.map-weather-overlay .weather-widget{-webkit-backdrop-filter:blur(12px);border:1px solid var(--border);margin-top:0;box-shadow:0 10px 30px #0003;background:var(--legend-bg)!important}.weather-close-btn{color:var(--muted);cursor:pointer;background:0 0;border:none;border-radius:50%;justify-content:center;align-items:center;width:24px;height:24px;font-size:.9rem;transition:all .2s;display:flex}.weather-close-btn:hover{color:var(--accent);background:rgba(var(--accent-rgb), .1)}.weather-view-details-btn{background:var(--gold);color:#0a0a0f;cursor:pointer;text-align:center;border:none;border-radius:6px;width:100%;margin-top:.8rem;padding:.65rem;font-size:.8rem;font-weight:700;transition:all .2s}.weather-view-details-btn:hover{box-shadow:0 4px 15px rgba(var(--gold-rgb), .3);background:#ffc43d;transform:translateY(-1px)}.mobile-bottom-nav{display:none;position:relative}.nav-indicator-glide{pointer-events:none;z-index:1;background:#ffffff14;border:1px solid #ffffff1a;border-radius:99px;transition:transform .32s cubic-bezier(.34,1.56,.64,1),width .32s cubic-bezier(.34,1.56,.64,1),height .32s cubic-bezier(.34,1.56,.64,1),opacity .25s;position:absolute;top:0;left:0;box-shadow:0 4px 15px #0003}[data-theme=light] .nav-indicator-glide{background:#0000000d!important;border:1px solid #00000014!important;box-shadow:0 4px 15px #0000000a!important}.mobile-bottom-nav.dragging .nav-indicator-glide{transition:transform .12s cubic-bezier(.2,.85,.25,1),width .22s cubic-bezier(.25,1.4,.5,1),height .22s cubic-bezier(.25,1.4,.5,1),opacity .15s!important}.mobile-bottom-nav.modal-open-hidden{display:none!important}.mobile-bottom-nav{-webkit-touch-callout:none!important;-webkit-user-select:none!important;user-select:none!important;-khtml-user-select:none!important;transition:transform .25s cubic-bezier(.2,1,.2,1),background .25s,box-shadow .25s!important}.mobile-bottom-nav.dragging{background:var(--surface)!important;transform:scale(1.04)!important;box-shadow:0 15px 40px #0000008c!important}[data-theme=light] .mobile-bottom-nav.dragging{background:var(--bg)!important;box-shadow:0 15px 35px #00000026!important}.bottom-nav-item{-webkit-touch-callout:none!important;-webkit-user-select:none!important;user-select:none!important;-khtml-user-select:none!important;transition:transform .28s cubic-bezier(.34,1.56,.64,1),color .2s!important}.mobile-bottom-nav.dragging .bottom-nav-item{transition:transform .16s cubic-bezier(.25,1.4,.5,1),color .15s!important}.bottom-nav-item.hovered{color:var(--gold)!important;transform:scale(1.3)translateY(-4px)!important}.bottom-nav-item.neighbor{transform:scale(1.12)translateY(-1px)!important}.mobile-menu-toggle-btn,.mobile-sidebar-overlay,.mobile-sidebar-nav{display:none}@media (width<=768px){:root{--bottom-offset:calc(60px + env(safe-area-inset-bottom))}body.player-open{--bottom-offset:calc(150px + env(safe-area-inset-bottom))}header{flex-wrap:nowrap!important;justify-content:space-between!important;align-items:center!important;height:62px!important;padding:.8rem 1rem!important;display:flex!important;overflow:visible!important}.logo{order:1}.logo-text{display:none!important}.mobile-menu-toggle-btn{width:38px;height:38px;color:var(--text);cursor:pointer;background:#ffffff14;border:1px solid #ffffff26;border-radius:50%;order:2;justify-content:center;align-items:center;padding:0;transition:all .2s;display:flex!important}.mobile-menu-toggle-btn:hover{color:var(--gold);border-color:rgba(var(--gold-rgb), .3);background:#ffffff26}.mobile-menu-toggle-btn:active{transform:scale(.95)}.stats-bar,.header-right,.header-search,.nav-toggle-btn,.login-trigger-btn,.logout-btn{display:none!important}.mobile-view-selector-tabs{bottom:calc(var(--bottom-offset) + 16px)!important;z-index:99!important;-webkit-backdrop-filter:blur(15px)!important;background:#0e0e18d9!important;border:1px solid #ffffff26!important;border-radius:24px!important;width:max-content!important;max-width:90%!important;padding:4px!important;transition:bottom .3s!important;display:flex!important;position:fixed!important;left:50%!important;transform:translate(-50%)!important;box-shadow:0 10px 30px #0006!important}.mobile-view-tab-btn{color:var(--muted)!important;cursor:pointer!important;white-space:nowrap!important;background:0 0!important;border:none!important;border-radius:18px!important;align-items:center!important;gap:4px!important;padding:6px 14px!important;font-family:Noto Sans TC,PingFang TC,Microsoft JhengHei,sans-serif!important;font-size:.78rem!important;font-weight:500!important;transition:all .25s cubic-bezier(.4,0,.2,1)!important;display:flex!important}.mobile-view-tab-btn.active{background:var(--gold)!important;color:#000!important;box-shadow:0 2px 8px rgba(var(--gold-rgb), .4)!important;font-weight:700!important}.mobile-view-tab-btn:active{transform:scale(.95)!important}.concert-list-area{padding-bottom:calc(var(--bottom-offset) + 80px)!important}.main-layout{height:calc(100vh - 62px)!important;min-height:0!important;display:block!important;position:relative!important;overflow:hidden!important}.main-layout.mobile-tab-map .map-container{width:100%!important;height:100%!important;display:block!important}.main-layout.mobile-tab-map .sidebar,.main-layout.mobile-tab-list .map-container{display:none!important}.main-layout.mobile-tab-list .sidebar{width:100%!important;height:100%!important;min-height:100%!important;display:flex!important;overflow-y:auto!important}.main-layout.mobile-tab-search .map-container{display:none!important}.main-layout.mobile-tab-search .sidebar{width:100%!important;height:100%!important;min-height:100%!important;display:flex!important;overflow-y:auto!important}.mobile-search-bar{background:var(--surface);border:1px solid var(--border);border-radius:8px;align-items:center;gap:.5rem;margin-bottom:1.2rem;padding:.55rem .8rem;display:flex}.mobile-search-bar .search-icon{color:var(--muted);font-size:.85rem}.mobile-search-bar input{color:var(--text);background:0 0;border:none;outline:none;width:100%;font-family:inherit;font-size:.85rem}.mobile-search-bar .search-clear-btn{color:var(--muted);cursor:pointer;background:0 0;border:none;justify-content:center;align-items:center;padding:.1rem;font-size:.8rem;display:flex}.map-weather-overlay{z-index:99;width:auto;max-height:calc(100% - 6.5rem);top:4.5rem;left:1rem;right:1rem;box-shadow:0 8px 24px #0006}.weather-widget{padding:.8rem 1rem}.weather-main{grid-template-columns:1fr;gap:.6rem}.weather-details{border-left:none;border-top:1px dashed var(--border);flex-flow:wrap;gap:.5rem 1rem;padding-top:.5rem;padding-left:0}.detail-item{flex:40%}.weather-aqi-section{padding:.5rem .7rem}.weather-alerts{max-height:90px;overflow-y:auto}.weather-refresh-btn,.weather-close-btn{width:30px;height:30px;font-size:1.05rem}.mobile-sidebar-overlay{-webkit-backdrop-filter:blur(4px);z-index:998;opacity:0;pointer-events:none;background:#0009;transition:opacity .3s cubic-bezier(.4,0,.2,1);position:fixed;inset:0;display:block!important}.mobile-sidebar-overlay.active{opacity:1;pointer-events:auto}.mobile-sidebar-nav{background:var(--mobile-nav-bg);-webkit-backdrop-filter:blur(20px);border-right:1px solid var(--border);z-index:999;flex-direction:column;width:280px;max-width:80vw;transition:transform .3s cubic-bezier(.4,0,.2,1);position:fixed;top:0;bottom:0;left:0;transform:translate(-100%);box-shadow:10px 0 30px #00000080;display:flex!important}.mobile-sidebar-nav.open{transform:translate(0)}.sidebar-nav-header{border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;padding:1.5rem;display:flex}.sidebar-nav-title{color:var(--muted);letter-spacing:.15em;font-family:Noto Sans TC,PingFang TC,Microsoft JhengHei,sans-serif;font-size:.85rem;font-weight:700}.sidebar-nav-close{color:var(--muted);cursor:pointer;background:0 0;border:none;justify-content:center;align-items:center;padding:.2rem;font-size:1.2rem;transition:color .2s;display:flex}.sidebar-nav-close:hover{color:var(--accent)}.sidebar-nav-items{-webkit-overflow-scrolling:touch;flex-direction:column;flex:1;gap:.6rem;padding:1rem;display:flex;overflow-y:auto}.sidebar-nav-item{color:var(--muted);cursor:pointer;text-align:left;background:#ffffff05;border:1px solid #ffffff0a;border-radius:10px;align-items:center;gap:.8rem;width:100%;padding:.9rem 1.2rem;transition:all .2s cubic-bezier(.4,0,.2,1);display:flex;position:relative}.sidebar-nav-item:hover,.sidebar-nav-item:active{background:rgba(var(--gold-rgb), .05);border-color:rgba(var(--gold-rgb), .2);color:var(--text)}.sidebar-nav-item.active{background:linear-gradient(135deg, rgba(var(--gold-rgb), .15) 0%, rgba(var(--gold-rgb), .05) 100%);border-color:rgba(var(--gold-rgb), .4);color:var(--gold);font-weight:700}.sidebar-nav-item .icon{font-size:1.3rem}.sidebar-nav-item .label{letter-spacing:.05em;font-size:.88rem}.sidebar-nav-item .badge{background:var(--accent);color:#fff;border:1px solid var(--surface);border-radius:10px;padding:.15rem .45rem;font-family:Noto Sans TC,PingFang TC,Microsoft JhengHei,sans-serif;font-size:.65rem;font-weight:700;line-height:1;position:absolute;right:1.2rem}.music-bar-toggle,body.player-open .music-bar-toggle{display:none!important}body.player-open .main-layout{height:calc(100vh - 62px - var(--player-height,152px))!important}.main-layout.mobile-tab-list .weather-view-details-btn{display:none!important}}@media (width>=769px) and (width<=1100px){.stats-bar{display:none!important}}.weather-forecast-section{border:1px solid var(--border);background:#ffffff05;border-radius:8px;margin-top:1rem;padding:.8rem}.forecast-title{color:var(--gold);letter-spacing:.05em;text-align:left;margin-bottom:.6rem;font-size:.8rem;font-weight:700}.forecast-grid{scrollbar-width:thin;scrollbar-color:#ffffff1a transparent;gap:.6rem;padding-bottom:.5rem;display:flex;overflow-x:auto}.forecast-grid::-webkit-scrollbar{height:4px}.forecast-grid::-webkit-scrollbar-thumb{background:#ffffff26;border-radius:2px}.forecast-item{background:#ffffff05;border:1px solid #ffffff08;border-radius:6px;flex-direction:column;flex:0 0 76px;align-items:center;padding:.5rem .2rem;transition:all .2s;display:flex}.forecast-item:hover{border-color:rgba(var(--gold-rgb), .2);background:#ffffff0d}.forecast-day{color:var(--text);margin-bottom:.2rem;font-size:.75rem;font-weight:600}.forecast-emoji{margin:.25rem 0;font-size:1.4rem}.forecast-desc{color:var(--muted);margin-bottom:.2rem;font-size:.7rem}.forecast-temp{color:var(--text);font-family:Noto Sans TC,PingFang TC,Microsoft JhengHei,sans-serif;font-size:.72rem;font-weight:700}.ticket-detail-modal{width:800px!important;max-width:95vw!important;overflow-x:hidden!important}.ticket-detail-container{box-sizing:border-box;flex-direction:column;gap:1.5rem;width:100%;max-height:80vh;padding-right:.5rem;display:flex;overflow:hidden auto}.ticket-purchase-banner{background:rgba(var(--accent-rgb), .08);border:1px solid rgba(var(--accent-rgb), .25);box-sizing:border-box;border-radius:12px;flex-direction:column;flex-shrink:0;gap:.8rem;width:100%;padding:1.2rem;display:flex}.ticket-purchase-banner .banner-title{color:var(--accent);letter-spacing:.05em;font-size:.82rem;font-weight:700}.banner-buttons-row{flex-wrap:wrap;gap:.8rem;width:100%;display:flex}.ticket-buy-btn-large{background:var(--accent);border:1px solid var(--accent);min-width:200px;box-shadow:0 4px 15px rgba(var(--accent-rgb), .15);box-sizing:border-box;text-align:center;border-radius:8px;flex:1;justify-content:center;align-items:center;padding:.75rem 1.5rem;font-size:.88rem;font-weight:700;text-decoration:none;transition:all .2s;display:flex;color:#fff!important}.ticket-buy-btn-large:hover{background:var(--accent);border-color:var(--accent);opacity:.9;box-shadow:0 4px 20px rgba(var(--accent-rgb), .25);transform:translateY(-1px)}.ticket-buy-btn-large:active{transform:translateY(0)}.ticket-info-header{background:var(--surface);border:1px solid var(--border);border-radius:12px;flex-shrink:0;padding:1.2rem;position:relative;overflow:hidden}.ticket-source-badge{background:rgba(var(--accent-rgb), .12);border:1px solid rgba(var(--accent-rgb), .25);color:var(--accent);text-transform:uppercase;letter-spacing:.05em;border-radius:4px;margin-bottom:.6rem;padding:.2rem .6rem;font-size:.7rem;font-weight:700;display:inline-block}.ticket-title{color:var(--text);margin-bottom:1rem;font-size:1.4rem;font-weight:800;line-height:1.4}.ticket-meta-grid{grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:.8rem;margin-bottom:1.2rem;display:grid}.meta-item{color:var(--text);align-items:center;gap:.6rem;font-size:.85rem;display:flex}.meta-item .icon{flex-shrink:0;font-size:1.1rem}.meta-item .text strong{color:var(--accent);font-weight:600}.ticket-link-buttons{flex-wrap:wrap;gap:.8rem;display:flex}.ticket-buy-btn{background:var(--accent);color:#fff;min-width:180px;box-shadow:0 4px 15px rgba(var(--accent-rgb), .2);border:none;border-radius:8px;flex:1;justify-content:center;align-items:center;gap:.5rem;padding:.75rem 1.2rem;font-size:.88rem;font-weight:700;text-decoration:none;transition:all .2s;display:flex}.ticket-buy-btn:hover{box-shadow:0 6px 20px rgba(var(--accent-rgb), .35);background:var(--accent);opacity:.9;transform:translateY(-1.5px)}.ticket-music-section{background:rgba(var(--surface-rgb), .6);border:1px solid var(--border);border-radius:12px;flex-shrink:0;padding:1.2rem}.section-title-row{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.8rem;margin-bottom:1rem;display:flex}.section-title-row h3{color:var(--text);white-space:nowrap;margin:0;font-size:1.05rem;font-weight:700}.autoplay-control{white-space:nowrap;align-items:center;gap:.5rem;display:flex}.toggle-switch{flex-shrink:0;width:38px;height:20px;display:inline-block;position:relative}.toggle-switch input{opacity:0;width:0;height:0}.toggle-switch .slider{cursor:pointer;background-color:var(--border);border-radius:20px;transition:all .3s;position:absolute;inset:0}.toggle-switch .slider:before{content:"";background-color:var(--text);border-radius:50%;width:14px;height:14px;transition:all .3s;position:absolute;bottom:3px;left:3px}.toggle-switch input:checked+.slider{background-color:var(--teal)}.toggle-switch input:checked+.slider:before{background-color:#000;transform:translate(18px)}.toggle-label{color:var(--muted);white-space:nowrap;font-size:.76rem;font-weight:600}.spotify-loader,.spotify-no-tracks{color:var(--muted);text-align:center;white-space:nowrap;padding:1.5rem 0;font-size:.82rem;font-style:italic}.music-player-grid{box-sizing:border-box;grid-template-columns:minmax(0,1fr) minmax(0,1fr);align-items:start;gap:1.2rem;width:100%;display:grid}@media (width<=850px){.music-player-grid{grid-template-columns:1fr}}.music-selector-panel{box-sizing:border-box;flex-direction:column;gap:.6rem;width:100%;min-width:0;display:flex}.selector-title{color:var(--muted);white-space:nowrap;font-size:.75rem;font-weight:600}.track-options-list{flex-direction:column;gap:.4rem;max-height:160px;padding-right:.2rem;display:flex;overflow-y:auto}.track-option-item{border:1px solid var(--border);cursor:pointer;text-align:left;white-space:nowrap;background:#ffffff05;border-radius:6px;align-items:center;gap:.6rem;padding:.45rem .6rem;font-family:inherit;transition:all .2s;display:flex}.track-option-item:hover{border-color:rgba(var(--gold-rgb), .25);background:#ffffff0d}.track-option-item.active{background:rgba(var(--teal-rgb), .06);border-color:var(--teal)}.track-thumb{object-fit:cover;border-radius:4px;flex-shrink:0;width:32px;height:32px}.track-info{flex-direction:column;flex:1;justify-content:center;min-width:0;display:flex}.track-name{color:var(--text);white-space:nowrap;text-overflow:ellipsis;font-size:.78rem;font-weight:600;line-height:1.3;overflow:hidden}.track-artist{color:var(--muted);white-space:nowrap;text-overflow:ellipsis;margin-top:2px;font-size:.68rem;line-height:1.3;overflow:hidden}.modal-player-visualizer{border:1px solid var(--border);box-sizing:border-box;background:#ffffff05;border-radius:12px;flex-direction:column;justify-content:center;align-self:stretch;gap:.8rem;width:100%;min-width:0;padding:1rem;display:flex;box-shadow:0 4px 15px #00000026}.now-playing-header{white-space:nowrap;align-items:center;gap:.6rem;display:flex}.playing-label{color:var(--teal);letter-spacing:.05em;white-space:nowrap;font-size:.72rem;font-weight:700}.equalizer-waves{align-items:flex-end;gap:2.5px;width:20px;height:14px;display:flex}.wave-bar{background-color:var(--teal);border-radius:1px;width:3px;animation:1s ease-in-out infinite bounce-equalizer;display:block}.wave-bar.bar1{height:60%;animation-delay:.1s}.wave-bar.bar2{height:30%;animation-delay:.4s}.wave-bar.bar3{height:80%;animation-delay:.2s}.wave-bar.bar4{height:50%;animation-delay:.5s}@keyframes bounce-equalizer{0%,to{transform-origin:bottom;transform:scaleY(.4)}50%{transform-origin:bottom;transform:scaleY(1)}}.playing-track-card{background:#0003;border:1px solid #ffffff08;border-radius:8px;align-items:center;gap:.8rem;padding:.6rem;display:flex;position:relative}.playing-track-thumb{object-fit:cover;border:1px solid #ffffff1a;border-radius:6px;flex-shrink:0;width:44px;height:44px}.playing-track-detail{flex:1;min-width:0}.playing-track-name{color:var(--text);white-space:nowrap;text-overflow:ellipsis;font-size:.82rem;font-weight:700;overflow:hidden}.playing-track-sub{color:var(--muted);white-space:nowrap;text-overflow:ellipsis;margin-top:.1rem;font-size:.7rem;overflow:hidden}.track-spotify-link-btn{cursor:pointer;background:#1ed76026;border:1px solid #1ed7604d;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;width:26px;height:26px;font-size:.8rem;text-decoration:none;transition:all .2s;display:flex;color:#1ed760!important}.track-spotify-link-btn:hover{background:#1ed760;transform:scale(1.05);color:#000!important}.player-instructions{color:var(--muted);text-align:center;margin-top:.2rem;font-size:.66rem;line-height:1.4}.embedded-player-placeholder{border:1px dashed var(--border);height:152px;color:var(--muted);background:#ffffff03;border-radius:12px;flex-direction:column;justify-content:center;align-items:center;gap:.8rem;font-size:.8rem;display:flex}.play-now-btn{background:var(--surface);border:1px solid var(--border);color:var(--teal);cursor:pointer;border-radius:20px;padding:.4rem 1rem;font-size:.76rem;font-weight:700;transition:all .2s}.play-now-btn:hover{border-color:var(--teal);background:rgba(var(--teal-rgb), .05)}.ticket-comments-section{border:1px solid var(--border);background:#ffffff03;border-radius:12px;flex-direction:column;flex-shrink:0;gap:1rem;padding:1.2rem;display:flex}.ticket-comments-section h3{color:var(--text);margin:0;font-size:1.05rem;font-weight:700}.comments-scroll-area{border:1px solid var(--border);background:#00000026;border-radius:8px;min-height:150px;max-height:250px;padding:.8rem;overflow-y:auto}.comments-status-msg,.comments-empty-state{color:var(--muted);text-align:center;padding:3rem 1rem;font-size:.82rem;font-style:italic}.comments-list{flex-direction:column;gap:.8rem;display:flex}.comment-item{align-items:flex-start;gap:.8rem;display:flex}.comment-avatar{color:#fff;text-shadow:0 1px 2px #0000004d;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;width:32px;height:32px;font-size:.85rem;font-weight:700;display:flex}.comment-bubble{background:var(--surface2);border:1px solid var(--border);border-radius:10px;flex:1;padding:.6rem .8rem;position:relative}.comment-bubble:before{content:"";border-style:solid;border-width:6px 6px 6px 0;border-color:transparent var(--border) transparent transparent;width:0;display:block;position:absolute;top:10px;left:-6px}.comment-bubble-header{justify-content:space-between;align-items:center;gap:1rem;margin-bottom:.3rem;display:flex}.comment-author{color:var(--gold);font-size:.78rem;font-weight:700}.comment-date{color:var(--muted);font-family:Noto Sans TC,PingFang TC,Microsoft JhengHei,sans-serif;font-size:.68rem}.comment-text{color:var(--text);white-space:pre-wrap;word-break:break-all;font-size:.82rem;line-height:1.5}.comment-form-panel{border-top:1px solid var(--border);flex-direction:column;gap:.6rem;padding-top:.8rem;display:flex}.comment-nickname-input{background:var(--surface);border:1px solid var(--border);width:200px;color:var(--text);border-radius:6px;outline:none;padding:.4rem .6rem;font-size:.78rem}.comment-nickname-input:focus{border-color:var(--gold)}.comment-textarea-row{gap:.6rem;display:flex}@media (width<=576px){.comment-textarea-row{flex-direction:column}}.comment-textarea{background:var(--surface);border:1px solid var(--border);color:var(--text);resize:vertical;border-radius:8px;outline:none;flex:1;min-height:52px;max-height:100px;padding:.6rem .8rem;font-size:.82rem}.comment-textarea:focus{border-color:var(--teal)}.comment-submit-btn{background:rgba(var(--accent-rgb), .12);border:1px solid rgba(var(--accent-rgb), .4);color:var(--accent);cursor:pointer;border-radius:8px;flex-shrink:0;justify-content:center;align-items:center;padding:0 1.2rem;font-size:.8rem;font-weight:700;transition:all .2s;display:flex}.comment-submit-btn:hover:not(:disabled){border-color:var(--accent);color:var(--accent);background:rgba(var(--accent-rgb), .2)}.comment-submit-btn:disabled{opacity:.6;cursor:not-allowed}.profile-board-container{max-width:1200px;margin:0 auto;padding:2rem 1.5rem 6rem;animation:.5s cubic-bezier(.4,0,.2,1) fadeInBoard}.profile-header-actions{border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;margin-bottom:2rem;padding-bottom:1rem;display:flex}.profile-back-btn{background:rgba(var(--accent-rgb), .12);border:1px solid rgba(var(--accent-rgb), .4);color:var(--accent);cursor:pointer;letter-spacing:.05em;border-radius:20px;padding:.55rem 1.2rem;font-size:.82rem;font-weight:700;transition:all .2s}.profile-back-btn:hover{border-color:var(--accent);color:var(--accent);background:rgba(var(--accent-rgb), .2)}.profile-logout-btn{color:#ff5a5f;cursor:pointer;background:#ff5a5f14;border:1px solid #ff5a5f4d;border-radius:20px;padding:.5rem 1.1rem;font-size:.8rem;font-weight:600;transition:all .2s}.profile-logout-btn:hover{background:#ff5a5f26;border-color:#ff5a5f}.profile-layout-grid{grid-template-columns:320px 1fr;gap:2rem;display:grid}@media (width<=992px){.profile-layout-grid{grid-template-columns:minmax(0,1fr)}}.profile-sidebar-card{background:rgba(var(--surface-rgb), .8);border:1px solid var(--border);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border-radius:16px;flex-direction:column;align-self:start;align-items:center;min-width:0;padding:2rem 1.5rem;display:flex;box-shadow:0 4px 25px #0003}.profile-card-header{border-bottom:1px solid var(--border);flex-direction:column;align-items:center;width:100%;margin-bottom:1.5rem;padding-bottom:1.5rem;display:flex}.profile-avatar-large{color:#fff;text-shadow:0 2px 4px #0006;border:3px solid #ffffff1a;border-radius:50%;justify-content:center;align-items:center;width:90px;height:90px;margin-bottom:1.2rem;font-size:2.2rem;font-weight:800;display:flex;box-shadow:0 4px 15px #0000004d}.nickname-display-row{align-items:center;gap:.5rem;min-width:0;max-width:100%;margin-bottom:.5rem;display:flex}.nickname-display-row h2{color:var(--text);text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;margin:0;font-size:1.4rem;font-weight:800;overflow:hidden}.edit-name-trigger{cursor:pointer;opacity:.6;color:var(--text);background:0 0;border:none;flex-shrink:0;padding:.2rem;font-size:1rem;transition:opacity .2s}.edit-name-trigger:hover{opacity:1}.edit-nickname-row{justify-content:center;align-items:center;gap:.4rem;width:100%;display:flex}.edit-nickname-row input{background:var(--surface);border:1px solid var(--border);min-width:0;color:var(--text);text-align:center;border-radius:6px;outline:none;flex:1;padding:.4rem .6rem;font-size:.9rem}.edit-nickname-row input:focus{border-color:var(--gold)}.save-name-btn{background:var(--teal);color:#000;cursor:pointer;white-space:nowrap;border:none;border-radius:6px;flex-shrink:0;padding:.4rem .75rem;font-size:.76rem;font-weight:700}.cancel-name-btn{border:1px solid var(--border);color:var(--muted);cursor:pointer;white-space:nowrap;background:0 0;border-radius:6px;flex-shrink:0;padding:.4rem .75rem;font-size:.76rem}.profile-email-badge{color:var(--muted);text-overflow:ellipsis;white-space:nowrap;box-sizing:border-box;background:#ffffff0a;border:1px solid #ffffff05;border-radius:20px;max-width:100%;margin:0;padding:.25rem .6rem;font-size:.78rem;display:inline-block;overflow:hidden}.profile-stats-card-list{flex-direction:column;gap:1rem;width:100%;display:flex}.profile-stat-box{background:#ffffff05;border:1px solid #ffffff08;border-radius:10px;align-items:center;gap:1rem;min-width:0;padding:.9rem 1.2rem;transition:all .25s;display:flex}.profile-stat-box:hover{border-color:rgba(var(--gold-rgb), .15);background:#ffffff0a;transform:translate(3px)}.profile-stat-box .stat-icon{flex-shrink:0;font-size:1.5rem}.stat-content{flex:1;min-width:0}.stat-value{color:var(--text);white-space:nowrap;text-overflow:ellipsis;font-size:1.1rem;font-weight:800;line-height:1.2;overflow:hidden}.stat-label{color:var(--muted);margin-top:.1rem;font-size:.72rem;font-weight:600}.profile-main-content{flex-direction:column;gap:2rem;min-width:0;display:flex}.profile-content-section{background:rgba(var(--surface-rgb), .6);border:1px solid var(--border);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border-radius:16px;padding:1.6rem;box-shadow:0 4px 20px #00000026}.profile-content-section h3{color:var(--text);border-left:4px solid var(--gold);margin-top:0;margin-bottom:1.2rem;padding-left:.6rem;font-size:1.15rem;font-weight:800}.section-header-row{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:1rem;margin-bottom:1.2rem;display:flex}.section-header-row h3{margin-bottom:0}.profile-search-input{background:var(--surface);border:1px solid var(--border);width:240px;color:var(--text);border-radius:8px;outline:none;padding:.5rem .8rem;font-size:.8rem;transition:border-color .2s}.profile-search-input:focus{border-color:var(--teal)}.profile-concert-table-wrapper{border:1px solid var(--border);background:#0000001a;border-radius:8px;max-height:320px;overflow:auto}.profile-concert-table{border-collapse:collapse;text-align:left;table-layout:fixed;width:100%;min-width:600px;font-size:.85rem}.profile-concert-table th,.profile-concert-table td{border-bottom:1px solid var(--border);text-overflow:ellipsis;padding:.8rem .6rem;overflow:hidden}.profile-concert-table th{background:var(--surface2);color:var(--muted);z-index:1;font-size:.78rem;font-weight:700;position:sticky;top:0}.profile-concert-table th:first-child,.profile-concert-table td:first-child{white-space:nowrap;width:100px}.profile-concert-table th:nth-child(2),.profile-concert-table td:nth-child(2){white-space:normal;word-break:break-all;width:180px}.profile-concert-table th:nth-child(3),.profile-concert-table td:nth-child(3){white-space:nowrap;width:100px}.profile-concert-table th:nth-child(4),.profile-concert-table td:nth-child(4){white-space:normal;word-break:break-all;width:160px}.profile-concert-table th:nth-child(5),.profile-concert-table td:nth-child(5){white-space:nowrap;text-align:center;width:60px}.profile-concert-table tr:hover{background:#ffffff04}.profile-concert-table td.bold-text{color:var(--gold);font-weight:700}.profile-concert-table td.mono-text{font-family:Noto Sans TC,PingFang TC,Microsoft JhengHei,sans-serif;font-size:.8rem}.profile-table-view-btn{background:var(--surface);border:1px solid var(--border);color:var(--text);cursor:pointer;border-radius:4px;padding:.25rem .6rem;font-size:.74rem;transition:all .2s}.profile-table-view-btn:hover{border-color:var(--teal);color:var(--teal);background:rgba(var(--teal-rgb), .05)}.profile-empty-state{color:var(--muted);text-align:center;padding:4rem 1rem;font-size:.82rem;font-style:italic}.profile-reviews-wrapper{border:1px solid var(--border);background:#0000001a;border-radius:8px;max-height:280px;padding:.8rem;overflow-y:auto}.profile-reviews-grid{grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:.8rem;display:grid}.profile-review-card{border:1px solid var(--border);background:#ffffff05;border-radius:10px;flex-direction:column;gap:.4rem;padding:.9rem;transition:all .2s;display:flex}.profile-review-card:hover{border-color:rgba(var(--teal-rgb), .25);background:rgba(var(--teal-rgb), .01);transform:translateY(-1px)}.review-card-header{justify-content:space-between;align-items:center;gap:.5rem;display:flex}.review-card-header h4{color:var(--text);white-space:nowrap;text-overflow:ellipsis;margin:0;font-size:.88rem;font-weight:700;overflow:hidden}.review-card-likes{color:#ff5a5f;background:#ff5a5f14;border-radius:4px;padding:.15rem .4rem;font-family:Noto Sans TC,PingFang TC,Microsoft JhengHei,sans-serif;font-size:.72rem}.review-card-sub{color:var(--muted);white-space:nowrap;text-overflow:ellipsis;margin:0;font-size:.76rem;overflow:hidden}.review-card-footer{color:var(--muted);border-top:1px dashed #ffffff0d;justify-content:space-between;align-items:center;margin-top:.3rem;padding-top:.4rem;font-size:.68rem;display:flex}.transit-tabs{background:var(--surface2);border:1px solid var(--border);scrollbar-width:none;border-radius:8px;gap:.2rem;margin-bottom:.8rem;padding:.2rem;display:flex;overflow-x:auto}.transit-tabs::-webkit-scrollbar{display:none}.transit-tab-btn{color:var(--muted);cursor:pointer;white-space:nowrap;background:0 0;border:none;border-radius:6px;flex:1;padding:.45rem .2rem;font-family:inherit;font-size:.72rem;font-weight:600;transition:all .2s}.transit-tab-btn:hover{color:var(--text);background:#ffffff05}.transit-tab-btn.active{background:var(--surface);color:var(--gold);box-shadow:0 2px 6px #00000026}.transit-tab-btn:disabled{opacity:.4;cursor:not-allowed}.transit-tab-btn:disabled:hover{color:var(--muted);background:0 0}.transit-tab-content{animation:.3s ease-out fadeInBoard}.metro-headway-wrapper{border:1px solid var(--border);background:#ffffff03;border-radius:10px;padding:1rem}.metro-sub-title{color:var(--gold);border-bottom:1px solid rgba(var(--gold-rgb), .1);margin-bottom:.6rem;padding-bottom:.3rem;font-size:.82rem;font-weight:700}.metro-freq-table{flex-direction:column;gap:.5rem;display:flex}.metro-freq-row{background:#ffffff05;border:1px solid #ffffff05;border-radius:6px;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.5rem;padding:.5rem .8rem;display:flex}.metro-line-name{color:var(--text);font-size:.78rem;font-weight:700}.metro-freq-details{color:var(--muted);flex-wrap:wrap;gap:.8rem;font-size:.72rem;display:flex}.metro-freq-details strong{color:var(--text)}.train-query-form{border:1px solid var(--border);background:#ffffff05;border-radius:10px;flex-direction:column;gap:.6rem;margin-bottom:.8rem;padding:.8rem;display:flex}.train-type-row{gap:.4rem;display:flex}.train-type-btn{background:var(--surface2);border:1px solid var(--border);color:var(--muted);cursor:pointer;border-radius:6px;flex:1;padding:.4rem;font-size:.74rem;font-weight:600;transition:all .2s}.train-type-btn.active{border-color:var(--gold);color:var(--gold);background:rgba(var(--gold-rgb), .05)}.train-station-selects{grid-template-columns:1fr 1fr;gap:.6rem;display:grid}.station-select-group{flex-direction:column;gap:.2rem;display:flex}.station-select-group label{color:var(--muted);font-size:.68rem;font-weight:600}.train-results-board{border:1px solid var(--border);background:#00000026;border-radius:10px;overflow:hidden}.train-board-header{background:var(--surface2);color:var(--muted);border-bottom:1px solid var(--border);grid-template-columns:65px 50px 50px 50px 1fr;padding:.6rem .8rem;font-size:.72rem;font-weight:700;display:grid}.train-board-rows{max-height:240px;overflow-y:auto}.train-board-row{border-bottom:1px solid #ffffff05;grid-template-columns:65px 50px 50px 50px 1fr;align-items:center;padding:.6rem .8rem;font-size:.76rem;display:grid}.train-board-row:hover{background:#ffffff04}.train-board-row.train-departed{opacity:.45}.train-board-row.express .train-no{color:#ff5a5f;font-weight:700}.train-no{color:var(--text);font-family:Noto Sans TC,PingFang TC,Microsoft JhengHei,sans-serif;font-weight:600}.train-time-dep,.train-time-arr{color:var(--text);font-family:Noto Sans TC,PingFang TC,Microsoft JhengHei,sans-serif;font-weight:700}.train-time-dep{color:var(--gold)}.train-dur-info{justify-content:space-between;align-items:center;gap:.4rem;padding-left:.5rem;display:flex}.train-dur{color:var(--muted);white-space:nowrap;flex-shrink:0;font-size:.7rem}.train-status-badge{color:var(--muted);border:1px solid var(--border);white-space:nowrap;background:#ffffff0a;border-radius:4px;flex-shrink:0;padding:.1rem .35rem;font-size:.66rem;font-weight:600}.train-status-badge.status-ontime{border-color:rgba(var(--teal-rgb), .25);color:var(--teal);background:rgba(var(--teal-rgb), .05)}.train-status-badge.status-delayed{color:#ff5a5f;background:#ff5a5f0d;border-color:#ff5a5f40}.train-type-badge{text-align:center;white-space:nowrap;text-overflow:ellipsis;border-radius:4px;width:fit-content;max-width:80px;padding:.15rem .35rem;font-size:.65rem;font-weight:700;display:inline-block;overflow:hidden}.train-type-badge.type-直達{background:rgba(var(--gold-rgb), .15);color:var(--gold);border:1px solid rgba(var(--gold-rgb), .3)}.train-type-badge.type-站站停{color:var(--muted);background:#ffffff0f;border:1px solid #ffffff1f}.train-type-badge.type-自強{color:#ff5a5f;background:#ff5a5f26;border:1px solid #ff5a5f4d}.train-type-badge.type-普悠瑪,.train-type-badge.type-太魯閣{color:#ef476f;background:#ef476f26;border:1px solid #ef476f4d}.train-type-badge.type-莒光{color:#f4a261;background:#f4a26126;border:1px solid #f4a2614d}.train-type-badge.type-區間{background:rgba(var(--teal-rgb), .15);color:var(--teal);border:1px solid rgba(var(--teal-rgb), .3)}.train-type-badge.type-區間快{color:#118ab2;background:#118ab226;border:1px solid #118ab24d}.tra-station-grid{flex-direction:column;gap:.55rem;padding:.6rem 0;display:flex}.tra-region-group{align-items:flex-start;gap:.5rem;display:flex}.tra-region-label{color:var(--teal);white-space:nowrap;flex-shrink:0;min-width:52px;padding-top:.3rem;font-size:.7rem;font-weight:700}.tra-station-pills{flex-wrap:wrap;gap:.3rem;display:flex}.tra-pill{border:1px solid var(--border);color:var(--text);cursor:pointer;white-space:nowrap;background:#ffffff08;border-radius:5px;padding:.22rem .5rem;font-size:.68rem;font-weight:500;transition:all .2s}.tra-pill:hover{background:rgba(var(--teal-rgb), .1);border-color:rgba(var(--teal-rgb), .4);color:var(--teal)}.tra-pill.active{background:rgba(var(--teal-rgb), .2);border-color:var(--teal);color:var(--teal);box-shadow:0 0 6px rgba(var(--teal-rgb), .25);font-weight:700}.bus-query-form{border:1px solid var(--border);background:#ffffff05;border-radius:10px;flex-direction:column;align-items:stretch;gap:.6rem;margin-bottom:.8rem;padding:.8rem;display:flex}.bus-county-select{background:var(--surface2);border:1px solid var(--border);width:100%;color:var(--text);cursor:pointer;border-radius:6px;outline:none;padding:.5rem;font-size:.78rem}.bus-search-row{flex:1;gap:.4rem;display:flex}.bus-search-input{background:var(--surface);border:1px solid var(--border);min-width:0;color:var(--text);border-radius:6px;outline:none;flex:1;padding:.5rem .8rem;font-size:.8rem}.bus-search-input:focus{border-color:var(--teal)}.bus-search-btn{background:var(--teal);color:#000;cursor:pointer;white-space:nowrap;border:none;border-radius:6px;flex-shrink:0;justify-content:center;align-items:center;padding:.5rem 1rem;font-size:.78rem;font-weight:700;display:inline-flex}.bus-route-header-info{border:1px solid var(--border);background:#ffffff05;border-radius:8px;margin-bottom:.6rem;padding:.6rem .8rem}.bus-route-title{color:var(--text);font-size:.82rem;font-weight:700}.bus-direction-row{justify-content:space-between;align-items:center;margin-top:.4rem;display:flex}.bus-direction-label{color:var(--muted);font-size:.76rem}.bus-direction-label strong{color:var(--teal)}.bus-direction-toggle-btn{border:1px solid var(--border);color:var(--text);cursor:pointer;background:#ffffff0d;border-radius:4px;padding:.25rem .6rem;font-size:.72rem;transition:all .2s}.bus-direction-toggle-btn:hover{border-color:var(--teal);color:var(--teal);background:#ffffff1a}.bus-stops-board{border:1px solid var(--border);background:#00000026;border-radius:10px;max-height:250px;padding:.8rem;overflow-y:auto}.bus-stops-loading,.bus-stops-empty{color:var(--muted);text-align:center;padding:3rem 1rem;font-size:.78rem;font-style:italic}.bus-stops-list{flex-direction:column;gap:.5rem;display:flex}.bus-stop-item{background:#ffffff03;border:1px solid #ffffff03;border-radius:6px;align-items:center;gap:1rem;padding:.4rem .6rem;display:flex}.bus-stop-item:hover{background:#ffffff05}.bus-stop-eta{text-align:center;white-space:nowrap;border-radius:4px;width:90px;padding:.25rem .4rem;font-size:.72rem;font-weight:700}.status-approaching{color:#ff5a5f;background:#ff5a5f1f;border:1px solid #ff5a5f40;animation:2s infinite pulse-red-badge}.status-soon{background:rgba(var(--gold-rgb), .12);border:1px solid rgba(var(--gold-rgb), .25);color:var(--gold)}.status-ok{background:rgba(var(--teal-rgb), .12);border:1px solid rgba(var(--teal-rgb), .25);color:var(--teal)}.status-offline{border:1px solid var(--border);color:var(--muted);background:#ffffff0a}@keyframes pulse-red-badge{0%,to{box-shadow:0 0 #ff5a5f33}50%{box-shadow:0 0 8px 1px #ff5a5f26}}.bus-stop-name{color:var(--text);font-size:.78rem;font-weight:600}@media (width<=768px){.profile-board-container{box-sizing:border-box!important;width:100%!important;padding:1rem .8rem 5rem!important;overflow:hidden!important}.profile-layout-grid{grid-template-columns:minmax(0,1fr)!important;gap:1.2rem!important;width:100%!important}.profile-content-section{box-sizing:border-box!important;border-radius:12px!important;width:100%!important;padding:1.2rem!important}.profile-concert-table-wrapper{overflow-x:auto!important}.profile-concert-table{min-width:550px}.profile-reviews-grid{grid-template-columns:1fr!important}.profile-header-actions{flex-wrap:wrap!important;gap:.5rem!important;margin-bottom:1.2rem!important;padding-bottom:.8rem!important}.profile-back-btn{padding:.45rem 1rem!important;font-size:.78rem!important}.profile-logout-btn{padding:.45rem .9rem!important;font-size:.75rem!important}.profile-sidebar-card{background:rgba(var(--surface-rgb), .95)!important;box-sizing:border-box!important;border-radius:12px!important;width:100%!important;min-width:0!important;padding:1.2rem 1rem!important}.profile-main-content{box-sizing:border-box!important;width:100%!important;min-width:0!important}.profile-card-header{text-align:left!important;border-bottom:1px solid var(--border)!important;grid-template-rows:auto auto auto!important;grid-template-columns:auto minmax(0,1fr)!important;place-items:center start!important;gap:.25rem 1rem!important;margin-bottom:1rem!important;padding-bottom:1rem!important;display:grid!important}.profile-avatar-large{grid-area:1/1/span 2!important;align-self:center!important;width:56px!important;height:56px!important;margin-bottom:0!important;font-size:1.4rem!important}.nickname-display-row,.edit-nickname-row{grid-area:1/2!important;align-items:center!important;gap:.5rem!important;width:100%!important;min-width:0!important;margin-bottom:0!important;display:flex!important;overflow:hidden!important}.nickname-display-row h2{text-overflow:ellipsis!important;white-space:nowrap!important;flex:1!important;min-width:0!important;margin:0!important;font-size:1.15rem!important;overflow:hidden!important}.profile-email-badge{text-overflow:ellipsis!important;white-space:nowrap!important;box-sizing:border-box!important;grid-area:2/2!important;align-items:center!important;max-width:100%!important;margin:0!important;padding:.25rem .6rem!important;font-size:.72rem!important;display:inline-flex!important;overflow:hidden!important}.profile-email-badge .badge-text{text-overflow:ellipsis!important;white-space:nowrap!important;min-width:0!important;overflow:hidden!important}.profile-theme-music-box{box-sizing:border-box!important;grid-area:3/1/auto/span 2!important;width:100%!important;margin-top:.75rem!important}.edit-nickname-row input{background:var(--surface)!important;border:1px solid var(--border)!important;max-width:110px!important;height:28px!important;color:var(--text)!important;border-radius:4px!important;padding:.3rem .5rem!important;font-size:.8rem!important}.edit-nickname-row button{border-radius:4px!important;height:28px!important;padding:.3rem .6rem!important;font-size:.75rem!important}.profile-stats-card-list{grid-template-columns:minmax(0,1fr) minmax(0,1fr)!important;gap:.6rem!important;width:100%!important;display:grid!important}.profile-stat-box{gap:.5rem!important;padding:.6rem .8rem!important}.profile-stat-box .stat-icon{font-size:1.2rem!important}.stat-value{font-size:.85rem!important}.stat-label{font-size:.62rem!important}.sidebar{padding-bottom:calc(var(--bottom-offset) + 20px)!important}.profile-board-container,.share-board-container{padding-bottom:calc(var(--bottom-offset) + 30px)!important}.music-bar{z-index:280!important;bottom:60px!important}.music-bar-toggle{display:none!important}.map-legend{bottom:calc(var(--bottom-offset) + 12px)!important}.all-concerts-btn{bottom:calc(var(--bottom-offset) + 70px)!important}.map-zoom-control.vertical{bottom:calc(var(--bottom-offset) + 110px)!important}.mobile-bottom-nav{border-top:1px solid var(--border);z-index:295;height:60px;padding-bottom:env(safe-area-inset-bottom);justify-content:space-around;align-items:center;display:flex;position:fixed;bottom:0;left:0;right:0;box-shadow:0 -4px 20px #00000059;background:var(--surface)!important}[data-theme=light] .mobile-bottom-nav{border-top-color:var(--border);background:var(--bg)!important}.bottom-nav-item{height:100%;color:var(--muted);cursor:pointer;z-index:2;background:0 0;border:none;flex-direction:column;flex:1;justify-content:center;align-items:center;padding:6px 0;text-decoration:none;transition:all .2s cubic-bezier(.4,0,.2,1);display:flex;position:relative}.bottom-nav-item:active{transform:scale(.92)}.bottom-nav-item .icon{margin-bottom:0;font-size:1.35rem;transition:transform .2s;display:inline-block}.bottom-nav-item.active .icon{transform:scale(1.12)}.bottom-nav-item .label{display:none!important}.bottom-nav-item.active{color:var(--gold);text-shadow:0 0 10px rgba(var(--gold-rgb), .2)}.bottom-nav-item .badge{background:var(--accent);color:#fff;border:1.5px solid var(--surface);border-radius:8px;padding:.15rem .35rem;font-family:Noto Sans TC,PingFang TC,Microsoft JhengHei,sans-serif;font-size:.6rem;font-weight:700;line-height:1;position:absolute;top:4px;right:22%}[data-theme=light] .bottom-nav-item .badge{border-color:var(--surface)}.bottom-nav-item-record{color:var(--muted)}.bottom-nav-item-record:active{color:var(--teal)!important}.modal-overlay{align-items:flex-end!important;overflow-x:hidden!important}.modal{position:fixed;bottom:0;left:0;right:0;overflow-y:auto;box-shadow:0 -8px 32px #00000073;width:100%!important;max-width:100vw!important;max-height:85vh!important;padding:2.2rem 1.4rem calc(1.4rem + env(safe-area-inset-bottom)) 1.4rem!important;border-radius:20px 20px 0 0!important;margin:0!important;animation:.35s cubic-bezier(.16,1,.3,1) slide-up-sheet!important;overflow-x:hidden!important}.modal input,.modal select,.modal textarea{font-size:16px!important}.modal-drag-handle-container{cursor:pointer;z-index:10;touch-action:none;justify-content:center;align-items:center;height:35px;display:flex;position:absolute;top:0;left:40px;right:40px}.modal-drag-handle{background:#ffffff26;border-radius:3px;width:44px;height:5px}[data-theme=light] .modal-drag-handle{background:#0000001f}.modal-close{top:.8rem!important;right:1.2rem!important}@keyframes slide-up-sheet{0%{transform:translateY(100%)}to{transform:translateY(0)}}}.calendar-main-layout{width:100%;max-width:1200px;margin:0 auto;padding:2rem 1.5rem 6rem;animation:.5s cubic-bezier(.4,0,.2,1) fadeInBoard}.calendar-view-container{flex-direction:column;gap:1.5rem;display:flex}.calendar-header-panel{background:var(--surface);border:1px solid var(--border);-webkit-backdrop-filter:blur(10px);border-radius:16px;flex-direction:column;gap:1.2rem;padding:1.5rem;display:flex;box-shadow:0 8px 32px #0003}.calendar-title-nav{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:1rem;display:flex}.month-selector-buttons{align-items:center;gap:.8rem;display:flex}.cal-nav-btn{background:var(--surface2);border:1px solid var(--border);color:var(--text);cursor:pointer;border-radius:50%;justify-content:center;align-items:center;width:36px;height:36px;font-size:1rem;font-weight:700;transition:all .2s;display:flex}.cal-nav-btn:hover{background:var(--border);border-color:var(--muted);transform:scale(1.05)}.current-month-selects{justify-content:center;align-items:center;gap:.4rem;display:flex}.cal-year-label{color:var(--text);opacity:.85;margin-right:.2rem;font-size:1rem;font-weight:700}.cal-select{background:var(--surface2);border:1px solid var(--border);color:var(--text);cursor:pointer;text-align:center;border-radius:20px;outline:none;padding:.35rem .6rem;font-size:.95rem;font-weight:700;transition:all .2s}.cal-select:hover,.cal-select:focus{border-color:var(--gold);background:var(--surface);box-shadow:0 0 10px rgba(var(--gold-rgb), .15)}.cal-today-btn{background:var(--surface2);border:1px solid var(--border);color:var(--text);cursor:pointer;border-radius:20px;padding:.45rem 1rem;font-size:.82rem;font-weight:600;transition:all .2s}.cal-today-btn:hover{background:var(--border);border-color:var(--muted)}.view-mode-tabs{background:var(--surface2);border:1px solid var(--border);border-radius:20px;padding:4px;display:flex}.view-mode-tab{color:var(--muted);cursor:pointer;background:0 0;border:none;border-radius:16px;padding:.45rem 1.1rem;font-size:.82rem;font-weight:600;transition:all .2s}.view-mode-tab.active{background:var(--surface);color:var(--text);box-shadow:0 4px 10px #00000026}.calendar-filters-row{border-top:1px solid var(--border);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:1rem;padding-top:1.2rem;display:flex}.calendar-search-box{flex:1;align-items:center;min-width:280px;max-width:450px;display:flex;position:relative}.calendar-search-box .icon{color:var(--muted);font-size:.9rem;position:absolute;left:12px}.calendar-search-box input{background:var(--surface2);border:1px solid var(--border);width:100%;color:var(--text);border-radius:20px;padding:.55rem 1rem .55rem 2.2rem;font-size:.85rem;transition:all .3s}.calendar-search-box input:focus{border-color:var(--gold);background:var(--surface);box-shadow:0 0 12px rgba(var(--gold-rgb), .15);outline:none}.clear-search-btn{color:var(--muted);cursor:pointer;background:0 0;border:none;font-size:.8rem;position:absolute;right:12px}.clear-search-btn:hover{color:var(--text)}.event-filter-buttons{gap:.5rem;display:flex}.filter-btn{background:var(--surface2);border:1px solid var(--border);color:var(--muted);cursor:pointer;border-radius:20px;padding:.45rem 1rem;font-size:.8rem;font-weight:600;transition:all .2s}.filter-btn:hover{border-color:var(--muted);color:var(--text)}.filter-btn.active{background:var(--text);border-color:var(--text);color:var(--bg)}.filter-btn.filter-ticket.active{background:var(--teal);border-color:var(--teal);color:#fff}.filter-btn.filter-record.active{background:var(--gold);border-color:var(--gold);color:var(--bg)}.calendar-grid-layout{background:var(--surface);border:1px solid var(--border);border-radius:16px;overflow:hidden;box-shadow:0 8px 32px #0003}.calendar-week-headers{background:var(--surface2);border-bottom:1px solid var(--border);grid-template-columns:repeat(7,1fr);display:grid}.week-header-cell{text-align:center;color:var(--muted);letter-spacing:.05em;padding:.8rem 0;font-size:.8rem;font-weight:700}.calendar-cells-grid{grid-template-columns:repeat(7,1fr);grid-auto-rows:minmax(85px,1fr);display:grid}.calendar-day-cell{border-right:1px solid var(--border);border-bottom:1px solid var(--border);cursor:pointer;flex-direction:column;justify-content:space-between;min-height:85px;padding:.6rem .6rem .5rem;transition:all .2s cubic-bezier(.4,0,.2,1);display:flex;position:relative}.calendar-day-cell:nth-child(7n){border-right:none}.calendar-day-cell:hover{background:var(--surface2)}.calendar-day-cell.adjacent-month{opacity:.35}.calendar-day-cell.selected{background:rgba(var(--gold-rgb), .05);box-shadow:inset 0 0 0 2px var(--gold)}.calendar-day-cell.today{background:rgba(var(--accent-rgb), .03)}.calendar-day-cell.today .day-number{background:var(--accent);color:#fff;border-radius:50%;justify-content:center;align-items:center;width:22px;height:22px;font-size:.75rem;display:flex}.day-cell-header{color:var(--text);justify-content:space-between;align-items:center;margin-bottom:.2rem;font-size:.85rem;font-weight:600;display:flex}.quick-add-event-btn{color:var(--muted);cursor:pointer;opacity:0;background:0 0;border:none;border-radius:50%;justify-content:center;align-items:center;width:18px;height:18px;font-size:.85rem;transition:all .2s;display:flex}.quick-add-event-btn:hover{background:var(--border);color:var(--gold)}.calendar-day-cell:hover .quick-add-event-btn{opacity:1}.day-cell-events-container{flex-direction:column;flex-grow:1;gap:3px;display:flex;overflow:hidden}.calendar-event-pill{text-align:left;white-space:nowrap;text-overflow:ellipsis;cursor:pointer;background:0 0;border:none;border-radius:4px;width:100%;padding:3px 6px;font-size:.72rem;font-weight:600;transition:all .15s;overflow:hidden}.calendar-event-pill:hover{transform:translate(2px)}.calendar-event-pill.personal{background:rgba(var(--accent-rgb), .12);border:1px solid rgba(var(--accent-rgb), .4);color:var(--accent)}.calendar-event-pill.personal:hover{border-color:var(--accent);background:rgba(var(--accent-rgb), .2)}.calendar-event-pill.remote{background:rgba(var(--accent-rgb), .08);border:1px solid rgba(var(--accent-rgb), .25);color:var(--text)}.calendar-event-pill.remote:hover{border-color:var(--accent);background:rgba(var(--accent-rgb), .15)}.day-cell-dots-container{justify-content:center;gap:5px;margin-top:auto;padding-bottom:4px;display:flex}.dot{border-radius:50%;width:6px;height:6px}.dot-personal{background-color:var(--gold)}.dot-remote{background-color:var(--teal)}.selected-day-details-drawer{background:var(--surface);border:1px solid var(--border);border-radius:16px;margin-top:1rem;padding:1.5rem;box-shadow:0 8px 32px #0003}.calendar-drawer-header{border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;margin-bottom:1.2rem;padding-bottom:.8rem;display:flex}.calendar-drawer-header h3{color:var(--text);white-space:nowrap;margin:0;font-size:1.15rem;font-weight:700}.calendar-drawer-header-actions{flex-shrink:0;align-items:center;gap:.8rem;display:flex}.drawer-add-event-btn{background:linear-gradient(135deg, rgba(var(--gold-rgb), .2) 0%, rgba(var(--gold-rgb), .05) 100%);border:1px solid rgba(var(--gold-rgb), .4);color:var(--gold);cursor:pointer;white-space:nowrap;border-radius:20px;padding:.45rem 1.1rem;font-size:.8rem;font-weight:700;transition:all .3s}.drawer-add-event-btn:hover{border-color:var(--gold);background:linear-gradient(135deg, rgba(var(--gold-rgb), .3) 0%, rgba(var(--gold-rgb), .1) 100%);transform:translateY(-1px)}.drawer-empty-state{text-align:center;color:var(--muted);padding:2.5rem 1rem;font-size:.85rem;font-style:italic}.drawer-cards-grid{grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:1rem;display:grid}.drawer-event-card{background:var(--surface2);border:1px solid var(--border);cursor:pointer;border-radius:12px;flex-direction:column;gap:.4rem;padding:1.1rem;transition:all .2s cubic-bezier(.4,0,.2,1);display:flex;position:relative}.drawer-event-card:hover{border-color:var(--muted);transform:translateY(-2px);box-shadow:0 6px 18px #00000026}.drawer-event-card.personal{border-left:4px solid var(--gold)}.drawer-event-card.remote{border-left:4px solid var(--teal)}.card-badge{letter-spacing:.05em;border-radius:4px;width:fit-content;padding:2px 6px;font-size:.65rem;font-weight:700}.personal .card-badge{background:rgba(var(--gold-rgb), .1);color:var(--gold)}.remote .card-badge{background:rgba(var(--teal-rgb), .1);color:var(--teal)}.drawer-event-card .event-title{color:var(--text);margin:.2rem 0 0;font-size:1.05rem;font-weight:700}.drawer-event-card .event-name{color:var(--muted);margin:0;font-size:.85rem}.drawer-event-card .event-venue,.drawer-event-card .event-seat,.drawer-event-card .event-price{color:var(--text);opacity:.9;margin:0;font-size:.8rem}.drawer-event-card .card-footer{border-top:1px solid #ffffff0d;justify-content:space-between;align-items:center;margin-top:auto;padding-top:.8rem;display:flex}.card-more-action{color:var(--muted);font-size:.75rem;font-weight:600}.drawer-event-card:hover .card-more-action{color:var(--text)}.delete-card-btn{color:var(--accent);cursor:pointer;opacity:.7;background:0 0;border:none;border-radius:4px;padding:4px;font-size:.8rem;transition:all .2s}.delete-card-btn:hover{opacity:1;background:rgba(var(--accent-rgb), .1)}.calendar-drawer-backdrop,.drawer-close-btn{display:none}.calendar-list-view{background:var(--surface);border:1px solid var(--border);border-radius:16px;padding:1.5rem;box-shadow:0 8px 32px #0003}.calendar-list-empty{text-align:center;color:var(--muted);padding:4rem 1rem;font-size:.9rem;font-style:italic}.calendar-list-timeline{flex-direction:column;gap:1rem;display:flex}.timeline-card{background:var(--surface2);border:1px solid var(--border);cursor:pointer;border-radius:12px;justify-content:space-between;align-items:center;gap:1.5rem;padding:1.2rem;transition:all .2s cubic-bezier(.4,0,.2,1);display:flex}.timeline-card:hover{border-color:var(--muted);transform:translate(4px)}.timeline-card.personal{border-left:5px solid var(--gold)}.timeline-card.remote{border-left:5px solid var(--teal)}.timeline-card.past{opacity:.6}.card-date-badge{flex-direction:column;gap:4px;min-width:110px;display:flex}.card-date-badge .date-text{color:var(--text);font-family:Noto Sans TC,PingFang TC,Microsoft JhengHei,sans-serif;font-size:.9rem;font-weight:700}.card-date-badge .status-badge{border-radius:4px;width:fit-content;padding:2px 6px;font-size:.65rem;font-weight:600}.past .status-badge{color:var(--muted);background:#ffffff0d}.timeline-card.personal:not(.past) .status-badge{background:rgba(var(--gold-rgb), .1);color:var(--gold)}.timeline-card.remote:not(.past) .status-badge{background:rgba(var(--teal-rgb), .1);color:var(--teal)}.card-main-content{flex:1;align-items:center;gap:1rem;display:flex}.card-type-icon{opacity:.8;font-size:1.5rem}.card-details{flex-direction:column;gap:.2rem;display:flex}.card-title{color:var(--text);margin:0;font-size:1.1rem;font-weight:700;line-height:1.3}.card-subtitle{color:var(--muted);margin:0;font-size:.85rem}.card-location{color:var(--text);opacity:.85;font-size:.8rem}.card-action-arrow{color:var(--muted);align-items:center;gap:1rem;font-size:.8rem;font-weight:600;display:flex}.timeline-card:hover .card-action-arrow{color:var(--text)}.venue-select-input{background:var(--surface2);border:1px solid var(--border);width:100%;color:var(--text);border-radius:8px;padding:.65rem .8rem;font-size:.85rem;transition:all .3s}.venue-select-input:focus{border-color:var(--gold);outline:none}.ticket-log-personal-btn{background:rgba(var(--accent-rgb), .12);border:1px solid rgba(var(--accent-rgb), .5);color:var(--accent);cursor:pointer;border-radius:20px;justify-content:center;align-items:center;gap:.4rem;width:100%;margin-top:.6rem;padding:.6rem 1.2rem;font-size:.82rem;font-weight:700;transition:all .3s cubic-bezier(.4,0,.2,1);display:flex;box-shadow:0 4px 15px #00000026}.ticket-log-personal-btn:hover{border-color:var(--accent);background:rgba(var(--accent-rgb), .2);box-shadow:0 6px 20px rgba(var(--accent-rgb), .25);transform:translateY(-2px)}.ticket-log-personal-btn:active{transform:translateY(0)}@media (width<=768px){.calendar-main-layout{grid-template-columns:1fr}}.view-concerts-btn{background:var(--accent);color:#fff;cursor:pointer;width:100%;height:44px;box-shadow:0 4px 15px rgba(var(--accent-rgb), .3);border:none;border-radius:10px;font-size:.85rem;font-weight:600;transition:transform .2s}@media (width<=768px){.calendar-main-layout{padding:1rem 1rem 5.5rem}.calendar-header-panel{gap:.8rem;padding:1rem}.month-selector-buttons{justify-content:space-between;gap:.3rem;width:100%}.cal-nav-btn{flex-shrink:0;width:30px;height:30px;font-size:.85rem}.current-month-selects{flex:1;justify-content:center;gap:.25rem}.cal-year-label{white-space:nowrap;margin-right:.1rem;font-size:.85rem}.cal-select{border-radius:12px;flex-shrink:1;min-width:0;padding:.25rem .4rem;font-size:.85rem}.cal-today-btn{border-radius:15px;flex-shrink:0;padding:.3rem .7rem;font-size:.75rem}.calendar-filters-row{gap:.8rem;padding-top:.8rem}.calendar-search-box{min-width:100%}.event-filter-buttons{justify-content:space-between;width:100%}.filter-btn{text-align:center;flex:1;padding:.4rem .2rem;font-size:.72rem}.calendar-cells-grid{grid-auto-rows:minmax(65px,1fr)}.calendar-day-cell{justify-content:space-between;align-items:center;min-height:65px;padding:4px}.day-cell-events-container{display:none}.day-cell-dots-container{display:flex}.calendar-day-cell.today .day-number{width:18px;height:18px;font-size:.7rem}.timeline-card{flex-direction:column;align-items:flex-start;gap:.8rem;padding:1rem}.card-date-badge{flex-direction:row;justify-content:space-between;align-items:center;width:100%}.card-action-arrow{border-top:1px solid #ffffff0d;justify-content:space-between;width:100%;margin-top:.2rem;padding-top:.6rem}.drawer-cards-grid{grid-template-columns:1fr}.custom-venue-row{flex-direction:column;gap:.5rem!important}.calendar-drawer-backdrop{-webkit-backdrop-filter:blur(4px);z-index:1005;background:#0009;animation:.25s ease-out fadeInBackdrop;display:block;position:fixed;inset:0}@keyframes fadeInBackdrop{0%{opacity:0}to{opacity:1}}.selected-day-details-drawer{z-index:1010;background:rgba(var(--surface-rgb), .98);-webkit-backdrop-filter:blur(20px);border:1px solid var(--border);max-height:75vh;padding:1.2rem;padding-bottom:calc(5rem + env(safe-area-inset-bottom) + 1.2rem);border-radius:20px 20px 0 0;margin-top:0;transition:transform .3s cubic-bezier(.4,0,.2,1);position:fixed;bottom:0;left:0;right:0;overflow-y:auto;transform:translateY(100%);box-shadow:0 -10px 40px #0006}.selected-day-details-drawer.open{transform:translateY(0)}.drawer-close-btn{background:var(--surface2);border:1px solid var(--border);color:var(--text);cursor:pointer;border-radius:50%;justify-content:center;align-items:center;width:32px;height:32px;font-size:.8rem;transition:all .2s;display:flex}.drawer-close-btn:hover{background:var(--border)}.calendar-drawer-header-actions{gap:.5rem}}@media (width<=1200px){header{gap:1rem!important;padding:1.2rem 1.8rem .8rem!important}.header-right{gap:.8rem!important}}@media (width<=1080px){.header-search{max-width:220px!important;margin:0 1rem!important}}@media (width<=992px){.nav-toggle-btn:not(.login-trigger-btn):not(.logout-btn):not(.profile-trigger-btn){border:1px solid #ffffff26;justify-content:center;align-items:center;width:38px;height:38px;border-radius:50%!important;padding:0!important;font-size:0!important;display:inline-flex!important}[data-theme=light] .nav-toggle-btn:not(.login-trigger-btn):not(.logout-btn):not(.profile-trigger-btn){border-color:#0000001a}.nav-toggle-btn:not(.login-trigger-btn):not(.logout-btn):not(.profile-trigger-btn) svg{width:1.1rem;height:1.1rem;margin-right:0!important}}@media (width>=769px) and (width<=1024px){.main-layout{grid-template-columns:1fr var(--sidebar-width,420px)!important}}.main-layout.sidebar-collapsed{grid-template-columns:1fr 0!important}.main-layout.sidebar-collapsed .sidebar{visibility:hidden;display:none!important}.sidebar-collapse-toggle-btn{background:var(--surface2);border:1px solid var(--border);width:20px;height:60px;color:var(--muted);cursor:pointer;z-index:15;border-right:none;border-radius:8px 0 0 8px;outline:none;justify-content:center;align-items:center;font-family:monospace;font-size:.75rem;transition:all .3s cubic-bezier(.4,0,.2,1);display:flex;position:absolute;top:50%;right:0;transform:translateY(-50%);box-shadow:-4px 0 10px #00000040}.sidebar-collapse-toggle-btn:hover{background:var(--border);color:var(--gold);box-shadow:-4px 0 12px rgba(var(--gold-rgb), .3)}.sidebar-collapse-toggle-btn.collapsed{border-right:none;border-left:1px solid var(--border);border-radius:8px 0 0 8px;left:auto;right:0;box-shadow:-4px 0 10px #00000040}.sidebar-collapse-toggle-btn.collapsed:hover{box-shadow:-4px 0 12px rgba(var(--gold-rgb), .3)}@media (width<=360px){.bottom-nav-item .label{letter-spacing:.02em!important;font-size:.58rem!important}.bottom-nav-item .icon{font-size:1.15rem!important}.bottom-nav-item .badge{padding:.1rem .25rem!important;font-size:.55rem!important;top:2px!important;right:15%!important}}@media (width<=992px){.calendar-day-cell{min-height:80px}.calendar-event-pill{padding:2px 4px!important;font-size:.68rem!important}}.mobile-bottom-drawer{display:none}@media (width<=768px){.mobile-bottom-drawer{bottom:var(--bottom-offset);-webkit-backdrop-filter:blur(24px)saturate(190%);z-index:290;overscroll-behavior:contain;background:#0b0b0dd9;border-top:1px solid #ffffff14;border-radius:24px 24px 0 0;flex-direction:column;transition:height .3s cubic-bezier(.4,0,.2,1),bottom .3s cubic-bezier(.4,0,.2,1);display:flex;position:fixed;left:0;right:0;overflow:hidden;box-shadow:0 -12px 48px #000000b3}.mobile-bottom-drawer.dragging{transition:none!important}.venue-panel-container,.map-weather-overlay{display:none!important}.map-zoom-control.vertical{position:absolute;display:flex!important;inset:4.2rem 1rem auto auto!important;box-shadow:0 4px 16px #0000004d!important}.all-concerts-btn{z-index:10!important;box-sizing:border-box!important;border-radius:8px!important;justify-content:center!important;align-items:center!important;width:auto!important;height:36px!important;padding:0 .9rem!important;font-size:.74rem!important;font-weight:600!important;display:flex!important;position:fixed!important;inset:calc(106px + 1rem) auto auto 1rem!important;box-shadow:0 4px 12px #00000040!important}.add-concert-desktop-btn{display:none!important}.map-legend{z-index:10!important;box-sizing:border-box!important;border-radius:8px!important;flex-wrap:nowrap!important;justify-content:flex-start!important;align-items:center!important;gap:.8rem!important;width:auto!important;height:36px!important;padding:0 .9rem!important;font-size:.74rem!important;display:flex!important;position:fixed!important;inset:calc(62px + 1rem) auto auto 1rem!important;box-shadow:0 4px 12px #00000040!important}.mobile-bottom-drawer.collapsed{height:90px}.mobile-bottom-drawer.half{height:45vh}.mobile-bottom-drawer.full{height:calc(100vh - var(--bottom-offset) - 90px)}.drawer-header{cursor:pointer;touch-action:none;background:#ffffff03;border-bottom:1px solid #ffffff0d;flex-direction:column;align-items:center;padding:12px 16px;display:flex;position:relative}.drawer-header:after{content:"";background:linear-gradient(90deg, transparent, var(--teal), var(--gold), transparent);opacity:.35;height:1px;position:absolute;bottom:-1px;left:0;right:0}.drawer-handle{background:#ffffff38;border-radius:3px;width:38px;height:5px;margin-bottom:8px;transition:background .3s}.drawer-header:active .drawer-handle,.mobile-bottom-drawer.dragging .drawer-handle{background:var(--teal)}.mobile-bottom-drawer .concert-card,.mobile-bottom-drawer .weather-card,.mobile-bottom-drawer .train-results-board,.mobile-bottom-drawer .bus-stops-board{background:#ffffff05!important;border:1px solid #ffffff0f!important;border-radius:14px!important;transition:all .3s cubic-bezier(.4,0,.2,1)!important;box-shadow:0 4px 20px #00000040!important}.mobile-bottom-drawer .concert-card:hover,.mobile-bottom-drawer .weather-card:hover,.mobile-bottom-drawer .concert-card:active{border-color:rgba(var(--teal-rgb), .35)!important;box-shadow:0 4px 24px rgba(var(--teal-rgb), .15)!important;background:rgba(var(--teal-rgb), .02)!important}.drawer-title-row{justify-content:space-between;align-items:center;width:100%;display:flex}.drawer-title{color:#fff;font-size:.92rem;font-weight:700}.drawer-state-indicator{color:var(--muted);background:#ffffff0d;border-radius:10px;padding:2px 8px;font-size:.72rem}.drawer-body{flex-direction:column;flex:1;display:flex;overflow:hidden}.drawer-collapsed-preview{cursor:pointer;justify-content:center;align-items:center;height:100%;padding:12px 16px;display:flex}.search-preview-box{width:100%;height:38px;color:var(--muted);background:#ffffff0d;border:1px solid #ffffff14;border-radius:10px;align-items:center;padding:0 16px;font-size:.8rem;display:flex}.venue-preview-info{color:var(--muted);gap:12px;font-size:.8rem;display:flex}.venue-preview-info .city-tag{border:1px solid rgba(var(--teal-rgb), .25);border-radius:6px;padding:2px 8px;font-weight:600;background:rgba(var(--teal-rgb), .12)!important;color:var(--teal)!important}.drawer-scroll-content{scrollbar-width:none;overscroll-behavior:contain;-webkit-overflow-scrolling:touch;flex:1;padding:16px;overflow-y:auto}.drawer-scroll-content::-webkit-scrollbar{display:none}.drawer-explore-mode{flex-direction:column;gap:16px;display:flex}.drawer-search-bar{align-items:center;display:flex;position:relative}.drawer-search-bar input{width:100%;height:42px;color:var(--text);background:#ffffff0d;border:1px solid #ffffff1a;border-radius:10px;outline:none;padding:0 40px;font-size:.85rem}.drawer-search-bar input:focus{border-color:var(--accent)}.drawer-search-bar .search-icon{color:var(--muted);align-items:center;display:flex;position:absolute;left:14px}.drawer-search-bar .search-clear-btn{color:var(--muted);cursor:pointer;background:0 0;border:none;position:absolute;right:14px}.drawer-region-accordion{flex-direction:column;gap:8px;display:flex}.main-layout.mobile-tab-map .sidebar-collapse-toggle-btn{display:none!important}.drawer-view-list-action{justify-content:center;margin-top:16px;display:flex}.view-concerts-btn{background:var(--accent);color:#fff;cursor:pointer;width:100%;height:44px;box-shadow:0 4px 15px rgba(var(--accent-rgb), .3);border:none;border-radius:10px;font-size:.85rem;font-weight:600;transition:transform .2s}.view-concerts-btn:active{transform:scale(.98)}.drawer-concert-list-wrapper{flex-direction:column;gap:16px;display:flex}.drawer-venue-detail .weather-widget{box-shadow:none!important;background:0 0!important;border:none!important;padding:0!important}.drawer-section{border-bottom:1px solid #ffffff0d;margin-bottom:16px;padding-bottom:16px}.drawer-section.transit-section{border-bottom:none;margin-bottom:0;padding-bottom:0}.music-bar{z-index:280!important;bottom:60px!important}.music-bar:not(.visible){transform:translateY(150px)!important}.music-bar.visible{transform:translateY(0)!important}.drawer-search-bar-inline{flex:1;align-items:center;max-width:calc(100% - 70px);margin-right:12px;display:flex;position:relative}.drawer-search-bar-inline input{color:#fff;background:#ffffff0f;border:1px solid #ffffff1a;border-radius:20px;outline:none;width:100%;height:38px;padding:0 12px 0 34px;font-size:.82rem;transition:all .2s}.drawer-search-bar-inline input:focus{border-color:var(--accent);background:#ffffff1a}.drawer-search-bar-inline .search-icon{color:#fff6;align-items:center;display:flex;position:absolute;left:12px}.drawer-search-bar-inline .search-clear-btn{color:#fff6;cursor:pointer;background:0 0;border:none;align-items:center;display:flex;position:absolute;right:12px}.selected-venue-header-title{align-items:center;gap:8px;display:flex}.clear-selected-venue-btn{color:#fff;cursor:pointer;background:#ffffff14;border:none;border-radius:50%;justify-content:center;align-items:center;width:20px;height:20px;font-size:.65rem;transition:background .2s;display:flex}.clear-selected-venue-btn:hover{background:#ffffff26}.login-page-container{align-items:flex-start!important;min-height:calc(100vh - 122px)!important;padding:1.5rem 1rem!important;overflow-y:auto!important}.login-card{border-radius:16px!important;max-width:100%!important;padding:1.8rem 1.4rem!important;box-shadow:0 10px 30px #0000004d!important}.login-header h2{font-size:1.3rem!important}.login-logo{margin-bottom:.4rem!important;font-size:2rem!important}.login-form{gap:.8rem!important}.login-form .form-group input{padding:.65rem .85rem!important;font-size:.82rem!important}.login-submit-btn,.oauth-btn,.guest-login-btn{padding:.65rem!important;font-size:.82rem!important}.login-divider{margin:1rem 0!important}}.shuangbei-cluster-group{cursor:pointer;pointer-events:auto}.shuangbei-cluster-group .cluster-plate{fill:#1a1a24;stroke:var(--accent);stroke-width:2px;transition:all .3s cubic-bezier(.4,0,.2,1)}.shuangbei-cluster-group .cluster-text{fill:var(--accent);font-family:system-ui,-apple-system,sans-serif;font-size:13px;font-weight:700;transition:all .3s}.shuangbei-cluster-group .cluster-label{fill:var(--map-label,#8c7869);pointer-events:none;font-family:Noto Sans TC,PingFang TC,Microsoft JhengHei,sans-serif;font-size:10px;font-weight:700;transition:all .3s}.shuangbei-cluster-group .pulse-ring-cluster{fill:none;stroke:var(--accent);stroke-width:1.5px;opacity:.8;pointer-events:none;animation:2.5s ease-out infinite pulse-ring-cluster-anim}@keyframes pulse-ring-cluster-anim{0%{r:14px;opacity:.8}to{r:28px;opacity:0}}.shuangbei-cluster-group:hover .cluster-plate{fill:var(--accent);stroke:var(--accent);filter:drop-shadow(0 0 6px var(--accent))}.shuangbei-cluster-group:hover .cluster-text{fill:#1a1a24}.shuangbei-cluster-group:hover .cluster-label{fill:var(--accent);font-weight:700}.overlap-venues-popover{-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);background:#1a1a24f2;border:1px solid #ffffff26;border-radius:12px;width:220px;padding:10px;box-shadow:0 10px 30px #00000080,0 0 0 1px #ffffff0d}.overlap-venues-popover.position-top{margin-top:-15px;animation:.2s cubic-bezier(.16,1,.3,1) forwards fadeInScaleTop;transform:translate(-50%,-100%)}.overlap-venues-popover.position-bottom{margin-top:15px;animation:.2s cubic-bezier(.16,1,.3,1) forwards fadeInScaleBottom;transform:translate(-50%)}[data-theme=light] .overlap-venues-popover{background:#fffffff2;border:1px solid #0000001a;box-shadow:0 10px 30px #00000026,0 0 0 1px #00000005}.overlap-popover-header{border-bottom:1px solid #ffffff1a;justify-content:space-between;align-items:center;margin-bottom:8px;padding-bottom:6px;display:flex}[data-theme=light] .overlap-popover-header{border-bottom:1px solid #0000000f}.overlap-popover-header span{color:var(--accent);font-size:12px;font-weight:600}.overlap-close-btn{color:#888;cursor:pointer;background:0 0;border:none;padding:0 4px;font-size:16px}.overlap-close-btn:hover{color:var(--accent)}.overlap-venue-list{flex-direction:column;gap:6px;max-height:180px;display:flex;overflow-y:auto}.overlap-venue-item{text-align:left;cursor:pointer;background:#ffffff08;border:1px solid #ffffff0d;border-radius:8px;width:100%;padding:8px;transition:all .2s}[data-theme=light] .overlap-venue-item{background:#00000005;border:1px solid #0000000a}.overlap-venue-item:hover{background:#ff6b6b1a;border-color:#ff6b6b4d}.overlap-venue-item.active{border-color:var(--gold);background:#ffd70014}.overlap-venue-item.visited{border-left:3px solid var(--teal)}.overlap-venue-name{color:#fff;white-space:nowrap;text-overflow:ellipsis;margin-bottom:2px;font-size:12px;font-weight:600;overflow:hidden}[data-theme=light] .overlap-venue-name{color:#333}.overlap-venue-meta{color:#aaa;align-items:center;gap:4px;font-size:10px;display:flex}[data-theme=light] .overlap-venue-meta{color:#777}.dot-divider{opacity:.5}@keyframes fadeInScaleTop{0%{opacity:0;transform:translate(-50%,-100%)scale(.95)}to{opacity:1;transform:translate(-50%,-100%)scale(1)}}@keyframes fadeInScaleBottom{0%{opacity:0;transform:translate(-50%)scale(.95)}to{opacity:1;transform:translate(-50%)scale(1)}}.shuangbei-popover{background:var(--surface);border:1px solid var(--border);z-index:10;border-radius:12px;flex-direction:column;width:280px;animation:.3s cubic-bezier(.16,1,.3,1) forwards popover-fade-in;display:flex;position:absolute;top:1.5rem;right:1.5rem;overflow:hidden;box-shadow:0 10px 30px #00000059}@keyframes popover-fade-in{0%{opacity:0;transform:translateY(10px)scale(.95)}to{opacity:1;transform:translateY(0)scale(1)}}.popover-header{border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;padding:.75rem 1rem;display:flex}.popover-title{color:var(--text);font-size:.9rem;font-weight:700}.popover-close-btn{color:var(--text);cursor:pointer;opacity:.6;background:0 0;border:none;padding:0;font-size:1.25rem;line-height:1;transition:opacity .2s}.popover-close-btn:hover{opacity:1}.popover-map-container{border-bottom:1px solid var(--border);background:#00000026;justify-content:center;padding:.5rem;display:flex}.shuangbei-mini-map{background:0 0;width:100%;height:140px}.mini-map-county{fill:var(--map-land);stroke:var(--map-land-stroke);stroke-width:.8px;transition:fill .3s}.mini-venue-icon-group{cursor:pointer}.mini-venue-icon-group .mini-placeholder-dot{fill:#1a1a24;stroke:var(--accent);stroke-width:.8px;transition:all .25s}.mini-venue-icon-group.visited .mini-placeholder-dot{stroke:var(--teal)}.mini-venue-icon-group.active .mini-placeholder-dot{stroke:var(--gold);fill:var(--gold)}.mini-venue-icon-group .mini-pulse-ring{fill:none;stroke:var(--accent);stroke-width:.5px;opacity:0}.mini-venue-icon-group:hover .mini-pulse-ring{opacity:.7;animation:1.8s ease-out infinite mini-pulse-ring-anim}.mini-venue-icon-group.active .mini-pulse-ring{opacity:.8;stroke:var(--gold);animation:1.8s ease-out infinite mini-pulse-ring-anim}@keyframes mini-pulse-ring-anim{0%{r:3px;opacity:.8}to{r:9px;opacity:0}}.popover-venue-list{flex-direction:column;gap:.25rem;max-height:180px;padding:.5rem;display:flex;overflow-y:auto}.popover-venue-list::-webkit-scrollbar{width:4px}.popover-venue-list::-webkit-scrollbar-track{background:0 0}.popover-venue-list::-webkit-scrollbar-thumb{background:#ffffff1a;border-radius:2px}.popover-venue-list::-webkit-scrollbar-thumb:hover{background:#ffffff40}.popover-venue-item{cursor:pointer;border-left:2px solid #0000;border-radius:6px;padding:.5rem .75rem;transition:background .2s,border-left .2s}.popover-venue-item:hover{border-left-color:var(--accent);background:#ffffff0a}.popover-venue-item.active{background:rgba(var(--accent-rgb), .08);border-left-color:var(--gold)}.popover-venue-name-row{justify-content:space-between;align-items:center;margin-bottom:.15rem;display:flex}.popover-venue-name{color:var(--text);font-size:.82rem;font-weight:500}.visited-tick{color:var(--teal);font-size:.8rem;font-weight:700}.popover-venue-meta{color:var(--text-muted,#8c8c8c);gap:.75rem;font-size:.7rem;display:flex}.suspension-modal{background:var(--surface2);border:1px solid var(--border);border-radius:12px;width:550px;max-width:95vw;padding:1.5rem;box-shadow:0 10px 30px #00000080}.suspension-header{border-bottom:1px solid var(--border);align-items:center;gap:1rem;margin-bottom:1.25rem;padding-bottom:1rem;display:flex}.suspension-icon{color:var(--accent);font-size:2.25rem;line-height:1}.suspension-title{color:var(--accent);margin:0;font-size:1.35rem;font-weight:700}.suspension-subtitle{color:var(--muted);margin-top:.25rem;font-size:.8rem}.suspension-body{max-height:50vh;margin-bottom:1.5rem;overflow-y:auto}.suspension-section{margin-bottom:1.25rem}.suspension-section .section-title{color:var(--text);margin-bottom:.75rem;font-size:1rem;font-weight:600}.warning-list{flex-direction:column;gap:.75rem;display:flex}.suspension-card{border:1px solid #0000;border-radius:8px;padding:.85rem 1rem}.warning-card{background:rgba(var(--accent-rgb), .08);border-color:rgba(var(--accent-rgb), .25);border-left:4px solid var(--accent)}.warning-card .county-name{color:var(--accent);margin-bottom:.25rem;font-size:.95rem;font-weight:700}.warning-card .county-status{color:var(--text);font-size:.88rem;line-height:1.4}.collapsible-title{cursor:pointer;-webkit-user-select:none;user-select:none;outline:none;transition:color .2s;color:var(--muted)!important;font-size:.9rem!important}.collapsible-title:hover{color:var(--text)}.normal-list{background:#ffffff05;border-radius:8px;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:.5rem;max-height:200px;margin-top:.75rem;padding:.5rem;display:grid;overflow-y:auto}.normal-card{border:1px solid var(--border);background:#ffffff08;border-radius:6px;flex-direction:column;align-items:flex-start;gap:.25rem;padding:.5rem .75rem;display:flex}.normal-county{color:var(--text);font-size:.85rem;font-weight:600}.normal-status{color:var(--muted);text-align:left;font-size:.75rem;line-height:1.3}.suspension-actions{border-top:1px solid var(--border);justify-content:flex-end;gap:.75rem;padding-top:1rem;display:flex}.suspension-btn{cursor:pointer;border:1px solid #0000;border-radius:6px;padding:.6rem 1.2rem;font-size:.88rem;font-weight:500;transition:all .2s}.dismiss-btn{background:var(--accent);color:#fff}.dismiss-btn:hover{opacity:.9;transform:translateY(-1px)}.close-btn{border-color:var(--border);color:var(--text);background:#ffffff0d}.close-btn:hover{background:#ffffff1a}[data-theme=light] .venue-panel-container{border-color:var(--border);background:#ffffffe0;box-shadow:0 10px 40px #0000001a}[data-theme=light] .search-input-wrapper input{border-color:var(--border);color:var(--text);background:#00000008}[data-theme=light] .search-input-wrapper input:focus{background:#0000000d}[data-theme=light] .panel-toggle-btn{color:var(--text)}[data-theme=light] .panel-toggle-btn:hover{background:#0000000d}[data-theme=light] .venue-panel-content{border-top-color:var(--border)}[data-theme=light] .region-group-header{color:var(--text)}[data-theme=light] .region-group-header:hover{background:#00000005}[data-theme=light] .region-count{color:var(--muted);background:#0000000d}[data-theme=light] .region-group-list{background:#00000005}[data-theme=light] .venue-list-item{color:var(--muted)}[data-theme=light] .venue-list-item:hover{color:var(--text);background:#00000008}[data-theme=light] .venue-list-item.active{background:rgba(var(--gold-rgb), .12);color:var(--gold)}[data-theme=light] .venue-list-item.visited{color:var(--teal)}[data-theme=light] .venue-list-item.visited.active{color:var(--gold)}[data-theme=light] .map-tooltip{border-color:var(--border);background:#fffffff2;box-shadow:0 8px 32px #0000001f}[data-theme=light] .tooltip-title{color:var(--text)}[data-theme=light] .tooltip-meta{color:var(--muted)}[data-theme=light] .alert-item.weather-warning{color:#b91c1c;background:#ef44441f;border-left-color:#ef4444;font-weight:600}[data-theme=light] .alert-item.weather-sunny{background:rgba(var(--accent-rgb), .12);color:var(--text);border-left-color:var(--accent);font-weight:500}[data-theme=light] .alert-item.aqi-advice{color:var(--text);border-left-color:var(--muted);background:#0000000a}[data-theme=light] .shuangbei-cluster-group .cluster-plate{fill:var(--accent);stroke:#fff;stroke-width:1.5px;filter:drop-shadow(0 2px 6px #0000002e)}[data-theme=light] .shuangbei-cluster-group .cluster-text{fill:#fff;font-weight:800}[data-theme=light] .shuangbei-cluster-group .cluster-label{fill:var(--text);font-weight:700}[data-theme=light] .shuangbei-cluster-group:hover .cluster-plate{fill:var(--gold);stroke:#fff;filter:drop-shadow(0 0 8px var(--gold))}[data-theme=light] .shuangbei-cluster-group:hover .cluster-text{fill:#fff}[data-theme=light] .venue-icon-group .placeholder-dot{fill:var(--accent);stroke:#fff;stroke-width:1.5px;filter:drop-shadow(0 1px 4px #00000026)}[data-theme=light] .venue-icon-group.visited .placeholder-dot{fill:var(--teal);stroke:#fff}[data-theme=light] .venue-icon-group .icon-plate{fill:var(--accent);stroke:#fff;stroke-width:1.5px}[data-theme=light] .venue-icon-group .icon-symbol{fill:#fff;stroke:#fff}[data-theme=light] .venue-icon-group:hover .icon-plate{fill:var(--gold);stroke:#fff;filter:drop-shadow(0 0 6px var(--gold))}[data-theme=light] .venue-icon-group:hover .icon-symbol{fill:#fff;stroke:#fff}[data-theme=light] .mini-venue-icon-group .mini-placeholder-dot{fill:var(--accent);stroke:#fff}[data-theme=light] .map-legend{border-color:var(--border);background:#ffffffeb;box-shadow:0 4px 20px #00000014}[data-theme=light] .suspension-modal{border-color:var(--border);background:#fff;box-shadow:0 10px 40px #0000001f}[data-theme=light] .warning-card{background:rgba(var(--accent-rgb), .08);border-color:rgba(var(--accent-rgb), .25);border-left:4px solid var(--accent)}[data-theme=light] .warning-card .county-name{color:var(--accent)}[data-theme=light] .normal-card{border-color:var(--border);background:#00000005}[data-theme=light] .normal-list{background:#00000003}[data-theme=light] .mobile-bottom-drawer{border-top-color:var(--border);background:#fffffff5;box-shadow:0 -10px 40px #00000014}[data-theme=light] .drawer-header{border-bottom-color:var(--border);background:#00000003}[data-theme=light] .drawer-handle{background:#00000026}[data-theme=light] .drawer-title{color:var(--text)}[data-theme=light] .drawer-state-indicator{color:var(--muted);background:#0000000d}[data-theme=light] .search-preview-box{border-color:var(--border);color:var(--muted);background:#00000008}[data-theme=light] .shared-note-card{border-color:var(--border);background:linear-gradient(135deg,#fffffff2 0%,#f6f3ebe6 100%);box-shadow:0 10px 25px #0000000d}[data-theme=light] .shared-note-card:hover{border-color:rgba(var(--gold-rgb), .5);box-shadow:0 15px 35px rgba(var(--gold-rgb), .06)}[data-theme=light] .card-like-btn{border-color:var(--border);background:#00000005}[data-theme=light] .card-like-btn:hover{background:rgba(var(--accent-rgb), .04)}[data-theme=light] .expand-card-btn,[data-theme=light] .shared-card-footer{border-top-color:var(--border)}[data-theme=light] .transit-card{background:#00000005}[data-theme=light] .transit-card:hover{background:#0000000a}[data-theme=light] .transit-tab-btn:hover{background:#00000005}[data-theme=light] .close-btn{background:#00000008}[data-theme=light] .close-btn:hover{background:#0000000f}[data-theme=light] .board-search-bar{border-color:var(--border);background:#ffffffd9;box-shadow:0 8px 30px #0000000d}[data-theme=light] .board-search-bar .clear-search{color:var(--muted);background:#00000008}[data-theme=light] .board-search-bar .clear-search:hover{color:var(--text);background:#0000000f}[data-theme=light] .board-empty-state{background:#00000003}[data-theme=light] .login-card{border-color:var(--border);background:linear-gradient(135deg,#fffffff2 0%,#f6f3ebe6 100%);box-shadow:0 20px 50px #0000000d}[data-theme=light] .login-back-btn{border-color:var(--border);color:var(--muted);background:#00000008}[data-theme=light] .login-back-btn:hover{background:rgba(var(--accent-rgb), .08);border-color:var(--accent);color:var(--accent)}[data-theme=light] .oauth-btn{border-color:var(--border);color:var(--text);background:#00000005}[data-theme=light] .oauth-btn:hover:not(:disabled){background:#0000000d;border-color:#00000026}[data-theme=light] .login-logo{filter:drop-shadow(0 0 10px rgba(var(--gold-rgb), .25))}.detail-modal{max-width:650px!important}.detail-actions-row{border-top:1px solid #ffffff1a;gap:12px;margin-top:24px;padding-top:16px;display:flex}[data-theme=light] .detail-actions-row{border-top:1px solid #00000014}.detail-action-btn{cursor:pointer;border-radius:8px;flex:1;justify-content:center;align-items:center;gap:6px;padding:12px;font-family:inherit;font-size:14px;font-weight:600;transition:all .2s cubic-bezier(.16,1,.3,1);display:flex}.detail-action-btn.detail-edit-btn{color:var(--text);background:#ffffff14;border:1px solid #ffffff1f}.detail-action-btn.detail-edit-btn:hover{background:#ffffff26;border-color:#fff3}[data-theme=light] .detail-action-btn.detail-edit-btn{color:#333;background:#0000000a;border:1px solid #00000014}[data-theme=light] .detail-action-btn.detail-edit-btn:hover{background:#00000014;border-color:#00000026}.detail-action-btn.detail-delete-btn{color:#ef4444;background:#ef444426;border:1px solid #ef444440}.detail-action-btn.detail-delete-btn:hover{background:#ef444440;border-color:#ef444459;box-shadow:0 0 8px #ef444433}.detail-modal-header{border-bottom:1px solid var(--border);margin-bottom:1.2rem;padding-bottom:1rem}.detail-modal-title{color:var(--text);margin-top:.5rem;margin-bottom:.6rem;font-family:Noto Sans TC,PingFang TC,Microsoft JhengHei,sans-serif;font-size:1.5rem;font-weight:800;line-height:1.35}.detail-post-content{border:1px solid var(--border);background:#ffffff04;border-radius:12px;margin-bottom:2rem;padding:1.2rem 1.5rem}[data-theme=light] .detail-post-content{background:#00000003}.detail-post-author-row{color:var(--muted);border-bottom:1px dashed var(--border);justify-content:space-between;align-items:center;margin-bottom:1rem;padding-bottom:.6rem;font-size:.82rem;display:flex}.detail-post-author-row .author{color:var(--text);font-weight:700}.detail-notes-content{color:var(--text);margin-bottom:1.2rem;font-size:.92rem;line-height:1.6}.detail-post-actions{justify-content:flex-end;display:flex}.replies-section{margin-bottom:2rem}.replies-section h3{color:var(--gold);border-bottom:2px solid var(--border);margin-bottom:1rem;padding-bottom:.4rem;font-family:Noto Sans TC,PingFang TC,Microsoft JhengHei,sans-serif;font-size:1.15rem}[data-theme=light] .replies-section h3{color:var(--gold)}.replies-list{flex-direction:column;gap:.8rem;display:flex}.replies-empty{text-align:center;color:var(--muted);border:1px dashed var(--border);background:#ffffff03;border-radius:10px;padding:2rem;font-size:.88rem;font-style:italic}.reply-card{border:1px solid var(--border);background:#ffffff05;border-radius:10px;padding:.85rem 1.1rem;transition:border-color .2s}[data-theme=light] .reply-card{background:#00000004}.reply-card:hover{border-color:rgba(var(--gold-rgb), .3)}.reply-header{color:var(--muted);border-bottom:1px dashed rgba(var(--border-rgb), .3);justify-content:space-between;align-items:center;width:100%;margin-bottom:.5rem;padding-bottom:.3rem;font-size:.76rem;display:flex}.reply-author{color:var(--text);font-weight:700}.reply-content{color:var(--text);font-size:.88rem;line-height:1.5}.reply-form-container{border-top:1px dashed var(--border);margin-top:1.5rem;padding-top:1.5rem}.reply-form-container h4{color:var(--text);margin-bottom:1rem;font-family:Noto Sans TC,PingFang TC,Microsoft JhengHei,sans-serif;font-size:1.05rem}.reply-form-container .form-group{flex-direction:column;gap:.4rem;margin-bottom:1rem;display:flex}.reply-form-container label{color:var(--muted);font-size:.78rem;font-weight:600}.reply-form-container input{background:var(--surface);border:1px solid var(--border);width:100%;color:var(--text);border-radius:8px;outline:none;padding:.6rem .8rem;font-size:.85rem}.reply-form-container input:focus{border-color:var(--gold);box-shadow:0 0 8px rgba(var(--gold-rgb), .15)}.reply-submit-btn{background:var(--gold);color:#000;cursor:pointer;border:none;border-radius:8px;width:100%;padding:.65rem;font-size:.88rem;font-weight:700;transition:all .2s}.reply-submit-btn:hover:not(:disabled){background:#ffe3a3;transform:translateY(-1px)}.reply-submit-btn:disabled{color:#888;cursor:not-allowed;background:#555}[data-theme=light] .reply-submit-btn:disabled{color:#aaa;background:#ddd}.shared-note-card{cursor:pointer}.profile-avatar-large.editable{cursor:pointer;position:relative;overflow:hidden}.profile-avatar-large.editable .avatar-overlay{color:#fff;opacity:0;pointer-events:none;background:#0009;justify-content:center;align-items:center;font-size:.72rem;font-weight:700;transition:opacity .2s;display:flex;position:absolute;inset:0}.profile-avatar-large.editable:hover .avatar-overlay{opacity:1}.profile-avatar-large .avatar-img{object-fit:cover;border-radius:50%;width:100%;height:100%}.profile-avatar-large .avatar-emoji{justify-content:center;align-items:center;font-size:2.4rem;line-height:1;display:flex}.avatar-selection-grid{grid-template-columns:repeat(4,1fr);gap:.75rem;margin-top:.5rem;margin-bottom:1.2rem;display:grid}.avatar-option-btn{background:var(--surface);border:1px solid var(--border);cursor:pointer;border-radius:12px;justify-content:center;align-items:center;padding:.5rem;font-size:1.8rem;transition:all .2s cubic-bezier(.4,0,.2,1);display:flex}.avatar-option-btn:hover{border-color:var(--gold);background:rgba(var(--gold-rgb), .12);transform:translateY(-2px)}.avatar-upload-row{border-top:1px dashed var(--border);flex-direction:column;gap:.6rem;margin-top:1rem;padding-top:1rem;display:flex}.avatar-upload-btn,.avatar-reset-btn{cursor:pointer;text-align:center;border-radius:8px;width:100%;padding:.65rem;font-size:.85rem;font-weight:700;transition:all .2s}.avatar-upload-btn{background:var(--gold);color:#000;border:none}.avatar-upload-btn:hover{background:#ffe3a3;transform:translateY(-1px)}.avatar-reset-btn{background:var(--surface2);border:1px solid var(--border);color:var(--muted)}.avatar-reset-btn:hover{color:#ff4d4f;background:#ff4d4f0d;border-color:#ff4d4f}.taiwan-map-wrapper:has(.shuangbei-popover){z-index:12!important}@media (width<=768px){.shuangbei-popover{z-index:15!important;width:calc(100% - 2rem)!important;max-width:320px!important;margin:0!important;top:5.5rem!important;left:50%!important;right:auto!important;transform:translate(-50%)!important}}@media (width>=1025px) and (width<=1440px){.main-layout{grid-template-columns:1fr 400px!important}}@media (width>=769px) and (width<=1200px){header{gap:1rem!important;padding:1.2rem 1.5rem .8rem!important}.logo-text h1{font-size:1.15rem!important}.logo-text span{letter-spacing:.1em!important;white-space:nowrap!important;font-size:.6rem!important}.stats-bar{gap:.8rem!important;padding:.35rem 1rem!important}.stat-box{gap:.3rem!important}.stat-num{font-size:.95rem!important}.stat-label{font-size:.55rem!important}.nav-toggle-btn{padding:.45rem .8rem!important;font-size:.8rem!important}}body{background-color:var(--bg)}header{background:var(--bg)!important;border-bottom:1px solid var(--border)!important;box-shadow:none!important;-webkit-backdrop-filter:none!important;backdrop-filter:none!important}.stats-bar{box-shadow:none!important;background:0 0!important;border:none!important}.main-layout{border-top:none!important}.map-container,.map-bg{background:var(--bg)!important}.concert-card,.shared-note-card,.profile-sidebar-card,.profile-review-card,.reply-card,.login-card,.normal-card,.detail-post-content{background:var(--surface2)!important;border:1px solid var(--border)!important;box-shadow:none!important;-webkit-backdrop-filter:none!important;backdrop-filter:none!important;border-radius:8px!important;transition:border-color .2s,background-color .2s!important}[data-theme=light] .concert-card,[data-theme=light] .shared-note-card,[data-theme=light] .profile-sidebar-card,[data-theme=light] .profile-review-card,[data-theme=light] .reply-card,[data-theme=light] .login-card,[data-theme=light] .normal-card,[data-theme=light] .detail-post-content{background:var(--surface2)!important;box-shadow:none!important}.concert-card:hover,.shared-note-card:hover,.profile-review-card:hover,.reply-card:hover{border-color:var(--gold)!important;box-shadow:none!important;transform:none!important}.concert-card:hover{border-color:var(--teal)!important}.concert-card:before{display:none!important}.modal,.detail-modal,.publish-modal,.mobile-bottom-drawer,.shuangbei-popover,.map-weather-overlay{background:var(--surface2)!important;border:1px solid var(--border)!important;-webkit-backdrop-filter:none!important;backdrop-filter:none!important;border-radius:12px!important;box-shadow:0 4px 20px #00000026!important}[data-theme=light] .modal,[data-theme=light] .detail-modal,[data-theme=light] .publish-modal,[data-theme=light] .mobile-bottom-drawer,[data-theme=light] .shuangbei-popover,[data-theme=light] .map-weather-overlay{background:var(--surface2)!important;box-shadow:0 4px 20px #0000000d!important}.map-zoom-control.vertical{background:var(--surface2)!important;border:1px solid var(--border)!important;box-shadow:none!important;border-radius:8px!important}.map-zoom-control.vertical:hover{border-color:var(--border)!important;box-shadow:none!important}.reply-submit-btn,.publish-submit-btn,.publish-cancel-btn,.avatar-upload-btn,.avatar-reset-btn,.oauth-btn,.login-back-btn,.all-concerts-btn,.add-concert-desktop-btn{background:var(--surface)!important;border:1px solid var(--border)!important;color:var(--text)!important;box-shadow:none!important;text-shadow:none!important;border-radius:6px!important;transition:all .2s!important}.nav-toggle-btn{background:rgba(var(--gold-rgb), .05)!important;border:1px solid rgba(var(--gold-rgb), .3)!important;color:var(--gold)!important;box-shadow:none!important;text-shadow:none!important;border-radius:20px!important;transition:all .2s!important}.nav-toggle-btn:hover{background:rgba(var(--teal-rgb), .06)!important;border-color:var(--teal)!important;color:var(--teal)!important}.nav-toggle-btn.active{background:rgba(var(--teal-rgb), .08)!important;border-color:var(--teal)!important;color:var(--teal)!important}.profile-back-btn{background:rgba(var(--teal-rgb), .05)!important;border:1px solid rgba(var(--teal-rgb), .3)!important;color:var(--teal)!important;box-shadow:none!important;border-radius:20px!important}.profile-back-btn:hover{background:rgba(var(--teal-rgb), .1)!important}.profile-logout-btn{color:#ff5a5f!important;box-shadow:none!important;background:#ff5a5f0d!important;border:1px solid #ff5a5f59!important;border-radius:20px!important}.profile-logout-btn:hover{background:#ff5a5f1a!important}.reply-submit-btn,.publish-submit-btn,.avatar-upload-btn,.save-name-btn{background:var(--gold)!important;color:#000!important;border:none!important;font-weight:700!important}.reply-submit-btn:hover:not(:disabled),.publish-submit-btn:hover,.avatar-upload-btn:hover,.save-name-btn:hover{box-shadow:none!important;background:#ffe3a3!important;transform:none!important}.card-delete-btn:hover,.avatar-reset-btn:hover{color:#ff4d4f!important;background:#ff4d4f14!important;border-color:#ff4d4f!important}.card-artist-tag{background:var(--surface)!important;border:1px solid var(--border)!important;color:var(--text)!important;border-radius:4px!important;font-weight:500!important}.shared-card-title,.detail-modal-title{text-shadow:none!important}.profile-avatar-large{box-shadow:none!important;text-shadow:none!important;border:2px solid var(--border)!important}.venue-pulse-ring,.mini-pulse-ring{box-shadow:none!important}.metro-dynamic-results{margin-top:.8rem;animation:.3s ease-out fadeInBoard}.metro-results-grid{grid-template-columns:1fr;gap:1rem;display:grid}.metro-column{border:1px solid var(--border);background:#ffffff04;border-radius:10px;flex-direction:column;gap:.8rem;padding:.8rem;display:flex}.metro-column-title-row{border-bottom:1px solid rgba(var(--gold-rgb), .1);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.4rem;padding-bottom:.4rem;display:flex}.metro-column-title{color:var(--gold);white-space:nowrap;align-items:center;gap:.4rem;font-size:.82rem;font-weight:700;display:flex}.live-pulse-dot{background-color:var(--teal);width:8px;height:8px;box-shadow:0 0 8px var(--teal);border-radius:50%;animation:1.6s infinite pulseGreen;display:inline-block;position:relative}@keyframes pulseGreen{0%{opacity:.6;transform:scale(.9)}50%{opacity:1;box-shadow:0 0 12px var(--teal);transform:scale(1.2)}to{opacity:.6;transform:scale(.9)}}.metro-toggle-times-btn{border:1px solid var(--border);color:var(--muted);cursor:pointer;white-space:nowrap;background:0 0;border-radius:4px;padding:.2rem .5rem;font-size:.68rem;transition:all .2s}.metro-toggle-times-btn:hover{border-color:var(--gold);color:var(--gold);background:rgba(var(--gold-rgb), .05)}.metro-live-list{flex-direction:column;gap:.4rem;max-height:220px;display:flex;overflow-y:auto}.metro-live-item{background:#ffffff05;border:1px solid #ffffff05;border-radius:6px;justify-content:space-between;align-items:center;padding:.4rem .6rem;display:flex}.metro-live-destination{color:var(--text);white-space:nowrap;text-overflow:ellipsis;margin-right:.5rem;font-size:.78rem;overflow:hidden}.metro-live-destination strong{color:var(--gold)}.metro-live-eta{white-space:nowrap;border-radius:4px;flex-shrink:0;padding:.15rem .45rem;font-size:.72rem;font-weight:700}.metro-live-eta.eta-approaching{background:rgba(var(--teal-rgb), .15);color:var(--teal);border:1px solid rgba(var(--teal-rgb), .3);animation:1.5s infinite flashTeal}@keyframes flashTeal{0%{opacity:.75}50%{opacity:1}to{opacity:.75}}.metro-live-eta.eta-soon{color:#f4a261;background:#f4a26126;border:1px solid #f4a2614d}.metro-live-eta.eta-normal{color:var(--text);border:1px solid var(--border);background:#ffffff0d}.metro-no-data{text-align:center;color:var(--muted);padding:2rem 0;font-size:.74rem}.metro-no-data-small{color:var(--muted);padding:.4rem;font-size:.7rem}.metro-timetables-wrapper{flex-direction:column;gap:.5rem;max-height:220px;display:flex;overflow-y:auto}.metro-timetable-group{background:#ffffff03;border:1px solid #ffffff05;border-radius:6px;padding:.35rem .5rem}.metro-timetable-dest-header{color:var(--muted);border-bottom:1px solid #ffffff08;margin-bottom:.3rem;padding-bottom:.15rem;font-size:.7rem}.metro-timetable-dest-header strong{color:var(--gold)}.metro-dest-count{color:var(--muted);margin-left:.4rem;font-size:.65rem}.metro-time-chips{flex-wrap:wrap;gap:.4rem;display:flex}.metro-time-chip{border:1px solid var(--border);color:var(--text);white-space:nowrap;background:#ffffff08;border-radius:4px;padding:.1rem .35rem;font-family:monospace;font-size:.64rem}.metro-time-chip.next-train{background:rgba(var(--gold-rgb), .15);color:var(--gold);border-color:rgba(var(--gold-rgb), .4);box-shadow:0 0 5px rgba(var(--gold-rgb), .2);font-weight:700}.train-board-rows::-webkit-scrollbar{width:6px}.metro-live-list::-webkit-scrollbar{width:6px}.metro-timetables-wrapper::-webkit-scrollbar{width:6px}.bus-stops-board::-webkit-scrollbar{width:6px}.train-board-rows::-webkit-scrollbar-track{background:#0000000d;border-radius:4px}.metro-live-list::-webkit-scrollbar-track{background:#0000000d;border-radius:4px}.metro-timetables-wrapper::-webkit-scrollbar-track{background:#0000000d;border-radius:4px}.bus-stops-board::-webkit-scrollbar-track{background:#0000000d;border-radius:4px}.train-board-rows::-webkit-scrollbar-thumb{background:#ffffff1f;border-radius:4px;transition:background .2s}.metro-live-list::-webkit-scrollbar-thumb{background:#ffffff1f;border-radius:4px;transition:background .2s}.metro-timetables-wrapper::-webkit-scrollbar-thumb{background:#ffffff1f;border-radius:4px;transition:background .2s}.bus-stops-board::-webkit-scrollbar-thumb{background:#ffffff1f;border-radius:4px;transition:background .2s}.train-board-rows::-webkit-scrollbar-thumb:hover{background:#ffffff40}.metro-live-list::-webkit-scrollbar-thumb:hover{background:#ffffff40}.metro-timetables-wrapper::-webkit-scrollbar-thumb:hover{background:#ffffff40}.bus-stops-board::-webkit-scrollbar-thumb:hover{background:#ffffff40}.guide-modal-overlay{-webkit-backdrop-filter:blur(8px)!important;background:#0a0a0fd9!important}.guide-modal-container{-webkit-backdrop-filter:blur(20px)saturate(180%)!important;backdrop-filter:blur(20px)saturate(180%)!important;background:#1a1a26e6!important;border:1px solid #ffffff1a!important;border-radius:16px!important;flex-direction:column!important;width:850px!important;max-width:92vw!important;max-height:85vh!important;padding:1.5rem!important;display:flex!important;overflow:hidden!important;box-shadow:0 20px 50px #0009!important}.guide-modal-close{color:var(--muted)!important;z-index:10!important;top:1rem!important;right:1rem!important}.guide-modal-close:hover{color:var(--text)!important}.guide-modal-layout{flex:1;grid-template-columns:1.1fr 1fr;align-items:stretch;gap:2rem;display:grid;overflow:hidden}.guide-modal-visual{background:#00000040;border:1px solid #ffffff0d;border-radius:12px;flex-direction:column;justify-content:space-between;padding:1rem;display:flex;overflow:hidden}.guide-visual-header{color:var(--muted);text-transform:uppercase;letter-spacing:.05em;align-items:center;gap:8px;margin-bottom:.8rem;font-size:.75rem;font-weight:600;display:flex}.guide-visual-header .sparkle-spark{color:var(--gold);animation:2s infinite alternate pulse-glow}@keyframes pulse-glow{0%{opacity:.6;filter:drop-shadow(0 0 1px var(--gold))}to{opacity:1;filter:drop-shadow(0 0 4px var(--gold))}}.guide-screenshot-frame{border:1px solid #ffffff14;border-radius:8px;flex:1;justify-content:center;align-items:center;display:flex;position:relative;overflow:hidden}.guide-modal-image{object-fit:cover;width:100%;height:100%;display:block}.guide-image-overlay{position:absolute;bottom:.8rem;right:.8rem}.guide-image-overlay .step-badge{background:rgba(var(--gold-rgb), .9);color:var(--bg);letter-spacing:.05em;border-radius:20px;padding:4px 8px;font-size:.7rem;font-weight:800;box-shadow:0 4px 10px #0000004d}.guide-modal-info{scrollbar-width:thin;flex-direction:column;justify-content:space-between;padding-right:.5rem;display:flex;overflow-y:auto}.guide-info-header{align-items:center;gap:1rem;margin-bottom:1rem;padding-right:2.2rem;display:flex}.guide-step-icon-wrapper{background:rgba(var(--gold-rgb), .12);width:48px;height:48px;color:var(--gold);border:1px solid rgba(var(--gold-rgb), .25);box-shadow:0 0 15px rgba(var(--gold-rgb), .05);border-radius:12px;flex-shrink:0;justify-content:center;align-items:center;display:flex}.guide-step-title-group h3{color:var(--text)!important;margin:0 0 2px!important;font-size:1.15rem!important;font-weight:700!important}.guide-step-subtitle{color:var(--muted);text-transform:uppercase;letter-spacing:.05em;font-size:.72rem}.guide-step-desc{color:var(--text);margin:0 0 1rem;font-size:.85rem;line-height:1.5}.guide-step-details{flex-direction:column;flex:1;gap:.8rem;margin:0 0 1.5rem;padding:0;list-style:none;display:flex}.guide-step-details li{color:var(--muted);padding-left:1.25rem;font-size:.78rem;line-height:1.45;position:relative}.guide-step-details li:before{content:"•";color:var(--gold);font-size:1.1rem;position:absolute;top:0;left:.2rem}.guide-step-details li strong{color:var(--text)}.guide-modal-nav{border-top:1px solid #ffffff14;justify-content:space-between;align-items:center;gap:1rem;margin-top:auto;padding-top:1rem;display:flex}.guide-nav-dots{gap:6px;display:flex}.guide-nav-dot{cursor:pointer;background:#fff3;border:none;border-radius:50%;width:8px;height:8px;padding:0;transition:all .2s}.guide-nav-dot:hover{background:#fff6}.guide-nav-dot.active{background:var(--gold);box-shadow:0 0 8px rgba(var(--gold-rgb), .5);transform:scale(1.2)}.guide-nav-buttons{gap:8px;display:flex}.guide-btn{cursor:pointer;border:none;border-radius:6px;padding:8px 16px;font-family:inherit;font-size:.8rem;font-weight:600;transition:all .2s}.guide-btn-primary{background:var(--gold);color:var(--bg)}.guide-btn-primary:hover{box-shadow:0 0 10px rgba(var(--gold-rgb), .3);background:#e6b800}.guide-btn-secondary{color:var(--text);background:#ffffff14;border:1px solid #ffffff1a}.guide-btn-secondary:hover{background:#ffffff26}[data-theme=light] .guide-modal-container{background:#ffffffeb!important;border-color:#0000001a!important;box-shadow:0 20px 50px #00000026!important}[data-theme=light] .guide-modal-visual{background:#00000005;border-color:#0000000d}[data-theme=light] .guide-step-icon-wrapper{background:rgba(var(--gold-rgb), .08)}[data-theme=light] .guide-nav-dot{background:#00000026}[data-theme=light] .guide-nav-dot:hover{background:#0000004d}[data-theme=light] .guide-nav-dot.active{background:var(--gold)}[data-theme=light] .guide-btn-secondary{color:var(--text);background:#0000000a;border-color:#00000014}[data-theme=light] .guide-btn-secondary:hover{background:#00000014}@media (width<=768px){.guide-modal-overlay{justify-content:center!important;align-items:center!important}.guide-modal-container{border-radius:16px!important;width:92vw!important;height:80vh!important;max-height:80vh!important;margin:0 auto!important;padding:1.2rem!important;animation:.3s cubic-bezier(.34,1.56,.64,1) scaleIn!important;position:relative!important;bottom:auto!important;left:auto!important;right:auto!important;box-shadow:0 20px 50px #0009!important}.guide-modal-layout{grid-template-rows:auto 1fr;grid-template-columns:1fr;gap:1rem;overflow-y:auto}.guide-modal-visual{padding:.5rem}.guide-visual-header{margin-bottom:.4rem}.guide-screenshot-frame{height:140px}.guide-step-details{margin-bottom:1rem}.guide-step-details li{font-size:.74rem}}.guide-step4-images{box-sizing:border-box;justify-content:center;align-items:center;gap:.8rem;width:100%;height:100%;padding:.5rem;display:flex}.guide-modal-image-step4{object-fit:contain;border:1px solid #ffffff14;border-radius:6px;max-width:48%;max-height:100%;transition:transform .2s;box-shadow:0 4px 12px #0000004d}.guide-modal-image-step4:hover{z-index:2;transform:scale(1.05)}[data-theme=light] .guide-modal-image-step4{border-color:#00000014;box-shadow:0 4px 12px #0000001a}.guide-mobile-screenshot-trigger{display:none}@media (width<=768px){.desktop-only-visual{display:none!important}.guide-mobile-screenshot-trigger{cursor:pointer;border-radius:8px;justify-content:center;align-items:center;gap:.5rem;width:100%;margin:.8rem 0;padding:.6rem 1rem;font-size:.8rem;font-weight:700;transition:all .2s;background:rgba(var(--gold-rgb), .08)!important;border:1px solid rgba(var(--gold-rgb), .3)!important;color:var(--gold)!important;display:flex!important}.guide-mobile-screenshot-trigger:active{transform:scale(.98);background:rgba(var(--gold-rgb), .15)!important}}.guide-screenshot-lightbox{-webkit-backdrop-filter:blur(8px);z-index:2000;background:#000000d9;justify-content:center;align-items:center;padding:1rem;animation:.2s ease-out fadeIn;display:flex;position:fixed;inset:0}.guide-lightbox-content{background:var(--surface2);border:1px solid var(--border);border-radius:16px;flex-direction:column;width:90vw;max-width:480px;max-height:80vh;animation:.25s cubic-bezier(.34,1.56,.64,1) scaleIn;display:flex;position:relative;overflow:hidden;box-shadow:0 24px 64px #000c}.guide-lightbox-close{color:var(--text);cursor:pointer;z-index:10;background:#ffffff14;border:none;border-radius:50%;justify-content:center;align-items:center;width:32px;height:32px;transition:all .2s;display:flex;position:absolute;top:.8rem;right:.8rem}.guide-lightbox-close:hover{background:#ffffff26}.guide-lightbox-header{border-bottom:1px solid var(--border);color:var(--text);text-align:center;background:#ffffff05;padding:1rem;font-size:.95rem;font-weight:700}.guide-lightbox-body{background:#0003;flex:1;justify-content:center;align-items:center;padding:1rem;display:flex;overflow-y:auto}.guide-lightbox-body img{object-fit:contain;border:1px solid #ffffff14;border-radius:8px;max-width:100%;max-height:55vh;box-shadow:0 8px 24px #00000080}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes scaleIn{0%{opacity:0;transform:scale(.9)}to{opacity:1;transform:scale(1)}}.venue-today-section{background:rgba(var(--surface-rgb), .4);border:1px solid #ffffff0d;border-radius:8px;margin-top:1rem;margin-bottom:1rem;padding:1rem}.venue-today-title{color:var(--gold);align-items:center;gap:.5rem;margin-bottom:.75rem;font-family:Noto Sans TC,PingFang TC,Microsoft JhengHei,sans-serif;font-size:.9rem;font-weight:700;display:flex}.venue-today-list{flex-direction:column;gap:.75rem;display:flex}.venue-today-item{cursor:pointer;background:#ffffff05;border:1px solid #ffffff0d;border-radius:6px;padding:.75rem;transition:all .2s}.venue-today-item:hover{background:rgba(var(--accent-rgb), .05);border-color:rgba(var(--accent-rgb), .2);transform:translateY(-1px)}.venue-today-item-header{justify-content:space-between;align-items:center;margin-bottom:.35rem;display:flex}.venue-today-source{color:var(--accent);background:rgba(var(--accent-rgb), .1);border-radius:4px;padding:.1rem .35rem;font-size:.7rem;font-weight:600}.venue-today-price{color:var(--muted);font-size:.7rem}.venue-today-name{color:var(--text);margin-bottom:.5rem;font-size:.85rem;font-weight:600;line-height:1.4}.venue-today-links{flex-wrap:wrap;gap:.5rem;display:flex}.venue-today-link-btn{color:var(--text);background:#ffffff0d;border:1px solid #ffffff1a;border-radius:4px;align-items:center;padding:.25rem .6rem;font-family:Noto Sans TC,PingFang TC,Microsoft JhengHei,sans-serif;font-size:.7rem;text-decoration:none;transition:all .2s;display:inline-flex}.venue-today-link-btn:hover{background:var(--accent);border-color:var(--accent);color:#fff}.venue-today-empty{color:var(--muted);text-align:center;padding:.5rem 0;font-size:.8rem}.sidebar-tabs{background:rgba(var(--surface-rgb), .5);border-bottom:1px solid var(--border);gap:.25rem;padding:.5rem 1rem 0;display:flex}.sidebar-tab-btn{color:var(--muted);cursor:pointer;background:0 0;border:none;border-bottom:2.5px solid #0000;border-radius:6px 6px 0 0;align-items:center;gap:.4rem;padding:.6rem .8rem;font-family:Noto Sans TC,PingFang TC,Microsoft JhengHei,sans-serif;font-size:.8rem;font-weight:600;transition:all .2s;display:flex}.sidebar-tab-btn svg{opacity:.7}.sidebar-tab-btn:hover{color:var(--text);background:#ffffff05}.sidebar-tab-btn.active{color:var(--gold);border-bottom-color:var(--gold);background:rgba(var(--surface-rgb), .8)}.sidebar-tab-btn.active svg{opacity:1;color:var(--gold)}@media (width>=769px){.sidebar .concert-list-area{box-sizing:border-box;flex-direction:column;height:100%;padding:1rem;display:flex;overflow:hidden}.concert-list-area .venue-info{height:100%;box-shadow:none;background:0 0;border:none;flex-direction:column;margin:0;padding:0;display:flex}.concert-list-area .venue-info .venue-today-section{flex-direction:column;flex:1;min-height:0;margin-top:.5rem;margin-bottom:.5rem;padding:.8rem;display:flex}.concert-list-area .venue-info .venue-today-list{flex:1;padding-right:4px;overflow-y:auto}.tickets-tab-scroll-wrapper{flex-direction:column;flex:1;gap:1rem;min-height:0;padding-right:4px;display:flex;overflow-y:auto}.concert-list-area .transit-board{box-shadow:none;background:0 0;border:none;flex:1;margin:0;padding:0 4px 0 0;overflow-y:auto}.venue-today-list::-webkit-scrollbar{width:6px;height:6px}.tickets-tab-scroll-wrapper::-webkit-scrollbar{width:6px;height:6px}.transit-board::-webkit-scrollbar{width:6px;height:6px}.venue-today-list::-webkit-scrollbar-thumb{background:#ffffff1a;border-radius:3px}.tickets-tab-scroll-wrapper::-webkit-scrollbar-thumb{background:#ffffff1a;border-radius:3px}.transit-board::-webkit-scrollbar-thumb{background:#ffffff1a;border-radius:3px}.venue-today-list::-webkit-scrollbar-thumb:hover{background:var(--gold)}.tickets-tab-scroll-wrapper::-webkit-scrollbar-thumb:hover{background:var(--gold)}.transit-board::-webkit-scrollbar-thumb:hover{background:var(--gold)}}@media (width<=768px){.sidebar-tabs{display:none}}body:has(.main-layout){overflow:hidden!important}@media (width>=769px){body:has(.main-layout){margin:0;height:100vh!important;overflow:hidden!important}body:has(.main-layout) #root{flex-direction:column;height:100vh;display:flex;overflow:hidden}body:has(.main-layout) .main-layout{flex:1;min-height:0;height:auto!important}}:root{--sidebar-width:420px}@media (width>=769px){.main-layout{grid-template-columns:1fr var(--sidebar-width)!important}}.global-spotify-player{z-index:998;-webkit-backdrop-filter:blur(20px);border:1px solid var(--border);background:#0a0a12fa;transition:all .3s cubic-bezier(.4,0,.2,1);position:fixed;box-shadow:0 10px 30px #00000080}[data-theme=light] .global-spotify-player{background:#fffffffa;box-shadow:0 10px 30px #00000026}@media (width>=769px){.global-spotify-player{flex-direction:column;height:auto;display:flex}.global-spotify-player .mobile-side-close-btn{display:none!important}.spotify-player-header{border-bottom:1px solid #ffffff0d;justify-content:space-between;align-items:center;padding:8px 12px;display:flex}.spotify-player-header .sp-title{color:var(--muted);letter-spacing:.05em;align-items:center;font-size:.75rem;font-weight:600;display:inline-flex}.spotify-player-header .sp-open-link{color:var(--teal);font-size:.72rem;font-weight:600;text-decoration:none;transition:opacity .2s}.spotify-player-header .sp-open-link:hover{opacity:.8}.spotify-player-header .sp-reload-btn,.spotify-player-header .desktop-close-btn{color:var(--muted);cursor:pointer;background:0 0;border:none;align-items:center;padding:0 4px;font-size:.85rem;transition:color .2s;display:inline-flex}.spotify-player-header .sp-reload-btn:hover,.spotify-player-header .desktop-close-btn:hover{color:var(--text)}.global-spotify-player.map{width:var(--sidebar-width);border-top:1px solid var(--border);border-left:1px solid var(--border);border-radius:0;padding:6px 8px;bottom:0;right:0;transform:translate(0)}.global-spotify-player.map.sidebar-collapsed{transform:translate(100%)}.global-spotify-player.calendar,.global-spotify-player.board,.global-spotify-player.profile{border:1px solid var(--border);border-radius:14px;width:350px;max-width:calc(100vw - 48px);padding:6px;bottom:24px;right:24px;box-shadow:0 10px 30px #00000080}.global-spotify-player .spotify-player-body{width:100%;line-height:0;height:80px!important;overflow:hidden!important}.global-spotify-player .spotify-player-body iframe{border:none!important;border-radius:8px!important;width:100%!important;min-width:100%!important;height:80px!important;display:block!important;overflow:hidden!important}}@media (width<=768px){:root{--bottom-offset:calc(60px + env(safe-area-inset-bottom,0px))}body.player-open{--bottom-offset:calc(140px + env(safe-area-inset-bottom,0px))}.global-spotify-player{top:auto!important;bottom:calc(60px + env(safe-area-inset-bottom,0px))!important;z-index:998!important;border-radius:0!important;flex-direction:row!important;align-items:center!important;width:100%!important;max-width:100%!important;height:80px!important;margin:0!important;padding:0!important;display:flex!important;position:fixed!important;left:0!important;right:0!important}.spotify-player-header{display:none!important}.global-spotify-player .spotify-player-body{flex:1;line-height:0;height:80px!important;overflow:hidden!important}.global-spotify-player .spotify-player-body iframe{border:none!important;border-radius:0!important;width:100%!important;height:80px!important;display:block!important}.global-spotify-player .mobile-side-close-btn{width:44px!important;height:80px!important;color:var(--muted)!important;cursor:pointer!important;background:#0006!important;border:none!important;border-left:1px solid #ffffff1f!important;flex-shrink:0!important;justify-content:center!important;align-items:center!important;font-size:1.25rem!important;font-weight:300!important;transition:all .2s!important;display:flex!important}.global-spotify-player .mobile-side-close-btn:hover{color:#ff4d4f!important;background:#ff4d4d40!important}}.guide-trigger-icon-btn svg{transition:transform .3s cubic-bezier(.4,0,.2,1)}.guide-trigger-icon-btn:hover svg{filter:drop-shadow(0 0 5px #fbbf2499);transform:scale(1.15)rotate(20deg);color:var(--gold)!important}.lang-option{transition:all .2s cubic-bezier(.4,0,.2,1)}.lang-option:hover{box-shadow:0 4px 12px rgba(var(--gold-rgb), .15);transform:translateY(-2px);border-color:rgba(var(--gold-rgb), .5)!important}.lang-option:not(.active):hover{box-shadow:0 4px 12px rgba(var(--teal-rgb), .1);background:var(--surface-hover)!important;color:var(--teal)!important;border-color:rgba(var(--teal-rgb), .4)!important}.lang-toggle-btn svg{transition:transform .4s}.lang-toggle-btn:hover svg{transform:rotate(180deg);color:var(--gold)!important}.app-toast{color:#fff;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);z-index:99999;pointer-events:none;background:#141423f2;border:1px solid #ffffff1a;border-radius:12px;align-items:center;gap:8px;padding:.75rem 1.4rem;font-size:.88rem;font-weight:500;animation:.3s cubic-bezier(.16,1,.3,1) forwards toastFadeIn;display:flex;position:fixed;bottom:85px;left:50%;transform:translate(-50%);box-shadow:0 10px 25px #00000080}.app-toast.success{color:#81c784;border-color:#4caf5066;box-shadow:0 10px 25px #4caf5033}.app-toast.error{color:#e57373;border-color:#f4433666;box-shadow:0 10px 25px #f4433633}@keyframes toastFadeIn{0%{opacity:0;transform:translate(-50%,15px)}to{opacity:1;transform:translate(-50%)}}.typhoon-warning-badge{color:#ff4d4f;background:#ff4d4f1a;border:1px solid #ff4d4f59;border-radius:4px;align-items:center;gap:4px;width:fit-content;margin-top:.35rem;padding:3px 6px;font-size:.7rem;font-weight:600;line-height:1.35;display:inline-flex}.typhoon-warning-badge .warning-icon{font-size:.8rem}.view-records-mobile-btn{background:var(--surface2,#181614);border:1px solid var(--border);width:100%;color:var(--text);cursor:pointer;border-radius:12px;justify-content:center;align-items:center;gap:8px;margin-bottom:1.5rem;padding:.9rem 1.2rem;font-size:.92rem;font-weight:600;transition:all .25s;display:none}.view-records-mobile-btn:hover{background:rgba(var(--gold-rgb), .08);border-color:var(--gold);color:var(--gold)}.records-modal-overlay{z-index:10000;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);background:#000000bf;justify-content:center;align-items:center;padding:16px;display:flex;position:fixed;inset:0}.records-modal-content{background:var(--surface2,#181614);border:1px solid var(--border);border-radius:16px;flex-direction:column;width:100%;max-width:640px;max-height:80vh;animation:.3s cubic-bezier(.4,0,.2,1) recordsModalFadeIn;display:flex;overflow:hidden;box-shadow:0 20px 40px #00000080}@keyframes recordsModalFadeIn{0%{opacity:0;transform:scale(.95)}to{opacity:1;transform:scale(1)}}.records-modal-header{border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;padding:1rem 1.25rem;display:flex}.records-modal-header h4{color:var(--text);align-items:center;gap:6px;margin:0;font-size:1.05rem;font-weight:700;display:flex}.close-records-modal-btn{color:var(--muted);cursor:pointer;background:0 0;border:none;justify-content:center;align-items:center;padding:4px;font-size:1.6rem;line-height:1;transition:color .2s;display:flex}.close-records-modal-btn:hover{color:var(--text)}.records-modal-body{flex:1;padding:1.25rem;overflow-y:auto}.records-modal-body .profile-content-section{box-shadow:none!important;background:0 0!important;border:none!important;margin:0!important;padding:0!important}.records-modal-body .section-header-row{margin-bottom:1.25rem}.records-modal-body .section-header-row h3{display:none!important}.records-modal-body .profile-search-input{width:100%!important}@media (width<=768px){.view-records-mobile-btn{display:flex}}.reply-to-tag{color:var(--gold);background:rgba(var(--gold-rgb), .1);border:1px solid rgba(var(--gold-rgb), .15);border-radius:4px;align-items:center;margin-left:8px;padding:1px 6px;font-size:.72rem;font-weight:500;display:inline-flex}.reply-actions-row{border-top:1px solid #ffffff0a;align-items:center;gap:12px;margin-top:10px;padding-top:8px;display:flex}.reply-action-btn{color:var(--muted);cursor:pointer;background:0 0;border:none;border-radius:6px;align-items:center;gap:4px;padding:3px 8px;font-size:.78rem;font-weight:500;transition:all .2s;display:inline-flex}.reply-action-btn:hover{color:var(--text);background:#ffffff0d}.reply-action-btn.like-btn.liked{color:#ff4d4f;background:#ff4d4f0d}.reply-action-btn.like-btn.liked:hover{background:#ff4d4f1a}.reply-action-btn.reply-btn:hover{color:var(--gold);background:rgba(var(--gold-rgb), .1)}.reply-action-btn.reply-delete-btn{margin-left:auto}.reply-action-btn.reply-delete-btn:hover{color:#ff4d4f;background:#ff4d4f1a}.reply-to-info-banner{background:rgba(var(--gold-rgb), .08);border:1px dashed rgba(var(--gold-rgb), .4);color:var(--gold);border-radius:8px;justify-content:space-between;align-items:center;margin-bottom:12px;padding:8px 12px;font-size:.82rem;font-weight:500;display:flex}.cancel-reply-to-btn{color:var(--gold);cursor:pointer;background:0 0;border:none;justify-content:center;align-items:center;padding:2px;font-size:1rem;line-height:1;transition:transform .2s;display:flex}.cancel-reply-to-btn:hover{transform:scale(1.2)}.concert-card-header-right{flex-shrink:0;align-items:center;gap:8px;display:flex}.concert-card-delete-btn{color:var(--muted);cursor:pointer;background:0 0;border:none;border-radius:4px;justify-content:center;align-items:center;padding:4px;line-height:1;transition:all .2s;display:inline-flex}.concert-card-delete-btn:hover{color:#ff4d4f;background:#ff4d4f1a;transform:scale(1.05)}.concert-card-delete-btn:active{transform:scale(.95)}@media (width>=769px) and (width<=1024px){header{box-sizing:border-box!important;gap:1rem!important;height:68px!important;padding:.8rem 1.5rem!important}header .logo-text{display:none!important}.main-layout{height:calc(100vh - 68px)!important}.calendar-main-layout,.share-board-container,.profile-board-container,.login-page-container{padding-top:20px!important}.venue-panel-container,.map-weather-overlay,.shuangbei-popover{top:24px!important}}@media (width>=769px) and (width<=1650px){header .stats-bar .stat-label{display:none!important}header .stats-bar{gap:8px!important;margin-right:4px!important}}@media (width>=769px) and (width<=1440px){header .stats-bar,header .logo-text span{display:none!important}header .header-search{max-width:160px!important}header{gap:8px!important;padding:0 12px!important}}@media (width>=769px) and (width<=1280px){header .nav-toggle-btn:not(.profile-trigger-btn):not(.logout-btn):not(.login-trigger-btn) .btn-label{display:none!important}header .nav-toggle-btn:not(.profile-trigger-btn):not(.logout-btn):not(.login-trigger-btn) svg{margin-right:0!important}header .nav-toggle-btn:not(.profile-trigger-btn):not(.logout-btn):not(.login-trigger-btn){border-radius:50%!important;justify-content:center!important;width:36px!important;height:36px!important;padding:6px!important}}@media (width>=769px) and (width<=1100px){header .logo-text{display:none!important}header .header-search{max-width:120px!important}header .nav-toggle-btn .btn-label{display:none!important}header .nav-toggle-btn svg{margin-right:0!important}header .nav-toggle-btn{border-radius:50%!important;justify-content:center!important;width:36px!important;height:36px!important;padding:6px!important}}.tablet-only-nav-item{display:none!important}@media (width>=768px) and (width<=1366px) and (height<=850px){.tablet-only-nav-item{display:flex!important}header{display:none!important}.main-layout{box-sizing:border-box!important;height:100vh!important;padding-bottom:95px!important}.share-board-container,.profile-board-container,.login-page-container{box-sizing:border-box!important;height:100vh!important;min-height:100vh!important;padding-top:25px!important;padding-bottom:95px!important;overflow-y:auto!important}.calendar-main-layout{box-sizing:border-box!important;height:100vh!important;min-height:100vh!important;padding-top:25px!important;padding-bottom:95px!important;overflow:hidden!important}.mobile-bottom-nav{-webkit-backdrop-filter:blur(16px)!important;z-index:999!important;background:#141420cc!important;border:1px solid #ffffff26!important;border-radius:99px!important;justify-content:center!important;align-items:center!important;gap:.5rem!important;width:auto!important;min-width:auto!important;padding:.4rem 1.2rem!important;display:flex!important;position:fixed!important;bottom:20px!important;left:50%!important;transform:translate(-50%)!important;box-shadow:0 10px 35px #00000073!important}.main-layout:not(.sidebar-collapsed)~.mobile-bottom-nav{left:calc(50% - 170px)!important}.mobile-bottom-nav.dragging{transform:translate(-50%)scale(1.08)!important}.bottom-nav-item{color:var(--muted)!important;cursor:pointer!important;z-index:2!important;background:0 0!important;border:none!important;border-radius:50%!important;outline:none!important;flex-direction:column!important;justify-content:center!important;align-items:center!important;min-width:44px!important;height:44px!important;padding:.4rem!important;transition:all .25s cubic-bezier(.4,0,.2,1)!important;display:flex!important}.bottom-nav-item.active{color:var(--gold)!important;background:0 0!important}.bottom-nav-item .icon{margin-bottom:0!important;font-size:1.25rem!important;line-height:1!important}.bottom-nav-item .label{display:none!important}.map-legend{top:90px!important;bottom:auto!important;left:20px!important}.mobile-bottom-nav>:first-child{order:1!important}.mobile-bottom-nav>:nth-child(2){order:2!important}.mobile-bottom-nav>:nth-child(4){order:3!important}.mobile-bottom-nav>:nth-child(5){order:4!important}.mobile-bottom-nav>:nth-child(3){order:5!important}.mobile-bottom-nav>:nth-child(6){order:6!important}.mobile-bottom-nav>:nth-child(7){order:7!important}.mobile-bottom-nav>:nth-child(8){order:8!important}[data-theme=light] .mobile-bottom-nav{background:#fcfbfae6!important;border:1px solid #1414141a!important;box-shadow:0 10px 30px #0000001f!important}[data-theme=light] .bottom-nav-item{color:#555!important}[data-theme=light] .bottom-nav-item.active{color:#141413!important;background:0 0!important}.main-layout{grid-template-columns:1fr var(--sidebar-width,420px)!important}.venue-panel-container{-webkit-backdrop-filter:blur(12px)!important;background:#14141ebf!important;border:1px solid #ffffff1a!important;width:285px!important;max-height:80%!important;top:20px!important;left:20px!important}[data-theme=light] .venue-panel-container{border-color:var(--border)!important;background:#ffffffe0!important;box-shadow:0 10px 40px #0000001a!important}.venue-panel-container.collapsed{border-radius:50%!important;width:50px!important;height:50px!important}.map-container{height:100%!important}.venue-panel-header{padding:.8rem!important}.sidebar-tabs{gap:.3rem!important;padding:.4rem!important}.sidebar-tab-btn{padding:.5rem!important;font-size:.8rem!important}.concert-list-area::-webkit-scrollbar{width:5px}.concert-list-area::-webkit-scrollbar-thumb{background:var(--border);border-radius:3px}.calendar-view-container{grid-template-rows:auto 1fr!important;grid-template-columns:1.35fr 1fr!important;gap:1rem!important;height:100%!important;margin:0!important;display:grid!important;overflow:hidden!important}.month-selector-buttons{align-items:center!important;gap:.8rem!important;height:36px!important;display:flex!important}.current-month-selects{align-items:center!important;gap:.4rem!important;height:36px!important;display:flex!important}.cal-select{box-sizing:border-box!important;vertical-align:middle!important;height:36px!important;margin:0!important;padding:.35rem .6rem!important;line-height:1!important;display:inline-block!important}.cal-today-btn{box-sizing:border-box!important;justify-content:center!important;align-items:center!important;height:36px!important;margin:0!important;padding:0 1rem!important;display:flex!important}.cal-year-label{margin-right:.2rem!important;line-height:36px!important}.calendar-header-panel{grid-area:1/1/auto/span 2!important;gap:.8rem!important;padding:.8rem 1.2rem!important}.calendar-filters-row{border-top:1px solid var(--border)!important;margin-top:0!important;padding-top:.5rem!important}.calendar-grid-layout{flex-direction:column!important;grid-area:2/1!important;gap:.5rem!important;height:100%!important;min-height:0!important;display:flex!important;overflow:hidden!important}.calendar-week-headers{margin-bottom:.2rem!important}.calendar-cells-grid{flex:1!important;grid-template-rows:repeat(6,1fr)!important;grid-template-columns:repeat(7,1fr)!important;gap:4px!important;height:100%!important;min-height:0!important;display:grid!important;overflow:hidden!important}.calendar-day-cell{box-sizing:border-box!important;flex-direction:column!important;justify-content:space-between!important;height:100%!important;min-height:0!important;padding:4px 6px!important;display:flex!important}.day-cell-header{margin-bottom:0!important}.selected-day-details-drawer{background:var(--surface)!important;border:1px solid var(--border)!important;border-radius:16px!important;flex-direction:column!important;grid-area:2/2!important;width:100%!important;height:100%!important;max-height:100%!important;display:flex!important;position:static!important;overflow:hidden!important;transform:none!important;box-shadow:0 8px 32px #0003!important}.selected-day-details-drawer.open{transform:none!important}.selected-day-details-drawer .drawer-close-btn{display:none!important}.calendar-drawer-header{padding:.8rem 1rem!important}.drawer-events-list{flex:1!important;padding:.8rem!important;overflow-y:auto!important}.drawer-cards-grid{flex-direction:column!important;gap:.8rem!important;display:flex!important}.drawer-event-card{padding:.8rem!important}.calendar-view-container:has(.calendar-list-view){grid-template-columns:1fr!important}.calendar-list-view{grid-column:1/span 2!important;max-height:calc(100vh - 200px)!important;padding-right:.4rem!important;overflow-y:auto!important}.share-board-title{font-size:1.8rem!important}.board-grid{grid-template-columns:repeat(2,1fr)!important;gap:1rem!important}.shared-note-card{padding:1rem!important}.profile-layout-grid{grid-template-columns:280px 1fr!important;gap:1.2rem!important}.profile-sidebar-card{padding:1.2rem 1rem!important}.profile-avatar-large{width:90px!important;height:90px!important}.profile-avatar-large span.avatar-emoji{font-size:2.2rem!important}.profile-stats-card-list{gap:.6rem!important;margin-top:1rem!important}.profile-stat-box{padding:.6rem!important}.login-page-container{min-height:calc(100vh - 40px)!important;padding:1rem!important}.login-card{border-radius:16px!important;padding:1.5rem!important}.login-logo{margin-bottom:.5rem!important}.login-header h2{font-size:1.3rem!important}.login-form .form-group{margin-bottom:.8rem!important}}.profile-theme-music-box{border:1px solid var(--border);background:#ffffff08;border-radius:14px;margin-top:1.2rem;padding:1rem;transition:all .25s}.profile-theme-music-box:hover{border-color:#1db95466;box-shadow:0 4px 20px #1db9541f}.theme-music-header{justify-content:space-between;align-items:center;margin-bottom:.75rem;display:flex}.theme-music-title{color:var(--text);flex-shrink:0;align-items:center;font-size:.85rem;font-weight:700;display:inline-flex;white-space:nowrap!important}.edit-theme-music-btn{color:#1db954;cursor:pointer;background:#1db9541f;border:1px solid #1db9544d;border-radius:20px;flex-shrink:0;align-items:center;gap:.3rem;padding:.25rem .65rem;font-size:.75rem;font-weight:600;transition:all .2s;display:inline-flex;white-space:nowrap!important}.edit-theme-music-btn:hover{color:#000;background:#1db954;transform:translateY(-1px)}.theme-music-controls-row{align-items:center;gap:.5rem;margin-bottom:.6rem;display:flex}.theme-play-main-btn{color:#000;cursor:pointer;background:#1db954;border:none;border-radius:20px;flex:1;justify-content:center;align-items:center;gap:.3rem;padding:.5rem .8rem;font-size:.82rem;font-weight:700;transition:all .2s;display:flex;box-shadow:0 2px 10px #1db95440;white-space:nowrap!important}.theme-play-main-btn:hover{background:#1ed760;transform:translateY(-1px);box-shadow:0 4px 15px #1db95466}.theme-open-spotify-btn{color:var(--text);border:1px solid var(--border);background:#ffffff0f;border-radius:20px;flex-shrink:0;justify-content:center;align-items:center;padding:.5rem .75rem;font-size:.78rem;font-weight:600;text-decoration:none;transition:all .2s;display:flex;white-space:nowrap!important}.theme-open-spotify-btn:hover{background:#ffffff1f;border-color:#fff3}.theme-music-player-wrapper{background:#0003;border-radius:12px;width:100%;line-height:0;height:80px!important;max-height:80px!important;overflow:hidden!important}.theme-music-player-wrapper iframe{border:none!important;border-radius:12px!important;width:100%!important;height:80px!important;max-height:80px!important;display:block!important;overflow:hidden!important}.theme-music-placeholder-btn{width:100%;color:var(--muted);cursor:pointer;background:#ffffff05;border:1px dashed #1db95459;border-radius:10px;justify-content:center;align-items:center;gap:.5rem;padding:.8rem;font-size:.8rem;font-weight:600;transition:all .25s;display:flex}.theme-music-placeholder-btn:hover{color:var(--text);background:#1db95414;border-color:#1db954}.spotify-modal-tabs{border:1px solid var(--border);background:#ffffff0a;border-radius:12px;gap:.5rem;margin-bottom:1.2rem;padding:4px;display:flex}.spotify-modal-tab-btn{color:var(--muted);cursor:pointer;background:0 0;border:none;border-radius:8px;flex:1;justify-content:center;align-items:center;gap:.4rem;padding:.55rem;font-size:.85rem;font-weight:600;transition:all .2s;display:flex}.spotify-modal-tab-btn.active{color:#1db954;background:#1db9542e;box-shadow:0 2px 8px #0000004d}.spotify-search-form-row{align-items:center;gap:.6rem;margin-bottom:1rem;display:flex}.spotify-search-form-row input{box-sizing:border-box;border:1px solid var(--border);height:42px;color:var(--text);background:#0003;border-radius:10px;outline:none;flex:1;padding:0 1rem;font-size:.88rem}.spotify-search-form-row input:focus{border-color:#1db954}.spotify-search-form-row .spotify-do-search-btn{color:#000;cursor:pointer;white-space:nowrap;background:#1db954;border:none;border-radius:10px;justify-content:center;align-items:center;gap:.4rem;height:42px;padding:0 1.2rem;font-size:.88rem;font-weight:700;transition:all .2s;display:inline-flex}.spotify-search-form-row .spotify-do-search-btn:hover{transform:translateY(-1px);box-shadow:0 4px 15px #1db9544d}.spotify-search-results-list{flex-direction:column;gap:.4rem;max-height:220px;margin-bottom:1.2rem;padding-right:2px;display:flex;overflow-y:auto}.spotify-search-result-item{border:1px solid var(--border);cursor:pointer;text-align:left;box-sizing:border-box;background:#ffffff08;border-radius:10px;align-items:center;gap:.75rem;width:100%;padding:.5rem .75rem;transition:all .2s;display:flex}.spotify-search-result-item:hover,.spotify-search-result-item.selected{background:#1db95426;border-color:#1db954}.spotify-search-result-item img{object-fit:cover;border-radius:6px;width:40px;height:40px}.spotify-search-result-item .item-info{flex:1;min-width:0}.spotify-search-result-item .item-title{color:var(--text);white-space:nowrap;text-overflow:ellipsis;font-size:.85rem;font-weight:700;overflow:hidden}.spotify-search-result-item .item-sub{color:var(--muted);white-space:nowrap;text-overflow:ellipsis;font-size:.75rem;overflow:hidden}.spotify-modal-actions{align-items:center!important;gap:.75rem!important;width:100%!important;margin-top:1.5rem!important;display:flex!important}.spotify-action-btn{box-sizing:border-box!important;cursor:pointer!important;vertical-align:middle!important;border-radius:24px!important;flex:1!important;justify-content:center!important;align-items:center!important;height:42px!important;margin:0!important;padding:0 1rem!important;font-size:.88rem!important;font-weight:700!important;line-height:1!important;text-decoration:none!important;transition:all .2s!important;display:inline-flex!important}.spotify-action-btn.save{color:#000!important;background:#1db954!important;border:1px solid #1db954!important}.spotify-action-btn.save:hover{background:#1ed760!important;transform:translateY(-1px)!important;box-shadow:0 4px 15px #1db95459!important}.spotify-action-btn.remove{color:#ff4d4d!important;background:#ff4d4d26!important;border:1px solid #ff4d4d59!important}.spotify-action-btn.remove:hover{background:#ff4d4d40!important;transform:translateY(-1px)!important}.spotify-action-btn.cancel{color:var(--muted)!important;border:1px solid var(--border)!important;background:#ffffff0d!important}.spotify-action-btn.cancel:hover{color:var(--text)!important;background:#ffffff1a!important;transform:translateY(-1px)!important}
