:root {
  --forest:#163d37; --ink:#253b37; --dark:#112f2a; --muted:#7a8a82;
  --canvas:#f6f8f4; --paper:#fffefa; --cream:#f4efe6;
  --line:#e6eae4; --line-strong:#d9e1d8; --gold:#bd904c;
  --radius:16px; --shadow:0 12px 40px rgba(25,62,49,.08);
}
*{box-sizing:border-box}
html,body{margin:0;min-width:320px;height:100%;overflow:hidden;background:var(--canvas);color:var(--ink);font-family:"Be Vietnam Pro",system-ui,sans-serif;font-size:12px}
button,input,a{font:inherit}button{cursor:pointer}button:focus-visible,a:focus-visible,input:focus-visible{outline:3px solid #5aabb3;outline-offset:3px}
a{color:inherit;text-decoration:none}
.icon-bank{position:absolute;width:0;height:0;overflow:hidden}
.icon{width:17px;height:17px;fill:none;stroke:currentColor;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round;flex-shrink:0}
.topbar{height:76px;display:flex;justify-content:space-between;align-items:center;padding:0 28px;background:var(--paper);border-bottom:1px solid var(--line);position:relative;z-index:50;gap:20px}
.brand-wrap{display:flex;align-items:center;gap:12px;min-width:295px}.brand-symbol{width:40px;height:43px;display:flex;flex-direction:column;justify-content:center;align-items:center;background:var(--forest);border-radius:10px;color:#f9dc9b;line-height:17px;box-shadow:inset 0 -4px 0 rgba(0,0,0,.06)}
.brand-symbol .roof{font-weight:800;font-size:29px;line-height:11px;transform:scaleX(1.3)}.brand-symbol .pillar{font-size:24px;letter-spacing:-2px}.brand-copy{display:flex;flex-direction:column;gap:3px}.brand-name{color:var(--forest);font-weight:800;font-size:13px;letter-spacing:.5px}.brand-name em{font-style:normal;color:#b07839}.brand-tagline{color:#92a197;font-size:9px;letter-spacing:2.5px;font-weight:700}
.topbar-center{font-size:10px;letter-spacing:.07em;color:#65776d;font-weight:600;display:flex;align-items:center;gap:10px;white-space:nowrap}.status-dot{height:7px;width:7px;background:#40ac79;box-shadow:0 0 0 4px #e4f4e9;border-radius:50%}.top-divider{width:1px;height:14px;background:#d8e0d7;margin:0 9px}.topbar-right{display:flex;align-items:center;gap:16px;white-space:nowrap}.top-link{font-size:10px;font-weight:700;color:var(--forest);display:flex;align-items:center;gap:7px}.top-link:hover{color:#148477}.edition-tag{font-size:9px;font-weight:800;letter-spacing:1.2px;color:#a17939;background:#fff6e7;border:1px solid #f2e3c6;border-radius:30px;padding:9px 12px}.menu-toggle{display:none;background:var(--forest);color:#fff;border:0;border-radius:10px;padding:9px}
.app-shell{height:calc(100vh - 76px);display:grid;grid-template-columns:minmax(335px,355px) minmax(380px,1fr) minmax(320px,348px)}
.sidebar{background:var(--paper);border-right:1px solid var(--line);z-index:20;min-width:0}.sidebar-scroll{height:100%;overflow-y:auto;padding:26px 24px 24px;scrollbar-width:thin;scrollbar-color:#d7ddd2 transparent}.sidebar-scroll::-webkit-scrollbar,.details::-webkit-scrollbar{width:6px}.sidebar-scroll::-webkit-scrollbar-thumb,.details::-webkit-scrollbar-thumb{background:#d7ded7;border-radius:10px}
.eyebrow{display:flex;align-items:center;gap:10px;color:#b08a4c;font-weight:800;font-size:9px;letter-spacing:2.1px}.eyebrow-line{width:19px;height:1px;background:#b08a4c}
h1{font-family:"DM Serif Display",Georgia,serif;font-weight:400;font-size:29px;line-height:1.28;letter-spacing:-.6px;color:var(--forest);margin:11px 0 12px}h1 em{color:#b48b4a;font-style:italic}.hero-subtitle{font-size:10.5px;line-height:1.85;color:#708076;margin:0 0 22px;max-width:285px}
.metrics{display:flex;align-items:center;justify-content:space-between;background:#f7f7f1;border:1px solid #eeeee6;border-radius:15px;padding:17px 14px;margin-bottom:27px}.metric{flex:1;display:flex;flex-direction:column;text-align:center;gap:4px}.metric b{font-size:22px;font-weight:800;color:var(--forest);line-height:1.1;letter-spacing:-.5px}.metric span{font-size:9px;color:#85928a;white-space:nowrap}.metric-divider{height:29px;width:1px;background:#e4e7df}
.section-row{display:flex;align-items:center;justify-content:space-between;gap:8px}.kicker{font-size:9px;letter-spacing:1.7px;font-weight:800;color:#b39a73}.section-row h2{font-size:14px;color:#29463f;font-weight:800;margin:5px 0 13px;letter-spacing:-.3px}.mini-count{color:#8b978f;font-size:9px;border:1px solid var(--line);border-radius:18px;padding:5px 9px;background:white;white-space:nowrap}
.tabs{display:grid;grid-template-columns:1fr 1fr 1.1fr;gap:5px;background:#f0f4f0;border:1px solid #ebefeb;padding:4px;border-radius:10px;margin-bottom:11px}.tab{border:0;background:transparent;color:#76877d;border-radius:7px;padding:10px 4px;display:flex;gap:5px;align-items:center;justify-content:center;font-size:10px;font-weight:700;transition:.2s}.tab.active{color:var(--forest);background:#fff;box-shadow:0 2px 7px #153e2c12}.tab .icon{width:14px;height:14px}.tab:hover:not(.active){background:#e4ede6}
.route-list{display:flex;flex-direction:column;gap:7px}.route-card{border:1px solid #e3e9e3;background:#fff;border-radius:12px;padding:13px 12px;display:block;text-align:left;min-height:72px;transition:box-shadow .2s,border-color .2s,transform .2s;position:relative;overflow:hidden;width:100%}.route-card:before{content:"";position:absolute;left:0;top:12px;bottom:12px;width:3px;border-radius:0 5px 5px 0;background:var(--route-color)}.route-card:hover{transform:translateY(-1px);box-shadow:0 5px 15px #1f534310}.route-card.active{border-color:var(--route-color);box-shadow:0 0 0 1px var(--route-color),0 7px 18px #244b3410;background:linear-gradient(90deg,rgba(250,250,245,.9),white)}
.route-card-top{display:flex;align-items:center;gap:10px}.route-icon{height:35px;width:35px;border-radius:9px;display:flex;align-items:center;justify-content:center;background:color-mix(in srgb,var(--route-color) 12%,white);color:var(--route-color);flex-shrink:0}.route-text{flex:1;min-width:0}.route-code{color:var(--route-color);font-size:9px;font-weight:800;letter-spacing:1.2px}.route-title{color:#345047;font-size:10.3px;font-weight:800;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;margin-top:4px}.route-end{font-size:9px;color:#819187;display:flex;align-items:center;gap:5px;margin-top:6px}.route-end .small-dot{background:#c1cdc2;width:3px;height:3px;border-radius:50%}.route-open-icon{color:#b1beb1;width:17px;height:17px}.route-card.active .route-open-icon{color:var(--route-color)}
.route-clear{border:0;background:transparent;color:#507d6d;font-size:10px;font-weight:700;margin:10px 0 3px;display:flex;gap:7px;align-items:center}.route-clear:hover{text-decoration:underline}.route-clear .icon{width:13px;height:13px}
.site-heading{margin-top:25px;border-top:1px solid var(--line);padding-top:21px}.search-field{display:flex;gap:8px;align-items:center;border:1px solid #e3e9e2;background:#f9fbf7;border-radius:10px;padding:0 11px;height:41px;color:#91a096;margin-bottom:10px}.search-field:focus-within{border-color:#93beb0;background:#fff}.search-field .icon{width:15px;height:15px}.search-field input{width:100%;min-width:0;background:transparent;outline:0;border:0;color:#344b43;font-size:10.5px}.search-field input::placeholder{color:#a1ada4}.search-key{font-size:18px;opacity:.4}
.site-list{display:flex;flex-direction:column;gap:2px;max-height:262px;overflow-y:auto;scrollbar-width:thin;scrollbar-color:#d4dfd4 transparent}.site-row{padding:9px 8px;border:1px solid transparent;background:transparent;border-radius:9px;display:flex;align-items:center;gap:10px;text-align:left;width:100%;transition:.18s}.site-row:hover{background:#f4f8f3}.site-row.selected{background:#eaf4ed;border-color:#dbebdf}.site-row.dim{opacity:.43}.site-row.dim:hover{opacity:.9}.site-index{flex-shrink:0;width:26px;height:26px;border-radius:8px;color:#718c7e;background:#edf2ed;display:flex;justify-content:center;align-items:center;font-size:9px;font-weight:800}.site-row.selected .site-index{background:#1f6b54;color:white}.site-row-text{flex:1;min-width:0}.site-row-name{display:block;font-size:10px;color:#365147;font-weight:700;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.site-row-sub{display:block;color:#9daa9f;font-size:9px;margin-top:4px}.site-status-dot{height:7px;width:7px;background:#5db18a;border-radius:50%;flex-shrink:0}.site-status-dot.missing{background:#deb979}.site-row .icon{width:13px;height:13px;color:#8fa096}
.empty-list{padding:22px;text-align:center;font-size:11px;color:#829487;background:#f5f8f4;border-radius:9px}
.sidebar-footnote{display:flex;align-items:flex-start;gap:9px;background:#fff8e9;border:1px solid #f2e7cb;padding:10px 12px;margin-top:19px;border-radius:10px;color:#96774b}.sidebar-footnote .icon{width:15px;height:15px;margin-top:2px}.sidebar-footnote p{font-size:9px;line-height:1.8;margin:0}.sidebar-footnote strong{color:#765c38}
.map-wrap{position:relative;overflow:hidden;background:#eaf1ea;min-width:0}.map-wrap:before{content:"";position:absolute;inset:0;z-index:0;background:linear-gradient(135deg,#e5eee8,#f7f7e7),repeating-linear-gradient(45deg,transparent 0 50px,#dee9df 50px 52px)}#map{position:absolute;inset:0;z-index:1}.maplibregl-control-container{font-family:inherit}.maplibregl-ctrl-bottom-right{bottom:62px!important}.maplibregl-ctrl-attrib{font-size:9px!important}
.map-caption{position:absolute;top:22px;left:20px;z-index:6;background:rgba(255,255,252,.91);backdrop-filter:blur(10px);border:1px solid rgba(228,235,227,.95);color:#4b7163;box-shadow:0 8px 22px #1e4f3812;border-radius:30px;padding:12px 15px;display:flex;align-items:center;gap:8px;font-size:9px;font-weight:800;letter-spacing:1.1px}.tiny-dot{background:#32aa7a;height:6px;width:6px;border-radius:50%}.cap-separator{font-weight:400;color:#b1bdb1;margin:0 4px}
.map-control-group{position:absolute;top:21px;right:18px;z-index:7;display:flex;align-items:center;gap:7px}.map-control{display:flex;align-items:center;justify-content:center;gap:7px;border:1px solid #e1e9e0;background:#fffefa;color:#45695c;box-shadow:0 5px 18px #1e4c3515;border-radius:9px;height:40px;min-width:40px;padding:0 12px;font-size:10px;font-weight:800}.map-control:hover{background:#f1f8f1}.map-control.icon-only,.map-control.square-control{padding:0 10px}.square-control{font-size:19px;font-weight:400}
.map-key{position:absolute;left:19px;bottom:104px;z-index:8;display:flex;flex-direction:column;gap:10px;padding:16px 18px;border:1px solid #e0e6df;box-shadow:var(--shadow);border-radius:13px;background:rgba(255,255,253,.96);backdrop-filter:blur(9px);width:253px}.map-key-title{font-size:9px;color:#8f9c92;font-weight:800;letter-spacing:1.5px;margin-bottom:2px}.map-key-entry{display:flex;gap:10px;align-items:center;color:#60746a;font-size:9px}.map-key-entry strong{color:#576d62}.key-pin{width:11px;height:11px;border-radius:50%;flex-shrink:0;border:2px solid #fff;box-shadow:0 0 0 1px #abc5b4;background:#3f9c73}.key-pin.missing{background:#ddb878;box-shadow:0 0 0 1px #dfbe83}.key-dash{width:19px;height:0;border-top:2px dashed #638d7c;flex-shrink:0}
.gis-layer-controls{border:0;border-top:1px solid #e8ece6;margin:2px 0 0;padding:9px 0 0;display:grid;grid-template-columns:1fr 1fr;gap:7px 8px}.gis-layer-controls legend{padding:0 5px 0 0;font-size:9px;color:#78877d;font-weight:800;letter-spacing:.4px}.gis-layer-controls label{min-width:0;display:flex;align-items:center;gap:5px;color:#536a5d;font-size:8.7px;line-height:1.3;cursor:pointer}.gis-layer-controls input{accent-color:#34785c;width:13px;height:13px;margin:0;flex:0 0 auto}.gis-swatch{width:13px;height:0;flex:0 0 13px;border-top:2px solid #857967}.gis-road{border-color:#857967}.gis-water{height:9px;border:1px solid #398b94;background:#b7dfe0}.gis-rail{border-color:#a75e50;border-top-style:dashed}.gis-boundary{border-color:#705c83;border-top-style:dashed}.gis-context{border-color:#a38a67;border-top-style:dotted}.gis-supplementary{border-color:#bd9452;border-top-style:dotted}.map-key #gis-layer-status{font-size:8.5px;line-height:1.5;color:#4f775f;margin:0}.map-key .gis-attribution{font-size:8px;line-height:1.55;color:#7f8977;margin:0}
.map-key[open]{max-height:min(62dvh,520px);overflow:auto}
.map-bottom-banner{position:absolute;left:18px;right:18px;bottom:20px;z-index:8;border:1px solid #e4e9dd;border-radius:12px;background:rgba(255,255,251,.98);box-shadow:0 8px 26px #1f4f3514;display:flex;align-items:center;gap:10px;min-height:62px;padding:12px 15px;color:#657a6c}.map-bottom-banner>.icon{color:#b38c4e;width:18px;height:18px}.map-bottom-banner>span{font-size:9.4px;line-height:1.6;flex:1}.map-bottom-banner strong{color:#425e50}.map-bottom-banner a{font-size:9px;font-weight:800;color:#25765b;white-space:nowrap;display:flex;align-items:center;gap:6px}.map-bottom-banner a .icon{width:13px;height:13px}
.floating-route{position:absolute;top:75px;left:20px;max-width:320px;z-index:9;border-radius:14px;border:1px solid #e6e9e0;background:rgba(255,255,252,.98);box-shadow:0 10px 32px #294d371e;padding:14px 15px}.floating-route-label{font-size:9px;color:#869887;letter-spacing:1.1px;font-weight:800}.floating-route-name{color:#2b493e;font-size:12px;line-height:1.5;font-weight:800;margin:5px 0 9px}.floating-route-strip{display:flex;align-items:center;flex-wrap:wrap;gap:4px}.floating-route-dot{height:6px;width:6px;border-radius:50%;background:var(--active-route)}.floating-route-mini{font-size:9px;color:#718578;max-width:270px;line-height:1.6}
.route-external{display:flex;align-items:center;gap:7px;margin:10px 0 7px;color:#246d55;font-weight:800;font-size:9px;border-top:1px solid #e6eee4;padding-top:11px}.route-external .icon{width:13px;height:13px}.route-external:hover{text-decoration:underline}
.map-failure{position:absolute;inset:10% 14%;background:#f9f9f2e8;z-index:5;border:1px dashed #b4c8b9;border-radius:20px;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;gap:13px;padding:30px}.map-failure[hidden]{display:none}.map-failure .failure-icon{font-size:42px;color:#799c87}.map-failure strong{font-size:18px}.map-failure p{font-size:11px;color:#718276;line-height:1.8;max-width:320px}
.map-marker{--marker:#297758;appearance:none;display:flex;align-items:center;flex-direction:column;position:relative;transform:translateY(-4px);transition:opacity .2s,filter .2s;cursor:pointer;user-select:none}.map-marker:after{content:"";width:4px;height:7px;background:var(--marker);clip-path:polygon(0 0,100% 0,50% 100%);position:relative;top:-1px}.map-marker-core{height:32px;width:32px;border:3px solid #fff;background:var(--marker);box-shadow:0 5px 16px #1f473759,0 0 0 1px #39594f18;display:flex;align-items:center;justify-content:center;color:#fff;border-radius:13px 13px 13px 2px;transform:rotate(-45deg);transition:transform .2s,box-shadow .2s}.map-marker-core span{transform:rotate(45deg);font-size:14px;line-height:1}.map-marker-label{position:absolute;bottom:42px;background:#fffefa;white-space:nowrap;max-width:180px;overflow:hidden;text-overflow:ellipsis;border:1px solid #e4e9e3;border-radius:7px;padding:7px 9px;color:#345145;box-shadow:0 4px 13px #13392c18;font-size:9px;font-weight:800;opacity:0;transform:translateY(5px);pointer-events:none;transition:opacity .17s,transform .17s}.map-marker:hover .map-marker-label,.map-marker.selected .map-marker-label,.map-marker.in-route .map-marker-label{opacity:1;transform:translateY(0)}.map-marker:hover .map-marker-core,.map-marker.selected .map-marker-core{box-shadow:0 7px 24px #103e3180,0 0 0 3px #f3dc98;transform:rotate(-45deg) scale(1.12)}.map-marker.in-route .map-marker-core{transform:rotate(-45deg) scale(1.09);border-color:#fff}.map-marker.selected{z-index:500!important}.map-marker.dim{opacity:.19;filter:grayscale(.8)}.map-marker.dim .map-marker-label{display:none}.map-marker.dim:hover{opacity:1;filter:none}
.details{background:#fffefa;border-left:1px solid var(--line);height:100%;overflow-y:auto;scrollbar-width:thin;scrollbar-color:#d7ded7 transparent;z-index:10}.details-content{padding:24px 22px 30px}.detail-cover{height:150px;border-radius:14px;overflow:hidden;background:radial-gradient(circle at 80% 10%,#d6e3d7 0,transparent 46%),linear-gradient(138deg,#183e35,#28624e);position:relative;margin-bottom:20px;display:flex;justify-content:center;align-items:center}.detail-cover:before{content:"";position:absolute;inset:0;background-image:linear-gradient(125deg,transparent 65%,rgba(255,255,255,.04) 65% 66%,transparent 66%),repeating-linear-gradient(0deg,transparent 0 27px,rgba(255,255,255,.04) 28px 29px)}.cover-architecture{position:relative;color:#e7d29a;font-size:80px;line-height:1;filter:drop-shadow(0 5px 4px #0a2d2750);transform:translateY(10px)}.cover-floating{position:absolute;top:16px;left:15px;color:#dcece4;font-size:9px;font-weight:800;letter-spacing:1.7px}.cover-num{position:absolute;right:13px;bottom:12px;color:#ffffff4f;font-size:44px;font-weight:800;line-height:1}.cover-unlocated{background:linear-gradient(135deg,#8f8875,#b9ae96)}.cover-category-tag{position:absolute;right:13px;top:12px;color:#fff;background:#ffffff20;border:1px solid #ffffff3d;padding:7px 9px;border-radius:20px;font-size:9px}
.detail-upper-row{display:flex;justify-content:space-between;align-items:center;gap:10px;margin-bottom:10px}.detail-eyebrow{font-size:9px;color:#a98c53;letter-spacing:1.4px;font-weight:800}.detail-position{font-size:9px;color:#96a49a;border:1px solid var(--line);padding:6px 9px;border-radius:20px}.detail-title{font-size:22px;line-height:1.45;letter-spacing:-.6px;color:var(--forest);font-weight:800;margin:0 0 10px}.detail-subline{color:#7a9181;font-size:9.5px;display:flex;align-items:flex-start;gap:6px;line-height:1.7}.detail-subline .icon{width:14px;height:14px;margin-top:1px}
.detail-status{margin-top:18px;padding:13px;border-radius:11px;display:flex;gap:9px;background:#edf8f0;border:1px solid #d9ecdf;color:#488168}.detail-status.warning{background:#fff7e8;border-color:#f1e6cf;color:#986f37}.detail-status .icon{width:17px;height:17px;margin-top:1px}.detail-status-title{font-size:10px;font-weight:800;line-height:1.6}.detail-status-desc{font-size:9px;line-height:1.8;margin-top:4px;color:#718c79}.detail-status.warning .detail-status-desc{color:#9d855d}
.detail-section{margin-top:23px}.detail-section-heading{display:flex;justify-content:space-between;align-items:center;border-bottom:1px solid #ebefea;padding-bottom:10px;margin-bottom:12px}.detail-section-heading h3{font-size:11px;color:#3e5e4e;margin:0;font-weight:800}.detail-section-heading span{color:#a0afa3;font-size:9px}.detail-text{font-size:10px;color:#71877a;line-height:1.9;margin:0}.detail-fact{margin:8px 0;display:flex;align-items:flex-start;justify-content:space-between;gap:10px}.detail-fact span{color:#9baba0;font-size:9px}.detail-fact strong{color:#3e5d4e;font-size:9px;text-align:right;max-width:175px;line-height:1.7;overflow-wrap:anywhere}.detail-warning{background:#fffbef;color:#947446;border:1px solid #f2e5c9;border-radius:10px;padding:11px 12px;font-size:9px;line-height:1.8;margin-top:16px}.detail-actions{display:grid;gap:8px;margin-top:18px}.primary-action,.secondary-action{display:flex;justify-content:center;align-items:center;gap:8px;padding:12px 10px;border-radius:10px;font-weight:800;font-size:10px}.primary-action{background:var(--forest);border:1px solid var(--forest);color:#fff}.primary-action:hover{background:#276d55}.secondary-action{color:#2f624d;background:#f5f9f4;border:1px solid #e2eadf}.secondary-action:hover{background:#e7f3e9}.primary-action .icon,.secondary-action .icon{height:15px;width:15px}.small-note{font-size:8.6px;color:#9fad9e;line-height:1.8;margin-top:14px}
.route-membership{display:flex;flex-wrap:wrap;gap:6px;margin-top:9px}.membership-pill{border:1px solid #e3eadf;border-radius:30px;padding:7px 9px;font-weight:800;font-size:9px;background:#f9fbf8;color:#4e6658;display:flex;gap:5px;align-items:center;cursor:pointer}.membership-pill:hover{border-color:var(--pill-color)}.membership-dot{height:7px;width:7px;border-radius:50%;background:var(--pill-color)}
.detail-empty{text-align:center;color:#87968a;padding:50px 10px}.detail-empty h2{color:#375546}
.maplibregl-marker{z-index:2}.maplibregl-marker:has(.map-marker.selected){z-index:9}.maplibregl-marker:has(.map-marker.in-route){z-index:7}
.app-shell{grid-template-columns:320px minmax(320px,1fr) 320px;grid-template-rows:minmax(0,1fr);height:calc(100dvh - 76px)}
.sidebar,.details,.map-wrap{min-height:0}
.sidebar-scroll{padding:23px 20px}.hero-subtitle{margin-bottom:15px}.metrics{margin-bottom:20px;padding:13px 10px}
.route-code,.route-title{display:block}.route-card{padding:11px 10px;min-height:70px}.route-title{font-size:11px}.route-code{font-size:9px}
.details-content{padding:22px 20px 30px}.detail-cover{height:122px}.detail-title{font-size:21px}
.map-caption{font-size:8px;left:16px;top:18px;max-width:calc(100% - 244px);overflow:hidden;white-space:nowrap;letter-spacing:.4px;padding:13px}
.map-caption #view-caption,.cap-separator{display:none}.map-control-group{top:18px;right:16px}
.map-status{position:absolute;left:16px;top:70px;z-index:8;max-width:calc(100% - 32px);display:flex;align-items:center;gap:8px;padding:8px 10px;border-radius:10px;border:1px solid #dce5da;background:#fffef9ed;box-shadow:0 4px 20px #203c2910;color:#466353;font-size:10px;line-height:1.5}
.map-status[data-level="error"],.map-status[data-level="fallback"],.map-status[data-level="model-error"]{border-color:#dec493;background:#fff8e9;color:#805d29}
.map-status button{font-size:10px;font-weight:700;color:#365d4b;background:#f1f5ec;border:1px solid #dbe4d5;border-radius:6px;padding:6px 8px;white-space:nowrap}
.map-status[data-level="ready"] #map-retry{display:none}.map-status[data-level="fallback"] #map-raster{display:none}
.map-status[data-level="loading"] #map-retry{display:none}
.map-control:disabled{opacity:.6;cursor:default}.map-control{min-width:42px;height:42px}
.map-failure{inset:auto 16px 150px;display:flex;align-items:flex-start;padding:14px;gap:5px;border:1px solid #dec493;border-radius:10px;background:#fff7e9;z-index:9;text-align:left;pointer-events:none}
.map-failure strong{font-size:12px}.map-failure span{font-size:11px;line-height:1.6}
.floating-route{top:122px;left:16px;max-width:285px;width:calc(100% - 85px);padding:12px 14px}
.floating-route-label{color:var(--active-route);letter-spacing:.5px}.route-itinerary summary{font-weight:800;font-size:12px;line-height:1.6;cursor:pointer;margin-top:5px}.route-itinerary summary span{display:block;font-weight:500;color:#7a8b7c;font-size:10px}
.route-stops{list-style:none;margin:10px 0 0;padding:0;max-height:240px;overflow:auto}.route-stops li+li{margin-top:5px}
.route-stops button{border:0;background:#f5f6f0;border-radius:8px;display:flex;gap:9px;align-items:center;text-align:left;width:100%;padding:8px;font-size:11px;color:#355444}
.route-stops button:hover{background:#e5f0e5}.route-stops b{border-radius:50%;background:var(--active-route);width:23px;height:23px;display:grid;place-items:center;color:white;flex-shrink:0}
.route-stops small{display:block;font-size:9px;margin-top:4px;color:#946c37}.route-stops .unlocated-stop{background:#fff4df}.route-stops .unlocated-stop b{background:#ac8a55}
.route-disclaimer{font-size:10px;line-height:1.6;margin:9px 0 0;color:#738273}.route-missing{font-size:10px;color:#926b32;margin:8px 0}.floating-route .route-clear{font-size:10px;margin-top:8px}
.map-key{display:block;width:auto;max-width:280px;padding:12px 14px;bottom:110px;left:16px}.map-key summary{cursor:pointer;list-style:revert;margin:0;font-size:10px}.map-key-entry{margin-top:10px;font-size:10px}.map-key p{font-size:10px;line-height:1.6;color:#7f8977;margin:10px 0 0;max-width:240px}
.map-bottom-banner{left:16px;right:16px;padding:10px 12px;bottom:16px}.map-bottom-banner>a{display:none}
.panel-close{display:none}.marker-number{display:none;font-weight:800;font-size:15px!important}.map-marker.in-route .marker-kind{display:none}.map-marker.in-route .marker-number{display:block}
.map-marker.in-route:not(.selected) .map-marker-label{opacity:0}.map-marker.in-route:hover .map-marker-label{opacity:1}
.map-marker.dim{opacity:.22!important}.map-marker.maplibregl-marker.in-route{z-index:20}.heritage-leaflet-marker{background:none;border:none}.heritage-leaflet-marker .map-marker{width:36px;height:44px;justify-content:flex-end}.leaflet-container{background:#e8ede4;font:inherit}
.map-marker.maplibregl-marker{position:absolute;width:36px;height:44px;justify-content:flex-end}
.leaflet-bottom{bottom:3px}.leaflet-control-attribution{font-size:9px;max-width:100%}.maplibregl-ctrl-bottom-right{bottom:3px!important}.maplibregl-ctrl-bottom-left{bottom:3px!important}
@media (min-width:1650px){.app-shell{grid-template-columns:365px minmax(390px,1fr) 350px}.sidebar-scroll{padding:28px}.details-content{padding:25px}.map-caption #view-caption,.cap-separator{display:initial}}
@media (max-width:1200px){.app-shell{grid-template-columns:295px minmax(320px,1fr) 290px}.topbar-center{display:none}.topbar{padding:0 18px}.sidebar-scroll{padding:20px 16px}.detail-title{font-size:19px}}
@media (max-width:1090px){
  .app-shell{grid-template-columns:300px minmax(0,1fr)}
  .details{display:none;position:absolute;top:90px;bottom:16px;right:16px;width:330px;height:auto;z-index:25;border:1px solid var(--line);border-radius:16px;box-shadow:0 8px 45px #193d352b}
  .details.open{display:block}.details .panel-close{display:grid}.details-content{padding-top:52px}.detail-cover{display:none}
}
@media (max-width:800px){
  .topbar{height:66px;padding:0 12px;gap:8px}.brand-wrap{min-width:0;gap:8px}.brand-symbol{width:33px;height:36px}.brand-name{font-size:11px}.brand-tagline{font-size:7px;letter-spacing:1.4px}.topbar-right{gap:0}.top-link,.edition-tag{display:none}
  .menu-toggle{display:flex;align-items:center;gap:6px;font-size:10px;min-height:40px}
  .app-shell{display:block;height:calc(100dvh - 66px)}
  .map-wrap{height:100%;width:100%}
  .sidebar{position:absolute;z-index:40;top:66px;bottom:0;left:0;width:min(365px,96vw);transform:translateX(-110%);transition:transform .2s;box-shadow:10px 0 40px #15352930}
  .sidebar.open{transform:translateX(0)}.sidebar-scroll{padding:24px 18px}.sidebar h1{font-size:27px;padding-right:25px}.sidebar .panel-close{display:grid}
  .panel-close{position:absolute;right:12px;top:12px;place-items:center;width:36px;height:36px;border:1px solid #dce5da;background:#f2f6ee;color:#335b48;border-radius:50%;font-size:23px;z-index:3}
  .details{top:auto;bottom:0;right:0;width:100%;max-height:48dvh;border-radius:18px 18px 0 0;border-bottom:0;box-shadow:0 -8px 35px #203b2b26;scrollbar-width:thin}
  .details-content{padding:22px 17px 25px}.detail-upper-row{padding-right:40px}.detail-title{font-size:19px;max-width:calc(100% - 28px)}.detail-section{margin-top:17px}.detail-text{font-size:12px}.detail-status-title{font-size:11px}.detail-status-desc{font-size:10px}.detail-fact span,.detail-fact strong{font-size:10px}
  .map-caption{top:12px;left:10px;max-width:calc(100% - 20px);font-size:8px;padding:10px 12px;letter-spacing:.5px}
  .map-control-group{top:58px;right:10px;gap:5px}.map-control{min-width:40px;height:40px;padding:0 10px}.map-control.square-control{display:flex}
  .map-status{top:108px;left:10px;max-width:calc(100% - 20px);font-size:10px;gap:6px;padding:7px 9px}.map-status>span{flex:1}.map-status button{font-size:10px;padding:7px}
  .map-key{left:10px;bottom:78px;max-width:calc(100% - 20px);padding:11px 13px}.map-key-entry{font-size:10px}
  .map-key[open]{max-height:min(55dvh,420px)}.gis-layer-controls label{font-size:9px}.map-key .gis-attribution{font-size:8.5px}
  .floating-route{top:auto;bottom:132px;left:10px;max-width:300px;padding:11px 13px;max-height:calc(100% - 290px);overflow-y:auto}
  .map-wrap:has(.floating-route:not([hidden])) .map-key{bottom:78px}.map-bottom-banner{bottom:22px;left:10px;right:10px;min-height:0;padding:8px 10px}.map-bottom-banner>span{font-size:8px;line-height:1.5}.map-bottom-banner>.icon{width:14px;height:14px}
  .map-failure{inset:auto 10px 130px}.map-key:has(~ .map-bottom-banner){max-width:calc(100% - 20px)}
  .route-stops{max-height:190px}.map-marker-core{width:30px;height:30px}.map-marker-label{max-width:160px;font-size:9px}
}
@media (prefers-reduced-motion:reduce){*{scroll-behavior:auto!important;transition:none!important}}
