/*! tailwindcss v4.2.4 | MIT License | https://tailwindcss.com */
@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-border-style:solid;--tw-ordinal:initial;--tw-slashed-zero:initial;--tw-numeric-figure:initial;--tw-numeric-spacing:initial;--tw-numeric-fraction:initial;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial}}}.invisible{visibility:hidden}.visible{visibility:visible}.sr-only{clip-path:inset(50%);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.static{position:static}.\!container{width:100%!important}.container{width:100%}.mx-auto{margin-inline:auto}.block{display:block}.contents{display:contents}.flex{display:flex}.grid{display:grid}.hidden{display:none}.inline{display:inline}.inline-block{display:inline-block}.inline-flex{display:inline-flex}.table{display:table}.min-h-\[28vh\]{min-height:28vh}.min-h-\[40vh\]{min-height:40vh}.min-h-screen{min-height:100vh}.flex-1{flex:1}.shrink{flex-shrink:1}.grow{flex-grow:1}.transform{transform:var(--tw-rotate-x,) var(--tw-rotate-y,) var(--tw-rotate-z,) var(--tw-skew-x,) var(--tw-skew-y,)}.resize{resize:both}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.place-items-center{place-items:center}.items-center{align-items:center}.justify-between{justify-content:space-between}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.overflow-auto{overflow:auto}.overflow-visible{overflow:visible}.rounded-full{border-radius:3.40282e38px}.border{border-style:var(--tw-border-style);border-width:1px}.border-dashed{--tw-border-style:dashed;border-style:dashed}.text-center{text-align:center}.align-middle{vertical-align:middle}.break-all{word-break:break-all}.uppercase{text-transform:uppercase}.italic{font-style:italic}.ordinal{--tw-ordinal:ordinal;font-variant-numeric:var(--tw-ordinal,) var(--tw-slashed-zero,) var(--tw-numeric-figure,) var(--tw-numeric-spacing,) var(--tw-numeric-fraction,)}.opacity-80{opacity:.8}.invert{--tw-invert:invert(100%);filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.filter{filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.transition{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,ease);transition-duration:var(--tw-duration,0s)}@media (hover:hover){.hover\:underline:hover{text-decoration-line:underline}}:root{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif}*{box-sizing:border-box}body{background:#f1f5f9;min-width:320px;min-height:100vh;margin:0}#root{min-height:100vh}a{color:inherit;text-decoration:none}button,input,select,textarea{font:inherit}.internal-shell{color:#111827;background:#f5f6f8;min-height:100vh}.internal-shell.has-sidebar{grid-template-columns:16rem minmax(0,1fr);display:grid}.internal-shell.no-sidebar{grid-template-columns:minmax(0,1fr);display:grid}.internal-content{min-width:0}.internal-sidebar-overlay{display:none}.internal-sidebar{z-index:40;color:#fff;background:#2c3e50;flex-direction:column;width:16rem;height:100vh;display:flex;position:sticky;top:0;box-shadow:0 18px 60px #0f172a38}.internal-sidebar.hide-desktop{display:none}.internal-sidebar-header{border-bottom:1px solid #ffffff2e;justify-content:space-between;align-items:center;height:96px;padding:0 1.25rem;display:flex}.internal-brand{color:#fff;align-items:center;gap:.75rem;display:flex}.internal-brand-icon{flex:none;place-items:center;width:74px;height:74px;display:grid}.internal-brand-logo{-o-object-fit:contain;object-fit:contain;max-width:74px;max-height:74px;display:block}.internal-brand-title{font-size:.875rem;font-weight:800}.internal-brand-subtitle{color:#ffffff9e;letter-spacing:.08em;text-transform:uppercase;font-size:.625rem}.internal-sidebar-close{color:#fff;background:0 0;border:0;display:none}.internal-nav{scrollbar-gutter:stable;scrollbar-width:none;flex:1;padding:.75rem .5rem;overflow-y:auto}.internal-sidebar:hover .internal-nav{scrollbar-width:thin}.internal-nav::-webkit-scrollbar{width:6px}.internal-nav::-webkit-scrollbar-track{background:0 0}.internal-nav::-webkit-scrollbar-thumb{background-color:#0000;border-radius:3px}.internal-sidebar:hover .internal-nav::-webkit-scrollbar-thumb{background-color:#ffffff59}.internal-nav-section{margin-bottom:.125rem}.internal-nav-parent{color:#fff;border-radius:.5rem;align-items:center;gap:.75rem;width:100%;padding:.625rem .75rem;font-size:.875rem;font-weight:500;transition:background-color .15s;display:flex}.internal-nav-parent:hover,.internal-nav-parent.is-active{color:#fff;background:#3498db}.internal-nav-parent span{text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;overflow:hidden}.internal-nav-chevron{color:#ffffffb3;flex-shrink:0;width:.875rem;height:.875rem;transition:transform .15s}.internal-nav-chevron.is-collapsed{transform:rotate(-90deg)}button.internal-nav-parent{cursor:pointer;font:inherit;text-align:left;background:0 0;border:0;font-weight:500}.internal-nav-children.is-collapsed{display:none}.internal-nav-children{margin:0 0 .5rem 1.75rem}.internal-nav-child{color:#fffc;border-radius:.375rem;justify-content:space-between;align-items:center;padding:.375rem .75rem;font-size:.75rem;transition:background-color .15s,color .15s;display:flex}.internal-nav-child:hover,.internal-nav-child.is-active{color:#fff;background:#3498db}.internal-nav-child.is-disabled{color:#ffffff59}.internal-nav-badge{text-transform:uppercase;background:#ffffff1f;border-radius:999px;padding:.125rem .375rem;font-size:.625rem}.internal-sidebar-footer{border-top:1px solid #ffffff1f;padding:1rem}.internal-logout-button{color:#fff;cursor:pointer;background:#3498db;border:0;border-radius:.5rem;width:100%;padding:.625rem 1rem;font-size:.875rem;font-weight:600}.internal-topbar{z-index:20;background:#fff;border-bottom:1px solid #d9dee7;padding:.5rem 1.5rem;position:sticky;top:0}.internal-topbar-row,.internal-topbar-left,.internal-topbar-right{align-items:center;display:flex}.internal-topbar-row{justify-content:space-between;gap:1rem}.internal-topbar-left,.internal-topbar-right{gap:.75rem}.internal-icon-button{color:#334155;cursor:pointer;background:#fff;border:1px solid #d8dee8;border-radius:.375rem;justify-content:center;align-items:center;padding:.5rem;display:inline-flex}.mobile-menu,.internal-page-title{display:none}.internal-timezone-select{color:#334155;background:#fff;border:1px solid #d8dee8;border-radius:.375rem;max-width:260px;padding:.375rem .75rem;font-size:.875rem}.internal-user-pill,.internal-topbar-logout{color:#334155;background:#fff;border:1px solid #d8dee8;border-radius:999px;align-items:center;gap:.5rem;padding:.5rem .75rem;font-size:.875rem;display:inline-flex}.internal-user-pill span:last-child{background:#f1f5f9;border-radius:999px;padding:.125rem .5rem;font-size:.75rem}.internal-topbar-logout{cursor:pointer;border-radius:.375rem}.internal-main{padding:1.25rem 1.5rem}@media (width<=900px){body{overflow-x:hidden}.internal-shell.has-sidebar,.internal-shell.no-sidebar{display:block}.internal-content{width:100%}.internal-sidebar-overlay{z-index:45;opacity:0;pointer-events:none;background:#0f172a73;transition:opacity .18s;display:block;position:fixed;inset:0}.internal-sidebar-overlay.is-open{opacity:1;pointer-events:auto}.internal-sidebar,.internal-sidebar.hide-desktop{z-index:50;width:min(18rem,86vw);max-width:86vw;transition:transform .18s;display:flex;position:fixed;top:0;left:0;transform:translate(-105%)}.internal-sidebar.is-open{transform:translate(0)}.internal-sidebar-header{height:86px;padding:0 1rem}.internal-brand-icon,.internal-brand-logo{width:64px;max-width:64px;height:64px;max-height:64px}.internal-sidebar-close{cursor:pointer;justify-content:center;align-items:center;display:inline-flex}.desktop-menu{display:none}.mobile-menu{display:inline-flex}.internal-topbar{padding:.6rem .85rem}.internal-topbar-row{align-items:flex-start;gap:.65rem}.internal-topbar-left{min-width:0}.internal-page-title{min-width:0;display:block}.internal-page-title>div{color:#64748b;letter-spacing:.08em;text-transform:uppercase;font-size:.68rem;font-weight:700;line-height:1.1}.internal-page-title h1{color:#0f172a;text-overflow:ellipsis;white-space:nowrap;margin:.08rem 0 0;font-size:1rem;font-weight:800;line-height:1.2;overflow:hidden}.internal-topbar-right{justify-content:flex-end;gap:.45rem}.internal-timezone-select{max-width:9.5rem;padding:.42rem .55rem;font-size:.75rem}.internal-user-pill{display:none}.internal-topbar-logout{padding:.48rem .6rem;font-size:0}.internal-topbar-logout svg{width:1rem;height:1rem}.internal-main{padding:.85rem}.dashboard-page,.dashboard-ref{gap:.85rem}.dashboard-title{font-size:1.18rem}.dashboard-page-subtitle{font-size:.8125rem}.dashboard-table-toolbar,.mapping-toolbar,.alarm-rules-toolbar,.device-ui-designer-toolbar{flex-direction:column;align-items:stretch}.dashboard-table-toolbar input,.dashboard-table-toolbar select,.dashboard-table-toolbar button,.mapping-toolbar input,.mapping-toolbar select,.mapping-toolbar button,.alarm-rules-toolbar input,.alarm-rules-toolbar select,.alarm-rules-toolbar button{width:100%}.data-table-scroll,.data-table-scroll--dashboard,.mapping-table-scroll{-webkit-overflow-scrolling:touch;max-width:100%}.data-table,.data-table--dashboard,.mapping-table{font-size:.78rem}.data-table th,.data-table td,.data-table--dashboard th,.data-table--dashboard td,.mapping-table th,.mapping-table td{padding:.5rem .55rem}}@media (width<=560px){.internal-topbar-row{flex-wrap:wrap}.internal-topbar-left,.internal-topbar-right{width:100%}.internal-timezone-select{flex:1;min-width:0;max-width:none}.internal-icon-button{min-width:2.35rem;min-height:2.35rem}.internal-main{padding:.7rem}.dashboard-table-panel,.data-table-card,.mapping-card,.alarm-rules-card{border-radius:.8rem}}.dashboard-ref{flex-direction:column;gap:1.25rem;display:flex}.dashboard-page{gap:1.5rem}.dashboard-page-header{flex-direction:column;gap:.35rem;display:flex}.dashboard-title{color:#0f172a;letter-spacing:-.02em;margin:0;font-size:1.5rem;font-weight:700;line-height:1.25}.dashboard-page-subtitle{color:#64748b;max-width:42rem;margin:0;font-size:.875rem;font-weight:500;line-height:1.45}.dashboard-section-label{color:#6b7280;margin-bottom:.5rem;font-size:.875rem;font-weight:500}.stats-strip{grid-template-rows:repeat(2,minmax(0,1fr));grid-auto-columns:minmax(150px,1fr);grid-auto-flow:column;gap:.75rem;padding-bottom:.5rem;display:grid;overflow-x:auto}.stat-card-ref{background:#fff;border:1px solid #d8dee8;border-radius:.75rem;min-width:150px;padding:.75rem;box-shadow:0 1px 2px #0f172a0a}.stat-card-inner{align-items:center;gap:.75rem;display:flex}.stat-card-icon{border-radius:.5rem;flex-shrink:0;place-items:center;width:2rem;height:2rem;display:grid}.stat-card-text{flex:1;min-width:0}.stat-card-text div{color:#6b7280;text-overflow:ellipsis;white-space:nowrap;font-size:.75rem;font-weight:500;overflow:hidden}.stat-card-text strong{color:#111827;text-align:center;font-size:.875rem;font-weight:800;display:block}.dashboard-table-panel{background:#fff;border:1px solid #e2e8f0;border-radius:1rem;overflow:hidden;box-shadow:0 1px 2px #0f172a0a,0 4px 16px #0f172a0f}.dashboard-latest-panel{border-color:#e2e8f0}.dashboard-table-toolbar{background:linear-gradient(#fafbfc 0%,#fff 100%);border-bottom:1px solid #f1f5f9;flex-wrap:wrap;justify-content:space-between;align-items:flex-start;gap:1rem;padding:1.125rem 1.25rem;display:flex}.dashboard-toolbar-title{flex-direction:column;gap:.2rem;min-width:0;display:flex}.dashboard-toolbar-heading{color:#0f172a;letter-spacing:-.01em;font-size:1rem;font-weight:700}.dashboard-toolbar-hint{color:#94a3b8;font-size:.75rem;font-weight:500}.dashboard-toolbar-actions{flex-wrap:wrap;gap:.5rem;display:flex}.dashboard-btn{cursor:pointer;border:1px solid #0000;border-radius:.5rem;align-items:center;gap:.4rem;padding:.5rem .9rem;font-size:.8125rem;font-weight:600;transition:background .15s,border-color .15s,color .15s,box-shadow .15s;display:inline-flex}.dashboard-btn-icon{opacity:.9;flex-shrink:0;width:.9375rem;height:.9375rem}.dashboard-btn--primary{color:#fff;background:#2563eb;border-color:#2563eb;box-shadow:0 1px 2px #2563eb40}.dashboard-btn--primary:hover{background:#1d4ed8;border-color:#1d4ed8}.dashboard-btn--primary:active{transform:translateY(.5px)}.dashboard-btn--secondary{color:#334155;background:#fff;border-color:#e2e8f0}.dashboard-btn--secondary:hover{color:#0f172a;background:#f8fafc;border-color:#cbd5e1}.dashboard-meta-strip{background:#f8fafc;border-bottom:1px solid #f1f5f9;flex-wrap:wrap;align-items:center;gap:.75rem;padding:.65rem 1.25rem;display:flex}.dashboard-meta-pill{background:#fff;border:1px solid #e2e8f0;border-radius:999px;align-items:center;gap:.5rem;padding:.25rem .65rem .25rem .45rem;display:inline-flex;box-shadow:0 1px 2px #0f172a0a}.dashboard-meta-pill-label{color:#1d4ed8;letter-spacing:.04em;text-transform:uppercase;background:#eff6ff;border-radius:999px;padding:.15rem .5rem;font-size:.6875rem;font-weight:700}.dashboard-meta-pill-value{color:#0f172a;font-variant-numeric:tabular-nums;font-size:.8125rem;font-weight:700}.dashboard-meta-pill-dim{color:#94a3b8;font-weight:600}.dashboard-meta-status{color:#64748b;font-size:.8125rem;font-weight:500}.dashboard-table-toolbar:not(:has(.dashboard-toolbar-actions)){align-items:center}.dashboard-table-toolbar:not(:has(.dashboard-toolbar-actions))>div:last-child{flex-wrap:wrap;gap:.5rem;display:flex}.dashboard-table-toolbar:not(:has(.dashboard-toolbar-actions)) button{color:#334155;cursor:pointer;background:#fff;border:1px solid #e2e8f0;border-radius:.5rem;align-items:center;gap:.35rem;padding:.45rem .75rem;font-size:.8125rem;font-weight:600;transition:background .12s,border-color .12s;display:inline-flex}.dashboard-table-toolbar:not(:has(.dashboard-toolbar-actions)) button:hover{color:#0f172a;background:#f8fafc;border-color:#cbd5e1}.data-table-scroll--dashboard{scrollbar-color:#cbd5e1 #f1f5f9;scrollbar-width:thin;background:#fff;max-height:min(70vh,56rem);overflow:auto}.data-table-scroll--dashboard::-webkit-scrollbar{width:8px;height:8px}.data-table-scroll--dashboard::-webkit-scrollbar-thumb{background:#cbd5e1;border-radius:999px}.data-table-scroll--dashboard::-webkit-scrollbar-track{background:#f1f5f9}.data-table--dashboard{border-collapse:separate;border-spacing:0;min-width:100%;font-size:.8125rem}.data-table--dashboard thead{z-index:10;position:sticky;top:0}.data-table--dashboard thead tr{background:#f8fafc;box-shadow:0 1px #e2e8f0}.data-table--dashboard th{color:#475569;letter-spacing:.03em;text-align:left;text-transform:none;vertical-align:top;background:#f8fafc;border-bottom:1px solid #e2e8f0;border-right:1px solid #f1f5f9;padding:.75rem .85rem;font-size:.6875rem;font-weight:600}.data-table--dashboard th:last-child{border-right:none}.data-table--dashboard .dashboard-th-label{color:#334155;letter-spacing:.08em;text-transform:uppercase;margin:0 0 .45rem;font-size:.6875rem;font-weight:700;line-height:1.3}.data-table--dashboard td{color:#334155;text-overflow:ellipsis;white-space:nowrap;background:#fff;border-bottom:1px solid #f1f5f9;border-right:1px solid #f1f5f9;max-width:18rem;padding:.65rem .85rem;font-size:.8125rem;font-weight:500;overflow:hidden}.data-table--dashboard td:last-child{border-right:none}.data-table--dashboard tbody tr:nth-child(2n) td{background:#fcfcfd}.data-table--dashboard tbody tr:hover td{background:#f1f5f9}.dashboard-cell-link{color:#2563eb;background:#eff6ff;border-radius:.375rem;align-items:center;padding:.2rem .5rem;font-size:.8125rem;font-weight:600;text-decoration:none;transition:background .12s,color .12s;display:inline-flex}.dashboard-cell-link:hover{color:#1d4ed8;background:#dbeafe;text-decoration:none}.dashboard-filter-control{outline:none;min-height:2rem;transition:border-color .12s,box-shadow .12s;color:#0f172a!important;background:#fff!important;border:1px solid #e2e8f0!important;border-radius:.5rem!important;padding:.35rem .55rem!important;font-size:.75rem!important;font-weight:500!important}.dashboard-filter-control:focus{box-shadow:0 0 0 3px #2563eb26;border-color:#93c5fd!important}.dashboard-filter-control::placeholder{color:#94a3b8}select.dashboard-filter-control--select{appearance:none;cursor:pointer;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='%2364748b' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E");background-position:right .5rem center;background-repeat:no-repeat;background-size:14px;background-color:#fff!important;padding-right:1.85rem!important}.dashboard-latest-panel .dashboard-numeric-filter .column-filter-input{margin-top:0}.dashboard-latest-panel .dashboard-filter-op{flex:0 0 7.5rem}.dashboard-filters{background:#f8fafc;border-bottom:1px solid #d8dee8;flex-wrap:wrap;align-items:end;gap:.75rem;padding:.85rem 1rem;display:flex}.dashboard-filters label{color:#64748b;flex-direction:column;gap:.25rem;font-size:.75rem;font-weight:700;display:flex}.dashboard-filters input,.dashboard-filters select{color:#111827;background:#fff;border:1px solid #d8dee8;border-radius:.375rem;min-width:120px;padding:.4rem .55rem}.dashboard-filters button{color:#334155;background:#fff;border:1px solid #d8dee8;border-radius:.375rem;padding:.45rem .7rem}.dashboard-filters span,.dashboard-status,.dashboard-rollup{color:#64748b;font-size:.8125rem}.dashboard-rollup,.dashboard-status{border-bottom:1px solid #d8dee8;padding:.5rem 1rem}.data-table-card{background:#fff;overflow:hidden}.data-table-scroll{max-height:70vh;overflow:auto}.data-table{border-collapse:collapse;min-width:100%;font-size:.875rem}.data-table thead{z-index:10;color:#111827;text-align:left;background:#94a3b8;position:sticky;top:0}.data-table th,.data-table td{white-space:nowrap;border:1px solid #d8dee8;padding:.625rem .75rem}.data-table th{vertical-align:top;font-size:.75rem;font-weight:700}.data-table td{color:#334155;text-overflow:ellipsis;max-width:18rem;overflow:hidden}.data-table tr:hover td{background:#f8fafc}.column-filter-input{color:#111827;background:#fff;border:1px solid #cbd5e1;border-radius:.35rem;width:100%;min-width:7rem;margin-top:.35rem;padding:.25rem .4rem;font-size:.72rem;font-weight:500;display:block}.dashboard-numeric-filter{align-items:stretch;gap:.35rem;margin-top:.35rem;display:flex}.dashboard-numeric-filter .column-filter-input{margin-top:0}.dashboard-filter-op{flex:0 0 6.5rem;min-width:0}.dashboard-filter-num{flex:1;min-width:3rem}.mapping-editor{flex-direction:column;gap:1rem;display:flex}.mapping-intro,.mapping-card,.mapping-actions{background:#fff;border:1px solid #d8dee8;border-radius:.75rem;padding:1rem;box-shadow:0 1px 2px #0f172a0a}.mapping-kicker{color:#3498db;letter-spacing:.08em;text-transform:uppercase;margin-bottom:.35rem;font-size:.75rem;font-weight:700}.mapping-intro h2,.mapping-card h3{color:#111827;margin:0 0 .5rem}.mapping-intro h2{font-size:1.35rem}.mapping-card h3{font-size:1rem}.mapping-intro p,.mapping-card p{color:#64748b;margin:0 0 .85rem;font-size:.875rem;line-height:1.55}.mapping-table-scroll{overflow-x:auto}.mapping-table{border-collapse:collapse;width:100%;min-width:760px;font-size:.875rem}.mapping-table th,.mapping-table td{vertical-align:middle;border:1px solid #d8dee8;padding:.5rem}.mapping-table th{color:#334155;text-align:left;background:#f1f5f9;font-weight:700}.mapping-table input,.mapping-table select{color:#111827;background:#fff;border:1px solid #d8dee8;border-radius:.375rem;outline:none;width:100%;min-width:7rem;padding:.4rem .55rem}.mapping-table input:focus,.mapping-table select:focus{border-color:#3498db;box-shadow:0 0 0 3px #3498db26}.mapping-check{white-space:nowrap;align-items:center;gap:.35rem;display:inline-flex}.mapping-check input{width:auto;min-width:0}.mapping-table button,.mapping-secondary,.mapping-actions button{color:#334155;cursor:pointer;background:#fff;border:1px solid #d8dee8;border-radius:.375rem;padding:.4rem .65rem;font-size:.8125rem}.mapping-secondary{margin-top:.75rem}.mapping-actions{align-items:center;gap:1rem;display:flex}.mapping-actions button{color:#fff;background:#3498db;border-color:#3498db;font-weight:600}.mapping-actions button:disabled{cursor:not-allowed;opacity:.6}.mapping-actions span{color:#64748b;font-size:.875rem}.mapping-toolbar-right{justify-content:flex-end;margin-bottom:.75rem;display:flex}.nested-rule-box{margin-top:.75rem;padding:.85rem 1rem}.ar-sites-box{max-height:12rem;margin-top:.5rem;padding:.65rem .75rem;overflow:auto}.ar-site-line{align-items:center;gap:.5rem;margin:.25rem 0;display:flex}.alarm-modal{z-index:100;justify-content:center;align-items:center;padding:1.5rem;display:flex;position:fixed;inset:0}.alarm-modal-backdrop{background:#0f172a73;position:absolute;inset:0}.alarm-modal-panel{z-index:1;width:min(640px,100%);max-height:min(90vh,900px);padding:1.25rem 1.5rem;position:relative;overflow:auto}.alarm-rules-page .mapping-intro{background:linear-gradient(135deg,#fff 0%,#f8fafc 100%);border-color:#e2e8f0;border-radius:1rem;box-shadow:0 4px 6px -1px #0f172a0f,0 2px 4px -2px #0f172a0a}.alarm-rules-toolbar{margin-bottom:1rem}.alarm-rules-add-btn{letter-spacing:.015em;color:#fff;cursor:pointer;background:linear-gradient(135deg,#0ea5e9 0%,#0284c7 50%,#0369a1 100%);border:none;border-radius:.625rem;align-items:center;gap:.45rem;padding:.55rem 1.05rem;font-size:.875rem;font-weight:600;transition:transform .14s,box-shadow .14s;display:inline-flex;box-shadow:0 1px 2px #0ea5e959,0 4px 14px #0ea5e938}.alarm-rules-add-btn:hover:not(:disabled){transform:translateY(-1px);box-shadow:0 4px 12px #0ea5e961,0 10px 22px #0ea5e926}.alarm-rules-add-btn-icon{opacity:.95;flex-shrink:0}.alarm-rules-list-card{border:1px solid #e2e8f0;border-radius:.875rem;overflow:hidden;box-shadow:0 4px 6px -1px #0f172a12,0 2px 4px -2px #0f172a0d}.alarm-rules-list-title{letter-spacing:-.02em;color:#0f172a;margin-bottom:.75rem;font-size:1.0625rem;font-weight:700}.alarm-rules-page .mapping-table thead th{text-transform:uppercase;letter-spacing:.05em;color:#64748b;background:linear-gradient(#f8fafc 0%,#f1f5f9 100%);font-size:.75rem;font-weight:700}.alarm-rules-page .mapping-table tbody tr:hover td{background:#fafbfc}.alarm-rules-page .mapping-table thead th.alarm-rules-actions-th{text-align:right;vertical-align:bottom;width:1%}.alarm-rules-page .mapping-table .alarm-rules-actions-cell{text-align:right;vertical-align:middle}.alarm-rules-page .mapping-table .alarm-rules-actions{flex-wrap:nowrap;justify-content:flex-end;align-items:center;gap:.45rem;display:inline-flex}.alarm-rules-page .mapping-table .alarm-rules-actions .alarm-rules-btn{letter-spacing:.02em;white-space:nowrap;cursor:pointer;border:1px solid #0000;border-radius:.5rem;justify-content:center;align-items:center;gap:.38rem;margin:0;padding:.4rem .75rem;font-family:inherit;font-size:.8125rem;font-weight:600;line-height:1.2;transition:background .14s,border-color .14s,color .14s,box-shadow .14s,transform .14s;display:inline-flex}.alarm-rules-page .mapping-table .alarm-rules-actions .alarm-rules-btn-icon{opacity:.88;flex-shrink:0}.alarm-rules-page .mapping-table .alarm-rules-actions .alarm-rules-btn--edit{color:#0369a1;background:linear-gradient(#f0f9fff2 0%,#e0f2fee0 100%);border-color:#0ea5e952;box-shadow:0 1px 2px #0ea5e914}.alarm-rules-page .mapping-table .alarm-rules-actions .alarm-rules-btn--edit:hover{color:#0c4a6e;background:#bae6fda6;border-color:#0ea5e973;transform:translateY(-1px);box-shadow:0 2px 6px #0ea5e924}.alarm-rules-page .mapping-table .alarm-rules-actions .alarm-rules-btn--edit:active{transform:translateY(0)}.alarm-rules-page .mapping-table .alarm-rules-actions .alarm-rules-btn--delete{color:#991b1b;background:linear-gradient(#fef2f2f2 0%,#fee2e28c 100%);border-color:#f8717159;box-shadow:0 1px 2px #dc262612}.alarm-rules-page .mapping-table .alarm-rules-actions .alarm-rules-btn--delete:hover{color:#7f1d1d;background:#fecaca8c;border-color:#ef444473;transform:translateY(-1px);box-shadow:0 2px 6px #dc26261f}.alarm-rules-page .mapping-table .alarm-rules-actions .alarm-rules-btn--delete:active{transform:translateY(0)}.alarm-rules-page .mapping-table .alarm-rules-actions .alarm-rules-btn--enable{color:#047857;background:linear-gradient(#ecfdf5f2 0%,#d1fae5b8 100%);border-color:#10b98159;box-shadow:0 1px 2px #10b9811a}.alarm-rules-page .mapping-table .alarm-rules-actions .alarm-rules-btn--enable:hover{color:#065f46;background:#a7f3d0a6;border-color:#05966973;transform:translateY(-1px);box-shadow:0 2px 6px #10b98126}.alarm-rules-page .mapping-table .alarm-rules-actions .alarm-rules-btn--enable:active{transform:translateY(0)}.modbus-devices-list-card{padding:1rem 1.1rem 1.1rem}.modbus-devices-status-banner{margin:0 0 .75rem}.modbus-devices-notice--success{color:#14532d;background:#f0fdf4f2;border:1px solid #22c55e73;border-radius:.5rem;padding:.65rem .85rem;font-weight:500}.modbus-devices-notice--error{color:#7f1d1d;background:#fef2f2f7;border:1px solid #f871718c;border-radius:.5rem;padding:.65rem .85rem;font-weight:500}.modbus-devices-empty,.modbus-devices-no-match{margin-top:.25rem}.modbus-devices-filters{flex-wrap:wrap;align-items:flex-end;gap:.75rem 1rem;margin-bottom:.75rem;display:flex}.modbus-devices-filter--grow{flex:12rem;min-width:10rem}.modbus-devices-filter-label{text-transform:uppercase;letter-spacing:.06em;color:#64748b;align-items:center;gap:.3rem;margin-bottom:.38rem;font-size:.6875rem;font-weight:700;display:inline-flex}.modbus-devices-filter-input-shell{align-items:center;display:flex;position:relative}.modbus-devices-filter-input-icon{color:#94a3b8;pointer-events:none;position:absolute;left:.65rem}.modbus-devices-filter-input.modbus-devices-filter-input{color:#0f172a;background:#f8fafc;border:1px solid #e2e8f0;border-radius:.5625rem;width:100%;padding:.45rem .65rem .45rem 2.35rem;font-size:.875rem;transition:border-color .15s,box-shadow .15s,background .15s}.modbus-devices-filter-input.modbus-devices-filter-input::placeholder{color:#94a3b8}.modbus-devices-filter-input.modbus-devices-filter-input:focus{background:#fff;border-color:#0ea5e98c;outline:none;box-shadow:0 0 0 3px #0ea5e91f}.modbus-devices-list-meta{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.65rem;margin-bottom:.5rem;display:flex}.modbus-devices-range{color:#475569;font-size:.8125rem}.modbus-devices-range strong{color:#0f172a;font-weight:700}.modbus-devices-range-sub .muted{font-size:.8125rem}.modbus-devices-pagination{background:linear-gradient(#fff 0%,#fafbfc 100%);border:1px solid #e2e8f0;border-radius:.625rem;align-items:center;gap:.35rem;padding:.18rem;display:inline-flex;box-shadow:0 1px 2px #0f172a0a}.modbus-devices-page-btn{color:#475569;cursor:pointer;background:0 0;border:none;border-radius:.45rem;justify-content:center;align-items:center;width:2.125rem;height:2.125rem;padding:0;transition:background .14s,color .14s,opacity .14s;display:inline-flex}.modbus-devices-page-btn:hover:not(:disabled){color:#0f172a;background:#f1f5f9}.modbus-devices-page-btn:disabled{opacity:.35;cursor:default}.modbus-devices-page-indicator{color:#64748b;white-space:nowrap;padding:0 .35rem;font-size:.78125rem;font-weight:600}.alarm-rules-page.modbus-devices-page .mapping-table-scroll{margin:0 -.08rem}.modbus-devices-table--compact.modbus-devices-table--compact th,.modbus-devices-table--compact.modbus-devices-table--compact td{vertical-align:middle;padding:.32rem .42rem;font-size:.8125rem}.alarm-rules-page.modbus-devices-page .mapping-table.modbus-devices-table--compact thead th{white-space:nowrap}.modbus-devices-table--compact{min-width:1040px}.modbus-device-dashboard-check{cursor:pointer;justify-content:center;align-items:center;margin:0;display:flex}.modbus-device-dashboard-check input{accent-color:#0ea5e9;cursor:pointer;width:1rem;height:1rem}.modbus-device-modal-device-block{flex-direction:column;gap:0;margin-bottom:.35rem;display:flex}.modbus-device-modal-device-block .alarm-rule-modal__field{margin-bottom:.85rem}.modbus-device-modal-device-block .alarm-rule-modal__field:last-child{margin-bottom:0}.modbus-device-dashboard-modal-field .modbus-device-dashboard-modal-checkbox{color:#334155;align-items:flex-start;gap:.5rem;margin-top:.35rem;font-weight:500}.modbus-device-dashboard-modal-field .modbus-device-dashboard-modal-checkbox input{flex-shrink:0;margin-top:.15rem}.modbus-devices-th-narrow{width:1%}.modbus-devices-th-action{width:1%;text-align:center!important;vertical-align:middle!important;font-size:.6875rem!important}.modbus-devices-td-compact{text-overflow:ellipsis;max-width:10rem;overflow:hidden}.modbus-devices-td-center{text-align:center}.modbus-devices-action-cell{text-align:center;width:1%;vertical-align:middle!important;padding-left:.28rem!important;padding-right:.28rem!important}.modbus-devices-icon-action{box-sizing:border-box;color:#64748b;cursor:pointer;background:linear-gradient(#fff 0%,#f8fafc 100%);border:1px solid #e2e8f0;border-radius:.4375rem;justify-content:center;align-items:center;width:2rem;height:2rem;margin:0;padding:0;transition:background .14s,border-color .14s,color .14s,box-shadow .14s,transform .14s;display:inline-flex}a.modbus-devices-icon-action{text-decoration:none}.alarm-rules-page.modbus-devices-page .mapping-table.modbus-devices-table--compact button.modbus-devices-icon-action{font-size:inherit;min-width:2rem;padding:0;line-height:1}.modbus-devices-icon-action.modbus-devices-icon-action--ghost:hover{color:#0369a1;border-color:#0ea5e973;transform:translateY(-1px);box-shadow:0 2px 6px #0ea5e91f}.modbus-devices-icon-action.modbus-devices-icon-action--edit:hover{color:#1d4ed8;background:#3b82f60f;border-color:#3b82f666}.modbus-devices-icon-action.modbus-devices-icon-action--delete:hover{color:#b91c1c;background:#fee2e280;border-color:#f8717199}.alarm-rules-page.modbus-devices-page .mapping-toolbar-right.alarm-rules-toolbar{flex-wrap:wrap;justify-content:flex-end;align-items:stretch;gap:.55rem;display:flex}.modbus-devices-toolbar-primary[disabled]{opacity:.68;cursor:wait}.modbus-devices-toolbar-csv{color:#334155;cursor:pointer;background:linear-gradient(#fff 0%,#f8fafc 100%);border:1px solid #94a3b873;border-radius:.625rem;align-items:center;gap:.4rem;padding:.52rem 1rem;font-size:.875rem;font-weight:650;text-decoration:none;transition:transform .14s,box-shadow .14s,border-color .14s;display:inline-flex}.modbus-devices-toolbar-csv:hover{border-color:#0ea5e96b;transform:translateY(-1px);box-shadow:0 6px 16px #0f172a14}.modbus-devices-toolbar-csv-icon{color:#0ea5e9;flex-shrink:0}.modbus-device-modal-shell.alarm-rule-modal-shell .alarm-modal-panel.alarm-rule-modal{width:min(920px,100vw - 1.5rem);max-width:100%}.modbus-device-bindings{flex-direction:column;gap:.35rem;display:flex}.modbus-device-bindings-head{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.75rem;margin-top:.25rem;display:flex}.modbus-device-bindings-head strong{font-size:.9rem}.modbus-device-bindings-list{flex-direction:column;gap:.5rem;max-height:min(48vh,340px);margin-right:-.25rem;padding:.15rem .35rem .15rem 0;display:flex;overflow-y:auto}.modbus-device-binding-card{background:#f8fafc;border:1px solid #e2e8f0;border-radius:.65rem;padding:.55rem .65rem .6rem}.modbus-device-binding-card__title{text-transform:uppercase;letter-spacing:.035em;color:#64748b;margin:0 0 .4rem;font-size:.68rem;font-weight:600}.modbus-device-binding-card__grid{grid-template-columns:minmax(0,1.1fr) repeat(3,minmax(0,1fr)) auto;align-items:start;gap:.45rem .6rem;display:grid}.modbus-connection-combobox{min-width:0}.modbus-connection-combobox-trigger{box-sizing:border-box;text-align:left;color:#0f172a;cursor:pointer;background:#fff;border:1px solid #e2e8f0;border-radius:.625rem;justify-content:space-between;align-items:center;gap:.5rem;width:100%;padding:.615rem .825rem;font-size:.9375rem;font-weight:500;line-height:1.45;transition:border-color .15s,box-shadow .15s;display:flex;box-shadow:0 1px 2px #0f172a0a}.modbus-connection-combobox-trigger:hover:not(:disabled){border-color:#cbd5e1}.modbus-connection-combobox-trigger.is-open{border-color:#38bdf8;box-shadow:0 0 0 3px #38bdf840}.modbus-connection-combobox-trigger.is-placeholder{color:#94a3b8;font-weight:450}.modbus-connection-combobox-trigger:disabled{opacity:.55;cursor:not-allowed}.modbus-connection-combobox-trigger-label{text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;overflow:hidden}.modbus-connection-combobox-chevron{color:#94a3b8;flex-shrink:0;transition:transform .15s}.modbus-connection-combobox-trigger.is-open .modbus-connection-combobox-chevron{color:#0284c7;transform:rotate(180deg)}.modbus-connection-combobox-panel{background:#fff;border:1px solid #e2e8f0;border-radius:.55rem;margin-top:.35rem;overflow:hidden;box-shadow:0 8px 28px -8px #0f172a2e}.modbus-connection-combobox-search{background:#fafbfc;border-bottom:1px solid #f1f5f9;align-items:center;gap:.4rem;padding:.45rem .55rem;display:flex}.modbus-connection-combobox-search-icon{color:#94a3b8;flex-shrink:0}.modbus-connection-combobox-search input{background:0 0;border:none;outline:none;flex:1;min-width:0;padding:.2rem 0;font-size:.875rem}.modbus-connection-combobox-list{max-height:11rem;padding:.25rem;overflow-y:auto}.modbus-connection-combobox-option{text-align:left;cursor:pointer;color:#0f172a;background:0 0;border:none;border-radius:.4rem;flex-direction:column;align-items:stretch;gap:.12rem;width:100%;padding:.45rem .5rem;font-size:.8125rem;font-weight:500;display:flex}.modbus-connection-combobox-option:hover{background:#f1f5f9}.modbus-connection-combobox-option.is-selected{color:#0369a1;background:#0ea5e91f}.modbus-connection-combobox-option-id{color:#64748b;word-break:break-all;font-size:.68rem;font-weight:400}.modbus-connection-combobox-empty{text-align:center;padding:.6rem .45rem}.modbus-device-binding-card__grid .alarm-rule-modal__field{margin-bottom:0}.modbus-device-binding-card__grid .alarm-rule-modal__field>span:first-child{margin-bottom:.2rem;font-size:.72rem}.modbus-device-binding-card__actions{align-items:flex-start;padding-top:1.55rem;display:flex}.modbus-device-binding-remove{color:#94a3b8;cursor:pointer;background:#fff;border:1px solid #0000;border-radius:.5rem;flex-shrink:0;justify-content:center;align-items:center;width:2.35rem;height:2.35rem;padding:0;display:inline-flex;box-shadow:0 1px 2px #0f172a0f}.modbus-device-binding-remove:hover:not(:disabled){color:#b91c1c;background:#fef2f2;border-color:#fecaca}.modbus-device-binding-remove:disabled{opacity:.35;cursor:not-allowed;box-shadow:none}.modbus-device-binding-add.modbus-devices-binding-add{flex-shrink:0;padding:.35rem .65rem;font-size:.8125rem}.modbus-device-binding-add .alarm-rules-add-btn-icon{width:15px;height:15px}@media (width<=720px){.modbus-device-binding-card__grid{grid-template-columns:1fr}.modbus-device-binding-card__actions{justify-content:flex-end;align-self:stretch;padding-top:.15rem}}.modbus-devices-device-cell{max-width:12rem}.modbus-devices-device-title{align-items:center;gap:.32rem;margin-bottom:.1rem;display:inline-flex}.modbus-devices-device-icon{color:#0369a1;flex-shrink:0}.modbus-devices-device-id{color:#64748b;word-break:break-all;background:#f1f5f9;border:1px solid #e2e8f0;border-radius:.28rem;max-width:100%;padding:.06rem .28rem;font-size:.66rem;display:inline-block}.modbus-devices-pill-wrap{align-items:center;gap:.28rem;min-width:0;display:inline-flex}.modbus-devices-cell-icon{color:#94a3b8;flex-shrink:0}.modbus-devices-status-pill{color:#1d4ed8;background:#3b82f61f;border:1px solid #3b82f638;border-radius:999px;padding:.12rem .42rem;font-size:.6875rem;font-weight:600;display:inline-flex}.modbus-devices-status-pill--online{color:#047857;background:#10b98126;border:1px solid #10b98159}.modbus-devices-status-pill--offline{color:#b91c1c;background:#ef444424;border:1px solid #ef444461}.modbus-devices-slave-badge{color:#475569;background:#f8fafc;border:1px solid #e2e8f0;border-radius:.35rem;justify-content:center;min-width:1.45rem;padding:.06rem .35rem;font-size:.75rem;font-weight:700;display:inline-flex}button.modbus-devices-gateway-count-badge{cursor:pointer;font:inherit;line-height:inherit}button.modbus-devices-gateway-count-badge:hover{color:#1e40af;background:#eff6ff;border-color:#bfdbfe}button.modbus-devices-gateway-count-badge:focus-visible{outline-offset:2px;outline:2px solid #3b82f6}.modbus-device-gateway-detail-lead{margin:0 0 .75rem}.modbus-templates-io-toolbar{flex-wrap:wrap;gap:.5rem}.modbus-templates-io-toolbar .modbus-templates-io-replace{align-items:center;gap:.35rem;margin-right:.25rem;font-size:.8125rem;display:inline-flex}.csu-templates-io-toolbar,.snmp-templates-io-toolbar{flex-wrap:wrap;gap:.5rem}.modbus-templates-page .alarm-rules-list-card .alarm-rules-list-title{margin-bottom:0}.modbus-templates-card-head{margin-bottom:.85rem}.modbus-templates-empty,.modbus-templates-no-match{margin-top:.25rem}.modbus-templates-copy-intro{margin:0 0 1rem;line-height:1.5}.modbus-template-edit-modal.alarm-rule-modal-shell .alarm-modal-panel.alarm-rule-modal,.modbus-template-copy-modal.alarm-rule-modal-shell .alarm-modal-panel.alarm-rule-modal{width:min(520px,100%)}.modbus-templates-name-cell{max-width:16rem}.modbus-templates-name-row{align-items:center;gap:.32rem;margin-bottom:.08rem;display:inline-flex}.modbus-templates-name-icon{color:#6d28d9;flex-shrink:0}.modbus-templates-td-interval{white-space:nowrap}.modbus-templates-interval-pill{color:#92400e;background:#fbbf2424;border:1px solid #f59e0b52;border-radius:999px;align-items:center;gap:.32rem;padding:.15rem .45rem;font-size:.75rem;font-weight:600;display:inline-flex}.modbus-templates-interval-pill-icon{color:#ca8a04;flex-shrink:0}.modbus-templates-count-badge{color:#047857;background:#10b98114;border:1px solid #10b98147;border-radius:.35rem;justify-content:center;min-width:1.5rem;padding:.08rem .38rem;font-size:.75rem;font-weight:700;display:inline-flex}.modbus-templates-th-num{width:1%;text-align:center!important}.modbus-templates-th-interval{white-space:nowrap;width:1%}.modbus-templates-td-num{text-align:center}.mapping-table.modbus-templates-table.modbus-templates-table{min-width:840px}.modbus-templates-icon-copy:hover:not(:disabled){box-shadow:0 2px 8px #7c3aed1f;color:#6d28d9!important;border-color:#7c3aed66!important}.modbus-templates-icon-open:hover{color:#0369a1!important}button.modbus-devices-icon-action:disabled{opacity:.42;cursor:not-allowed;pointer-events:none;transform:none!important}.modbus-template-detail-page .mapping-intro{background:linear-gradient(135deg,#fff 0%,#f8fafc 100%);border-color:#e2e8f0;border-radius:1rem;box-shadow:0 4px 6px -1px #0f172a0f,0 2px 4px -2px #0f172a0a}.modbus-template-detail-toolbar{flex-wrap:wrap;align-items:center;gap:.55rem;margin-top:.65rem;display:flex}.modbus-template-detail-page .alarm-rules-list-card{padding:1rem 1.1rem 1.1rem}.modbus-template-detail-sub{margin:.2rem 0 0;line-height:1.45}.modbus-template-detail-card-title{margin-bottom:.15rem!important}.modbus-template-detail-add-slave-actions{margin-top:.75rem}.modbus-template-detail-slaves-table{min-width:520px}.modbus-template-detail-slave-selected td{background:#0ea5e914!important}.modbus-template-detail-slave-name-cell{max-width:16rem}.modbus-template-detail-slave-row{align-items:center;gap:.35rem;margin-bottom:.06rem;display:inline-flex}.modbus-template-detail-slave-link{color:inherit;text-decoration:none}.modbus-template-detail-slave-link:hover .modbus-template-detail-slave-row strong{color:#0284c7}.modbus-template-detail-slave-icon{color:#0369a1;flex-shrink:0}.modbus-template-detail-vars-head{flex-wrap:wrap;justify-content:space-between;align-items:flex-start;gap:.85rem;margin-bottom:.85rem;display:flex}.modbus-template-detail-vars-toolbar{flex-wrap:wrap;align-items:center;gap:.5rem;display:flex}.modbus-template-detail-import-input{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.modbus-template-detail-import-drop{cursor:pointer;background:linear-gradient(#fafbfc 0%,#f1f5f9 100%);border:2px dashed #cbd5e1;border-radius:.75rem;flex-wrap:wrap;align-items:center;gap:.75rem 1rem;margin-bottom:.85rem;padding:1rem 1.15rem;transition:border-color .15s,background .15s,box-shadow .15s;display:flex;position:relative}.modbus-template-detail-import-drop:focus-within{border-color:#0ea5e98c;box-shadow:0 0 0 3px #0ea5e91f}.modbus-template-detail-import-drop--hover{background:#e0f2fe73;border-color:#0ea5e9a6}.modbus-template-detail-import-drop--busy{opacity:.72;pointer-events:none}.modbus-template-detail-import-icon{color:#0ea5e9;flex-shrink:0}.modbus-template-detail-import-copy{flex-direction:column;flex:10rem;gap:.15rem;min-width:0;display:flex}.modbus-template-detail-import-browse{color:#334155;cursor:pointer;background:#fff;border:1px solid #e2e8f0;border-radius:.5625rem;flex-shrink:0;justify-content:center;align-items:center;gap:.35rem;padding:.45rem .95rem;font-size:.8125rem;font-weight:650;transition:border-color .14s,box-shadow .14s,transform .14s;display:inline-flex}.modbus-template-detail-import-browse:hover:not(:disabled){border-color:#0ea5e973;box-shadow:0 2px 10px #0f172a12}.modbus-template-detail-import-browse:disabled{cursor:wait}.modbus-template-detail-page svg.spin{animation:.85s linear infinite spin}.modbus-template-detail-vars-table{min-width:720px}.modbus-template-detail-th-num{width:1%;text-align:center!important}.modbus-template-detail-var-name .modbus-templates-name-icon{color:#0ea5e9}.modbus-template-detail-display-pill{color:#475569;background:#f1f5f9;border:1px solid #e2e8f0;border-radius:.35rem;padding:.1rem .38rem;font-size:.72rem;font-weight:700;display:inline-flex}.modbus-template-var-modal-shell.alarm-rule-modal-shell .alarm-modal-panel.alarm-rule-modal{width:min(min(560px,96vw),100%)}.modbus-template-var-modal-form.template-var-form{box-shadow:none;background:0 0;border:none;margin:0;padding:0}.modbus-template-var-modal-form.template-var-form .template-var-form-name{margin-bottom:.75rem}.modbus-template-detail-calc-add{font-size:.8125rem}.csu-data-page .mapping-intro,.csu-mapping-page .mapping-intro,.device-ui-designer-page .mapping-intro{background:linear-gradient(135deg,#fff 0%,#f8fafc 100%);border-color:#e2e8f0;border-radius:1rem;box-shadow:0 4px 6px -1px #0f172a0f,0 2px 4px -2px #0f172a0a}.csu-mapping-list-card{padding:1rem 1.1rem 1.05rem}.csu-mapping-list-title{margin-bottom:.85rem!important}.csu-mapping-table.mapping-table thead th{vertical-align:bottom}.csu-mapping-th-num,.csu-mapping-td-num{text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap}.csu-mapping-th-num{width:1%}.csu-mapping-td-code code{font-size:.8125rem}.csu-mapping-td-label strong{color:#0f172a;font-weight:600}.csu-mapping-td-formula{word-break:break-word;max-width:11rem}.csu-mapping-modal-shell .alarm-rule-modal .alarm-rule-modal__body{max-height:min(70vh,32rem);overflow-y:auto}.csu-mapping-calc-ref.calc-ref-block{margin-top:.25rem}.dashboard-mapping-toolbar{margin-bottom:1rem}.dashboard-mapping-save-feedback{color:#334155;margin:-.35rem 0 1rem;font-size:.875rem;line-height:1.45}.dashboard-mapping-card{padding:1rem 1.1rem 1.05rem}.dashboard-mapping-section-title{margin-bottom:0!important}.dashboard-mapping-panel-head{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.65rem;margin-bottom:.65rem;display:flex}.dashboard-mapping-panel-head .dashboard-mapping-section-title{margin-bottom:0!important}.dashboard-mapping-section-help{margin:0 0 .85rem;font-size:.875rem;line-height:1.45}.dashboard-mapping-table.mapping-table thead th{vertical-align:bottom;font-size:.6875rem}.dashboard-mapping-cell-input,.dashboard-mapping-cell-select{box-sizing:border-box;color:#0f172a;background:#f8fafc;border:1px solid #e2e8f0;border-radius:.5rem;outline:none;width:100%;min-width:3rem;padding:.42rem .55rem;font-family:inherit;font-size:.8125rem;transition:border-color .15s,box-shadow .15s,background .15s}.dashboard-mapping-cell-input:focus,.dashboard-mapping-cell-select:focus{background:#fff;border-color:#0ea5e98c;box-shadow:0 0 0 3px #0ea5e91f}.dashboard-mapping-checkbox{color:#334155;align-items:center;gap:.4rem;font-size:.8125rem;font-weight:600;display:inline-flex}.dashboard-mapping-checkbox input{accent-color:#0ea5e9;width:1rem;height:1rem}.dashboard-mapping-rows-card .dashboard-mapping-rows-head{align-items:flex-start}.dashboard-mapping-rows-head-actions{flex-wrap:wrap;justify-content:flex-end;align-items:center;gap:.5rem .65rem;display:flex}.dashboard-mapping-rows-filter{align-items:center;display:flex;position:relative}.dashboard-mapping-rows-filter-icon{color:#94a3b8;pointer-events:none;position:absolute;left:.55rem}.dashboard-mapping-rows-filter-input{background:#f8fafc;border:1px solid #e2e8f0;border-radius:.5rem;outline:none;width:min(14rem,42vw);padding:.38rem .55rem .38rem 2rem;font-size:.8125rem}.dashboard-mapping-rows-filter-input:focus{background:#fff;border-color:#0ea5e98c;box-shadow:0 0 0 3px #0ea5e91f}.dashboard-mapping-device-picker{position:relative}.dashboard-mapping-add-devices-btn{white-space:nowrap}.dashboard-mapping-device-picker-popover{z-index:40;background:#fff;border:1px solid #e2e8f0;border-radius:.65rem;flex-direction:column;width:min(22rem,100vw - 2rem);max-height:min(22rem,55vh);display:flex;position:absolute;top:calc(100% + 6px);right:0;box-shadow:0 10px 40px -12px #0f172a40,0 4px 16px -8px #0f172a1f}.dashboard-mapping-device-picker-search{border-bottom:1px solid #f1f5f9;align-items:center;gap:.35rem;padding:.55rem .65rem;display:flex}.dashboard-mapping-device-picker-search-icon{color:#94a3b8;flex-shrink:0}.dashboard-mapping-device-picker-search input{background:0 0;border:none;outline:none;flex:1;min-width:0;font-size:.875rem}.dashboard-mapping-device-picker-list{flex:1;max-height:14rem;padding:.35rem;overflow-y:auto}.dashboard-mapping-device-picker-row{cursor:pointer;border:1px solid #0000;border-radius:.45rem;flex-wrap:wrap;align-items:flex-start;gap:.35rem .5rem;padding:.45rem .5rem;display:flex}.dashboard-mapping-device-picker-row:hover{background:#f8fafc}.dashboard-mapping-device-picker-row.is-selected{background:#0ea5e914;border-color:#0ea5e940}.dashboard-mapping-device-picker-row input{accent-color:#0ea5e9;margin-top:.2rem}.dashboard-mapping-device-picker-row-main{flex-direction:column;flex:1;gap:.12rem;min-width:0;display:flex}.dashboard-mapping-device-picker-name{color:#0f172a;font-size:.8125rem;font-weight:600}.dashboard-mapping-device-picker-id{word-break:break-all;font-size:.72rem}.dashboard-mapping-device-picker-meta{width:100%;font-size:.72rem}.dashboard-mapping-device-picker-empty{flex-direction:column;gap:.5rem;margin:0;padding:.75rem .5rem;display:flex}.dashboard-mapping-device-picker-empty p{margin:0}.dashboard-mapping-device-picker-open-dm{color:#0284c7;align-self:flex-start;font-size:.8125rem;font-weight:600;text-decoration:none}.dashboard-mapping-device-picker-open-dm:hover{text-decoration:underline}.dashboard-mapping-device-picker-footer{background:#fafbfc;border-top:1px solid #f1f5f9;border-radius:0 0 .65rem .65rem;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.5rem;padding:.5rem .65rem;display:flex}.dashboard-mapping-device-picker-footer-buttons{gap:.4rem;display:flex}.dashboard-mapping-device-picker-cancel{cursor:pointer;background:#fff;border:1px solid #e2e8f0;border-radius:.45rem;padding:.35rem .65rem;font-size:.8125rem}.dashboard-mapping-device-picker-cancel:hover{background:#f8fafc}.dashboard-mapping-add-empty-row{color:#475569;cursor:pointer;background:0 0;border:1px dashed #cbd5e1;border-radius:.5rem;align-items:center;gap:.28rem;padding:.38rem .65rem;font-size:.8125rem;font-weight:600;display:inline-flex}.dashboard-mapping-add-empty-row:hover:not(:disabled){color:#0369a1;background:#0ea5e90f;border-color:#0ea5e9}.dashboard-mapping-rows-table-wrap{border-radius:.55rem}.dashboard-mapping-rows-table .dashboard-mapping-cell-input--mono{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;font-size:.78rem}.modbus-gateways-toolbar{margin-bottom:1rem}.modbus-gateways-list-card{padding:1rem 1.1rem 1.05rem}.modbus-gateways-table .modbus-gateways-td-mono{word-break:break-all;font-size:.78rem}.modbus-gateway-modal-shell .alarm-rule-modal .alarm-rule-modal__body{max-height:min(70vh,28rem);overflow-y:auto}.modbus-gateway-modal-vpn-serial{margin-top:.65rem}.dashboard-mapping-th-num,.dashboard-mapping-td-num{text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap}.dashboard-mapping-th-num,.dashboard-mapping-th-narrow{width:1%}.csu-data-panel.alarm-rules-list-card{padding:1rem 1.1rem 1.05rem}.csu-data-panel-head{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.65rem;margin-bottom:.75rem;display:flex}.csu-data-panel-title{margin-bottom:0!important}.csu-data-csv-btn.modbus-devices-toolbar-csv{cursor:pointer;border:none;font-family:inherit;text-decoration:none}.csu-data-filters{flex-wrap:wrap;align-items:flex-end;gap:.75rem 1.1rem;margin-bottom:.85rem;display:flex}.csu-data-filter-field{flex:11rem;min-width:8rem}.csu-data-filter-field--num{flex:0 7rem;min-width:5.5rem}.csu-data-num-input{color:#0f172a;background:#f8fafc;border:1px solid #e2e8f0;border-radius:.5625rem;outline:none;width:100%;padding:.45rem .62rem;font-size:.875rem;transition:border-color .15s,box-shadow .15s,background .15s}.csu-data-num-input:focus{background:#fff;border-color:#0ea5e98c;box-shadow:0 0 0 3px #0ea5e91f}.csu-data-filter-meta{text-align:right;flex:14rem;margin-left:auto}.csu-data-table-scroll.mapping-table-scroll{margin:0 -.06rem}.csu-data-table.mapping-table thead th.csu-data-th-metric{vertical-align:bottom;max-width:9rem}.csu-data-metric-head-main{text-transform:none;letter-spacing:.02em;white-space:normal;-webkit-hyphens:auto;hyphens:auto;color:#334155;font-size:.6875rem;font-weight:700;line-height:1.25}.csu-data-metric-head-sub{margin-top:.2rem;font-size:.625rem;font-weight:500}.csu-data-metric-head-sub code{word-break:break-all;color:#94a3b8;max-width:100%;display:inline-block}.csu-data-th-update{min-width:9.5rem}.csu-data-th-narrow,.csu-data-th-poll{white-space:nowrap;width:1%}.csu-data-td-time{white-space:nowrap;font-size:.78125rem}.csu-data-td-code code{font-size:.78rem}.csu-data-ok-badge{letter-spacing:.04em;text-transform:uppercase;border-radius:999px;justify-content:center;align-items:center;min-width:2.35rem;padding:.12rem .42rem;font-size:.6875rem;font-weight:700;display:inline-flex}.csu-data-ok-badge--yes{color:#047857;background:#10b98126;border:1px solid #10b98159}.csu-data-ok-badge--no{color:#64748b;background:#f1f5f9;border:1px solid #e2e8f0}.csu-data-td-poll{vertical-align:middle}.csu-data-poll-cell{flex-direction:column;align-items:stretch;gap:.28rem;min-width:5rem;display:flex}.csu-data-poll-btn{color:#0f172a;cursor:pointer;background:linear-gradient(#fff 0%,#f8fafc 100%);border:1px solid #94a3b873;border-radius:.45rem;justify-content:center;align-items:center;gap:.38rem;padding:.35rem .72rem;font-size:.78125rem;font-weight:650;transition:transform .14s,box-shadow .14s,border-color .14s;display:inline-flex}.csu-data-poll-btn:hover:not(:disabled){border-color:#0ea5e980;box-shadow:0 4px 12px #0ea5e924}.csu-data-poll-btn:disabled{opacity:.75;cursor:wait}.csu-data-poll-msg{line-height:1.35}.csu-data-poll-spin{animation:.85s linear infinite spin}.offline-alarm-rules-page .oar-modal-row-split{flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:.5rem;margin:.25rem 0 .4rem;display:flex}.offline-alarm-rules-page .oar-modal-field-label{color:#0f172a;font-size:.8125rem;font-weight:600}.offline-alarm-rules-page .oar-modal-enabled-wrap{padding-top:.35rem}.offline-alarm-rules-page .oar-modal-enabled-label{cursor:pointer;color:#0f172a;align-items:center;gap:.45rem;margin:0;font-size:.875rem;font-weight:600;display:inline-flex}.offline-alarm-rules-modal-shell.alarm-rule-modal-shell .alarm-modal-panel.alarm-rule-modal{width:min(640px,100%)}.alarm-mapping-save-feedback{color:#334155;margin:0 0 1rem;font-size:.875rem;line-height:1.45}.alarm-mapping-page .am-map-pill{letter-spacing:.05em;text-transform:uppercase;white-space:nowrap;border:1px solid #0000;border-radius:999px;align-items:center;gap:.32rem;padding:.22rem .62rem;font-size:.6875rem;font-weight:700;display:inline-flex}.alarm-mapping-page .am-map-pill-icon{flex-shrink:0}.alarm-mapping-page .am-map-pill--minor{color:#1d4ed8;background:#3b82f624;border-color:#3b82f640}.alarm-mapping-page .am-map-pill--major{color:#b45309;background:#f59e0b29;border-color:#f59e0b4d}.alarm-mapping-page .am-map-pill--critical{color:#b91c1c;background:#ef44441f;border-color:#ef444447}.alarm-mapping-page .am-map-pill--on{color:#047857;text-transform:none;letter-spacing:.02em;background:#10b9811f;border-color:#10b98147;font-size:.75rem;font-weight:600}.alarm-mapping-page .am-map-pill--off{color:#64748b;text-transform:none;letter-spacing:.02em;background:#f1f5f9;border-color:#e2e8f0;font-size:.75rem;font-weight:600}.alarm-mapping-modal-shell.alarm-rule-modal-shell .alarm-modal-panel.alarm-rule-modal{width:min(520px,100%)}.alarm-mapping-page .alarm-rule-modal__field--textarea-tight{margin-bottom:.35rem}.alarm-modal.alarm-rule-modal-shell{z-index:10050}.alarm-rule-modal-shell .alarm-modal-backdrop{appearance:none;cursor:pointer;-webkit-backdrop-filter:blur(5px);background:#0f172a8c;border:none;width:100%;height:100%;margin:0;display:block;position:absolute;inset:0}.alarm-rule-modal-shell .alarm-modal-panel.alarm-rule-modal{background:#fff;border:1px solid #e2e8f0e6;border-radius:1.125rem;flex-direction:column;width:min(560px,100%);max-height:min(88vh,920px);padding:0;display:flex;overflow:hidden;box-shadow:0 0 0 1px #0f172a0a,0 25px 50px -12px #0f172a40,0 14px 30px #38bdf814}.alarm-rule-modal__header{background:linear-gradient(#fff 0%,#fafbfc 100%);border-bottom:1px solid #f1f5f9;flex-shrink:0;justify-content:space-between;align-items:flex-start;gap:1rem;padding:1.35rem 1.5rem 1rem;display:flex}.alarm-rule-modal__header-copy{min-width:0}.alarm-rule-modal__eyebrow{text-transform:uppercase;letter-spacing:.12em;color:#38bdf8;margin:0 0 .35rem;font-size:.6875rem;font-weight:700}.alarm-rule-modal__header h3{letter-spacing:-.035em;color:#0f172a;margin:0;font-size:1.3125rem;font-weight:800;line-height:1.2}.alarm-rule-modal__close{cursor:pointer;color:#64748b;background:#f8fafc;border:none;border-radius:.625rem;flex-shrink:0;justify-content:center;align-items:center;width:2.25rem;height:2.25rem;margin:-.25rem -.25rem 0 0;padding:0;transition:background .12s,color .12s;display:inline-flex}.alarm-rule-modal__close:hover{color:#0f172a;background:#e2e8f0}.alarm-rule-modal__body{scroll-behavior:smooth;flex:1;padding:.85rem 1.5rem 1.35rem;overflow-y:auto}.alarm-rule-modal__section+.alarm-rule-modal__section{border-top:1px dashed #e2e8f0;margin-top:1.6rem;padding-top:1.5rem}.alarm-rule-modal__section-title{text-transform:uppercase;letter-spacing:.06em;color:#475569;align-items:center;gap:.5rem;margin:0 0 1rem;font-size:.8125rem;font-weight:700;display:flex}.alarm-rule-modal__section-icon{color:#0ea5e9;flex-shrink:0}.alarm-rule-modal__hint{color:#64748b;margin:-.25rem 0 1rem;font-size:.8125rem;line-height:1.45}.alarm-rule-modal__hint a{color:#0369a1;font-weight:600;text-decoration:none}.alarm-rule-modal__hint a:hover{text-decoration:underline}.alarm-rule-modal__field{color:#475569;flex-direction:column;gap:.45rem;margin-bottom:1rem;font-size:.8125rem;font-weight:600;display:flex}.alarm-rule-modal__field--sites-label{margin-bottom:.35rem}.alarm-rule-modal__field:last-child,.alarm-rule-modal__grid-two{margin-bottom:0}@media (width>=520px){.alarm-rule-modal .alarm-rule-modal__grid-two.gateway-form-grid{grid-template-columns:1fr 1fr}.alarm-rule-modal .alarm-rule-modal__grid-ops.gateway-form-grid{grid-template-columns:repeat(2,1fr)}}@media (width>=640px){.alarm-rule-modal .alarm-rule-modal__grid-ops.gateway-form-grid{grid-template-columns:repeat(4,1fr)}}.alarm-rule-modal input:not([type=checkbox]),.alarm-rule-modal select,.alarm-rule-modal textarea{box-sizing:border-box;color:#0f172a;background:#fff;border:1px solid #e2e8f0;border-radius:.625rem;width:100%;max-width:100%;padding:.615rem .825rem;font-size:.9375rem;font-weight:500;line-height:1.45;transition:border-color .15s,box-shadow .15s;box-shadow:0 1px 2px #0f172a0a}.alarm-rule-modal input:not([type=checkbox])::-moz-placeholder{color:#94a3b8;font-weight:400}.alarm-rule-modal textarea::-moz-placeholder{color:#94a3b8;font-weight:400}.alarm-rule-modal input:not([type=checkbox])::placeholder,.alarm-rule-modal textarea::placeholder{color:#94a3b8;font-weight:400}.alarm-rule-modal input:not([type=checkbox]):hover,.alarm-rule-modal select:hover,.alarm-rule-modal textarea:hover{border-color:#cbd5e1}.alarm-rule-modal input:not([type=checkbox]):focus,.alarm-rule-modal select:focus,.alarm-rule-modal textarea:focus{border-color:#38bdf8;outline:none;box-shadow:0 0 0 3px #38bdf840}.alarm-rule-modal select{appearance:none;cursor:pointer;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='%2394a3b8' stroke-width='2'%3E%3Cpath d='M6 9l6 6 6-6'/%3E%3C/svg%3E");background-position:right .7rem center;background-repeat:no-repeat;background-size:1rem;padding-right:2.35rem}.alarm-rule-modal textarea{resize:vertical;min-height:5.25rem}.alarm-rule-modal__nested-panel{background:linear-gradient(145deg,#f8fafc 0%,#f1f5f9 100%);border:1px solid #e2e8f0;border-radius:.875rem;margin:1rem 0 1.35rem;padding:1.1rem 1.15rem 1rem;box-shadow:inset 0 1px #ffffffb8}.alarm-rule-modal__nested-head{justify-content:space-between;align-items:center;gap:.75rem;margin-bottom:.65rem;display:flex}.alarm-rule-modal__nested-title{letter-spacing:-.02em;color:#0f172a;font-size:.9375rem;font-weight:800}.alarm-rule-modal__badge{text-transform:uppercase;letter-spacing:.06em;color:#075985;background:#0ea5e929;border-radius:999px;flex-shrink:0;padding:.27rem .62rem;font-size:.6875rem;font-weight:700}.alarm-rule-modal__nested-lead{margin:0 0 1rem}.alarm-rule-modal__site-filter{box-sizing:border-box;width:100%;margin-bottom:.5rem;display:block;border-radius:.625rem!important;padding:.535rem .825rem!important;font-size:.875rem!important}.alarm-rule-modal__sites{background:#fff;border:1px solid #e2e8f0;border-radius:.625rem;max-height:11.5rem;margin-bottom:.65rem;padding:.45rem;overflow-y:auto;box-shadow:inset 0 2px 4px #0f172a0a}.alarm-rule-modal__site-row{cursor:pointer;color:#334155;border-radius:.5rem;align-items:center;gap:.65rem;margin:2px;padding:.45rem .55rem;font-size:.875rem;font-weight:500;transition:background .1s;display:flex}.alarm-rule-modal__site-row:hover{background:#f8fafc}.alarm-rule-modal__site-check{accent-color:#0ea5e9;flex-shrink:0;height:1.05rem;width:1.05rem!important}.alarm-rule-modal__footer{background:linear-gradient(#fafbfc 0%,#fff 55%);border-top:1px solid #f1f5f9;flex-shrink:0;justify-content:flex-end;align-items:center;gap:.75rem;padding:.95rem 1.5rem 1.25rem;display:flex}.alarm-rule-modal__btn-secondary{color:#475569;cursor:pointer;background:#fff;border:1px solid #e2e8f0;border-radius:.625rem;padding:.55rem 1.05rem;font-size:.875rem;font-weight:600;transition:border-color .12s,background .12s}.alarm-rule-modal__btn-secondary:hover{background:#f8fafc;border-color:#cbd5e1}.alarm-rule-modal__btn-primary{color:#fff;letter-spacing:.015em;cursor:pointer;background:linear-gradient(135deg,#0ea5e9 0%,#0369a1 100%);border:none;border-radius:.625rem;padding:.55rem 1.35rem;font-size:.875rem;font-weight:700;transition:transform .12s,box-shadow .12s;box-shadow:0 2px 6px #0ea5e952}.alarm-rule-modal__btn-primary:hover{transform:translateY(-1px);box-shadow:0 6px 16px #0ea5e947}.alarm-modal-panel.alarm-rule-modal .gateway-form-grid input:not([type=checkbox]),.alarm-modal-panel.alarm-rule-modal .gateway-form-grid select,.alarm-modal-panel.alarm-rule-modal .gateway-form-grid textarea{box-sizing:border-box;color:#0f172a;background:#fff;border:1px solid #e2e8f0;border-radius:.625rem;width:100%;max-width:100%;padding:.615rem .825rem;font-size:.9375rem;font-weight:500;line-height:1.45;transition:border-color .15s,box-shadow .15s;box-shadow:0 1px 2px #0f172a0a}.alarm-modal-panel.alarm-rule-modal .gateway-form-grid input:not([type=checkbox])::-moz-placeholder{color:#94a3b8;font-weight:400}.alarm-modal-panel.alarm-rule-modal .gateway-form-grid textarea::-moz-placeholder{color:#94a3b8;font-weight:400}.alarm-modal-panel.alarm-rule-modal .gateway-form-grid input:not([type=checkbox])::placeholder,.alarm-modal-panel.alarm-rule-modal .gateway-form-grid textarea::placeholder{color:#94a3b8;font-weight:400}.alarm-modal-panel.alarm-rule-modal .gateway-form-grid input:not([type=checkbox]):hover,.alarm-modal-panel.alarm-rule-modal .gateway-form-grid select:hover,.alarm-modal-panel.alarm-rule-modal .gateway-form-grid textarea:hover{border-color:#cbd5e1}.alarm-modal-panel.alarm-rule-modal .gateway-form-grid input:not([type=checkbox]):focus,.alarm-modal-panel.alarm-rule-modal .gateway-form-grid select:focus,.alarm-modal-panel.alarm-rule-modal .gateway-form-grid textarea:focus{border-color:#38bdf8;outline:none;box-shadow:0 0 0 3px #38bdf840}.alarm-modal-panel.alarm-rule-modal .gateway-form-grid select{appearance:none;cursor:pointer;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='%2394a3b8' stroke-width='2'%3E%3Cpath d='M6 9l6 6 6-6'/%3E%3C/svg%3E");background-position:right .7rem center;background-repeat:no-repeat;background-size:1rem;padding-right:2.35rem}.active-alarms-page .active-alarms-help{max-width:52rem;margin-top:.5rem;line-height:1.45}.active-alarms-toolbar{flex-wrap:wrap;justify-content:space-between;align-items:flex-end;gap:1rem;margin-bottom:1rem;display:flex}.active-alarms-toolbar-right{flex-wrap:wrap;align-items:center;gap:.5rem;display:flex}.active-alarms-window{flex-wrap:wrap;align-items:flex-end;gap:.5rem;display:flex}.active-alarms-window-label{flex-direction:column;gap:.35rem;display:flex}.active-alarms-window-label span{color:#475569;font-size:.8125rem;font-weight:600}.active-alarms-window-input{border:1px solid #e2e8f0;border-radius:.5rem;width:5.5rem;padding:.45rem .6rem;font-size:.875rem}.active-alarms-bulk{margin-bottom:.75rem}.active-alarms-btn{cursor:pointer;border:1px solid #0000;border-radius:.5rem;justify-content:center;align-items:center;gap:.38rem;padding:.45rem .85rem;font-family:inherit;font-size:.8125rem;font-weight:600;text-decoration:none;transition:background .12s,border-color .12s,color .12s,box-shadow .12s;display:inline-flex}.active-alarms-btn:disabled{opacity:.55;cursor:not-allowed}.active-alarms-btn-icon{flex-shrink:0}.active-alarms-btn--primary{color:#fff;background:linear-gradient(135deg,#0ea5e9 0%,#0284c7 100%);border-color:#0ea5e959;box-shadow:0 1px 3px #0ea5e938}.active-alarms-btn--primary:hover:not(:disabled){box-shadow:0 2px 8px #0ea5e947}.active-alarms-btn--ghost{color:#475569;background:#fff;border-color:#e2e8f0}.active-alarms-btn--ghost:hover:not(:disabled){background:#f8fafc;border-color:#cbd5e1}.active-alarms-btn--danger{color:#991b1b;background:linear-gradient(#fef2f2 0%,#fee2e2 100%);border-color:#f8717173}.active-alarms-btn--danger:hover:not(:disabled){background:#fecaca;border-color:#ef444480}.active-alarms-page .mapping-table .active-alarms-row-del{color:#b91c1c;cursor:pointer;background:#fee2e28c;border:1px solid #0000;border-radius:.45rem;justify-content:center;align-items:center;width:2.1rem;height:2.1rem;padding:0;transition:background .12s,color .12s;display:inline-flex}.active-alarms-page .mapping-table .active-alarms-row-del:hover:not(:disabled){color:#991b1b;background:#fecacabf}.active-alarms-table .active-alarms-col-sel{text-align:center;width:2.5rem}.active-alarms-table .active-alarms-col-actions{width:3rem}.active-alarms-table .active-alarms-actions-cell{text-align:center;vertical-align:middle}.active-alarms-sev{letter-spacing:.02em;text-transform:capitalize;border-radius:999px;padding:.2rem .55rem;font-size:.75rem;font-weight:700;display:inline-block}.active-alarms-sev--critical{color:#991b1b;background:#fecacaa6}.active-alarms-sev--major{color:#9a3412;background:#fed7aab3}.active-alarms-sev--minor{color:#1d4ed8;background:#bfdbfea6}.site-log-status-page .site-log-status-title-row{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.75rem;display:flex}.site-log-status-page .site-log-status-title-row h2{margin:0}.site-log-status-page .site-log-status-lead code.site-log-status-path{word-break:break-all}.site-log-status-page .mapping-intro a{color:#0284c7;text-underline-offset:2px;text-decoration:underline}.site-log-status-page .site-log-status-h3{margin:0 0 .75rem;font-size:1rem}.site-log-status-page .site-log-status-summary .site-log-status-metrics{grid-template-columns:repeat(auto-fill,minmax(11.5rem,1fr));gap:.75rem 1rem;display:grid}.site-log-status-page .site-log-status-metric{background:#f8fafc;border:1px solid #e2e8f0;border-radius:.5rem;padding:.65rem .75rem}.site-log-status-page .site-log-status-metric-label{color:#64748b;margin-bottom:.35rem;font-size:.75rem;font-weight:600;line-height:1.3}.site-log-status-page .site-log-status-metric-value{color:#0f172a;font-size:1.35rem;font-weight:700;line-height:1.2}.site-log-status-page .site-log-status-metric-value--ok{color:#15803d}.site-log-status-page .site-log-status-metric-value--bad{color:#b91c1c}.site-log-status-page .site-log-status-metric-hint{margin:.4rem 0 0;font-size:.7rem;line-height:1.35}.site-log-status-page .site-log-status-stale{margin-top:.75rem}.site-log-status-page .site-log-status-section .site-log-status-dl{gap:.35rem 1rem;margin:0;display:grid}.site-log-status-page .site-log-status-dl-row{grid-template-columns:minmax(8rem,12rem) 1fr;align-items:start;gap:.5rem;display:grid}.site-log-status-page .site-log-status-dl-row dt{color:#64748b;margin:0;font-size:.8125rem;font-weight:600}.site-log-status-page .site-log-status-dl-row dd{color:#0f172a;word-break:break-word;margin:0;font-size:.875rem}.site-log-status-page .site-log-status-dd-error span{color:#991b1b;background:#fee2e2d9;border:1px solid #f8717159;border-radius:.35rem;padding:.15rem .45rem;font-size:.8125rem;display:inline-block}.site-log-status-page .site-log-status-traceback{margin-top:.85rem}.site-log-status-page .site-log-status-traceback summary{cursor:pointer;-webkit-user-select:none;user-select:none}.site-log-status-page .site-log-status-traceback pre{color:#e2e8f0;background:#0f172a;border-radius:.5rem;max-height:14rem;margin:.5rem 0 0;padding:.65rem .75rem;font-size:.75rem;line-height:1.4;overflow:auto}.site-log-status-table-wrap{margin:0 -.15rem;overflow-x:auto}.site-log-status-page .site-log-status-table th,.site-log-status-page .site-log-status-table td{vertical-align:top}.control-action-log-page .mapping-intro a{color:#0284c7;text-underline-offset:2px;text-decoration:underline}.control-action-log-toolbar{flex-wrap:wrap;align-items:flex-end;gap:.75rem;margin-top:.85rem;display:flex}.control-action-log-limit{flex-direction:column;gap:.35rem;display:flex}.control-action-log-limit span{color:#475569;font-size:.8125rem;font-weight:600}.control-action-log-limit input{border:1px solid #e2e8f0;border-radius:.5rem;width:5.5rem;padding:.45rem .6rem;font-size:.875rem}.control-action-log-section{margin-top:0}.control-action-log-table .control-action-log-value{white-space:pre-wrap;word-break:break-word;max-width:28rem}.control-action-log-page .flash.error a{color:#991b1b;text-decoration:underline}.site-offline-history-page .mapping-intro a{color:#0284c7;text-underline-offset:2px;text-decoration:underline}.site-offline-history-page .site-offline-history-toolbar{margin-top:.85rem}.site-offline-history-site{flex-direction:column;gap:.35rem;display:flex}.site-offline-history-site span{color:#475569;font-size:.8125rem;font-weight:600}.site-offline-history-site select{background:#fff;border:1px solid #e2e8f0;border-radius:.5rem;min-width:12rem;max-width:100%;padding:.45rem .6rem;font-size:.875rem}.site-offline-history-section{margin-top:.75rem}.site-offline-history-total{margin-top:0}.site-offline-history-host-line{margin-top:.25rem}.site-offline-history-table th,.site-offline-history-table td{vertical-align:top}.site-offline-history-detail-cell .muted+.muted{margin-top:.25rem}.site-offline-history-title-actions{flex-wrap:wrap;align-items:center;gap:.5rem;display:flex}.site-offline-history-pagination{flex-wrap:wrap;gap:.5rem;margin-top:.75rem;display:flex}.alarm-history-page .mapping-intro a{color:#0284c7;text-underline-offset:2px;text-decoration:underline}.alarm-history-page .alarm-history-toolbar{margin-top:.85rem}.alarm-history-help{margin-top:.35rem}.alarm-history-bulk{margin-bottom:.75rem}.alarm-history-status-active{color:#b45309;font-weight:600}.alarm-history-table th,.alarm-history-table td{vertical-align:top}.alarm-history-col-sel{text-align:center;width:2.75rem}.alarm-history-col-actions{white-space:nowrap;width:6rem}.alarm-history-filter-backdrop{z-index:70;-webkit-backdrop-filter:blur(5px);background:#0f172a6b;justify-content:center;align-items:center;padding:1.5rem;display:flex;position:fixed;inset:0}.alarm-history-filter-panel{background:#fff;border:1px solid #e2e8f0f2;border-radius:1.25rem;flex-direction:column;width:min(560px,100%);max-height:min(88vh,760px);display:flex;overflow:hidden;box-shadow:0 24px 70px #0f172a47}.alarm-history-filter-head{border-bottom:1px solid #e2e8f0;padding:1.4rem 1.6rem 1rem}.alarm-history-filter-head h3,.alarm-history-download-popover h3{color:#0f172a;margin:0;font-size:1.125rem;font-weight:700}.alarm-history-filter-body{background:#f8fafc;flex:1;align-content:start;gap:1rem;padding:1.25rem 1.6rem;display:grid;overflow:auto}.alarm-history-filter-body label{color:#111827;gap:.45rem;font-size:.95rem;font-weight:400;display:grid}.alarm-history-filter-body input,.alarm-history-filter-body select{color:#0f172a;background:#fff;border:1px solid #e2e8f0;border-radius:.75rem;width:100%;min-height:3rem;padding:.68rem .85rem;font-size:.95rem;font-weight:400;box-shadow:0 1px 2px #0f172a0a}.alarm-history-download-panel{width:min(440px,100%)}.alarm-history-filter-body input:focus,.alarm-history-filter-body select:focus{border-color:#93c5fd;outline:none;box-shadow:0 0 0 4px #2563eb24}.alarm-history-filter-actions{background:#fff;border-top:1px solid #e2e8f0;justify-content:flex-end;gap:.75rem;padding:1rem 1.6rem;display:flex}.alarm-history-download-popover{z-index:45;background:#fff;border:1px solid #e2e8f0;border-radius:1rem;gap:1.25rem;width:min(25rem,100vw - 2rem);padding:1.5rem;display:grid;position:absolute;top:8.4rem;right:2rem;box-shadow:0 14px 34px #0f172a29}.alarm-history-download-row{color:#0f172a;background:#fff;border:1px solid #e2e8f0;border-radius:.75rem;align-items:center;gap:.45rem;padding:.65rem .8rem;display:flex}.alarm-history-download-row input{color:#0f172a;min-width:0;font:inherit;background:0 0;border:0;outline:0}.alarm-history-download-popover .active-alarms-btn{justify-self:end}.alarm-webhook-page .mapping-intro a{color:#0284c7;text-underline-offset:2px;text-decoration:underline}.alarm-webhook-page .alarm-wh-card-title{margin:0 0 .75rem;font-size:1.05rem}.webhook-sender-page .ws-code-block,.alarm-webhook-page .awh-code{white-space:pre-wrap;background:#f1f5f9;border:1px solid #e2e8f0;border-radius:.5rem;max-height:22rem;margin:.5rem 0 0;padding:.75rem;font-size:.8125rem;line-height:1.45;overflow:auto}.webhook-sender-page .ws-json-out{max-height:26rem}.webhook-sender-page .ws-mt,.alarm-webhook-page .alarm-wh-mt{margin-top:.75rem}.webhook-sender-page .ws-mt-0{margin-top:0}.webhook-sender-page .ws-mt-hint,.alarm-webhook-page .alarm-wh-mt-hint{margin-top:.5rem}.webhook-sender-page .ws-batch-title{margin:1rem 0 .5rem}.webhook-sender-page .ws-batch-err{color:#b91c1c}.webhook-sender-page .gateway-form-grid label.ws-span-full,.alarm-webhook-page form label.ws-span-full{grid-column:1/-1}.webhook-sender-page .ws-fieldset{border:0;margin:.75rem 0 0;padding:0}.webhook-sender-page .ws-legend{margin-bottom:.35rem}.webhook-sender-page .ws-inline-radio{align-items:center;gap:.35rem;margin-right:1rem;display:inline-flex}.webhook-sender-page .ws-checkbox,.alarm-webhook-page .ws-checkbox{align-items:flex-start;gap:.35rem;margin-top:.35rem;display:flex}.webhook-sender-page .ws-summary-table th{text-align:left;vertical-align:top;width:12rem;font-weight:600}.webhook-sender-page code.ws-break{word-break:break-all}.webhook-sender-page .ws-section-head,.alarm-webhook-page .ws-section-head{border-bottom:1px dashed #e2e8f0;margin-bottom:1rem;padding-bottom:.85rem}.webhook-sender-page .ws-section-head-title,.alarm-webhook-page .ws-section-head-title{margin:0 0 .35rem}.webhook-sender-page .ws-section-head-lead,.alarm-webhook-page .ws-section-head-lead{max-width:48rem;margin:0;line-height:1.5}.webhook-sender-page .ws-modern-stack,.alarm-webhook-page .ws-modern-stack{flex-direction:column;gap:1rem;display:flex}.webhook-sender-page .ws-key-secret-grid,.alarm-webhook-page .ws-key-secret-grid{align-items:start;gap:1rem;display:grid}@media (width>=720px){.webhook-sender-page .ws-key-secret-grid,.alarm-webhook-page .ws-key-secret-grid{grid-template-columns:1fr 1fr}}.webhook-sender-page .ws-fetch-cred-grid{gap:.95rem;display:grid}@media (width>=720px){.webhook-sender-page .ws-fetch-cred-grid{grid-template-columns:1fr 1fr}}.webhook-sender-page .ws-tester-batch-field{max-width:12rem}.webhook-sender-page .ws-batch-interval-grid,.alarm-webhook-page .ws-batch-interval-grid{gap:1rem;display:grid}@media (width>=640px){.webhook-sender-page .ws-batch-interval-grid,.alarm-webhook-page .ws-batch-interval-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}.webhook-sender-page .ws-toggle-row,.alarm-webhook-page .ws-toggle-row{cursor:pointer;background:linear-gradient(#f8fafc 0%,#fff 100%);border:1px solid #e2e8f0;border-radius:.65rem;align-items:flex-start;gap:.55rem;margin:0;padding:.65rem .85rem;line-height:1.45;display:flex}.webhook-sender-page .ws-toggle-row input,.alarm-webhook-page .ws-toggle-row input{cursor:pointer;flex-shrink:0;margin-top:.2rem}.webhook-sender-page .ws-form-actions,.alarm-webhook-page .ws-form-actions{flex-wrap:wrap;align-items:baseline;gap:.75rem 1.25rem;margin-top:.25rem;display:flex}.webhook-sender-page .ws-save-hint,.alarm-webhook-page .ws-save-hint{flex:1;min-width:12rem;margin:0}.webhook-sender-page .ws-generate-fetch-btn{margin-top:1rem}.webhook-sender-page .webhook-sender-receiver-card,.webhook-sender-page .webhook-sender-fetch-section,.webhook-sender-page .webhook-sender-tester-card,.webhook-sender-page .webhook-sender-summary-card,.webhook-sender-page .webhook-sender-raw-card,.alarm-webhook-page .alarm-wh-modern-card{border-radius:.75rem;box-shadow:0 1px 2px #0f172a0a,0 6px 20px #0f172a0d}.webhook-sender-page .ws-summary-card-table{margin-top:.25rem}.alarm-webhook-page .awh-eff-table th{text-align:left;vertical-align:top;width:11rem;font-weight:600}.alarm-webhook-page code.awh-break{word-break:break-all}.alarm-webhook-page .awh-env-hint{background:#f8fafc;border:1px solid #e2e8f0;border-radius:.5rem;margin:0;padding:.55rem .72rem;line-height:1.45}.alarm-webhook-page .awh-interval-grid{max-width:14rem}.alarm-webhook-page .awh-interval-input{max-width:100%}.alarm-webhook-page .ws-mt-mini{margin-top:.65rem}.alarm-webhook-page .awh-summary-card-table{margin-top:.25rem}.alarm-webhook-page label.awh-stack{flex-direction:column;gap:.35rem;margin-top:.65rem;display:flex}.alarm-webhook-page label.awh-check{align-items:flex-start;gap:.4rem;display:flex}.alarm-webhook-page .awh-interval input{max-width:8rem}button.link{color:#2563eb;cursor:pointer;font:inherit;background:0 0;border:0;padding:0;text-decoration:underline}button.link.danger{color:#b91c1c}.alarm-rules-page .flash.error{color:#991b1b;background:#fef2f2;border:1px solid #fecaca;border-radius:.5rem;margin-bottom:.75rem;padding:.75rem 1rem}.alarm-rules-page .flash.error p{margin:0}.alarm-rules-page .flash.error p+p{margin-top:.5rem}.alarm-rules-page .muted{color:#64748b}.alarm-rules-page .small{font-size:.8125rem}.alarm-rules-page .nowrap{white-space:nowrap}.alarm-rules-page .svl-dd-filter{box-sizing:border-box;background:#fff;border:1px solid #cbd5e1;border-radius:6px;width:100%;padding:.4rem .5rem;font-size:.88rem;display:block}.db-setup-v2-header{margin-bottom:1.5rem}.db-setup-v2-header-top{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.75rem;margin-bottom:.35rem;display:flex}.db-setup-v2-kicker{letter-spacing:.12em;text-transform:uppercase;color:#2563eb;font-size:.6875rem;font-weight:700}.db-setup-v2-link{color:#2563eb;font-size:.8125rem;font-weight:600;text-decoration:none}.db-setup-v2-link:hover{text-decoration:underline}.db-setup-v2-title{letter-spacing:-.03em;color:#0f172a;margin:0 0 .45rem;font-size:1.5rem;font-weight:700;line-height:1.2}.db-setup-v2-lead{color:#64748b;max-width:46rem;margin:0;font-size:.9rem;line-height:1.55}.db-setup-v2-code{color:#0f172a;background:#f1f5f9;border:1px solid #e2e8f0;border-radius:.3rem;padding:.12rem .4rem;font-size:.84em}.db-setup-v2-banner{color:#334155;background:#f8fafc;border:1px solid #e2e8f0;border-radius:.5rem;margin:1rem 0 0;padding:.65rem .85rem;font-size:.875rem}.db-setup-v2-form{flex-direction:column;gap:0;display:flex}.db-setup-v2-list{flex-direction:column;gap:.65rem;display:flex}.db-setup-panel{background:#fff;border:1px solid #e2e8f0;border-radius:.75rem;transition:box-shadow .18s,border-color .18s;overflow:hidden;box-shadow:0 1px 3px #0f172a0f}.db-setup-panel--open{border-color:#bfdbfe;box-shadow:0 1px 3px #2563eb14,0 4px 14px #0f172a12}.db-setup-panel-trigger{cursor:pointer;text-align:left;width:100%;color:inherit;background:0 0;border:none;align-items:flex-start;gap:.65rem;padding:1rem 1.1rem;transition:background .12s;display:flex}.db-setup-panel-trigger:hover{background:#f8fafc}.db-setup-panel-chevron{color:#64748b;flex-shrink:0;margin-top:.1rem;transition:transform .2s;display:flex}.db-setup-panel-chevron--open{color:#2563eb;transform:rotate(180deg)}.db-setup-panel-trigger-text{flex-direction:column;flex:1;gap:.2rem;min-width:0;display:flex}.db-setup-panel-title{color:#0f172a;letter-spacing:-.02em;font-size:.9375rem;font-weight:700}.db-setup-panel-sub{color:#64748b;font-size:.8125rem;font-weight:500;line-height:1.4}.db-setup-panel-body{background:linear-gradient(#fafbfc 0%,#fff .75rem);border-top:1px solid #f1f5f9;padding:0 1.1rem 1.15rem}.db-setup-v2-env-warn{border-radius:.65rem;margin-top:1rem}.db-setup-v2-footer{z-index:5;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);background:#ffffffeb;border:1px solid #e2e8f0;border-radius:.75rem;margin-top:1.25rem;padding:1rem 1.15rem;position:sticky;bottom:0;box-shadow:0 -4px 20px #0f172a14}.db-setup-v2-submit{color:#fff;cursor:pointer;background:linear-gradient(#2563eb 0%,#1d4ed8 100%);border:none;border-radius:.5rem;padding:.65rem 1.5rem;font-size:.9375rem;font-weight:600;transition:filter .15s,box-shadow .15s;box-shadow:0 1px 2px #2563eb59}.db-setup-v2-submit:hover:not(:disabled){filter:brightness(1.05);box-shadow:0 4px 14px #2563eb59}.db-setup-v2-submit:disabled{opacity:.65;cursor:not-allowed}.db-setup-v2-footer-hint{margin:.65rem 0 0}.database-setup-page .mapping-intro{border-color:#e2e8f0;box-shadow:0 4px 6px -1px #0f172a0f,0 2px 4px -2px #0f172a0a}.database-setup-page .mapping-intro code{background:#f1f5f9;border:1px solid #e2e8f0;border-radius:.25rem;padding:.1rem .35rem;font-size:.84em}.database-setup-page .mapping-card{border-color:#e2e8f0;box-shadow:0 4px 6px -1px #0f172a12,0 2px 4px -2px #0f172a0d}.database-setup-page .mapping-card h3{color:#0f172a;letter-spacing:-.02em;font-size:1.0625rem;font-weight:700}.database-setup-page .database-setup-h4{color:#334155;margin:1rem 0 .5rem;font-size:1rem;font-weight:600}.database-setup-page .database-setup-pre{white-space:pre-wrap;word-break:break-word;color:#334155;background:linear-gradient(#f8fafc 0%,#f1f5f9 100%);border:1px solid #e2e8f0;border-radius:.5rem;margin:.5rem 0;padding:.75rem;font-size:.875rem;overflow-x:auto}.database-setup-page .database-setup-form .gateway-form-grid{gap:1rem 1.25rem}.database-setup-page .database-setup-form label:not(.mapping-check){color:#475569;flex-direction:column;gap:.45rem;margin-bottom:1rem;font-size:.8125rem;font-weight:600;display:flex}.database-setup-page .database-setup-form .gateway-form-grid label:not(.mapping-check){margin-bottom:0}.database-setup-page .database-setup-form label:not(.mapping-check)>span:first-child{letter-spacing:.02em}.database-setup-page .database-setup-form input:not([type=checkbox]),.database-setup-page .database-setup-form select,.database-setup-page .database-setup-form textarea{box-sizing:border-box;color:#0f172a;background:#fff;border:1px solid #e2e8f0;border-radius:.5rem;width:100%;max-width:100%;padding:.625rem .875rem;font-size:.9375rem;line-height:1.45;transition:border-color .15s,box-shadow .15s;box-shadow:0 1px 2px #0f172a0a}.database-setup-page .database-setup-form input:not([type=checkbox])::-moz-placeholder{color:#94a3b8}.database-setup-page .database-setup-form textarea::-moz-placeholder{color:#94a3b8}.database-setup-page .database-setup-form input:not([type=checkbox])::placeholder,.database-setup-page .database-setup-form textarea::placeholder{color:#94a3b8}.database-setup-page .database-setup-form input:not([type=checkbox]):hover,.database-setup-page .database-setup-form select:hover,.database-setup-page .database-setup-form textarea:hover{border-color:#cbd5e1}.database-setup-page .database-setup-form input:not([type=checkbox]):focus,.database-setup-page .database-setup-form select:focus,.database-setup-page .database-setup-form textarea:focus{border-color:#38bdf8;outline:none;box-shadow:0 0 0 3px #38bdf847}.database-setup-page .database-setup-form select{appearance:none;cursor:pointer;background-color:#fff;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='18' height='18' viewBox='0 0 24 24' fill='none' stroke='%2364748b' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E");background-position:right .65rem center;background-repeat:no-repeat;padding-right:2.35rem}.database-setup-page .database-setup-form .database-setup-select{min-width:0}.database-setup-page .database-setup-form .database-setup-select.wide{min-width:min(100%,22rem)}.database-setup-page .database-setup-form label.mapping-check{cursor:pointer;color:#334155;background:linear-gradient(#f8fafc 0%,#f1f5f9 100%);border:1px solid #e2e8f0;border-radius:.5rem;flex-direction:row;align-items:flex-start;gap:.75rem;margin-bottom:1rem;padding:.875rem 1rem;font-weight:500;box-shadow:0 1px 2px #0f172a0a}.database-setup-page .database-setup-form label.mapping-check input[type=checkbox]{accent-color:#0ea5e9;cursor:pointer;flex-shrink:0;width:1.125rem;height:1.125rem;margin-top:.15rem}.database-setup-page .database-setup-form .mapping-actions button[type=submit]{color:#fff;cursor:pointer;background:linear-gradient(#0ea5e9 0%,#0284c7 100%);border:none;border-radius:.5rem;padding:.65rem 1.35rem;font-size:.9375rem;font-weight:600;transition:filter .15s,box-shadow .15s;box-shadow:0 1px 3px #0ea5e966}.database-setup-page .database-setup-form .mapping-actions button[type=submit]:hover:not(:disabled){filter:brightness(1.06);box-shadow:0 4px 12px #0ea5e959}.database-setup-page .database-setup-form .mapping-actions button[type=submit]:disabled{opacity:.65;cursor:not-allowed}.database-status-explorer-form{grid-template-columns:minmax(16rem,1fr) 10.5rem;align-items:end;gap:.9rem 1rem;display:grid}.database-status-explorer-form label{margin-bottom:0!important}.database-status-load-tables-btn{color:#fff;cursor:pointer;background:linear-gradient(135deg,#0ea5e9 0%,#0284c7 100%);border:none;border-radius:.75rem;align-self:end;width:100%;min-height:2.75rem;margin:0;padding:.65rem 1.35rem;font-weight:700;transition:transform .15s,box-shadow .15s,filter .15s;box-shadow:0 8px 18px #0ea5e938}.database-status-load-tables-btn:hover:not(:disabled){filter:brightness(1.04);transform:translateY(-1px);box-shadow:0 12px 24px #0ea5e947}.database-status-load-tables-btn:disabled{cursor:not-allowed;opacity:.65;box-shadow:none;transform:none}@media (width<=640px){.database-status-explorer-form{grid-template-columns:1fr}.database-status-load-tables-btn{width:100%;margin-bottom:0}}.database-setup-page .database-setup-cli,.database-setup-page .database-setup-save{margin-top:1rem}.database-setup-page .flash.warning{color:#92400e;background:#fffbeb;border:1px solid #fde68a;border-radius:.5rem;padding:.75rem 1rem}.database-setup-page .database-setup-flash-warn{margin-top:1rem}.database-setup-page .muted{color:#64748b}.database-setup-page .muted.small{font-size:.8125rem}.system-settings-page .system-settings-form{flex-direction:column;gap:1.1rem;display:flex}.system-settings-page .system-settings-heading{color:#111827;margin:0 0 .35rem;font-size:1rem}.system-settings-page .system-settings-lead{margin:0;font-size:.8125rem;line-height:1.5}.system-settings-page .system-settings-selected{background:linear-gradient(#f0f9ff 0%,#e0f2fe 100%);border:1px solid #bae6fd;border-radius:.5rem;flex-wrap:wrap;align-items:baseline;gap:.5rem .75rem;padding:.75rem 1rem;display:flex}.system-settings-page .system-settings-selected-label{letter-spacing:.06em;text-transform:uppercase;color:#0369a1;font-size:.75rem;font-weight:700}.system-settings-page .system-settings-selected-value{color:#0c4a6e;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-size:.9375rem;font-weight:600}.system-settings-page .system-settings-field label,.system-settings-page .system-settings-list-label{color:#475569;margin-bottom:.45rem;font-size:.8125rem;font-weight:600;display:block}.system-settings-page .system-settings-search-wrap{position:relative}.system-settings-page .system-settings-search-icon{color:#94a3b8;pointer-events:none;width:1.05rem;height:1.05rem;position:absolute;top:50%;left:.75rem;transform:translateY(-50%)}.system-settings-page .system-settings-search{box-sizing:border-box;color:#0f172a;background:#fff;border:1px solid #e2e8f0;border-radius:.5rem;width:100%;padding:.65rem .875rem .65rem 2.5rem;font-size:.9375rem;line-height:1.45;transition:border-color .15s,box-shadow .15s;display:block;box-shadow:0 1px 2px #0f172a0a}.system-settings-page .system-settings-search::placeholder{color:#94a3b8}.system-settings-page .system-settings-search:hover{border-color:#cbd5e1}.system-settings-page .system-settings-search:focus{border-color:#38bdf8;outline:none;box-shadow:0 0 0 3px #38bdf847}.system-settings-page .system-settings-hint{margin:.4rem 0 0}.system-settings-page .system-settings-list{background:#fafafa;border:1px solid #e2e8f0;border-radius:.5rem;max-height:min(320px,50vh);overflow-y:auto;box-shadow:inset 0 1px 2px #0f172a0a}.system-settings-page .system-settings-empty{text-align:center;padding:1.25rem 1rem}.system-settings-page .system-settings-option{color:#1e293b;text-align:left;cursor:pointer;background:#fff;border:none;border-bottom:1px solid #e8e8e8;justify-content:space-between;align-items:center;gap:.75rem;width:100%;margin:0;padding:.55rem .85rem;font-size:.875rem;transition:background .12s;display:flex}.system-settings-page .system-settings-option:last-child{border-bottom:none}.system-settings-page .system-settings-option:hover{background:#f8fafc}.system-settings-page .system-settings-option:focus{background:#f0f9ff;outline:none;box-shadow:inset 0 0 0 2px #38bdf8}.system-settings-page .system-settings-option--selected{background:#eff6ff}.system-settings-page .system-settings-option--selected:hover{background:#dbeafe}.system-settings-page .system-settings-option-text{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-size:.8125rem}.system-settings-page .system-settings-option-check{letter-spacing:.04em;text-transform:uppercase;color:#0284c7;flex-shrink:0;font-size:.68rem;font-weight:700}.system-settings-page .system-settings-actions{margin-top:.25rem}.system-settings-page .system-settings-save{color:#fff;cursor:pointer;background:linear-gradient(#0ea5e9 0%,#0284c7 100%);border:none;border-radius:.5rem;padding:.65rem 1.35rem;font-size:.9375rem;font-weight:600;transition:filter .15s,box-shadow .15s;box-shadow:0 1px 3px #0ea5e966}.system-settings-page .system-settings-save:hover:not(:disabled){filter:brightness(1.06);box-shadow:0 4px 12px #0ea5e959}.system-settings-page .system-settings-save:disabled{opacity:.65;cursor:not-allowed}.users-admin-page{flex-direction:column;gap:1.25rem;max-width:56rem;display:flex}.api-monitor-page{max-width:72rem}.api-monitor-toolbar{flex-wrap:wrap;align-items:center;gap:.5rem 1rem;margin-bottom:1rem;display:flex}.api-monitor-tabs{flex-wrap:wrap;gap:.35rem;display:flex}.api-monitor-toolbar-spacer{flex:1;min-width:.5rem}.api-monitor-auto{align-items:center;gap:.35rem;display:inline-flex}.api-monitor-refresh-btn{letter-spacing:.01em;color:#f8fafc;cursor:pointer;background:#0284c7;border:none;border-radius:.625rem;justify-content:center;align-items:center;gap:.5rem;padding:.5rem 1rem .5rem .875rem;font-size:.875rem;font-weight:600;transition:background .15s,box-shadow .15s,transform .1s;display:inline-flex;box-shadow:0 1px 2px #0f172a0f,0 2px 8px #0ea5e947}.api-monitor-refresh-btn:hover:not(:disabled){background:#0369a1;box-shadow:0 1px 3px #0f172a14,0 4px 12px #0ea5e959}.api-monitor-refresh-btn:active:not(:disabled){transform:translateY(1px);box-shadow:0 1px 2px #0f172a0f}.api-monitor-refresh-btn:focus-visible{outline-offset:2px;outline:2px solid #38bdf8}.api-monitor-refresh-btn:disabled{opacity:.72;cursor:wait}.api-monitor-refresh-icon{flex-shrink:0;width:1rem;height:1rem}.api-monitor-refresh-icon.is-spinning{animation:.65s linear infinite api-monitor-refresh-spin}@keyframes api-monitor-refresh-spin{to{transform:rotate(360deg)}}.api-monitor-page .users-admin-btn-ghost.is-active{color:#0369a1;background:#e0f2fe;border-color:#7dd3fc}.api-monitor-table-wrap{max-height:22rem;overflow:auto}.api-monitor-freq-wrap{max-height:16rem}.api-monitor-table-dense{font-size:.88rem}.api-monitor-cell-ellipsis{text-overflow:ellipsis;white-space:nowrap;max-width:12rem;overflow:hidden}.api-monitor-block-row{flex-wrap:wrap;align-items:flex-end;gap:.75rem 1rem;display:flex}.api-monitor-block-row .users-admin-label{flex:1;min-width:220px}.api-monitor-blocked-list{margin:0;padding-left:1.25rem;list-style:outside}.api-monitor-inline-actions{flex-wrap:wrap;align-items:center;gap:.4rem;display:inline-flex}.api-monitor-chip{cursor:pointer;appearance:none;border:1px solid #0000;border-radius:.45rem;justify-content:center;align-items:center;margin:0;padding:.38rem .7rem;font-family:inherit;font-size:.8125rem;font-weight:600;line-height:1.2;transition:background .12s,border-color .12s,box-shadow .12s,filter .12s;display:inline-flex}.api-monitor-chip:focus-visible{outline-offset:2px;outline:2px solid #38bdf8}.api-monitor-chip--secondary{color:#0f766e;background:#f0fdfa;border-color:#99f6e4;box-shadow:0 1px 2px #0f766e0f}.api-monitor-chip--secondary:hover{filter:brightness(.98);background:#ccfbf1;border-color:#2dd4bf}.api-monitor-chip--danger{color:#fff;background:#e11d48;border-color:#e11d48;box-shadow:0 1px 2px #e11d4838}.api-monitor-chip--danger:hover{background:#be123c;border-color:#be123c;box-shadow:0 2px 6px #e11d484d}.api-monitor-chip:active{transform:translateY(.5px)}.api-access-credentials-wrap{overflow:visible}.api-access-credentials-header{margin-bottom:1.25rem}.api-access-credentials-title{color:#0f172a;letter-spacing:-.02em;margin:0 0 .35rem;font-size:1.15rem;font-weight:700}.api-access-credentials-lead{max-width:48rem;margin:0;line-height:1.5}.api-access-credentials-grid{grid-template-columns:repeat(auto-fill,minmax(min(100%,20rem),1fr));align-items:stretch;gap:1.1rem;display:grid}.api-access-credential-card{background:linear-gradient(165deg,#fff 0%,#f8fafc 100%);border:1px solid #e2e8f0;border-radius:.75rem;flex-direction:column;min-height:100%;padding:1rem 1.1rem;transition:border-color .15s,box-shadow .15s;display:flex;box-shadow:0 1px 2px #0f172a0a,0 8px 24px #0f172a0f}.api-access-credential-card:hover{border-color:#cbd5e1;box-shadow:0 2px 4px #0f172a0d,0 12px 32px #0f172a14}.api-access-credential-card-head{flex-wrap:wrap;align-items:baseline;gap:.5rem .65rem;margin-bottom:.9rem;display:flex}.api-access-credential-card-title{color:#0f172a;margin:0;font-size:.9375rem;font-weight:700;line-height:1.3}.api-access-credential-badge{letter-spacing:.04em;text-transform:uppercase;color:#0e7490;background:#ecfeff;border:1px solid #a5f3fc;border-radius:999px;align-items:center;padding:.125rem .55rem;font-size:.68rem;font-weight:700;display:inline-flex}.api-access-credential-card-body{flex:1;gap:.95rem;display:grid}.api-access-credential-field{min-width:0}.api-access-credential-label-row{justify-content:space-between;align-items:center;gap:.5rem;margin-bottom:.3rem;display:flex}.api-access-credential-label{text-transform:uppercase;letter-spacing:.06em;color:#64748b;font-size:.72rem;font-weight:700}.api-access-icon-btn{color:#475569;cursor:pointer;background:#fff;border:1px solid #e2e8f0;border-radius:.45rem;flex-shrink:0;place-items:center;width:1.875rem;height:1.875rem;padding:0;transition:background .15s,border-color .15s,color .15s;display:inline-grid}.api-access-icon-btn:hover:not(:disabled){color:#0f172a;background:#f1f5f9;border-color:#cbd5e1}.api-access-icon-btn:active:not(:disabled){transform:translateY(.5px)}.api-access-icon-btn:disabled{opacity:.4;cursor:not-allowed}.api-access-icon-btn:focus-visible{outline-offset:2px;outline:2px solid #38bdf8}.api-access-icon-btn--pad{width:auto;min-width:2rem}.api-access-credential-input-row{align-items:stretch;gap:.4rem;display:flex}.api-access-credential-input{color:#111827;background:#fff;border:1px solid #d8dee8;border-radius:.45rem;flex:1;min-width:0;padding:.52rem .62rem;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-size:.8125rem;line-height:1.35}.api-access-credential-input--grow{width:100%}.api-access-credential-card-footer{color:#475569;border-top:1px dashed #e2e8f0;flex-wrap:wrap;gap:.25rem 0;margin-top:1rem;padding-top:.85rem;font-size:.78rem;line-height:1.45;display:flex}.api-access-credential-meta strong,.api-access-credential-meta time{color:#334155;font-weight:600}.api-access-credential-meta--empty{color:#94a3b8}.api-access-credential-footnote{color:#64748b}.api-access-page .api-access-cred-row{grid-template-columns:repeat(auto-fill,minmax(14rem,1fr));gap:.75rem 1rem;margin-bottom:.5rem;display:grid}.api-access-fold{margin-bottom:1rem}.api-access-fold-summary{cursor:pointer;color:#0f172a;padding:.35rem 0;font-size:.95rem;font-weight:700;list-style:none}.api-access-fold-summary::-webkit-details-marker{display:none}.api-access-fold[open] .api-access-fold-summary{margin-bottom:.5rem}.api-access-fold-body{border-top:1px solid #e2e8f0;padding-top:.35rem}.api-access-fieldset{border:none;margin:0 0 .75rem;padding:0}.api-access-radio{color:#334155;margin-right:1rem;font-size:.875rem;display:inline-block}.api-access-modbus-fields{gap:.65rem;margin-bottom:.75rem;display:grid}.api-access-tester-actions{flex-wrap:wrap;align-items:center;gap:.5rem;margin-top:.75rem;display:flex}.api-access-tester-spacer{flex:1;min-width:.5rem}.api-access-detail-wrap.is-muted{opacity:.5}.api-access-test-meta{margin:.75rem 0 .25rem}.api-access-test-output{white-space:pre-wrap;word-break:break-word;color:#334155;background:#f1f5f9;border:1px solid #e2e8f0;border-radius:.5rem;max-height:24rem;margin:0;padding:.75rem;font-size:.8rem;line-height:1.45;overflow:auto}.api-access-generate-grid{grid-template-columns:repeat(auto-fill,minmax(13rem,1fr));gap:1rem;margin-top:.75rem;display:grid}.api-access-generate-card{flex-direction:column;align-items:flex-start;gap:.65rem;display:flex}.users-admin-kicker{letter-spacing:.08em;text-transform:uppercase;color:#0284c7;margin-bottom:.35rem;font-size:.72rem;font-weight:700}.users-admin-header-row{flex-wrap:wrap;justify-content:space-between;align-items:flex-start;gap:1rem;display:flex}.users-admin-title{color:#0f172a;margin:0 0 .35rem;font-size:1.35rem;font-weight:700}.users-admin-lead{color:#64748b;margin:0;font-size:.875rem;line-height:1.55}.users-admin-lead code{background:#f1f5f9;border-radius:.25rem;padding:.12rem .35rem;font-size:.8125rem}.users-admin-mono{background:#f1f5f9;border-radius:.25rem;padding:.1rem .35rem;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:.9em}.users-admin-banner{border-radius:.5rem;margin:.75rem 0 0;padding:.65rem .9rem;font-size:.875rem}.users-admin-banner-warn{color:#92400e;background:#fffbeb;border:1px solid #fde68a}.users-admin-banner-info{color:#155e75;background:#ecfeff;border:1px solid #a5f3fc}.users-admin-panel{background:#fff;border:1px solid #e2e8f0;border-radius:.75rem;padding:1.15rem 1.25rem;box-shadow:0 1px 2px #0f172a0a}.users-admin-panel-muted{background:linear-gradient(#f8fafc 0%,#f1f5f9 100%)}.users-admin-panel-danger-zone{background:#fef2f2;border-color:#fecaca}.users-admin-panel-title{color:#0f172a;margin:0 0 .85rem;font-size:.95rem;font-weight:700}.users-admin-danger-title{color:#991b1b}.users-admin-fields{grid-template-columns:repeat(auto-fill,minmax(14rem,1fr));gap:1rem;display:grid}.users-admin-label{color:#475569;flex-direction:column;gap:.4rem;font-size:.78rem;font-weight:600;display:flex}.users-admin-label span:first-child{letter-spacing:.02em}.users-admin-input{color:#0f172a;background:#fff;border:1px solid #e2e8f0;border-radius:.5rem;padding:.55rem .75rem;font-size:.9rem;transition:border-color .15s,box-shadow .15s}.users-admin-input:hover{border-color:#cbd5e1}.users-admin-input:focus{border-color:#38bdf8;outline:none;box-shadow:0 0 0 3px #38bdf840}.users-admin-check{color:#334155;grid-column:1/-1;align-items:center;gap:.6rem;font-size:.875rem;display:flex}.users-admin-check input{accent-color:#0ea5e9;width:1.05rem;height:1.05rem}.users-admin-actions{flex-wrap:wrap;gap:.75rem;display:flex}.users-admin-btn-primary{color:#fff;cursor:pointer;background:linear-gradient(#0ea5e9 0%,#0284c7 100%);border:none;border-radius:.5rem;justify-content:center;align-items:center;gap:.45rem;padding:.6rem 1.2rem;font-size:.9rem;font-weight:600;text-decoration:none;transition:filter .15s,box-shadow .15s;display:inline-flex;box-shadow:0 1px 3px #0ea5e966}.users-admin-btn-primary:hover:not(:disabled){filter:brightness(1.05);box-shadow:0 4px 12px #0ea5e959}.users-admin-btn-primary:disabled{opacity:.65;cursor:not-allowed}.users-admin-btn-inline{align-self:flex-start}.users-admin-btn-icon{width:1.1rem;height:1.1rem}.users-admin-btn-ghost{color:#0369a1;background:#f0f9ff;border:1px solid #bae6fd;border-radius:.5rem;align-items:center;padding:.5rem .9rem;font-size:.875rem;font-weight:600;text-decoration:none;transition:background .12s;display:inline-flex}.users-admin-btn-ghost:hover{background:#e0f2fe}.users-admin-btn-danger{color:#fff;cursor:pointer;background:linear-gradient(#ef4444 0%,#dc2626 100%);border:none;border-radius:.5rem;padding:.55rem 1.1rem;font-size:.875rem;font-weight:600;box-shadow:0 1px 3px #dc262659}.users-admin-btn-danger:hover:not(:disabled){filter:brightness(1.05)}.users-admin-btn-danger:disabled{opacity:.65;cursor:not-allowed}.users-admin-form{flex-direction:column;gap:1.1rem;display:flex}.users-admin-table-wrap{border:1px solid #e2e8f0;border-radius:.5rem;overflow-x:auto}.users-admin-table{border-collapse:collapse;width:100%;font-size:.875rem}.users-admin-table th,.users-admin-table td{text-align:left;border-bottom:1px solid #f1f5f9;padding:.65rem .85rem}.users-admin-table th{color:#475569;text-transform:uppercase;letter-spacing:.05em;background:#f8fafc;font-size:.72rem;font-weight:700}.users-admin-table tbody tr:hover{background:#fafafa}.users-admin-td-actions{text-align:right}.users-admin-link-manage{color:#0284c7;font-size:.8125rem;font-weight:600;text-decoration:none}.users-admin-link-manage:hover{text-decoration:underline}.users-admin-badge{text-transform:uppercase;letter-spacing:.04em;color:#475569;background:#e2e8f0;border-radius:999px;padding:.2rem .5rem;font-size:.72rem;font-weight:700;display:inline-block}.users-admin-badge-admin{color:#5b21b6;background:#ede9fe}.users-admin-badge-api{color:#0e7490;background:#cffafe}.users-admin-status{align-items:center;gap:.3rem;font-size:.8125rem;font-weight:600;display:inline-flex}.users-admin-status-icon{width:1rem;height:1rem}.users-admin-status-on{color:#047857}.users-admin-status-off{color:#b45309}.users-admin-empty{text-align:center;color:#64748b;margin:0;padding:1.5rem;font-size:.875rem}.users-admin-subtitle{color:#0f172a;margin:0 0 .35rem;font-size:.88rem;font-weight:700}.users-admin-hint{color:#64748b;margin:0 0 .65rem;font-size:.8125rem;line-height:1.45}.users-admin-field-hint{color:#64748b;margin-top:.35rem;font-size:.75rem;line-height:1.4;display:block}.users-admin-field-hint code{font-size:.82em}.users-admin-perm-search-wrap{margin-bottom:.75rem;position:relative}.users-admin-inline-icon{color:#94a3b8;pointer-events:none;width:1rem;height:1rem;position:absolute;top:50%;left:.65rem;transform:translateY(-50%)}.users-admin-perm-search{box-sizing:border-box;background:#fff;border:1px solid #e2e8f0;border-radius:.5rem;width:100%;padding:.5rem .65rem .5rem 2.25rem;font-size:.875rem}.users-admin-perm-search:focus{border-color:#38bdf8;outline:none;box-shadow:0 0 0 2px #38bdf840}.users-admin-perm-grid{flex-wrap:wrap;gap:.45rem;max-height:16rem;padding:.15rem;display:flex;overflow-y:auto}.users-admin-perm-pill{color:#334155;cursor:pointer;-webkit-user-select:none;user-select:none;background:#fff;border:1px solid #e2e8f0;border-radius:999px;align-items:center;gap:.35rem;padding:.35rem .55rem;font-size:.78rem;transition:border-color .12s,background .12s;display:inline-flex}.users-admin-perm-pill.is-on{color:#0c4a6e;background:#e0f2fe;border-color:#7dd3fc}.users-admin-perm-pill.is-disabled{opacity:.55;cursor:not-allowed}.users-admin-perm-pill input{accent-color:#0ea5e9}.users-admin-perm-num{opacity:.75;font-weight:600}.users-admin-rac-card{background:#fafafa;border:1px solid #e2e8f0;border-radius:.5rem;margin-top:.65rem;padding:.75rem .9rem}.users-admin-rac-card.is-muted{opacity:.55}.users-admin-rac-title{color:#0f172a;margin-bottom:.45rem;font-size:.82rem;font-weight:700}.users-admin-rac-verbs{flex-wrap:wrap;gap:.65rem 1rem;display:flex}.users-admin-rac-verb{color:#475569;text-transform:capitalize;align-items:center;gap:.35rem;font-size:.8rem;display:inline-flex}.users-admin-rac-verb input{accent-color:#0ea5e9}.users-admin-machine-api{background:linear-gradient(#fffbeb 0%,#fef3c7 100%);border:1px solid #fde68a;border-radius:.75rem;padding:1rem 1.15rem}.users-admin-machine-api strong{color:#92400e;margin-bottom:.35rem;display:block}.users-admin-code-row{margin-top:.65rem}.users-admin-code-label{text-transform:uppercase;letter-spacing:.05em;color:#78716c;margin-bottom:.2rem;font-size:.72rem;font-weight:700;display:block}.users-admin-code{word-break:break-all;background:#fff;border:1px solid #e7e5e4;border-radius:.35rem;padding:.4rem .55rem;font-size:.78rem;display:block}.users-admin-code-block{white-space:pre-wrap}.redis-status-page .muted{color:#64748b}.redis-status-page .muted.small{font-size:.8125rem}.redis-status-page .nowrap{white-space:nowrap}.redis-status-page .flash.error{color:#991b1b;background:#fef2f2;border:1px solid #fecaca;border-radius:.5rem;padding:.75rem 1rem}.redis-status-page .flash.warning{color:#92400e;background:#fffbeb;border:1px solid #fde68a;border-radius:.5rem;margin-top:.75rem;padding:.75rem 1rem}.redis-status-env-diag-files{margin:.5rem 0 0;padding-left:1.25rem}.redis-status-page .mapping-card h3+.redis-status-subh{margin-top:.35rem}.redis-status-subh{color:#475569;margin:.85rem 0 .35rem;font-size:.8125rem;font-weight:700}.redis-status-dl{grid-template-columns:minmax(9rem,min-content) minmax(0,1fr);align-items:start;gap:.4rem 1rem;margin:0;font-size:.875rem;display:grid}.redis-status-dl dt{color:#334155;margin:0;font-weight:600}.redis-status-dl dd{word-break:break-word;min-width:0;margin:0}.inline-actions{box-shadow:none;border:0;margin-top:.75rem;padding:0}.inline-actions a,.inline-actions button.inline-actions-link{color:#334155;cursor:pointer;background:#fff;border:1px solid #d8dee8;border-radius:.375rem;padding:.4rem .65rem;font-family:inherit;font-size:.8125rem;font-weight:600;text-decoration:none}.inline-actions button.inline-actions-link{margin:0;display:inline-block}.gateway-form-grid{grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:.85rem;display:grid}.gateway-form-grid label{color:#334155;flex-direction:column;gap:.35rem;font-size:.8125rem;font-weight:600;display:flex}.gateway-form-grid input,.gateway-form-grid select{color:#111827;background:#fff;border:1px solid #d8dee8;border-radius:.375rem;padding:.45rem .6rem}.ping-test-page .ping-test-intro-links a{color:inherit}.ping-test-card{max-width:52rem}.ping-test-panel-head{align-items:center;gap:.5rem;margin:0 0 .35rem;font-size:1.05rem;display:flex}.ping-test-panel-icon{color:#0ea5e9;flex-shrink:0}.ping-test-lead{margin:0 0 1rem}.ping-test-main-field{flex:1;margin-bottom:0}.ping-test-field-sub{color:#64748b;font-size:.8125rem;font-weight:400}.ping-test-input-wrap{flex-wrap:wrap;align-items:stretch;gap:.65rem;margin-top:.35rem;display:flex}.ping-test-input-wrap input[list]{border:1px solid #e2e8f0;border-radius:.6rem;flex:1;min-width:12rem;padding:.58rem .85rem;font-size:.9375rem}.ping-test-input-wrap input[list]:focus{border-color:#38bdf8a6;outline:none;box-shadow:0 0 0 3px #38bdf833}.ping-test-run-btn{color:#0369a1;cursor:pointer;background:linear-gradient(#ecfefff2,#e0f2fee6);border:1px solid #38bdf873;border-radius:.65rem;align-items:center;gap:.4rem;padding:.55rem 1.05rem;font-size:.875rem;font-weight:650;transition:transform 80ms,box-shadow .12s;display:inline-flex}.ping-test-run-btn:hover:not(:disabled){transform:translateY(-1px);box-shadow:0 6px 16px #38bdf833}.ping-test-run-btn:disabled{opacity:.72;cursor:not-allowed}.ping-test-run-spinner{animation:.95s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.ping-test-resolve-hint{margin:.5rem 0 0;font-size:.8375rem}.ping-test-quick{border-top:1px solid #f1f5f9;margin-top:1.15rem;padding-top:1rem}.ping-test-quick-label{text-transform:uppercase;letter-spacing:.08em;color:#94a3b8;margin-bottom:.5rem;font-size:.72rem;font-weight:700;display:block}.ping-test-chip-row{flex-wrap:wrap;gap:.45rem;display:flex}.ping-test-chip{color:#0f172a;cursor:pointer;background:linear-gradient(#fff,#fafbfc);border:1px solid #e2e8f0;border-radius:999px;align-items:center;gap:.35rem;padding:.38rem .62rem;font-size:.8rem;transition:border-color .12s,box-shadow .12s;display:inline-flex}.ping-test-chip:hover{border-color:#38bdf880;box-shadow:0 4px 12px #0f172a0f}.ping-test-chip-ip{color:#475569;background:#f8fafc;border:1px solid #e2e8f0;border-radius:.35rem;padding:.06rem .28rem;font-size:.72rem;font-weight:500}.ping-test-msg.dashboard-status{margin-top:.85rem}.ping-test-result-meta,.ping-test-status-row{margin:.35rem 0;font-size:.9rem}.ping-test-output{color:#e2e8f0;background:linear-gradient(#0f172a 0%,#1e293b 100%);border:1px solid #334155;border-radius:.85rem;max-height:22rem;margin:.75rem 0 0;padding:1rem;font-size:.7875rem;line-height:1.5;overflow:auto;box-shadow:inset 0 1px #ffffff0a}.gateway-check{justify-content:flex-start;align-items:center;flex-direction:row!important}.gateway-check input{width:auto}.is-selected-row td{background:#3498db14}.template-var-form{background:#f8fafc;border:1px solid #d8dee8;border-radius:.75rem;margin:.85rem 0;padding:1rem}.template-var-form>label,.template-var-form fieldset{margin-bottom:.85rem;display:block}.template-var-form input,.template-var-form select{background:#fff;border:1px solid #d8dee8;border-radius:.375rem;padding:.45rem .6rem}.template-var-form>label input{width:min(100%,32rem);margin-top:.35rem;display:block}.template-var-form fieldset{border:1px solid #d8dee8;border-radius:.5rem;padding:.65rem}.template-var-form fieldset label{align-items:center;gap:.35rem;margin-right:1rem;display:inline-flex}.calc-ref-block{background:#fff;border:1px solid #d8dee8;border-radius:.75rem;margin-top:.85rem;padding:.85rem}.calc-ref-head{justify-content:space-between;align-items:center;gap:1rem;display:flex}.calc-ref-head button,.calc-ref-row button{color:#334155;background:#fff;border:1px solid #d8dee8;border-radius:.375rem;padding:.35rem .6rem}.calc-ref-block p{color:#64748b;margin:.35rem 0 .75rem;font-size:.8125rem}.calc-ref-row{grid-template-columns:2rem minmax(12rem,1fr) auto;align-items:center;gap:.5rem;margin-top:.5rem;display:grid}.calc-ref-row span{font-weight:800}.calc-ref-row select{width:100%}.app-toast{z-index:10000;color:#fff;border-radius:.75rem;max-width:min(420px,100vw - 2rem);padding:.85rem 1rem;font-size:.9rem;font-weight:700;position:fixed;top:1rem;right:1rem;box-shadow:0 18px 40px #0f172a38}.app-toast--success{background:#16a34a}.app-toast--error{background:#dc2626}.device-designer{grid-template-columns:180px minmax(0,1fr) 260px;align-items:start;gap:.85rem;display:grid}.designer-toolbar{align-items:center;gap:1rem;margin:.75rem 0;display:flex}.designer-toolbar label{color:#334155;align-items:center;gap:.55rem;font-size:.875rem;font-weight:700;display:inline-flex}.designer-toolbar input[type=range]{width:180px}.device-ui-view-toggle{background:#fff;border:1px solid #cbd5e1;border-radius:999px;display:inline-flex;overflow:hidden;box-shadow:0 1px 2px #0f172a0a}.device-ui-view-toggle button{color:#475569;cursor:pointer;white-space:nowrap;background:0 0;border:0;padding:.48rem .85rem;font-size:.8125rem;font-weight:800}.device-ui-view-toggle button.is-active{color:#fff;background:#3498db}.designer-palette,.designer-props{background:#f8fafc;border:1px solid #d8dee8;border-radius:.75rem;padding:.75rem}.designer-palette button{text-align:left;background:#fff;border:1px solid #d8dee8;border-radius:.375rem;width:100%;margin-bottom:.35rem;padding:.4rem .55rem}.designer-canvas-viewport{background:#94a3b80f;border:1px solid #d8dee8;border-radius:.75rem;width:100%;max-width:100%;min-height:560px;padding:.75rem;overflow:auto}.designer-canvas{background-color:#fff;background-image:linear-gradient(#94a3b81f 1px,#0000 1px),linear-gradient(90deg,#94a3b81f 1px,#0000 1px),none;background-position:0 0,0 0,0 0;background-repeat:repeat,repeat,repeat;background-size:20px 20px;background-attachment:scroll,scroll,scroll;background-origin:padding-box,padding-box,padding-box;background-clip:border-box,border-box,border-box;border:1px solid #d8dee8;border-radius:.75rem;position:relative;overflow:auto}.designer-panel{cursor:move;-webkit-user-select:none;user-select:none;background:#fffffff2;border:2px solid #94a3b8;border-radius:.5rem;padding:.5rem;position:absolute}.designer-resize-handle{cursor:nwse-resize;border-bottom:3px solid #0f172a73;border-right:3px solid #0f172a73;width:16px;height:16px;position:absolute;bottom:6px;right:6px}.designer-panel--header{background:#3498db1a;border-color:#3498dbbf}.designer-panel--tables{background:#6366f11a;border-color:#6366f1bf}.designer-panel--controls{background:#f59e0b1f;border-color:#f59e0bd9}.designer-panel--gadgets{background:#22c55e1a;border-color:#22c55ebf}.designer-panel--graphs{background:#0ea5e91a;border-color:#0ea5e9bf}.designer-panel.is-selected{border-color:#3498db;box-shadow:0 0 0 3px #3498db24}.designer-props label{margin-bottom:.45rem;display:block}.designer-props span{color:#64748b;font-size:.75rem;font-weight:700;display:block}.designer-props input{border:1px solid #d8dee8;border-radius:.375rem;width:100%;padding:.35rem .5rem}.device-ui-designer-page .designer-props label.device-ui-color-field span{margin-bottom:.2rem}.device-ui-designer-page .device-ui-color-row{align-items:center;gap:.5rem;display:flex}.device-ui-designer-page .device-ui-color-row input[type=color]{cursor:pointer;border:1px solid #d8dee8;border-radius:.35rem;flex:none;width:2.75rem;height:2rem;padding:0}.device-ui-designer-page .device-ui-color-row input[type=text]{flex:auto;min-width:0}.device-ui-designer-page .device-ui-props-appearance{margin-top:.75rem}.designer-props select{border:1px solid #d8dee8;border-radius:.375rem;width:100%;padding:.35rem .5rem}.panel-editor-block{background:#f8fafc;border:1px solid #d8dee8;border-radius:.75rem;margin:.85rem 0;padding:.85rem}.panel-editor-block>label{margin-bottom:.6rem;display:block}.panel-editor-block>label span{color:#64748b;font-size:.75rem;font-weight:700;display:block}.panel-editor-block input,.panel-editor-block select{border:1px solid #d8dee8;border-radius:.375rem;padding:.35rem .5rem}.section-add-row{background:#f8fafc;border:1px dashed #cbd5e1;border-radius:.75rem;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));align-items:end;gap:.65rem;margin:.75rem 0;padding:.75rem;display:grid}.section-add-row label{color:#64748b;flex-direction:column;gap:.3rem;font-size:.75rem;font-weight:700;display:flex}.section-add-row input,.section-add-row select{color:#111827;background:#fff;border:1px solid #d8dee8;border-radius:.375rem;padding:.4rem .55rem}.device-ui-designer-page .section-add-row.device-ui-section-add-row .alarm-rules-add-btn{place-self:end start}.device-ui-panel-footer-actions,.device-ui-section-footer-actions{flex-wrap:wrap;gap:.55rem;margin-top:.75rem;display:flex}.device-ui-panel-footer-actions--split{justify-content:space-between;align-items:center}.device-ui-compact-add-btn.alarm-rules-add-btn{border-radius:.55rem;padding:.48rem .92rem;font-size:.8125rem}@media (width<=1200px){.device-designer{grid-template-columns:1fr}.designer-canvas{width:100%}}@media (width<=720px){.device-ui-designer-toolbar--chrome{flex-direction:column;align-items:stretch}.device-ui-view-toggle{width:100%}.device-ui-view-toggle button{flex:1 1 0}.designer-toolbar input[type=range]{width:100%}.designer-canvas-viewport{min-height:420px;padding:.55rem}}.device-ui-meta{color:#475569;flex-wrap:wrap;align-items:baseline;gap:.35rem 1.25rem;margin-top:.4rem;font-size:.875rem;display:flex}.device-ui-meta strong{color:#0f172a}.device-ui-designer-toolbar{margin-bottom:1rem}.device-ui-designer-toolbar .modbus-devices-toolbar-primary svg.spin{animation:.85s linear infinite spin}.device-ui-designer-main-card{padding:1rem 1.1rem 1.15rem}.device-ui-section-card{padding:1rem 1.1rem 1.05rem}.device-ui-designer-heading{flex-wrap:wrap;justify-content:space-between;align-items:flex-start;gap:.65rem;margin-bottom:.65rem;display:flex}.device-ui-designer-heading h3{margin:0!important}.device-ui-designer-lead{color:#64748b;font-size:.875rem;line-height:1.45;margin:0 0 .85rem!important}.device-ui-file-input-hidden{opacity:0;width:0;height:0;position:absolute;overflow:hidden}.device-ui-designer-page .designer-palette,.device-ui-designer-page .designer-props{background:linear-gradient(#fff 0%,#f8fafc 100%);border-color:#e2e8f0;border-radius:1rem;padding:.85rem;box-shadow:0 2px 6px #0f172a0d}.device-ui-designer-page .designer-props{background:#fff}.device-ui-designer-page .designer-palette button{color:#0f172a;border:1px solid #e2e8f0;border-radius:.55rem;font-size:.8125rem;font-weight:650;transition:border-color .15s,box-shadow .15s,transform .12s}.device-ui-designer-page .designer-palette button:hover{border-color:#0ea5e973;transform:translateY(-1px);box-shadow:0 4px 12px #0ea5e91f}.device-ui-designer-page .designer-toolbar{background:#f1f5f9f2;border:1px solid #e2e8f0;border-radius:.85rem;margin:0 0 .85rem;padding:.55rem .75rem}.device-ui-designer-toolbar--chrome{flex-wrap:wrap;align-items:flex-end;gap:.75rem 1.25rem;display:flex}.device-ui-designer-toolbar--chrome label:not(.device-ui-toolbar-chrome-item){flex-direction:column;gap:.3rem;display:inline-flex}.device-ui-toolbar-chrome-sep{background:#94a3b873;align-self:stretch;width:1px;min-height:2.25rem;margin:0 .15rem}.device-ui-toolbar-chrome-item{flex-direction:column;gap:.25rem;min-width:min(100%,220px);display:flex}.device-ui-toolbar-chrome-label{color:#64748b;text-transform:uppercase;letter-spacing:.04em;font-size:.7rem;font-weight:800}.device-ui-toolbar-chrome-inputs.device-ui-color-row input[type=text]{min-width:7rem}.device-ui-designer-page .designer-canvas-viewport{background:radial-gradient(80% 55% at 50% -10%,#0ea5e914,#0000 62%),#f8fafce6;border-color:#e2e8f0;border-radius:1rem;box-shadow:inset 0 1px 2px #0f172a0a}.device-ui-designer-page .designer-canvas{border-color:#cbd5e1;border-radius:.85rem;box-shadow:0 4px 16px #0f172a14,inset 0 1px #fff9}.device-ui-designer-page .designer-panel{border-radius:.62rem;box-shadow:0 3px 10px #0f172a0f}.device-ui-designer-page .designer-panel.is-selected{box-shadow:0 0 0 2px #0ea5e973,0 6px 18px #0ea5e91f}.device-ui-zoom-value{font-variant-numeric:tabular-nums;color:#0369a1;min-width:2.75rem;font-weight:700}.device-ui-intro-hint{margin-top:.65rem!important;margin-bottom:0!important}.device-ui-designer-panel-title{align-items:center;gap:.45rem;display:inline-flex}.device-ui-designer-title-icon{color:#0369a1;flex-shrink:0}.device-ui-props-heading{color:#0f172a;font-size:.9375rem;font-weight:750;margin:0 0 .65rem!important}.device-ui-props-hint{margin:.65rem 0 0!important}.device-ui-delete-panel-btn{width:100%;margin-top:.4rem}.device-ui-designer-page .designer-props .alarm-rule-modal__btn-secondary.device-ui-delete-panel-btn{justify-content:center;width:100%}.device-ui-designer-toolbar .modbus-devices-toolbar-csv-icon.spin{animation:.85s linear infinite spin}.device-ui-props-placeholder{text-align:center;color:#94a3b8;margin:0;padding:1.25rem .35rem;font-size:.875rem;line-height:1.5}.legacy-parity-page{flex-direction:column;gap:.75rem;min-height:calc(100vh - 5rem);display:flex}.legacy-parity-header{background:#fff;border:1px solid #d8dee8;border-radius:.75rem;justify-content:space-between;align-items:center;gap:1rem;padding:.85rem 1rem;display:flex;box-shadow:0 1px 2px #0f172a0a}.legacy-parity-kicker{color:#3498db;letter-spacing:.08em;text-transform:uppercase;font-size:.7rem;font-weight:700}.legacy-parity-header h2{color:#111827;margin:.15rem 0 0;font-size:1.05rem}.legacy-parity-header a{color:#334155;background:#fff;border:1px solid #d8dee8;border-radius:.5rem;flex-shrink:0;padding:.45rem .75rem;font-size:.8125rem;font-weight:600}.legacy-parity-frame{background:#fff;border:1px solid #d8dee8;border-radius:.75rem;flex:1;width:100%;min-height:76vh;box-shadow:0 1px 2px #0f172a0a}.login-page{color:#f8fafc;background:#07111b;min-height:100vh;overflow:hidden}.login-layout{grid-template-columns:minmax(0,1.08fr) minmax(480px,.92fr);min-height:100vh;display:grid}.login-hero{background:#0a1824;border-right:1px solid #67e8f91a;justify-content:center;align-items:center;padding:.5rem;display:flex;position:relative}.login-hero-glow{background:radial-gradient(circle at 28% 18%,#0ea5e929,#0000 34%),radial-gradient(circle at 72% 70%,#14b8a61f,#0000 32%);position:absolute;inset:0}.login-hero-frame{background:#0f172a;border:1px solid #a5f3fc1a;border-radius:.75rem;width:100%;height:100%;position:relative;overflow:hidden;box-shadow:0 18px 60px #02081747}.login-hero-image{-o-object-fit:cover;object-fit:cover;width:100%;height:100%}.login-hero-overlay{background:linear-gradient(90deg,#02061726,#0000,#02061740);position:absolute;inset:0}.login-main{background:#07111b;justify-content:center;align-items:center;min-height:100vh;padding:3rem 1.5rem;display:flex;position:relative}.login-main-divider{background:#67e8f91a;width:1px;position:absolute;inset:0 auto 0 0}.login-card-wrap{width:100%;max-width:460px}.login-title-wrap{text-align:center;margin-bottom:2rem}.login-title{color:#fff;letter-spacing:.025em;margin:0;font-size:1.25rem;font-weight:600}.login-card{background:#111c2a;border:1px solid #ffffff0d;border-radius:1rem;padding:2rem;box-shadow:0 18px 60px #02081747}.login-error{color:#fee2e2;background:#ef44441a;border:1px solid #f871714d;border-radius:.75rem;margin-bottom:1.25rem;padding:.75rem 1rem;font-size:.875rem}.login-error-retry-text{margin:0 0 .75rem}.login-retry-button{color:#e2e8f0;cursor:pointer;background:#0f172a99;border:1px solid #fff3;border-radius:.75rem;justify-content:center;align-items:center;gap:.5rem;width:100%;margin:0;padding:.65rem 1rem;font-size:.8125rem;font-weight:500;transition:background-color .2s,border-color .2s;display:inline-flex}.login-retry-button:hover{background:#21a1f11f;border-color:#21a1f180}.login-hint{color:#94a3b8;align-items:center;gap:.5rem;margin-bottom:1.25rem;font-size:.875rem;display:flex}.login-hint-spinner{flex-shrink:0;width:1rem;height:1rem;animation:.9s linear infinite spin}.login-connection-alert{background:linear-gradient(135deg,#fbbf2414 0%,#0f172aa6 100%);border:1px solid #fbbf2459;border-radius:1rem;gap:1rem;margin-bottom:1.25rem;padding:1.1rem 1.15rem;display:flex;box-shadow:0 8px 32px #02081733}.login-connection-alert__icon-wrap{flex-shrink:0;align-items:flex-start;padding-top:.1rem;display:flex}.login-connection-alert__icon{color:#fbbf24;opacity:.95;width:1.75rem;height:1.75rem}.login-connection-alert__content{flex:1;min-width:0}.login-connection-alert__title{color:#fef3c7;letter-spacing:.01em;margin:0 0 .45rem;font-size:.9375rem;font-weight:600;line-height:1.35}.login-connection-alert__description{color:#e2e8f0;opacity:.92;margin:0 0 .65rem;font-size:.8125rem;line-height:1.5}.login-connection-alert__technical{color:#94a3b8;background:#00000040;border-radius:.5rem;margin:0 0 .85rem;padding:.5rem .65rem;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;font-size:.75rem;line-height:1.45}.login-connection-alert__retry{color:#fef3c7;cursor:pointer;background:#fbbf241f;border:1px solid #fbbf2473;border-radius:.65rem;justify-content:center;align-items:center;gap:.5rem;width:100%;margin:0;padding:.55rem 1rem;font-size:.8125rem;font-weight:600;transition:background-color .2s,border-color .2s;display:inline-flex}.login-connection-alert__retry:hover{background:#fbbf2433;border-color:#fcd34da6}.login-field{color:#0f172a;background:#e8eefb;border-radius:.75rem;align-items:center;gap:.75rem;padding:.875rem 1rem;display:flex}.login-field-spaced{margin-top:1.25rem}.login-field-icon{color:#64748b;flex-shrink:0;width:1.25rem;height:1.25rem}.login-input{color:#0f172a;background:0 0;border:0;outline:0;width:100%;font-size:.875rem;font-weight:500}.login-input::placeholder{color:#94a3b8;font-weight:400}.login-button{color:#fff;cursor:pointer;background:#21a1f1;border:0;border-radius:.75rem;justify-content:center;align-items:center;gap:.5rem;width:100%;margin-top:1.75rem;padding:.875rem 1rem;font-size:.875rem;font-weight:500;transition:background-color .2s,opacity .2s;display:inline-flex}.login-remember{color:#cbd5e1;cursor:pointer;align-items:center;gap:.5rem;margin-top:1rem;font-size:.875rem;display:inline-flex}.login-remember input{accent-color:#21a1f1;width:1rem;height:1rem}.login-button:hover{background:#1b8cd3}.login-button:disabled{cursor:not-allowed;opacity:.6}.login-footer{text-align:center;margin-top:3rem}.login-tagline{color:#e2e8f0;letter-spacing:.35em;text-transform:uppercase;font-size:.75rem;font-weight:600}.login-powered{color:#64748b;margin-top:.75rem;font-size:.75rem}.login-powered span{color:#21a1f1}.dv_ctrl_modal_backdrop{z-index:9998;box-sizing:border-box;-webkit-backdrop-filter:blur(10px);background:#0f172a6b;justify-content:center;align-items:center;padding:1.25rem;display:flex;position:fixed;inset:0}.dv_ctrl_modal_card{background:var(--panel,#fff);border:1px solid var(--border,#94a3b873);text-align:center;z-index:9999;border-radius:16px;width:min(400px,100vw - 2.5rem);max-width:100%;padding:1.35rem 1.4rem 1.25rem;font-size:.9rem;font-weight:600;line-height:1.35;position:relative;box-shadow:0 24px 48px #02061747}.dv_ctrl_modal_title{color:var(--text,#0f172a);margin-bottom:.35rem;font-size:1.05rem;font-weight:900}.dv_ctrl_modal_row{flex-wrap:wrap;justify-content:center;gap:.5rem;margin-top:1rem;display:flex}.dv_ctrl_modal_row button{padding:.45rem .85rem;font-size:.88rem}.dv_ctrl_modal_label_line{color:var(--text,#0f172a);margin-top:.35rem;font-size:1rem;font-weight:800}.svl-page .mapping-intro.svl-intro--compact{padding:.55rem 1rem .6rem}.svl-page .mapping-intro.svl-intro--compact h2{margin-bottom:0}.svl-filters-card{border:1px solid #94a3b859;border-radius:12px;box-shadow:0 1px 2px #0f172a0a}.svl-filters-toolbar{flex-wrap:wrap;justify-content:flex-end;align-items:center;gap:.5rem;margin-bottom:.65rem;display:flex}.svl-segmented{background:#f1f5f9;border:1px solid #e2e8f0;border-radius:10px;gap:2px;padding:3px;display:inline-flex}.svl-segmented button{appearance:none;color:#64748b;cursor:pointer;background:0 0;border:none;border-radius:8px;padding:.45rem 1rem;font-size:.875rem;font-weight:600;transition:background .15s,color .15s}.svl-segmented button:hover{color:#0f172a}.svl-segmented button.is-active{color:#0f172a;background:#fff;box-shadow:0 1px 3px #0f172a1f}.svl-filters-grid{grid-template-columns:minmax(14rem,22rem) 1fr;align-items:start;gap:1.25rem 1.5rem;display:grid}.svl-field-label{letter-spacing:.06em;text-transform:uppercase;color:#64748b;margin-bottom:.35rem;font-size:.72rem;font-weight:700;display:block}.svl-field-block{min-width:0}.svl-range-dd{min-width:12rem;max-width:min(100%,32rem);position:relative}.svl-range-summary{cursor:pointer;box-sizing:border-box;word-break:break-word;background:#fff;border:1px solid #cbd5e1;border-radius:8px;width:100%;padding:.5rem .65rem;font-size:.88rem;line-height:1.35;list-style:none}.svl-range-summary::-webkit-details-marker{display:none}.svl-range-dd[open]>.svl-range-summary{border-bottom-right-radius:0;border-bottom-left-radius:0}.svl-range-panel{z-index:38;border-top:none;border-top-left-radius:0;border-top-right-radius:0;width:min(26rem,94vw);margin-top:0;padding:.75rem;position:absolute;top:calc(100% - 1px);left:0;box-shadow:0 12px 32px #0f172a1f}.svl-range-hint{margin:0 0 .65rem}.svl-range-inputs{grid-template-columns:1fr 1fr;align-items:end;gap:.75rem 1rem;display:grid}.svl-range-inputs .svl-time-field{min-width:0}.svl-range-footer{border-top:1px solid #94a3b838;justify-content:flex-end;margin-top:.85rem;padding-top:.65rem;display:flex}.svl-range-done{padding:.45rem 1.1rem;font-size:.84rem}.svl-time-field label{color:#475569;margin-bottom:.25rem;font-size:.8rem;font-weight:600;display:block}.svl-time-field input[type=datetime-local]{box-sizing:border-box;background:#fff;border:1px solid #cbd5e1;border-radius:8px;width:100%;padding:.5rem .6rem;font-size:.88rem}.svl-filters-actions{border-top:1px solid #94a3b833;flex-wrap:wrap;align-items:flex-end;gap:1rem 1.25rem;margin-top:1.25rem;padding-top:1.15rem;display:flex}.svl-filters-actions .svl-var-picker{flex:260px;min-width:200px}.svl-primary-actions{flex-direction:column;flex:0 auto;align-items:flex-end;gap:.4rem;min-width:11rem;display:flex}.svl-btn-row{flex-wrap:wrap;justify-content:flex-end;gap:.5rem;display:flex}.svl-csv-hint{text-align:right;max-width:18rem;margin:0}.svl-btn-outline{color:#334155;cursor:pointer;background:#fff;border:1px solid #cbd5e1;border-radius:8px;padding:.52rem 1rem;font-size:.875rem;font-weight:600;transition:border-color .15s,background .15s}.svl-btn-outline:hover{background:#f8fafc;border-color:#94a3b8}.svl-btn-primary{color:#fff;cursor:pointer;background:linear-gradient(#2563eb 0%,#1d4ed8 100%);border:none;border-radius:8px;padding:.52rem 1.35rem;font-size:.875rem;font-weight:700;transition:filter .15s,transform .1s;box-shadow:0 1px 2px #2563eb59}.svl-btn-primary:hover:not(:disabled){filter:brightness(1.05)}.svl-btn-primary:disabled{opacity:.65;cursor:not-allowed}.svl-var-count{color:#2563eb;font-weight:600}.svl-graph-card{border:1px solid #94a3b859;border-radius:12px;box-shadow:0 1px 2px #0f172a0a}.svl-graph-head{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:1rem;margin-bottom:.4rem;display:flex}.svl-graph-title{margin:0;font-size:1.05rem;font-weight:700}.svl-graph-controls{flex-wrap:wrap;align-items:flex-end;gap:.75rem 1rem;display:flex}.svl-graph-tz-wrap{flex-direction:column;gap:.25rem;display:flex}.svl-graph-tz-wrap label{letter-spacing:.05em;text-transform:uppercase;color:#64748b;font-size:.72rem;font-weight:700}.svl-pill{color:#1d4ed8;background:#eff6ff;border:1px solid #bfdbfe;border-radius:999px;align-items:center;padding:.25rem .65rem;font-size:.75rem;font-weight:700;display:inline-flex}.svl-page .svl-site-hint{margin:.25rem 0 .35rem}.svl-page .svl-dd-filter{box-sizing:border-box;background:#fff;border:1px solid #cbd5e1;border-radius:8px;width:100%;padding:.4rem .5rem;font-size:.88rem;display:block}.svl-page .svl-site-dd{min-width:12rem;max-width:min(100%,22rem);position:relative}.svl-page .svl-site-summary{cursor:pointer;box-sizing:border-box;text-overflow:ellipsis;white-space:nowrap;background:#fff;border:1px solid #cbd5e1;border-radius:8px;width:100%;padding:.5rem .65rem;font-size:.9rem;list-style:none;overflow:hidden}.svl-page .svl-site-summary::-webkit-details-marker{display:none}.svl-page .svl-site-dd[open]>.svl-site-summary{border-bottom-right-radius:0;border-bottom-left-radius:0}.svl-page .svl-site-panel{z-index:40;border-top:none;border-top-left-radius:0;border-top-right-radius:0;width:min(22rem,92vw);margin-top:0;padding:.5rem;position:absolute;top:calc(100% - 1px);left:0;box-shadow:0 12px 32px #0f172a1f}.svl-page .svl-site-list{max-height:14rem;overflow:auto}.svl-page .svl-site-opt{box-sizing:border-box;text-align:left;cursor:pointer;width:100%;color:inherit;background:0 0;border:1px solid #0000;border-radius:6px;margin:.08rem 0;padding:.4rem .5rem;font-size:.9rem;display:block}.svl-page .svl-site-opt:hover{background:#2563eb14}.svl-page .svl-var-dd summary{cursor:pointer;background:#fff;border:1px solid #cbd5e1;border-radius:8px;padding:.5rem .65rem;font-size:.9rem;list-style:none}.svl-page .svl-var-dd summary::-webkit-details-marker{display:none}.svl-page .svl-var-dd[open] summary{border-bottom-right-radius:0;border-bottom-left-radius:0}.svl-page.svl-page .svl-var-picker{flex:220px;min-width:200px;max-width:100%}.svl-page .svl-var-box{max-width:min(100%,36rem);max-height:14rem;margin-top:.35rem;padding:.5rem;overflow:auto}.svl-page .svl-var-line{align-items:center;gap:.5rem;margin:.15rem 0;font-size:.9rem;display:flex}.svl-page .svl-var-actions{gap:.75rem;margin-top:.35rem;display:flex}.svl-page .link{color:#2563eb;cursor:pointer;font-size:inherit;background:0 0;border:0;padding:0;text-decoration:underline}.svl-page .svl-table-wrap{max-height:min(70vh,680px)}.svl-page .svl-pagination{flex-wrap:wrap;align-items:center;gap:.5rem;margin-top:.5rem;display:flex}.svl-page .svl-graph-tz{background:#fff;border:1px solid #cbd5e1;border-radius:8px;min-width:12rem;max-width:100%;padding:.45rem .55rem;font-size:.88rem}.svl-page .svl-chart-wrap{width:100%;height:min(56vh,480px);position:relative}.svl-page .svl-chart-shell{margin-top:.15rem;padding:.5rem 0 0}.svl-page .svl-graph-zoom-hint{opacity:.88;margin:.35rem 0 0;font-size:.8rem}.svl-page .svl-ext-tooltip{background:#fff;border:1px solid #e5e7eb;border-radius:8px;padding:.55rem .7rem;font-size:.8rem;line-height:1.45;box-shadow:0 4px 18px #0f172a1f}.svl-page .svl-ext-tooltip .svl-tt-title{color:#111827;border-bottom:1px solid #f3f4f6;margin-bottom:.35rem;padding-bottom:.35rem;font-weight:700}.svl-page .svl-ext-tooltip .svl-tt-line{white-space:nowrap;font-weight:500}.svl-page .muted{opacity:.85;color:#64748b}.svl-page .small{font-size:.875rem}.svl-page .nowrap{white-space:nowrap}@media (width<=900px){.svl-filters-grid{grid-template-columns:1fr}.svl-filters-toolbar{justify-content:flex-start}.svl-filters-toolbar .svl-segmented{align-self:flex-start}}@media (width<=520px){.svl-range-inputs{grid-template-columns:1fr}}.whl-page .whl-lead{max-width:48rem;margin-bottom:.5rem}.whl-page .whl-actions{flex-wrap:wrap;gap:.75rem 1rem;margin-top:.35rem;display:flex}.whl-page .whl-actions a{color:#2563eb;font-size:.875rem;font-weight:600;text-decoration:none}.whl-page .whl-actions a:hover{text-decoration:underline}.whl-page .whl-card{border-radius:12px}.whl-page .whl-source{flex-wrap:wrap;align-items:center;gap:.75rem 1rem;margin-bottom:.5rem;display:flex}.whl-page .whl-source-label{letter-spacing:.06em;text-transform:uppercase;color:#64748b;font-size:.72rem;font-weight:700}.whl-page .whl-files{word-break:break-all;margin:0 0 1rem}.whl-page .whl-activity-title{margin:0 0 .35rem;font-size:1rem;font-weight:700}.whl-page .whl-meta{margin:0 0 .5rem}.whl-page .whl-pre{white-space:pre-wrap;color:#334155;background:#f1f5f9;border:1px solid #94a3b873;border-radius:8px;max-height:min(70vh,28rem);margin:0;padding:.75rem;font-family:ui-monospace,Consolas,Cascadia Code,monospace;font-size:.8rem;line-height:1.45;overflow:auto}@media (width<=1023px){.login-layout{grid-template-columns:1fr}.login-hero,.login-main-divider{display:none}}@media (width<=520px){.login-main{padding:2rem 1rem}.login-card{padding:1.25rem}}.modbus-device-view-react.mdv-legacy{--mdv-border:#94a3b86b;--mdv-text:#0f172a;--mdv-muted:#64748b;--mdv-shadow:0 4px 14px #02061714;--mdv-panel:#fff;--mdv-band-bg:#94a3b824;color:var(--mdv-text);font-family:system-ui,-apple-system,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif}.mapping-editor.modbus-device-view-react.mdv-legacy.mdv-share-view{gap:0}.modbus-device-view-react.mdv-legacy .mdv-dv-comm-title{color:var(--mdv-text);letter-spacing:-.01em;margin:0 0 .35rem;font-size:1.2em;font-weight:800;line-height:1.25}.modbus-device-view-react.mdv-legacy .mdv-dv-comm-poll{color:var(--mdv-muted);margin:0 0 .65rem;font-size:.914em}.modbus-device-view-react.mdv-legacy .mdv-dv-comm-poll strong{color:var(--mdv-text);font-weight:700}.modbus-device-view-react.mdv-legacy .mdv-dv-tiles{grid-template-columns:repeat(auto-fill,minmax(8.5rem,1fr));gap:.55rem;display:grid}.modbus-device-view-react.mdv-legacy .mdv-dv-tile{border:1px solid var(--mdv-border);background:var(--mdv-panel);box-shadow:var(--mdv-shadow);border-radius:12px;padding:.55rem .65rem;font-size:.914em}.modbus-device-view-react.mdv-legacy .mdv-dv-tile--online{background:#16a34a12;border-color:#16a34a61}.modbus-device-view-react.mdv-legacy .mdv-dv-tile--offline{background:#dc26260f;border-color:#dc262659}.modbus-device-view-react.mdv-legacy .mdv-dv-tile .mdv-dv-tile-lab{color:var(--mdv-muted);font-size:.9em;font-weight:600}.modbus-device-view-react.mdv-legacy .mdv-dv-tile .mdv-dv-tile-val{color:var(--mdv-text);margin-top:.12rem;font-size:1.25em;font-weight:800}.modbus-device-view-react.mdv-legacy .mdv-dv-tile .mdv-dv-tile-ts{color:var(--mdv-muted);margin-top:.15rem;font-size:.85em}.modbus-device-view-react.mdv-legacy .mdv-live-source-tabs{flex-wrap:wrap;align-items:center;gap:.35rem;margin:.75rem 0 .5rem;display:flex}.modbus-device-view-react.mdv-legacy .mdv-live-tab{appearance:none;border:1px solid var(--mdv-border,#94a3b873);color:#475569;background:var(--mdv-panel,#fff);cursor:pointer;border-radius:999px;padding:.35rem .85rem;font-size:.867em;font-weight:600;transition:background .12s,color .12s,border-color .12s,box-shadow .12s}.modbus-device-view-react.mdv-legacy .mdv-live-tab:hover{color:#1e40af;border-color:#3b82f673}.modbus-device-view-react.mdv-legacy .mdv-live-tab.is-active{color:#fff;background:#2563eb;border-color:#2563eb94;box-shadow:0 1px 2px #0f172a1f}.modbus-device-view-react.mdv-legacy .mdv-live-tab--csu:not(.is-active){background:#f8fafc}.modbus-device-view-react.mdv-legacy .mdv-dv-panel-band{text-transform:none;letter-spacing:.02em;color:#1e293b;background:var(--mdv-band-bg);border-bottom:1px solid var(--mdv-border);border-radius:.65rem .65rem 0 0;flex:none;margin:-.65rem -.65rem .5rem;padding:.4rem .75rem;font-size:.891em;font-weight:800}.modbus-device-view-react.mdv-legacy .mdv-dv-table-block+.mdv-dv-table-block{margin-top:.85rem}.modbus-device-view-react.mdv-legacy .mdv-dv-table-block .mdv-dv-panel-band{border-radius:6px;margin:0 0 .35rem}.modbus-device-view-react.mdv-legacy .mdv-dv-table-scroll{border:1px solid var(--mdv-border);background:var(--mdv-panel);border-radius:10px;overflow-x:auto}.modbus-device-view-react.mdv-legacy .mdv-dv-table{border-collapse:collapse;width:100%;font-size:.937em}.modbus-device-view-react.mdv-legacy .mdv-dv-table th,.modbus-device-view-react.mdv-legacy .mdv-dv-table td{text-align:left;border-bottom:1px solid var(--mdv-border);color:var(--mdv-text);padding:.4rem .55rem}.modbus-device-view-react.mdv-legacy .mdv-dv-table thead th{text-transform:uppercase;letter-spacing:.04em;color:#475569;background:#94a3b81f;font-size:.878em;font-weight:800}.modbus-device-view-react.mdv-legacy .mdv-dv-table tbody tr:last-child td{border-bottom:none}.modbus-device-view-react.mdv-legacy .mdv-dv-alarm-list{margin:0;padding:0;list-style:none}.modbus-device-view-react.mdv-legacy .mdv-dv-alarm{background:#fee2e2a6;border:1px solid #dc262659;border-radius:10px;padding:.55rem .65rem}.modbus-device-view-react.mdv-legacy .mdv-dv-alarm+.mdv-dv-alarm{margin-top:.45rem}.modbus-device-view-react.mdv-legacy .mdv-dv-alarm .mdv-dv-alarm-name{color:#b91c1c;margin:0 0 .25rem;font-size:.937em;font-weight:800}.modbus-device-view-react.mdv-legacy .mdv-dv-alarm .mdv-dv-alarm-meta{color:#7f1d1d;opacity:.9;margin:0;font-size:.823em}.modbus-device-view-react.mdv-legacy .mdv-dv-alarm-empty{color:var(--mdv-muted);margin:0;font-size:.914em}.modbus-device-view-react.mdv-legacy .mdv-dv-ctrl-hint{color:var(--mdv-muted);margin:0 0 .45rem;font-size:.857em;line-height:1.4}.modbus-device-view-react.mdv-legacy .mdv-dv-ctrl-write-msg{color:#14532d;background:#16a34a14;border:1px solid #16a34a59;border-radius:8px;margin:0 0 .5rem;padding:.45rem .55rem;font-size:.914em}.modbus-device-view-react.mdv-legacy .mdv-dv-controls{grid-template-columns:repeat(4,minmax(0,1fr));grid-auto-rows:minmax(5.35rem,auto);align-items:stretch;gap:.45rem;display:grid}@media (width<=520px){.modbus-device-view-react.mdv-legacy .mdv-dv-controls{grid-template-columns:repeat(2,minmax(0,1fr));grid-auto-rows:minmax(3.35rem,auto);gap:.35rem}.modbus-device-view-react.mdv-legacy .mdv-dv-ctrl{border-radius:10px;min-height:3.35rem;padding:.42rem .42rem .36rem;font-size:.82em;line-height:1.12}.modbus-device-view-react.mdv-legacy .mdv-dv-ctrl-led-wrap{top:5px;right:6px}.modbus-device-view-react.mdv-legacy .mdv-dv-led{width:8px;height:8px}.modbus-device-view-react.mdv-legacy .mdv-dv-ctrl .mdv-dv-ctrl-sub{margin-top:.08rem;font-size:.78em}}.modbus-device-view-react.mdv-legacy .mdv-dv-ctrl{box-sizing:border-box;border:1px solid var(--mdv-border);background:var(--mdv-panel);width:100%;height:100%;min-height:0;box-shadow:var(--mdv-shadow);cursor:pointer;-webkit-user-select:none;user-select:none;text-align:center;font:inherit;color:var(--mdv-text);border-radius:12px;flex-direction:column;justify-content:center;align-items:center;padding:.72rem .55rem .65rem;font-size:.937em;font-weight:700;transition:transform 60ms,box-shadow .12s,border-color .12s;display:flex;position:relative}.modbus-device-view-react.mdv-legacy .mdv-dv-ctrl:focus-visible{outline:none;box-shadow:0 0 0 2px #fff,0 0 0 4px #2563eb}.modbus-device-view-react.mdv-legacy .mdv-dv-ctrl:active:not(:disabled){transform:translateY(1px)}.modbus-device-view-react.mdv-legacy .mdv-dv-ctrl:disabled{cursor:not-allowed;opacity:.55}.modbus-device-view-react.mdv-legacy .mdv-dv-ctrl-led-wrap{pointer-events:none;line-height:0;position:absolute;top:7px;right:8px}.modbus-device-view-react.mdv-legacy .mdv-dv-led{box-sizing:border-box;border-radius:999px;width:10px;height:10px;display:block}.modbus-device-view-react.mdv-legacy .mdv-dv-led--on{background:#22c55e;box-shadow:0 0 0 2px #22c55e47}.modbus-device-view-react.mdv-legacy .mdv-dv-led--off{background:#94a3b8;box-shadow:0 0 0 1px #94a3b859}.modbus-device-view-react.mdv-legacy .mdv-dv-led--unk{opacity:.88;background:#cbd5e1}.modbus-device-view-react.mdv-legacy .mdv-dv-led--err{background:#ef4444;box-shadow:0 0 0 2px #ef44444d}.modbus-device-view-react.mdv-legacy .mdv-dv-ctrl .mdv-dv-ctrl-body{display:block}.modbus-device-view-react.mdv-legacy .mdv-dv-ctrl .mdv-dv-ctrl-sub{min-height:1.2em;color:var(--mdv-muted);word-break:break-word;margin-top:.15rem;font-size:.83em;font-weight:600;line-height:1.2;display:block}.modbus-device-view-react.mdv-legacy .mdv-dv-gadget-grid{grid-template-columns:repeat(auto-fill,minmax(10rem,1fr));gap:.5rem;display:grid}.modbus-device-view-react.mdv-legacy .mdv-dv-gadget{border:1px solid var(--mdv-border);background:var(--mdv-panel);box-shadow:var(--mdv-shadow);border-radius:12px;padding:.55rem .65rem}.modbus-device-view-react.mdv-legacy .mdv-dv-gadget .mdv-dv-gadget-lab{color:var(--mdv-muted);font-size:.891em}.modbus-device-view-react.mdv-legacy .mdv-dv-gadget .mdv-dv-gadget-val{color:var(--mdv-text);font-size:1.429em;font-weight:900}.modbus-device-view-react.mdv-legacy .mdv-dv-gadget .mdv-dv-gadget-vid{color:var(--mdv-muted);margin-top:.15rem;font-family:ui-monospace,monospace;font-size:.743em}.mdv-dv-modal-root{--mdv-border:#94a3b873;--mdv-text:#0f172a;--mdv-muted:#64748b;--mdv-panel:#fff;box-sizing:border-box;z-index:10050;justify-content:center;align-items:center;padding:1.25rem;display:flex}.mdv-dv-modal-root--fullscreen{-webkit-backdrop-filter:blur(10px);background:#0f172a6b;position:fixed;inset:0}.mdv-dv-modal-root--embedded{-webkit-backdrop-filter:blur(10px);background:#0f172a6b;position:absolute;inset:0}.mdv-dv-modal-root .mdv-dv-modal-card{z-index:1;border:1px solid var(--mdv-border);background:var(--mdv-panel);text-align:center;border-radius:16px;width:min(400px,100vw - 2.5rem);max-width:100%;padding:1.35rem 1.4rem 1.25rem;position:relative;box-shadow:0 24px 48px #02061747}.mdv-dv-modal-root .mdv-dv-modal-title{color:var(--mdv-text);margin:0 0 .35rem;font-size:1.05rem;font-weight:900}.mdv-dv-modal-root .mdv-dv-modal-label{color:var(--mdv-text);margin:0;font-size:1rem;font-weight:800}.mdv-dv-modal-root .mdv-dv-modal-desc{color:var(--mdv-muted);margin:.55rem 0 0;font-size:.875rem;font-weight:500;line-height:1.45}.mdv-dv-modal-root .mdv-dv-modal-row{flex-wrap:wrap;justify-content:center;gap:.5rem;margin-top:1.1rem;display:flex}.mdv-dv-modal-root .mdv-dv-modal-btn{font:inherit;cursor:pointer;border:1px solid var(--mdv-border);color:#fff;background:#2563eb;border-radius:10px;padding:.45rem .95rem;font-size:.88rem;font-weight:600;box-shadow:0 2px 6px #2563eb59}.mdv-dv-modal-root .mdv-dv-modal-btn:hover{background:#1d4ed8}.mdv-dv-modal-root .mdv-dv-modal-btn--secondary{background:var(--mdv-panel);color:var(--mdv-text);box-shadow:none}.mdv-dv-modal-root .mdv-dv-modal-btn--secondary:hover{background:#94a3b824}.mdv-dv-modal-root .mdv-dv-modal-btn:disabled{opacity:.55;cursor:not-allowed}.modbus-device-view-react.mdv-legacy .mdv-dv-status-stack{color:var(--mdv-muted);font-size:.891em;line-height:1.45}.modbus-device-view-react.mdv-legacy .mdv-dv-status-stack div{margin:0 0 .2rem}.modbus-device-view-react.mdv-legacy .mdv-dv-graph-block+.mdv-dv-graph-block{margin-top:1rem}.modbus-device-view-react.mdv-legacy .mdv-dv-graph-inner-title{color:var(--mdv-text);margin:0 0 .35rem;font-size:.914em;font-weight:800}.modbus-device-view-react .mdv-dv-graph-chart-card{background:var(--mdv-panel,#fff);border:1px solid #94a3b861;border-radius:12px;padding:.5rem .6rem .65rem;position:relative;box-shadow:0 1px 3px #0f172a0f}.modbus-device-view-react .mdv-dv-graph-toolbar{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.5rem .75rem;margin-bottom:.35rem;display:flex}.modbus-device-view-react .mdv-dv-graph-sample-pill{color:#1d4ed8;background:#eff6ff;border:1px solid #bfdbfe;border-radius:999px;align-items:center;max-width:100%;padding:.28rem .65rem;font-size:.72em;font-weight:700;line-height:1.35;display:inline-flex}.modbus-device-view-react .mdv-dv-graph-range-btn{font:inherit;color:#0f172a;cursor:pointer;text-align:left;background:#fff;border:1px solid #cbd5e1;border-radius:10px;max-width:min(100%,18rem);padding:.4rem .75rem;font-size:.8em;font-weight:600;box-shadow:0 1px 2px #0f172a0a}.modbus-device-view-react .mdv-dv-graph-range-btn:hover{background:#f8fafc;border-color:#94a3b8}.modbus-device-view-react .mdv-dv-graph-empty-hint{margin:.75rem 0 .35rem}.modbus-device-view-react .mdv-dv-graph-chart-shell{margin-top:.15rem}.modbus-device-view-react .mdv-dv-graph-chart-wrap{width:100%;height:min(52vh,320px);min-height:220px;position:relative}.modbus-device-view-react .mdv-dv-graph-chart-wrap .recharts-legend-wrapper{box-sizing:border-box;max-width:100%}.modbus-device-view-react .mdv-dv-graph-chart-wrap ul.recharts-default-legend{flex-wrap:wrap;align-items:center;gap:.35rem 1.15rem;width:100%;list-style:none;display:flex}.modbus-device-view-react .mdv-dv-graph-chart-wrap .recharts-legend-item{vertical-align:middle;align-items:center;margin-right:0!important;display:inline-flex!important}.modbus-device-view-react .mdv-dv-graph-chart-wrap .recharts-legend-item-text{white-space:nowrap;line-height:1.25}.modbus-device-view-react .mdv-dv-graph-brush-hint{margin:.35rem 0 0;font-size:.78em}.modbus-device-view-react .mdv-dv-graph-tooltip{background:#fff;border:1px solid #e5e7eb;border-radius:8px;padding:.5rem .65rem;font-size:.78em;line-height:1.45;box-shadow:0 4px 18px #0f172a1f}.modbus-device-view-react .mdv-dv-graph-tooltip-title{color:#111827;border-bottom:1px solid #f3f4f6;margin-bottom:.3rem;padding-bottom:.3rem;font-weight:700}.modbus-device-view-react .mdv-dv-graph-tooltip-line{white-space:nowrap;font-weight:500}.mdv-dv-graph-time-overlay{z-index:10040;box-sizing:border-box;-webkit-backdrop-filter:blur(8px);background:#0f172a59;justify-content:center;align-items:center;padding:1.25rem;display:flex;position:fixed;inset:0}.mdv-dv-graph-time-panel{box-sizing:border-box;background:#fff;border-radius:16px;width:min(420px,100%);max-height:min(90vh,520px);padding:1.35rem 1.4rem 1.2rem;overflow:auto;box-shadow:0 24px 48px #0f172a33,0 0 0 1px #94a3b840}.mdv-dv-graph-time-title{color:#0f172a;margin:0 0 .5rem;font-size:1.15rem;font-weight:800}.mdv-dv-graph-time-hint{color:#64748b;margin:0 0 1rem;font-size:.84rem;line-height:1.5}.mdv-dv-graph-time-fields{flex-direction:column;gap:.85rem;display:flex}.mdv-dv-graph-time-field{flex-direction:column;gap:.35rem;display:flex}.mdv-dv-graph-time-field span{letter-spacing:.04em;text-transform:uppercase;color:#64748b;font-size:.72rem;font-weight:700}.mdv-dv-graph-time-field input{font:inherit;color:#0f172a;box-sizing:border-box;background:#fff;border:1px solid #cbd5e1;border-radius:10px;width:100%;padding:.5rem .6rem;font-size:.9rem}.mdv-dv-graph-time-actions{flex-wrap:wrap;justify-content:flex-end;gap:.5rem;margin-top:1.15rem;display:flex}.mdv-dv-graph-time-clear{font:inherit;color:#475569;cursor:pointer;background:#fff;border:1px solid #cbd5e1;border-radius:10px;padding:.45rem .9rem;font-size:.88rem;font-weight:600}.mdv-dv-graph-time-clear:hover{background:#f8fafc}.mdv-dv-graph-time-done{font:inherit;color:#fff;cursor:pointer;background:#2563eb;border:1px solid #2563eb;border-radius:10px;padding:.45rem 1rem;font-size:.88rem;font-weight:600;box-shadow:0 2px 6px #2563eb4d}.modbus-device-view-standalone-shell{box-sizing:border-box;background:0 0;width:100%;min-height:100vh;margin:0;padding:0}.modbus-device-view-standalone-shell .mapping-editor.modbus-device-view-react.mdv-legacy{width:100%;max-width:none}.snmp-config-card{border:1px solid #e2e8f0;border-radius:16px;box-shadow:0 10px 24px #0f172a0f}.snmp-config-card-head{justify-content:space-between;align-items:flex-start;gap:1rem;margin-bottom:.85rem;display:flex}.snmp-json-form{flex-direction:column;gap:.85rem;display:flex}.snmp-json-textarea{box-sizing:border-box;color:#0f172a;resize:vertical;background:#f8fafc;border:1px solid #cbd5e1;border-radius:14px;outline:none;width:100%;min-height:26rem;padding:1rem;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,monospace;font-size:.86rem;line-height:1.55;box-shadow:inset 0 1px 2px #0f172a0d}.snmp-json-textarea:focus{background:#fff;border-color:#38bdf8;box-shadow:0 0 0 3px #0ea5e929,inset 0 1px 2px #0f172a0a}.snmp-config-actions{flex-wrap:wrap;align-items:center;gap:.75rem;display:flex}.snmp-config-actions--top{margin:.25rem 0 1rem}.database-structure-page .database-structure-flow-card{overflow-x:auto}.database-structure-page .database-structure-sub{margin:0 0 1rem}.database-structure-page .db-flow{flex-direction:column;align-items:center;gap:0;max-width:42rem;margin:0 auto;padding:.5rem 0 .25rem;display:flex}.database-structure-page .db-flow-row{flex-wrap:wrap;justify-content:center;gap:.65rem;width:100%;display:flex}.database-structure-page .db-flow-row--sources{gap:1rem}.database-structure-page .db-flow-row--parts{align-items:stretch;gap:.5rem}.database-structure-page .db-flow-node{text-align:center;background:linear-gradient(#fff 0%,#f8fafc 100%);border:1px solid #cbd5e1;border-radius:.6rem;flex-direction:column;align-items:center;gap:.25rem;min-width:8.5rem;max-width:100%;padding:.7rem 1rem;display:flex;position:relative;box-shadow:0 1px 2px #0f172a0f}.database-structure-page .db-flow-node--source{background:linear-gradient(#f0f9ff 0%,#e0f2fe 100%);border-color:#bae6fd}.database-structure-page .db-flow-node--accent{background:linear-gradient(#eff6ff 0%,#dbeafe 100%);border-color:#93c5fd}.database-structure-page .db-flow-node--hot{background:linear-gradient(#fffbeb 0%,#fef3c7 100%);border-color:#fcd34d}.database-structure-page .db-flow-node--cold{background:linear-gradient(#f0fdfa 0%,#ccfbf1 100%);border-color:#5eead4}.database-structure-page .db-flow-node--part{min-width:6.5rem;padding:.55rem .65rem;font-size:.78rem}.database-structure-page .db-flow-node--dim{opacity:.88}.database-structure-page .db-flow-node-title{color:#0f172a;font-size:.82rem;font-weight:700}.database-structure-page .db-flow-node-hint{color:#64748b;font-size:.72rem;line-height:1.35}.database-structure-page .db-flow-code{word-break:break-all;color:#0c4a6e;max-width:100%;font-size:.7rem}.database-structure-page .db-flow-part-tag{text-transform:uppercase;letter-spacing:.04em;color:#64748b;font-size:.65rem;font-weight:700}.database-structure-page .db-flow-connector{background:repeating-linear-gradient(#94a3b8 0 5px,#0000 5px 10px) 0 0/100% 20px;width:2px;min-height:2.25rem;margin:.1rem auto;animation:1.2s linear infinite db-flow-dash;position:relative}.database-structure-page .db-flow-connector--animated{opacity:.85;background:linear-gradient(#2563eb 0%,#38bdf8 100%);animation:1.5s ease-in-out infinite db-flow-pulse-h}.database-structure-page .db-flow-connector-label{white-space:nowrap;color:#475569;z-index:1;background:#f8fafc;border:1px solid #e2e8f0;border-radius:4px;padding:.1rem .35rem;font-size:.65rem;font-weight:600;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.database-structure-page .db-flow-connector--branch{background:repeating-linear-gradient(90deg,#94a3b8 0 6px,#0000 6px 12px) 0 0/24px 100%;width:72%;max-width:22rem;height:2px;min-height:0;margin:.35rem auto .5rem;animation:1.1s linear infinite db-flow-dash-side}.database-structure-page .db-flow-footnote{text-align:center;margin:.85rem 0 0}.database-structure-page .database-structure-bullets{margin:0;padding-left:1.2rem;line-height:1.55}.database-structure-page .database-structure-bullets li{margin-bottom:.45rem}@keyframes db-flow-dash{to{background-position:0 20px}}@keyframes db-flow-dash-side{to{background-position:24px 0}}@keyframes db-flow-pulse-h{0%,to{filter:brightness();opacity:.75}50%{filter:brightness(1.15);opacity:1}}.database-structure-page .db-flow-node--pulse{animation:2.4s ease-in-out infinite db-flow-node-glow}@keyframes db-flow-node-glow{0%,to{box-shadow:0 1px 2px #0f172a0f}50%{box-shadow:0 0 0 3px #2563eb38}}@media (prefers-reduced-motion:reduce){.database-structure-page .db-flow-connector,.database-structure-page .db-flow-connector--animated,.database-structure-page .db-flow-connector--branch,.database-structure-page .db-flow-node--pulse{animation:none!important}}.modbus-gateways-access-btn{white-space:nowrap!important;gap:.35rem!important;min-height:0!important;padding:.35rem .55rem!important}.modbus-devices-page .snmp-tester-card,.snmp-tester-page .snmp-tester-card{background:linear-gradient(145deg,#f8fafcfa,#fffffff5);border:1px solid #0f172a14;border-radius:14px;margin-top:1.25rem;margin-bottom:1.25rem;padding:0;overflow:hidden;box-shadow:0 1px 2px #0f172a0a,0 10px 28px #2563eb0f}.snmp-tester-head{background:linear-gradient(#2563eb0f,#0000);border-bottom:1px solid #0f172a0f;padding:1.15rem 1.25rem .25rem}.snmp-tester-title{letter-spacing:-.02em;color:#0f172a;align-items:center;gap:.5rem;margin:0 0 .35rem;font-size:1.15rem;font-weight:650;display:flex}.snmp-tester-title-icon{color:#2563eb;flex-shrink:0}.snmp-tester-form{padding:1rem 1.25rem .25rem}.snmp-tester-grid{grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:.85rem 1rem;margin-bottom:.85rem;display:grid}.snmp-tester-grid--halves{grid-template-columns:repeat(auto-fill,minmax(260px,1fr))}.snmp-tester-grid--thirds{grid-template-columns:repeat(auto-fill,minmax(200px,1fr))}.snmp-tester-field{flex-direction:column;gap:.35rem;min-width:0;display:flex}.snmp-tester-field>span{color:#475569;letter-spacing:.02em;text-transform:uppercase;font-size:.78rem;font-weight:600}.snmp-tester-field input,.snmp-tester-field select,.snmp-tester-oid{color:#0f172a;background:#fff;border:1px solid #0f172a1f;border-radius:10px;padding:.55rem .65rem;font-size:.9rem;transition:border-color .15s,box-shadow .15s}.snmp-tester-field input:focus,.snmp-tester-field select:focus,.snmp-tester-oid:focus{border-color:#2563eb8c;outline:none;box-shadow:0 0 0 3px #2563eb26}.snmp-tester-field--narrow{max-width:140px}.snmp-tester-field--block{grid-column:1/-1}.snmp-tester-oid{resize:vertical;min-height:4.5rem;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;font-size:.82rem;line-height:1.45}.snmp-tester-community-row{flex-wrap:wrap;align-items:stretch;gap:.5rem;display:flex}.snmp-tester-community-row>input{flex:1;min-width:120px}.snmp-tester-chip-group{align-items:center;gap:.35rem;display:flex}.snmp-tester-chip{color:#1d4ed8;cursor:pointer;background:#2563eb0f;border:1px solid #2563eb59;border-radius:999px;padding:.35rem .55rem;font-size:.72rem;font-weight:600;transition:background .15s,transform .1s}.snmp-tester-chip:hover{background:#2563eb1f}.snmp-tester-chip:active{transform:scale(.97)}.snmp-tester-actions{flex-wrap:wrap;align-items:center;gap:.75rem;padding:.5rem 0 1rem;display:flex}.snmp-tester-submit{align-items:center;gap:.45rem;display:inline-flex}.snmp-tester-submit-icon{flex-shrink:0}.snmp-tester-spin{animation:.85s linear infinite snmp-spin}@keyframes snmp-spin{to{transform:rotate(360deg)}}.snmp-tester-meta{margin:0}.snmp-tester-banner{color:#14532d;background:#22c55e1a;border:1px solid #22c55e40;border-radius:10px;margin:0 1.25rem .75rem;padding:.65rem .85rem;font-size:.88rem}.snmp-tester-banner--error{color:#991b1b;background:#ef444414;border-color:#ef444447}.snmp-tester-result{padding:0 1.25rem 1.15rem}.snmp-tester-result-head{color:#0f172a;align-items:center;gap:.45rem;margin-bottom:.65rem;font-size:.95rem;font-weight:600;display:flex}.snmp-tester-result-icon{color:#64748b}.snmp-tester-result-trailing{flex-wrap:wrap;align-items:center;gap:.5rem;margin-left:auto;display:inline-flex}.snmp-tester-badge{color:#475569;background:#0f172a0f;border-radius:999px;padding:.2rem .55rem;font-size:.75rem;font-weight:600}.snmp-tester-csv-btn{flex-shrink:0}.snmp-tester-table-wrap{background:#fff;border:1px solid #0f172a14;border-radius:12px;max-height:min(420px,55vh)}.snmp-tester-table{font-size:.82rem}.snmp-tester-table code{word-break:break-all;font-size:.78rem}.snmp-tester-cell-val code{color:#0f172a}.snmp-tester-cell-oid code{color:#1e40af}.snmp-tester-type-pill{color:#4338ca;background:#6366f11a;border-radius:6px;padding:.15rem .45rem;font-size:.72rem;font-weight:600;display:inline-block}.snmp-tester-empty{margin:0;padding:.75rem 0 0}@media (width<=640px){.snmp-tester-field--narrow{max-width:none}}@property --tw-rotate-x{syntax:"*";inherits:false}@property --tw-rotate-y{syntax:"*";inherits:false}@property --tw-rotate-z{syntax:"*";inherits:false}@property --tw-skew-x{syntax:"*";inherits:false}@property --tw-skew-y{syntax:"*";inherits:false}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-ordinal{syntax:"*";inherits:false}@property --tw-slashed-zero{syntax:"*";inherits:false}@property --tw-numeric-figure{syntax:"*";inherits:false}@property --tw-numeric-spacing{syntax:"*";inherits:false}@property --tw-numeric-fraction{syntax:"*";inherits:false}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}
