:root{--navy:#003366;--navy2:#0a4a80;--teal:#1FA3C8;--teal2:#2BB3A3;--ink:#13233a;--mut:#5b6b80;--line:#dbe3ec;--bg:#f4f7fb;--real:#1b7f4b;--demo:#b86e00;--pend:#7a8594;--hi:#c62828;--mod:#e68a00;--ok:#2e7d32}
*{box-sizing:border-box}html,body{margin:0;height:100%;font-family:Inter,system-ui,Segoe UI,Helvetica,Arial,sans-serif;color:var(--ink);background:var(--bg);font-size:13px}
body{display:flex;flex-direction:column}
header{height:58px;display:flex;align-items:center;gap:14px;padding:0 14px;background:#fff;border-bottom:3px solid var(--navy)}
header .logo{height:40px}.tagline{display:flex;flex-direction:column;font-size:11px;color:var(--mut);line-height:1.3}.tagline b{color:var(--navy);font-size:12px}
#modes{margin-left:auto;display:flex;gap:4px}#modes button{border:1px solid var(--navy);background:#fff;color:var(--navy);padding:7px 11px;border-radius:6px;font-weight:600;cursor:pointer;font-size:12px}
#modes button.on,#modes button:hover{background:var(--navy);color:#fff}
.keys{display:flex;gap:6px}.k{font-size:10px;padding:3px 6px;border-radius:4px;font-weight:700}
.k.real{background:#e7f5ec;color:var(--real);border:1px solid #9fd3b3}.k.demo{color:var(--demo);border:1px dashed var(--demo);background:repeating-linear-gradient(45deg,#fff7e6,#fff7e6 5px,#ffe9c2 5px,#ffe9c2 10px)}.k.pending{color:var(--pend);border:1px dotted var(--pend);background:#f1f3f6}
main{flex:1;display:flex;min-height:0}
#left{width:250px;background:#fff;border-right:1px solid var(--line);overflow:auto;padding:8px 10px}
#left h3{font-size:11px;text-transform:uppercase;letter-spacing:.06em;color:var(--navy);margin:10px 0 6px}#left small{text-transform:none;color:var(--mut);font-weight:400}
.hl{display:flex;align-items:center;gap:8px;padding:6px;border:1px solid var(--line);border-radius:6px;margin-bottom:5px;cursor:pointer}.hl:hover{border-color:var(--teal);background:#eef8fc}
.hl .dot{width:12px;height:12px;border-radius:50%;flex:none}.hl b{display:block;font-size:12px}.hl span{font-size:10.5px;color:var(--mut)}
#gaps{margin:0;padding-left:18px}#gaps li{margin:3px 0;cursor:pointer;font-size:11.5px}#gaps li:hover{color:var(--teal)}
.sev{display:inline-block;font-size:9.5px;font-weight:700;padding:1px 5px;border-radius:3px;color:#fff}.sev.high{background:var(--hi)}.sev.moderate{background:var(--mod)}.sev.aligned{background:var(--ok)}.sev.open{background:var(--teal2)}
.lg{font-size:10.5px;font-weight:700;color:var(--mut);margin:8px 0 3px;text-transform:uppercase}
.lyr{display:flex;align-items:center;gap:5px;padding:2px 0;font-size:11.5px}.lyr input{margin:0}.lyr label{flex:1;cursor:pointer}.lyr .st{font-size:8.5px;font-weight:700;padding:1px 4px;border-radius:3px}
.st.real{background:#e7f5ec;color:var(--real)}.st.simulated,.st.demo{color:var(--demo);border:1px dashed var(--demo)}
.ib{border:1px solid var(--navy);color:var(--navy);background:#fff;border-radius:50%;width:16px;height:16px;font-size:10px;line-height:14px;padding:0;cursor:pointer;font-weight:700;font-style:italic}.ib:hover{background:var(--teal);color:#fff;border-color:var(--teal)}
#mapwrap{flex:1;position:relative;min-width:0}#map{position:absolute;inset:0}
#legend{position:absolute;right:8px;bottom:8px;z-index:500;background:rgba(255,255,255,.95);border:1px solid var(--line);border-radius:6px;padding:6px 8px;max-height:45%;overflow:auto;font-size:10.5px;max-width:230px;display:none}
#legend h4{margin:4px 0 2px;font-size:10.5px;color:var(--navy)}.sw{display:inline-block;width:11px;height:11px;border-radius:2px;margin-right:4px;vertical-align:-2px;border:1px solid rgba(0,0,0,.15)}
#maphint{position:absolute;left:50%;transform:translateX(-50%);top:8px;z-index:500;background:var(--navy);color:#fff;padding:5px 10px;border-radius:14px;font-size:11px;display:none}
#right{width:520px;background:#fff;border-left:1px solid var(--line);overflow:auto}
#panel{padding:10px 12px}
.ph{display:flex;align-items:flex-start;gap:8px}.ph h2{margin:0;font-size:17px;color:var(--navy)}.ph .sub{color:var(--mut);font-size:11.5px}
.badge{display:inline-block;font-size:10px;font-weight:700;padding:2px 6px;border-radius:4px;background:var(--navy);color:#fff;margin-right:4px}.badge.open{background:var(--teal2)}.badge.takeover{background:#7b1fa2}
.tabs{display:flex;gap:2px;border-bottom:2px solid var(--navy);margin:8px 0}.tabs button{border:0;background:#eef2f7;padding:6px 9px;font-size:11.5px;font-weight:600;color:var(--navy);cursor:pointer;border-radius:5px 5px 0 0}.tabs button.on{background:var(--navy);color:#fff}
.card{border:1px solid var(--line);border-radius:7px;padding:8px;margin:6px 0;background:#fff;position:relative}
.card.real{border-left:4px solid var(--real)}
.card.demo{border:1.5px dashed var(--demo);background:repeating-linear-gradient(45deg,#fffaf0,#fffaf0 8px,#fff1d6 8px,#fff1d6 16px);padding-top:18px}
.card.demo::before{content:'DEMO / ILLUSTRATIVE';position:absolute;top:0;right:0;background:var(--demo);color:#fff;font-size:9px;font-weight:800;padding:2px 7px;border-radius:0 6px 0 6px;letter-spacing:.05em}
.card.pending{border:1.5px dotted var(--pend);background:#f5f6f8;color:var(--pend)}
.card.pending::before{content:'PENDING';position:absolute;top:0;right:0;background:var(--pend);color:#fff;font-size:9px;font-weight:800;padding:2px 7px;border-radius:0 6px 0 6px}
.card h4{margin:0 0 6px;font-size:12px;color:var(--navy)}
.cite{font-size:9.5px;color:var(--mut);margin-top:4px}.cite a{color:var(--teal)}
.grid2{display:grid;grid-template-columns:1fr 1fr;gap:6px}.grid3{display:grid;grid-template-columns:1fr 1fr 1fr;gap:6px}
.stat{border:1px solid var(--line);border-radius:6px;padding:6px;position:relative;background:#fff}
.stat.real{border-left:3px solid var(--real)}.stat.demo{border:1.5px dashed var(--demo);background:repeating-linear-gradient(45deg,#fffaf0,#fffaf0 6px,#fff1d6 6px,#fff1d6 12px)}.stat.pending{border:1.5px dotted var(--pend);background:#f5f6f8}
.stat .v{font-size:15px;font-weight:800;color:var(--navy)}.stat.pending .v{color:var(--pend);font-style:italic}.stat .kk{font-size:10px;color:var(--mut);text-transform:uppercase;letter-spacing:.03em}.stat .ss{font-size:10.5px}
.stat .tag{position:absolute;top:3px;right:4px;font-size:8px;font-weight:800;padding:1px 4px;border-radius:3px}.stat.real .tag{background:#e7f5ec;color:var(--real)}.stat.demo .tag{background:var(--demo);color:#fff}.stat.pending .tag{background:var(--pend);color:#fff}
.bar{display:flex;height:14px;border-radius:3px;overflow:hidden;margin:3px 0}.bar i{display:block;height:100%}
.brow{display:flex;align-items:center;gap:6px;font-size:11px;margin:2px 0}.brow .lab{width:140px;flex:none;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.brow .track{flex:1;background:#eef2f7;border-radius:3px;height:10px}.brow .track i{display:block;height:100%;border-radius:3px}.brow .num{width:62px;text-align:right;font-variant-numeric:tabular-nums}
.gapbox{border-radius:8px;padding:9px;margin:8px 0;color:#fff}.gapbox.high{background:linear-gradient(90deg,#b71c1c,#d84315)}.gapbox.moderate{background:linear-gradient(90deg,#e65100,#f9a825)}.gapbox.aligned{background:linear-gradient(90deg,#1b5e20,#2e7d32)}
.gapbox .t{font-size:14px;font-weight:800}.gapbox .sc{float:right;font-size:22px;font-weight:800;line-height:1}.gapbox p{margin:5px 0 0;font-size:11.5px}
table.t{width:100%;border-collapse:collapse;font-size:11px}table.t th,table.t td{border-bottom:1px solid var(--line);padding:3px 4px;text-align:left;vertical-align:top}table.t th{color:var(--navy);font-size:10.5px;background:#f3f6fa}
.chip{display:inline-block;font-size:9.5px;padding:1px 5px;border-radius:9px;background:#eaf6fb;color:#0b5f7a;border:1px solid #bfe3ef;margin:1px 2px 1px 0}
.chip.demo{background:#fff4e0;color:var(--demo);border:1px dashed var(--demo)}.chip.unv{background:#fdecea;color:#b71c1c;border:1px solid #f5b7b1;font-weight:700}
.comp{display:flex;flex-wrap:wrap;gap:4px;align-items:center}.comp .cb{border:1px solid var(--line);border-radius:14px;padding:3px 8px;font-size:10.5px;background:#fff;cursor:pointer}.comp .cb.off{opacity:.4}.comp .cb b{color:var(--navy)}
footer{background:#fff;border-top:1px solid var(--line)}
#prov{display:flex;gap:4px;overflow-x:auto;padding:5px 8px;white-space:nowrap}
.pc{border:1px solid var(--line);border-radius:12px;padding:2px 8px;font-size:10px;cursor:pointer;background:#f7f9fc;flex:none}.pc b{color:var(--navy)}.pc .lc{margin-left:4px;font-weight:700;color:var(--real)}.pc.demo .lc,.pc.simulated .lc{color:var(--demo)}.pc.on{background:var(--navy);color:#fff;border-color:var(--navy)}.pc.on b,.pc.on .lc{color:#bfe9f5}
.foot{font-size:10.5px;color:var(--mut);padding:3px 10px 5px}.foot b{color:var(--navy)}
#modal{position:fixed;inset:0;background:rgba(0,20,45,.45);z-index:2000;display:flex;align-items:center;justify-content:center}#modal.hidden{display:none}
.mbox{background:#fff;border-radius:10px;max-width:760px;width:92%;max-height:86vh;overflow:auto;padding:16px 18px;position:relative;border-top:5px solid var(--navy)}.mbox .x{position:absolute;right:8px;top:6px;border:0;background:none;font-size:22px;cursor:pointer;color:var(--navy)}
.mbox h3{margin:0 0 8px;color:var(--navy)}.kv{display:grid;grid-template-columns:130px 1fr;gap:4px 10px;font-size:12px}.kv b{color:var(--navy)}
.pin{background:var(--navy);color:#fff;border:2px solid #fff;border-radius:50%;box-shadow:0 1px 4px rgba(0,0,0,.4);display:flex;align-items:center;justify-content:center;font-weight:800;font-size:12px}
.leaflet-tooltip.tcard{background:#fff;border:1px solid var(--navy);border-left:4px solid var(--teal);border-radius:6px;padding:4px 7px;font-size:10.5px;color:var(--ink);box-shadow:0 2px 6px rgba(0,0,0,.2)}.tcard b{color:var(--navy);font-size:11.5px}
.note{font-size:11px;background:#eef8fc;border-left:3px solid var(--teal);padding:6px 8px;border-radius:4px;margin:6px 0}
details.exp summary{cursor:pointer;font-weight:700;color:var(--navy);font-size:12px}
.cmp{display:grid;grid-template-columns:repeat(4,1fr);gap:8px}
.tiles-grey{filter:grayscale(1) brightness(1.08) contrast(.92)}
#map.zoomed .leaflet-tooltip.perm{display:none}
.stack .card{margin:6px 0}
#compbar{position:absolute;top:8px;left:54px;z-index:600;background:rgba(255,255,255,.96);border:1px solid var(--line);border-left:4px solid #7b1fa2;border-radius:6px;padding:4px 8px;font-size:10.5px;max-width:calc(100% - 130px);display:none}
#compbar b.t{color:#7b1fa2;margin-right:6px}#compbar .cb{display:inline-block;border:1px solid var(--line);border-radius:10px;padding:1px 7px;margin:1px 2px;cursor:pointer;background:#fff}#compbar .cb.off{opacity:.35;text-decoration:line-through}
.post{border:1px solid var(--line);border-radius:8px;padding:8px;margin:6px 0;background:#fbfcfe;white-space:pre-wrap;font-size:11.5px}.post .ch{font-weight:800;color:var(--navy);font-size:11px;display:flex;justify-content:space-between}.post .ch i{font-weight:400;color:var(--mut);font-style:normal}
.draft{display:inline-block;background:#fdecea;color:#b71c1c;font-weight:800;font-size:9px;padding:1px 6px;border-radius:3px;margin-left:6px}
.foot a{color:var(--teal);font-weight:600}
.leaflet-interactive:focus,.leaflet-container path:focus{outline:none}
.post .ch{gap:10px}.post .ch i{text-align:right}
#right{transition:width .2s}#right.wide{width:800px}
.tw{overflow-x:auto}
table.t code{font-size:9.5px}
