:root{--green:#286c53;--dark:#18392e;--ink:#253e34;--muted:#86928a;--line:#e9ede7;--paper:#fff;--soft:#f3f6f0;font-family:Inter,"PingFang SC","Microsoft YaHei",system-ui,sans-serif;color:var(--ink);background:#f7f9f5;font-synthesis:none}*{box-sizing:border-box}body{margin:0}button,input{font:inherit}button,a,input{-webkit-tap-highlight-color:transparent}button{cursor:pointer}button{border:0}button:disabled{cursor:wait;opacity:.55}a{color:inherit;text-decoration:none}button:focus-visible,a:focus-visible{outline:3px solid #9cb9aa;outline-offset:3px}button svg{width:20px;height:20px;display:block}svg{overflow:visible}button{color:inherit}button:hover{filter:brightness(.97)}[hidden]{display:none!important}.topbar{height:82px;display:flex;align-items:center;padding:0 40px;border-bottom:1px solid #e1e8dc;background:#fdfefb;position:relative;z-index:5;gap:32px}.brand{display:flex;align-items:center;gap:11px;font-size:27px;font-weight:750;letter-spacing:1px}.brand>span:last-child{display:flex;align-items:baseline;gap:12px}.brand-en{font-size:10px;letter-spacing:2.8px;font-weight:600;color:#648372}.brand-mark{width:41px;height:41px;display:grid;place-items:center;background:var(--green);color:#e6f0d2;border-radius:13px;font-size:36px;font-weight:400;line-height:1;transform:rotate(-4deg)}.tagline{font-size:13px;color:#7b8d80;letter-spacing:1px;border-left:1px solid #dfe5da;padding-left:28px}.mode-button{margin-left:auto;background:#f1f5ed;border:1px solid #e1e8db;border-radius:22px;font-size:12px;display:flex;align-items:center;gap:8px;padding:10px 15px}.status-dot,.city-dot{width:6px;height:6px;border-radius:50%;background:#71a377;display:inline-block}.chevron{font-size:16px;margin-left:5px}.workspace{position:relative;min-height:calc(100dvh - 82px);padding:28px 0 28px 30px;display:flex;align-items:flex-start}.map-area{position:absolute;inset:0;background:#eaf0e3;overflow:hidden}.map-canvas{position:absolute;inset:0}.map-heading{position:absolute;top:30px;left:470px;padding:12px 16px;border:1px solid #d7e1d1;border-radius:12px;background:#fcfdf8ee;display:flex;align-items:center;gap:9px;font-size:13px;font-weight:600;pointer-events:none}.map-sub{font-size:11px;color:#8b9688;font-weight:400;border-left:1px solid #dfe5da;padding-left:13px;margin-left:4px}.map-legend{position:absolute;top:89px;left:481px;font-size:10px;color:#6d8174;display:flex;align-items:center;gap:7px;pointer-events:none}.legend-line{width:20px;height:4px;background:var(--green);border-radius:3px}.legend-line.baseline{margin-left:14px;background:repeating-linear-gradient(90deg,#9da9a1 0 4px,transparent 4px 7px);height:2px}.map-tools{position:absolute;bottom:70px;right:30px;display:flex;flex-direction:column;background:#fffffff0;border:1px solid #d6dfd1;border-radius:12px;box-shadow:0 5px 15px #38563c0a;overflow:hidden}.map-tools button{background:transparent;width:40px;height:40px;font-size:23px}.map-tools button+button{border-top:1px solid #e6eadf}.map-notice{position:absolute;bottom:22px;right:30px;font-size:10px;color:#6e8373;background:#ffffffe0;padding:7px 10px;border-radius:6px}.map-attribution{position:absolute;bottom:18px;left:470px;font-size:9px;letter-spacing:2px;color:#8a9a8a}.planner{position:relative;z-index:2;width:396px;background:#fffffffa;border:1px solid #edf0e9;border-radius:22px;padding:27px 25px 18px;box-shadow:0 10px 50px #29453712;flex-shrink:0}.planner-head{display:flex;align-items:center;justify-content:space-between}.eyebrow{font-size:8px;letter-spacing:1.6px;font-weight:600;color:#99a18f}h1{font-size:23px;letter-spacing:-.7px;margin:9px 0 0;line-height:1.4;font-weight:650}.heading-dot{color:#83a97d}.journey-icon{width:36px;height:36px;border:1px solid #e5ebde;border-radius:50%;display:grid;place-items:center;font-size:23px;color:#8caa7c}.intro{font-size:12px;color:#8b968d;margin:7px 0 24px}.vehicle-switch{display:flex;padding:4px;background:#f3f5ef;border:1px solid #edf0e8;border-radius:13px;gap:4px}.vehicle{flex:1;display:flex;align-items:center;justify-content:center;gap:6px;background:transparent;border-radius:10px;padding:11px 3px;font-size:13px;font-weight:550;color:#829182}.vehicle>span:first-child{display:flex}.vehicle.active{background:#fff;color:var(--green);box-shadow:0 2px 8px #3952310a}.vehicle-note{font-size:9px;font-weight:400;opacity:.7}.itinerary{margin-top:20px;position:relative}.itinerary:before{content:"";position:absolute;left:9px;top:32px;bottom:33px;border-left:1.5px dashed #cdd9c9}.place-row{display:flex;align-items:center;position:relative;gap:13px;min-height:62px}.point-dot{width:19px;height:19px;position:relative;flex:none;border:5px solid #fff;border-radius:50%;box-shadow:0 0 0 1px #e1e8dc}.origin-dot{background:#498d67}.destination-dot{background:#eab97a}.place-button{text-align:left;flex:1;padding:9px 0;background:transparent;border-bottom:1px solid var(--line);min-width:0}.field-label{font-size:10px;color:#9aa296;display:block;margin-bottom:5px}.place-button strong{font-size:14px;font-weight:550;display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.icon-button{display:flex;align-items:center;justify-content:center;border-radius:9px;width:32px;height:32px;flex-shrink:0;background:#f7f9f3;color:#8b9b8b}.destination-row .place-button{border-bottom:0}.stop-row{display:flex;align-items:center;gap:13px;min-height:72px;position:relative}.stop-number{width:19px;height:19px;background:#e6efdf;border-radius:50%;color:#567343;font-size:9px;display:grid;place-items:center;flex:none;box-shadow:0 0 0 3px #fff}.stop-content{flex:1;border-bottom:1px solid var(--line);padding:10px 0;min-width:0}.stop-content .place-button{padding:0;border:0;width:100%}.stop-sub{display:flex;align-items:center;gap:5px;font-size:10px;color:#8e9a88;margin-top:5px}.stop-sub input{width:39px;padding:2px 4px;border:1px solid #e0e7d8;background:#f7f9f4;border-radius:4px;color:#58704d;font-size:10px;text-align:center}.remove-stop{font-size:19px;background:transparent;color:#a1aa9d}.add-stop{display:flex;align-items:center;gap:8px;width:100%;border:1px dashed #d4dfca;padding:12px 14px;background:#f9fbf5;border-radius:10px;font-size:12px;color:#5d7b4f;margin:13px 0 18px}.add-stop>span:first-child{font-size:18px;line-height:1}.add-note{color:#a3ac9b;font-size:10px;margin-left:auto}.order-setting{display:flex;justify-content:space-between;align-items:center;font-size:11px;margin-bottom:16px}.order-setting>div{display:flex;gap:7px;align-items:center;color:#758170}.order-setting svg{width:15px;height:15px;color:#7f9970}.help-button{font-size:8px;border:1px solid #c6cec0;border-radius:50%;background:none;width:13px;height:13px;color:#9aa58f;padding:0}.toggle{width:30px;height:18px;padding:2px;background:#dbe1d6;border-radius:20px;transition:background .2s}.toggle span{display:block;width:14px;height:14px;border-radius:50%;background:white;box-shadow:0 1px 3px #0001;transition:transform .2s}.toggle.on{background:#3f825e}.toggle.on span{transform:translateX(12px)}.demo-notice{font-size:10px;color:#8b967b;background:#f5f7ee;padding:9px 11px;border-radius:7px;display:flex;gap:6px;margin:0 0 12px}.demo-notice.live{background:#edf5f0;color:#4e7c65}.primary{background:var(--green);color:#fff;width:100%;border-radius:12px;display:flex;align-items:center;justify-content:center;gap:8px;padding:14px;font-size:14px;font-weight:500;box-shadow:0 3px 8px #286c5320}.primary>span:last-child{margin-left:auto;font-size:20px;line-height:1}.primary>span:first-child{margin-right:auto}.result{margin-top:22px}.empty-state{font-size:12px;text-align:center;color:#8e9a86;line-height:2;padding:8px}.empty-state small{font-size:10px}.result-heading{display:flex;justify-content:space-between;align-items:center;margin-bottom:13px}.result-heading strong{font-size:12px;font-weight:550}.result-badge{color:#6d8b59;font-size:9px;background:#eef4e6;border:1px solid #dce8ce;border-radius:20px;padding:4px 7px}.metrics{display:flex;align-items:flex-end;gap:25px}.metric b{font-family:Inter,system-ui,sans-serif;font-size:33px;line-height:1;font-weight:550;letter-spacing:-1.4px;color:#304c3b}.metric span{font-size:11px;color:#85937e;margin-left:5px}.metric small{display:block;margin-top:7px;font-size:9px;color:#9ba58f}.metrics .metric+.metric{padding-left:23px;border-left:1px solid #e7ecdf}.metrics .metric+.metric b{font-size:25px}.detour{margin-top:18px;padding:12px 13px;background:#f3f6ed;border-radius:10px;display:flex;gap:9px;align-items:flex-start}.detour>span{font-size:16px;color:#6c9561}.detour p{margin:0;color:#758567;font-size:11px;line-height:1.7}.detour strong{font-weight:600;color:#557442}.detour small{font-size:9px;color:#98a389;display:block;margin-top:3px}.result-stops{display:flex;align-items:center;gap:5px;flex-wrap:wrap;font-size:10px;color:#79906b;margin:13px 0 5px}.result-stops span{max-width:110px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.result-stops i{font-style:normal;color:#b0bbaa}.journey-button{width:100%;border:1px solid #d7e2cf;border-radius:9px;background:white;color:#57794a;padding:10px;font-size:11px;margin-top:12px}.arrival-time{font-size:10px;color:#899580;margin-top:10px;display:flex;justify-content:space-between}.planner-footer{display:flex;gap:8px;justify-content:center;align-items:center;margin-top:22px;border-top:1px solid #eef1e9;padding-top:15px;font-size:9px;color:#a6ae9d;letter-spacing:.4px}.tiny-route{letter-spacing:2px;color:#9caf8b}.inline-error{color:#a75443;background:#fff3ec;padding:11px;border-radius:8px;font-size:11px;line-height:1.7;margin-bottom:12px}.modal{position:fixed;inset:0;z-index:50;background:#163e2b4d;backdrop-filter:blur(5px);display:flex;align-items:center;justify-content:center;padding:20px}.dialog{width:440px;max-width:100%;max-height:85dvh;border-radius:22px;background:#fff;padding:26px;box-shadow:0 24px 80px #13251930;display:flex;flex-direction:column}.dialog-heading{display:flex;align-items:center;justify-content:space-between}.dialog h2{font-size:20px;margin:8px 0 0;font-weight:600}.close-modal{font-size:23px;width:31px;height:31px}.search-form{display:flex;align-items:center;background:#f4f7ef;border:1px solid #dee7d6;padding:7px 8px 7px 12px;gap:8px;border-radius:11px;margin-top:23px}.search-form>span svg{width:17px;height:17px;color:#8ba17e}.search-form input{border:0;background:transparent;outline:0;min-width:0;flex:1;font-size:12px;padding:8px 0;color:#33503a}.search-form button{background:var(--green);color:#fff;font-size:11px;border-radius:6px;padding:9px 12px}.search-description{font-size:10px;color:#9aa38f;margin:12px 0;line-height:1.7}.quick-search{display:flex;gap:7px;flex-wrap:wrap;margin-bottom:14px}.quick-search button{border:1px solid #e6ebdf;background:white;color:#829274;border-radius:20px;padding:6px 9px;font-size:10px}.search-results{overflow:auto;min-height:100px}.search-item{display:flex;align-items:center;gap:13px;width:100%;text-align:left;border-top:1px solid #eef1e8;padding:15px 0;background:white}.search-item>span:first-child{display:grid;place-items:center;color:#7b9970;background:#f1f6eb;min-width:34px;height:34px;border-radius:9px}.search-item>div{flex:1;min-width:0}.search-item strong{font-size:13px;font-weight:550;display:block}.search-item small{font-size:10px;color:#9aa591;display:block;margin-top:5px;line-height:1.6}.search-item>span:last-child{color:#80996d;font-size:18px}.search-empty{font-size:12px;line-height:1.8;color:#8c997f;text-align:center;padding:22px 8px}.mode-option{text-align:left;border:1px solid #e0e8d8;background:#f8fbf4;padding:17px;border-radius:12px;margin-top:19px;display:flex;flex-direction:column;gap:7px}.mode-option strong{font-size:14px}.mode-option span{font-size:11px;line-height:1.8;color:#8d9b82}.mode-option small{font-size:10px;color:#6b8b57}.settings-tip{font-size:11px;line-height:1.9;color:#949f8a}.doc-link{font-size:11px;color:var(--green);margin-top:5px}.toast{position:fixed;bottom:25px;left:50%;transform:translateX(-50%);padding:13px 20px;background:#254734f2;color:white;border-radius:10px;font-size:12px;z-index:80;max-width:calc(100% - 32px);line-height:1.6;box-shadow:0 4px 18px #15291f22}.svg-map{width:100%;height:100%;cursor:grab;touch-action:pan-y}.svg-map text{font-family:"Microsoft YaHei",system-ui,sans-serif;user-select:none}.map-marker{filter:drop-shadow(0 3px 3px #29492720)}.live-map-error{position:absolute;top:150px;left:470px;right:65px;background:#fffaf0;border:1px solid #e5deca;padding:18px;border-radius:12px;font-size:12px;line-height:1.8;color:#917759}.active-journey{background:#e9f1e2;padding:12px;border-radius:9px;font-size:11px;color:#527343;line-height:1.8;margin-top:10px}.active-journey strong{display:block;font-size:13px;margin-bottom:4px}.active-journey button{background:var(--green);color:#fff;border-radius:6px;padding:8px 11px;font-size:11px;margin-top:7px}.loading-dot{display:inline-block;width:12px;height:12px;border:2px solid #fff7;border-top-color:white;border-radius:50%;animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}
@media(min-width:1500px){.workspace{padding-left:5vw}.planner{width:410px}.map-heading,.map-attribution{left:calc(5vw + 450px)}.map-legend{left:calc(5vw + 462px)}}
@media(max-width:800px){.topbar{height:65px;padding:0 19px;gap:10px}.brand{font-size:23px;gap:9px}.brand-mark{width:34px;height:34px;font-size:30px;border-radius:10px}.brand>span:last-child{gap:8px}.brand-en{font-size:8px;letter-spacing:1.8px}.tagline{display:none}.mode-button{padding:8px 10px;font-size:10px;gap:5px}.workspace{display:flex;flex-direction:column;padding:0;min-height:calc(100dvh - 65px)}.map-area{position:relative;width:100%;height:32dvh;min-height:220px;max-height:350px;order:0}.map-heading{top:15px;left:15px;font-size:10px;padding:8px 10px;border-radius:8px}.map-sub{display:none}.map-legend{top:57px;left:18px;font-size:8px}.map-tools{right:15px;bottom:40px;border-radius:8px}.map-tools button{height:31px;width:31px;font-size:19px}.map-notice{bottom:12px;right:15px;font-size:8px;padding:5px 7px}.map-attribution{left:17px;bottom:14px;font-size:7px;letter-spacing:1px}.planner{width:100%;border-radius:23px 23px 0 0;padding:23px 22px 20px;margin-top:-15px;box-shadow:0 -3px 20px #2841310a;border-bottom:0;order:1}.planner-head .eyebrow{font-size:7px}h1{font-size:22px;margin-top:6px}.intro{margin:5px 0 18px;font-size:11px}.journey-icon{width:32px;height:32px}.vehicle{padding:10px 3px}.itinerary{margin-top:12px}.add-stop{margin-bottom:14px}.result{margin-top:18px}.planner-footer{padding-bottom:env(safe-area-inset-bottom);margin-top:18px}.modal{padding:15px;align-items:flex-end}.dialog{width:100%;max-height:85dvh;padding:23px;border-radius:21px}.search-dialog{min-height:58dvh}.live-map-error{left:15px;right:60px;top:90px;font-size:10px;padding:11px}.metrics{gap:22px}.metrics .metric+.metric{padding-left:22px}.toast{bottom:20px}}
@media(prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}}
.vehicle-note{display:none}.vehicle{gap:7px}.vehicle-switch{gap:3px}
.mobile-route-toolbar,.mobile-route-actions,.current-location-card{display:none}
@media(max-width:800px){
  body:not(.route-view) .map-area{display:none}
  body:not(.route-view) .workspace{background:#f6f8f2;padding:14px}
  body:not(.route-view) .planner{margin:0;border-radius:22px;padding:22px 20px;border:1px solid #e9eee2;box-shadow:0 8px 28px #29453708}
  body:not(.route-view) #result{display:none}
  .current-location-card{width:100%;display:flex;align-items:center;text-align:left;gap:12px;padding:13px 14px;margin:0 0 23px;border:1px solid #e2e9da;border-radius:12px;background:#f5f8ef;color:#547447}
  .current-location-card>span:first-child{display:grid;place-items:center;width:34px;height:34px;background:#e6efdb;border-radius:10px;flex:none}
  .current-location-card>span:nth-child(2){flex:1;min-width:0}
  .current-location-card small{display:block;font-size:9px;color:#93a183;margin-bottom:4px}
  .current-location-card strong{display:block;font-size:13px;font-weight:550}
  #current-location-meta{display:block;font-size:9px;line-height:1.7;margin-top:4px;color:#98a58b}
  .location-arrow{font-size:20px;color:#90a77b}
  body.route-view{overflow:hidden}
  .route-view .topbar{display:none}
  .route-view .workspace{position:fixed;inset:0;min-height:0;padding:0;display:block}
  .route-view .map-area{position:absolute;inset:0;width:100%;height:100dvh;min-height:0;max-height:none}
  .route-view .map-heading,.route-view .map-sub,.route-view .map-notice,.route-view .map-attribution{display:none}
  .route-view .map-legend{top:calc(env(safe-area-inset-top) + 85px);left:20px;background:#ffffffe8;border-radius:7px;padding:7px 9px}
  .route-view .map-tools{bottom:calc(43dvh + 18px);right:16px}
  .route-view .planner{position:absolute;bottom:0;left:0;width:100%;margin:0;border-radius:22px 22px 0 0;padding:20px 22px calc(16px + env(safe-area-inset-bottom));max-height:43dvh;overflow-y:auto;box-shadow:0 -5px 25px #183e2814;background:#fff}
  .route-view .planner>*{display:none}
  .route-view .planner>#result,.route-view .planner>#error,.route-view .planner>.mobile-route-actions{display:block}
  .route-view #result{margin:0}
  .route-view .result-heading{margin-bottom:11px}
  .route-view .detour{margin-top:12px;padding:9px 11px}
  .route-view .detour small{display:none}
  .route-view .arrival-time{margin-top:7px}
  .route-view .journey-button{margin-top:10px}
  .route-view .mobile-route-actions{display:flex!important;gap:8px;margin-top:10px}
  .mobile-route-actions button{flex:1;border:1px solid #dce6d3;background:#f8fbf4;border-radius:9px;padding:10px;font-size:11px;color:#557749}
  .mobile-route-actions button:last-child{background:var(--green);color:white;border-color:var(--green)}
  .route-view .mobile-route-toolbar{position:absolute;top:calc(env(safe-area-inset-top) + 15px);left:15px;right:15px;z-index:8;display:flex;gap:11px;align-items:center;background:#fffffff2;border:1px solid #dde6d4;border-radius:14px;padding:10px 12px;box-shadow:0 4px 20px #3153330d}
  .mobile-route-toolbar button{background:#f0f5e9;min-width:34px;height:34px;border-radius:9px;font-size:22px;color:#557749}
  .mobile-route-toolbar>div{flex:1;min-width:0}
  .mobile-route-toolbar strong{display:block;font-size:13px;font-weight:550}
  .mobile-route-toolbar small{display:block;font-size:9px;color:#95a087;margin-top:4px}
  #route-retry{font-size:11px;padding:0 10px}
  .route-view .live-map-error{top:120px}
  .route-view .toast{bottom:calc(43dvh + 16px)}
}
