*{box-sizing:border-box}html,body{color:#f2f1e9;background:#172328;width:100%;height:100%;margin:0;font-family:Arial,PingFang SC,Microsoft YaHei,sans-serif;font-size:14px;overflow:hidden}button,select,input{font:inherit}button,select{color:inherit;cursor:pointer;background:0 0;border:0}button{transition:background .15s,color .15s}button:hover{background:#ffffff18}button:focus-visible,select:focus-visible,input:focus-visible{outline-offset:3px;outline:2px solid #ffcd50}button:disabled{opacity:.35;cursor:not-allowed}button.active{color:#152025;background:#ffcd42}#scene,#scene canvas{width:100%;height:100%;display:block}.panel{-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);background:linear-gradient(135deg,#182126eb,#172125df);border:1px solid #ffffff24;border-radius:18px;box-shadow:0 7px 25px #0004}.brand{align-items:center;gap:12px;padding:10px 16px 10px 10px;display:flex;position:absolute;top:22px;left:22px}.brand-mark{color:#12252a;background:#ffcc3d;border-radius:50%;place-items:center;width:40px;height:40px;font-size:22px;font-weight:700;display:grid}.brand strong{letter-spacing:2px;font-size:18px;display:block}.brand div>span{color:#a7b4b6;letter-spacing:.8px;margin-top:5px;font-size:11px;display:block}#fps{color:#8ec5a6;margin-left:8px;font-weight:400}.toolbar{align-items:center;gap:5px;padding:7px;display:flex;position:absolute;top:22px;right:22px}.toolbar button,.toolbar select{border-radius:11px;padding:10px 12px}.toolbar select{background:#ffffff08;font-size:12px}.toolbar option{background:#172328}.time-buttons{gap:4px;display:flex}.time-buttons button.active{color:#202a2c;background:#f1f1e8}.divider{border-left:1px solid #ffffff20;height:23px;margin:0 5px}kbd{text-align:center;min-width:16px;color:inherit;background:#ffffff12;border:1px solid #ffffff15;border-radius:4px;padding:0 4px;font-size:10px;line-height:16px;display:inline-block}#places{z-index:4;width:270px;max-height:calc(100vh - 120px);padding:8px;position:absolute;top:88px;right:170px;overflow-y:auto}#places button{text-align:left;border-radius:9px;width:100%;padding:12px;display:block}.map-corner{width:290px;position:absolute;bottom:34px;left:22px}.road-label{letter-spacing:1px;background:#176653;border:2px solid #b8d9cb;border-radius:5px;margin-bottom:10px;padding:7px 12px;font-size:15px;font-weight:700;display:inline-block;box-shadow:0 3px 8px #0005}#mini-map{border-radius:12px;width:290px;height:190px;padding:0;display:block;overflow:hidden}#mini-svg{opacity:.9;width:100%;height:100%}.north{background:#132429dd;border-radius:6px;padding:5px;font-size:11px;position:absolute;top:54px;right:12px}.bottom-center{text-align:center;white-space:nowrap;position:absolute;bottom:35px;left:50%;transform:translate(-50%)}.controls-hint{color:#e6e4d7;text-shadow:0 1px 4px #000;margin-bottom:12px;font-size:11px}.controls-hint kbd{background:#141e24b8}.mode-dock{background:linear-gradient(100deg,#1a272be8,#394035dc);border-radius:20px;gap:5px;padding:7px;display:inline-flex}.mode-dock button{border-radius:13px;padding:13px 17px;font-size:14px;font-weight:500}.mode-dock kbd{margin-left:9px}.speed-panel{width:245px;padding:17px 18px 8px;position:absolute;bottom:34px;right:22px}.speed-panel>div:first-child{letter-spacing:2px;color:#9fadae;font-size:10px}.speed-line{align-items:baseline;gap:10px;display:flex;position:relative}.speed-line strong{font-variant-numeric:tabular-nums;font-size:54px;font-weight:500;line-height:1.3}.speed-line>span{color:#b7c4c3;font-size:11px}.speed-line small{color:#d0d5ca;font-size:11px;position:absolute;top:18px;right:0}.meter{background:#ffffff12;height:3px;margin:8px 0 7px}.meter i{background:#ffd35b;width:0;height:100%;transition:width .1s;display:block}.speed-panel button{border-top:1px solid #ffffff12;width:100%;padding:11px 0;font-size:12px}.attribution{color:#bac1bb;background:#18242888;border-radius:5px;padding:3px 6px;font-size:9px;position:absolute;bottom:7px;left:22px}.attribution a{color:inherit}.attribution span{color:#9daaa6;margin-left:12px}#toast{z-index:12;text-align:center;max-width:80%;padding:13px 24px;position:absolute;top:100px;left:50%;transform:translate(-50%)}#loading{z-index:100;background:radial-gradient(at 50% 40%,#294246,#101c22 70%);flex-direction:column;justify-content:center;align-items:center;display:flex;position:absolute;inset:0}#loading .loading-mark{color:#ffcf51;border:1px solid #ffd25f88;border-radius:50%;place-items:center;width:70px;height:70px;font-size:34px;display:grid}#loading h1{letter-spacing:10px;margin:28px 0 4px;font-size:28px}#loading p{color:#b3c3bd;letter-spacing:2px;margin:18px;font-size:12px}.loading-track{background:#ffffff15;width:230px;height:2px;overflow:hidden}.loading-track i{background:#ffd25c;width:40%;height:100%;animation:1.3s ease-in-out infinite loading;display:block}#loading small{color:#708c8b;letter-spacing:5px;margin-top:25px;font-size:11px}@keyframes loading{0%{transform:translate(-100%)}to{transform:translate(350%)}}[hidden]{display:none!important}#map-modal{z-index:20;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);background:#0d171f9c;place-items:center;display:grid;position:absolute;inset:0}.map-shell{flex-direction:column;width:min(1200px,94vw);height:min(780px,90vh);display:flex;overflow:hidden}.map-shell header{border-bottom:1px solid #ffffff16;align-items:center;gap:30px;padding:24px 28px;display:flex}.map-shell small{letter-spacing:3px;color:#9fb4b1;font-size:9px}.map-shell h2{letter-spacing:3px;margin:7px 0 0;font-size:24px}.map-shell input{color:#eee;background:#0e1c22;border:1px solid #ffffff25;border-radius:10px;width:320px;margin-left:auto;padding:13px 16px}.map-shell header button{border-radius:8px;padding:7px;font-size:23px}.map-body{flex:1;min-height:0;display:flex}#map-viewport{background:#263531;flex:1;position:relative;overflow:hidden}#full-svg{cursor:crosshair;width:100%;height:100%}#search-results{border-left:1px solid #ffffff14;width:240px;padding:12px;overflow:auto}#search-results button{text-align:left;border-bottom:1px solid #ffffff0a;border-radius:10px;width:100%;padding:17px 13px;display:block}#search-results small{color:#9cacaa;letter-spacing:0;margin-top:6px;font-size:10px;display:block}.map-shell footer{color:#a5b9b1;border-top:1px solid #ffffff14;padding:15px 28px;font-size:11px}.map-legend{background:#132522d9;border-radius:8px;padding:10px;font-size:11px;position:absolute;bottom:15px;left:18px}.map-legend span{color:#9bac9f;margin-left:8px}.map-legend .tunnel-key{color:#f6bc57}.map-landmark{cursor:pointer}.map-landmark text{paint-order:stroke;stroke:#152b2b;stroke-width:6px;fill:#f6e6bb;pointer-events:none;font-size:65px}.map-landmark:hover circle{fill:#fff}body.clean .brand,body.clean .toolbar,body.clean .map-corner,body.clean .bottom-center,body.clean .speed-panel,body.clean .attribution{opacity:0;pointer-events:none}@media (max-width:1100px){.toolbar{top:95px}.mode-dock button{padding:12px}.map-corner,#mini-map{width:220px}.speed-panel{width:210px}.controls-hint{font-size:10px}.bottom-center{bottom:40px}}.map-shell header .map-control{white-space:nowrap;background:#ffffff0c;padding:10px;font-size:12px}.map-shell header{gap:15px}#full-svg{touch-action:none;cursor:grab}#full-svg:active{cursor:grabbing}.map-metro:hover circle{fill:#ed5369}.map-shell header .map-control.active{color:#152025;background:#ffcd42}#loading{place-items:center;display:grid}#loading .loading-card{text-align:left;width:min(520px,88vw)}#loading .loading-mark{margin:0 0 20px}#loading h1{margin:0 0 10px;font-size:34px}#loading #loading-text{color:#e8ede5;font-size:17px}#loading .loading-track{width:100%;height:7px;margin:12px 0 0}#loading .loading-track i{background:#ffcd42;width:0;height:100%;transition:width .12s linear;animation:none}#loading .loading-progress-title{color:#9eb3aa;justify-content:space-between;align-items:end;margin-top:28px;font-size:12px;display:flex}#loading-percent{color:#ffda6d;font-variant-numeric:tabular-nums;font-size:31px;line-height:1}#loading-detail{overflow-wrap:anywhere;min-height:21px;font-size:12px;color:#b7c5bf!important;margin:13px 0 6px!important}.loading-meta{color:#8ea59b;font-variant-numeric:tabular-nums;justify-content:space-between;gap:15px;font-size:11px;display:flex}#loading-stages{color:#71887e;grid-template-columns:repeat(3,1fr);gap:10px 18px;margin:30px 0 22px;padding:0;font-size:11px;list-style:none;display:grid}#loading-stages li:before{content:"○";margin-right:6px}#loading-stages li.current{color:#f5dc98}#loading-stages li.current:before{content:"◉"}#loading-stages li.complete{color:#9dbdaf}#loading-stages li.complete:before{content:"✓"}#loading small{color:#7f988d;letter-spacing:1px;font-size:10px}#loading-retry{color:#152025;background:#ffcd42;border-radius:8px;margin:12px 0 18px;padding:11px 20px}#loading.failed #loading-detail{color:#f5a49b!important}.map-shell{width:min(1400px,96vw);height:min(900px,94vh)}.map-shell header{gap:14px;padding:19px 24px}.map-shell h2{letter-spacing:1px;font-size:23px}.map-shell header input{width:min(360px,30vw);margin-left:auto}.map-shell header #close-map{margin-left:4px}.map-filters{background:#152421;border-bottom:1px solid #ffffff14;flex-wrap:wrap;align-items:center;gap:11px;padding:13px 24px;display:flex}.map-types{background:#0e1b1b;border-radius:10px;gap:4px;padding:4px;display:flex}.map-types button{white-space:nowrap;border-radius:7px;padding:9px 12px;font-size:12px}.map-types button[aria-pressed=true]{color:#14201d;background:#e8c66c}.map-filters label{color:#a2b8ab;align-items:center;gap:8px;font-size:11px;display:flex}.map-filters select{color:#f0eee0;background:#233732;border:1px solid #ffffff1d;border-radius:7px;max-width:220px;padding:9px;font-size:12px}.map-filters #map-reset{color:#c5d2c6;margin-left:auto;padding:9px;font-size:11px}.map-body{grid-template-columns:minmax(0,1fr) 310px;display:grid}.map-sidebar{background:#152320;border-left:1px solid #ffffff14;flex-direction:column;min-width:0;min-height:0;display:flex}.map-results-heading{color:#9eb8a8;justify-content:space-between;align-items:center;gap:8px;padding:15px 17px 9px;font-size:11px;display:flex}.map-results-heading button{color:#efd58f;padding:4px;font-size:10px}#search-results{border:0;flex:1;width:100%;min-height:0;padding:7px 9px;overflow:auto}#search-results .map-result{border:1px solid #0000;border-bottom-color:#ffffff08;border-radius:8px;align-items:center;gap:10px;padding:13px 9px;display:flex}#search-results .map-result:hover{background:#ffffff08}#search-results .map-result.selected{background:#ecd08912;border-color:#c9b77555}.map-result-icon{color:#fff;border-radius:7px;flex:0 0 25px;place-items:center;height:25px;font:700 12px system-ui;display:grid}.map-result strong{color:#e5e9dc;font-size:12px;font-weight:650;line-height:1.6}.map-result small{font-size:10px;color:#96ae9e!important;margin-top:3px!important;line-height:1.65!important}.map-empty{color:#d9e0cf;padding:20px 12px;font-size:12px}.map-empty p{color:#93ab9c;font-size:11px;line-height:1.8}.map-empty button{color:#edcc79;border:1px solid #d9c28244;margin-top:15px;text-align:center!important;padding:9px!important}#map-selection{background:linear-gradient(135deg,#d6b85412,#0000);border-bottom:1px solid #e9cb7940;padding:19px 18px 13px}#map-selection>small{letter-spacing:2px;color:#d7bd7c;font-size:9px}#map-selected-name{color:#f2e8cb;margin:8px 0;font-size:20px;line-height:1.5}#map-selected-meta{color:#adc1ad;margin:5px 0 10px;font-size:11px}#map-selected-lines{flex-wrap:wrap;gap:5px;display:flex}#map-selected-lines span{color:#fff;border-radius:4px;padding:4px 7px;font-size:10px}.map-travel-actions{grid-template-columns:1fr;gap:7px;margin-top:15px;display:grid}.map-travel-actions button{color:#dfdfcf;background:#ffffff08;border-radius:8px;padding:11px;font-size:12px}.map-travel-actions #map-fly{color:#14211a;background:#ffcd42;font-weight:750}#map-travel-status{color:#c7bd96;min-height:14px;margin:9px 0 0;font-size:10px}.map-zoom{background:#152823;border:1px solid #ffffff28;border-radius:10px;gap:1px;display:grid;position:absolute;bottom:45px;right:16px;overflow:hidden;box-shadow:0 6px 20px #0005}.map-zoom button{color:#f1e5bf;background:#132923;border-radius:0;width:41px;height:40px;font-size:23px}.map-zoom button:hover{background:#365044}#map-fit-results{border-top:1px solid #ffffff18;font-size:23px}#map-scale{color:#d0ddca;pointer-events:none;background:#10241cbb;border-radius:5px;padding:5px 7px;font-size:10px;position:absolute;bottom:18px;right:17px}.map-legend{max-width:calc(100% - 90px);font-size:10px}.map-cluster,.map-point{cursor:pointer;outline:none}.map-cluster:hover circle:nth-child(2),.map-cluster:focus circle:nth-child(2){fill:#425447;stroke:#fff3c5}.map-point:focus circle:nth-child(2){stroke:#fff;stroke-width:3px}.map-shell footer{color:#92ab9b;padding:12px 22px;font-size:10px;line-height:1.8}@media (max-width:1100px){.map-shell header{padding:14px 18px}.map-shell h2{font-size:19px}.map-filters{gap:8px;padding:10px 14px}.map-types button{padding:8px;font-size:11px}.map-body{grid-template-columns:minmax(0,1fr) 270px}.map-filters select{max-width:180px}}
