.modal-overlay[data-v-9f7d80c3]{position:fixed;inset:0;background:#0009;display:flex;align-items:center;justify-content:center;z-index:1000}.modal-card[data-v-9f7d80c3]{background:var(--color-surface);border:1px solid var(--color-border);border-top:1px solid var(--color-accent-line);border-radius:10px;padding:1.5rem;width:360px;max-width:calc(100vw - 2rem);box-shadow:0 24px 60px #0000008c}.modal-header[data-v-9f7d80c3]{display:flex;align-items:center;justify-content:space-between;margin-bottom:1rem}.modal-header h3[data-v-9f7d80c3]{margin:0;color:var(--color-text);font-family:var(--font-display);font-size:1rem}.close-btn[data-v-9f7d80c3]{background:none;border:none;color:var(--color-text-dim);font-size:1.4rem;line-height:1;cursor:pointer;padding:0 .3rem}.close-btn[data-v-9f7d80c3]:hover{color:var(--color-text)}form[data-v-9f7d80c3]{display:flex;flex-direction:column;gap:.9rem}label[data-v-9f7d80c3]{display:flex;flex-direction:column;gap:.3rem;font-size:.8rem;color:var(--color-text-dim)}input[data-v-9f7d80c3]{padding:.5rem .7rem;background:var(--color-surface-2);border:1px solid var(--color-border);border-radius:4px;color:var(--color-text);font-size:.9rem;font-family:var(--font-body)}input[data-v-9f7d80c3]:focus{outline:none;border-color:var(--color-accent);box-shadow:0 0 0 3px var(--color-accent-soft)}.actions[data-v-9f7d80c3]{display:flex;justify-content:flex-end;gap:.5rem;margin-top:.4rem}button[data-v-9f7d80c3]{padding:.5rem .9rem;background:linear-gradient(180deg,var(--color-accent-hover),var(--color-accent));color:var(--color-accent-ink);border:none;border-radius:4px;font-size:.85rem;font-weight:600;cursor:pointer}button.secondary[data-v-9f7d80c3]{background:none;border:1px solid var(--color-border);color:var(--color-text-dim)}button.secondary[data-v-9f7d80c3]:hover{color:var(--color-text);border-color:var(--color-accent)}button[data-v-9f7d80c3]:disabled{opacity:.6;cursor:not-allowed}.error[data-v-9f7d80c3]{padding:.5rem .7rem;background:color-mix(in srgb,var(--color-bad) 12%,transparent);border:1px solid color-mix(in srgb,var(--color-bad) 40%,transparent);border-radius:4px;color:var(--color-bad);font-size:.8rem}.success[data-v-9f7d80c3]{padding:.5rem .7rem;background:#34d3991f;border:1px solid rgba(52,211,153,.4);border-radius:4px;color:var(--color-good);font-size:.8rem}.brandmark[data-v-af1c0be2]{display:flex;flex-direction:column;align-items:flex-start;gap:8px}.wordmark[data-v-af1c0be2]{display:block;width:132px;height:auto;margin:2px 0}.df-block[data-v-af1c0be2]{fill:var(--df-ink)}.df-letter[data-v-af1c0be2]{fill:var(--df-glacier)}.df-dot[data-v-af1c0be2]{fill:var(--df-orange)}.brandmark.large .wordmark[data-v-af1c0be2]{width:218px}.sidebar-footer[data-v-54ce4838]{margin-top:auto;padding:12px;border-top:1px solid var(--color-border);font-size:12px}.user-info[data-v-54ce4838]{color:var(--color-text-dim);margin:10px 0 6px;padding:0 2px;overflow-wrap:anywhere}.footer-btn[data-v-54ce4838],.theme-toggle[data-v-54ce4838]{background:none;border:1px solid var(--color-border);color:var(--color-text-body);padding:6px 10px;border-radius:6px;cursor:pointer;font-size:12px;font-weight:500;width:100%;text-align:left;transition:color .15s,border-color .15s}.footer-btn+.footer-btn[data-v-54ce4838]{margin-top:6px}.footer-btn[data-v-54ce4838]:hover,.theme-toggle[data-v-54ce4838]:hover{color:var(--color-text);border-color:var(--color-text-dim)}.theme-toggle[data-v-54ce4838]{display:flex;align-items:center;gap:8px}.swatch[data-v-54ce4838]{width:12px;height:12px;flex:none;border-radius:3px;border:1px solid var(--color-border);background:var(--df-ink)}.main-content.no-sidebar[data-v-54ce4838]{margin-left:0}.app-loading-banner[data-v-54ce4838]{display:flex;align-items:center;gap:10px;padding:10px 14px;margin:10px 24px 0;background:var(--color-accent-bg);border:1px solid var(--color-accent-line);border-radius:8px;font-size:13px;color:var(--color-text-body)}.app-loading-spinner[data-v-54ce4838]{width:14px;height:14px;border:2px solid var(--color-accent-line);border-top-color:var(--color-accent);border-radius:50%;animation:app-spin-54ce4838 .8s linear infinite}@keyframes app-spin-54ce4838{to{transform:rotate(360deg)}}:root{--sidebar-width: 236px;--header-height: 48px;--df-ink: #0d1b2a;--df-orange: #cb4a18;--df-steel: #475569;--df-quarry: #6b727c;--df-mist: #f7f7f8;--df-glacier: #ffffff;--df-line: #cbd5e1;--color-bg: var(--df-glacier);--color-surface: var(--df-mist);--color-surface-2: color-mix(in srgb, var(--df-ink) 8%, var(--df-glacier));--color-border: var(--df-line);--color-text: var(--df-ink);--color-text-body: var(--df-steel);--color-text-dim: var(--df-quarry);--color-accent: var(--df-orange);--color-accent-hover: #a93c12;--color-accent-bg: #fdeada;--color-accent-soft: rgba(203, 74, 24, .1);--color-accent-line: rgba(203, 74, 24, .38);--color-accent-ink: #ffffff;--color-good: #1c8443;--color-good-bg: #e8f4eb;--color-warn: #8f6100;--color-warn-bg: #fdefc4;--color-bad: #cf2e2e;--color-bad-bg: #fbe6e5;--series-1: #cb4a18;--series-2: #2a78d6;--series-3: #14915f;--series-4: #4a3aa7;--series-5: #d05f8c;--series-6: #b87d00;--series-7: #1898b3;--series-8: #a32b2b;--shadow-panel: 0 1px 2px rgba(13, 27, 42, .06);--shadow-pop: 0 8px 24px rgba(13, 27, 42, .12);--font-body: "Archivo", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;--font-display: var(--font-body);--font-mono: ui-monospace, SFMono-Regular, "SF Mono", Menlo, monospace;color-scheme:light}:root[data-theme=dark]{--df-ink: #edeff1;--df-orange: #ff6b35;--df-steel: #a8b0ba;--df-quarry: #8a9199;--df-mist: #16283c;--df-glacier: #0d1b2a;--df-line: #2a3d52;--color-accent-hover: #ff8a5f;--color-accent-bg: #54260d;--color-accent-soft: rgba(255, 107, 53, .14);--color-accent-line: rgba(255, 107, 53, .42);--color-accent-ink: #0d1b2a;--color-good: #3fb55c;--color-good-bg: #0f2e1b;--color-warn: #f5b324;--color-warn-bg: #4a3206;--color-bad: #f05252;--color-bad-bg: #401616;--series-1: #ee5c26;--series-2: #4489dc;--series-3: #1d9a66;--series-4: #8370d4;--series-5: #d96a98;--series-6: #c08a16;--series-7: #1a94ae;--series-8: #d94a47;--shadow-panel: 0 1px 2px rgba(0, 0, 0, .3);--shadow-pop: 0 8px 24px rgba(0, 0, 0, .45);color-scheme:dark}*{margin:0;padding:0;box-sizing:border-box}body{font-family:var(--font-body);font-size:14px;background:var(--color-bg);color:var(--color-text-body);overflow:hidden;height:100vh;font-variant-numeric:tabular-nums;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}#app{display:flex;height:100vh}h1,h2,h3,h4{color:var(--color-text);font-weight:700;letter-spacing:-.01em;line-height:1.2}a{color:var(--color-accent)}.eyebrow{font-size:11px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--color-accent)}:focus-visible{outline:2px solid var(--color-accent);outline-offset:2px}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:var(--color-border);border-radius:4px}::-webkit-scrollbar-thumb:hover{background:var(--color-text-dim)}.sidebar{width:var(--sidebar-width);background:var(--color-surface);border-right:1px solid var(--color-border);display:flex;flex-direction:column;flex-shrink:0}.sidebar-header{padding:18px 16px 16px;border-bottom:1px solid var(--color-border)}.sidebar-nav{flex:1;padding:10px 8px;overflow-y:auto}.nav-item{position:relative;display:flex;align-items:center;gap:10px;padding:9px 12px;border-radius:6px;color:var(--color-text-body);text-decoration:none;font-size:13px;transition:color .15s,background .15s;cursor:pointer}.nav-item:hover{background:var(--color-surface-2);color:var(--color-text)}.nav-item.router-link-active{background:var(--color-accent-soft);color:var(--color-accent);font-weight:600}.nav-item.router-link-active:before{content:"";position:absolute;left:0;top:6px;bottom:6px;width:3px;border-radius:0 3px 3px 0;background:var(--color-accent)}.nav-icon{width:18px;height:18px;flex:none;color:var(--color-text-dim)}.nav-item:hover .nav-icon,.nav-item.router-link-active .nav-icon{color:inherit}.main-content{flex:1;display:flex;flex-direction:column;overflow:hidden;min-width:0;background:var(--color-bg)}.page-header{display:flex;align-items:flex-end;justify-content:space-between;gap:16px;padding:16px 24px 12px;border-bottom:1px solid var(--color-border);flex-shrink:0}.page-header h2{font-size:19px}.page-body{flex:1;padding:18px 24px 28px;overflow-y:auto}.card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:10px;padding:16px 18px;margin-bottom:16px}.card-title{font-size:11px;font-weight:700;color:var(--color-text-dim);text-transform:uppercase;letter-spacing:.08em;margin-bottom:12px}.chart-container{width:100%;height:400px;position:relative}.chart-container.tall{height:500px}.controls-bar{display:flex;gap:12px;align-items:center;flex-wrap:wrap;padding:12px 0}.control-group{display:flex;align-items:center;gap:6px}.control-label{font-size:12px;color:var(--color-text-dim);white-space:nowrap}input[type=datetime-local],input[type=date],input[type=text],input[type=number],select{background:var(--color-surface-2);border:1px solid var(--color-border);color:var(--color-text);padding:6px 10px;border-radius:6px;font-size:12px;font-family:var(--font-body);font-variant-numeric:tabular-nums}input:focus,select:focus{outline:none;border-color:var(--color-accent);box-shadow:0 0 0 3px var(--color-accent-soft)}button{background:var(--color-surface-2);border:1px solid var(--color-border);color:var(--color-text);padding:6px 12px;border-radius:6px;font-size:12px;font-family:var(--font-body);font-weight:600;cursor:pointer;transition:background .15s,border-color .15s}button:hover:not(:disabled){border-color:var(--color-text-dim)}button:disabled{opacity:.5;cursor:not-allowed}button.primary{background:var(--color-accent);border-color:var(--color-accent);color:var(--color-accent-ink)}button.primary:hover:not(:disabled){background:var(--color-accent-hover);border-color:var(--color-accent-hover)}button.sm{padding:4px 9px;font-size:11px}.badge{display:inline-flex;align-items:center;padding:2px 9px;border-radius:10px;font-size:11px;font-weight:600}.badge.lod{background:var(--color-accent-bg);color:var(--color-accent)}.badge.drift{background:var(--color-bad-bg);color:var(--color-bad)}.badge.ok{background:var(--color-good-bg);color:var(--color-good)}.sensor-picker{max-height:300px;overflow-y:auto}.sensor-category{margin-bottom:8px}.sensor-category-title{font-size:11px;font-weight:700;color:var(--color-text-dim);text-transform:uppercase;letter-spacing:.08em;padding:4px 0}.sensor-item{display:flex;align-items:center;gap:8px;padding:4px 8px;border-radius:4px;cursor:pointer;font-size:12px;transition:background .1s}.sensor-item:hover{background:var(--color-surface-2)}.sensor-item input[type=checkbox]{accent-color:var(--color-accent)}.sensor-item .var-name{font-family:var(--font-mono);font-size:11px;color:var(--color-text)}.sensor-item .var-desc{font-size:11px;color:var(--color-text-dim);margin-left:auto}.loading-overlay{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;background:color-mix(in srgb,var(--color-bg) 72%,transparent);z-index:10;border-radius:8px}.spinner{width:32px;height:32px;border:3px solid var(--color-border);border-top-color:var(--color-accent);border-radius:50%;animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.chart-tooltip{position:fixed;pointer-events:none;background:var(--color-bg);border:1px solid var(--color-border);border-radius:8px;padding:8px 12px;font-size:12px;color:var(--color-text-body);z-index:100;box-shadow:var(--shadow-pop)}.chart-tooltip .tt-time{font-size:11px;color:var(--color-text-dim);margin-bottom:4px}.chart-tooltip .tt-row{display:flex;align-items:center;gap:6px;line-height:1.6}.chart-tooltip .tt-swatch{width:8px;height:8px;border-radius:50%;flex-shrink:0}.chart-tooltip .tt-value{font-weight:600;color:var(--color-text)}.chart-legend{display:flex;gap:16px;flex-wrap:wrap;padding:8px 0}.legend-item{display:flex;align-items:center;gap:6px;font-size:12px;cursor:pointer}.legend-swatch{width:12px;height:3px;border-radius:2px}.grid-2{display:grid;grid-template-columns:1fr 1fr;gap:16px}.grid-3{display:grid;grid-template-columns:1fr 1fr 1fr;gap:16px}@media(max-width:1200px){.grid-2,.grid-3{grid-template-columns:1fr}}.axis path,.axis line{stroke:var(--color-border)}.axis text{fill:var(--color-text-dim);font-size:11px;font-family:var(--font-body)}.grid-line{stroke:var(--color-border);stroke-opacity:.55;stroke-dasharray:2,2}table{width:100%;border-collapse:collapse;font-size:12px}th,td{padding:8px 12px;text-align:left;border-bottom:1px solid var(--color-border)}th{color:var(--color-text-dim);font-weight:700;text-transform:uppercase;letter-spacing:.08em;font-size:11px}td{font-size:12px;font-variant-numeric:tabular-nums}tr:hover{background:var(--color-surface-2)}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}
