:root{color-scheme:light;--ink:#15283c;--muted:#566d81;--line:#dce6ed;--green:#07997d;--paper:#fff}*{box-sizing:border-box}body{margin:0;background:#f3f7fa;color:var(--ink);font:14px Sora,system-ui,sans-serif}a{color:#056f86}header{display:flex;align-items:center;justify-content:space-between;gap:20px;padding:18px max(24px,calc((100vw - 1440px)/2));background:var(--paper);border-bottom:1px solid var(--line)}.brand{display:flex;align-items:center;gap:12px;text-decoration:none;color:var(--ink);font-size:18px;font-weight:700}.brand img{width:52px;height:48px;object-fit:contain}.brand small{display:block;font-size:11px;font-weight:400;color:var(--muted);margin-top:3px}nav{display:flex;gap:20px}nav a{text-decoration:none;color:var(--muted);font-weight:600}nav [aria-current]{color:var(--green)}main{max-width:1440px;margin:auto;padding:28px 24px}.intro{display:flex;align-items:center;justify-content:space-between;gap:24px;margin-bottom:24px}.eyebrow{color:var(--green);letter-spacing:.15em;font-size:11px;font-weight:700;margin:0 0 8px}h1{font-size:clamp(24px,3vw,36px);letter-spacing:-.045em;margin:0 0 10px}h2{font-size:20px;line-height:1.35;margin:0 0 10px}p{line-height:1.65;color:var(--muted);margin:0 0 10px}#summary{font-size:13px;line-height:1.8;text-align:right;white-space:pre-line;flex-shrink:0}.workspace{display:grid;grid-template-columns:320px minmax(0,1fr);background:#fff;border:1px solid var(--line);border-radius:20px;overflow:hidden;box-shadow:0 12px 38px #243c4d0a}aside{border-right:1px solid var(--line);min-height:680px;max-height:920px;display:flex;flex-direction:column}.filters{padding:20px;border-bottom:1px solid var(--line)}label{display:block;font-size:12px;font-weight:600;margin-bottom:7px}input[type=search],select{display:block;background:#f8fafc;border:1px solid #ccdbe4;border-radius:9px;font:inherit;color:var(--ink);width:100%;padding:11px 10px;margin-top:7px}input[type=search]{margin-bottom:14px}.pair{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-bottom:10px}select{font-size:11px;padding-left:7px;padding-right:4px}.check{display:flex;gap:8px;align-items:center;margin:10px 0 16px}input[type=checkbox]{accent-color:var(--green);width:16px;height:16px}input[type=range]{accent-color:var(--green);width:100%;margin:8px 0}output{float:right;color:var(--green)}.note{font-size:10px;line-height:1.7;margin:0 0 12px}button{font:inherit;cursor:pointer}#reset{background:#edf7f5;color:#076855;border:1px solid #b4d8cf;border-radius:9px;padding:9px 12px;font-weight:600;font-size:12px}#resultCount{font-size:11px;margin:14px 0 0}#cameraList{overflow-y:auto;min-height:160px;flex:1}.camera-row{display:flex;align-items:flex-start;text-align:left;width:100%;gap:9px;background:#fff;border:0;border-bottom:1px solid #edf1f4;padding:13px 18px;color:var(--ink);font-size:12px;line-height:1.55}.camera-row:hover,.camera-row[aria-pressed=true]{background:#eaf7f4}.camera-row small{display:block;font-size:10px;color:var(--muted);margin-top:3px}.camera-row .dot{flex-shrink:0;margin-top:4px}.map-column{min-width:0}#map{height:560px;background:#dbe9ef;z-index:0}.legend{display:flex;gap:16px;flex-wrap:wrap;padding:13px 20px;border-bottom:1px solid var(--line);font-size:10px;color:var(--muted);align-items:center}.legend span{display:flex;align-items:center;gap:6px}.dot{display:inline-block;width:9px;height:9px;border-radius:50%;background:#8695a2}.online{background:#07997d}.offline{background:#df8248}.unknown{background:#8695a2}.swatch{width:18px;height:11px;display:inline-block;border:1px solid #078879;background:#d3eee5}.detail{padding:24px;min-height:190px}.detail .tag{font-size:11px;background:#edf5f6;border-radius:16px;display:inline-block;padding:5px 10px;margin-bottom:12px}.detail .open{display:inline-block;text-decoration:none;background:#07997d;color:#fff;border-radius:9px;font-weight:600;padding:11px 16px;margin-top:8px}.detail .metrics{font-size:12px;color:#345365;margin-bottom:12px}.detail .small{font-size:11px}.updated{font-size:10px;margin-top:16px}footer{display:flex;justify-content:space-between;gap:20px;max-width:1440px;margin:auto;padding:16px 24px 30px;font-size:11px;color:var(--muted)}.leaflet-container{font-family:inherit}.leaflet-tooltip{font-family:inherit;font-size:11px;max-width:230px;white-space:normal}.leaflet-control-attribution{font-size:9px}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible{outline:3px solid #18a9ca;outline-offset:3px}@media(max-width:800px){header{padding:12px 16px;flex-wrap:wrap;gap:12px}nav{font-size:11px;gap:14px}.brand{font-size:15px}.brand img{width:38px;height:36px}main{padding:22px 14px}.intro{display:block}.intro #summary{text-align:left;margin-top:14px;white-space:normal}.workspace{grid-template-columns:1fr;border-radius:14px}.map-column{grid-row:1}#map{height:49vh;min-height:310px;max-height:520px}.detail{padding:18px;min-height:150px}aside{border-right:0;border-top:1px solid var(--line);min-height:0;max-height:none}.filters{padding:16px}#cameraList{max-height:300px}.legend{padding:10px 14px;gap:10px;font-size:9px}h2{font-size:17px}.note{font-size:11px}.pair{margin-bottom:8px}footer{padding-left:16px}}
.scope{display:flex;margin:12px 0 16px;border:1px solid #b9d9cf;border-radius:10px;overflow:hidden}.scope button{flex:1;background:#fff;color:#375967;border:0;padding:10px 6px;font-size:11px;font-weight:600}.scope button[aria-pressed=true]{background:#077e6d;color:#fff}.scope button:disabled{color:#8b9ba5;background:#f5f7f8}.legend .visible{background:#00b283;border-color:#009e76}.legend .overlap{background:#006a52;border-color:#005742}.legend .hidden{background:#efb0a1;border-color:#df9686}.legend .missing{background:#eef0f1;border-color:#cdd5db}.point-camera{display:block;background:#eef7f4;border:1px solid #c6ded6;border-radius:6px;color:#08634e;padding:8px;margin-top:7px;text-align:left;font-size:11px;line-height:1.4;width:100%}.method{margin-top:18px;background:#fff;border:1px solid var(--line);border-radius:12px;padding:14px 18px;font-size:11px;line-height:1.7}.method summary{cursor:pointer;font-weight:600;color:#375967}.method p{margin:12px 0 0}#scopeText{font-size:11px;margin:10px 0 0}#map canvas{image-rendering:pixelated}.leaflet-image-layer{image-rendering:pixelated}.legend{font-size:9px}.leaflet-popup-content{font-family:inherit;font-size:12px}.leaflet-popup-content p{font-size:11px;margin:10px 0 0}aside{min-height:680px}
