:root{font-family:Inter,"Microsoft YaHei","PingFang SC",sans-serif;color:#213b33;background:#f6f8f5;font-synthesis:none;--green:#176b53;--muted:#72837b;--border:#e4eae4}*{box-sizing:border-box}body{margin:0}button,input,select{font:inherit}button,a,input,select{-webkit-tap-highlight-color:transparent}button{cursor:pointer}button:disabled{cursor:wait;opacity:.65}button:focus-visible,a:focus-visible{outline:3px solid #6fbf9f;outline-offset:3px}a{color:var(--green)}[hidden]{display:none!important}.header{height:82px;padding:0 34px;display:flex;justify-content:space-between;align-items:center;background:#fff;border-bottom:1px solid var(--border)}.brand{display:flex;align-items:center;gap:12px;text-decoration:none;font-size:24px;font-weight:750;letter-spacing:2px}.brand-icon{background:var(--green);color:white;border-radius:13px;width:42px;height:42px;display:grid;place-items:center;font-size:30px}.brand small{display:block;font-size:10px;letter-spacing:1px;font-weight:400;margin-top:3px;color:var(--muted)}.button{border:0;border-radius:10px;padding:13px 18px;font-weight:600}.secondary{background:#eef4ef;color:var(--green)}.primary{background:var(--green);color:#fff;box-shadow:0 4px 12px #176b5315}.primary:hover{background:#115a45}.workspace{display:grid;grid-template-columns:380px 1fr;height:calc(100dvh - 82px);min-height:620px}.sidebar{padding:30px 28px 20px;background:white;overflow:auto;border-right:1px solid var(--border)}.eyebrow{font-size:10px;letter-spacing:2px;color:var(--muted);font-weight:650}h1{font-size:28px;margin:12px 0 9px;letter-spacing:-1px}.intro p{font-size:13px;color:var(--muted);margin:0 0 26px}label{font-size:12px;font-weight:600;display:block;margin:0 0 8px}.city-label span{color:var(--muted);font-size:10px;font-weight:400;margin-left:8px}input:not([type=radio]),select{width:100%;border:1px solid var(--border);border-radius:9px;background:#f8faf8;padding:12px;color:#213b33;outline:none}input:focus,select:focus{border-color:var(--green);box-shadow:0 0 0 3px #176b5310}.locations{position:relative;margin-top:20px;display:grid;gap:19px}.location-field{position:relative}.dot{display:inline-block;width:7px;height:7px;border-radius:50%;margin-right:7px}.start-dot{background:#228863}.end-dot{background:#df9256}.swap{position:absolute;right:13px;top:65px;border:1px solid var(--border);z-index:2;width:27px;height:27px;border-radius:50%;background:white;color:var(--green)}.text-button{background:none;border:0;padding:12px 0;color:var(--green);font-size:12px}.modes{padding:0;border:0;margin:12px 0 22px;display:grid;grid-template-columns:repeat(4,1fr);gap:6px}.modes legend{font-size:12px;font-weight:600;margin-bottom:9px}.modes label{margin:0;text-align:center;position:relative}.modes input{position:absolute;opacity:0}.modes span{display:block;padding:11px 3px;border:1px solid var(--border);border-radius:8px;color:var(--muted);font-size:13px}.modes input:checked+span{background:#eaf4ee;border-color:#176b5350;color:var(--green)}.modes input:focus-visible+span{outline:2px solid var(--green)}#plan{margin-top:20px;width:100%;display:flex;justify-content:space-between}.status{font-size:12px;line-height:1.8;color:var(--muted);margin:16px 0}.status.error,#config-error{color:#b34437}.summary{border:1px solid #dce9df;background:#f4f9f4;padding:17px;border-radius:12px;margin:17px 0}.summary strong{font-size:25px}.summary div{display:flex;align-items:baseline;gap:15px;margin-top:10px}.summary div span{font-size:14px;color:var(--muted)}.summary p{font-size:12px;margin-bottom:0;line-height:1.7}.sidebar-footer{font-size:10px;line-height:1.8;color:#87978e;margin-top:28px;border-top:1px solid var(--border);padding-top:15px}.map-area{position:relative;min-width:0;min-height:450px;background:#edf2e9}#map,.map-placeholder{position:absolute;inset:0}.map-placeholder{display:grid;place-items:center;background:linear-gradient(28deg,transparent 47%,#ffffff80 48%,#ffffff80 51%,transparent 52%),linear-gradient(115deg,transparent 37%,#ffffff90 38%,#ffffff90 40%,transparent 41%),repeating-linear-gradient(0deg,transparent 0 110px,#dbe4d980 110px 111px),repeating-linear-gradient(90deg,transparent 0 130px,#dbe4d980 130px 131px);background-color:#eef3e9}.empty-card{margin:25px;text-align:center;padding:37px 42px;background:#ffffffee;box-shadow:0 16px 60px #28422f0e;border:1px solid #fff;border-radius:20px;max-width:440px}.empty-icon{font-size:36px;border-radius:17px;width:64px;height:64px;display:grid;place-items:center;background:#edf6ee;color:var(--green);margin:auto}.empty-card h2{font-size:21px;margin:22px 0 12px}.empty-card p{font-size:13px;color:var(--muted);line-height:1.8}.empty-card button{margin-top:12px}.empty-card small{display:block;margin-top:20px;font-size:11px;color:#94a095}.map-badge{position:absolute;top:22px;right:24px;background:#ffffffed;padding:12px 17px;border-radius:10px;font-size:12px;box-shadow:0 3px 20px #264a3410;pointer-events:none}.map-badge span{color:#a3b1a7;margin:0 7px}.suggestions{position:absolute;top:100%;left:0;right:0;margin-top:4px;background:#fff;border:1px solid var(--border);border-radius:10px;box-shadow:0 8px 24px #0002;z-index:20;max-height:260px;overflow:auto}.suggestions button{display:block;border:0;background:none;width:100%;padding:12px;text-align:left;color:#213b33;font-size:13px}.suggestions button:hover,.suggestions button:focus{background:#edf6ee}.suggestions small{display:block;font-size:11px;color:var(--muted);margin-top:4px;line-height:1.5}dialog{border:1px solid var(--border);border-radius:18px;max-width:470px;width:calc(100% - 32px);padding:26px;color:#213b33;box-shadow:0 20px 80px #0002}dialog::backdrop{background:#19382966;backdrop-filter:blur(3px)}.dialog-title{display:flex;align-items:center;justify-content:space-between}.dialog-title h2{font-size:21px;margin:0}.icon-button{font-size:25px;background:none;border:0;color:var(--muted)}dialog p{font-size:12px;line-height:1.8;color:var(--muted)}dialog label{margin-top:17px}dialog a{font-size:12px}dialog .primary{width:100%}#route-panel{font-size:13px}#route-panel .amap-lib-driving,#route-panel .amap-lib-transfer,#route-panel .amap-lib-walking,#route-panel .amap-lib-riding{border-radius:10px;border-color:var(--border)}@media(max-width:760px){.header{height:68px;padding:0 18px}.brand{font-size:21px}.workspace{height:auto;min-height:0;display:flex;flex-direction:column}.sidebar{padding:24px 20px;overflow:visible;border-right:0}.intro p{margin-bottom:20px}.map-area{height:55dvh;min-height:360px}.sidebar-footer{margin-top:18px}.empty-card{padding:24px}.empty-card h2{font-size:18px}.map-badge{top:14px;right:14px}.summary{margin-bottom:15px}}
:root .optimization-options{border:1px solid #dce9df;background:#f4f9f4;border-radius:10px;padding:14px;margin-bottom:12px}.optimization-options label:not(:first-child){margin-top:12px}.optimization-options p,.visit-order p{font-size:11px;color:var(--muted);line-height:1.8;margin-bottom:0}#stops{display:grid;gap:16px}#stops:empty{display:none}.stop-field input{padding-right:36px!important}.remove-stop{position:absolute;right:9px;top:31px;border:0;background:none;font-size:22px;color:#72837b}.visit-order{border:1px solid var(--border);padding:16px;border-radius:10px;margin:15px 0}.visit-order h2{font-size:14px;margin:0 0 12px}.visit-order ol{padding-left:22px;margin:0}.visit-order li{padding:5px 0;font-size:12px;line-height:1.6}.swap{top:60px}
:root{color-scheme:light}.header-actions{display:flex;gap:10px;align-items:center}
html[data-theme=dark]{color-scheme:dark;color:#e1ece5;background:#101b17;--green:#8bd3af;--muted:#a3b8ac;--border:#34473d}
html[data-theme=dark] .header,html[data-theme=dark] .sidebar{background:#15231e}
html[data-theme=dark] input:not([type=radio]),html[data-theme=dark] select{background:#1d2f26;color:#e1ece5}
html[data-theme=dark] input::placeholder{color:#93a79b}
html[data-theme=dark] .secondary{background:#263c30;color:#b8e5c9}
html[data-theme=dark] .primary,html[data-theme=dark] .brand-icon{background:#287657;color:white}
html[data-theme=dark] .primary:hover{background:#328963}
html[data-theme=dark] .swap{background:#263c30}
html[data-theme=dark] .modes input:checked+span{background:#2a4737;border-color:#80c59c;color:#c5edd5}
html[data-theme=dark] .summary,html[data-theme=dark] .optimization-options{background:#1d3227;border-color:#3c5948}
html[data-theme=dark] .suggestions,html[data-theme=dark] dialog{background:#1b2c23;color:#e1ece5}
html[data-theme=dark] .suggestions button{color:#e1ece5}
html[data-theme=dark] .suggestions button:hover,html[data-theme=dark] .suggestions button:focus{background:#2a4434}
html[data-theme=dark] .map-area{background:#101b1e}
html[data-theme=dark] .map-placeholder{background-color:#17271f;background-image:linear-gradient(28deg,transparent 47%,#ffffff08 48%,#ffffff08 51%,transparent 52%),linear-gradient(115deg,transparent 37%,#ffffff09 38%,#ffffff09 40%,transparent 41%),repeating-linear-gradient(0deg,transparent 0 110px,#66816b20 110px 111px),repeating-linear-gradient(90deg,transparent 0 130px,#66816b20 130px 131px)}
html[data-theme=dark] .empty-card{background:#1b2d24ed;border-color:#34473d}
html[data-theme=dark] .empty-icon{background:#294334;color:#b8e5c9}
html[data-theme=dark] .map-badge{background:#1b2d24ed;color:#d0e7d7}
html[data-theme=dark] .sidebar-footer,html[data-theme=dark] .empty-card small{color:#a3b8ac}
html[data-theme=dark] .status.error,html[data-theme=dark] #config-error{color:#ffac9f}
html[data-theme=dark] #route-panel,html[data-theme=dark] #route-panel :is(div,dl,dt,h3,p){background-color:#1b2c23!important;color:#e1ece5!important;border-color:#34473d!important}
html[data-theme=dark] #route-panel :is(span,a){color:#c5edd5!important}
html[data-theme=dark] #route-panel dt:hover{background:#2a4434!important}
html[data-theme=dark] .amap-scalecontrol{color:#e1ece5}
@media(max-width:480px){.header-actions{gap:6px}.header-actions .button{padding:10px;font-size:12px}.brand small{display:none}}
.address-actions,.result-actions{display:flex;align-items:center;gap:16px;flex-wrap:wrap}.address-count{font-size:11px;color:var(--muted);margin-left:auto}.address-state{display:block;font-size:10px;color:var(--muted);line-height:1.6;margin-top:5px;overflow-wrap:anywhere}.address-state.confirmed{color:var(--green)}.stop-controls{display:flex;gap:8px;margin-top:6px}.stop-controls button{border:1px solid var(--border);border-radius:6px;background:transparent;color:var(--green);font-size:11px;padding:5px 10px}.stop-controls button:disabled{cursor:default;opacity:.4}.planning-progress{border:1px solid var(--border);border-radius:10px;padding:12px}.planning-progress>div{display:flex;align-items:center;justify-content:space-between;gap:8px;font-size:12px}.planning-progress .text-button{padding:4px 0;white-space:nowrap}.planning-progress progress{display:block;width:100%;height:8px;margin:10px 0;accent-color:var(--green)}.planning-progress small{font-size:10px;color:var(--muted)}textarea{width:100%;font:inherit;line-height:1.8;border:1px solid var(--border);border-radius:9px;background:#f8faf8;padding:12px;color:#213b33;resize:vertical}textarea:focus{outline:2px solid var(--green);outline-offset:2px}#batch-error{color:#b34437}html[data-theme=dark] textarea{background:#1d2f26;color:#e1ece5}html[data-theme=dark] #batch-error{color:#ffac9f}.result-actions{margin-top:8px;gap:12px}
/* Rounded arrow cursor, drawn as an inline vector with its hotspot at the tip. */
:root{--xingtu-cursor:url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2232%22%20height%3D%2232%22%20viewBox%3D%220%200%2032%2032%22%3E%3Cpath%20d%3D%22M4%204C3.8%202.1%205.3%201.5%206.7%202.8L28.1%2021C29.8%2022.5%2028.7%2024.3%2026.7%2023.9L16.9%2021.9C15.7%2021.7%2015.1%2022.1%2014.5%2023.2L9.5%2030C8.4%2031.6%206.4%2031%206.3%2029.1Z%22%20fill%3D%22%23303030%22%20stroke%3D%22%23ffffff%22%20stroke-width%3D%221.15%22%20stroke-linejoin%3D%22round%22%2F%3E%3C%2Fsvg%3E") 5 3}
@media(any-hover:hover){body,body button,body a,body label,body select{cursor:var(--xingtu-cursor),auto}input:not([type=radio]):not([type=checkbox]),textarea,[contenteditable=true]{cursor:text}button:disabled{cursor:not-allowed}}
/* AMap sets cursors on its drawing layers, including inline styles. */
@media(any-hover:hover){.map-area,#map,#map *{cursor:var(--xingtu-cursor),auto!important}#map input,#map textarea,#map [contenteditable=true]{cursor:text!important}}
.stop-field{padding:12px;border:1px solid var(--border);border-radius:10px;background:#f8faf8;transition:opacity .15s,border-color .15s}.stop-field label{padding-right:72px}.stop-field .remove-stop{top:46px;right:18px}.stop-drag{position:absolute;right:10px;top:6px;border:0;background:transparent;color:var(--green);font-size:12px;padding:6px 8px;cursor:grab!important;user-select:none}.stop-drag:active{cursor:grabbing!important}.stop-drag:disabled{cursor:default!important;opacity:.4}.stop-field.dragging{opacity:.45}.stop-field.drop-before{border-top:3px solid var(--green);box-shadow:0 -3px 0 #176b5320}.stop-field.drop-after{border-bottom:3px solid var(--green);box-shadow:0 3px 0 #176b5320}html[data-theme=dark] .stop-field{background:#1d2f26}
.stop-drag{touch-action:none}
.tour-entry{margin:20px 0;padding:16px;border:1px solid #dce9df;border-radius:12px;background:#f4f9f4}.tour-entry h2{font-size:17px;margin:0 0 8px}.tour-entry p,.tour-entry small{font-size:11px;line-height:1.8;color:var(--muted)}.tour-entry label{margin-top:12px}.tour-entry textarea{font-size:13px}.tour-entry .primary{width:100%;margin:14px 0 10px}.tour-entry small{display:block}#address-details>summary{cursor:pointer;color:var(--green);font-size:12px;padding:8px 0}html[data-theme=dark] .tour-entry{background:#1d3227;border-color:#3c5948}
.header{gap:16px}.header-actions .button{white-space:nowrap}
@media(max-width:600px){.header{height:auto;min-height:68px;padding-top:12px;padding-bottom:12px;flex-wrap:wrap}.header-actions{margin-left:auto}.brand small{display:none}}
@media(max-width:360px){.header-actions{width:100%;justify-content:flex-end}}
.map-place-card{position:relative;width:min(280px,calc(100vw - 48px));padding:18px;border:1px solid var(--border);border-radius:14px;background:#fff;color:#213b33;box-shadow:0 8px 30px #213b3326;overflow-wrap:anywhere}.map-place-card::after{content:"";position:absolute;left:calc(50% - 7px);bottom:-8px;width:14px;height:14px;background:inherit;border-right:1px solid var(--border);border-bottom:1px solid var(--border);transform:rotate(45deg)}.map-place-card strong{display:block;font-size:15px;line-height:1.5}.map-place-card p{margin:9px 0;font-size:12px;line-height:1.6}.map-place-address{color:var(--muted)}.map-place-actions{display:flex;gap:10px;margin-top:14px}.map-place-actions .button{flex:1;padding:10px 8px;font-size:12px;white-space:nowrap}.map-place-actions .button:disabled{cursor:not-allowed!important}html[data-theme=dark] .map-place-card{background:#1b2c23;color:#e1ece5}
.live-controls{position:absolute;left:18px;bottom:28px;z-index:200;max-width:min(360px,calc(100% - 36px));border:1px solid var(--border);border-radius:14px;background:#fffffff5;box-shadow:0 5px 24px #15382920;padding:12px 14px;color:#213b33}.live-actions{display:flex;gap:7px;flex-wrap:wrap}.live-actions button{border:1px solid var(--border);border-radius:8px;background:#eef4ef;color:var(--green);padding:9px 10px;font-size:12px;min-height:38px}.live-actions button[aria-pressed=true]{background:#176b53;color:white}.live-controls p{font-size:12px;line-height:1.6;margin:9px 0 0;overflow-wrap:anywhere}.live-controls small{display:block;color:var(--muted);font-size:10px;line-height:1.7;margin-top:8px}.live-marker{position:relative;width:48px;height:48px;pointer-events:none}.live-dot{position:absolute;left:16px;top:16px;width:16px;height:16px;border:3px solid white;border-radius:50%;background:#2478ed;box-shadow:0 1px 6px #12395b66;z-index:2}.live-arrow{position:absolute;inset:0;background:#2478edbb;clip-path:polygon(50% 0,75% 38%,50% 31%,25% 38%);transform-origin:50% 50%;transition:transform .12s linear}.live-marker.is-stale{opacity:.4}.live-marker.is-stale .live-arrow{display:none}html[data-theme=dark] .live-controls{background:#1b2d24f5;color:#e1ece5}html[data-theme=dark] .live-actions button{background:#263c30}html[data-theme=dark] .live-actions button[aria-pressed=true]{background:#287657;color:white}@media(max-width:480px){.live-controls{left:12px;bottom:26px;max-width:calc(100% - 24px);padding:10px 12px}.live-actions button{min-height:42px}}@media(prefers-reduced-motion:reduce){.live-arrow{transition:none}}
.route-tabs{display:grid;grid-template-columns:1fr 1fr;gap:6px;padding:5px;background:#edf3ee;border-radius:12px;margin-bottom:18px}.route-tabs button{min-height:44px;border:0;border-radius:8px;background:transparent;color:var(--muted);font-size:12px;font-weight:600;padding:9px 7px;line-height:1.5}.route-tabs button[aria-selected=true]{background:var(--green);color:#fff;box-shadow:0 2px 6px #176b5320}.panel-intro,.panel-note{font-size:12px;color:var(--muted);line-height:1.8;margin:0 0 18px}.panel-note{font-size:11px;margin:12px 0 0}.current-origin{display:flex;align-items:flex-start;gap:10px;padding:14px;border:1px solid var(--border);border-radius:12px;background:#f4f9f4;margin-bottom:20px}.current-origin-dot{flex-shrink:0;width:10px;height:10px;border-radius:50%;background:#2478ed;margin-top:4px;box-shadow:0 0 0 4px #2478ed15}.current-origin>div{min-width:0;flex:1}.current-origin strong{font-size:12px}.current-origin p{font-size:11px;line-height:1.7;margin:6px 0 0;color:var(--muted);overflow-wrap:anywhere}.current-origin .text-button{padding:0;white-space:nowrap}.current-destination-field{margin-bottom:20px}#current-plan{margin-top:20px;width:100%;display:flex;justify-content:space-between}#current-city-field{margin-top:15px}html[data-theme=dark] .route-tabs{background:#263c30}html[data-theme=dark] .route-tabs button[aria-selected=true]{background:#287657;color:#fff}html[data-theme=dark] .current-origin{background:#1d3227}@media(max-width:360px){.route-tabs button{font-size:11px;padding:8px 4px}}[role=tabpanel]:focus-visible{outline:2px solid var(--green);outline-offset:3px}
