@charset "UTF-8";
:root{color-scheme:light;font-family:"PingFang SC","Hiragino Sans GB","Microsoft YaHei",system-ui,sans-serif;color:#203b31;background:#f2f2e9;font-synthesis:none}
*{box-sizing:border-box}body{margin:0}button,input{font:inherit}button{cursor:pointer;color:inherit;-webkit-tap-highlight-color:transparent}button:focus-visible,input:focus-visible,svg:focus-visible{outline:3px solid #b78533;outline-offset:3px}[hidden]{display:none!important}
.map-app{height:100vh;height:100dvh;min-height:360px;display:grid;grid-template-rows:minmax(0,1fr) auto;overflow:hidden}
.map-stage{position:relative;min-height:0;width:100%;overflow:hidden;background:#f2f2e9;isolation:isolate}.map-stage:fullscreen{width:100vw;height:100vh}.map-stage svg{display:block;width:100%;height:100%;touch-action:none;cursor:grab;user-select:none;-webkit-user-select:none}.map-stage svg.dragging{cursor:grabbing}.map-stage image{pointer-events:none}
.map-controls{position:absolute;right:20px;top:20px;display:flex;flex-direction:column;padding:4px;border:1px solid #d9dfd1;border-radius:12px;background:#ffffffee;box-shadow:0 4px 20px #24392718}.map-controls button{border:0;background:none;width:36px;height:36px;padding:0;border-radius:7px;font-size:23px;line-height:1}.map-controls button:hover{background:#edf0e5}.map-controls>span{height:1px;background:#dfe4d9;margin:3px 6px}
.route-options{display:flex;justify-content:center;align-items:center;gap:24px;min-height:70px;padding:10px 18px calc(10px + env(safe-area-inset-bottom));background:#fffffff5;border-top:1px solid #dfe4d7;z-index:1}.route-option{display:flex;align-items:center;gap:10px;background:transparent;border:1px solid transparent;border-radius:10px;padding:11px 17px;font-size:14px;font-weight:550;color:#8d9689;transition:color .15s,background .15s,border-color .15s}.route-option .route-symbol{position:relative;display:block;width:30px;height:3px;background:currentColor;border-radius:4px}.route-symbol::after{content:'';position:absolute;width:9px;height:9px;left:10px;top:-3px;border:2px solid currentColor;border-radius:50%;background:white}.route-option.active{color:var(--route-color);background:var(--route-wash);border-color:var(--route-color)}.route-option.active .route-symbol::after{background:currentColor}.route-option:hover{background:#eff2e8}.route-option.active:hover{background:var(--route-wash)}
.route-halo{fill:none;stroke:white;stroke-width:12;stroke-linejoin:round;stroke-linecap:round;opacity:.94;pointer-events:none}.route-line{fill:none;stroke-width:6;stroke-linejoin:round;stroke-linecap:round;pointer-events:none}.route-line.rail{stroke-dasharray:13 7}.route-arrow{stroke:white;stroke-width:1.6;stroke-linejoin:round;pointer-events:none}.map-point,.time-badge,.leg-badge{cursor:pointer}.point-disc{stroke:white;stroke-width:3;filter:drop-shadow(0 1px 2px #0003)}.point-number{fill:white;font-size:14px;font-weight:750;text-anchor:middle;dominant-baseline:central;pointer-events:none}.time-badge rect{fill:white;stroke-width:2;filter:drop-shadow(0 2px 2px #0002)}.time-badge text{font-size:16px;font-weight:650;text-anchor:middle;dominant-baseline:central;pointer-events:none;font-variant-numeric:tabular-nums}.badge-leader{stroke-width:1.5;stroke-dasharray:3 3;opacity:.65;pointer-events:none}.leg-badge rect{fill:#ffffffed;stroke-width:1.5}.leg-badge text{font-size:14px;font-weight:550;text-anchor:middle;dominant-baseline:central;pointer-events:none}.leg-badge:hover rect,.time-badge:hover rect{fill:#fff7df}.map-point:hover .point-disc{stroke:#f5dd9f;stroke-width:5}.point-ring{fill:none;stroke-width:3;stroke-dasharray:5 4;pointer-events:none}
.point-detail{position:absolute;left:22px;bottom:22px;width:300px;max-width:calc(100% - 44px);padding:17px 40px 17px 18px;border:1px solid #dce2d3;border-radius:14px;background:#fffffff7;box-shadow:0 5px 28px #233d3024;backdrop-filter:blur(12px)}.close-point{position:absolute;top:10px;right:11px;border:0;background:none;font-size:25px;padding:0 4px;line-height:1}.detail-route{font-size:11px;margin-bottom:6px}.point-detail h1{font-size:16px;line-height:1.5;margin:0 0 5px;font-weight:600}.detail-time{font-size:19px;font-variant-numeric:tabular-nums;display:block}.point-detail p{font-size:12px;line-height:1.8;color:#64705f;margin:7px 0 0;white-space:pre-line}.start-editor{display:flex;align-items:center;justify-content:space-between;gap:12px;font-size:12px;margin-top:13px}.start-editor input{min-width:0;width:110px;padding:6px 7px;border:1px solid #c9d2c0;border-radius:7px;background:white;color:#203b31;font-size:15px}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
@media(max-width:600px){.route-options{gap:5px;min-height:65px;padding:9px 8px calc(9px + env(safe-area-inset-bottom))}.route-option{gap:6px;padding:10px 8px;font-size:12px;white-space:nowrap}.route-option .route-symbol{width:21px}.route-symbol::after{left:6px}.map-controls{top:12px;right:12px}.map-controls button{width:33px;height:33px}.point-detail{left:12px;bottom:12px;max-width:calc(100% - 24px)}}
.point-detail{width:340px}.stop-budget{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:9px;border-top:1px solid #e2e6dc;margin-top:13px;padding-top:12px}.stop-budget label{display:grid;grid-template-columns:1fr;gap:4px;font-size:11px;color:#687460}.stop-budget input{width:100%;min-width:0;border:1px solid #cdd7c4;border-radius:6px;padding:5px 7px;font-size:15px;font-variant-numeric:tabular-nums;color:#203b31;background:white}.stop-budget label>span{font-size:10px}.stop-budget #wait-editor{grid-column:1/-1;grid-template-columns:auto 74px auto;align-items:center;justify-content:start;gap:9px}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{transition:none!important;scroll-behavior:auto!important}}
