:root{font-family:Arial,'Microsoft YaHei',sans-serif;color:#173254;font-size:13px;--green:#48ad87;--gold:#e2b84e;--gray:#bac1cc;--line:#e1e7ef;--navy:#202c69}*{box-sizing:border-box}body{margin:0;background:#f5f8fb}button,input,select{font:inherit;color:inherit}button,select,input{border:1px solid #ced9e6;border-radius:6px;background:white;padding:8px 10px}button{cursor:pointer}button:hover{background:#f0f5fa}button:disabled{opacity:.45;cursor:default}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible{outline:3px solid #83b9f2;outline-offset:2px}input,select{max-width:100%}input[type=checkbox]{accent-color:#203e73}button.primary{background:#1767d2;border-color:#1767d2;color:#fff}.brand{display:flex;align-items:center;gap:8px;color:#12365e;text-decoration:none;font-size:23px}.brand img{width:34px;height:34px;object-fit:contain}header{height:64px;background:white;border-bottom:1px solid var(--line);display:flex;align-items:center;padding:0 22px;gap:24px}header h1{font-size:17px;margin:0}.countries{display:flex;gap:3px;border-left:1px solid var(--line);padding-left:18px}.countries a{padding:7px 14px;text-decoration:none;color:#66768c;border-radius:5px}.countries .active{background:#eaf1fb;color:#143d72;font-weight:700}.header-actions{margin-left:auto;display:flex;gap:8px}main{height:calc(100dvh - 64px);display:grid;grid-template-columns:300px 1fr}aside{display:flex;flex-direction:column;padding:22px 18px 12px;background:#fff;border-right:1px solid var(--line);overflow:auto;min-height:0}.eyebrow{font-size:10px;letter-spacing:2px;color:#7a8ca5;margin:0 0 8px}h2{font-size:19px;margin:0 0 18px}aside>label{font-size:12px;margin:6px 0;color:#526880}aside>input,aside>select{width:100%}.hint{font-size:11px;color:#7b8ba0;line-height:1.65;margin:8px 0 12px}.counts{display:flex;gap:5px;margin:14px 0}.counts>span{flex:1;text-align:center;background:#f4f7fa;padding:9px 0;border-radius:5px;font-size:11px}.counts strong{display:block;font-size:18px;margin-bottom:4px}.list-heading{display:flex;justify-content:space-between;margin:20px 0 8px;font-size:12px}.list-heading span{color:#8090a6}#regions{min-height:70px;flex:1;overflow:auto}.region-row{width:100%;text-align:left;border:0;border-bottom:1px solid #eef2f6;border-radius:0;padding:11px 2px;display:flex;justify-content:space-between;align-items:center;gap:6px}.region-row b{font-size:14px}.region-row small{display:block;font-size:11px;color:#8290a3;margin-top:3px}.badge{font-size:11px;border-radius:20px;padding:4px 7px;white-space:nowrap}.badge.yes{color:#217253;background:#e6f6ee}.badge.ask{color:#886a19;background:#fff4d2}.badge.no{color:#58677a;background:#edf0f5}.pager{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:10px 0;font-size:11px}.pager button{padding:5px 8px}.pager span{color:#7b8ca3}footer{border-top:1px solid var(--line);padding-top:8px;display:flex;align-items:center;gap:8px;font-size:10px;color:#8090a6}footer button{border:0;padding:3px;font-size:11px}footer span{margin-left:auto}.workspace{position:relative;min-width:0;overflow:hidden}#map{height:100%;background-color:#eff4f8;background-image:linear-gradient(#d9e3ee55 1px,transparent 1px),linear-gradient(90deg,#d9e3ee55 1px,transparent 1px);background-size:48px 48px}.map-top{position:absolute;z-index:500;top:16px;left:20px;right:20px;display:flex;justify-content:space-between;pointer-events:none}.map-top button{pointer-events:auto;box-shadow:0 2px 8px #18325112}.city-tabs{display:flex;gap:6px}.city-tabs button{border-radius:20px;padding:9px 17px}.city-tabs .active{color:white;background:var(--navy);border-color:var(--navy)}.map-note{position:absolute;z-index:450;left:24px;top:75px;pointer-events:none}.map-note strong{display:block;font-size:24px}.map-note span{display:block;color:#7c8da4;font-size:11px;margin-top:5px}.notice{position:absolute;z-index:450;left:24px;bottom:84px;max-width:560px;background:#fffffff2;padding:10px 13px;border:1px solid #dde6ee;border-radius:7px;color:#5d718c;font-size:11px;line-height:1.6;pointer-events:none}.legend{position:absolute;bottom:24px;left:24px;z-index:450;display:flex;gap:20px;background:#fff;border:1px solid var(--line);border-radius:8px;padding:12px 16px;box-shadow:0 3px 12px #1830510c}.legend>span{display:flex;align-items:center;gap:7px;font-size:12px}.legend i{width:13px;height:13px;border-radius:3px}.legend .yes{background:var(--green)}.legend .ask{background:var(--gold)}.legend .no{background:var(--gray)}.leaflet-tooltip.area-label{border:0;box-shadow:none;background:transparent;text-align:center;color:#19325a;font-size:13px;font-weight:700;text-shadow:0 1px 2px #fff,1px 0 2px #fff,-1px 0 2px #fff}.area-label small{display:block;font-size:10px;font-weight:400}.area-label:before{display:none}.leaflet-popup-content{font-size:13px;line-height:1.6}.leaflet-popup-content h3{margin:8px 0}.leaflet-popup-content button{display:block;margin-top:8px}.leaflet-control-zoom{margin-top:80px!important}dialog{border:1px solid #d9e3ee;border-radius:12px;padding:24px;color:inherit;box-shadow:0 20px 80px #102d5030;width:min(400px,94vw)}dialog::backdrop{background:#19385460;backdrop-filter:blur(2px)}.dialog-head{display:flex;justify-content:space-between;align-items:flex-start;gap:20px}.dialog-head h2{margin:3px 0 12px}.dialog-head button{border:0;background:#f2f6fa;font-size:20px;padding:3px 10px}.dialog-foot{display:flex;gap:8px;align-items:center;border-top:1px solid var(--line);padding-top:15px}.dialog-foot>span{flex:1;font-size:12px;color:#b34242}#loginForm label{display:block;margin:12px 0 6px}#loginForm input,#submitLogin{width:100%}#loginForm p{font-size:12px;color:#72829a}#loginForm #loginError{color:#b34242}#bulkDialog{width:min(780px,96vw);max-height:92dvh;padding:22px}#bulkTitle{color:#6c7f96;margin:0 0 12px}#bulkQuery{width:100%}.bulk-tools{display:flex;align-items:center;gap:8px;flex-wrap:wrap;background:#f3f7fc;padding:10px;margin-top:12px;font-size:12px}.bulk-tools label{display:flex;align-items:center;gap:6px}#selectionCount{font-size:11px;color:#71839a}.table-wrap{max-height:43dvh;overflow:auto}table{width:100%;border-collapse:collapse;font-size:12px}th{text-align:left;background:#eff4fa;position:sticky;top:0;padding:9px 8px;z-index:1}td{padding:10px 8px;border-bottom:1px solid #e8eef4}td small{display:block;margin-top:3px;color:#7c8ea6}tr.draft{background:#fff9e9}.choices{display:flex;gap:4px}.choices label{position:relative;cursor:pointer}.choices input{position:absolute;opacity:0;width:1px}.choices span{display:block;padding:6px 8px;border:1px solid #d7e1ec;border-radius:5px;font-size:11px;background:white}.choices input:checked+span{background:#e3edf9;border-color:#597ba8;color:#193f72}.choices input:focus-visible+span{outline:2px solid #1767d2}.choices .yes input:checked+span{background:#dff3e8;color:#257756;border-color:#52a984}.choices .ask input:checked+span{background:#fff2cb;color:#8b6e20;border-color:#dcb541}#sourceDialog{width:min(580px,94vw);line-height:1.8;font-size:12px}#error{position:absolute;top:140px;left:24px;right:24px;background:#fff1ed;color:#a64a31;padding:14px;z-index:550;border-radius:7px}#toast{position:fixed;bottom:25px;left:50%;transform:translateX(-50%);z-index:2000;background:#193254;color:white;padding:12px 22px;border-radius:8px}a{color:#205da7}[hidden]{display:none!important}@media(max-width:850px){header{gap:12px;padding:0 12px}header h1{display:none}.countries{padding-left:8px}.countries a{padding:6px 8px}main{grid-template-columns:260px 1fr}.city-tabs button{padding:7px 10px}.map-top{left:12px;right:12px;flex-wrap:wrap;gap:8px}.map-note{top:110px;left:15px}.notice{left:14px;right:14px;bottom:80px}.legend{left:14px;gap:12px}.map-note strong{font-size:20px}}@media(max-width:620px){header{height:auto;min-height:60px;flex-wrap:wrap;padding:10px}.brand{font-size:19px}.brand img{width:28px;height:28px}.header-actions{gap:5px}.header-actions button{font-size:11px}.header-actions select{width:77px}main{height:auto;display:flex;flex-direction:column-reverse}.workspace{height:55dvh;min-height:360px}aside{height:500px;padding:18px}.notice{max-height:66px;overflow:hidden;font-size:10px}.legend{padding:10px}.map-note{top:65px}.map-note strong{font-size:17px}.city-tabs button{padding:6px 9px}.table-wrap{max-height:40dvh}.choices{flex-direction:column}td{padding:8px 4px}}

.discard-box{padding:12px 14px;border:1px solid #e8c575;background:#fff8e9;border-radius:7px;margin:10px 0}.discard-box p{margin:0 0 9px}.discard-box button{margin-right:8px}

#bulkCity,#bulkDistrict{width:100%;margin:6px 0 10px}#bulkDialog>label{display:block;font-size:12px;color:#667b95}#bulkCity{margin-bottom:8px}

/* Keep the street list and Save visible while editing long cities. */
#bulkDialog[open]{display:flex;flex-direction:column;height:calc(100dvh - 28px);max-height:none;overflow:hidden}
#bulkDialog>.dialog-head,#bulkDialog>.dialog-foot,#bulkDialog>.bulk-settings,#bulkDialog>.bulk-tools,#bulkDialog>.pager{flex-shrink:0}
#bulkDialog .bulk-settings{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin:5px 0 9px}
#bulkDialog .bulk-settings>.city-availability,#bulkDialog .bulk-settings>.sheet-tools{margin:0;padding:9px 11px;align-content:start}
#bulkDialog .bulk-settings .hint{line-height:1.35;margin-top:5px}
#bulkDialog .bulk-settings .city-availability button{margin-top:5px}
#bulkDialog .table-wrap{flex:1;min-height:120px;max-height:none;overflow:auto}
#bulkDialog .dialog-foot{background:#fff;padding:12px 0 0;margin-top:4px}
@media(max-width:680px),(max-height:720px){#bulkDialog[open]{overflow-y:auto}#bulkDialog .bulk-settings{grid-template-columns:1fr}#bulkDialog .table-wrap{flex:0 0 34dvh;max-height:34dvh}#bulkDialog .dialog-foot{position:sticky;bottom:0;z-index:2}}
.leaflet-tooltip.station-label{cursor:pointer;pointer-events:auto}

.area-label{background:transparent!important;border:0!important;box-shadow:none!important;color:#203753;text-shadow:0 1px 2px #fff,1px 0 2px #fff,-1px 0 2px #fff}.area-label span{font-weight:700;font-size:12px}.area-label small{font-size:10px}.leaflet-interactive{transition:fill .15s}

.address-form{margin:12px 0 0;border-bottom:1px solid var(--line)}.address-form label{display:block;font-size:12px;margin:0 0 6px}.address-form>div{display:flex;gap:5px}.address-form input{min-width:0;flex:1;width:0;font-size:12px}.address-form button{padding:8px;white-space:nowrap}.address-result{background:#f6f9fc;border:1px solid #dce6ef;border-radius:7px;padding:12px;margin:10px 0;font-size:12px;line-height:1.6}.address-result h3{font-size:13px;overflow-wrap:anywhere;margin:8px 0}.address-result p{margin:7px 0}.address-result small{color:#6f8095}.address-result button{margin-top:10px;font-size:11px;padding:4px 7px}.address-pin{background:transparent;border:0}.address-pin span{display:block;width:27px;height:27px;background:#d73343;border:3px solid white;border-radius:50% 50% 50% 0;transform:rotate(-45deg);box-shadow:0 3px 8px #4a142666}.address-pin span:after{content:'';position:absolute;width:7px;height:7px;top:7px;left:7px;border-radius:50%;background:white}

.address-result .place-option{display:block;width:100%;text-align:left;padding:10px;margin:6px 0;background:white;white-space:normal}.place-option small{display:block;margin-top:4px;line-height:1.5}

#addressForm textarea{width:100%;box-sizing:border-box;min-height:92px;resize:vertical;padding:12px;font-size:14px;font-family:inherit;line-height:1.6;border:1px solid #bacbe0;border-radius:9px;color:#183858;background:#fff}#addressForm #addressSubmit{width:100%;margin:8px 0 12px;height:42px;font-size:14px;border-radius:8px}#addressForm textarea:focus{outline:2px solid #73a9f5;border-color:#438be8}

.city-pin-label{background:#fff;border:1px solid #bcd5ed;border-radius:6px;padding:5px 9px;color:#16466c;text-align:center;box-shadow:0 2px 8px #203b501a;cursor:pointer}.city-pin-label small{display:block;font-size:10px;color:#637e93}.city-tabs{flex-wrap:wrap}.china-workspace #city{margin-bottom:10px}
.city-overview-pin,.station-pin{filter:hue-rotate(160deg) saturate(1.4)}
.city-tabs{display:flex;flex-wrap:nowrap;max-width:min(76vw,950px);overflow-x:auto;overflow-y:hidden;scrollbar-width:thin;scrollbar-color:#a8bfd3 transparent}.city-tabs button{flex:none;white-space:nowrap}.map-top{max-width:calc(100% - 80px)}
@media(max-width:620px){.city-tabs{max-width:calc(100vw - 105px)}.map-top{max-width:calc(100% - 24px)}}

header .brand>img{border-radius:5px;object-fit:contain}
