:root{--blue-500: #2563eb;--blue-400: #4f8cff;--gray-50: #f7f8fa;--gray-100: #eef0f3;--gray-200: #e2e5ea;--gray-500: #5b6270;--gray-700: #343a44;--gray-900: #1a1d23;--white: #ffffff;--green-600: #15803d;--red-600: #b91c1c;--amber-600: #b45309;--font-sans: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;--font-mono: ui-monospace, SFMono-Regular, "SF Mono", Menlo, Consolas, monospace;--space-1: 4px;--space-2: 8px;--space-3: 12px;--space-4: 16px;--space-6: 24px;--space-8: 32px;--radius: 8px;--touch-target: 44px;--bp-narrow: 1023px;--bp-phone: 599px}:root,:root[data-theme=light]{--color-bg-base: var(--white);--color-bg-surface: var(--gray-50);--color-bg-elevated: var(--white);--color-text-primary: var(--gray-900);--color-text-muted: var(--gray-500);--color-border-default: var(--gray-200);--color-accent: var(--blue-500);--color-accent-text: var(--white);--color-focus-ring: var(--blue-500);--color-status-ok: var(--green-600);--color-status-danger: var(--red-600);--color-status-warn: var(--amber-600);--color-diff-add-bg: #e8f7ee;--color-diff-add-text: #14532d;--color-diff-del-bg: #fdeceb;--color-diff-del-text: #7f1d1d;--color-banner-bg: #eef4ff;--color-banner-warn-bg: #fdf3e3}:root[data-theme=dark]{--color-bg-base: #0f1117;--color-bg-surface: #171a21;--color-bg-elevated: #1e222b;--color-text-primary: #e6e8ec;--color-text-muted: #9aa1ad;--color-border-default: #2a2f3a;--color-accent: var(--blue-400);--color-accent-text: #0f1117;--color-focus-ring: var(--blue-400);--color-status-ok: #3fb96b;--color-status-danger: #f2665f;--color-status-warn: #e0a44a;--color-diff-add-bg: #16301f;--color-diff-add-text: #86e0a6;--color-diff-del-bg: #35191b;--color-diff-del-text: #f6a3a0;--color-banner-bg: #1a2333;--color-banner-warn-bg: #33280f}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{font-family:var(--font-sans);background:var(--color-bg-base);color:var(--color-text-primary);font-size:15px;line-height:1.5}a{color:var(--color-accent);text-decoration:none}.app{display:grid;grid-template-columns:56px 1fr;height:100%}.app-body{display:flex;flex-direction:column;min-height:0;height:100%}.workspace{display:grid;grid-template-columns:280px 1fr;flex:1 1 auto;min-height:0}.rail{background:var(--color-bg-surface);border-right:1px solid var(--color-border-default);display:flex;flex-direction:column;align-items:center;padding:var(--space-3) 0;gap:var(--space-2)}.rail button{width:40px;height:40px;border-radius:var(--radius);border:none;background:transparent;color:var(--color-text-muted);font-size:18px;cursor:pointer}.rail button[aria-current=true]{background:var(--color-accent);color:var(--color-accent-text)}.rail button:disabled{opacity:.4;cursor:not-allowed}.rail .spacer{flex:1}.rail-nav-toggle{display:none}.sidebar{background:var(--color-bg-surface);border-right:1px solid var(--color-border-default);padding:var(--space-4);overflow-y:auto}.sidebar h2{font-size:12px;text-transform:uppercase;color:var(--color-text-muted);letter-spacing:.04em}.main{display:flex;flex-direction:column;overflow:hidden}.breadcrumbs{padding:var(--space-3) var(--space-6);border-bottom:1px solid var(--color-border-default);color:var(--color-text-muted);font-size:13px}.breadcrumbs a{color:var(--color-text-muted)}.content{padding:var(--space-6);overflow-y:auto;flex:1}.tree,.tree ul{list-style:none;margin:0;padding:0}.tree ul{margin-left:var(--space-4)}.tree li{margin:2px 0}.tree a{display:inline-block;padding:2px var(--space-2);border-radius:var(--radius);color:var(--color-text-primary)}.tree a.active{background:var(--color-accent);color:var(--color-accent-text)}.tree .add{font-size:12px;color:var(--color-text-muted);background:none;border:none;cursor:pointer}.btn{border:1px solid var(--color-border-default);background:var(--color-bg-elevated);color:var(--color-text-primary);border-radius:var(--radius);padding:var(--space-2) var(--space-3);cursor:pointer;font-size:14px}.btn.primary{background:var(--color-accent);color:var(--color-accent-text);border-color:transparent}.btn:disabled{opacity:.5;cursor:not-allowed}.field{display:flex;flex-direction:column;gap:var(--space-1);margin-bottom:var(--space-3)}.field label{font-size:13px;color:var(--color-text-muted)}.field input{padding:var(--space-2);border:1px solid var(--color-border-default);border-radius:var(--radius);background:var(--color-bg-elevated);color:var(--color-text-primary)}.empty{max-width:460px;margin:10vh auto;padding:0 var(--space-4);text-align:center;color:var(--color-text-muted)}.empty h1{color:var(--color-text-primary);font-size:20px}.editor-toolbar{display:flex;gap:var(--space-1);margin-bottom:var(--space-3);flex-wrap:wrap}.editor-toolbar button{border:1px solid var(--color-border-default);background:var(--color-bg-elevated);color:var(--color-text-primary);border-radius:var(--radius);min-width:34px;height:34px;cursor:pointer}.editor-toolbar button.is-active{background:var(--color-accent);color:var(--color-accent-text)}.ProseMirror{min-height:320px;border:1px solid var(--color-border-default);border-radius:var(--radius);padding:var(--space-4);background:var(--color-bg-elevated);outline:none}.ProseMirror:focus{border-color:var(--color-accent)}.ProseMirror img{max-width:100%;border-radius:var(--radius)}.ProseMirror pre{font-family:var(--font-mono);background:var(--color-bg-surface);padding:var(--space-3);border-radius:var(--radius)}.editor-status{font-size:12px;color:var(--color-text-muted);margin-top:var(--space-2)}.link-picker{margin-bottom:var(--space-3);padding:var(--space-3);border:1px solid var(--color-border-default);border-radius:var(--radius);background:var(--color-bg-elevated);max-height:40vh;overflow-y:auto}.link-picker-head{display:flex;align-items:center;gap:var(--space-2)}.link-picker-head input{flex:1;min-width:0;padding:var(--space-2);border:1px solid var(--color-border-default);border-radius:var(--radius);background:var(--color-bg-base);color:var(--color-text-primary);font:inherit}.link-picker-list{list-style:none;margin:var(--space-2) 0 0;padding:0;display:flex;flex-direction:column}.link-picker-list .link-btn{display:block;width:100%;padding:var(--space-2);border-radius:var(--radius)}.topbar{display:flex;align-items:center;gap:var(--space-3)}.topbar input.title{font-size:22px;font-weight:600;border:none;background:transparent;color:var(--color-text-primary);width:100%;padding:0}.topbar input.title:focus{outline:none}.admin-panel{background:var(--color-bg-surface);border-bottom:1px solid var(--color-border-default);padding:var(--space-4) var(--space-6)}.admin-panel-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:var(--space-3)}.admin-panel-row{display:flex;gap:var(--space-2);flex-wrap:wrap;align-items:center}.admin-panel-row input,.admin-panel-row select{padding:var(--space-2);border:1px solid var(--color-border-default);border-radius:var(--radius);background:var(--color-bg-elevated);color:var(--color-text-primary)}.muted{color:var(--color-text-muted);font-size:13px}.mono{font-family:var(--font-mono);font-size:12px}.error-text{color:var(--color-status-danger);font-size:13px}.link-btn{background:none;border:none;padding:0;cursor:pointer;color:var(--color-accent);font:inherit;text-align:left}.link-btn:hover{text-decoration:underline}.visually-hidden{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}.table-scroll{max-width:100%;min-width:0;overflow-x:auto}.field.inline{flex-direction:row;align-items:center;gap:var(--space-2);margin-bottom:0}.field.inline label{white-space:nowrap}select,.field input,.field select,.field textarea{background:var(--color-bg-elevated);color:var(--color-text-primary);border:1px solid var(--color-border-default);border-radius:var(--radius);padding:6px var(--space-2);font:inherit}.field textarea{font-family:var(--font-mono);font-size:12px;resize:vertical}.field-hint{font-size:12px;color:var(--color-text-muted)}.field-hint.danger{color:var(--color-status-danger)}.check{display:flex;align-items:flex-start;gap:var(--space-2);font-size:14px}.check input{margin-top:var(--space-1)}:focus-visible{outline:2px solid var(--color-focus-ring);outline-offset:2px}.diagrams{margin-top:var(--space-8);border-top:1px solid var(--color-border-default);padding-top:var(--space-4)}.diagrams-head{display:flex;align-items:center;justify-content:space-between;gap:var(--space-3)}.diagrams-head h2{font-size:14px;text-transform:uppercase;letter-spacing:.04em;color:var(--color-text-muted)}.diagram-list{list-style:none;margin:var(--space-3) 0 0;padding:0;display:flex;flex-wrap:wrap;gap:var(--space-4)}.diagram-card{border:1px solid var(--color-border-default);border-radius:var(--radius);background:var(--color-bg-elevated);padding:var(--space-3);width:260px}.diagram-preview{display:block;width:100%;background:none;border:none;cursor:pointer;padding:0;text-align:left}.diagram-svg{display:block;height:140px;overflow:hidden;border-radius:var(--radius);background:var(--color-bg-surface);display:flex;align-items:center;justify-content:center}.diagram-svg svg{max-width:100%;max-height:140px}.diagram-svg-empty{color:var(--color-text-muted);font-size:13px}.diagram-title{display:block;margin-top:var(--space-2);color:var(--color-text-primary);font-weight:600}.diagram-actions{display:flex;gap:var(--space-2);margin-top:var(--space-2)}.diagram-actions .btn{font-size:12px;padding:4px var(--space-2)}.drawio-modal{position:fixed;top:0;right:0;bottom:0;left:0;z-index:50;background:var(--color-bg-base);display:flex;flex-direction:column}.drawio-head{display:flex;align-items:center;gap:var(--space-3);padding:var(--space-3) var(--space-4);border-bottom:1px solid var(--color-border-default)}.drawio-state{margin-left:auto;color:var(--color-text-muted);font-size:13px}.drawio-frame{flex:1;width:100%;border:none}.netmap{display:flex;flex-direction:column;height:100%;min-height:0}.netmap-toolbar{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-3);padding:var(--space-3) var(--space-4);border-bottom:1px solid var(--color-border-default)}.netmap-toolbar-right{margin-left:auto;display:flex;gap:var(--space-2);align-items:center}.seg{display:flex;gap:2px}.netmap-ip-search{display:flex;align-items:center;gap:var(--space-2)}.netmap-ip-search input{background:var(--color-bg-elevated);color:var(--color-text-primary);border:1px solid var(--color-border-default);border-radius:var(--radius);padding:6px var(--space-2);font-family:var(--font-mono);width:150px}.netmap-matches{padding:var(--space-2) var(--space-4);background:var(--color-bg-surface);border-bottom:1px solid var(--color-border-default);font-size:13px}.netmap-filters{display:contents}.netmap-body{flex:1;display:flex;min-height:0}.netmap-canvas{flex:1;min-width:0}.netmap-canvas .react-flow__edge-text{display:none}.netmap-canvas.show-port-labels .react-flow__edge-text{display:block;font-size:10px}.netmap-node{border-radius:var(--radius);border:1px solid var(--color-border-default);background:var(--color-bg-elevated);padding:var(--space-2) var(--space-3);box-sizing:border-box;overflow:hidden}.netmap-node.is-selected{border-color:var(--color-accent);box-shadow:0 0 0 2px var(--color-accent)}.netmap-node.is-dimmed{opacity:.3}.netmap-node.status-staging{border-left:4px solid var(--color-status-warn)}.netmap-node.status-deprecated{border-left:4px solid var(--color-status-danger)}.netmap-node.status-prod{border-left:4px solid var(--color-status-ok)}.netmap-node-title{display:flex;align-items:center;gap:var(--space-2);font-weight:600;font-size:13px}.netmap-node-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.netmap-node-meta{display:flex;gap:var(--space-2);font-size:11px;color:var(--color-text-muted);margin-top:2px}.netmap-cloud{display:flex;align-items:center;gap:var(--space-2);font-size:12px;border:1px dashed var(--color-border-default);border-radius:999px;padding:var(--space-2) var(--space-3);background:var(--color-bg-surface);max-width:260px}.netmap-cloud-text{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.netmap-drawer{width:380px;border-left:1px solid var(--color-border-default);background:var(--color-bg-elevated);padding:var(--space-4);overflow-y:auto}.netmap-drawer-head{display:flex;justify-content:space-between;gap:var(--space-3);align-items:flex-start}.netmap-drawer h2{font-size:16px;margin:0}.netmap-drawer h3{font-size:13px;text-transform:uppercase;color:var(--color-text-muted);margin-top:var(--space-6)}.netmap-props{display:grid;grid-template-columns:auto 1fr;gap:var(--space-1) var(--space-3);margin:var(--space-3) 0;font-size:13px}.netmap-props dt{color:var(--color-text-muted)}.netmap-props dd{margin:0}.netmap-table-wrap{flex:1;overflow:auto;padding:var(--space-4)}.netmap-table,.netmap-iface-table{width:100%;border-collapse:collapse;font-size:13px}.netmap-table th,.netmap-table td,.netmap-iface-table th,.netmap-iface-table td{text-align:left;padding:6px var(--space-2);border-bottom:1px solid var(--color-border-default)}.netmap-table tbody tr.is-selected{background:var(--color-bg-surface)}.table-sort{background:none;border:none;color:inherit;font:inherit;font-weight:600;cursor:pointer;padding:0}.status-dot{display:inline-block;width:8px;height:8px;border-radius:50%;background:var(--color-text-muted)}.status-dot.status-prod{background:var(--color-status-ok)}.status-dot.status-staging{background:var(--color-status-warn)}.status-dot.status-deprecated{background:var(--color-status-danger)}.netmap-import{position:fixed;right:var(--space-6);top:var(--space-6);z-index:40;width:460px;max-height:80vh;overflow-y:auto;background:var(--color-bg-elevated);border:1px solid var(--color-border-default);border-radius:var(--radius);padding:var(--space-4);box-shadow:0 8px 32px #00000047}.netmap-import-head{display:flex;justify-content:space-between;align-items:center}.netmap-import-head h2{font-size:15px;margin:0}.netmap-import-actions{display:flex;gap:var(--space-2);flex-wrap:wrap}.import-report{margin-top:var(--space-3);font-size:13px}.overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:60;background:#00000059;display:flex;justify-content:center;align-items:flex-start;padding-top:10vh}.palette{width:min(720px,calc(100vw - var(--space-8)));max-height:70vh;display:flex;flex-direction:column;background:var(--color-bg-elevated);color:var(--color-text-primary);border:1px solid var(--color-border-default);border-radius:var(--radius);box-shadow:0 16px 48px #00000047;overflow:hidden}.palette-head{display:flex;align-items:center;gap:var(--space-3);padding:var(--space-3);border-bottom:1px solid var(--color-border-default)}.palette-input{flex:1;min-width:0;font-size:15px;padding:var(--space-2) var(--space-3);background:var(--color-bg-base);color:var(--color-text-primary);border:1px solid var(--color-border-default);border-radius:var(--radius)}.palette-head .btn{font-size:12px;padding:4px var(--space-2)}.palette-list{list-style:none;margin:0;padding:var(--space-2);overflow-y:auto;flex:1}.palette-item{display:flex;gap:var(--space-3);align-items:flex-start;padding:var(--space-2) var(--space-3);border-radius:var(--radius);cursor:pointer}.palette-item.is-active{background:var(--color-bg-surface);outline:2px solid var(--color-focus-ring);outline-offset:-2px}.palette-item-body{display:flex;flex-direction:column;gap:2px;min-width:0}.palette-item-title{font-weight:600}.palette-item-context{font-size:12px;color:var(--color-text-muted)}.palette-item-snippet{font-size:13px;color:var(--color-text-muted)}.palette-item-snippet mark{background:transparent;color:var(--color-text-primary);font-weight:700;text-decoration:underline}.badge{flex:none;font-size:11px;text-transform:uppercase;letter-spacing:.03em;padding:2px var(--space-2);border-radius:999px;border:1px solid var(--color-border-default);color:var(--color-text-muted);background:var(--color-bg-surface)}.badge.type-device{border-color:var(--color-accent);color:var(--color-accent)}.palette-foot{padding:var(--space-2) var(--space-4);font-size:12px;color:var(--color-text-muted);border-top:1px solid var(--color-border-default);background:var(--color-bg-surface)}.banner{display:flex;align-items:center;gap:var(--space-2);flex-wrap:wrap;background:var(--color-banner-bg);border:1px solid var(--color-border-default);border-radius:var(--radius);padding:var(--space-2) var(--space-3);margin-bottom:var(--space-3);font-size:13px}.banner-warn{background:var(--color-banner-warn-bg)}.banner .btn{font-size:12px;padding:4px var(--space-2)}.toolbar-spacer{flex:1}.editor-footer{display:flex;align-items:center;justify-content:space-between;gap:var(--space-3);margin-top:var(--space-2)}.history-panel{margin-top:var(--space-4);border:1px solid var(--color-border-default);border-radius:var(--radius);background:var(--color-bg-elevated);padding:var(--space-3)}.history-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:var(--space-3)}.history-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:var(--space-2)}.history-item{border:1px solid var(--color-border-default);border-radius:var(--radius);padding:var(--space-2) var(--space-3)}.history-item-main{display:flex;align-items:center;gap:var(--space-2)}.history-item-meta{font-size:12px;color:var(--color-text-muted)}.history-item-comment{font-size:13px;margin-top:2px}.history-item-actions{display:flex;gap:var(--space-2);margin-top:var(--space-2)}.history-item-actions .btn{font-size:12px;padding:4px var(--space-2)}.history-diff{margin-top:var(--space-4)}.history-diff h3{font-size:14px;margin:0 0 var(--space-2)}.diff-body{margin:0;padding:var(--space-2);border:1px solid var(--color-border-default);border-radius:var(--radius);background:var(--color-bg-surface);font-size:13px;line-height:1.5;white-space:pre-wrap;word-break:break-word;max-height:320px;overflow:auto}.diff-add{display:block;background:var(--color-diff-add-bg);color:var(--color-diff-add-text)}.diff-del{display:block;background:var(--color-diff-del-bg);color:var(--color-diff-del-text)}.diff-add:before{content:"+ ";font-weight:700}.diff-del:before{content:"− ";font-weight:700}.diff-eq:before{content:"  "}.panel{margin-top:var(--space-6);padding-top:var(--space-4);border-top:1px solid var(--color-border-default)}.panel-title{font-size:15px;margin:0 0 var(--space-3);display:flex;align-items:center;gap:var(--space-2)}.sidebar-link{display:block;margin-top:var(--space-2);font-size:13px}.danger{color:var(--color-status-danger)}.row-actions{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-2);margin-top:var(--space-3)}.backlinks-list,.health-list,.graph-legend{list-style:none;margin:0;padding:0}.backlinks-list li,.health-list li{padding:2px 0;font-size:14px}.stat-row{list-style:none;display:flex;flex-wrap:wrap;gap:var(--space-3);margin:0 0 var(--space-4);padding:0}.stat{min-width:96px;padding:var(--space-2) var(--space-3);border:1px solid var(--color-border-default);border-radius:var(--radius);background:var(--color-bg-surface);display:flex;flex-direction:column;gap:2px}.stat.is-warn{border-color:var(--color-status-warn);border-left-width:4px}.stat-value{font-size:20px;font-weight:700;font-variant-numeric:tabular-nums}.stat-label{font-size:12px;color:var(--color-text-muted)}.health-block{margin-bottom:var(--space-4)}.health-block h3{font-size:13px;text-transform:uppercase;color:var(--color-text-muted);margin:0 0 var(--space-2)}.graph-wrap{display:flex;flex-wrap:wrap;gap:var(--space-6);align-items:flex-start}.space-graph{width:min(520px,100%);height:auto}.graph-edge{stroke:var(--color-border-default);stroke-width:1}.graph-node{fill:var(--color-accent)}.graph-node.is-orphan{fill:var(--color-bg-surface);stroke:var(--color-status-warn);stroke-width:2}.graph-legend{flex:1;min-width:220px;font-size:13px;max-height:520px;overflow-y:auto}.graph-legend li{padding:2px 0}.audit-panel{margin-top:var(--space-4);padding-top:var(--space-4);border-top:1px solid var(--color-border-default)}.audit-head{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-4)}.audit-head .panel-title{margin-bottom:0}.audit-filters{display:flex;flex-wrap:wrap;gap:var(--space-4);margin-left:auto}.audit-table-wrap{max-height:320px;overflow:auto;margin-top:var(--space-3)}.audit-table{width:100%;border-collapse:collapse;font-size:13px}.audit-table th,.audit-table td{text-align:left;padding:4px var(--space-2);border-bottom:1px solid var(--color-border-default);vertical-align:top}.audit-table thead th{position:sticky;top:0;background:var(--color-bg-surface);z-index:1}.audit-table td:first-child{white-space:nowrap;font-variant-numeric:tabular-nums}.audit-action{font-family:var(--font-mono);font-size:12px;white-space:nowrap}.auth-panel{background:var(--color-bg-surface);border-bottom:1px solid var(--color-border-default);padding:var(--space-4) var(--space-6);max-height:72vh;overflow-y:auto}.auth-head{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-2);margin-bottom:var(--space-3)}.auth-head h2{font-size:16px;margin:0}.auth-head .spacer{flex:1}.provider-table,.mapping-table{width:100%;border-collapse:collapse;font-size:13px;margin-top:var(--space-3)}.provider-table th,.provider-table td,.mapping-table th,.mapping-table td{text-align:left;padding:var(--space-2);border-bottom:1px solid var(--color-border-default);vertical-align:top}.provider-table .btn,.mapping-table .btn{font-size:12px;padding:4px var(--space-2)}.provider-table td.actions{white-space:nowrap}.provider-form{margin-top:var(--space-4);padding:var(--space-4);border:1px solid var(--color-border-default);border-radius:var(--radius);background:var(--color-bg-elevated)}.provider-form h3{font-size:15px;margin:0 0 var(--space-2)}.form-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:var(--space-3) var(--space-4)}.form-grid .field{margin-bottom:0}.field-wide{grid-column:1 / -1}.form-actions{display:flex;flex-wrap:wrap;gap:var(--space-2);align-items:center;margin-top:var(--space-4)}.wizard-steps{display:flex;flex-wrap:wrap;gap:var(--space-2);list-style:none;margin:0 0 var(--space-4);padding:0;font-size:13px;color:var(--color-text-muted)}.wizard-steps li{display:flex;align-items:center;gap:var(--space-2)}.wizard-steps li+li:before{content:"›";color:var(--color-border-default)}.wizard-steps li[aria-current=step]{color:var(--color-text-primary);font-weight:600}.preset-list{display:flex;flex-wrap:wrap;gap:var(--space-3);list-style:none;margin:0 0 var(--space-4);padding:0}.preset{width:260px;text-align:left;padding:var(--space-3);cursor:pointer;border:1px solid var(--color-border-default);border-radius:var(--radius);background:var(--color-bg-elevated);color:var(--color-text-primary);font:inherit}.preset[aria-pressed=true]{border-color:var(--color-accent);box-shadow:inset 0 0 0 1px var(--color-accent)}.preset strong{display:block;margin-bottom:var(--space-1)}.preset span{font-size:12px;color:var(--color-text-muted)}.test-result{margin-top:var(--space-4)}.test-steps{list-style:none;margin:var(--space-2) 0 0;padding:0;font-size:13px}.test-steps li{display:grid;grid-template-columns:16px 1fr;gap:var(--space-2);padding:var(--space-1) 0}.test-step-mark{font-weight:700}.test-steps li.is-ok .test-step-mark{color:var(--color-status-ok)}.test-steps li.is-fail .test-step-mark{color:var(--color-status-danger)}.test-steps li.is-skipped{color:var(--color-text-muted)}.test-step-error{grid-column:2;color:var(--color-status-danger)}.mapping-block{margin-top:var(--space-6);padding-top:var(--space-4);border-top:1px solid var(--color-border-default)}.mapping-form{display:flex;flex-wrap:wrap;gap:var(--space-4);align-items:flex-start;margin-top:var(--space-3)}.mapping-form .field{margin-bottom:0;max-width:320px}.mapping-form .btn{margin-top:var(--space-6)}.user-roles{margin-top:var(--space-2);min-width:220px}.user-roles .field{margin-bottom:var(--space-2)}.role-grants{list-style:none;margin:0 0 var(--space-2);padding:0;font-size:13px}.role-grants li{padding:2px 0}.login-sso{margin-top:var(--space-6);display:flex;flex-direction:column;gap:var(--space-2)}.login-sep{display:flex;align-items:center;gap:var(--space-3);color:var(--color-text-muted);font-size:13px;margin:0}.login-sep:before,.login-sep:after{content:"";flex:1;height:1px;background:var(--color-border-default)}.login-sso-btn{display:block;text-align:center}.login-sso-btn:hover{text-decoration:none}.crash{max-width:620px;margin:10vh auto;padding:0 var(--space-6)}.crash h1{font-size:20px;margin-bottom:var(--space-3)}.crash pre{font-family:var(--font-mono);font-size:12px;white-space:pre-wrap;overflow-x:auto;background:var(--color-bg-surface);border:1px solid var(--color-border-default);border-radius:var(--radius);padding:var(--space-3)}.crash-actions{display:flex;flex-wrap:wrap;gap:var(--space-2);margin-top:var(--space-4)}@media (max-width: 1023px){.app{grid-template-columns:minmax(0,1fr);grid-template-rows:auto minmax(0,1fr)}.rail{flex-direction:row;align-items:center;border-right:none;border-bottom:1px solid var(--color-border-default);padding:0 var(--space-1);gap:0;overflow-x:auto}.rail button{width:var(--touch-target);height:var(--touch-target);flex:none}.rail-nav-toggle{display:block}.app-body{min-width:0}.workspace{grid-template-columns:minmax(0,1fr)}.sidebar.is-drawer{position:fixed;top:0;bottom:0;left:0;z-index:55;width:min(320px,85vw);box-shadow:0 0 32px #00000052}.sidebar-drawer-head{display:flex;justify-content:flex-end;margin-bottom:var(--space-2)}.nav-scrim{position:fixed;top:0;right:0;bottom:0;left:0;z-index:54;background:#00000059}.main{min-width:0}input,select,textarea,.field input,.field select,.field textarea,.palette-input,.netmap-ip-search input,.link-picker-head input{font-size:16px;min-height:var(--touch-target)}.check input{width:20px;height:20px;min-height:0}.btn,.link-btn,.table-sort{min-height:var(--touch-target)}.link-btn,.table-sort{display:inline-flex;align-items:center}.netmap-table .link-btn,.netmap-table .table-sort,.netmap-iface-table .link-btn,.provider-table .link-btn,.mapping-table .link-btn{display:flex;width:100%}.tree a,.sidebar-link{display:flex;align-items:center;min-height:var(--touch-target)}.tree .add{min-width:var(--touch-target);min-height:var(--touch-target);font-size:15px}.tree li{margin:0}.content{padding:var(--space-4)}.breadcrumbs{padding:var(--space-2) var(--space-4)}.empty{margin:var(--space-6) auto}.editor-toolbar{position:sticky;top:0;z-index:2;background:var(--color-bg-base);margin:0 calc(-1 * var(--space-4)) var(--space-3);padding:var(--space-2) var(--space-4)}.editor-toolbar button{min-width:var(--touch-target);height:var(--touch-target)}.netmap,.netmap-toolbar{min-width:0}.netmap-toolbar{flex-direction:column;flex-wrap:nowrap;align-items:stretch;gap:var(--space-2);padding:var(--space-2) var(--space-3)}.netmap-filters{display:flex;flex-wrap:nowrap;align-items:center;min-width:0;gap:var(--space-3);overflow-x:auto;padding-bottom:var(--space-1)}.netmap-filters>*{flex:none}.netmap-toolbar-right,.netmap-body,.netmap-table-wrap{min-width:0}.netmap-toolbar-right{order:-1;margin-left:0;flex-wrap:wrap}.netmap-body{flex-direction:column}.netmap-drawer{position:fixed;left:0;right:0;bottom:0;z-index:40;width:auto;max-height:70vh;border-left:none;border-top:1px solid var(--color-border-default);box-shadow:0 -8px 32px #00000052}.netmap-table-wrap{padding:var(--space-2)}.netmap-table th,.netmap-table td{padding:var(--space-2);white-space:nowrap}.netmap-import{top:0;right:0;bottom:0;left:0;width:auto;max-height:none;border-radius:0;z-index:50}.overlay{padding-top:0}.palette{width:100%;height:100%;max-height:none;border-radius:0;border:none}.palette-head{flex-wrap:wrap}.palette-input{flex:1 1 100%}.palette-head .seg{flex:1 1 auto}.palette-head .seg .btn{flex:1 1 0;font-size:13px}.palette-item{min-height:var(--touch-target);align-items:center}.admin-panel,.auth-panel{position:fixed;top:0;right:0;bottom:0;left:0;z-index:45;max-height:none;overflow-y:auto;padding:var(--space-4);border-bottom:none;background:var(--color-bg-base)}.admin-panel-head,.auth-head{position:sticky;top:calc(-1 * var(--space-4));z-index:1;background:var(--color-bg-base);padding:var(--space-2) 0;margin-bottom:var(--space-2)}.admin-panel-row{gap:var(--space-2)}.auth-head .spacer{display:none}.audit-filters{margin-left:0;width:100%}.audit-table-wrap{max-height:none}.mapping-form .btn{margin-top:0}.mapping-form .field{max-width:none}.diagram-card,.preset{width:100%}}@media (max-width: 599px){.editor-footer{flex-direction:column;align-items:stretch;gap:var(--space-2)}.diagrams-head,.history-head,.admin-panel-head,.netmap-import-head{flex-wrap:wrap;gap:var(--space-2)}.netmap-toolbar-right>.btn{flex:1 1 auto}.netmap-toolbar-right .seg{flex:1 1 100%}.netmap-toolbar-right .seg .btn{flex:1 1 0}.admin-panel-row>input,.admin-panel-row>select,.admin-panel-row>.btn{flex:1 1 100%}.form-actions>.btn{flex:1 1 auto}.graph-wrap{gap:var(--space-4)}}
