:root{color-scheme:light dark;--brand: #001a78;--brand-strong: #001a78;--brand-contrast: #ffffff;--accent: #001a78;--bg: #f4f6fa;--surface: #ffffff;--surface-2: #dee9fc;--text: #1a2330;--muted: #5c6b7d;--border: #d5dbe3;--danger: #d03030;--warn: #e08a00;--ok: #1f9d55;--font: "Inter", system-ui, "Segoe UI", Roboto, Arial, sans-serif;--font-mono: ui-monospace, "Cascadia Mono", Consolas, monospace;--radius: 8px;--shadow: 0 1px 3px rgb(0 26 120 / 8%);--on-brand: #ffffff}@media(prefers-color-scheme:dark){:root:not([data-theme=light]){--brand: #7d95f0;--brand-strong: #001a78;--brand-contrast: #ffffff;--bg: #12161c;--surface: #1a2029;--surface-2: #232b37;--text: #e4e9ef;--muted: #94a2b3;--border: #333e4d;--danger: #ef6060;--warn: #f0a63c;--ok: #3dc47e;--shadow: 0 1px 3px rgb(0 0 0 / 40%);--on-brand: #10182c}}:root[data-theme=dark]{--brand: #7d95f0;--brand-strong: #001a78;--brand-contrast: #ffffff;--bg: #12161c;--surface: #1a2029;--surface-2: #232b37;--text: #e4e9ef;--muted: #94a2b3;--border: #333e4d;--danger: #ef6060;--warn: #f0a63c;--ok: #3dc47e;--shadow: 0 1px 3px rgb(0 0 0 / 40%);--on-brand: #10182c}*{box-sizing:border-box}body{margin:0;font-family:var(--font);font-size:14px;color:var(--text);background:var(--bg)}a,a:visited{color:var(--brand)}.app{display:flex;flex-direction:column;height:100vh}.app-header{display:flex;flex-shrink:0;align-items:center;gap:20px;padding:10px 20px;background:var(--brand-strong);color:var(--brand-contrast);flex-wrap:wrap}.brand{display:flex;align-items:center;gap:12px;white-space:nowrap}.brand-logo{height:26px;display:block}.brand-mark{font-weight:800;letter-spacing:.18em;font-size:15px}.brand-divider{width:1px;height:22px;background:color-mix(in srgb,var(--brand-contrast) 35%,transparent)}.app-title{font-size:14px;font-weight:500;margin:0;opacity:.9}.app-header .connect-bar{margin-left:auto}.app-header button{background:color-mix(in srgb,var(--brand-contrast) 12%,transparent);border:1px solid color-mix(in srgb,var(--brand-contrast) 30%,transparent);color:var(--brand-contrast)}.app-header button:hover:not(:disabled){background:color-mix(in srgb,var(--brand-contrast) 22%,transparent)}.app-header button.btn-pending-write{background:color-mix(in srgb,var(--warn) 30%,transparent);border-color:var(--warn)}.app-header button.btn-pending-write:hover:not(:disabled){background:color-mix(in srgb,var(--warn) 45%,transparent)}.app-header input{background:color-mix(in srgb,var(--brand-contrast) 10%,transparent);border:1px solid color-mix(in srgb,var(--brand-contrast) 30%,transparent);color:var(--brand-contrast)}.app-header .device-name,.app-header .fw{color:var(--brand-contrast)}button{font:inherit;color:var(--text);background:color-mix(in srgb,var(--brand) 10%,var(--surface));border:1px solid color-mix(in srgb,var(--brand) 45%,var(--border));border-radius:6px;padding:4px 12px;cursor:pointer;transition:background .1s ease}button:hover:not(:disabled){background:color-mix(in srgb,var(--brand) 16%,var(--surface))}button:disabled{opacity:.45;cursor:default}input,select{font:inherit;color:var(--text);background:var(--surface);border:1px solid var(--border);border-radius:6px;padding:3px 8px}input:focus-visible,select:focus-visible,button:focus-visible{outline:2px solid var(--brand);outline-offset:1px}.connect-bar{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.device-name{font-weight:600;max-width:320px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.fw{opacity:.75}.flags{display:flex;gap:4px}.flag{padding:1px 7px;border-radius:10px;font-size:11px;border:1px solid transparent}.flag-off{opacity:.35;border-color:color-mix(in srgb,currentcolor 30%,transparent)}.flag-on{background:var(--ok);color:#fff}.flag-danger{background:var(--danger);color:#fff}.error-text{color:var(--danger)}.pwd-prompt{display:inline-flex;gap:4px}.tabs{display:flex;flex-shrink:0;gap:2px;align-items:center;padding:6px 20px 0;background:var(--surface);border-bottom:1px solid var(--border)}.tabs button{border:none;border-bottom:2px solid transparent;border-radius:0;background:transparent;padding:7px 14px;color:var(--muted);font-weight:500}.tabs button:hover:not(:disabled){background:transparent;color:var(--text)}.tabs button.active{color:var(--brand);border-bottom-color:var(--brand);font-weight:600}.tabs-spacer{flex:1}.app-body{display:flex;flex-direction:column;flex:1;min-height:0}.app-body-busy main{pointer-events:none;opacity:.6}.status-grid{display:grid;grid-template-columns:max-content max-content 1fr;column-gap:32px;row-gap:8px;align-items:center}.status-header{font-weight:600;font-size:13px}.status-item{display:flex;align-items:center;gap:6px}.status-count{font-size:13px;color:var(--muted)}.status-led{width:12px;height:12px;border-radius:2px;background:color-mix(in srgb,currentcolor 15%,transparent);border:1px solid var(--border);flex:none}.status-led.on{background:#e08a1e;border-color:#e08a1e}.status-signal{display:inline-flex;align-items:flex-end;gap:1px;height:12px;flex:none}.status-signal-bar{width:3px;background:color-mix(in srgb,currentcolor 15%,transparent)}.status-signal-bar.on{background:#e08a1e}.progress-overlay{position:fixed;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:center;background:#00000059;z-index:100}.progress-modal{background:var(--surface);border:1px solid var(--border);border-radius:8px;box-shadow:0 8px 32px #0000004d;padding:24px 32px;min-width:280px;text-align:center}.progress-modal h4{margin:0 0 4px;font-size:15px;font-weight:600;color:var(--brand)}.progress-modal-sub{margin:0 0 16px;font-size:12px;color:var(--muted)}.progress-modal-count{margin:8px 0 0;font-size:12px;color:var(--muted)}.progress-bar{height:8px;border-radius:4px;background:var(--border);overflow:hidden}.progress-bar-fill{height:100%;background:var(--brand);transition:width .15s ease-out}.mpf-info{align-self:center;opacity:.7;font-size:12px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:420px}main{flex:1;min-height:0;overflow:auto;padding:16px 20px}.settings-empty{opacity:.6;padding:48px;text-align:center}.group-tabs{display:flex;gap:6px;align-items:center;padding-bottom:14px;flex-wrap:wrap}.group-tabs button{border-radius:14px;padding:3px 14px}.group-tabs button.active{background:var(--surface-2);border-color:var(--brand);color:var(--brand);font-weight:400;box-shadow:0 0 0 1px var(--brand) inset}.dirty-dot{color:var(--warn);margin-left:5px;font-size:9px;vertical-align:middle}.hex-toggle{font-size:12px;color:var(--muted);display:inline-flex;align-items:center;gap:5px}.cards{display:flex;flex-direction:column;gap:14px;max-width:1200px}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);overflow:hidden}.card-body:has(>.item-names-columns){flex-direction:row;flex-wrap:wrap;gap:14px}.card-body:has(>.item-names-columns)>.item-names-columns{flex:3 1 280px}.card-body:has(>.item-names-columns)>.phrase-column{flex:2 1 200px}.card-title{margin:0;padding:9px 16px;font-size:13px;font-weight:600;text-transform:uppercase;letter-spacing:.06em;color:var(--brand);background:var(--surface-2);border-bottom:1px solid var(--border)}.card-body{padding:10px 16px 14px;display:flex;flex-direction:column;gap:8px}.form-row{display:grid;grid-template-columns:180px 1fr;gap:12px;align-items:start;padding:2px 0}.form-row-label{color:var(--muted);font-size:13px;padding-top:4px}.form-row>.record-fields:only-child,.form-row>.fields-row:only-child{grid-column:1 / -1}.fields-row{display:flex;flex-wrap:wrap;gap:6px 24px}.form-grid-entry{display:flex;flex-direction:column;gap:4px}.dsc-arm{display:flex;flex-direction:column;gap:2px}.dsc-arm-option{font-weight:600;margin-top:6px}.dsc-arm-notes{margin-left:22px}.dsc-arm-pro,.dsc-arm-con{margin:2px 0;padding-left:16px;position:relative;font-size:13px;color:var(--muted)}.dsc-arm-pro:before,.dsc-arm-con:before{position:absolute;left:0;font-weight:700}.dsc-arm-pro:before{content:"+";color:var(--ok)}.dsc-arm-con:before{content:"−";color:var(--danger)}.record-fields{display:flex;flex-wrap:wrap;gap:6px 16px;align-items:center}.record-grid{border-collapse:collapse;width:100%}.record-grid td{padding:3px 12px 3px 0;vertical-align:top;border-bottom:1px solid color-mix(in srgb,var(--border) 50%,transparent)}.record-grid tr:last-child td{border-bottom:none}.record-grid th{padding:3px 12px 3px 0;text-align:left;color:var(--muted);font-weight:600;border-bottom:1px solid var(--border)}.per-item-list{display:flex;flex-direction:column;gap:10px}.per-item-card{border:1px solid var(--border);border-radius:6px;padding:8px 12px 10px;display:flex;flex-direction:column;gap:6px}.per-item-title{margin:0 0 2px;font-size:13px;font-weight:600;color:var(--muted);text-transform:uppercase;letter-spacing:.04em}.input-function-row,.input-settings-row{display:flex;flex-wrap:wrap;align-items:center;gap:6px 14px}.help-icon{display:inline-flex;align-items:center;justify-content:center;width:16px;height:16px;border-radius:50%;background:var(--brand);color:var(--brand-contrast);font-size:11px;font-weight:700;cursor:help}.warning-icon{display:inline-flex;align-items:center;justify-content:center;width:16px;height:16px;border-radius:50%;background:#d32f2f;color:#fff;font-size:11px;font-weight:700;cursor:help}.sms-example-hint{color:var(--brand);text-decoration:underline dotted;font-size:12px;cursor:help;white-space:nowrap}.recall-patrol-sms-example{color:#00f;font-size:12px;white-space:nowrap;align-self:center}.pgm-phones-grid th{text-align:left;color:var(--muted);font-weight:600;font-size:12px;padding:2px 10px 2px 0}.pgm-phone-check{text-align:center}.pgm-phones-hint{vertical-align:middle}.remote-server{display:flex;flex-direction:column;align-items:flex-start;gap:8px}.remote-server-header{display:flex;align-items:center;gap:10px}.ping-period-input{width:7ch}.remote-server-address .field-host{width:15.6ch}.no-reaction-part{width:2.2em;text-align:center}.system-bi-info{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.system-bi-field input{width:14ch}.system-bi-register{color:var(--muted);font-size:13px}.phrase-column{display:flex;flex-direction:column;gap:8px;min-width:240px}.phrase-column-title{margin:0}.phrase-column .record-grid{table-layout:fixed}.phrase-column .record-grid td:first-child{width:40px;box-sizing:border-box}.phrase-set-default-row button{width:25ch}.sn-editable{cursor:pointer;text-decoration:underline dotted}.net-current td{font-weight:600}.net-forbidden td,.net-scan-status{color:var(--muted)}.net-scan-error{color:var(--danger)}.log-subtabs button.active{font-weight:600;text-decoration:underline}.log-time{white-space:nowrap;color:var(--muted)}.log-short{white-space:nowrap;font-weight:600}.rec-label{white-space:nowrap;color:var(--muted);width:50px}.rec-hex{font-family:var(--font-mono);font-size:11px;color:var(--muted);word-break:break-all;flex-basis:100%}.muted{color:var(--muted);font-weight:400}.field{display:inline-flex;align-items:center;gap:6px}.field-label{color:var(--muted);font-size:12px;white-space:nowrap}.field input{min-width:60px}.field-hex{font-family:var(--font-mono);font-size:12px;width:38ch}.field-hostport{display:inline-flex;align-items:center;gap:4px}.field-host{min-width:0;width:13ch}.field-hostport-sep{color:var(--muted)}.field-port{min-width:0;width:6ch}.field-hostport-warn{font-size:.85em;max-width:26ch}.field-dirty input{border-color:var(--warn);background:color-mix(in srgb,var(--warn) 10%,var(--surface))}.field-invalid input{border-color:var(--danger);background:color-mix(in srgb,var(--danger) 10%,var(--surface))}.row-dirty .rec-label{color:var(--warn)}.revert-btn{border:none;background:transparent;cursor:pointer;font-size:14px;padding:0 4px;color:var(--warn)}.delete-btn{font-size:12px;padding:1px 8px;margin-right:4px}.field-flags{display:inline-flex;gap:12px;flex-wrap:wrap}.cr-editor{display:flex;flex-wrap:wrap;gap:6px 18px;align-items:center;padding:2px 0}.cr-flag{display:inline-flex;align-items:center;gap:6px;white-space:nowrap}.cr-flag-disabled{color:var(--muted);cursor:not-allowed}.cr-enum,.cr-number{display:inline-flex;align-items:center;gap:6px}.cr-number input{width:76px}.event-log,.monitor,.raw-log{display:flex;flex-direction:column;height:100%}.event-log-toolbar,.monitor-toolbar,.raw-log-toolbar{display:flex;gap:10px;align-items:center;padding-bottom:10px}.event-log-body,.monitor-body,.raw-log-body{flex:1;overflow:auto;font-size:13px;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:6px 10px}.event-log-body table{border-collapse:collapse;width:100%}.event-log-body td{padding:1px 12px 1px 4px;white-space:pre-wrap;vertical-align:top}.ev-colored td{color:#000}.monitor-body,.raw-log-body{font-family:var(--font-mono);font-size:12px}.monitor-line,.raw-log-line{display:flex;gap:8px;white-space:pre-wrap}.raw-log-line{white-space:nowrap}.monitor-out .raw-dir,.raw-out .raw-dir{color:var(--brand)}.monitor-in .raw-dir,.raw-in .raw-dir{color:var(--ok)}.raw-time{color:var(--muted)}.raw-cmd{min-width:160px}.raw-hex{color:var(--muted)}.monitor-columns{display:flex;gap:14px;flex:1;min-height:0}.monitor-columns .monitor-body{flex:1}.monitor-side{display:flex;flex-direction:column;gap:10px;width:360px;flex-shrink:0;overflow-y:auto}.monitor-send-cmd{display:flex;gap:10px;align-items:center}.monitor-cmd-input{flex:1}.monitor-cmd-history{display:flex;flex-direction:column;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);overflow:hidden}.monitor-cmd-history-item{padding:3px 10px;font-family:var(--font-mono);font-size:12px;cursor:pointer;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.monitor-cmd-history-item:not(:last-child){border-bottom:1px solid var(--border)}.monitor-cmd-history-item:hover{background:var(--surface-2)}.monitor-state-table{display:flex;gap:24px;padding:8px 10px;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);font-family:var(--font-mono);font-size:12px}.monitor-state-col{display:flex;flex-direction:column;gap:2px}.monitor-state-col h4{margin:6px 0 2px;font-size:11px;text-transform:uppercase;letter-spacing:.04em;color:var(--muted)}.monitor-state-col h4:first-child{margin-top:0}.field input:disabled,.field select:disabled,.cr-editor input:disabled,.cr-editor select:disabled{background:var(--border);color:var(--muted);cursor:not-allowed}.mode-card{display:flex;flex-wrap:wrap;gap:3px 14px;align-items:center;padding:5px 12px;font-size:12px;background:var(--surface);border:1px solid var(--border);border-radius:6px;margin-bottom:8px}.mode-card-label{color:var(--muted);font-size:11px;text-transform:uppercase;letter-spacing:.04em}.mode-option{display:inline-flex;align-items:center;gap:5px;cursor:help}.mode-detected{color:var(--muted);font-size:11px}.mode-manuals{display:inline-flex;gap:12px;font-size:11px;margin-left:auto}.mode-language{display:inline-flex;align-items:center;gap:5px}.magellan-password-label{color:#c00;font-weight:700;font-size:12px;cursor:help}.magellan-password-row{display:flex;align-items:center;gap:8px}.magellan-password-row input{width:7ch}.user-phones{display:flex;gap:26px;align-items:flex-start;flex-wrap:wrap}.user-list{position:relative}.phone-panel-arrow{position:absolute;right:-22px;transform:translateY(-50%);font-size:26px;line-height:1;color:var(--border);transition:top .15s ease;pointer-events:none}.user-list table{margin-bottom:8px}.user-list tr{cursor:pointer}.user-panel{flex:1;min-width:320px;display:flex;flex-direction:column;gap:4px;padding:10px 12px;border:1px solid var(--border);border-radius:var(--radius)}.user-panel-flags{display:flex;flex-direction:column;gap:2px}.user-panel-header{font-size:14px;font-weight:700;padding:4px 10px;margin-bottom:4px;background:color-mix(in srgb,var(--brand) 12%,transparent);border:1px solid var(--border);border-radius:var(--radius)}.user-panel-group{margin:10px 0 2px;font-size:12px;text-transform:uppercase;letter-spacing:.04em;color:var(--muted)}.user-panel-group:first-child{margin-top:0}.periodic-row{display:inline-flex;align-items:center;gap:8px}.custom-cid{margin-top:8px}.custom-cid-summary{cursor:pointer;display:list-item}.custom-cid-range{margin:4px 0 4px 8px}.custom-cid-range-title{cursor:pointer;font-size:12px;font-weight:600}.custom-cid-category{margin:6px 0 2px 16px}.custom-cid-category-title{margin:6px 0 2px;font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.03em;color:var(--muted)}.custom-cid-item{display:flex;margin:1px 0}.item-names-columns{display:flex;flex-wrap:wrap;gap:16px 32px;align-items:flex-start}.item-names-col{display:flex;flex-direction:column;gap:16px;min-width:188px}.item-names-block{min-width:188px}.item-names-header{display:flex;align-items:center;gap:8px}.item-names-columns .record-grid td{padding:1px 8px 1px 0}.item-names-columns .field-label{display:none}.item-names-columns .field input{width:19ch}
