/* All operator styling is confined to its embedded root. */
.camp-operations{--ops-blue:#2865dc;--ops-text:#21334c;--ops-muted:#65758a;--ops-line:#e3eaf3;color:var(--ops-text);font:14px/1.65 -apple-system,BlinkMacSystemFont,"Segoe UI","PingFang SC","Microsoft YaHei",sans-serif;width:100%;min-width:0}
.camp-operations *{box-sizing:border-box}.camp-operations [hidden]{display:none!important}.camp-operations h1,.camp-operations h2,.camp-operations p{margin:0}.camp-operations h1{font-size:25px;line-height:1.35}.camp-operations h2{font-size:17px;line-height:1.5}.camp-operations button,.camp-operations input,.camp-operations textarea,.camp-operations select{font:inherit}.camp-operations button,.camp-operations a{-webkit-tap-highlight-color:transparent}.camp-operations a{color:var(--ops-blue);text-decoration:none}.camp-operations button:focus-visible,.camp-operations a:focus-visible,.camp-operations input:focus-visible,.camp-operations textarea:focus-visible,.camp-operations select:focus-visible,.camp-operations summary:focus-visible{outline:3px solid #85b0ff;outline-offset:3px}.camp-operations button:disabled{opacity:.48;cursor:not-allowed}
.camp-operations .ops-heading{display:flex;align-items:flex-start;gap:13px;margin-bottom:20px}.camp-operations .ops-heading p{margin-top:6px;color:var(--ops-muted);font-size:13px;line-height:1.8}.camp-operations .ops-mark,.camp-operations .ops-module-icon{display:grid;place-items:center;flex-shrink:0;width:43px;height:43px;border-radius:12px;background:#edf3ff;color:var(--ops-blue)}.camp-operations .ops-mark{margin-top:1px}.camp-operations .ops-card{background:#fff;border:1px solid var(--ops-line);border-radius:16px;padding:22px;margin-bottom:18px;min-width:0;box-shadow:0 3px 12px #263c5f03}.camp-operations .ops-card>p{margin-top:10px;color:var(--ops-muted);line-height:1.85}.camp-operations .ops-card-title{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:14px}.camp-operations .ops-card-title h2{flex:1;min-width:90px}.camp-operations .ops-note{font-size:12px;color:var(--ops-muted);line-height:1.85;margin-top:12px!important}.camp-operations .ops-subtle{display:block;font-size:11px;color:#7888a0;margin-top:8px}
.camp-operations .ops-button{min-height:44px;display:inline-flex;align-items:center;justify-content:center;gap:7px;padding:9px 14px;border:1px solid #dce4ef;border-radius:9px;background:#fff;color:#48617e;font-size:13px;font-weight:600;line-height:1.5;cursor:pointer;text-align:center}.camp-operations .ops-button:hover:not(:disabled){background:#f4f7fc;border-color:#b9cde9}.camp-operations .ops-primary{background:var(--ops-blue);border-color:var(--ops-blue);color:#fff}.camp-operations .ops-primary:hover:not(:disabled){background:#2055c0}.camp-operations .ops-danger{color:#a94242;border-color:#eccfcf}.camp-operations .ops-quiet{border-color:transparent;background:transparent}.camp-operations .ops-button svg{flex-shrink:0}.camp-operations .ops-actions{display:flex;flex-wrap:wrap;align-items:center;gap:9px;margin-top:17px}.camp-operations .ops-notice{padding:13px 16px;border:1px solid #d9e5f8;background:#eef5ff;color:#3d638e;border-radius:12px;line-height:1.85;margin-bottom:18px;overflow-wrap:anywhere}.camp-operations .ops-notice p{font-size:12px;margin-top:6px}.camp-operations .ops-notice>div{display:flex;flex-wrap:wrap;gap:8px;margin-top:12px}.camp-operations .ops-warning{background:#fff7e6;border-color:#eddfbb;color:#7a5a25}
.camp-operations .ops-module-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px}.camp-operations .ops-module{display:flex;align-items:flex-start;gap:13px;margin:0;color:var(--ops-text)}.camp-operations .ops-module>div{flex:1;min-width:0}.camp-operations .ops-module>svg{color:#8da0b8;flex-shrink:0;margin-top:8px}.camp-operations .ops-module h2{font-size:15px}.camp-operations .ops-module p{color:var(--ops-muted);font-size:12px;margin-top:5px;line-height:1.85}.camp-operations .ops-module:hover{border-color:#b9cdef;background:#fafcff}.camp-operations .ops-offline .ops-card-title{align-items:flex-start}.camp-operations .ops-offline>.ops-button{margin-top:17px}.camp-operations .ops-metrics{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;margin-bottom:18px}.camp-operations .ops-metric{background:#fff;border:1px solid var(--ops-line);border-radius:13px;padding:16px;min-width:0}.camp-operations .ops-metric>span{display:block;color:var(--ops-muted);font-size:12px}.camp-operations .ops-metric>strong{display:block;font-size:21px;margin:9px 0;line-height:1.4}.camp-operations .ops-metric>p{font-size:11px;color:#7b8ba0;line-height:1.75}.camp-operations .ops-badge{display:inline-flex;align-items:center;min-height:26px;padding:3px 8px;border-radius:6px;font-size:12px;font-weight:500;line-height:1.5;white-space:normal}.camp-operations .ops-ok{background:#eaf6ee;color:#3a7852}.camp-operations .ops-bad{background:#fff0ef;color:#ac4848}.camp-operations .ops-unknown{background:#f0f3f8;color:#78869a}
.camp-operations .ops-two-column{display:grid;grid-template-columns:minmax(0,1.15fr) minmax(285px,.85fr);gap:18px;align-items:start}.camp-operations .ops-kv{display:grid;grid-template-columns:auto minmax(0,1fr);gap:10px 18px;margin:14px 0;font-size:13px}.camp-operations .ops-kv dt{color:var(--ops-muted)}.camp-operations .ops-kv dd{margin:0;overflow-wrap:anywhere}.camp-operations .ops-details{border-top:1px solid var(--ops-line);padding-top:16px;margin-top:18px}.camp-operations .ops-details summary{cursor:pointer;font-weight:600;min-height:32px}.camp-operations .ops-details>p{font-size:13px;line-height:1.9;margin:10px 0;color:var(--ops-muted)}.camp-operations .ops-details form{margin-top:15px}.camp-operations form label{display:block;color:#3b5272;font-size:13px;font-weight:600;margin:16px 0 7px}.camp-operations form input,.camp-operations form textarea,.camp-operations form select{display:block;width:100%;min-width:0;border:1px solid #dce4ee;border-radius:9px;padding:11px 12px;min-height:45px;background:#fff;color:#263b58;line-height:1.5}.camp-operations form textarea{resize:vertical;min-height:90px;overflow-wrap:anywhere}.camp-operations form input::placeholder,.camp-operations form textarea::placeholder{color:#8b9ab0}.camp-operations form>button{margin-top:16px}.camp-operations .ops-row{display:flex;align-items:center;gap:13px;padding:14px 0;border-bottom:1px solid var(--ops-line);min-width:0}.camp-operations .ops-row:last-child{border-bottom:0}.camp-operations .ops-row>div{flex:1;min-width:0}.camp-operations .ops-row strong{display:block;font-size:14px;overflow-wrap:anywhere}.camp-operations .ops-row small{display:block;color:var(--ops-muted);font-size:12px;margin-top:4px;overflow-wrap:anywhere}.camp-operations .ops-row code{display:block;word-break:break-all;font-size:11px;color:#6c7f99;margin-top:4px}.camp-operations .ops-row .ops-button{flex-shrink:0;padding:8px 11px;font-size:12px}.camp-operations .ops-route-list{max-height:470px;overflow-y:auto;overscroll-behavior:contain;padding-right:3px}.camp-operations .ops-empty{padding:25px 6px;text-align:center;font-size:13px;color:var(--ops-muted)}
.camp-operations .ops-log{background:#f3f6fa;border:1px solid #e7edf4;border-radius:10px;padding:13px 15px;color:#526882;font:12px/1.8 ui-monospace,SFMono-Regular,Consolas,monospace;white-space:pre-wrap;overflow-wrap:anywhere;max-height:310px;overflow:auto;margin:14px 0}.camp-operations .ops-login-status{background:#f5f8ff;border:1px solid #e2eaf8;border-radius:12px;margin-top:18px;padding:17px}.camp-operations .ops-login-status>strong{font-size:14px}.camp-operations .ops-login-status p{font-size:12px;color:var(--ops-muted);margin:9px 0}.camp-operations .ops-device-code{display:block;font-size:22px;letter-spacing:2px;font-weight:700;padding:12px 0;overflow-wrap:anywhere}.camp-operations .ops-help ol{padding-left:21px;line-height:1.95;color:#526882}.camp-operations .ops-help li{margin:10px 0}.camp-operations .ops-dialog{border:1px solid var(--ops-line);border-radius:17px;padding:0;background:#fff;color:var(--ops-text);width:min(500px,calc(100% - 32px));max-height:calc(100dvh - 40px);overflow-y:auto;box-shadow:0 20px 70px #20365233}.camp-operations .ops-dialog::backdrop{background:#233a5766;backdrop-filter:blur(2px)}.camp-operations .ops-dialog-content{padding:25px}.camp-operations .ops-dialog-content>p{color:var(--ops-muted);font-size:14px;line-height:1.95;margin-top:14px;overflow-wrap:anywhere}.camp-operations .ops-dialog-content .ops-actions{justify-content:flex-end;margin-top:21px}
.camp-operations .ops-route-actions{margin:0 0 16px}.camp-operations .ops-route-counts{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;margin:12px 0}.camp-operations .ops-route-counts>span{background:#f4f7fb;border:1px solid #e7edf5;border-radius:9px;padding:9px 10px;color:var(--ops-muted);font-size:12px}.camp-operations .ops-route-counts b{display:block;margin-top:2px;font-size:20px;line-height:1.4;color:var(--ops-text)}.camp-operations .ops-probe-info{margin:14px 0;padding:12px 14px;background:#f3f7ff;border:1px solid #e0e9fa;border-radius:10px;overflow-wrap:anywhere}.camp-operations .ops-probe-info strong{font-size:13px}.camp-operations .ops-probe-info p{font-size:12px;color:var(--ops-muted);margin-top:5px}.camp-operations .ops-probe-info code{font-size:11px;word-break:break-all}.camp-operations .ops-route-warnings{margin:12px 0;padding:12px 14px 12px 29px;border-radius:10px;background:#fff7e6;color:#7a5a25;font-size:12px;overflow-wrap:anywhere}.camp-operations .ops-route-warnings li+li{margin-top:5px}.camp-operations .ops-route-result{align-items:flex-start}.camp-operations .ops-route-result>.ops-button,.camp-operations .ops-route-result>.ops-badge{margin-top:2px;flex-shrink:0}.camp-operations .ops-route-name{display:flex;flex-wrap:wrap;align-items:center;gap:7px}.camp-operations .ops-route-name strong{flex:1;min-width:100px}.camp-operations .ops-route-delay{font-size:14px;font-weight:600;margin-top:7px;color:#3d5878}.camp-operations .ops-route-reason{margin-top:7px;font-size:12px;color:var(--ops-muted);line-height:1.7;overflow-wrap:anywhere}.camp-operations .ops-probe-pending{display:flex;align-items:flex-start;gap:9px;margin:12px 0;padding:12px 14px;background:#eef5ff;color:#3d638e;border:1px solid #d9e5f8;border-radius:10px;font-size:12px}.camp-operations .ops-probe-pending svg{flex-shrink:0;margin-top:2px}
@media(max-width:959px){.camp-operations .ops-metrics{grid-template-columns:repeat(2,minmax(0,1fr))}.camp-operations .ops-two-column{grid-template-columns:1fr}.camp-operations .ops-two-column>.ops-card{margin:0}.camp-operations .ops-two-column{margin-bottom:18px}.camp-operations .ops-module-grid{gap:12px}.camp-operations .ops-module{padding:17px}}
@media(max-width:599px){.camp-operations h1{font-size:22px}.camp-operations .ops-heading{gap:10px;margin-bottom:17px}.camp-operations .ops-mark{width:38px;height:38px;border-radius:10px}.camp-operations .ops-heading p{font-size:12px}.camp-operations .ops-card{padding:18px;border-radius:13px}.camp-operations .ops-module-grid{grid-template-columns:1fr}.camp-operations .ops-module{padding:16px}.camp-operations .ops-module-icon{width:37px;height:37px}.camp-operations .ops-module h2{font-size:15px}.camp-operations .ops-metric{padding:13px}.camp-operations .ops-metric>strong{font-size:19px}.camp-operations .ops-metrics{gap:9px}.camp-operations .ops-kv{gap:10px 12px;font-size:12px}.camp-operations .ops-dialog-content{padding:21px}.camp-operations .ops-actions{gap:8px}.camp-operations .ops-button{padding:9px 12px}.camp-operations .ops-card-title{gap:9px}.camp-operations .ops-row{gap:10px}}
/* Keep all route rows in the document scroll flow; never trap wheel/touch at an inner edge. */
.camp-operations .ops-route-list{max-height:none;overflow:visible;overscroll-behavior:auto;padding-right:0}
@media(prefers-reduced-motion:reduce){.camp-operations *,.camp-operations *::before,.camp-operations *::after{scroll-behavior:auto!important;transition:none!important}}
