@font-face{font-family:Inter;src:local('Inter')}*{box-sizing:border-box} :root{font-family:Inter,-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;color:#172b3b;background:#eaf0ed;font-synthesis:none;--ink:#172b3b;--muted:#78838e;--paper:#fff;--soft:#f2f5f7;--border:#e9edf1;--cyan:#38cbea;--cyan-dark:#057f9b;--shadow:0 8px 30px #263b4814,0 2px 5px #263b4809}body{margin:0;overscroll-behavior:none}button,input,select{font:inherit}button,a,input,select,summary{-webkit-tap-highlight-color:transparent}button{cursor:pointer;color:inherit}button{border:0}button:disabled{opacity:.6;cursor:wait}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible{outline:3px solid #0694bd;outline-offset:3px}svg:not(.leaflet-zoom-animated){width:24px;height:24px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round;flex-shrink:0}button svg{pointer-events:none}.svg-sprite{position:absolute;width:0;height:0;overflow:hidden}[hidden]{display:none!important}#app{height:100dvh;height:100svh;min-height:530px;position:relative;overflow:hidden}#map{position:absolute;inset:0;background:#e9eee7}.map-shade{position:absolute;inset:0;pointer-events:none;background:linear-gradient(#eef4f3bb 0%,transparent 24%,transparent 65%,#eaf0ed44 100%)}.topbar{position:absolute;top:calc(17px + env(safe-area-inset-top));left:22px;right:22px;display:flex;align-items:center;justify-content:space-between;gap:10px;z-index:2}.brand{display:flex;align-items:center;gap:9px;text-decoration:none;color:var(--ink);font-weight:800;font-size:20px;letter-spacing:-.8px;line-height:1.05}.brand-light{font-weight:500}.brand small{display:block;font-size:8px;font-weight:700;letter-spacing:1.5px;margin-top:7px;color:#6c7c83}.brand-mark{width:40px;height:40px;background:var(--cyan);border:2px solid #fff;border-radius:14px;display:grid;place-items:center;box-shadow:0 3px 10px #005c6c12}.brand-mark svg{width:27px;height:27px;stroke-width:1.8}.top-right{display:flex;align-items:center;gap:12px}.connection{font-size:10px;font-weight:600;color:#536b67;white-space:nowrap;display:flex;align-items:center;gap:5px}.connection i{width:6px;height:6px;border-radius:50%;background:#27b68f}.icon-button{width:44px;height:44px;min-width:44px;display:grid;place-items:center;background:var(--paper);box-shadow:var(--shadow);border-radius:50%;padding:10px}.icon-button svg{width:21px;height:21px}.subtle{background:var(--soft);box-shadow:none;width:38px;min-width:38px;height:38px}.guidance{position:absolute;top:calc(81px + env(safe-area-inset-top));left:16px;right:16px;max-width:560px;display:flex;align-items:center;gap:15px;padding:18px;background:var(--paper);box-shadow:var(--shadow);border-radius:23px;min-height:100px;z-index:2}.direction-icon{width:59px;min-width:59px;height:63px;border-radius:18px;background:#dcf7fd;display:grid;place-items:center;color:#143e50}.direction-icon svg{width:35px;height:35px;stroke-width:2.4}.eyebrow{font-size:8px;font-weight:800;letter-spacing:1.3px;color:var(--muted);display:block}.guidance-copy{min-width:0;flex:1}h1{font-size:21px;letter-spacing:-.7px;line-height:1.15;margin:6px 0;color:var(--ink);font-weight:800}.guidance #detail{font-size:11px;color:var(--muted);line-height:1.45}.mode-pill{position:absolute;top:13px;right:16px;font-size:8px;font-weight:800;letter-spacing:.7px;color:#6b7f87;background:var(--soft);padding:4px 6px;border-radius:5px}#instruction-label{padding-right:42px}.notice{position:absolute;top:calc(194px + env(safe-area-inset-top));left:19px;right:19px;max-width:555px;background:#fff7e6;color:#8a5c08;padding:10px 13px;border:1px solid #f0dfb7;border-radius:13px;font-size:11px;line-height:1.5;z-index:2}.map-controls{position:absolute;right:18px;top:39%;display:grid;gap:9px;z-index:2}.compass{font-size:9px;font-weight:800;line-height:1;gap:1px}.compass span{color:#f1706b;font-size:14px}.speed-bubble{position:absolute;left:20px;bottom:336px;width:60px;height:60px;border-radius:50%;background:var(--paper);box-shadow:var(--shadow);border:3px solid var(--paper);display:flex;align-items:center;justify-content:center;flex-direction:column}.speed-bubble b{font-size:23px;line-height:1;font-variant-numeric:tabular-nums;letter-spacing:-1px}.speed-bubble span{font-size:8px;color:var(--muted);margin-top:3px}.trip-card{position:absolute;bottom:calc(80px + env(safe-area-inset-bottom));left:12px;right:12px;max-width:560px;background:var(--paper);box-shadow:var(--shadow);border-radius:26px;padding:8px 21px 13px;z-index:3}.sheet-grip{width:33px;height:4px;background:#e4e9ed;border-radius:4px;margin:1px auto 15px}.trip-heading{display:flex;align-items:center;gap:12px}.trip-icon{background:#e8f8fc;color:#138ba4;width:43px;height:43px;border-radius:14px;display:grid;place-items:center}.trip-title{min-width:0;flex:1}h2{font-size:22px;letter-spacing:-.7px;margin:6px 0 0;line-height:1.2}.trip-title h2{font-size:19px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.trip-stats{display:grid;grid-template-columns:1fr .85fr 1fr;margin-top:19px;margin-bottom:13px}.trip-stats>div{border-right:1px solid var(--border);padding:0 12px}.trip-stats>div:first-child{padding-left:0}.trip-stats>div:last-child{border:0;padding-right:0;text-align:right}.trip-stats strong{font-size:24px;letter-spacing:-1px;font-weight:800;font-variant-numeric:tabular-nums;white-space:nowrap}.trip-stats em{font-size:12px;font-style:normal;font-weight:500;letter-spacing:0}.trip-stats span{display:block;font-size:9px;color:var(--muted);margin-top:5px}.progress-track{height:4px;border-radius:4px;background:#edf2f5;overflow:hidden}.progress-track>div{height:100%;width:0;background:var(--cyan);border-radius:4px;transition:width .2s}.quality-row{background:transparent;display:flex;align-items:center;gap:6px;padding:11px 0;width:100%;color:#8f774b;font-size:10px;text-align:left;min-height:35px}.quality-row svg{width:13px;height:13px}.quality-row .small-chevron{margin-left:auto}.trip-actions{display:flex;gap:9px}.primary-button,.secondary-button{height:52px;border-radius:16px;display:flex;align-items:center;justify-content:center;gap:9px;font-size:14px;font-weight:750;transition:filter .15s,transform .15s}.primary-button{background:var(--cyan);color:#11374a;flex:1}.primary-button svg{fill:#11374a;stroke-width:1}.secondary-button{background:var(--soft);padding:0 18px;color:#4c6372}.secondary-button svg{width:18px;height:18px}.primary-button:active,.secondary-button:active{transform:scale(.98)}.session-status{font-size:9px;color:#8b969e;text-align:center;margin-top:10px;line-height:1.4}.bottom-nav{position:absolute;bottom:0;left:0;right:0;height:calc(71px + env(safe-area-inset-bottom));padding-bottom:env(safe-area-inset-bottom);display:flex;align-items:center;justify-content:space-evenly;background:var(--paper);border-top:1px solid var(--border);z-index:4}.bottom-nav button{display:flex;align-items:center;justify-content:center;flex-direction:column;gap:6px;background:transparent;min-width:82px;min-height:55px;color:#6c7d88;font-size:9px}.bottom-nav button:first-child{color:#148fa9}.bottom-nav svg{width:22px;height:22px}.demo-panel{position:absolute;left:16px;right:16px;bottom:calc(398px + env(safe-area-inset-bottom));max-width:550px;background:var(--paper);border-radius:15px;padding:9px 13px;box-shadow:var(--shadow);z-index:3}.demo-panel>div{display:flex;align-items:center;gap:7px;font-size:9px;color:#7b629f}.demo-panel b{font-size:9px;letter-spacing:.8px}.demo-panel #demo-progress{margin-left:auto;font-variant-numeric:tabular-nums}.demo-dot{width:5px;height:5px;border-radius:50%;background:#9a70dd}.demo-panel select{font-size:10px;border:0;background:var(--soft);padding:6px;border-radius:6px;color:var(--ink);height:30px}.tiny-button{background:var(--soft);width:32px;height:32px;display:grid;place-items:center;border-radius:8px}.tiny-button svg{width:13px;height:13px}.demo-panel input{width:100%;accent-color:#9270cb;height:12px;margin:7px 0}.demo-panel p{font-size:8px;text-align:center;color:var(--muted);margin:0}.toast{position:absolute;left:20px;right:20px;bottom:calc(85px + env(safe-area-inset-bottom));z-index:10;padding:14px;background:#173546;color:#fff;border-radius:15px;box-shadow:var(--shadow);font-size:12px;line-height:1.5}.panel-dialog{border:0;border-radius:28px 28px 0 0;padding:26px 24px calc(22px + env(safe-area-inset-bottom));position:fixed;bottom:0;top:auto;margin:0 auto;max-height:88dvh;width:100%;max-width:500px;color:var(--ink);background:var(--paper);box-shadow:0 -12px 50px #15334520;overflow:auto;overscroll-behavior:contain}.panel-dialog::backdrop{background:#142f4366;backdrop-filter:blur(4px)}.panel-dialog[open]{animation:panel-in .2s ease-out}.dialog-top{display:flex;align-items:center;justify-content:space-between;gap:10px}.dialog-top h2{font-size:27px;letter-spacing:-1px;margin-top:7px}.dialog-top .icon-button{box-shadow:none;background:var(--soft);width:36px;min-width:36px;height:36px;padding:9px}.dialog-intro{font-size:12px;line-height:1.6;color:var(--muted);margin:13px 0 22px}.search-field{display:flex;align-items:center;gap:8px;background:var(--soft);border-radius:14px;padding:0 13px;height:47px}.search-field svg{width:17px;height:17px;color:#91a0aa}.search-field input{width:100%;background:transparent;border:0;font-size:12px;color:var(--ink);outline:0}.route-list{display:grid;gap:12px;margin:18px 0}.route-item{border:1px solid var(--border);border-radius:18px;padding:14px;display:grid;grid-template-columns:65px 1fr auto;gap:12px;align-items:center;background:transparent;text-align:left;width:100%}.route-item.selected{border-color:#5ad0e7;background:#f2fcff}.route-thumb{height:66px;width:65px;background:#e6f0ef;border-radius:12px;display:grid;place-items:center}.route-thumb svg{width:54px;height:52px;stroke:#28a6c4;stroke-width:2.5}.route-item b{font-size:14px;display:block;margin-bottom:6px;word-break:break-word}.route-item small{display:block;font-size:10px;color:var(--muted);line-height:1.8}.route-badge{font-size:8px;color:#a77b25;display:inline-block;margin-top:5px;background:#fff3d7;padding:3px 5px;border-radius:4px}.route-item>svg{width:17px;height:17px;color:#a2b1bb}.import-button{position:relative;display:flex;align-items:center;justify-content:center;gap:9px;height:52px;background:var(--cyan);border-radius:15px;font-weight:750;font-size:13px;overflow:hidden;cursor:pointer}.import-button input{position:absolute;inset:0;width:100%;height:100%;opacity:0;cursor:pointer}.import-button svg{width:19px;height:19px}.privacy-note{font-size:10px;line-height:1.7;color:var(--muted);margin:16px 0 0}.privacy-note svg{width:13px;height:13px;vertical-align:middle;margin-right:4px}.start-route-name{padding:20px 0 17px;font-size:13px;font-weight:600;color:var(--muted)}.choice-card{display:flex;align-items:center;gap:12px;text-align:left;background:var(--soft);width:100%;padding:17px 13px;border-radius:17px;margin-bottom:10px}.choice-card>span:nth-child(2){flex:1}.choice-card b{font-size:13px;display:block}.choice-card small{font-size:10px;display:block;margin-top:6px;color:var(--muted);line-height:1.6}.choice-card>svg{width:16px;height:16px}.choice-icon{width:40px;height:40px;border-radius:12px;background:#e1f2ea;color:#38976d;display:grid;place-items:center}.choice-icon.blue{background:#def4fc;color:#1b96bd}.callout{padding:12px;border:1px solid #f2e1bb;background:#fff8e9;color:#977330;border-radius:12px;font-size:10px;line-height:1.8;margin:16px 0}.setting-row{display:flex;align-items:center;justify-content:space-between;gap:12px;min-height:81px;border-bottom:1px solid var(--border)}.setting-row b{font-size:13px}.setting-row small{display:block;font-size:10px;color:var(--muted);margin-top:6px}.setting-row select{font-size:11px;background:var(--soft);border:0;color:var(--ink);padding:10px;border-radius:9px;max-width:135px}.toggle{width:44px;height:27px;padding:3px;border-radius:20px;background:#d7dfe5;flex-shrink:0}.toggle span{display:block;width:21px;height:21px;background:#fff;border-radius:50%;box-shadow:0 1px 2px #112b3920;transition:transform .15s}.toggle.on{background:var(--cyan)}.toggle.on span{transform:translateX(17px)}.wide-button{width:100%;display:flex;gap:10px;align-items:center;font-size:12px;min-height:46px;padding:13px 12px;margin-top:10px;border-radius:12px;background:var(--soft);text-align:left}.wide-button svg{width:18px;height:18px}.muted{font-size:11px;line-height:1.8;color:var(--muted)}h3{font-size:14px;margin:25px 0 12px}.quality-summary{display:flex;align-items:center;gap:12px;padding:20px 0;font-size:13px;line-height:1.7}.gap-item{background:var(--soft);padding:13px;border-radius:12px;font-size:11px;line-height:1.8;margin-bottom:9px}.gap-item strong{display:block}.navigation-marker{position:relative;width:52px;height:52px;display:grid;place-items:center;filter:drop-shadow(0 4px 5px #0b48733a)}.navigation-marker svg{width:44px;height:44px;fill:#0a94d5;stroke:white;stroke-width:1.8}.navigation-marker:before{content:'';position:absolute;inset:-12px;background:#219ad51a;border-radius:50%;z-index:-1}.maplibregl-ctrl-attrib{font-size:8px!important;background:#ffffffc9!important}.maplibregl-ctrl-bottom-right{bottom:calc(78px + env(safe-area-inset-bottom));right:4px}.maplibregl-ctrl-logo{display:none!important}[data-mode='demo'] #mode-pill{background:#f1e8ff;color:#8a62b4}[data-mode='gps'] #mode-pill,[data-mode='join'] #mode-pill{background:#e0f7ed;color:#27996c}[data-mode='gps'] .quality-row,[data-mode='join'] .quality-row{padding-top:8px;padding-bottom:8px}body.dark{--ink:#e9f1f5;--muted:#97a9b6;--paper:#1b2c3b;--soft:#273b4d;--border:#324656;--shadow:0 7px 27px #0816223f;background:#142536}body.dark .brand-mark{border-color:#275169}body.dark .map-shade{background:linear-gradient(#122b3b99,transparent 30%)}body.dark .direction-icon{background:#24495b;color:#53d1ec}body.dark .trip-icon{background:#214b5b;color:#50cae4}body.dark .route-item.selected{background:#234351}body.dark .route-thumb{background:#244457}body.dark .callout{background:#453b29;border-color:#5b4c30;color:#e3c58c}body.dark .notice{background:#473e2b;color:#f1d39a;border-color:#6e5936}body.dark .quality-row{color:#e3c58c}@keyframes panel-in{from{transform:translateY(35px);opacity:.5}to{transform:translateY(0);opacity:1}}@media(min-width:700px){.topbar{left:30px;right:30px}.guidance{left:25px;top:92px;width:390px;right:auto}.trip-card{left:25px;bottom:95px;width:390px;right:auto}.bottom-nav{left:25px;bottom:19px;border-radius:20px;width:390px;height:65px;border:0;box-shadow:var(--shadow)}.map-controls{right:30px;top:auto;bottom:125px}.notice{left:28px;top:208px;width:384px}.demo-panel{left:25px;bottom:410px;width:390px}.speed-bubble{left:auto;right:30px;bottom:310px}.panel-dialog{bottom:25px;border-radius:27px;padding-bottom:26px;max-height:88dvh}.toast{left:30px;right:auto;width:380px;bottom:90px}.connection{font-size:11px}.brand{font-size:22px}}@media(max-width:360px){.topbar{left:16px;right:16px}.brand{font-size:18px}.connection{display:none}.guidance{left:10px;right:10px;padding:14px;gap:11px}.direction-icon{width:49px;min-width:49px;height:57px}h1{font-size:19px}.trip-card{left:8px;right:8px;padding-left:16px;padding-right:16px}.trip-stats strong{font-size:22px}.secondary-button{padding:0 13px}}@media(max-height:720px) and (max-width:699px){.trip-card{bottom:65px;padding-top:6px;padding-bottom:10px}.bottom-nav{height:59px}.trip-stats{margin:12px 0 9px}.trip-stats strong{font-size:22px}.sheet-grip{margin-bottom:10px}.session-status{display:block;font-size:8px;margin-top:6px}.primary-button,.secondary-button{height:46px}.quality-row{font-size:9px;padding:7px 0}.demo-panel{bottom:320px}.guidance{top:70px;padding:12px;min-height:85px}.topbar{top:12px}.brand-mark{height:35px;width:35px}.notice{top:166px}.speed-bubble{bottom:333px;width:50px;height:50px}.map-controls{top:34%}}@media(prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}}

#map{z-index:0}.map-shade{z-index:1}.leaflet-container{font-family:inherit}.leaflet-control-attribution{font-size:8px!important;background:#ffffffcf!important}.leaflet-bottom{bottom:calc(77px + env(safe-area-inset-bottom))!important}.route-chevron{background:transparent!important;border:0!important}.route-chevron svg{width:22px;height:22px;stroke:white;stroke-width:3.5;filter:drop-shadow(0 1px 1px #137a9a77)}.leaflet-container .navigation-marker{background:transparent;border:0}.leaflet-container .navigation-marker svg{width:44px;height:44px}.leaflet-marker-icon{outline:none!important}

.raster-dark .leaflet-tile-pane{filter:invert(1) hue-rotate(180deg) brightness(.72) saturate(.6)}

@media(max-width:699px){[data-mode='demo'] .demo-panel{right:80px}}

.ol-viewport{position:relative;width:100%;height:100%;overflow:hidden;touch-action:none}.ol-attribution{position:absolute;right:5px;bottom:80px;max-width:65%;font-size:8px;background:#ffffffd9;color:#46616e;border-radius:3px;padding:2px 4px}.ol-attribution ul{padding:0;margin:0;display:inline;list-style:none}.ol-attribution li{display:inline;margin:0 2px}.ol-attribution button{display:none}.ol-attribution a{color:inherit}.ol-rotate{display:none}

@media(max-width:699px){.speed-bubble{top:30%;bottom:auto}}

[data-mode="preview"] .trip-stats,[data-mode="planning"] .trip-stats{grid-template-columns:1fr 1fr}[data-mode="preview"] .trip-stats>div:nth-child(2),[data-mode="planning"] .trip-stats>div:nth-child(2),[data-mode="preview"] .progress-track,[data-mode="planning"] .progress-track,[data-mode="preview"] .quality-row,[data-mode="planning"] .quality-row{display:none}[data-mode="preview"] #mode-pill{background:#def4fc;color:#087f9e}[data-mode="preview"] #instruction-label{padding-right:50px}.destination-marker{width:34px;height:34px;border:3px solid #fff;border-radius:50%;background:#173f51;color:#fff;box-shadow:0 2px 8px #173c4d55;display:grid;place-items:center}.destination-marker svg{width:22px;height:22px}.maplibregl-marker.navigation-marker,.maplibregl-marker.destination-marker{position:absolute}

.route-origin{display:block;margin-top:4px;font-size:10px;color:var(--muted)}.depot-marker{display:flex;align-items:center;gap:5px;background:#fff;color:#173f51;border:2px solid #173f51;border-radius:11px;padding:5px 8px;box-shadow:0 3px 10px #173b4c33;font:700 11px/1.2 system-ui;white-space:nowrap;pointer-events:none}.depot-marker svg{width:20px;height:20px}.maplibregl-marker.depot-marker{position:absolute}
