:root{font-family:Space Grotesk,system-ui,-apple-system,sans-serif;line-height:1.5;font-weight:400;color:#f7fbff;background-color:#010206;font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;--bg: #060910;--bg-soft: #0b1020;--surface: rgba(8, 12, 24, .7);--surface-strong: rgba(1, 2, 6, .8);--border: rgba(124, 176, 199, .14);--text: #f7fbff;--text-muted: #8ba0b8;--accent: #7cf4d5;--accent-2: #5ea0ff;--accent-soft: rgba(124, 244, 213, .12);--danger: #d64c4c}#root{width:100%;min-height:100vh}body{margin:0;min-width:320px;min-height:100vh;background:var(--bg);color:var(--text)}body[data-theme=light]{background:#e5e9f0;color:#020617;--bg: #E5E9F0;--bg-soft: #EDF1F7;--surface: #FFFFFF;--surface-strong: #F1F5FB;--surface-2: #E3E8F4;--border: #CBD5E1;--text: #020617;--text-muted: #475569;--text-tertiary: #94A3B8;--accent: #0F766E;--accent-2: #2563EB;--accent-soft: rgba(15, 118, 110, .16);--danger: #b91c1c}.icon-bank button svg,.search-icon{display:block;stroke:currentColor!important;fill:none!important;color:inherit}.app-layout{display:flex;min-height:100vh;background:var(--bg);background-image:radial-gradient(circle at 15% 20%,rgba(124,244,213,.06),transparent 40%),radial-gradient(circle at 85% 10%,rgba(94,133,194,.08),transparent 45%)}body[data-theme=light] .app-layout{background:var(--bg);background-image:none}.mono{font-family:Azeret Mono,monospace}.sans{font-family:Space Grotesk,sans-serif}.sidebar-shell{width:20rem;max-width:100%;background:var(--surface-strong);border-right:1px solid var(--border);display:flex;flex-direction:column;-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px);flex-shrink:0}.sidebar-header{padding:1.5rem;border-bottom:1px solid var(--border);display:flex;justify-content:space-between;align-items:center;gap:1rem}.brand{display:flex;align-items:center;gap:1rem;text-transform:uppercase;letter-spacing:.2em;font-size:.75rem;font-weight:700;color:var(--text-muted);flex:1;min-width:0;line-height:1.4}.brand span{white-space:normal;word-break:break-word;line-height:1.3;flex-shrink:1}.sidebar-toggle{display:none;border:1px solid var(--border);background:var(--surface);color:var(--text);border-radius:.5rem;width:2.5rem;height:2.5rem;min-width:44px;min-height:44px;cursor:pointer;align-items:center;justify-content:center;flex-shrink:0;-webkit-tap-highlight-color:transparent;transition:all .2s}.sidebar-toggle:hover{border-color:var(--accent);color:var(--accent)}.sidebar-toggle:focus{outline:none}.sidebar-toggle:focus-visible{outline:2px solid rgba(124,244,213,.5);outline-offset:2px}.brand-logo{height:2.75rem;width:auto;display:block;object-fit:contain}.sidebar-body{padding:1.5rem;flex:1;overflow-y:auto}.sidebar-section-title{margin:0 0 1rem;font-size:.7rem;text-transform:uppercase;letter-spacing:.2em;color:var(--text-muted);font-weight:600}.search-wrapper{position:relative;margin-bottom:1.5rem}.search-icon{position:absolute;left:12px;top:50%;transform:translateY(-50%);color:var(--text-muted);pointer-events:none;display:block;z-index:1}.search-icon svg{display:block!important;stroke:currentColor!important;fill:none!important;opacity:1!important;visibility:visible!important}.sidebar-body input{width:100%;border-radius:.6rem;border:1px solid var(--border);background:var(--surface);padding:.6rem .75rem .6rem 2.5rem;color:var(--text);font-size:16px;min-height:44px;box-sizing:border-box;transition:border-color .2s;-webkit-appearance:none;appearance:none}.sidebar-body input:focus{outline:none;border-color:var(--accent)}.sidebar-body ul{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:.4rem}.asset-item{display:flex;align-items:center;gap:.5rem;position:relative}.asset-item.is-dragging{opacity:.5}.asset-item.drag-over:before{content:"";position:absolute;left:0;right:0;top:-2px;height:2px;background:var(--accent);z-index:1}.drag-handle{display:flex;align-items:center;justify-content:center;color:var(--text-muted);cursor:grab;padding:.25rem;flex-shrink:0;opacity:.4;transition:opacity .2s,color .2s;-webkit-tap-highlight-color:transparent;touch-action:none}.drag-handle:active{cursor:grabbing}.asset-item:hover .drag-handle{opacity:.8;color:var(--accent)}.asset-item.is-dragging .drag-handle{opacity:1}.asset-chip{width:100%;border:1px solid transparent;border-radius:.6rem;padding:.75rem .9rem;min-height:44px;background:transparent;color:var(--text-muted);text-align:left;cursor:pointer;transition:all .2s ease;-webkit-tap-highlight-color:transparent;outline:none}.asset-chip:focus{outline:none}.asset-chip:focus-visible{outline:2px solid rgba(124,244,213,.5);outline-offset:2px}.asset-chip:hover{background:#7cf4d514;color:var(--text)}.asset-chip.is-active{background:var(--accent-soft);border-color:var(--accent);border-left:3px solid var(--accent);color:var(--text)}.asset-name{margin:0;font-size:.9rem;font-weight:500}.asset-chip .status{font-size:.65rem;text-transform:uppercase;letter-spacing:.15em;opacity:.8}.sidebar-footer{padding:1.5rem;border-top:1px solid var(--border);text-transform:uppercase;letter-spacing:.2em;font-size:.6rem;color:var(--text-muted);text-align:center}.app-surface{flex:1;display:flex;flex-direction:column;min-height:100vh;min-height:100dvh;overflow-y:auto;overflow-x:hidden;min-width:0}.header-shell{padding:clamp(1rem,3vw,1.5rem);border-bottom:1px solid var(--border);display:flex;justify-content:space-between;align-items:flex-start;gap:1rem;background:var(--surface);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);position:sticky;top:0;z-index:10;flex-wrap:wrap}body[data-theme=light] .header-shell{box-shadow:0 1px 2px #1018280a}.header-left{flex:1 1 auto;min-width:0}.header-right{display:flex;align-items:center;gap:.75rem;flex-wrap:wrap;flex:1;justify-content:flex-end;min-width:0}.eyebrow{text-transform:uppercase;letter-spacing:.3em;font-size:.65rem;color:#7cf4d5;margin:0 0 .4rem;font-weight:600}.header-shell h1{margin:0;font-size:clamp(1.25rem,4vw,1.8rem);font-weight:500;color:var(--text);line-height:1.2}.header-meta{margin-top:.4rem;display:flex;align-items:center;gap:.8rem;font-size:clamp(.7rem,2vw,.8rem);color:var(--text-muted);font-family:Azeret Mono,monospace;flex-wrap:wrap}.header-meta .dot{width:6px;height:6px;border-radius:50%;background:var(--accent);box-shadow:0 0 8px var(--accent-soft)}.range-switch{display:inline-flex;border:1px solid var(--border);border-radius:.6rem;padding:.2rem;background:var(--surface);flex-wrap:wrap;gap:.2rem}.range-switch button{border:none;background:transparent;color:var(--text-muted);padding:.5rem .75rem;min-height:36px;border-radius:.4rem;font-size:clamp(.7rem,2vw,.75rem);letter-spacing:.1em;text-transform:uppercase;cursor:pointer;transition:all .2s;white-space:nowrap;-webkit-tap-highlight-color:transparent;outline:none}.range-switch button:focus{outline:none}.range-switch button:focus-visible{outline:2px solid rgba(124,244,213,.5);outline-offset:2px}.range-switch button:hover{color:var(--text)}.range-switch button.active{background:var(--accent-soft);color:var(--text);font-weight:600}.user-chip{align-self:center;color:var(--text-muted);font-size:.85rem;white-space:nowrap}.theme-toggle{border:1px solid var(--border);background:linear-gradient(135deg,var(--surface),var(--surface-strong));color:var(--text);border-radius:50%;width:2.75rem;height:2.75rem;min-width:44px;min-height:44px;display:inline-flex;align-items:center;justify-content:center;cursor:pointer;transition:transform .15s ease,box-shadow .2s ease;-webkit-tap-highlight-color:transparent;flex-shrink:0}.theme-toggle:hover{transform:translateY(-1px);box-shadow:0 8px 20px #7cb0c733}.logout-btn{border:1px solid rgba(220,81,81,.55);background:radial-gradient(circle at 30% 20%,#ffa1a14d,#a02a2a59);color:#ffeded;border-radius:50%;width:2.5rem;height:2.5rem;cursor:pointer;transition:transform .15s ease,box-shadow .2s ease;display:inline-flex;align-items:center;justify-content:center}.logout-btn:hover{box-shadow:0 12px 28px #c8404059;transform:translateY(-1px)}.logout-btn:active{transform:translateY(0)}.icon-bank{display:inline-flex;gap:.5rem;align-items:center;flex-wrap:wrap}.icon-bank button{width:2.5rem;height:2.5rem;min-width:44px;min-height:44px;border-radius:.6rem;border:1px solid var(--border);background:var(--surface);color:var(--text-muted);cursor:pointer;transition:all .2s;display:flex;align-items:center;justify-content:center;padding:0;flex-shrink:0;-webkit-tap-highlight-color:transparent;outline:none}.icon-bank button:focus{outline:none}.icon-bank button:focus-visible{outline:2px solid rgba(124,244,213,.5);outline-offset:2px}.icon-bank button svg{display:block!important;width:20px!important;height:20px!important;stroke:currentColor!important;fill:none!important;flex-shrink:0;opacity:1!important;visibility:visible!important}.icon-bank button:hover{border-color:var(--accent);color:var(--accent)}.app-main{padding:clamp(1rem,3vw,1.5rem);display:flex;flex-direction:column;gap:1.25rem;max-width:1600px;width:100%;margin:0 auto;box-sizing:border-box}.panel{background:var(--surface);border:1px solid var(--border);border-radius:.8rem;padding:clamp(1rem,3vw,1.5rem);position:relative;overflow:hidden;box-sizing:border-box;width:100%;min-width:0}body[data-theme=light] .panel{box-shadow:0 1px 2px #1018280f,0 4px 12px #1018280a}.panel:after{content:"";position:absolute;top:0;left:0;width:4px;height:100%;background:linear-gradient(180deg,var(--accent) 0%,transparent 15%);opacity:.5}.panel-head{display:flex;justify-content:space-between;align-items:baseline;margin-bottom:1.2rem;border-bottom:1px solid var(--border);padding-bottom:.8rem}.panel-head h2{margin:0;font-size:1.1rem;letter-spacing:.05em;font-weight:500;color:var(--text)}.panel-copy{margin:0;text-transform:uppercase;letter-spacing:.15em;color:var(--text-tertiary);font-size:.65rem;font-weight:600}.card-grid{display:grid;gap:.8rem;grid-template-columns:repeat(auto-fit,minmax(140px,1fr))}.metric-card{border:1px solid var(--border);border-radius:.6rem;padding:1rem;background:var(--surface-2);transition:transform .2s,border-color .2s}.metric-card:hover{border-color:var(--accent);transform:translateY(-2px)}.metric-label{text-transform:uppercase;letter-spacing:.15em;font-size:.65rem;color:var(--text-muted);margin:0 0 .5rem}.metric-value{margin:0;font-size:1.6rem;font-family:Azeret Mono,monospace;color:var(--text);font-weight:400}.metric-value.small{font-size:1.1rem}.metric-meta{margin:.4rem 0 0;color:var(--text-tertiary);font-size:.75rem;font-family:Azeret Mono,monospace}.notes-list{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:.6rem}.note{border-left:3px solid var(--border);padding:.8rem 1rem;background:var(--surface-2);border-radius:0 .4rem .4rem 0}.note-tag{font-size:.6rem;letter-spacing:.2em;text-transform:uppercase;color:var(--text-muted);display:block;margin-bottom:.3rem}.note-message{color:var(--text);font-size:.875rem;line-height:1.5;margin:0}.note.critical{border-left-color:#ff6f81;background:#ff6f810d}.note.warning{border-left-color:#f8c95e;background:#f8c95e0d}.note.clickable{transition:background-color .2s,transform .2s;border:none;border-left:3px solid var(--border)}.note.clickable:hover{background-color:var(--accent-soft);transform:translate(4px)}.note.clickable.critical{border-left-color:#ff6f81}.note.clickable.warning{border-left-color:#f8c95e}.signal-panel{display:flex;flex-direction:column;gap:1rem}.signal-toolbar{display:flex;justify-content:space-between;align-items:flex-end;gap:1rem;flex-wrap:wrap;margin-bottom:.5rem}.sensor-select{display:flex;align-items:center;gap:.6rem;font-size:.85rem}.sensor-select select{border-radius:.4rem;border:1px solid var(--border);background:var(--surface);color:var(--text);padding:.5rem .8rem;min-height:40px;font-family:Azeret Mono,monospace;font-size:16px;cursor:pointer;-webkit-appearance:none;appearance:none;box-sizing:border-box}.sensor-select select:focus{outline:none;border-color:var(--accent)}.chart-frame{height:320px;border-radius:.6rem;border:1px solid var(--border);padding:1rem;background:var(--surface-2);position:relative}.anomaly-list{margin-top:.5rem}.anomaly-head{display:flex;justify-content:space-between;align-items:baseline;margin-bottom:.6rem;border-bottom:1px solid var(--border);padding-bottom:.4rem}.anomaly-list ul{list-style:none;padding:0;margin:0}.anomaly-list li{display:grid;grid-template-columns:1fr auto auto;gap:1rem;padding:.5rem .75rem;border-bottom:1px solid var(--border);font-size:.85rem;font-family:Azeret Mono,monospace;color:var(--text-muted);transition:background-color .2s,border-color .2s;border-left:3px solid transparent;border-radius:0 .4rem .4rem 0}.anomaly-list li:hover{background-color:var(--accent-soft);border-left-color:var(--accent)}.anomaly-list li.selected{background-color:var(--accent-soft);border-left-color:var(--danger);border-left-width:3px;color:var(--text)}.anomaly-list li.selected strong{color:var(--danger);font-weight:600}.anomaly-list li strong{color:var(--danger);font-weight:400}.routine-grid{display:grid;gap:.8rem;grid-template-columns:repeat(auto-fit,minmax(200px,1fr))}.routine-card{border:1px solid var(--border);border-radius:.6rem;padding:1rem;background:var(--surface-2)}.routine-card ul{list-style:none;margin:.8rem 0 0;padding:0;display:flex;flex-direction:column;gap:.5rem}.routine-card li{display:flex;flex-direction:column;gap:.2rem;font-size:.8rem}.routine-card li span:first-child{color:var(--text-muted);font-size:.75rem;text-transform:uppercase;letter-spacing:.05em}.routine-card li span:last-child{font-family:Azeret Mono,monospace;color:var(--text)}.sensor-roster{display:flex;flex-direction:column;gap:1rem}.sensor-toolbar{display:flex;flex-wrap:wrap;justify-content:space-between;gap:1rem;align-items:center}.filter-pills{display:flex;gap:.4rem;flex-wrap:wrap}.filter-pills button{border-radius:.4rem;border:1px solid var(--border);padding:.5rem .8rem;min-height:36px;text-transform:uppercase;letter-spacing:.15em;font-size:.7rem;background:transparent;color:var(--text-muted);cursor:pointer;transition:all .2s;-webkit-tap-highlight-color:transparent;outline:none}.filter-pills button:focus{outline:none}.filter-pills button:focus-visible{outline:2px solid var(--accent-soft);outline-offset:2px}.filter-pills button:hover{border-color:var(--accent);color:var(--text)}.filter-pills button.active{background:var(--accent-soft);border-color:var(--accent);color:var(--accent)}.sensor-toolbar input{border-radius:.4rem;border:1px solid var(--border);background:var(--surface);color:var(--text);padding:.5rem .8rem;min-width:220px;min-height:40px;font-size:16px;box-sizing:border-box;-webkit-appearance:none;appearance:none}.sensor-toolbar input:focus{outline:none;border-color:var(--accent)}.roster-table{overflow-x:auto;border:1px solid var(--border);border-radius:.6rem}.roster-table table{width:100%;border-collapse:collapse}.roster-table th{text-align:left;text-transform:uppercase;letter-spacing:.15em;font-size:.65rem;color:var(--text-tertiary);background:var(--surface-2);padding:.8rem 1rem;border-bottom:1px solid var(--border)}.roster-table td{padding:.6rem 1rem;border-bottom:1px solid var(--border);font-size:.85rem;color:var(--text-muted);font-family:Azeret Mono,monospace;cursor:default}.roster-table tr:last-child td{border-bottom:none}.roster-table tbody tr:hover{background:var(--accent-soft)}.status-pill{border-radius:.2rem;padding:.15rem .5rem;font-size:.65rem;text-transform:uppercase;letter-spacing:.1em;font-weight:600;display:inline-block;min-width:80px;text-align:center}.status-pill.healthy{background:#43d1a126;color:#43d1a1}.status-pill.warning{background:#f8c95e26;color:#f8c95e}.status-pill.critical{background:#ff6f8126;color:#ff6f81}.status-pill.offline{background:#64748b26;color:#94a3b8}.range-modal{position:fixed;top:50%;left:50%;transform:translate(-50%,-50%);z-index:50;width:90%;max-width:500px;max-height:90vh;overflow-y:auto;border:1px solid var(--border);border-radius:.8rem;background:var(--surface);padding:clamp(1.5rem,4vw,2rem);box-shadow:0 40px 80px #000c;-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px);box-sizing:border-box}body[data-theme=light] .range-modal{box-shadow:0 20px 60px #10182826,0 0 0 1px #1018280d}.range-modal form{display:flex;flex-direction:column;gap:1.5rem}.range-inputs{display:grid;grid-template-columns:1fr 1fr;gap:1rem}.range-modal label{font-size:.7rem;text-transform:uppercase;letter-spacing:.15em;color:#8ba0b8;display:block;margin-bottom:.5rem}.range-modal input{width:100%;border-radius:.4rem;border:1px solid var(--border);background:var(--surface-2);color:var(--text);padding:.6rem;min-height:44px;font-size:16px;font-family:Azeret Mono,monospace;box-sizing:border-box;-webkit-appearance:none;appearance:none}.modal-actions{display:flex;justify-content:flex-end;gap:1rem}.modal-actions button{border-radius:.4rem;border:1px solid var(--border);background:var(--surface);color:var(--text);padding:.6rem 1.2rem;min-height:44px;text-transform:uppercase;letter-spacing:.15em;font-size:.75rem;cursor:pointer;transition:all .2s;-webkit-tap-highlight-color:transparent}.modal-actions button:hover{border-color:var(--accent);color:var(--accent)}.modal-actions button[type=submit]{background:var(--accent);color:#03140b;border-color:var(--accent);font-weight:600}.modal-actions button[type=submit]:hover{background:#43d1a1;border-color:#43d1a1;color:#010206}.panel-grid{display:grid;gap:1.5rem}.panel-grid.two-col{grid-template-columns:repeat(auto-fit,minmax(min(100%,280px),1fr))}.app-loading{min-height:100vh;display:grid;place-items:center;background:var(--bg);color:var(--text-muted);letter-spacing:.08em}.login-shell{min-height:100vh;min-height:100dvh;display:grid;place-items:center;background:radial-gradient(circle at 20% 20%,rgba(124,244,213,.06),transparent 30%),radial-gradient(circle at 80% 10%,rgba(105,149,255,.1),transparent 35%),linear-gradient(145deg,var(--bg-soft),var(--bg));padding:1rem}.login-card{width:100%;max-width:420px;background:var(--surface);border:1px solid var(--border);border-radius:1rem;padding:clamp(1.25rem,5vw,2rem);box-shadow:0 20px 60px #00000073;color:var(--text);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px)}.login-card header{margin-bottom:1.5rem}.login-header{display:flex;justify-content:space-between;align-items:flex-start;gap:1rem}.brand-title{margin:0;font-size:clamp(1rem,4vw,1.2rem);line-height:1.3}.brand-subtitle{margin:.15rem 0 0;color:var(--text-muted);font-size:clamp(.8rem,3vw,.9rem);line-height:1.4}.login-form{display:flex;flex-direction:column;gap:1rem}.login-form label{font-size:.85rem;letter-spacing:.08em;text-transform:uppercase;color:var(--text-muted);display:block}.login-form input{width:100%;border-radius:.6rem;border:1px solid var(--border);background:var(--surface-strong);padding:.875rem 1rem;color:var(--text);font-size:16px;-webkit-appearance:none;appearance:none;box-sizing:border-box;min-height:44px}.login-form input:focus{outline:none;border-color:var(--accent)}.login-form button.primary{margin-top:.5rem;background:linear-gradient(135deg,var(--accent),#43d1a1);color:#010206;font-weight:700;border:none;border-radius:.75rem;padding:.875rem 1.25rem;cursor:pointer;transition:transform .15s ease,box-shadow .15s ease;font-size:1rem;min-height:48px;-webkit-tap-highlight-color:transparent}.login-form button.primary:active{transform:scale(.98)}.login-form button.primary:disabled{opacity:.6;cursor:not-allowed;transform:none}.form-error{color:#f76c5e;font-size:.9rem;margin:.25rem 0 0}.login-hint{margin-top:1rem;color:var(--text-muted);font-size:.9rem}@media(max-width:1024px){.panel-grid.two-col{grid-template-columns:1fr}}@media(max-width:768px){.app-layout{flex-direction:column}.app-surface{width:100%!important}.sidebar-shell{width:100%;max-width:100%;height:auto;border-right:none;border-bottom:1px solid rgba(124,176,199,.12)}.sidebar-toggle{display:flex}.brand span{font-size:clamp(.7rem,2vw,.85rem)}.sidebar-body{max-height:0;overflow:hidden;transition:max-height .3s ease-out;padding:0 1.5rem}.sidebar-shell.is-open .sidebar-body{max-height:500px;padding:1.5rem;overflow-y:auto}.header-shell{flex-direction:column;align-items:stretch;gap:1rem}.header-left{width:100%}.header-right{width:100%;justify-content:space-between}.range-switch{order:1;width:100%;justify-content:center}.icon-bank{order:2;margin-left:0}.user-chip{display:none}.app-main,.panel{padding:1rem}.chart-frame{height:280px}.sensor-toolbar{flex-direction:column;align-items:stretch}.sensor-toolbar input{min-width:0;width:100%}}
