:root{--paper:#f4f1e6;--ink:#16352d;--muted:#65746c;--line:#23433824;--green:#1f5c46;--green-soft:#dcebcf;--coral:#eb6244;--font-body:"PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", sans-serif;--font-display:"Songti SC", "STSong", "Noto Serif CJK SC", serif}*{box-sizing:border-box}html,body{min-height:100%}html{background:var(--paper)}body{color:var(--ink);background:var(--paper);font-family:var(--font-body);-webkit-font-smoothing:antialiased;margin:0;font-size:16px}button,input{font:inherit}button,a{-webkit-tap-highlight-color:transparent}button{color:inherit;cursor:pointer}button:focus-visible,input:focus-visible,a:focus-visible{outline-offset:3px;outline:3px solid #eb62448c}a{color:inherit;text-decoration:none}h1,h2,p{margin:0}.atlas-app{background-image:radial-gradient(#1d3d320d .8px,#0000 .8px);background-size:8px 8px;min-height:100svh;overflow:hidden}.app-header{z-index:20;border-bottom:1px solid var(--line);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);background:#f8f6edf0;grid-template-columns:1fr auto 1fr;align-items:center;gap:24px;height:78px;padding:0 28px;display:grid;position:relative}.brand{width:fit-content;font-family:var(--font-display);align-items:center;gap:11px;font-size:20px;font-weight:700;display:inline-flex}.brand small{color:var(--muted);font-family:var(--font-body);letter-spacing:2px;margin-top:2px;font-size:10px;font-weight:500;display:block}.brand-mark{color:#fff;background:var(--green);border-radius:50% 48% 46% 52%;justify-content:center;align-items:center;width:41px;height:41px;display:inline-flex;transform:rotate(-8deg);box-shadow:inset 0 0 0 2px #ffffff47}.brand-mark svg{transform:rotate(8deg)}.city-switch,.header-actions button{border:1px solid var(--line);background:#ffffff9e}.city-switch{border-radius:999px;align-items:center;gap:8px;min-height:42px;padding:0 16px;font-weight:650;display:inline-flex}.header-actions{justify-content:flex-end;gap:9px;display:flex}.header-actions button{border-radius:12px;align-items:center;gap:7px;min-height:40px;padding:0 13px;font-size:13px;display:inline-flex}.workspace{grid-template-columns:minmax(260px,.85fr) minmax(440px,1.65fr) minmax(300px,.95fr);height:calc(100svh - 78px);min-height:620px;display:grid}.route-browser,.route-detail{z-index:10;background:#f8f6edf5;position:relative}.route-browser{border-right:1px solid var(--line);flex-direction:column;min-width:0;padding:34px 24px 20px;display:flex}.browser-heading{padding:0 4px}.edition,.dialog-kicker{color:var(--coral);letter-spacing:1.4px;font-family:Avenir Next,sans-serif;font-size:11px;font-weight:750}.browser-heading h1{font-family:var(--font-display);letter-spacing:-1.5px;margin:15px 0 11px;font-size:clamp(32px,2.5vw,44px);font-weight:650;line-height:1.16}.browser-heading p{color:var(--muted);font-size:14px;line-height:1.7}.search-box{border:1px solid var(--line);height:48px;color:var(--muted);background:#fff;border-radius:14px;align-items:center;gap:10px;margin:25px 0 14px;padding:0 14px;display:flex}.search-box input{width:100%;min-width:0;color:var(--ink);background:0 0;border:0;outline:0;font-size:14px}.filter-row{scrollbar-width:none;gap:7px;padding-bottom:15px;display:flex;overflow-x:auto}.filter-row::-webkit-scrollbar{display:none}.filter-row button{border:1px solid var(--line);min-height:34px;color:var(--muted);background:0 0;border-radius:999px;flex:none;padding:0 12px;font-size:13px}.filter-row button[aria-pressed=true]{border-color:var(--green);background:var(--green);color:#fff}.route-list{flex:1;min-height:0;margin:0 -8px;padding:0 8px 30px;overflow-y:auto}.route-list-item{border:0;border-bottom:1px solid var(--line);text-align:left;background:0 0;grid-template-columns:38px 1fr auto;align-items:center;gap:10px;width:100%;min-height:72px;padding:11px 12px;transition:all .18s;display:grid}.route-list-item:hover{background:#dcebcf7a}.route-list-item[data-active=true]{background:var(--green-soft);border-bottom-color:#0000;border-radius:14px;margin:5px 0}.route-number{border:1px solid #1f5c4640;border-radius:50%;justify-content:center;align-items:center;width:33px;height:33px;font-family:Avenir Next,sans-serif;font-size:12px;font-weight:750;display:inline-flex}.route-list-item[data-active=true] .route-number{border-color:var(--coral);background:var(--coral);color:#fff}.route-copy{min-width:0}.route-copy strong,.route-copy small{display:block}.route-copy strong{text-overflow:ellipsis;white-space:nowrap;font-size:14px;overflow:hidden}.route-copy small{color:var(--muted);margin-top:5px;font-size:11px}.empty-state{min-height:220px;color:var(--muted);text-align:center;flex-direction:column;justify-content:center;align-items:center;gap:9px;display:flex}.empty-state button{background:var(--green);color:#fff;border:0;border-radius:999px;margin-top:8px;padding:8px 13px;font-size:13px}.map-stage{background:#b8d7b5;min-width:0;overflow:hidden}.map-art{isolation:isolate;width:100%;height:100%;min-height:600px;position:relative;overflow:hidden}.map-art:after{content:"";z-index:1;pointer-events:none;position:absolute;inset:0;box-shadow:inset 0 0 70px #12443524}.map-art>img{z-index:-1;object-fit:cover;object-position:center;filter:saturate(.88)contrast(.97)brightness(1.02)}.active-route-line{z-index:2;pointer-events:none;width:100%;height:100%;position:absolute;inset:0;overflow:visible}.active-route-line path{fill:none;stroke-linecap:round;stroke-linejoin:round;vector-effect:non-scaling-stroke}.route-halo{stroke:#ffffffe6;stroke-width:9px}.route-stroke{stroke:var(--coral);stroke-width:4px;filter:drop-shadow(0 2px 2px #3c321924);animation:.62s both draw-route}.map-marker{z-index:4;background:var(--green);color:#fff;border:3px solid #fff;border-radius:50% 50% 50% 12px;justify-content:center;align-items:center;width:35px;height:35px;font-family:Avenir Next,sans-serif;font-size:10px;font-weight:800;transition:all .18s;display:flex;position:absolute;transform:translate(-50%,-50%);box-shadow:0 4px 14px #11382a4d}.map-marker:hover,.map-marker[data-active=true]{z-index:6;background:var(--coral);transform:translate(-50%,-50%)scale(1.14)rotate(-3deg)}.map-marker strong{width:max-content;max-width:150px;color:var(--ink);font-family:var(--font-body);text-align:left;background:#fffcf2f2;border:1px solid #223f341f;border-radius:4px 12px 12px;padding:8px 10px;font-size:12px;font-weight:650;position:absolute;left:41px;transform:rotate(3deg);box-shadow:0 5px 18px #1435292e}.map-caption{z-index:5;color:#53645b;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);background:#fffcf2e0;border:1px solid #25443824;border-radius:999px;align-items:center;gap:7px;min-height:34px;padding:0 12px;font-size:11px;display:inline-flex;position:absolute;bottom:16px;left:18px}.route-map-view{isolation:isolate;background:radial-gradient(circle at 72% 30%,#a7d39a9e,#0000 22%),radial-gradient(circle at 24% 72%,#afd7a18f,#0000 25%),linear-gradient(145deg,#dcefd7 0%,#f1f2dc 48%,#d7ebd1 100%);width:100%;height:100%;min-height:600px;position:relative;overflow:hidden}.route-map-view:before{content:"";z-index:-1;opacity:.72;background-image:linear-gradient(24deg,#0000 47%,#ffffffb8 48% 51%,#0000 52%),linear-gradient(112deg,#0000 47%,#ffffffad 48% 51%,#0000 52%);background-size:180px 150px,220px 190px;position:absolute;inset:0}.route-map-back{z-index:7;min-height:42px;color:var(--green);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);background:#fffdf6eb;border:1px solid #18453424;border-radius:999px;align-items:center;gap:7px;padding:0 15px;font-size:13px;font-weight:700;display:inline-flex;position:absolute;top:22px;left:22px;box-shadow:0 7px 24px #153f3021}.route-map-title{z-index:6;text-align:center;max-width:calc(100% - 310px);position:absolute;top:24px;left:50%;transform:translate(-50%)}.route-map-title span,.route-map-title strong{display:block}.route-map-title span{color:var(--muted);letter-spacing:1px;margin-bottom:4px;font-size:11px;font-weight:650}.route-map-title strong{font-family:var(--font-display);font-size:21px}.track-map{width:100%;height:100%;position:absolute;inset:0;overflow:visible}.track-map path{fill:none;stroke-linecap:round;stroke-linejoin:round;vector-effect:non-scaling-stroke}.map-road-lines path{stroke:#ffffffeb;stroke-width:7px;filter:drop-shadow(0 1px #395e4c29)}.track-halo{stroke:#fffffff5;stroke-width:12px}.track-stroke{stroke:#0fbf78;stroke-width:6px;filter:drop-shadow(0 3px 5px #0c734938);animation:.76s both draw-route}.track-entry{z-index:5;color:#fff;background:#0fbf78;border:4px solid #fff;border-radius:50% 50% 50% 10px;place-items:center;width:43px;height:43px;font-weight:800;display:grid;position:absolute;top:75%;left:16%;transform:translate(-50%,-50%);box-shadow:0 5px 18px #0c5b3b47}.track-poi{z-index:4;color:var(--green);background:#fffdf6e6;border:1px solid #17523b1f;border-radius:999px;padding:7px 10px;font-size:11px;font-weight:700;position:absolute;box-shadow:0 5px 16px #1b46351c}.track-poi-one{top:29%;left:48%}.track-poi-two{top:55%;right:15%}.route-map-summary{display:none}.route-detail{border-left:1px solid var(--line);flex-direction:column;gap:25px;min-width:0;padding:34px 28px 26px;display:flex;overflow-y:auto}.detail-topline{color:var(--muted);letter-spacing:1px;justify-content:space-between;align-items:center;font-family:Avenir Next,sans-serif;font-size:11px;font-weight:700;display:flex}.prototype-chip{color:#745d18;font-family:var(--font-body);letter-spacing:0;background:#eee4bf;border-radius:999px;padding:6px 9px;font-weight:600}.district-label{color:var(--coral);align-items:center;gap:5px;font-size:13px;font-weight:700;display:flex}.route-detail h2,.navigation-dialog h2{font-family:var(--font-display);letter-spacing:-1.2px;font-size:clamp(29px,2.4vw,40px);font-weight:650;line-height:1.2}.route-detail h2{margin:10px 0 13px}.route-note{color:var(--muted);font-size:14px;line-height:1.8}.metric-grid{border:1px solid var(--line);background:var(--line);border-radius:15px;grid-template-columns:repeat(3,1fr);gap:1px;display:grid;overflow:hidden}.metric-grid>div{background:#ffffffbd;flex-direction:column;gap:5px;min-width:0;padding:13px 10px;display:flex}.metric-grid svg{color:var(--green)}.metric-grid span{color:var(--muted);font-size:10px}.metric-grid strong{white-space:nowrap;font-size:12px}.terrain-line{border-bottom:1px solid var(--line);justify-content:space-between;align-items:center;padding-bottom:18px;font-size:13px;display:flex}.terrain-line span{color:var(--muted)}.entry-card{border:1px solid var(--line);background:#fffdf6;border-radius:16px;grid-template-columns:auto 1fr auto;align-items:center;gap:12px;min-height:78px;padding:12px;display:grid}.entry-icon{background:var(--green-soft);width:38px;height:38px;color:var(--green);border-radius:50%;justify-content:center;align-items:center;display:inline-flex}.entry-card small,.entry-card strong,.entry-card div>span{display:block}.entry-card small{color:var(--muted);font-size:10px}.entry-card strong{margin:4px 0;font-size:13px}.entry-card div>span{color:#8b7562;font-size:9px}.detail-actions{grid-template-columns:1fr 1.15fr;gap:9px;margin-top:auto;display:grid}.detail-actions button,.handoff-button{border-radius:13px;justify-content:center;align-items:center;gap:8px;min-height:51px;font-size:13px;font-weight:700;display:inline-flex}.secondary-action{border:1px solid var(--green);background:0 0}.primary-action,.handoff-button{border:1px solid var(--green);background:var(--green);color:#fff;box-shadow:0 8px 22px #19503c2e}.source-note{color:#8b918b;font-size:10px;line-height:1.6}.source-note a{text-underline-offset:2px;text-decoration:underline}.navigation-dialog{background:0 0;border:0;border-radius:24px;width:min(500px,100% - 28px);padding:0;overflow:hidden;box-shadow:0 28px 90px #0c261d4d}.navigation-dialog::backdrop{-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);background:#09211985}.dialog-card{background:radial-gradient(circle at 100% 0,#cfe8becc,#0000 38%),#fbf8ed;padding:34px;position:relative}.dialog-close{border:1px solid var(--line);background:#ffffffb8;border-radius:50%;justify-content:center;align-items:center;width:38px;height:38px;display:inline-flex;position:absolute;top:18px;right:18px}.navigation-dialog h2{max-width:370px;margin:13px 0 12px}.dialog-card>p{max-width:420px;color:var(--muted);font-size:14px;line-height:1.7}.entry-options{gap:8px;margin:24px 0;display:grid}.entry-option{border:1px solid var(--line);text-align:left;background:#ffffffb8;border-radius:14px;grid-template-columns:1fr auto;align-items:center;min-height:67px;padding:10px 14px;display:grid}.entry-option[data-active=true]{border-color:var(--green);background:var(--green-soft)}.entry-option span,.entry-option small{grid-column:1}.entry-option span{font-size:14px;font-weight:700}.entry-option small{color:var(--muted);margin-top:4px;font-size:10px}.entry-option svg{color:var(--green);grid-area:1/2/span 2}.handoff-button{width:100%}.dialog-footnote{color:var(--muted);text-align:center;margin-top:11px;font-size:10px;display:block}.navigation-ready{text-align:center;padding-top:12px}.navigation-ready-icon{background:var(--green);color:#fff;border-radius:50%;place-items:center;width:62px;height:62px;margin:0 auto 20px;display:grid;box-shadow:0 10px 28px #19503c38}.navigation-ready p{margin:0 auto 24px}@keyframes draw-route{0%{opacity:0;stroke-dasharray:4 9}to{opacity:1;stroke-dasharray:1 0}}@media (max-width:1120px){.workspace{grid-template-columns:250px minmax(420px,1fr) 290px}.route-browser,.route-detail{padding-left:19px;padding-right:19px}.header-actions span{display:none}}@media (max-width:860px){.atlas-app{overflow:visible}.app-header{grid-template-columns:1fr auto;height:66px;padding:0 16px;position:sticky;top:0}.brand{font-size:17px}.brand-mark{width:37px;height:37px}.city-switch{grid-area:1/2}.header-actions{display:none}.workspace{flex-direction:column;height:auto;min-height:0;display:flex}.route-browser{border-right:0;padding:24px 16px 13px;display:block}.browser-heading h1{margin:10px 0 8px;font-size:34px}.browser-heading p{font-size:13px}.search-box{margin:18px 0 11px}.filter-row{padding-bottom:0}.route-list{display:none}.map-stage{border-radius:22px 22px 0 0;order:2;margin:0 10px}.map-art{height:62svh;min-height:520px}.route-map-view{height:72svh;min-height:610px}.route-map-title{max-width:calc(100% - 38px);top:82px}.route-map-title strong{font-size:19px}.route-map-back{top:18px;left:16px}.route-map-summary{z-index:8;-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);background:#fffdf6f0;border:1px solid #1d4c3a1f;border-radius:22px;grid-template-columns:1fr auto;align-items:end;gap:6px 16px;padding:19px;display:grid;position:absolute;bottom:10px;left:10px;right:10px;box-shadow:0 -10px 34px #16403029}.route-map-summary .prototype-chip,.route-map-summary h2,.route-map-summary p{grid-column:1}.route-map-summary h2{font-family:var(--font-display);margin:4px 0 0;font-size:25px}.route-map-summary p{color:var(--muted);font-size:12px}.route-map-summary button{background:var(--green);color:#fff;border:0;border-radius:999px;grid-area:1/2/span 3;align-items:center;gap:7px;min-height:49px;padding:0 17px;font-size:13px;font-weight:750;display:inline-flex}.workspace[data-view=route] .route-detail{display:none}.map-marker{width:33px;height:33px}.map-marker strong{max-width:130px;font-size:10px;left:auto;right:39px}.map-caption{font-size:9px;bottom:12px}.route-detail{border:0;border-radius:24px;order:3;margin:-18px 10px 18px;padding:25px 20px 22px;overflow:visible;box-shadow:0 -9px 30px #15413124}.route-detail h2{font-size:32px}.detail-actions{border:1px solid var(--line);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);background:#faf8efeb;border-radius:17px;padding:8px;position:sticky;bottom:9px}}@media (max-width:480px){.app-header{padding:0 12px}.brand small{display:none}.city-switch{padding:0 12px}.browser-heading h1{font-size:31px}.map-art{height:58svh;min-height:480px}.route-map-view{height:calc(100svh - 88px);min-height:600px}.route-map-summary{grid-template-columns:minmax(0,1fr) auto;padding:17px}.route-map-summary h2{text-overflow:ellipsis;white-space:nowrap;font-size:21px;overflow:hidden}.route-map-summary button{padding:0 14px}.metric-grid strong{font-size:11px}.detail-actions{grid-template-columns:1fr}.secondary-action{display:none!important}.dialog-card{padding:29px 20px 22px}}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}
