:root{--bg0:#eceff3;--bg1:#f3f5f7;--bg2:#fff;--surface:#fff;--panel:#fff;--line:#c5ccd4;--line-strong:#8a95a3;--text:#1a1f26;--muted:#596574;--accent:#1f4e79;--accent-ink:#163a5c;--accent-soft:#e8eef4;--accent-2:#9a3412;--accent-2-soft:#f5ebe4;--danger:#a11b1b;--danger-soft:#f8e8e8;--ok:#1f6b3a;--header:#1f2a37;--header-text:#f4f6f8;--shadow:none;--radius:0;--font:"IBM Plex Sans", "Segoe UI", sans-serif;--mono:"IBM Plex Mono", ui-monospace, monospace;--ink:var(--text);--border:var(--line);--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}*{box-sizing:border-box}html,body,#root{min-height:100%;font-family:var(--font);background:var(--bg1);color:var(--text);margin:0}button,input,textarea,select{font:inherit}.app{grid-template-rows:auto 1fr;min-height:100vh;display:grid}.topbar{border-bottom:1px solid var(--header);z-index:40;background:#fff;justify-content:space-between;align-items:center;gap:1rem;padding:.55rem .85rem;display:flex;position:sticky;top:0}.topbar-left{align-items:center;gap:.75rem;min-width:0;display:flex}.nav-toggle{border:1px solid var(--header);background:var(--surface);width:2.1rem;height:2.1rem;color:var(--header);cursor:pointer;border-radius:0;flex:none;place-items:center;padding:0;display:inline-grid}.nav-toggle:hover{background:var(--accent-soft);border-color:var(--accent);color:var(--accent)}.nav-toggle svg{width:1.15rem;height:1.15rem;display:block}.brand{flex-direction:column;gap:.15rem;min-width:0;display:flex}.brand strong{letter-spacing:0;color:var(--header);font-size:1rem;font-weight:700}.brand span{color:var(--muted);font-size:.78rem}.layout{grid-template-columns:260px 1fr;min-height:0;transition:grid-template-columns .2s;display:grid;position:relative}.app.nav-closed .layout{grid-template-columns:0 1fr}.nav-backdrop{display:none}.sidebar{border-right:1px solid var(--line);background:#f7f8fa;min-width:0;padding:.65rem .5rem;transition:transform .2s,opacity .2s;overflow:auto}.app.nav-closed .sidebar{opacity:0;pointer-events:none;border-right:none;padding:0;overflow:hidden}.sidebar-head{justify-content:space-between;align-items:center;gap:.5rem;margin-bottom:.75rem;padding:0 .15rem 0 .5rem;display:flex}.sidebar-head h2{margin:0;padding:0}.sidebar-close{border:1px solid var(--line-strong);background:var(--surface);color:var(--muted);cursor:pointer;border-radius:0;width:1.85rem;height:1.85rem;line-height:1;display:none}.sidebar-close:hover{color:var(--text);border-color:var(--accent)}.sidebar h2{text-transform:uppercase;letter-spacing:.1em;color:var(--header);margin:0 0 .75rem;padding:0 .5rem;font-size:.72rem;font-weight:700}.side-hint{color:var(--muted);margin:-.35rem 0 .75rem;padding:0 .5rem;font-size:.72rem;line-height:1.35}.other-toggle{border:1px dashed var(--line-strong);width:100%;color:var(--muted);cursor:pointer;background:0 0;border-radius:0;margin:.75rem 0 .35rem;padding:.45rem .6rem;font-size:.8rem}.other-toggle:hover{color:var(--text);border-color:var(--accent);background:var(--accent-soft)}.other-sheets{border-top:1px solid var(--line);margin-top:.35rem;padding-top:.35rem}th.status-col,td.status-col{background:#fff8eb}th.status-col{color:var(--header-text);background:#12304f}td.sit-connection{color:#1a1a1a;font-weight:700;background:#ff0!important}td.sit-python{color:#1a1a1a;font-weight:700;background:#d86dcd!important}td.sit-account{color:#1a1a1a;font-weight:700;background:#b39ddb!important}td.sit-winrm{color:#1a1a1a;font-weight:700;background:#ffe082!important}td.sit-other{color:#1a1a1a;font-weight:700;background:#fde68a!important}td.host-ok{color:#102018;font-weight:700;background:#8ed973!important}td.host-issue{color:#1a120c;font-weight:700;background:#e97132!important}td.cell-obsolete{color:#222!important;background:#bfbfbf!important}td.port-timeout{color:#1a120c;font-weight:700;background:#e97132!important}td.port-opened{color:#14532d;font-weight:600;background:#bbf7d0!important}.field-status label{color:var(--accent-2);font-weight:600}.modal-hint{color:var(--muted);margin:-.35rem 0 .85rem;font-size:.82rem}.sheet-btn{text-align:left;width:100%;color:var(--text);cursor:pointer;background:0 0;border:1px solid #0000;border-radius:0;flex-direction:column;gap:.1rem;margin-bottom:0;padding:.45rem .55rem;transition:background .1s,border-color .1s;display:flex}.sheet-btn:hover{background:#e9edf2;border-color:#0000}.sheet-btn.active{border-color:var(--line);border-left:3px solid var(--accent);box-shadow:none;background:#fff}.sheet-btn .name{color:var(--header);font-size:.86rem;font-weight:600}.sheet-btn.active .name{color:var(--accent-ink)}.sheet-btn .meta{color:var(--muted);font-size:.72rem;font-family:var(--mono)}.main{flex-direction:column;gap:.45rem;min-width:0;padding:.55rem .75rem .85rem;display:flex}.toolbar{border-bottom:1px solid var(--line);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.4rem;padding-bottom:.4rem;display:flex}.toolbar .left,.toolbar .right{flex-wrap:wrap;align-items:center;gap:.35rem;display:flex}.toolbar h1{color:var(--header);letter-spacing:0;margin:0;font-size:1.02rem;font-weight:700}.search{border:1px solid var(--line-strong);min-width:200px;max-width:320px;color:var(--text);background:#fff;border-radius:0;flex:1;padding:.38rem .5rem;font-size:.82rem}.search:focus{border-color:var(--accent);box-shadow:none;outline:none}.btn{border:1px solid var(--line-strong);color:var(--text);cursor:pointer;background:#fff;border-radius:0;padding:.35rem .65rem;font-size:.8rem;font-weight:600;transition:background .1s,border-color .1s}.btn:hover{border-color:var(--accent);background:var(--accent-soft)}.btn.primary{background:var(--accent);border-color:var(--accent-ink);color:#fff}.btn.primary:hover{background:var(--accent-ink);color:#fff}.btn.danger{border-color:var(--danger);color:var(--danger);background:var(--danger-soft)}.btn:disabled{opacity:.5;cursor:not-allowed}.stats{flex-wrap:wrap;gap:.35rem;display:flex}.chip{border:1px solid var(--line);color:var(--muted);font-size:.72rem;font-family:var(--mono);background:#fff;border-radius:0;padding:.2rem .45rem}.chip b{color:var(--header);font-weight:700}.table-wrap{border:1px solid var(--header);box-shadow:none;background:#fff;border-radius:0;max-height:calc(100vh - 175px);transition:opacity .12s;overflow:auto}.virtual-table{table-layout:fixed}.virtual-pad td{background:0 0!important}.table-wrap.is-refreshing{opacity:.72;pointer-events:none}.table-wrap.is-refreshing thead{pointer-events:none}table{border-collapse:collapse;border:1px solid var(--line);width:100%;font-size:.78rem}th,td{text-align:left;white-space:nowrap;text-overflow:ellipsis;vertical-align:middle;border:1px solid #d0d5db;padding:.28rem .4rem;overflow:hidden}th{background:var(--header);z-index:2;color:var(--header-text);white-space:normal;letter-spacing:.01em;min-width:0;font-size:.72rem;font-weight:600;position:sticky;top:0}.resizable-table{table-layout:fixed;width:max-content;min-width:100%}.th-inner{padding-right:8px;position:relative}.col-resizer{cursor:col-resize;-webkit-user-select:none;user-select:none;z-index:3;width:8px;height:100%;position:absolute;top:0;right:-4px}.col-resizer:after{content:"";background:0 0;width:2px;position:absolute;top:10%;bottom:10%;left:3px}th:hover .col-resizer:after,.col-resizer:hover:after{background:#ffffff8c}body.col-resizing{cursor:col-resize!important;-webkit-user-select:none!important;user-select:none!important}body.col-resizing iframe,body.col-resizing *{cursor:col-resize!important}.th-label{white-space:nowrap;text-overflow:ellipsis;max-width:100%;font-family:var(--mono);text-transform:none;margin-bottom:.25rem;font-size:.7rem;display:block;overflow:hidden}.col-filter{border:1px solid var(--line);width:100%;min-width:110px;max-width:220px;color:var(--text);background:#fff;border-radius:0;padding:.3rem .45rem;font-size:.75rem}.col-filter option{color:#111;background:#fff}.msac{width:100%;min-width:0;max-width:100%;position:relative}.msac-open .excel-filter-trigger{border-color:var(--accent);box-shadow:none}.excel-filter-trigger{color:#222;cursor:pointer;text-align:left;background:#fff;border:1px solid #b4d2dc73;border-radius:0;justify-content:space-between;align-items:center;gap:.35rem;width:100%;min-height:2rem;padding:.25rem .4rem .25rem .5rem;font-size:.75rem;display:flex}.msac-has-value .excel-filter-trigger{background:#e7f3ec;border-color:#217346;font-weight:600}.excel-filter-trigger-text{text-overflow:ellipsis;white-space:nowrap;flex:1;overflow:hidden}.excel-filter-trigger-caret{color:#217346;flex-shrink:0;font-size:.85rem}.excel-filter{color:#222;background:#fff;border:1px solid #8a95a3;border-radius:0;flex-direction:column;font-size:.8rem;display:flex;overflow:hidden;box-shadow:2px 2px #0000001f}.excel-filter-title{background:#fafafa;border-bottom:1px solid #eee;justify-content:space-between;align-items:center;gap:.5rem;padding:.55rem .75rem .35rem;font-weight:650;display:flex}.excel-filter-count{color:#666;font-size:.75rem;font-weight:500}.excel-checkbox{accent-color:#217346;cursor:pointer;flex-shrink:0;min-width:1.05rem;margin:0;appearance:checkbox!important;width:1.05rem!important;height:1.05rem!important}.excel-filter-search{background:#fff;border:1px solid #c6c6c6;border-radius:0;align-items:center;gap:.35rem;margin:.55rem .65rem .35rem;padding:.35rem .5rem;display:flex}.excel-filter-search-icon{color:#666;font-size:.95rem}.excel-filter-search-input{color:#222;background:0 0;border:none;outline:none;flex:1;min-width:0;font-size:.82rem}.excel-filter-list{border-top:1px solid #eee;border-bottom:1px solid #eee;flex:1;min-height:120px;max-height:240px;margin:.25rem 0;padding:0 .35rem;overflow:auto}.excel-filter-item{cursor:pointer;-webkit-user-select:none;user-select:none;border-radius:0;align-items:center;gap:.5rem;padding:.35rem .45rem;display:flex}.excel-filter-item:hover{background:#f3f3f3}.excel-filter-item span{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.excel-filter-all{border-bottom:1px solid #eee;margin-bottom:.15rem;padding-bottom:.45rem;font-weight:600}.excel-filter-empty{color:#777;padding:.75rem}.excel-filter-actions{background:#fafafa;justify-content:flex-end;gap:.5rem;padding:.55rem .65rem .65rem;display:flex}.excel-filter-clear{color:#333;cursor:pointer;background:#fff;border:1px solid #c6c6c6;border-radius:0;padding:.4rem .7rem}.excel-filter-apply{color:#fff;cursor:pointer;background:#217346;border:none;border-radius:0;padding:.4rem .9rem;font-weight:650}.excel-filter-apply:hover{background:#1a5c38}tr:hover td{background:#f0f3f7}.row-clickable{cursor:pointer}.row-clickable:hover td{background:#e8eef5}.row-has-hist.row-open td{border-bottom-color:#d0d5db}.idx-cell{white-space:nowrap;font-variant-numeric:tabular-nums;font-family:var(--mono);background:#f7f8fa;font-size:.72rem}.idx-num{color:var(--muted);font-weight:600}.hist-caret{color:var(--accent);margin-left:.3rem;font-size:.7rem;font-weight:700}.hist-caret.open{color:var(--accent-2)}.row-has-hist td{border-top:1px solid #d0d5db}.row-hist-item td{background:#f5f6f8;border:1px solid #d0d5db;font-size:.74rem}.row-hist-item.is-new td{box-shadow:inset 2px 0 0 var(--accent);background:#eef4fa}.row-hist-item.is-old td{box-shadow:inset 2px 0 0 var(--line-strong);color:#445;background:#fafafa}.row-hist-item .hist-meta-cell{white-space:nowrap;vertical-align:middle}.row-hist-item .hist-date{font-family:var(--mono);color:var(--accent-2);margin-top:.2rem;font-size:.68rem;font-weight:650;display:block}.row-hist-item .hist-actions-cell{color:var(--muted);white-space:normal;max-width:180px;font-size:.72rem}.row-hist-item td.cell-changed{outline:2px solid var(--accent-2);outline-offset:-2px;font-weight:700}.rev-badge{letter-spacing:.02em;white-space:nowrap;font-size:.65rem;font-weight:700;font-family:var(--mono);border-radius:0;padding:.12rem .35rem;display:inline-block}.badge-new{background:var(--accent);color:#fff;border:1px solid var(--accent-ink)}.badge-old{color:#fff;background:#4b5563;border:1px solid #111}.view-tabs{border:none;border-bottom:1px solid var(--line);background:0 0;flex-wrap:wrap;align-items:stretch;gap:0;width:100%;max-width:100%;margin:0;padding:0;display:flex}.view-tab{appearance:none;color:var(--muted);font:inherit;cursor:pointer;background:0 0;border:1px solid #0000;border-bottom:none;border-radius:0;align-items:center;gap:.35rem;margin-bottom:-1px;padding:.4rem .85rem;font-size:.8rem;font-weight:600;display:inline-flex}.view-tab:hover{color:var(--text);background:#e9edf2}.view-tab.active{color:var(--text);border-color:var(--line);box-shadow:none;background:#fff;border-bottom:1px solid #fff}.view-tab-count{min-width:1.35rem;color:var(--text);font-size:.7rem;font-weight:700;font-family:var(--mono);background:#e2e6eb;border-radius:0;justify-content:center;align-items:center;padding:0 .3rem;display:inline-flex}.view-tab.active .view-tab-count{background:var(--accent);color:#fff}.view-tab-sub{color:var(--muted);font-size:.68rem;font-weight:500;font-family:var(--mono)}.view-tab.active .view-tab-sub{color:var(--accent)}.update-host-count{color:var(--accent-ink);font-size:1.05rem}.update-batch-row.open{background:#f8fafc}.update-hosts-row>td{border-bottom:1px solid var(--border);background:#f8fafc;padding:0!important}.update-hosts-panel{padding:.65rem .85rem .85rem}.update-hosts-meta{color:var(--muted);margin-bottom:.45rem;font-size:.78rem;font-weight:700}.update-hosts-table{border-collapse:collapse;width:100%;font-size:.82rem}.update-hosts-table th,.update-hosts-table td{text-align:left;border-bottom:1px solid #e2e8f0;padding:.35rem .5rem}.update-hosts-table th{color:var(--muted);text-transform:uppercase;letter-spacing:.03em;font-size:.72rem;font-weight:700}.hist-chip{text-transform:uppercase;letter-spacing:.04em;border:1px solid var(--line-strong);color:var(--text);cursor:pointer;font-size:.62rem;font-weight:700;font-family:var(--mono);background:#f0f2f5;border-radius:0;align-self:center;padding:.15rem .35rem}.hist-chip.open{background:var(--accent);border-color:var(--accent-ink);color:#fff}.actions{flex-wrap:nowrap;align-items:center;gap:.25rem;display:flex}.actions .btn{padding:.2rem .4rem;font-size:.72rem;font-weight:600}th.col-sticky-right,td.col-sticky-right{z-index:4;background:#fff;position:sticky;right:0;box-shadow:-4px 0 6px -2px #1a1f262e}th.col-sticky-right{z-index:6;background:var(--header);color:var(--header-text)}tr:hover>td.col-sticky-right{background:#f0f3f7}.row-clickable:hover>td.col-sticky-right{background:#e8eef5}.row-hist-item td.col-sticky-right{background:#f5f6f8}.row-hist-item.is-new td.col-sticky-right{background:#eef4fa}.row-hist-item.is-old td.col-sticky-right{background:#fafafa}.update-batch-row.open>td.col-sticky-right{background:#f8fafc}.row-count-bar{color:var(--muted);font-size:.78rem;font-weight:500;font-family:var(--mono);border-top:1px solid var(--line);padding:.25rem 0}.row-count-bar b{color:var(--header)}.modal{background:var(--surface);border:1px solid var(--header);width:min(720px,100%);max-height:min(85vh,900px);box-shadow:none;color:var(--text);border-radius:0;padding:.85rem 1rem 1rem;animation:none;overflow:auto}.modal-backdrop{z-index:50;background:#1a1f2666;place-items:center;padding:1rem;display:grid;position:fixed;inset:0}.modal h3{color:var(--header);margin:0 0 .65rem;font-size:1rem;font-weight:700}.form-grid{grid-template-columns:1fr;gap:.5rem;display:grid}.field label{color:var(--muted);margin-bottom:.2rem;font-size:.74rem;font-weight:600;display:block}.field input,.field textarea{border:1px solid var(--line-strong);width:100%;color:var(--text);background:#fff;border-radius:0;padding:.4rem .5rem;font-size:.84rem}.field input:focus,.field textarea:focus{border-color:var(--accent);box-shadow:none;outline:none}.modal-actions{justify-content:flex-end;gap:.4rem;margin-top:.85rem;display:flex}.empty,.error,.loading{color:var(--muted);text-align:center;padding:1.5rem .75rem;font-size:.85rem}.error{color:var(--danger);font-weight:600}.import-ok{border:1px solid var(--accent);background:var(--accent-soft);color:var(--accent-ink);border-radius:0;padding:.45rem .65rem;font-size:.82rem;font-weight:600}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes rise{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}@media (width<=900px){.layout,.app.nav-closed .layout,.app.nav-open .layout{grid-template-columns:1fr}.nav-backdrop{z-index:45;cursor:pointer;background:#0a162866;border:none;margin:0;padding:0;animation:.18s fadeIn;display:block;position:fixed;inset:0}.sidebar{z-index:50;border-right:2px solid var(--header);background:var(--surface);width:min(280px,86vw);box-shadow:var(--shadow);opacity:1;pointer-events:auto;border-bottom:none;padding:1rem .75rem;position:fixed;top:0;bottom:0;left:0;overflow:auto;transform:translate(-105%)}.app.nav-open .sidebar{transform:translate(0)}.app.nav-closed .sidebar{opacity:1;padding:1rem .75rem;transform:translate(-105%)}.sidebar-close{place-items:center;display:inline-grid}.brand span{display:none}.table-wrap{max-height:calc(100vh - 280px)}}
