:root{--ink:#1c3431;--muted:#78857e;--paper:#f7f8f4;--green:#217563;--orange:#e3864d;--line:#e4e8df}*{box-sizing:border-box}html,body{margin:0;height:100%;font-family:-apple-system,BlinkMacSystemFont,"PingFang SC","Microsoft Yahei",sans-serif;color:var(--ink);background:var(--paper)}button,input,select{font:inherit}button,a,input,select{-webkit-tap-highlight-color:transparent}button{cursor:pointer}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible{outline:3px solid #91b8a6;outline-offset:2px}button{color:inherit}.topbar{height:86px;padding:0 30px;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid var(--line);gap:25px;background:#fff}.brand{display:flex;align-items:center;gap:12px;text-decoration:none;color:inherit;flex-shrink:0}.brand-icon{display:grid;place-items:center;background:var(--green);color:white;width:43px;height:43px;border-radius:13px;font-size:22px;font-weight:700}.brand strong{display:block;font-size:17px;letter-spacing:.2px}.brand small{display:block;margin-top:5px;color:var(--muted);font-size:11px}.trip{display:flex;gap:15px;align-items:center;font-size:13px}.trip-dot{width:6px;height:6px;border-radius:50%;background:#86a88d}.divider{height:17px;width:1px;background:var(--line)}.travel-tag{background:#f0f5ed;padding:7px 10px;border-radius:6px;font-size:11px;color:#5b775f}.text-button{border:0;background:none;font-size:12px;color:var(--muted);padding:10px}main{height:calc(100% - 86px);display:flex}.sidebar{width:365px;flex-shrink:0;background:var(--paper);display:flex;flex-direction:column;border-right:1px solid var(--line);z-index:600}.sidebar-head{padding:28px 25px 0}.eyebrow{font-size:10px;letter-spacing:1.6px;color:#7f9787;font-weight:600}h1{font-size:25px;line-height:1.5;letter-spacing:-.6px;margin:13px 0 8px;font-weight:650}.intro{font-size:12px;line-height:1.8;color:var(--muted);margin:0}.stats{display:flex;justify-content:space-between;margin:24px 0 26px}.stats>div{flex:1;border-right:1px solid var(--line);padding-left:22px}.stats>div:first-child{padding-left:0}.stats>div:last-child{border:0}.stats strong{display:block;font-size:28px;font-weight:550;line-height:1.2;letter-spacing:-1px}.stats span{display:block;font-size:10px;color:var(--muted);margin-top:7px}.tabs{display:flex;gap:5px;padding:4px;background:#e9ede5;border-radius:9px;margin-bottom:16px}.tabs button{border:0;background:transparent;flex:1;font-size:12px;padding:10px;border-radius:6px;color:#7a877b}.tabs button.active{background:#fff;box-shadow:0 1px 4px #263d2910;color:var(--ink);font-weight:600}.search{display:flex;align-items:center;gap:9px;background:#fff;border:1px solid var(--line);border-radius:8px;padding:9px 10px}.search>span{font-size:24px;line-height:20px;color:#82958b}.search input{border:0;outline:0;min-width:0;width:100%;font-size:12px;background:transparent;color:var(--ink)}.search input::placeholder{color:#9ca59d}.search button{border:0;background:transparent;font-size:20px;line-height:20px;color:#a1aca3}.filter-row{display:flex;align-items:center;justify-content:space-between;margin:14px 0 19px;font-size:10px;color:#7d897e}.filter-row label{display:flex;align-items:center;gap:4px}.filter-row select{border:0;background:none;color:#3a5f50;font-size:11px;max-width:76px}.filter-row input,.layer-toggles input{accent-color:var(--green)}.list-heading{display:flex;justify-content:space-between;font-size:11px;color:#84917f;padding-bottom:13px;border-bottom:1px solid var(--line)}.results{overflow-y:auto;flex:1;padding:0 14px 14px;scrollbar-width:thin;min-height:0}.result{width:100%;text-align:left;padding:15px 11px;background:none;border:0;border-bottom:1px solid var(--line);display:flex;gap:12px;align-items:flex-start;border-radius:7px}.result:hover,.result.selected{background:#eaf0e6}.result .number{background:#f1e6da;color:#b27748;border:1px solid #e9d6c3;border-radius:6px;width:26px;height:26px;display:grid;place-items:center;flex-shrink:0;font-size:11px;font-weight:600;margin-top:2px}.result.hotel .number{background:#e0eee6;color:#2a7861;border-color:#c4ded0}.result .info{min-width:0;flex:1}.result .name{font-size:12px;font-weight:600;line-height:1.7}.result .sub{font-size:10px;color:#889284;margin-top:4px;line-height:1.7}.result .badge{display:inline-block;font-size:9px;background:#e5ece1;color:#617b5d;border-radius:4px;padding:2px 5px;margin-top:6px;margin-right:4px}.result .badge.pending{background:#f7e8dc;color:#ae754b}.result .arrow{color:#b1bcac;font-size:15px;margin-top:6px}.side-footer{padding:12px 25px;border-top:1px solid var(--line);font-size:9px;line-height:1.8;color:#8a9684;background:#f1f4ec}.map-area{position:relative;flex:1;min-width:0;overflow:hidden;background:#e8ede5}#map{position:absolute;inset:0}.map-toolbar{position:absolute;top:20px;left:20px;right:20px;z-index:500;display:flex;justify-content:space-between;align-items:flex-start;gap:10px;pointer-events:none}.map-toolbar>*{pointer-events:auto}.tool-button{background:#fff;border:1px solid #e3e7df;box-shadow:0 2px 12px #23382a10;border-radius:7px;padding:10px 14px;font-size:11px}.layer-toggles{display:flex;gap:12px;align-items:center;background:#fff;padding:10px 14px;border-radius:7px;box-shadow:0 2px 12px #23382a10;font-size:10px}.layer-toggles label{display:flex;align-items:center;gap:3px;white-space:nowrap}.layer-toggles input{margin:0}.metro-legend{position:absolute;left:20px;bottom:45px;max-width:310px;background:#fffffff5;backdrop-filter:blur(10px);padding:14px;border-radius:9px;z-index:500;box-shadow:0 3px 18px #1a3a2312}.legend-top{display:flex;justify-content:space-between;gap:30px;margin-bottom:12px;font-size:11px}.legend-top button{border:0;background:none;color:#91a08d;font-size:10px;padding:0}.line-chips{display:flex;gap:6px;flex-wrap:wrap}.line-chip{display:flex;align-items:center;gap:5px;border:1px solid #e5e9e0;background:white;border-radius:4px;padding:5px 7px;font-size:10px}.line-chip.off{opacity:.35}.line-chip i{display:block;height:4px;width:12px;border-radius:2px;background:var(--color)}.metro-legend small{display:block;font-size:9px;color:#99a092;margin-top:10px}.map-key{position:absolute;top:72px;left:24px;z-index:450;display:flex;gap:13px;align-items:center;font-size:10px;color:#5b6b5b;text-shadow:0 1px 2px white}.map-key>span{display:flex;align-items:center;gap:5px}.key-dot{display:inline-block;width:9px;height:9px;border-radius:50%}.school-dot{background:var(--orange)}.hotel-dot{background:var(--green)}.station-dot{background:white;border:2px solid #718985}.school-pin{width:25px;height:25px;background:#e7864c;border:2px solid white;border-radius:8px 8px 8px 1px;box-shadow:0 2px 7px #4c381833;display:grid;place-items:center;color:white;font-size:10px;font-weight:600;transition:transform .15s}.school-pin.active{background:#713f22;transform:scale(1.25)}.hotel-pin{width:22px;height:22px;background:#237864;border:2px solid white;border-radius:50%;box-shadow:0 2px 7px #143d3330;display:grid;place-items:center;color:white;font-size:10px}.hotel-pin.active{background:#102f28;transform:scale(1.3)}.station-label{font-size:10px;color:#294b42;white-space:nowrap;background:#fffffff0;border:1px solid #c5d0c5;border-radius:3px;padding:1px 4px;box-shadow:none}.leaflet-tooltip-top:before,.leaflet-tooltip-bottom:before{display:none}.leaflet-container{font-family:inherit}.leaflet-control-zoom{border:1px solid #dce3d6!important;box-shadow:0 2px 12px #23382a10!important;border-radius:6px!important;overflow:hidden}.leaflet-control-zoom a{font-weight:400!important;font-size:20px!important;color:#4d675a!important}.leaflet-bottom.leaflet-right{bottom:12px;right:10px}.leaflet-control-attribution{font-size:8px!important;background:#ffffffbf!important}.leaflet-popup-content-wrapper{border-radius:9px}.leaflet-popup-content{margin:14px 16px;min-width:190px}.popup-title{font-size:13px;font-weight:600;margin-bottom:7px}.popup-sub{font-size:10px;line-height:1.8;color:#87917d}.popup-link{display:inline-block;font-size:10px;color:#267660;margin-top:9px}.selection-panel{position:absolute;right:20px;bottom:45px;width:320px;max-height:calc(100% - 125px);overflow:auto;background:#fff;z-index:550;box-shadow:0 8px 35px #183e2824;border-radius:12px;padding:22px}.selection-panel h2{font-size:17px;line-height:1.7;margin:8px 25px 5px 0}.panel-close{position:absolute;right:14px;top:12px;border:0;background:none;font-size:24px;color:#92a08d}.panel-address{font-size:11px;line-height:1.8;color:#8a9585;margin-bottom:15px}.panel-metrics{display:flex;gap:20px;margin:18px 0;background:#f1f5ee;border-radius:7px;padding:13px}.panel-metrics strong{display:block;font-size:21px;font-weight:550}.panel-metrics small{font-size:9px;display:block;color:#84907d;margin-top:4px}.panel-subtitle{font-size:11px;font-weight:600;margin:20px 0 9px}.nearby-row{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:9px 0;border-bottom:1px solid #edf0e8;font-size:11px}.nearby-row button{border:0;padding:0;background:none;text-align:left;color:#426653;font-size:11px;line-height:1.7}.nearby-row small{font-size:10px;color:#97a08d;flex-shrink:0}.panel-actions{display:flex;gap:8px;margin-top:16px}.primary,.secondary{display:inline-block;border:0;border-radius:6px;font-size:11px;padding:10px 12px;text-decoration:none;text-align:center}.primary{background:#217563;color:white}.secondary{border:1px solid #dce5d5;background:#f6f8f2;color:#52705a}.panel-note{font-size:9px;line-height:1.8;color:#99a18f;margin:12px 0 0}.price-form{display:grid;grid-template-columns:1fr 1fr;gap:7px;margin-top:10px}.price-form input,.price-form textarea{width:100%;min-width:0;font-size:11px;border:1px solid #dce5d5;border-radius:5px;padding:8px;color:var(--ink);background:#fbfcf9}.price-form textarea{grid-column:1 / -1;min-height:54px;resize:vertical}.price-form button{grid-column:1 / -1}.price-info{font-size:11px;color:#628567;margin-top:10px}.empty{padding:30px 12px;font-size:12px;color:#899782;line-height:1.8}.map-message{position:absolute;top:112px;left:20px;right:20px;z-index:550;background:#fff4df;border:1px solid #e8d8b5;color:#9b733d;font-size:11px;padding:10px 13px;border-radius:7px}.mobile-list{display:none}dialog{border:1px solid #dce5d5;border-radius:15px;max-width:570px;max-height:85vh;overflow:auto;padding:34px;color:var(--ink);box-shadow:0 15px 60px #1b38263d}dialog::backdrop{background:#142d2470;backdrop-filter:blur(4px)}dialog h2{font-size:20px;line-height:1.5}dialog p{font-size:12px;line-height:1.95;color:#7b8876}.dialog-close{position:absolute;top:12px;right:15px;font-size:25px;color:#83907d;background:none;border:0}.source-links{display:flex;flex-wrap:wrap;gap:10px;margin:18px 0}.source-links a{font-size:11px;color:#397660}.muted{color:#9aa28e!important;font-size:10px!important}[hidden]{display:none!important}
@media(min-width:1450px){.sidebar{width:390px}.sidebar-head{padding:32px 30px 0}.results{padding:0 19px 14px}h1{font-size:28px}}@media(max-width:1050px){.trip .travel-tag{display:none}.sidebar{width:320px}.sidebar-head{padding:20px 20px 0}h1{font-size:23px}.selection-panel{width:285px}.metro-legend{max-width:240px}.layer-toggles{gap:8px;padding:10px}.topbar{padding:0 20px}.brand strong{font-size:15px}.trip{font-size:11px;gap:9px}.stats{margin:19px 0}}@media(max-width:760px){.topbar{height:68px;padding:0 15px;gap:8px}.brand-icon{width:36px;height:36px;border-radius:10px;font-size:20px}.brand{gap:9px}.brand strong{font-size:14px}.brand small{font-size:9px}.trip{display:none}.text-button{font-size:10px}main{height:calc(100dvh - 68px)}.sidebar{position:absolute;left:0;bottom:0;top:68px;width:min(88vw,365px);transform:translateX(-101%);transition:transform .2s;box-shadow:10px 0 50px #19382822}.sidebar.open{transform:translateX(0)}.sidebar-head{padding:19px 22px 0}h1{font-size:23px;line-height:1.45;margin:9px 0}.intro{font-size:11px}.stats{margin:18px 0}.stats strong{font-size:25px}.map-toolbar{top:13px;left:12px;right:12px;gap:6px}.tool-button{padding:9px;font-size:10px}.layer-toggles{font-size:9px;padding:9px;gap:7px}.map-key{left:16px;top:58px;font-size:9px}.metro-legend{left:12px;bottom:72px;max-width:210px;padding:11px}.legend-top{font-size:10px;margin-bottom:8px}.line-chip{font-size:9px;padding:4px 6px}.metro-legend small{font-size:8px}.mobile-list{display:block;position:absolute;z-index:650;bottom:19px;left:50%;transform:translateX(-50%);background:#1d6251;color:#fff;border:1px solid #ffffff80;border-radius:30px;padding:12px 23px;box-shadow:0 3px 18px #173e3433;font-size:12px;white-space:nowrap}.selection-panel{right:12px;bottom:73px;left:12px;width:auto;max-height:60vh;padding:20px}.selection-panel h2{font-size:16px}.selection-panel .panel-metrics{margin:12px 0}.map-area:has(.selection-panel:not([hidden])) .metro-legend{display:none}.leaflet-control-attribution{font-size:7px!important}dialog{width:calc(100% - 30px);padding:26px}.side-footer{padding:10px 22px}.map-message{left:12px;right:12px;top:88px}}

.review-button{border:0;border-top:1px solid #e1e7d8;background:#edf2e7;color:#6d8064;font-size:10px;text-align:left;padding:11px 25px}.review-note{background:#fbf1df;border:1px solid #eadbc0;border-radius:6px;padding:10px;color:#9c7946;font-size:10px;line-height:1.8;margin:10px 0}

.panel-actions{flex-wrap:wrap}#hotels-dialog{width:min(1080px,calc(100vw - 24px));height:calc(100dvh - 40px);max-width:1080px;max-height:900px;padding:16px;overflow:hidden}#hotels-dialog[open]{display:flex;flex-direction:column;gap:12px}.hotel-dialog-head{display:flex;justify-content:space-between;align-items:flex-start;gap:10px}.hotel-dialog-head h2{margin:0;font-size:15px}.hotel-dialog-head p{margin:5px 0 0;font-size:10px}.hotel-dialog-head button{border:0;background:none;color:#85917d;font-size:24px}#hotel-map-frame{width:100%;flex:1;min-height:0;border:1px solid #dce5d5;border-radius:8px;background:#f1f4ed}#open-hotel-map{color:#327a64;font-size:11px;text-align:right}
