/* Operations uses the same theme tokens and map controls as the public site. */
html body.p20-app .ops,html body.p20-app .ops-auth{background:transparent;color:var(--ink);width:100%;max-width:1440px;padding:18px clamp(10px,2vw,24px) 36px;box-sizing:border-box}
html body.p20-app .ops{gap:14px}
html body.p20-app .ops :is(h1,h2,p){margin:0}
html body.p20-app .ops-top{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:12px 20px;padding:18px 20px;border:1px solid var(--line);border-radius:20px;background:var(--surface);color:var(--ink);box-shadow:none;min-width:0}
.ops-eyebrow{font-size:11px;font-weight:600;color:var(--muted);letter-spacing:.03em;margin-bottom:5px}
html body.p20-app .ops-title h1{font:700 clamp(24px,3vw,32px)/1.4 var(--f-body);color:var(--ink);letter-spacing:0}
html body.p20-app .ops-title span{line-height:1.6;color:var(--muted)}
.ops-connection{display:flex;flex-direction:column;gap:4px;justify-content:center;text-align:right;font-size:11px;color:var(--muted)}
html body.p20-app .ops-live.on{color:#137747}.ops-connection .ops-live{font-weight:600;font-size:12px}
html body.p20-app .ops-tools{grid-column:1/-1;display:flex;flex-wrap:wrap;align-items:flex-start;width:100%;gap:8px;border-top:1px solid var(--line);padding-top:12px;min-width:0}
html body.p20-app .ops :is(.ops-btn,.ops-more>summary){font:600 12px/1.6 var(--f-body);min-height:40px;box-sizing:border-box;padding:8px 12px;color:var(--ink);border:1px solid var(--line);background:var(--surface-2);border-radius:11px;text-align:center;white-space:normal;overflow-wrap:anywhere;box-shadow:none;justify-content:center}
html body.p20-app .ops .ops-btn[hidden]{display:none!important}
html body.p20-app .ops .ops-btn[aria-pressed=true],html body.p20-app .ops .ops-btn.primary{background:#006f82;color:#fff;border-color:#006f82}
html body.p20-app .ops .ops-btn.go{background:#c81f3e;color:#fff;border-color:#c81f3e}
html body.p20-app .ops .ops-btn.call{color:#12613c;background:#e5f6ed;border-color:#9acbb3}
html body.p20-app .ops .ops-btn.nav{color:#684516;background:#fff1d9;border-color:#d5ba85}
.ops-more{flex:1;min-width:0}.ops-more>summary{cursor:pointer;width:fit-content;list-style:revert!important}.ops-more>summary::marker{color:var(--muted)}
.ops-more-body{display:flex;gap:8px;flex-wrap:wrap;padding-top:10px}.ops-more-body>*{flex:0 1 auto;max-width:100%}
html body.p20-app .ops-stats{gap:8px}
html body.p20-app .ops-stats .st{padding:12px;border-radius:14px;gap:5px;line-height:1.5;background:var(--surface);color:var(--muted);min-width:0;font-size:11px}
html body.p20-app .ops-stats .st b{font:700 26px/1.2 var(--f-body);color:var(--ink)}
html body.p20-app .ops-stats .st.hot b{color:#d12f46}html body.p20-app .ops-stats .st.ok b{color:#137747}
html body.p20-app .ops-grid{grid-template-columns:minmax(0,1.2fr) minmax(340px,1fr);gap:14px}
html body.p20-app .ops-mapwrap{position:sticky;top:48px;height:auto;min-height:0;overflow:visible;background:var(--surface);border:1px solid var(--line);border-radius:18px;min-width:0}
.ops-maphead{display:flex;justify-content:space-between;align-items:center;gap:10px;padding:13px 14px}
html body.p20-app .ops-maphead h2{font:700 16px/1.5 var(--f-body);color:var(--ink)}
.ops-maphead span,.ops-maphead>a{font-size:11px;color:var(--muted)}.ops-maphead>a{color:var(--accent);white-space:nowrap;text-decoration:none;padding:8px 0}
.ops-mapcanvas{height:clamp(400px,62dvh,680px);position:relative;min-width:0}
html body.p20-app .ops-mapwrap:has(.kh-map-fullscreen-fallback){position:static}
html body.p20-app .ops-mapnote{font-size:10px;line-height:1.7;color:var(--muted);padding:10px 14px}
html body.p20-app #opsMap{border-radius:0;overflow:hidden;font-family:var(--f-body)}
html body.p20-app #opsMap.kh-map-fullscreen-fallback{z-index:9500!important}
html body.p20-app #opsMap .leaflet-control-layers,html body.p20-app #opsMap .leaflet-control-zoom{display:none}
html body.p20-app #opsMap .kh-map-tools-body>.kh-lens-tools{max-width:100%;padding:0;background:transparent;color:inherit;border:0;margin:0;box-shadow:none}
html body.p20-app #opsMap .kh-lens-row{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:6px;overflow:visible;max-width:100%}
html body.p20-app #opsMap .kh-lens-row>*{width:100%;max-width:100%;min-width:0;font-size:11px;white-space:normal;background:var(--surface);color:var(--ink);border-color:var(--line);min-height:40px;padding:6px}
html body.p20-app #opsMap .kh-lens-row>.kh-lens-traffic{background:#bd2445;color:#fff}
html body.p20-app #opsMap .kh-lens-layers{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:4px}
html body.p20-app #opsMap .kh-lens-check{font-size:11px;color:inherit;min-height:36px}
html body.p20-app #opsMap :is(.kh-lens-note,.kh-lens-counts,.kh-area-detail-note){color:inherit;max-width:100%;font-size:10px;line-height:1.6}
html body.p20-app #opsMap .kh-ddpm-legend{background:transparent;color:inherit;border:0;border-radius:0;box-shadow:none;max-width:100%}
html body.p20-app #opsMap .kh-ddpm-legend summary{font-size:12px;padding:7px 0;min-height:34px}
html body.p20-app #opsMap .kh-ddpm-key{max-height:none;background:transparent;color:inherit;padding:8px 0;font-size:11px}
html body.p20-app #opsMap .kcm-pin{width:28px;height:28px;margin:4px;border:0;background:transparent;box-shadow:none}
html body.p20-app #opsMap .kh-shared-cctv-icon{width:26px;height:26px;object-fit:contain;filter:drop-shadow(0 1px 2px #000)}
html body.p20-app #opsMap .kt-map-tag{top:27px;font-size:8px;background:transparent;color:#fff;text-shadow:0 1px 2px #000,1px 0 2px #000,-1px 0 2px #000}
html body.p20-app .ops-panel{border:1px solid var(--line);background:var(--surface);color:var(--ink);padding:12px;border-radius:18px;gap:12px;box-shadow:none}
html body.p20-app .ops-tabs{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));padding:0;background:transparent;gap:6px;overflow:visible}
html body.p20-app .ops-tabs button{font:600 11px/1.6 var(--f-body);border:1px solid var(--line);border-radius:10px;background:var(--surface-2);color:var(--muted);padding:8px 4px;white-space:normal;min-width:0;min-height:42px;box-shadow:none}
html body.p20-app .ops-tabs button[aria-selected=true]{background:#006f82;color:#fff;border-color:#006f82}
html body.p20-app .ops-tabs .n{font-size:10px;padding:0 4px}
html body.p20-app .ops-filters{display:grid;grid-template-columns:1fr;gap:8px}
html body.p20-app .ops :is(input:not([type=checkbox]),select){font:400 14px/1.5 var(--f-body);min-height:42px;padding:9px 11px;background:var(--surface-2);color:var(--ink);border:1px solid var(--line);border-radius:10px;min-width:0;box-sizing:border-box;max-width:100%}
html body.p20-app .ops input::placeholder{color:var(--muted);opacity:1}
html body.p20-app .ops-filters label{font-size:12px;color:var(--muted);display:flex;align-items:center;gap:8px;min-height:34px}
.ops input[type=checkbox]{width:17px;height:17px;accent-color:#00869a;flex:none}
html body.p20-app .ops-list .empty{background:var(--surface-2);color:var(--ink);padding:28px 14px;min-height:160px;border:1px dashed var(--line);border-radius:12px;font-size:13px}
html body.p20-app .ops-list .empty span{color:var(--muted);font-size:12px}
html body.p20-app .ops :is(.ops-card,.ops-member){background:var(--surface-2);color:var(--ink);border-color:var(--line);box-shadow:none}
html body.p20-app .ops .ops-card.sel{outline:2px solid #00a9ba;outline-offset:1px}
html body.p20-app .ops .oc-body .place{font:700 16px/1.6 var(--f-body);color:var(--ink)}
html body.p20-app .ops .oc-body .desc{font-size:13px;line-height:1.7}
html body.p20-app .ops :is(.oc-contact,.oc-assign,.oc-status)>*{max-width:100%;min-width:0}
html body.p20-app .ops .ops-teamhead{font-size:12px;line-height:1.7}
html body.p20-app .ops-member{grid-template-columns:10px minmax(0,1fr) auto;font-size:13px;gap:8px}
html body.p20-app .ops-member .ops-btn{grid-column:2/-1}
html body.p20-app .ops-mycontact{background:var(--surface);color:var(--ink);border:1px solid #278968;padding:16px;border-radius:16px}
html body.p20-app .ops-mycontact>small{color:var(--muted);line-height:1.7}
html body.p20-app .ops-mycontact label{flex:1 1 200px;min-width:0}
html body.p20-app .ops-mycontact .row{flex-wrap:wrap;min-width:0}
html body.p20-app .ops :is(button,a,summary,input,select):focus-visible{outline:3px solid #f2b345;outline-offset:2px}
html body.p20-app .ops-toast{bottom:calc(100px + env(safe-area-inset-bottom,0px));background:var(--ink);color:var(--bg)}
html body.p20-app .ops-auth .auth-card{background:var(--surface)!important;color:var(--ink)!important;border-color:var(--line)}
html body.p20-app .ops-auth .auth-head h1{color:var(--ink);font:700 28px/1.5 var(--f-body);margin:0}
html body.p20-app .ops-auth :is(.auth-more summary,.auth-or,.auth-note,.auth-foot){color:var(--muted)}
html body.p20-app .ops-auth .auth-form input:not([type=checkbox]){background:var(--surface-2);color:var(--ink);border-color:var(--line);min-width:0;width:100%;box-sizing:border-box}
html[data-p20-theme=dark] body.p20-app .ops :is(.ops-live.on,.ops-stats .st.ok b){color:#69dda8}
html[data-p20-theme=dark] body.p20-app .ops-stats .st.hot b{color:#ff7587}
html[data-p20-theme=dark] body.p20-app .ops .ops-btn.call{background:#163d32;color:#a6f4cc;border-color:#478870}
html[data-p20-theme=dark] body.p20-app .ops .ops-btn.nav{background:#433922;color:#ffe0a1;border-color:#927c4e}
html[data-p20-theme=dark] body.p20-app .ops .ops-btn.auto-on{background:#163d32;color:#a6f4cc;border-color:#478870}
@media(max-width:960px){html body.p20-app .ops-grid{grid-template-columns:1fr}html body.p20-app .ops-mapwrap{position:relative;top:auto}html body.p20-app .ops-stats{grid-template-columns:repeat(3,minmax(0,1fr))}.ops-mapcanvas{height:clamp(360px,55dvh,520px)}}
@media(max-width:540px){html body.p20-app .ops{padding:12px 10px 28px;gap:10px}html body.p20-app .ops-top{padding:14px;grid-template-columns:minmax(0,1fr);gap:10px}.ops-connection{text-align:left;gap:2px}html body.p20-app .ops-tools{gap:6px}html body.p20-app .ops-stats .st{padding:9px 7px;font-size:10px}html body.p20-app .ops-stats .st b{font-size:23px}html body.p20-app .ops-panel{padding:10px}.ops-maphead{padding:11px 10px}.ops-maphead>a{font-size:10px}html body.p20-app .ops-maphead h2{font-size:15px}.ops-more-body{display:grid;grid-template-columns:1fr}.ops-more[open]{flex-basis:100%}.ops-mapcanvas{height:390px;max-height:65dvh;min-height:340px}html body.p20-app .ops input:not([type=checkbox]),html body.p20-app .ops select{font-size:16px}html body.p20-app #opsMap .kh-map-tools-body select{font-size:16px}}
@media(prefers-reduced-motion:reduce){.ops-pin.urgent,.ops-alert,.ops-unlock{animation:none!important}}
