*{margin:0;padding:0;box-sizing:border-box}html,body{width:100%;height:100%;overflow:hidden;font-family:ui-sans-serif,system-ui,-apple-system,Segoe UI,Roboto,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji",Segoe UI Symbol,"Noto Color Emoji"}#map{width:100%;height:100%;position:absolute;top:0;left:0;z-index:1;touch-action:none}.control-button{width:40px;height:40px;background-color:#fff;border:none;font-size:22px;cursor:pointer;box-shadow:0 2px 6px #0000004d;margin:10px;text-align:center}.control-button:hover{background-color:#f5f5f5}.control-button:active{background-color:#e0e0e0}.marker-container{position:relative;cursor:pointer}.info-window-content{max-width:200px}.info-window-title{margin:0 0 8px;font-size:16px;font-weight:700;cursor:pointer}#loading{position:absolute;top:0;left:0;width:100%;height:100%;background-color:#fffc;display:flex;flex-direction:column;align-items:center;justify-content:center;z-index:100}.loading-spinner{width:50px;height:50px;border:5px solid #f3f3f3;border-top:5px solid #3498db;border-radius:50%;animation:spin 2s linear infinite;margin-bottom:20px}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.loading-text{font-size:18px;color:#333}#error-message{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);background-color:#fff;padding:20px;border-radius:4px;box-shadow:0 2px 10px #0003;max-width:80%;z-index:200;text-align:center;color:#d9534f}#search-sidebar{position:absolute;top:10px;left:10px;z-index:10;width:200px}#search-bar{display:flex;background-color:#fff;border-radius:4px;box-shadow:0 2px 6px #0000004d;overflow:visible}#search-input{flex:1;padding:8px;border:none;font-size:16px;outline:none;min-width:0}#search-button{background-color:#fff;border:none;font-size:18px;cursor:pointer;text-align:center;min-width:40px;min-height:32px}#search-button:hover{background-color:#f5f5f5}#search-button:active{background-color:#e0e0e0}#info-sidebar{width:30vw;min-width:150px;max-width:200px;position:absolute;top:50px;left:10px;background-color:#fffc;border-radius:4px;box-shadow:0 2px 6px #0000004d;max-height:calc(100% - 120px);z-index:10;display:flex;flex-direction:column}@media screen and (min-width:1024px){#info-sidebar,#search-sidebar{width:260px;max-width:none}}@media screen and (min-width:1200px){#info-sidebar{width:320px;max-width:none}}#info-header{display:flex;justify-content:space-between;align-items:center;position:sticky;top:0;background-color:#fff;z-index:11;flex-shrink:0}.info-sidebar-header{padding:8px;border-bottom:1px solid #ddd}.info-sidebar-title{font-size:16px;font-weight:700;color:#333}#info-title-content{flex-grow:1;cursor:pointer;display:flex;align-items:center}#info-title-content:after{content:"▼";margin-left:auto;margin-right:8px;font-size:12px;color:#666}#info-title-content.collapsed:after{content:"▶"}#info-close-button{background:none;border:none;font-size:24px;cursor:pointer;margin:5px;text-align:center;flex-shrink:0}#info-content{padding:10px;overflow-y:auto;flex-grow:1}.landmark-item{margin-bottom:8px;padding-bottom:8px;border-bottom:1px solid #f0f0f0}.landmark-item:last-child{border-bottom:none;margin-bottom:0}.landmark-header{display:flex;align-items:baseline;justify-content:space-between;gap:10px}.landmark-name{font-weight:700;margin-bottom:2px;font-size:14px;cursor:pointer;transition:color .2s ease}.landmark-name:hover{text-decoration:underline}.landmark-type{font-size:13px;color:#666;font-style:italic}.landmark-address{font-size:13px;color:#666}.landmark-summary{font-size:14px;color:#555;margin-bottom:8px}.settings-overlay{position:fixed;top:0;left:0;width:100%;height:100%;background:#00000080;display:flex;align-items:center;justify-content:center;z-index:200}.settings-content{background:#fff;padding:20px;border-radius:4px;box-shadow:0 2px 8px #0000004d;min-width:280px;max-height:60vh;display:flex;flex-direction:column}.settings-bar{display:flex;justify-content:space-between;align-items:center;padding:0 .5rem;border-bottom:1px solid #ddd}.settings-bar-section{flex:1;display:flex;align-items:center}.settings-bar-section.center{justify-content:center;gap:1rem;align-items:center}.settings-bar-section.right{justify-content:flex-end}#settings-title{font-size:1.2rem;font-weight:600;margin:0}.icon-btn{background:none;border:none;cursor:pointer;padding:.5rem;display:flex;align-items:center;border-radius:50%;transition:background-color .2s}.icon-btn:hover{background-color:#f0f0f0}.icon-btn svg{width:20px;height:20px}.transitional-message{opacity:0;transition:opacity .8s ease-in-out}.table-scrollable{flex-grow:1;overflow-y:auto}#settings-table{width:100%;border-collapse:collapse}#settings-table td{padding:.5rem;border-bottom:none}#settings-table tr:last-child td{border-bottom:none}#settings-table td:first-child{font-weight:500;width:40%}#settings-table input{width:100%;padding:.5rem;font-size:1rem;box-sizing:border-box}.dropdown-wrapper{position:relative;display:inline-block}.dropdown-menu{position:absolute;top:calc(100% - 15px);right:0;z-index:100;background-color:#fff;border:1px solid #ccc;border-radius:4px;box-shadow:0 2px 6px #0003;display:none}.dropdown-menu.show{display:block}.dropdown-item{font-size:14px!important;font-weight:500;padding:8px 12px;cursor:pointer;white-space:nowrap}.dropdown-item:hover{background-color:#f5f5f5}.dropdown-item.active:before{content:"📍 "}.hidden{display:none!important}.bus-marker-center{width:24px;height:24px;background-color:#6aa8f7;border:2px solid white;border-radius:50%;box-shadow:0 2px 4px #0000004d}.bus-marker-stop{width:10px;height:10px;background-color:#28a745;border:1.5px solid white;box-shadow:0 1px 2px #0000004d}.bus-marker-stop.gmb{border-radius:50%}@media screen and (max-width:1024px){.bus-marker-stop{width:12px;height:12px}}.bus-marker-nearest{width:20px;height:20px;background-color:transparent;border:4px solid #f66a5b;border-radius:50%;box-shadow:0 2px 4px #0000004d}.bus-marker-route-stop{width:12px;height:12px;background-color:transparent;border:3px solid #ffc107;border-radius:50%;box-shadow:0 1px 2px #0000004d}#route-popover{position:fixed;display:none;flex-direction:row;flex-wrap:nowrap;gap:8px;z-index:2000;align-items:center;pointer-events:auto;overflow-x:auto;padding:12px;scrollbar-width:none;-ms-overflow-style:none;-webkit-mask-image:none;mask-image:none;cursor:grab}#route-popover::-webkit-scrollbar{display:none}#route-popover.fade-left{-webkit-mask-image:linear-gradient(to right,transparent,black 20px);mask-image:linear-gradient(to right,transparent,black 20px)}#route-popover.fade-right{-webkit-mask-image:linear-gradient(to right,black calc(100% - 20px),transparent);mask-image:linear-gradient(to right,black calc(100% - 20px),transparent)}#route-popover.fade-left.fade-right{-webkit-mask-image:linear-gradient(to right,transparent,black 20px,black calc(100% - 20px),transparent);mask-image:linear-gradient(to right,transparent,black 20px,black calc(100% - 20px),transparent)}#route-popover.active{cursor:grabbing}.route-pill{color:#000;font-weight:700;padding:6px 12px;border-radius:16px;box-shadow:0 2px 4px #0003;font-family:sans-serif;font-size:14px;white-space:nowrap;border:1px solid rgba(0,0,0,.1);pointer-events:auto;cursor:pointer;flex-shrink:0;--pill-transparency: .55;background-color:rgba(255,255,255,var(--pill-transparency));-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px)}.route-pill.kmb{background-color:rgba(255,221,221,var(--pill-transparency))}.route-pill.ctb{background-color:rgba(255,255,204,var(--pill-transparency))}.route-pill.nlb,.route-pill.gmb{background-color:rgba(221,255,221,var(--pill-transparency))}.route-pill.active{background-color:#ffc107;color:#fff}.nearest-stop{background-color:#ff57221a;border-left:3px solid #f66a5b;padding-left:10px;transform:translate(3px);transition:all .3s ease}.nearest-stop-sidebar-title{font-size:14px;font-weight:700;color:#333}.route-sidebar-company{font-size:12px;color:#666;font-weight:400;margin-left:8px}.route-sidebar-details{font-size:13px;color:#555;margin-top:2px}.stop-item-index{display:inline-block;width:24px;color:#888}.route-stop-item{padding:8px 0;border-bottom:1px solid #f0f0f0;cursor:pointer;transition:background-color .2s ease}.route-stop-item:last-child{border-bottom:none}.route-stop-item:hover{background-color:#00000008}.route-stop-name{font-size:14px;font-weight:500;color:#333}
