:root{--transition-fast:0.15s;--transition-base:0.3s;--transition-slow:0.5s;--easing-smooth:cubic-bezier(0.4,0,0.2,1);--easing-bounce:cubic-bezier(0.34,1.56,0.64,1);--easing-ease-out:cubic-bezier(0,0,0.2,1)}@media (prefers-reduced-motion:reduce){*,:after,:before{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important;scroll-behavior:auto!important}}#map-container{width:100%;height:100vh;position:relative;touch-action:none}.selected-stop-arrow{background:transparent!important;border:none!important}.selected-stop-arrow img{display:none}@keyframes slideInArrow{0%{opacity:0;transform:translateY(-20px) scale(.8)}to{opacity:1;transform:translateY(0) scale(1)}}.leaflet-marker.selected-stop-arrow{animation:slideInArrow .4s cubic-bezier(.34,1.56,.64,1)}#line-filter-panel{position:fixed;top:8px;right:8px;z-index:1001;font-family:Arial,sans-serif;max-width:240px;width:auto}.filter-toggle-btn{display:flex;align-items:center;gap:6px;padding:6px 10px;background:rgba(40,40,40,.9);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);border:1px solid hsla(0,0%,100%,.2);border-radius:16px;color:#fff;font-size:11px;font-weight:500;cursor:pointer;transition:background var(--transition-base) var(--easing-smooth),transform var(--transition-fast) var(--easing-smooth),box-shadow var(--transition-base) var(--easing-smooth),border-color var(--transition-base) var(--easing-smooth);box-shadow:0 2px 6px rgba(0,0,0,.3);min-height:28px;white-space:nowrap;will-change:transform,box-shadow}.filter-toggle-btn:hover{background:rgba(50,50,50,.95);transform:translateY(-1px);box-shadow:0 4px 12px rgba(0,0,0,.4)}.filter-toggle-btn.active{background:rgba(0,123,255,.3);border-color:rgba(0,123,255,.5);box-shadow:0 0 12px rgba(0,123,255,.3)}.filter-icon{font-size:12px;opacity:.9}.filter-text{flex:1;text-align:left;font-weight:600;font-size:11px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:140px}.filter-arrow{font-size:8px;transition:transform var(--transition-base) var(--easing-smooth);opacity:.7;will-change:transform}.filter-arrow.rotated{transform:rotate(180deg)}.filter-content{margin-top:4px;padding:6px;background:rgba(40,40,40,.95);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);border:1px solid hsla(0,0%,100%,.2);border-radius:10px;box-shadow:0 3px 12px rgba(0,0,0,.4);display:flex;flex-direction:column;gap:6px;max-height:250px;overflow-y:auto;animation:slideDown var(--transition-base) var(--easing-ease-out);min-width:220px}@keyframes slideDown{0%{opacity:0;transform:translateY(-10px)}to{opacity:1;transform:translateY(0)}}.filter-chip{display:inline-flex;align-items:center;gap:6px;padding:6px 10px;background:hsla(0,0%,100%,.1);border:1px solid hsla(0,0%,100%,.2);border-radius:12px;color:#fff;font-size:10px;font-weight:500;cursor:pointer;transition:background var(--transition-base) var(--easing-smooth),transform var(--transition-fast) var(--easing-smooth),box-shadow var(--transition-base) var(--easing-smooth),border-color var(--transition-base) var(--easing-smooth);white-space:nowrap;min-height:28px;width:100%;justify-content:flex-start;touch-action:manipulation;-webkit-tap-highlight-color:rgba(255,255,255,.1);will-change:transform,box-shadow}.chip-content{display:flex;flex-direction:column;align-items:flex-start;gap:2px;flex:1;min-width:0;overflow:hidden}.chip-name{font-weight:600;font-size:11px;line-height:1.2;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;width:100%}.chip-number{font-size:9px;opacity:.8;font-weight:400}.filter-chip:hover{background:hsla(0,0%,100%,.15);transform:translateY(-1px);box-shadow:0 2px 6px rgba(0,0,0,.2)}.filter-chip.active{background:var(--line-color,rgba(0,123,255,.4));border-color:var(--line-color,rgba(0,123,255,.6));color:#fff;font-weight:600;box-shadow:0 0 8px var(--line-color,rgba(0,123,255,.4))}.filter-chip:first-child.active{background:rgba(102,187,106,.4);border-color:rgba(102,187,106,.6);box-shadow:0 0 8px rgba(102,187,106,.4)}.chip-dot{width:6px;height:6px;border-radius:50%;flex-shrink:0;border:1px solid hsla(0,0%,100%,.3);box-shadow:0 0 3px rgba(0,0,0,.3)}.filter-content::-webkit-scrollbar{width:4px}.filter-content::-webkit-scrollbar-track{background:transparent}.filter-content::-webkit-scrollbar-thumb{background:hsla(0,0%,100%,.2);border-radius:2px}.filter-content::-webkit-scrollbar-thumb:hover{background:hsla(0,0%,100%,.3)}#arrival-panel{position:fixed;bottom:8px;left:8px;width:85%;max-width:280px;border-radius:8px;box-shadow:0 3px 10px rgba(0,0,0,.4);font-family:Arial,sans-serif;z-index:1000;max-height:55vh;display:flex;flex-direction:column;overflow:hidden;background:linear-gradient(135deg,rgba(35,35,40,.92),rgba(30,30,35,.92));backdrop-filter:blur(16px) saturate(180%);-webkit-backdrop-filter:blur(16px) saturate(180%);border:1px solid hsla(0,0%,100%,.12);color:#fff;box-shadow:0 8px 32px rgba(0,0,0,.4),inset 0 0 0 1px hsla(0,0%,100%,.05);animation:slideInUp var(--transition-slow) var(--easing-smooth);transition:transform var(--transition-base) var(--easing-smooth),box-shadow var(--transition-base) var(--easing-smooth);visibility:visible!important;opacity:1!important;will-change:transform}@keyframes slideInUp{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}.panel-header{background:linear-gradient(180deg,rgba(0,0,0,.3),rgba(0,0,0,.2));color:#fff;padding:12px 16px;font-weight:600;text-align:center;border-bottom:1px solid hsla(0,0%,100%,.1);display:flex;justify-content:space-between;align-items:center;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none;transition:background var(--transition-base) var(--easing-smooth);min-height:44px;font-size:14px;letter-spacing:-.2px;-webkit-tap-highlight-color:rgba(255,255,255,.2);backdrop-filter:blur(10px)}.panel-header:hover{background:linear-gradient(180deg,rgba(0,0,0,.4),rgba(0,0,0,.3))}.panel-header span{flex:1}.collapse-btn{color:#fff;font-size:10px;padding:2px 6px;border-radius:4px;transition:transform var(--transition-base) var(--easing-smooth),background var(--transition-fast) var(--easing-smooth);display:flex;align-items:center;justify-content:center;width:24px;height:24px;min-width:24px;min-height:24px;-webkit-tap-highlight-color:rgba(255,255,255,.2);touch-action:manipulation;will-change:transform}.collapse-btn:hover{background:hsla(0,0%,100%,.1)}.panel-content{overflow-y:auto;overflow-x:hidden;transition:max-height var(--transition-base) var(--easing-smooth),opacity var(--transition-base) var(--easing-smooth);max-height:calc(55vh - 100px);opacity:1;flex:1;min-height:0}#arrival-panel.collapsed .panel-content,#nearby-stops-panel.collapsed .panel-content{max-height:0;opacity:0;overflow:hidden}#arrival-panel.collapsed{max-height:auto}#arrival-panel.collapsed .panel-header{border-radius:8px;border-bottom:none}#arrival-list{list-style:none;padding:0;margin:0;overflow-y:auto;overflow-x:hidden;scroll-behavior:smooth;-webkit-overflow-scrolling:touch;scrollbar-width:thin;scrollbar-color:hsla(0,0%,100%,.3) transparent;flex:1;min-height:0}#arrival-list::-webkit-scrollbar{width:8px}#arrival-list::-webkit-scrollbar-track{background:hsla(0,0%,100%,.03);border-radius:4px;margin:4px 0}#arrival-list::-webkit-scrollbar-thumb{background:hsla(0,0%,100%,.2);border-radius:4px;border:2px solid transparent;background-clip:padding-box;-webkit-transition:background .2s ease;transition:background .2s ease}#arrival-list::-webkit-scrollbar-thumb:hover{background:hsla(0,0%,100%,.35);background-clip:padding-box}.arrival-legend{display:flex;gap:12px;padding:12px 16px;background:linear-gradient(180deg,rgba(0,0,0,.3),rgba(0,0,0,.1));border-bottom:1px solid hsla(0,0%,100%,.08);flex-wrap:wrap;justify-content:center;font-size:11px}.legend-item{display:flex;align-items:center;gap:6px;padding:6px 10px;background:hsla(0,0%,100%,.04);border-radius:8px;border:1px solid hsla(0,0%,100%,.1);white-space:nowrap}.legend-color{width:12px;height:12px;border-radius:3px;border:1px solid hsla(0,0%,100%,.2);box-shadow:0 1px 3px rgba(0,0,0,.3)}.legend-label{color:#d0d0d0;font-weight:500;font-size:11px}#arrival-list li.arrival-item{display:flex;align-items:center;padding:14px 16px;border-bottom:1px solid hsla(0,0%,100%,.06);font-size:13px;transition:all var(--transition-base) var(--easing-smooth);min-height:60px;gap:12px;background:hsla(0,0%,100%,.02);margin:0 4px;border-radius:10px;margin-bottom:4px;border-left:4px solid transparent;will-change:transform,background-color}#arrival-list li.arrival-item:hover{background:hsla(0,0%,100%,.08);transform:translateX(4px);box-shadow:-4px 0 12px rgba(0,0,0,.15),0 2px 8px rgba(0,0,0,.1);border-left-width:5px}#arrival-list li.arrival-item:active{background:hsla(0,0%,100%,.12);transform:translateX(1px)}#arrival-list li.arrival-item:last-child{border-bottom:none}#arrival-list li.empty-state{flex-direction:column;align-items:center;justify-content:center;padding:32px 20px;text-align:center;min-height:100px;background:linear-gradient(135deg,hsla(0,0%,100%,.04),hsla(0,0%,100%,.02));border:1.5px dashed hsla(0,0%,100%,.15);border-radius:12px;margin:12px 8px;box-shadow:inset 0 2px 8px rgba(0,0,0,.1)}.empty-icon{font-size:32px;margin-bottom:8px;opacity:.7;display:block}.empty-text{color:hsla(0,0%,100%,.6);font-size:14px;font-weight:500;line-height:1.5;letter-spacing:-.1px}.line-color-dot{width:14px;height:14px;border-radius:50%;margin-right:0;border:2px solid hsla(0,0%,100%,.4);flex-shrink:0;box-shadow:0 2px 8px rgba(0,0,0,.3),inset 0 0 0 2px hsla(0,0%,100%,.1);transition:transform var(--transition-fast) var(--easing-smooth),box-shadow var(--transition-base) var(--easing-smooth);will-change:transform}#arrival-list li.arrival-item:hover .line-color-dot{transform:scale(1.15);box-shadow:0 3px 12px rgba(0,0,0,.4),inset 0 0 0 2px hsla(0,0%,100%,.2)}.arrival-line-name{flex-grow:1;text-align:left;font-weight:500;font-size:13px;line-height:1.4;color:#f5f5f5;display:flex;flex-direction:column;gap:3px;min-width:0}.arrival-line-name .line-name-text{font-weight:600;color:#fff;font-size:14px;letter-spacing:-.2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.arrival-line-name .line-number{font-size:11px;opacity:.75;font-weight:500;color:#b0b0b0;letter-spacing:.2px}.arrival-info{flex-direction:column;align-items:flex-end;gap:4px}.arrival-info,.follow-btn{display:flex;flex-shrink:0}.follow-btn{background:hsla(0,0%,100%,.1);border:1px solid hsla(0,0%,100%,.2);border-radius:6px;color:#fff;font-size:14px;cursor:pointer;padding:4px 8px;width:32px;height:32px;align-items:center;justify-content:center;transition:background var(--transition-base) var(--easing-smooth),transform var(--transition-fast) var(--easing-smooth),box-shadow var(--transition-base) var(--easing-smooth),border-color var(--transition-base) var(--easing-smooth);will-change:transform,background-color}.follow-btn:hover{background:hsla(0,0%,100%,.15);transform:scale(1.05);box-shadow:0 2px 8px rgba(0,0,0,.2)}.follow-btn.active{background:linear-gradient(135deg,rgba(79,172,254,.3),rgba(0,242,254,.3));border-color:rgba(79,172,254,.6);box-shadow:0 0 12px rgba(79,172,254,.4);animation:subtleGlow 2.5s var(--easing-smooth) infinite}.arrival-eta{font-weight:700;min-width:70px;text-align:center;color:#fff;font-size:13px;padding:8px 12px;background:hsla(0,0%,100%,.1);border-radius:8px;border:1px solid hsla(0,0%,100%,.15);box-shadow:0 2px 6px rgba(0,0,0,.15);transition:all .2s ease;white-space:nowrap}.arrival-punctuality{font-size:10px;font-weight:600;padding:3px 8px;border-radius:6px;white-space:nowrap;text-transform:uppercase;letter-spacing:.3px;position:relative;cursor:help;transition:all var(--transition-fast) var(--easing-smooth)}.arrival-punctuality:hover{filter:brightness(1.2)}.arrival-punctuality.no_horario{color:#66bb6a;background:rgba(76,175,80,.2);border:1px solid rgba(76,175,80,.4)}.arrival-punctuality.atrasado{color:#ff5252;background:rgba(244,67,54,.2);border:1px solid rgba(244,67,54,.4)}.arrival-punctuality.adiantado{color:#ffb74d;background:rgba(255,193,7,.2)}#arrival-list li:hover .arrival-eta{transform:scale(1.05);box-shadow:0 4px 10px rgba(0,0,0,.2)}@keyframes subtleGlow{0%,to{box-shadow:-4px 0 12px rgba(102,187,106,.3),0 2px 8px rgba(0,0,0,.1)}50%{box-shadow:-4px 0 18px rgba(102,187,106,.5),0 2px 8px rgba(0,0,0,.1)}}#arrival-list li.arrival-item.chegando{animation:subtleGlow 2.5s var(--easing-smooth) infinite}#arrival-list li.arrival-item.atrasado{background:linear-gradient(90deg,rgba(244,67,54,.12),rgba(244,67,54,.04));border-left-color:#ff5252}#arrival-list li.arrival-item.adiantado{background:linear-gradient(90deg,rgba(255,193,7,.12),rgba(255,193,7,.04));border-left-color:#ffb74d}#arrival-list li.arrival-item.no_horario{background:linear-gradient(90deg,rgba(76,175,80,.12),rgba(76,175,80,.04));border-left-color:#66bb6a}#arrival-list li.arrival-item.no_terminal{background:linear-gradient(90deg,rgba(79,195,247,.12),rgba(79,195,247,.04));border-left-color:#4fc3f7}#arrival-list li.arrival-item.is-following{background:linear-gradient(90deg,rgba(79,172,254,.2),rgba(0,242,254,.15));border-left-color:#4facfe;box-shadow:-4px 0 16px rgba(79,172,254,.3),0 2px 8px rgba(0,0,0,.1)}.bus-icon-wrapper{display:inline-block}.bus-icon-svg{width:30px;height:30px;border-radius:50% 50% 50% 0;border:2px solid #fff;box-shadow:0 0 10px rgba(0,0,0,.6);transform:rotate(-45deg);display:flex;justify-content:center;align-items:center}.bus-icon-number{transform:rotate(45deg);color:#fff;font-size:14px;font-weight:700;font-family:Arial,sans-serif;text-shadow:0 0 3px #000}.stop-icon-custom:hover,.stop-icon:hover{transform:scale(1.2);transition:transform .15s ease}.leaflet-marker-icon.stop-icon-custom{width:6px!important;height:6px!important;margin-left:-3px!important;margin-top:-3px!important;pointer-events:auto;background:transparent!important;border:none!important}.leaflet-marker-icon.stop-icon{width:14px!important;height:14px!important;margin-left:-7px!important;margin-top:-7px!important;pointer-events:auto;touch-action:none}.leaflet-marker-icon.stop-icon.terminal{width:28px!important;height:28px!important;margin-left:-14px!important;margin-top:-14px!important;touch-action:none}.leaflet-marker-pane div.leaflet-marker-icon.stop-icon,.leaflet-marker-pane div.leaflet-marker-icon.stop-icon-custom,.leaflet-marker-pane img.leaflet-marker-icon.stop-icon{box-sizing:border-box}.stop-icon-custom div{display:block!important;width:100%!important;height:100%!important}@media (max-width:640px){#arrival-list{max-height:22vh;font-size:14px}.panel-header{font-size:15px;padding:10px}}#locate-btn{position:fixed;bottom:calc(18px + 50vh);left:8px;z-index:1001;width:38px;height:38px;border-radius:50%;background:hsla(0,0%,100%,.95);border:2px solid #007bff;box-shadow:0 2px 6px rgba(0,0,0,.3);cursor:pointer;font-size:18px;display:flex;align-items:center;justify-content:center;transition:background var(--transition-base) var(--easing-smooth),color var(--transition-base) var(--easing-smooth),transform var(--transition-fast) var(--easing-smooth),box-shadow var(--transition-base) var(--easing-smooth);will-change:transform,box-shadow}#locate-btn:hover{background:#007bff;color:#fff;transform:scale(1.1)}#locate-btn.active{background:#007bff;color:#fff;box-shadow:0 0 15px rgba(0,123,255,.6)}#follow-btn{position:fixed;bottom:calc(18px + 50vh);left:56px;z-index:1001;width:38px;height:38px;border-radius:50%;background:hsla(0,0%,100%,.95);border:2px solid #555;box-shadow:0 2px 6px rgba(0,0,0,.3);cursor:pointer;font-size:16px;display:flex;align-items:center;justify-content:center;transition:background var(--transition-base) var(--easing-smooth),transform var(--transition-fast) var(--easing-smooth),box-shadow var(--transition-base) var(--easing-smooth)}#follow-btn:hover{background:#eee;transform:scale(1.05)}#follow-btn.active{background:#4facfe;color:#fff;box-shadow:0 0 12px rgba(79,172,254,.5)}#follow-btn.schedule-panel-open,#locate-btn.schedule-panel-open{z-index:999!important}.user-location-icon{z-index:401}@keyframes slideInDown{0%{opacity:0;transform:translateY(-30px)}to{opacity:1;transform:translateY(0)}}@keyframes fadeInUp{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}#nearby-stops-panel{position:fixed;top:8px;left:8px;width:420px;background:linear-gradient(135deg,rgba(15,23,42,.97),rgba(30,41,59,.97));backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);border:1px solid rgba(100,200,255,.3);border-radius:14px;box-shadow:0 8px 32px rgba(0,0,0,.3),inset 0 1px 1px hsla(0,0%,100%,.1);font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,sans-serif;z-index:999;max-height:85vh;display:flex;flex-direction:column;color:#fff;animation:slideInDown .4s cubic-bezier(.34,1.56,.64,1);transition:max-height .3s ease,height .3s ease,box-shadow .3s ease,transform .3s ease;will-change:transform,max-height;pointer-events:auto;touch-action:pan-y pinch-zoom}#nearby-stops-panel.collapsed{max-height:50px;height:50px}#nearby-stops-panel .panel-content{display:flex;flex-direction:column;overflow:hidden;flex:1;min-height:0;max-height:calc(85vh - 60px);position:relative;pointer-events:auto;touch-action:pan-y}#nearby-stops-panel:hover{box-shadow:0 12px 48px rgba(0,0,0,.4),inset 0 1px 1px hsla(0,0%,100%,.15)}#nearby-stops-panel .panel-header{background:linear-gradient(135deg,rgba(59,130,246,.25),rgba(59,130,246,.1));color:#fff;padding:14px 16px;font-weight:700;border-bottom:1px solid rgba(100,200,255,.2);border-radius:14px 14px 0 0;display:flex;justify-content:space-between;align-items:center;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none;transition:all .3s cubic-bezier(.34,1.56,.64,1);font-size:15px;letter-spacing:.3px}#nearby-stops-panel .panel-header:hover{background:linear-gradient(135deg,rgba(59,130,246,.4),rgba(59,130,246,.2))}.panel-title{font-size:15px;font-weight:700;color:#e0f2fe;letter-spacing:.3px}.collapse-btn{background:transparent;border:none;color:hsla(0,0%,100%,.7);cursor:pointer;font-size:16px;padding:4px;transition:all .3s ease;transform:rotate(0deg)}.collapse-btn.rotated{transform:rotate(180deg)}.collapse-btn:hover{color:#fff}#nearby-stops-list{list-style:none;padding:12px;margin:0;overflow-y:auto!important;overflow-x:hidden;flex:1;min-height:0;max-height:100%;display:flex;flex-direction:column;gap:10px;-webkit-overflow-scrolling:touch;scroll-behavior:smooth;will-change:scroll-position;touch-action:pan-y;overscroll-behavior:contain;position:relative;-ms-overflow-style:-ms-autohiding-scrollbar;pointer-events:auto}.stop-card{background:hsla(0,0%,100%,.06);border:1px solid rgba(100,200,255,.2);border-radius:10px;padding:12px;cursor:pointer;transition:all .3s cubic-bezier(.34,1.56,.64,1);animation:fadeInUp .4s ease-out forwards;opacity:0;flex-shrink:0;touch-action:manipulation}.stop-card:first-child{animation-delay:0s}.stop-card:nth-child(2){animation-delay:.1s}.stop-card:nth-child(3){animation-delay:.2s}.stop-card:nth-child(4){animation-delay:.3s}.stop-card:nth-child(5){animation-delay:.4s}.stop-card:nth-child(n+6){animation-delay:.5s}.stop-card:hover{background:rgba(59,130,246,.15);border-color:rgba(100,200,255,.4);transform:translateY(-2px);box-shadow:0 4px 12px rgba(59,130,246,.2)}.stop-card-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:10px;padding-bottom:10px;border-bottom:1px solid rgba(100,200,255,.15)}.stop-name{font-size:14px;font-weight:700;color:#e0f2fe;letter-spacing:.2px}.stop-distance-badge{background:linear-gradient(135deg,rgba(59,130,246,.4),rgba(59,130,246,.2));color:#86efac;padding:4px 10px;border-radius:6px;font-size:12px;font-weight:700;border:1px solid rgba(100,200,255,.3);white-space:nowrap}.stop-card-body{gap:10px}.info-section,.stop-card-body{display:flex;flex-direction:column}.info-section{gap:6px}.info-section label{font-size:11px;font-weight:700;color:hsla(0,0%,100%,.6);text-transform:uppercase;letter-spacing:.5px}.lines-container{display:flex;flex-wrap:wrap;gap:6px}.line-badge-item{display:inline-flex;align-items:center;justify-content:center;padding:4px 8px;border-left:3px solid;background:hsla(0,0%,100%,.08);border-radius:5px;cursor:pointer;transition:all .3s ease;border-top:1px solid hsla(0,0%,100%,.1);border-right:1px solid hsla(0,0%,100%,.1)}.line-badge-item:hover{background:hsla(0,0%,100%,.12);transform:translateY(-1px)}.line-badge-number{display:inline-flex;align-items:center;justify-content:center;min-width:28px;height:28px;border-radius:4px;color:#fff;font-weight:700;font-size:12px;text-shadow:0 1px 2px rgba(0,0,0,.3);box-shadow:0 2px 4px rgba(0,0,0,.2)}.lines-details{display:flex;flex-direction:column;gap:6px;max-height:200px;overflow-y:auto}.line-detail-item{display:flex;justify-content:space-between;align-items:center;padding:8px 10px;background:hsla(0,0%,100%,.04);border-left:3px solid;border-radius:5px;font-size:12px;transition:all .3s ease;cursor:pointer}.line-detail-item:hover{background:hsla(0,0%,100%,.08);transform:translateX(2px)}.line-detail-item.eta-alert{animation:pulseEta 1.5s ease-in-out infinite;background:hsla(0,91%,71%,.15);border-left-color:#ef4444}.line-detail-item.eta-passed{background:hsla(0,0%,39%,.15);border-left-color:#888;opacity:.7}.detail-left{display:flex;align-items:center;gap:6px}.line-label{font-weight:600;color:#e0f2fe}.detail-right{display:flex;align-items:center;gap:8px}.detail-distance{background:rgba(34,197,94,.2);color:#86efac;padding:3px 8px;border-radius:4px;font-size:11px;font-weight:700;border:1px solid rgba(34,197,94,.4)}.detail-distance.passed{background:hsla(0,0%,39%,.3);color:#aaa;border-color:hsla(0,0%,39%,.5)}.detail-distance.muito-longe,.detail-eta.muito-longe{opacity:.7;background:rgba(156,163,175,.2);color:rgba(209,213,219,.9);border-color:rgba(156,163,175,.3);font-weight:600}.detail-eta{background:hsla(0,91%,71%,.2);color:#fca5a5;border-radius:4px;border:1px solid hsla(0,91%,71%,.4)}.detail-eta,.detail-speed{padding:3px 8px;font-size:11px;font-weight:700}.detail-speed{background:rgba(59,130,246,.2);color:#93c5fd;border-radius:4px;border:1px solid rgba(59,130,246,.4)}.detail-unavailable{color:hsla(0,0%,100%,.5);font-size:12px}#nearby-stops-list li:hover{background:hsla(0,0%,100%,.1);transform:translateX(4px);box-shadow:-2px 0 8px rgba(0,123,255,.3)}#nearby-stops-list li:active{transform:translateX(2px)}#nearby-stops-list li:last-child{border-bottom:none}@keyframes pulseEta{0%,to{background:hsla(0,91%,71%,.15);box-shadow:0 0 0 0 hsla(0,91%,71%,.4)}50%{background:hsla(0,91%,71%,.25);box-shadow:0 0 8px 2px hsla(0,91%,71%,.3)}}#nearby-stops-list::-webkit-scrollbar{width:6px}#nearby-stops-list::-webkit-scrollbar-track{background:hsla(0,0%,100%,.05);border-radius:10px}#nearby-stops-list::-webkit-scrollbar-thumb{background:linear-gradient(180deg,rgba(59,130,246,.6),rgba(59,130,246,.4));border-radius:10px;border:2px solid hsla(0,0%,100%,.05)}#nearby-stops-list::-webkit-scrollbar-thumb:hover{background:linear-gradient(180deg,rgba(59,130,246,.8),rgba(59,130,246,.6));border-color:rgba(100,200,255,.2)}#nearby-stops-list{scrollbar-color:rgba(59,130,246,.6) hsla(0,0%,100%,.05);scrollbar-width:thin}.lines-details::-webkit-scrollbar{width:4px}.lines-details::-webkit-scrollbar-track{background:hsla(0,0%,100%,.03);border-radius:5px}.lines-details::-webkit-scrollbar-thumb{background:rgba(59,130,246,.5);border-radius:5px}.lines-details::-webkit-scrollbar-thumb:hover{background:rgba(59,130,246,.7)}@media (max-width:768px){#nearby-stops-panel{width:calc(100% - 16px);max-width:none;max-height:60vh;height:60vh;overflow:hidden;transition:max-height .3s ease,height .3s ease,box-shadow .3s ease}#nearby-stops-panel.collapsed{max-height:48px;height:48px}#nearby-stops-panel .panel-header{padding:12px 14px;font-size:14px;flex-shrink:0}#nearby-stops-panel .panel-content{overflow:hidden;display:flex;flex-direction:column;flex:1;min-height:0;height:100%}#nearby-stops-list{padding:10px;gap:8px;flex:1;min-height:0;overflow-y:auto;overflow-x:hidden;-webkit-overflow-scrolling:touch;will-change:scroll-position}.stop-card{padding:10px;flex-shrink:0}.stop-card-header{margin-bottom:8px;padding-bottom:8px}.stop-name{font-size:13px}.stop-distance-badge{font-size:11px;padding:3px 8px}.line-badge-item{padding:4px 8px}.line-badge-number{min-width:24px;height:24px;font-size:11px}.line-detail-item{padding:7px 8px;font-size:11px}.detail-distance,.detail-eta{padding:2px 6px;font-size:10px}.line-label{font-size:11px}.arrival-legend{gap:6px;padding:8px 12px;font-size:10px}.legend-item{gap:4px;padding:4px 8px;font-size:9px}.legend-color{width:10px;height:10px}.legend-label{font-size:10px}#line-filter-panel{top:8px;right:8px;left:auto;max-width:calc(100% - 16px);width:auto}.filter-toggle-btn{padding:8px 12px;font-size:11px;min-height:32px}.filter-content{max-height:140px;padding:8px;gap:6px}.filter-chip{padding:8px 12px;font-size:11px;min-height:44px;border-radius:14px}.chip-name{font-size:12px}.chip-number{font-size:10px}.chip-dot{width:7px;height:7px}#schedule-btn{position:fixed!important;top:50px!important;right:8px!important;width:38px!important;height:38px!important;font-size:16px!important;z-index:1001!important;box-shadow:0 3px 10px rgba(0,0,0,.4)!important;display:flex!important;visibility:visible!important;opacity:1!important;margin:0!important}#schedule-btn:hover{transform:translateY(-1px) scale(1.05)}#schedule-btn:active{transform:translateY(0) scale(.95)}.schedule-overlay{position:fixed!important;top:0!important;left:0!important;right:0!important;bottom:0!important;background:rgba(0,0,0,.85)!important;backdrop-filter:blur(8px)!important;-webkit-backdrop-filter:blur(8px)!important;z-index:1999!important;animation:fadeIn .2s ease!important}.hidden-when-schedule-open{opacity:.15!important;pointer-events:none!important;transition:opacity .3s ease!important;transform:scale(.98)!important}#follow-btn.schedule-panel-open,#locate-btn.schedule-panel-open{z-index:999!important}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}#schedule-panel.mobile{position:fixed!important;width:calc(100% - 24px)!important;max-width:420px!important;max-height:90vh!important;min-height:350px!important;top:50%!important;left:50%!important;transform:translate(-50%,-50%)!important;margin:0!important;padding:0!important;border-radius:24px!important;overflow:hidden!important;display:flex!important;flex-direction:column!important;background:linear-gradient(135deg,rgba(25,25,30,.98),rgba(20,20,25,.98))!important;backdrop-filter:blur(24px) saturate(180%)!important;-webkit-backdrop-filter:blur(24px) saturate(180%)!important;border:1px solid hsla(0,0%,100%,.15)!important;box-shadow:0 20px 60px rgba(0,0,0,.8),inset 0 0 0 1px hsla(0,0%,100%,.08)!important;z-index:2000!important;box-sizing:border-box!important;animation:slideUpMobile .3s ease-out!important}@keyframes slideUpMobile{0%{opacity:0;transform:translate(-50%,-45%)}to{opacity:1;transform:translate(-50%,-50%)}}#schedule-panel.mobile .schedule-header{padding:16px 18px!important;flex-shrink:0;display:flex!important;align-items:center!important;justify-content:space-between!important;width:100%!important;box-sizing:border-box!important;background:linear-gradient(180deg,hsla(0,0%,100%,.05),hsla(0,0%,100%,.02))!important;border-bottom:1px solid hsla(0,0%,100%,.1)!important}#schedule-panel.mobile .schedule-title-group{display:flex!important;align-items:center!important;gap:8px!important;flex-wrap:wrap!important;flex:1!important;min-width:0!important}#schedule-panel.mobile .schedule-title{font-size:15px!important;font-weight:600!important;line-height:1.4!important;color:hsla(0,0%,100%,.95)!important;letter-spacing:.3px!important}#schedule-panel.mobile .schedule-line-badge{font-size:13px!important;font-weight:700!important;padding:6px 12px!important;min-width:36px!important;border-radius:8px!important;box-shadow:0 2px 8px rgba(0,0,0,.3)!important;border:1px solid hsla(0,0%,100%,.2)!important}#schedule-panel.mobile .close-btn{width:32px!important;height:32px!important;font-size:20px!important;padding:6px!important;border-radius:8px!important;background:hsla(0,0%,100%,.1)!important;transition:all .2s ease!important}#schedule-panel.mobile .close-btn:active{background:hsla(0,0%,100%,.2)!important;transform:scale(.95)!important}#schedule-panel.mobile .schedule-tabs{padding:10px 12px!important;gap:8px!important;flex-shrink:0;background:rgba(0,0,0,.25)!important;border-bottom:1px solid hsla(0,0%,100%,.1)!important}#schedule-panel.mobile .schedule-tabs.direction-tabs{margin-top:0!important;padding-top:0!important;border-top:none!important}#schedule-panel.mobile .tab-btn{padding:12px 14px!important;font-size:13px!important;font-weight:600!important;flex:1;min-width:0;border-radius:12px!important;transition:all .2s ease!important;background:hsla(0,0%,100%,.1)!important;border:1px solid hsla(0,0%,100%,.2)!important;color:hsla(0,0%,100%,.9)!important;text-shadow:0 1px 2px rgba(0,0,0,.3)!important}#schedule-panel.mobile .tab-btn.active{background:linear-gradient(135deg,rgba(79,172,254,.5),rgba(0,242,254,.5))!important;border-color:rgba(79,172,254,.8)!important;color:#fff!important;font-weight:700!important;box-shadow:0 4px 16px rgba(79,172,254,.5),inset 0 0 0 1px rgba(79,172,254,.4)!important;text-shadow:0 1px 3px rgba(0,0,0,.5)!important}#schedule-panel.mobile .tab-btn:active{transform:scale(.98)!important}#schedule-panel.mobile .schedule-content{max-height:calc(90vh - 240px)!important;padding:16px!important;overflow-y:auto!important;overflow-x:hidden!important;flex:1!important;min-height:0!important;-webkit-overflow-scrolling:touch;width:100%!important;box-sizing:border-box!important;scrollbar-width:thin!important;scrollbar-color:hsla(0,0%,100%,.2) transparent!important}#schedule-panel.mobile .schedule-content::-webkit-scrollbar{width:6px!important}#schedule-panel.mobile .schedule-content::-webkit-scrollbar-track{background:transparent!important}#schedule-panel.mobile .schedule-content::-webkit-scrollbar-thumb{background:hsla(0,0%,100%,.2)!important;border-radius:3px!important}#schedule-panel.mobile .schedule-content::-webkit-scrollbar-thumb:hover{background:hsla(0,0%,100%,.3)!important}#schedule-panel.mobile .time-grid{display:grid!important;grid-template-columns:repeat(3,1fr)!important;gap:10px!important;width:100%!important;margin:0!important;padding:0!important;list-style:none!important;box-sizing:border-box!important}#schedule-panel.mobile .time-grid>*{display:block!important;box-sizing:border-box!important}#schedule-panel.mobile .time-slot{padding:12px 8px!important;font-size:13px!important;font-weight:500!important;min-height:44px!important;display:flex!important;align-items:center!important;justify-content:center!important;box-sizing:border-box!important;background:hsla(0,0%,100%,.08)!important;border:1px solid hsla(0,0%,100%,.12)!important;border-radius:12px!important;color:hsla(0,0%,100%,.9)!important;transition:all .2s ease!important}#schedule-panel.mobile .time-slot:active{transform:scale(.97)!important;background:hsla(0,0%,100%,.12)!important}#schedule-panel.mobile .time-slot.next-departure{font-size:14px!important;font-weight:700!important;background:linear-gradient(135deg,rgba(79,172,254,.25),rgba(0,242,254,.25))!important;border-color:rgba(79,172,254,.5)!important;color:#4facfe!important;box-shadow:0 4px 12px rgba(79,172,254,.3)!important;animation:pulseNext 2s ease-in-out infinite!important}@keyframes pulseNext{0%,to{box-shadow:0 4px 12px rgba(79,172,254,.3)}50%{box-shadow:0 4px 16px rgba(79,172,254,.5)}}#schedule-panel.mobile .schedule-footer{margin-top:0!important;padding:16px 18px!important;font-size:13px!important;flex-shrink:0!important;width:100%!important;box-sizing:border-box!important;display:block!important;text-align:center!important;background:linear-gradient(180deg,hsla(0,0%,100%,.03),hsla(0,0%,100%,.05))!important;border-top:1px solid hsla(0,0%,100%,.1)!important;color:hsla(0,0%,100%,.8)!important}#schedule-panel.mobile .schedule-footer b{font-size:15px!important;font-weight:700!important;color:#4facfe!important}#schedule-panel.mobile .empty-schedule{padding:40px 20px!important;font-size:14px!important;color:hsla(0,0%,100%,.6)!important;text-align:center!important}#arrival-panel{position:fixed;width:calc(100% - 16px);max-width:none;max-height:50vh;bottom:8px;left:8px;right:8px;font-size:12px;z-index:1000;display:flex!important;visibility:visible!important;opacity:1!important;box-shadow:0 4px 16px rgba(0,0,0,.4)}#arrival-panel .panel-header{padding:10px 12px;font-size:13px;min-height:40px}#arrival-panel .panel-header span{font-size:13px}#arrival-list{max-height:calc(50vh - 120px);font-size:12px}#arrival-list::-webkit-scrollbar{width:6px}#arrival-list li{padding:10px 12px;font-size:12px;min-height:52px;gap:10px;touch-action:manipulation;-webkit-tap-highlight-color:rgba(255,255,255,.1)}.line-color-dot{width:14px;height:14px;border-width:2px;box-shadow:0 0 8px rgba(0,0,0,.4)}.arrival-line-name{font-size:12px;line-height:1.4;gap:2px}.arrival-line-name .line-name-text{font-weight:600;color:#fff;font-size:12px}.arrival-line-name .line-number{font-size:10px;opacity:.9;font-weight:500}.arrival-eta{font-size:12px;min-width:55px;font-weight:700;padding:6px 10px;border-radius:8px}.collapse-btn,.follow-btn{width:28px;height:28px;font-size:12px;padding:2px}.collapse-btn{min-width:28px;min-height:28px}#nearby-stops-panel{position:fixed;max-width:calc(100% - 16px);max-height:28vh;top:8px;left:8px;right:8px;z-index:999}#nearby-stops-panel .panel-header{padding:8px 12px;font-size:12px;min-height:36px}#nearby-stops-list{font-size:11px;max-height:24vh}#nearby-stops-list li{padding:8px 10px;gap:6px;min-height:44px}.stop-distance{font-size:10px;padding:2px 5px;min-width:38px}.stop-name{font-size:11px;line-height:1.3}.stop-info{gap:3px}.line-badge{font-size:9px;padding:2px 5px}#locate-btn{width:40px;height:40px;font-size:18px;bottom:calc(18px + 50vh);left:8px;z-index:1001;box-shadow:0 3px 10px rgba(0,0,0,.4)}.panel-content{max-height:500px}#arrival-panel.collapsed{max-height:auto;min-height:40px}#arrival-panel.collapsed .panel-header{border-bottom:none;border-radius:8px;background:rgba(0,123,255,.5);box-shadow:0 2px 6px rgba(0,123,255,.3)}#arrival-panel.collapsed.mobile .panel-header:after{content:" (Toque para expandir)";font-size:11px;font-weight:400;opacity:.9;margin-left:6px;display:inline-block}#arrival-panel{pointer-events:auto!important;touch-action:manipulation}#arrival-panel .panel-header{font-weight:600}#arrival-list li+li{margin-top:2px}#arrival-list li.no_terminal{background:rgba(79,195,247,.05)}#arrival-list li.chegando{background:rgba(102,187,106,.05)}#arrival-list li.empty-state{padding:32px 20px;min-height:100px;margin:12px 16px}.empty-icon{font-size:40px;margin-bottom:12px}.empty-text{font-size:14px}.header-text-full{display:none}.header-text-mobile{display:inline}}@media (min-width:769px){.header-text-full{display:inline}.header-text-mobile{display:none}#arrival-panel,#nearby-stops-panel{position:absolute;z-index:401}#schedule-btn{position:fixed;top:54px;right:8px;z-index:1001;width:40px;height:40px;border-radius:50%;background:linear-gradient(135deg,rgba(40,40,45,.95),rgba(35,35,40,.95));border:1px solid hsla(0,0%,100%,.15);color:#fff;font-size:18px;cursor:pointer;backdrop-filter:blur(12px) saturate(180%);-webkit-backdrop-filter:blur(12px) saturate(180%);box-shadow:0 4px 12px rgba(0,0,0,.3),inset 0 0 0 1px hsla(0,0%,100%,.05);display:flex;align-items:center;justify-content:center;transition:all .25s cubic-bezier(.4,0,.2,1)}#schedule-btn:hover{background:linear-gradient(135deg,rgba(50,50,55,.95),rgba(45,45,50,.95));transform:translateY(-2px) scale(1.05);box-shadow:0 6px 16px rgba(0,0,0,.4),inset 0 0 0 1px hsla(0,0%,100%,.1)}#schedule-btn:active{transform:translateY(0) scale(.95)}#schedule-btn.active{border-color:rgba(79,172,254,.6);color:#4facfe;background:linear-gradient(135deg,rgba(79,172,254,.2),rgba(0,242,254,.2));box-shadow:0 4px 16px rgba(79,172,254,.3),inset 0 0 0 1px rgba(79,172,254,.2)}#schedule-panel{position:fixed;top:50%;left:50%;transform:translate(-50%,-50%);width:90%;max-width:380px;background:linear-gradient(135deg,rgba(30,30,35,.98),rgba(25,25,30,.98));backdrop-filter:blur(20px) saturate(180%);-webkit-backdrop-filter:blur(20px) saturate(180%);border:1px solid hsla(0,0%,100%,.12);border-radius:16px;box-shadow:0 20px 60px rgba(0,0,0,.7),inset 0 0 0 1px hsla(0,0%,100%,.05);z-index:2000;display:flex!important;flex-direction:column!important;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,sans-serif;animation:fadeInPanel var(--transition-base) var(--easing-smooth);overflow:hidden;box-sizing:border-box!important}@keyframes fadeInPanel{0%{opacity:0;transform:translate(-50%,-45%) scale(.95)}to{opacity:1;transform:translate(-50%,-50%) scale(1)}}.schedule-header{padding:16px 20px;border-bottom:1px solid hsla(0,0%,100%,.08);display:flex;justify-content:space-between;align-items:center;background:linear-gradient(180deg,hsla(0,0%,100%,.05),transparent);backdrop-filter:blur(10px)}.schedule-title-group{display:flex;align-items:center;gap:12px}.schedule-line-badge{padding:6px 12px;border-radius:8px;font-weight:700;color:#fff;font-size:14px;text-shadow:0 1px 3px rgba(0,0,0,.4);box-shadow:0 2px 8px rgba(0,0,0,.3),inset 0 0 0 1px hsla(0,0%,100%,.1);letter-spacing:.5px;min-width:36px;text-align:center}.schedule-title{color:#f0f0f0;font-weight:600;font-size:15px;letter-spacing:-.3px}.close-btn{background:hsla(0,0%,100%,.08);border:none;color:#bbb;font-size:20px;cursor:pointer;padding:6px 10px;border-radius:8px;transition:background var(--transition-fast) var(--easing-smooth),color var(--transition-fast) var(--easing-smooth),transform var(--transition-fast) var(--easing-smooth);line-height:1;width:32px;height:32px;display:flex;align-items:center;justify-content:center;will-change:transform}.close-btn:hover{background:hsla(0,0%,100%,.15);color:#fff;transform:scale(1.1)}.schedule-tabs{display:flex;padding:12px;gap:8px;background:rgba(0,0,0,.2);border-bottom:1px solid hsla(0,0%,100%,.08)}.tab-btn{flex:1;padding:10px 12px;background:hsla(0,0%,100%,.05);border:1px solid hsla(0,0%,100%,.1);border-radius:10px;color:#aaa;font-size:13px;font-weight:500;cursor:pointer;transition:background var(--transition-base) var(--easing-smooth),color var(--transition-base) var(--easing-smooth),border-color var(--transition-base) var(--easing-smooth),box-shadow var(--transition-base) var(--easing-smooth);letter-spacing:-.2px;will-change:background-color}.tab-btn:hover{background:hsla(0,0%,100%,.08);color:#ddd;border-color:hsla(0,0%,100%,.15)}.tab-btn.active{background:linear-gradient(135deg,rgba(79,172,254,.25),rgba(0,242,254,.25));color:#fff;border-color:rgba(79,172,254,.4);font-weight:600;box-shadow:0 2px 8px rgba(79,172,254,.2)}.schedule-tabs.direction-tabs{margin-top:0;padding-top:0;border-top:none}.direction-tab{font-size:12px!important;padding:8px 10px!important;font-weight:600!important;color:hsla(0,0%,100%,.9)!important;text-shadow:0 1px 2px rgba(0,0,0,.3)!important}.direction-tab.active{background:linear-gradient(135deg,rgba(79,172,254,.4),rgba(0,242,254,.4))!important;color:#fff!important;border-color:rgba(79,172,254,.7)!important;font-weight:700!important;box-shadow:0 4px 12px rgba(79,172,254,.4),inset 0 0 0 1px rgba(79,172,254,.3)!important}.schedule-content{padding:20px!important;max-height:55vh!important;overflow-y:auto!important;overflow-x:hidden!important;display:flex!important;flex-direction:column!important}.schedule-content,.time-grid{width:100%!important;box-sizing:border-box!important}.time-grid{display:grid!important;grid-template-columns:repeat(4,1fr)!important;gap:10px!important;margin:0!important;padding:0!important;list-style:none!important}.time-grid>*{display:block!important}.time-grid>*,.time-slot{box-sizing:border-box!important}.time-slot{background:hsla(0,0%,100%,.06)!important;color:#e0e0e0!important;padding:10px 8px!important;border-radius:10px!important;text-align:center!important;font-size:13px!important;font-weight:500!important;border:1px solid hsla(0,0%,100%,.08)!important;transition:background var(--transition-base) var(--easing-smooth),transform var(--transition-fast) var(--easing-smooth),box-shadow var(--transition-base) var(--easing-smooth);font-variant-numeric:tabular-nums;letter-spacing:.5px;will-change:transform;display:flex!important;align-items:center!important;justify-content:center!important;min-height:40px!important;width:100%!important;margin:0!important;float:none!important;clear:none!important}.time-slot:hover{background:hsla(0,0%,100%,.1);transform:translateY(-1px);box-shadow:0 2px 6px rgba(0,0,0,.2)}.time-slot.next-departure{background:linear-gradient(135deg,rgba(76,175,80,.25),rgba(56,142,60,.25));color:#66bb6a;font-weight:700;border-color:rgba(76,175,80,.5);box-shadow:0 0 16px rgba(76,175,80,.3),0 2px 8px rgba(76,175,80,.2);animation:pulseNext 2.5s var(--easing-smooth) infinite;font-size:14px}@keyframes pulseNext{0%,to{box-shadow:0 0 16px rgba(76,175,80,.3),0 2px 8px rgba(76,175,80,.2)}50%{box-shadow:0 0 24px rgba(76,175,80,.4),0 4px 12px rgba(76,175,80,.3)}}.schedule-footer{margin-top:20px!important;padding:16px!important;border-top:1px solid hsla(0,0%,100%,.08)!important;text-align:center!important;background:linear-gradient(135deg,rgba(76,175,80,.15),rgba(56,142,60,.15))!important;border-radius:12px!important;border:1px solid rgba(76,175,80,.2)!important;color:#ccc!important;font-size:13px!important;font-weight:500!important;flex-shrink:0!important;width:100%!important;box-sizing:border-box!important}.schedule-footer b{color:#66bb6a!important;font-size:16px!important;font-weight:700!important;letter-spacing:.5px!important}.empty-schedule{text-align:center!important;padding:40px 20px!important;color:#888!important;font-style:italic!important;font-size:14px!important;width:100%!important;box-sizing:border-box!important}.schedule-content::-webkit-scrollbar{width:8px}.schedule-content::-webkit-scrollbar-track{background:hsla(0,0%,100%,.03);border-radius:4px}.schedule-content::-webkit-scrollbar-thumb{background:hsla(0,0%,100%,.15);border-radius:4px;border:2px solid transparent;background-clip:padding-box}.schedule-content::-webkit-scrollbar-thumb:hover{background:hsla(0,0%,100%,.25);background-clip:padding-box}#tile-layer-control{position:fixed;bottom:100px;right:20px;z-index:1000;font-family:inherit;display:flex;flex-direction:column;gap:8px}#tile-layer-control.mobile{bottom:80px;right:10px}.tile-control-btn{width:44px;height:44px;border-radius:50%;border:2px solid hsla(0,0%,100%,.3);background:hsla(0,0%,100%,.95);color:#333;font-size:20px;cursor:pointer;display:flex;align-items:center;justify-content:center;position:relative;box-shadow:0 2px 8px rgba(0,0,0,.15);transition:background var(--transition-base) var(--easing-smooth),transform var(--transition-fast) var(--easing-smooth),box-shadow var(--transition-base) var(--easing-smooth),border-color var(--transition-base) var(--easing-smooth);will-change:transform}.tile-control-btn:hover{transform:scale(1.1);box-shadow:0 4px 12px rgba(0,0,0,.2)}.tile-control-btn:active{transform:scale(.95)}.status-indicator{position:absolute;bottom:2px;right:2px;width:12px;height:12px;border-radius:50%;border:2px solid #fff;box-shadow:0 0 4px rgba(0,0,0,.3);animation:pulse-none 2s ease-in-out infinite}.indicator-ok{background:#4caf50;animation:pulse-ok 2s ease-in-out infinite}.indicator-loading{background:#ff9800;animation:pulse-loading 1s linear infinite}.indicator-error{background:#f44336;animation:pulse-error 1.5s ease-in-out infinite}@keyframes pulse-ok{0%,to{box-shadow:0 0 4px rgba(76,175,80,.4)}50%{box-shadow:0 0 8px rgba(76,175,80,.8)}}@keyframes pulse-loading{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}@keyframes pulse-error{0%,to{box-shadow:0 0 4px rgba(244,67,54,.4)}50%{box-shadow:0 0 8px rgba(244,67,54,.8)}}.tile-layer-menu{background:#fff;border-radius:12px;box-shadow:0 4px 16px rgba(0,0,0,.15);overflow:hidden;min-width:240px;animation:slideUp .3s var(--easing-smooth);border:1px solid rgba(0,0,0,.08)}@keyframes slideUp{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}.menu-header{padding:14px 16px;border-bottom:1px solid rgba(0,0,0,.08);background:linear-gradient(135deg,rgba(79,172,254,.08),rgba(0,242,254,.08));display:flex;justify-content:space-between;align-items:center}.menu-title{font-size:14px;font-weight:600;color:#333;letter-spacing:.3px}.menu-close{background:none;border:none;color:#999;font-size:18px;cursor:pointer;padding:0;width:24px;height:24px;display:flex;align-items:center;justify-content:center;transition:color var(--transition-fast) var(--easing-smooth),transform var(--transition-fast) var(--easing-smooth)}.menu-close:hover{color:#333;transform:scale(1.15)}.layers-list{max-height:300px;overflow-y:auto;padding:8px}.layer-option{width:100%;padding:12px 14px;text-align:left;background:none;border:1px solid rgba(0,0,0,.08);border-radius:8px;color:#555;font-size:13px;font-weight:500;cursor:pointer;margin-bottom:6px;display:flex;justify-content:space-between;align-items:center;transition:background var(--transition-base) var(--easing-smooth),color var(--transition-base) var(--easing-smooth),border-color var(--transition-base) var(--easing-smooth),transform var(--transition-fast) var(--easing-smooth);will-change:background-color}.layer-option:hover{background:rgba(79,172,254,.08);border-color:rgba(79,172,254,.2);color:#333;transform:translateX(4px)}.layer-option.active{background:linear-gradient(135deg,rgba(79,172,254,.15),rgba(0,242,254,.15));border-color:rgba(79,172,254,.3);color:#1976d2;font-weight:600;box-shadow:0 2px 6px rgba(79,172,254,.2)}.layer-option.available{opacity:1}.layer-option.error{opacity:.7}.layer-name{flex:1}.layer-active-badge{font-size:14px;color:#4caf50;font-weight:700;margin-left:8px}.layer-status-badge{font-size:14px;color:#ff9800;margin-left:8px}.status-footer{padding:12px 16px;border-top:1px solid rgba(0,0,0,.08);background:rgba(0,0,0,.02);font-size:12px}.status-detail{display:flex;gap:8px;margin-bottom:4px}.detail-label{color:#666;font-weight:600}.status-text-ok{color:#4caf50;font-weight:600}.status-text-loading{color:#ff9800;font-weight:600}.status-text-error{color:#f44336;font-weight:600}.retry-info{color:#999;margin-top:4px;font-size:11px}.layers-list::-webkit-scrollbar{width:6px}.layers-list::-webkit-scrollbar-track{background:transparent}.layers-list::-webkit-scrollbar-thumb{background:rgba(0,0,0,.15);border-radius:3px}.layers-list::-webkit-scrollbar-thumb:hover{background:rgba(0,0,0,.25)}@media (max-width:768px){.tile-layer-menu{min-width:220px;position:fixed;bottom:160px;right:10px}.tile-control-btn{width:40px;height:40px;font-size:18px}.layers-list{max-height:200px}}}#app,body,html{width:100%;height:100%;margin:0;padding:0;overflow:hidden}