:root{color-scheme:light;--bg:#f2f5f9;--ink:#13283c;--muted:#4e657a;--line:#dbe4ee;--paper:#fff;--accent:#176d68;--dark:#153742;--wash:#eaf4f4;font:15px/1.5 system-ui,"PingFang SC","Microsoft YaHei",sans-serif}
*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--ink)}main{width:min(100%,1440px);margin:auto;padding:18px clamp(14px,3.8vw,48px) 44px}h1,h2,h3,p{margin:0}h1{font-size:clamp(36px,6vw,57px);line-height:1.1;letter-spacing:-.04em;margin:8px 0 12px}h2{font-size:20px}h3{font-size:17px}a{color:var(--accent)}button,input,select,textarea{font:inherit}button,.fileButton{padding:8px 12px;border:1px solid var(--line);border-radius:9px;background:white;color:var(--ink);font-weight:650;cursor:pointer}button:disabled{opacity:.55;cursor:default}button:not(:disabled):hover,.fileButton:hover{background:#edf4f6}.primary,.primary:not(:disabled):hover{background:var(--accent);color:#fff;border-color:var(--accent)}.primary:not(:disabled):hover{filter:brightness(.91)}:focus-visible{outline:2px solid #258e8e;outline-offset:3px}[hidden]{display:none!important}.sr{position:absolute;width:1px;height:1px;clip-path:inset(50%);overflow:hidden}
.top,.hero,.heading,.actions,.dialogFoot{display:flex;justify-content:space-between;align-items:center;gap:10px;flex-wrap:wrap}.top{font-size:13px;margin-bottom:15px}.top a{text-decoration:none;font-weight:750}.top span,.muted,.foot,small{color:var(--muted)}.hero{background:radial-gradient(ellipse at 90% 30%,#245866 0%,transparent 61%),var(--dark);color:#fff;border-radius:22px;padding:clamp(23px,5vw,48px)}.hero p:not(.kicker){color:#dcecf0}.hero .kicker{color:#a2e2d4}.hero button{background:#cff2e6;color:#153742;border:0}.hero button:hover{color:#fff}.kicker{font-size:11px;font-weight:800;letter-spacing:.14em;color:var(--accent)}
.metrics{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:11px;margin:14px 0}.metrics>div,.panel{background:var(--paper);border:1px solid var(--line);border-radius:16px;padding:clamp(12px,2vw,20px)}.metrics span,.metrics small{display:block;font-size:12px}.metrics strong{display:block;font-size:clamp(20px,3.2vw,33px);line-height:1.2;font-variant-numeric:tabular-nums;margin:3px 0;overflow-wrap:anywhere}.filters{display:flex;align-items:end;gap:8px;flex-wrap:wrap;margin-bottom:12px}.filters label{flex:1;min-width:104px;font-size:12px}.filters p{flex-basis:100%;margin:0}.feedback:empty{display:none}.feedback{color:#22596e;font-size:13px;overflow-wrap:anywhere}.feedback.error,.danger{color:#a62f33}label{display:grid;gap:4px}input,select,textarea{min-width:0;width:100%;border:1px solid #c4d1df;border-radius:8px;background:#fff;color:var(--ink);padding:7px 9px}textarea{resize:vertical}.actions select{width:auto}.mapPanel .heading,.below .heading{margin-bottom:12px}.mapWrap{position:relative;border:1px solid var(--line);border-radius:12px;overflow:hidden;background:#e5eef3}.mapWrap #map{height:clamp(320px,51vw,560px);background:#e5eef3}.mapMessage{pointer-events:none;position:absolute;top:10px;right:10px;max-width:min(78%,370px);z-index:450;background:#fffef9;color:var(--ink);padding:8px 10px;border:1px solid var(--line);border-radius:9px;font-size:13px}.mapMessage:empty{display:none}.leaflet-tooltip.cityTag{font-weight:700;color:#173843}.legend{display:flex;gap:11px;flex-wrap:wrap;margin-top:9px;font-size:12px}.legend span{display:inline-flex;align-items:center;gap:6px}.legend i{width:22px;border-top:3px solid}.mapNote{font-size:12px;margin-top:6px}
.below{display:grid;grid-template-columns:minmax(0,2fr) minmax(230px,1fr);gap:12px;margin-top:12px}.below aside .muted,.foot{font-size:13px}.below hr{border:0;border-top:1px solid var(--line);margin:16px 0}.trip{position:relative;border-left:2px solid #b9dbd4;padding:0 0 14px 14px;margin-left:5px}.trip:before{position:absolute;left:-6px;top:5px;content:"";width:10px;height:10px;border-radius:50%;background:var(--accent)}.trip p,.detailTrip p{overflow-wrap:anywhere}.trip .muted{font-size:13px}.trip .actions{justify-content:flex-start;margin-top:6px}.trip button,.cityItem button{padding:4px 8px;font-size:12px}.pill{display:inline-block;background:var(--wash);color:#255956;font-size:11px;padding:2px 7px;border-radius:12px;margin-left:6px;vertical-align:middle}.empty{padding:16px 0;color:var(--muted)}.mode,.cityItem{display:grid;gap:4px;margin-top:10px;font-size:13px}.mode div,.cityItem{display:flex;justify-content:space-between;align-items:center;gap:8px}.cityItem span{overflow-wrap:anywhere}.mode progress{width:100%;height:8px;accent-color:var(--accent)}.foot{margin-top:14px}
.fileButton{display:inline-flex;position:relative}.fileButton:focus-within{outline:2px solid #258e8e}.fileButton input{position:absolute;opacity:0;width:1px;height:1px;padding:0}.fileButton:has(:disabled){opacity:.6;cursor:default}
dialog{border:1px solid var(--line);border-radius:17px;padding:0;width:min(calc(100% - 24px),780px);max-height:90dvh;color:var(--ink);box-shadow:0 18px 72px #18304c33}dialog::backdrop{background:#102b4380}dialog form{margin:0}.dialogHead,.dialogFoot{padding:13px 16px;background:white;position:sticky;z-index:2}.dialogHead{top:0;border-bottom:1px solid var(--line)}.dialogFoot{bottom:0;border-top:1px solid var(--line);justify-content:flex-end}.formBody{padding:15px}.formGrid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:9px;margin:8px 0}.wide{grid-column:1/-1}.formGrid label,.leg label{font-size:13px;align-content:start}.sectionTitle{margin-top:15px}.legsActions{justify-content:flex-start;margin-top:8px}.leg{border:1px solid var(--line);background:#f7fafd;border-radius:10px;margin-top:8px;padding:10px}.leg .formGrid{grid-template-columns:repeat(3,minmax(0,1fr));margin-bottom:0}.photos{display:flex;gap:8px;flex-wrap:wrap}.photos figure{margin:4px 0;display:grid;gap:4px;max-width:150px}.photos img{width:140px;height:102px;object-fit:cover;border-radius:8px;max-width:100%}.photos a{display:block}.detailTrip{border-top:1px solid var(--line);padding:10px 0}.detailTrip p{white-space:pre-wrap;margin-top:5px}.detailTrip .muted{font-size:13px}
@media(max-width:760px){.below{grid-template-columns:1fr}.metrics{grid-template-columns:repeat(2,minmax(0,1fr))}.mapPanel .actions{justify-content:flex-start}.mapPanel .actions select{max-width:100%}.leg .formGrid{grid-template-columns:repeat(2,minmax(0,1fr))}}
.leaflet-tooltip.referenceCity{background:transparent;border:0;box-shadow:none;color:#486775;font-weight:650;text-shadow:0 0 3px #fff;pointer-events:none}.leaflet-tooltip.referenceCity::before{display:none}
