:root{--bar:#1E2430;--bar2:#2A3140;--accent:#F2A541;--ink:#17202E;--muted:#5A6270;--line:#DDE1E8;--bg:#F5F6F8;--dock:0px}
*{box-sizing:border-box}html,body{margin:0;height:100%;font:14px/1.4 Inter,system-ui,-apple-system,"Segoe UI",Roboto,sans-serif;color:var(--ink);-webkit-font-smoothing:antialiased}
button{font:inherit;cursor:pointer}
#bar{position:fixed;top:0;left:0;right:0;height:56px;background:var(--bar);color:#fff;display:flex;align-items:center;gap:12px;padding:0 12px;padding-top:env(safe-area-inset-top);z-index:1002;border-bottom:3px solid var(--accent)}
.brand{display:flex;align-items:center;gap:8px;background:none;border:0;color:#fff;padding:0;flex:none}
.brand img{width:32px;height:32px}.brand span{display:flex;flex-direction:column;text-align:left;line-height:1.1}.brand b{font-weight:800;font-size:15px}.brand small{color:var(--accent);font-size:11px;font-weight:600}
#bar h1{font-weight:700;font-size:15px;margin:0;flex:1;min-width:0;padding-left:12px;border-left:1px solid #ffffff2a;overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}
.pill{background:var(--bar2);border:1px solid #ffffff33;color:#fff;border-radius:999px;height:36px;padding:0 14px;font-weight:600;flex:none}.pill:hover{border-color:var(--accent)}
#toggle{display:none;width:40px;padding:0}
#map{position:fixed;top:calc(56px + var(--dock));bottom:28px;left:0;right:340px;background:#DCE8F3}
#panel{position:fixed;top:56px;bottom:28px;right:0;width:340px;overflow:auto;background:#fff;border-left:1px solid var(--line);padding:12px 14px;z-index:1000}
#panel label{display:block;font-weight:600;font-size:11px;text-transform:uppercase;letter-spacing:.04em;color:var(--muted);margin:8px 0}
#panel select{display:block;width:100%;margin-top:4px;padding:8px;font:500 14px Inter,system-ui,sans-serif;color:var(--ink);border:1px solid var(--line);border-radius:8px;background:#fff}
.chk{text-transform:none!important;letter-spacing:0!important;font-weight:500!important}
#foot{position:fixed;bottom:0;left:0;right:0;height:28px;background:var(--bar);color:#C9CED8;font-size:11px;padding:6px 12px;z-index:1002;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;display:flex;gap:10px}
#foot b{color:var(--accent)}#credit{overflow:hidden;text-overflow:ellipsis}
#legend .row{display:flex;align-items:center;gap:8px;font-size:12.5px;margin:3px 0;cursor:pointer}#legend .sw{width:20px;height:13px;border-radius:3px;border:1px solid #0002;flex:none}
#legend .row.off{opacity:.35}#legend h3{font-size:13px;font-weight:700;margin:12px 0 6px;padding:6px 8px;background:var(--bar);color:#fff;border-radius:6px}
#srcbox{margin-top:12px;border-top:1px solid var(--line);padding-top:8px}#srcbox summary{font-weight:700;cursor:pointer}
#sources{font-size:12px;color:var(--muted)}#sources a{word-break:break-all;color:#2F6DB5}
.leaflet-popup-content{font-size:12px;max-width:260px}.leaflet-popup-content table td{padding:1px 4px;vertical-align:top}
/* start screen */
#start{position:fixed;top:56px;bottom:28px;left:0;right:0;overflow:auto;background:linear-gradient(180deg,#1E2430 0,#1E2430 210px,var(--bg) 210px);z-index:1001;display:none}
body.home #start{display:block}body.home #panel,body.home #toggle,body.home #explore{display:none}
.wrap{max-width:1100px;margin:0 auto;padding:28px 18px 40px}
.kicker{color:var(--accent);font-weight:700;text-transform:uppercase;letter-spacing:.08em;font-size:12px;margin:0}
#start h2{color:#fff;font-size:clamp(26px,5vw,44px);font-weight:800;margin:6px 0 4px;letter-spacing:-.02em}
.lede{color:#C9CED8;margin:0 0 26px;font-size:15px}
.crumb{display:flex;align-items:center;gap:10px;margin:0 0 14px}.crumb button{background:#fff;border:1px solid var(--line);border-radius:999px;padding:8px 14px;font-weight:600}
.crumb h3{margin:0;font-size:20px;font-weight:800}
.cats{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:16px}
.cat{position:relative;min-height:190px;border:0;border-radius:18px;color:#fff;text-align:left;padding:20px;overflow:hidden;box-shadow:0 8px 24px #0002;transition:transform .15s,box-shadow .15s;display:flex;flex-direction:column;justify-content:flex-end}
.cat:hover,.cat:focus-visible{transform:translateY(-3px);box-shadow:0 14px 30px #0003}
.cat .big{position:absolute;right:-6px;top:-10px;font-size:110px;opacity:.9;filter:drop-shadow(0 6px 10px #0003)}
.cat b{font-size:21px;font-weight:800;position:relative}.cat small{position:relative;opacity:.9;font-size:13px;margin-top:4px}
.cat .n{position:absolute;left:20px;top:18px;background:#ffffff2e;border-radius:999px;padding:3px 10px;font-size:12px;font-weight:700}
.cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:12px}
.card{display:flex;flex-direction:column;gap:10px;align-items:stretch;text-align:left;background:#fff;border:1px solid var(--line);border-left:5px solid var(--c);border-radius:12px;padding:14px;transition:box-shadow .15s,transform .15s;color:var(--ink)}
.card:hover,.card:focus-within{box-shadow:0 8px 20px #0001a;transform:translateY(-2px)}
.cardmain{display:flex;gap:12px;align-items:flex-start;text-align:left;background:none;border:0;padding:0;color:inherit;width:100%}
.choices{display:flex;flex-wrap:wrap;gap:6px}.ch{border:1px solid var(--line);background:#F5F6F8;border-radius:999px;padding:4px 10px;font-size:12px;font-weight:700;color:var(--ink)}.ch:hover,.ch:focus-visible{border-color:var(--c);color:var(--c)}
.card .ic{font-size:28px;line-height:1;flex:none;width:40px;text-align:center}.card .ic img{width:36px;border-radius:3px}
.card b{display:block;font-size:14.5px;font-weight:700;line-height:1.3}.card small{display:block;color:var(--muted);margin-top:4px}
#cby{position:fixed;top:calc(68px + var(--dock));left:12px;z-index:1001;display:flex;flex-wrap:wrap;gap:6px;align-items:center;max-width:min(560px,calc(100vw - 720px));background:#ffffffee;border:1px solid var(--line);border-radius:12px;padding:6px 8px;box-shadow:0 4px 16px #0002}
#cby[hidden]{display:none!important}#cby span{font-size:11px;font-weight:800;letter-spacing:.04em;text-transform:uppercase;color:var(--muted);padding:0 4px}
#cby button{border:1px solid var(--line);background:#fff;border-radius:999px;padding:5px 10px;font-size:12px;font-weight:700}#cby button.on{background:var(--bar);color:#fff;border-color:var(--bar)}
body.home #cby{display:none!important}
.card .rg{display:inline-block;font-size:11px;font-weight:700;color:var(--c);text-transform:uppercase;letter-spacing:.05em;margin-bottom:3px}
.fine{color:var(--muted);font-size:12px;margin-top:28px}
@media (max-width:760px){#map{right:0}#toggle{display:block}#explore span{display:none}#explore{width:40px;padding:0}.brand span{display:none}#bar h1{font-size:13px;padding-left:8px}
 #panel{top:auto;bottom:28px;width:100%;max-height:58vh;border-left:0;border-top:3px solid var(--accent);border-radius:14px 14px 0 0;transform:translateY(100%);transition:transform .2s;box-shadow:0 -8px 24px #0002}body.open #panel{transform:none}
 .cat{min-height:140px}.cat .big{font-size:80px}.cats{grid-template-columns:1fr 1fr;gap:10px}.cat b{font-size:16px}.cat small{display:none}}
@media (max-width:380px){.cats{grid-template-columns:1fr}}
#start.incat{background:linear-gradient(180deg,#1E2430 0,#1E2430 92px,var(--bg) 92px)}
#start.incat h2,#start.incat .lede{display:none}#start.incat .kicker{margin-bottom:14px}
#start.incat .crumb button{flex:none}#start.incat .crumb h3{color:#fff}
@media (max-width:760px){#start.incat{background:linear-gradient(180deg,#1E2430 0,#1E2430 150px,var(--bg) 150px)}#start.incat .crumb{flex-direction:column;align-items:flex-start}}
@media (max-width:760px){body.home .brand span{display:flex}}
/* search bubble */
#search{position:fixed;top:calc(68px + var(--dock));right:354px;z-index:1001;width:300px;max-width:calc(100vw - 80px);background:#fff;border-radius:999px;box-shadow:0 4px 16px #0003;display:flex;align-items:center;border:2px solid var(--bar)}
#qbtn{background:none;border:0;width:40px;height:40px;font-size:16px;flex:none}
#q{border:0;outline:0;flex:1;min-width:0;font:500 14px Inter,system-ui,sans-serif;background:none;padding-right:14px;height:40px}
#qres{position:absolute;top:46px;left:0;right:0;margin:0;padding:0;list-style:none;background:#fff;border-radius:12px;box-shadow:0 8px 24px #0003;overflow:hidden}
#qres:empty{display:none}#qres li{padding:8px 14px;cursor:pointer;border-top:1px solid var(--line)}#qres li:first-child{border-top:0}
#qres li b{display:block;font-size:13.5px}#qres li small{color:var(--muted);font-size:11.5px}#qres li:hover,#qres li.act{background:#FFF4E2}#qres li.none{color:var(--muted);cursor:default}
body.home #search{display:none}
/* idea FAB */
#idea{position:fixed;right:356px;bottom:52px;z-index:1001;background:var(--accent);color:var(--bar);font-weight:800;text-decoration:none;border-radius:999px;padding:11px 18px;box-shadow:0 6px 18px #0004;font-size:14px;transition:transform .15s}
#idea:hover{transform:translateY(-2px)}body.home #idea{right:20px;bottom:44px}
/* scale bar */
.leaflet-control-scale{margin-bottom:12px!important}.leaflet-control-scale-line{background:#ffffffd9;border-color:var(--bar);color:var(--bar);font:600 10.5px Inter,system-ui,sans-serif}
@media (max-width:1100px){#cby{max-width:calc(100vw - 380px)}}
@media (max-width:760px){
 #cby{top:calc(68px + var(--dock));left:12px;right:12px;max-width:none}
 #search{right:12px;top:calc(68px + var(--dock));width:auto}#search:not(.open){width:44px}#search:not(.open) #q,#search:not(.open) #qres{display:none}#search.open{left:60px}
 #idea{right:12px;bottom:44px;padding:0;width:52px;height:52px;display:flex;align-items:center;justify-content:center;font-size:22px}#idea span{display:none}
 body.home #idea{right:14px;bottom:42px}body.open #idea{bottom:calc(58vh + 40px)}
 .leaflet-bottom.leaflet-left{bottom:0}body.open .leaflet-control-scale{display:none}}
.rlabel span{display:inline-block;transform:translate(-50%,-50%);white-space:nowrap;font:800 10.5px/1.1 Inter,system-ui,sans-serif;color:#1E2430;background:#ffffffd0;border:1.5px solid #1E2430;border-radius:4px;padding:2px 5px;text-transform:uppercase;letter-spacing:.02em;pointer-events:none}
.leaflet-container.lowz .rlabel span{font-size:8px;padding:1px 3px;border-width:1px}
.leaflet-container.tinyz .rlabel{display:none}
/* floating legend */
#fleg{position:fixed;left:12px;bottom:84px;z-index:1001;width:250px;max-height:calc(100vh - 230px);display:flex;flex-direction:column;background:#fffffff2;border-radius:12px;box-shadow:0 6px 20px #0003;overflow:hidden;border:1px solid var(--line)}
#flegbtn{display:flex;align-items:center;gap:8px;background:var(--bar);color:#fff;border:0;padding:8px 12px;font-weight:700;font-size:12.5px;text-align:left}#flegbtn span{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}#flegbtn i{font-style:normal;transition:transform .2s}
#fleg.min #legend{display:none}#fleg.min #flegbtn i{transform:rotate(-90deg)}#fleg.min{width:auto;max-width:220px}
#fleg #legend{overflow:auto;padding:6px 10px 8px}#fleg #legend h3{display:none}
#legend .row{padding:3px 4px;border-radius:6px}#legend .row:hover{background:#FFF4E2}
body.home #fleg,body.home #info,body.home #tslider,body.home #hint{display:none!important}
/* info card */
#info{position:fixed;top:122px;right:354px;width:290px;max-height:calc(100vh - 260px);overflow:auto;z-index:1001;background:#fff;border-radius:12px;box-shadow:0 8px 24px #0003;border-top:4px solid var(--accent);padding:12px 14px;display:none;font-size:13px}
#info.on{display:block}#info:not(.pin){pointer-events:none}#info .x{position:absolute;top:4px;right:6px;background:none;border:0;font-size:22px;line-height:1;color:var(--muted)}#info:not(.pin) .x{display:none}
#info .body>b:first-child{display:block;font-size:15px;font-weight:800;margin:0 24px 6px 0}#info table{border-collapse:collapse;width:100%}#info td{padding:3px 4px;border-top:1px solid var(--line);vertical-align:top}#info td:first-child{color:var(--muted);text-transform:capitalize;width:45%}
/* time slider */
#tslider{position:fixed;left:calc((100vw - 340px)/2);transform:translateX(-50%);bottom:44px;z-index:1001;display:none;align-items:center;gap:10px;background:var(--bar);color:#fff;border-radius:999px;padding:6px 16px 6px 8px;box-shadow:0 6px 18px #0004;width:min(460px,calc(100vw - 760px))}
#tslider.on{display:flex}#tslider .lab{font-size:11px;color:#C9CED8;text-transform:uppercase;font-weight:700;padding-left:6px}#tslider input{flex:1;accent-color:var(--accent);min-width:80px}#tslider .val{font-size:16px;color:var(--accent);min-width:42px;text-align:right}
#tslider .pl{background:var(--accent);color:var(--bar);border:0;border-radius:50%;width:30px;height:30px;font-size:12px;flex:none}
#tslider .spd{background:#2A3140;color:#fff;border:1px solid #ffffff40;border-radius:999px;height:30px;padding:0 8px;font-size:12px;font-weight:800;flex:none}
/* hint */
#hint{position:fixed;top:50%;left:calc((100vw - 340px)/2);transform:translate(-50%,-50%);z-index:1003;background:var(--bar);color:#fff;font-weight:700;padding:12px 18px;border-radius:999px;box-shadow:0 8px 24px #0005;display:none;cursor:pointer;border:2px solid var(--accent)}
#hint.on{display:block;animation:hintin .4s}@keyframes hintin{from{opacity:0;transform:translate(-50%,-30%)}}
.leaflet-bar.reset{display:block;width:30px;height:30px;line-height:30px;text-align:center;background:#fff;font-size:18px;font-weight:700;color:var(--ink);text-decoration:none;border:2px solid #0003;border-radius:4px;background-clip:padding-box}
@media (max-width:1100px) and (min-width:761px){#tslider{width:auto;left:20px;transform:none;right:550px}}
@media (max-width:760px){
 #fleg{left:10px;bottom:40px;max-height:42vh;width:min(260px,calc(100vw - 90px))}#fleg.min{width:auto}
 body:has(#tslider.on) #fleg{bottom:94px}
 #tslider{left:10px;right:74px;transform:none;width:auto;bottom:40px;padding:5px 12px 5px 6px}#tslider .lab{display:none}
 #info{top:auto;bottom:40px;left:10px;right:10px;width:auto;max-height:45vh;z-index:1003}
 #hint{left:50%}
 body.open #fleg,body.open #tslider,body.open #info{display:none!important}}
.leaflet-container.darkmap,#map.darkmap,.darkmap{background:#0F1420 !important}
.leaflet-marker-icon.aport{background:none;border:0}
.aport span{position:absolute;display:block;max-width:168px;background:#fffffffa;color:#17202E;border:1px solid #1E2430;border-radius:8px;padding:4px 7px;box-shadow:0 2px 8px #0003;pointer-events:none}
.aport b{display:block;font:800 11px/1.2 Inter,system-ui,sans-serif}
.aport small{display:block;margin-top:1px;font:500 10.5px/1.25 Inter,system-ui,sans-serif;color:#3A4356}
.aport .cc{display:flex;align-items:center;gap:4px;margin-top:2px;font-weight:700;color:#17202E}
.aport .cc img{height:11px;width:auto;border:1px solid #0003;flex:none}
.aport.right span{left:12px;top:0;transform:translateY(-50%)}
.aport.left span{right:12px;top:0;transform:translateY(-50%)}
.aport.above span{left:50%;bottom:12px;transform:translateX(-50%)}
.aport.below span{left:50%;top:12px;transform:translateX(-50%)}
@media (max-width:760px){
 .aport span{max-width:132px;padding:3px 6px}
 .aport b{font-size:10.5px}.aport small{font-size:10px}
}
#rdock{position:fixed;z-index:1004;top:56px;left:0;right:340px;background:#fffffffa;border-bottom:1px solid var(--line);box-shadow:0 2px 8px #00000014;padding:6px 12px 8px}
body.lines-network #rdock{height:168px;overflow:hidden}
body.lines-network #rdock.min{height:40px}
@media (max-width:760px){
 body.lines-network #rdock{height:150px}
 body.lines-network #rdock.min{height:38px}
}
#rdock[hidden]{display:none!important}
.rdocktop{display:flex;align-items:center;gap:8px;min-height:22px}
#rcount{margin:0;font-weight:800;font-size:13px;color:#17202E;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
#rcount[hidden]{display:none!important}
#rdockx{margin-left:auto;border:1px solid var(--line);background:#fff;border-radius:999px;padding:2px 10px;font-size:11px;font-weight:800;flex:none}
#rdockx[hidden]{display:none!important}
#rdist{position:static;transform:none;max-width:none;background:transparent;border:0;box-shadow:none;padding:3px 0 0;text-align:left;pointer-events:auto}
#rdist[hidden]{display:none!important}
#rdist .rn{margin:0;font-weight:800;font-size:13.5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
#rdist .rd{margin:1px 0 0;font-weight:700;font-size:12.5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
#rdist .rc{margin:2px 0 0;font-size:11px;color:#5A6270;line-height:1.3;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.rends{display:flex;gap:8px;margin-top:6px}
.rend{flex:1;min-width:0;height:48px;overflow:hidden;background:#fff;border:1px solid #1E2430;border-radius:8px;padding:3px 6px}
.rend b{display:block;font:800 10px/1.2 Inter,system-ui,sans-serif;letter-spacing:.03em;text-transform:uppercase}
.rend .cc{display:flex;align-items:center;gap:4px;margin-top:1px;font:700 11px/1.2 Inter,system-ui,sans-serif;color:#17202E;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.rend .cc img{height:11px;width:auto;border:1px solid #0003;flex:none}
.rend .an{display:block;margin-top:1px;font:500 11px/1.2 Inter,system-ui,sans-serif;color:#3A4356;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
#rdock.min #rdist .rd,#rdock.min #rdist .rc,#rdock.min .rends{display:none}
body.home #rdock,body.poster #rdock{display:none!important}
@media (max-width:760px){
 #rdock{right:0;padding:5px 8px 6px}
 #rdist .rn{font-size:12.5px}
 #rdist .rc{-webkit-line-clamp:1}
 .rends{gap:6px}
 .rend{height:46px;padding:2px 5px}
}
body.poster #map,body.poster #panel,body.poster #toggle,body.poster #search,body.poster #fleg,body.poster #info,body.poster #tslider,body.poster #hint,body.poster #cby,body.poster #idea,body.poster #start{display:none!important}
#poster{position:fixed;top:56px;bottom:28px;left:0;right:0;overflow:auto;background:var(--bg);z-index:1001;-webkit-overflow-scrolling:touch}
#poster[hidden]{display:none!important}
.pwrap{max-width:980px;margin:0 auto;padding:18px 16px 48px}
.pbadge{display:inline-block;margin:0 0 8px;background:#1A4A6B;color:#fff;font-weight:800;font-size:12px;letter-spacing:.04em;text-transform:uppercase;border-radius:999px;padding:5px 10px}
#ptitle{margin:0 0 6px;font-size:clamp(22px,4vw,34px);line-height:1.15;letter-spacing:-.02em}
.psub{margin:0 0 12px;color:var(--muted)}
.ptools{display:flex;flex-wrap:wrap;gap:8px;position:sticky;top:0;z-index:2;background:#F5F6F8ee;padding:8px 0;margin-bottom:8px}
.ptools button,.ptools a{border:1px solid var(--line);background:#fff;color:var(--ink);border-radius:999px;padding:8px 12px;font-weight:700;font-size:13px;text-decoration:none}
.ptools button.on,.ptools a.on{background:var(--bar);color:#fff;border-color:var(--bar)}
#pstage{overflow:auto;background:#fff;border:1px solid var(--line);border-radius:12px;max-height:none}
#pimg{display:block;height:auto;max-width:none;background:#fff}
#pnotes{margin-top:16px;background:#fff;border:1px solid var(--line);border-radius:12px;padding:14px 16px}
#pnotes h3{margin:16px 0 6px;font-size:16px}#pnotes h3:first-child{margin-top:0}
#pnotes p,#pnotes li{font-size:14.5px;line-height:1.45}
#pnotes a{color:#1A4A6B}
#pnotes table{width:100%;border-collapse:collapse;font-size:14px}
#pnotes td{padding:6px 4px;border-top:1px solid var(--line);vertical-align:top}
#pnotes td:last-child{text-align:right;font-variant-numeric:tabular-nums;font-weight:700}
@media (max-width:760px){
 .pwrap{padding:12px 12px 36px}
 .ptools a,.ptools button{flex:1 1 calc(50% - 8px);text-align:center}
 #pnotes td:last-child{white-space:nowrap}
}
