:root{font-family:Inter,Microsoft YaHei,PingFang SC,system-ui,-apple-system,sans-serif;color:#102a43;background:#f3f8fc;font-synthesis:none;--ink: #102a43;--muted: #627d98;--line: #d6e4f0;--panel: #ffffff;--surface: #f3f8fc;--nav: #f8fbff;--accent: #1d4ed8;--accent-hover: #1e40af;--blue: #2563eb;--cyan: #0891b2}*{box-sizing:border-box}html,body,#app{min-height:100%;margin:0}body{min-width:320px}button,input,textarea{font:inherit;letter-spacing:0}button{letter-spacing:0}button svg,.el-button svg{flex:0 0 auto}.el-button{gap:7px}.el-button--primary{--el-button-bg-color: var(--accent);--el-button-border-color: var(--accent);--el-button-hover-bg-color: var(--accent-hover);--el-button-hover-border-color: var(--accent-hover)}.el-dialog{border-radius:8px}.el-tabs__item.is-active,.el-tabs__item:hover{color:var(--accent)}.el-tabs__active-bar{background-color:var(--accent)}.el-table{--el-table-header-bg-color: #f4f8fc;--el-table-border-color: #e0ebf4}.el-table th.el-table__cell{color:#475569;font-weight:600}.el-textarea__inner,.el-input__wrapper,.el-select__wrapper{border-radius:5px}.app-shell{display:flex;min-height:100vh;background:#f3f8fc}.app-sidebar{position:fixed;inset:0 auto 0 0;z-index:30;display:flex;flex-direction:column;width:236px;padding:18px 14px;color:var(--ink);background:var(--nav);border-right:1px solid #d5e4f0;box-shadow:8px 0 28px #1e40af0a}.brand-block{display:flex;align-items:center;min-height:54px;gap:11px;padding:4px 6px 18px;border-bottom:1px solid #dbe8f2}.brand-mark{display:grid;place-items:center;width:38px;height:38px;color:#fff;background:var(--accent);border-radius:6px;box-shadow:0 5px 14px #1d4ed838}.brand-block strong{display:block;font-size:17px}.brand-block span{display:block;margin-top:3px;color:#6b86a0;font-size:11px}.brand-block .mobile-only{margin-left:auto}.sidebar-context{padding:19px 12px 3px}.sidebar-context span{display:block;color:#8aa1b7;font-size:10px}.sidebar-context strong{display:block;margin-top:5px;color:#1746b3;font-size:15px}.side-nav{flex:1;padding:18px 0}.side-nav button{display:flex;align-items:center;width:100%;min-height:42px;gap:11px;padding:0 12px;margin-bottom:5px;color:#4f6b86;background:transparent;border:0;border-radius:5px;cursor:pointer;text-align:left}.side-nav button:hover{color:var(--accent);background:#edf5ff}.side-nav button.active{color:#1746b3;background:#e5f0ff;box-shadow:inset 3px 0 var(--accent)}.nav-label{padding:19px 12px 8px;color:#8aa1b7;font-size:10px;text-transform:uppercase}.sidebar-user{display:flex;align-items:center;gap:10px;padding:14px 5px 2px;border-top:1px solid #dbe8f2}.user-avatar{display:grid;place-items:center;width:34px;height:34px;border-radius:50%;color:#1746b3;background:#dbeafe;font-size:13px;font-weight:700}.user-meta{min-width:0;flex:1}.user-meta strong,.user-meta span{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.user-meta strong{font-size:13px}.user-meta span{margin-top:2px;color:#7890a7;font-size:11px}.icon-button{display:inline-grid;place-items:center;width:34px;height:34px;padding:0;color:inherit;background:transparent;border:0;border-radius:5px;cursor:pointer}.icon-button:hover{background:#94a3b824}.app-main{width:calc(100% - 236px);min-height:100vh;margin-left:236px}.app-topbar{position:sticky;top:0;z-index:20;display:flex;align-items:center;height:64px;gap:10px;padding:0 34px;background:#fffffff7;border-bottom:1px solid var(--line)}.primary-nav{display:flex;align-items:center;align-self:stretch;min-width:0;gap:3px;overflow-x:auto;scrollbar-width:none}.primary-nav::-webkit-scrollbar{display:none}.primary-nav-item{display:inline-flex;align-items:center;height:38px;gap:7px;padding:0 15px;color:#52708c;background:transparent;border:0;border-radius:20px;cursor:pointer;font-size:13px;white-space:nowrap}.primary-nav-item:hover{color:var(--accent);background:#eef6ff}.primary-nav-item.active{color:#fff;background:var(--accent);box-shadow:0 5px 14px #1d4ed833}.company-logo{width:154px;height:40px;margin-left:8px;object-fit:contain}.runtime-status{display:inline-flex;align-items:center;gap:7px;min-height:28px;padding:0 9px;margin-left:auto;color:#31506d;background:#eff6ff;border:1px solid #cfe2f6;border-radius:5px;font-size:11px}.runtime-status strong{color:var(--accent);font-size:12px}.runtime-status.production{background:#ecfeff;border-color:#bae6fd}.runtime-status.production strong{color:#087f8c}.topbar-release-button{flex:0 0 auto}.mobile-backdrop{display:none}.page-shell{width:100%;max-width:none;min-height:calc(100vh - 64px);padding:30px 34px 56px;margin:0 auto}.page-header{display:flex;align-items:flex-end;justify-content:space-between;gap:24px;padding-bottom:24px;border-bottom:1px solid var(--line)}.page-header h1{margin:4px 0 0;color:var(--ink);font-size:28px;line-height:1.25;letter-spacing:0}.eyebrow{color:var(--accent);font-size:11px;font-weight:700}.header-actions{display:flex;gap:9px}.page-toolbar{display:flex;width:min(500px,100%);gap:9px;padding:20px 0}.project-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px;min-height:240px}.project-card{display:flex;flex-direction:column;min-width:0;min-height:190px;padding:19px;color:inherit;background:var(--panel);border:1px solid var(--line);border-radius:7px;cursor:pointer;text-align:left;transition:border-color .15s,box-shadow .15s,transform .15s}.project-card:hover{border-color:#8fb7e8;box-shadow:0 8px 22px #1d4ed814;transform:translateY(-2px)}.project-card-top{display:flex;align-items:center;justify-content:space-between}.project-icon{display:grid;place-items:center;width:37px;height:37px;color:#1d4ed8;background:#eff6ff;border-radius:6px}.project-card h2{margin:18px 0 7px;overflow-wrap:anywhere;font-size:17px}.project-card p{flex:1;display:-webkit-box;overflow:hidden;margin:0;color:var(--muted);font-size:13px;line-height:1.65;-webkit-line-clamp:2;-webkit-box-orient:vertical}.project-card-footer{display:flex;justify-content:space-between;gap:10px;padding-top:14px;margin-top:14px;color:#7b8491;border-top:1px solid #edf0f2;font-size:11px}.project-card-footer span:last-child{color:var(--accent);font-weight:600}.project-heading{align-items:center}.project-heading h1{margin-top:13px}.project-meta{display:flex;align-items:center;gap:10px;margin-top:9px;color:var(--muted);font-size:12px}.ledger-tabs{margin-top:16px}.ledger-tabs>.el-tabs__header{margin-bottom:0}.detail-section{padding:24px 0;border-bottom:1px solid var(--line)}.section-heading{display:flex;align-items:center;justify-content:space-between;gap:16px;min-height:34px;margin-bottom:16px}.section-heading h2{margin:0;font-size:16px}.section-caption{color:var(--muted);font-size:12px}.definition-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));margin:0;background:#fff;border:1px solid var(--line);border-radius:7px;overflow:hidden}.definition-grid>div{padding:16px 18px;border-right:1px solid var(--line);border-bottom:1px solid var(--line)}.definition-grid>div:nth-child(2n){border-right:0}.definition-grid>div.wide{grid-column:1 / -1;border-right:0;border-bottom:0}.definition-grid dt{margin-bottom:7px;color:var(--muted);font-size:11px}.definition-grid dd{margin:0;font-size:14px;line-height:1.6;overflow-wrap:anywhere}.script-generator{padding:22px;margin-top:20px;background:#eef6ff;border:1px solid #c9ddf3;border-radius:7px}.script-controls{display:grid;grid-template-columns:minmax(180px,.8fr) minmax(190px,1fr) minmax(260px,1.5fr);gap:10px}.form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:0 16px}.code-editor textarea{color:#dbeafe;background:#0b1f3a;font-family:Cascadia Code,Consolas,monospace;font-size:13px;line-height:1.6}.metric-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;padding:22px 0 4px}.metric-card{display:grid;grid-template-columns:auto 1fr;grid-template-rows:auto auto;gap:4px 12px;padding:17px;background:#fff;border:1px solid var(--line);border-radius:7px}.metric-card svg{grid-row:1 / 3;align-self:center;color:var(--accent)}.metric-card span{color:var(--muted);font-size:12px}.metric-card strong{font-size:22px}.knowledge-page{display:flex;flex-direction:column}.knowledge-layout{display:grid;grid-template-columns:260px minmax(0,1fr);flex:1;min-height:620px;margin-top:20px;background:#fff;border:1px solid var(--line);border-radius:7px;overflow:hidden}.sync-summary{display:flex;align-items:center;justify-content:space-between;gap:18px;padding:13px 15px;margin-top:18px;color:#31506d;background:#f4f9ff;border:1px solid #cfe2f6;border-radius:6px;font-size:12px}.sync-summary strong,.sync-path{display:block}.sync-summary strong{color:#1746b3}.sync-path{margin-top:4px;color:#6b8299;overflow-wrap:anywhere;font-family:Cascadia Code,Consolas,monospace;font-size:11px}.sync-metrics{display:flex;align-items:center;justify-content:flex-end;flex-wrap:wrap;gap:8px 14px;color:#5b7690;text-align:right}.sync-running{display:inline-flex;align-items:center;gap:5px;color:var(--accent)}.sync-alert{margin-top:18px}.sync-change-summary{padding:10px 12px;color:#31506d;background:#f4f9ff;border:1px solid #d8e7f5;border-radius:5px;font-size:12px}.sync-change-groups{display:grid;gap:12px;max-height:58vh;margin-top:12px;overflow-y:auto}.sync-change-group{border:1px solid #e0e9f2;border-radius:5px;overflow:hidden}.sync-change-group h3{padding:9px 12px;margin:0;color:#31506d;background:#f7fafc;border-bottom:1px solid #e0e9f2;font-size:13px}.sync-change-group.added h3{color:#167345;background:#f1fbf5}.sync-change-group.updated h3{color:#9a6100;background:#fff9eb}.sync-change-group.deleted h3{color:#b33a3a;background:#fff5f5}.sync-change-group ul{padding:7px 12px;margin:0;list-style:none}.sync-change-group li{padding:7px 0;color:#526c82;border-bottom:1px solid #edf2f6;font-size:12px;line-height:1.5;overflow-wrap:anywhere}.sync-change-group li:last-child{border-bottom:0}.knowledge-tree{padding:16px 10px;background:#f8fafc;border-right:1px solid var(--line)}.all-documents-button{display:block;width:100%;padding:8px 10px;margin:0 0 6px;color:#526b83;background:transparent;border:0;border-radius:4px;cursor:pointer;text-align:left}.all-documents-button:hover,.all-documents-button.active{color:#1746b3;background:#e8f2ff}.tree-title{display:flex;align-items:center;gap:8px;padding:3px 9px 14px;font-size:13px}.tree-hint{margin-left:auto;color:#94a3b8;font-size:10px;font-weight:400}.tree-node{display:flex;align-items:center;justify-content:space-between;width:100%;min-width:0;gap:4px}.tree-node-label{display:block;min-width:0;flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.tree-actions{display:none;flex:0 0 auto;gap:2px}.tree-node:hover .tree-actions{display:flex}.tree-actions button{display:grid;place-items:center;width:24px;height:24px;padding:0;color:#64748b;background:transparent;border:0;border-radius:4px;cursor:pointer}.tree-actions button:hover{color:var(--accent);background:#e8f2ff}.knowledge-documents{min-width:0;padding:18px 20px}.knowledge-type-control{display:grid;grid-template-columns:minmax(0,1fr) auto;width:100%;gap:8px}.knowledge-type-control .el-select{width:100%}.form-help{display:block;width:100%;margin-top:6px;color:var(--muted);font-size:11px}.knowledge-search{width:min(360px,48%)}.document-title-button{max-width:100%;padding:0;color:#1746b3;background:transparent;border:0;cursor:pointer;font:inherit;text-align:left;overflow-wrap:anywhere}.document-title-button:hover{color:var(--accent-hover);text-decoration:underline}.document-actions{display:inline-flex;align-items:center;gap:3px}.document-reader-meta{display:grid;grid-template-columns:minmax(0,1fr) auto auto;align-items:center;gap:12px;padding-bottom:13px;margin-bottom:13px;border-bottom:1px solid var(--line)}.document-reader-meta strong{overflow-wrap:anywhere}.document-reader-meta span{color:var(--muted);font-size:12px}.document-reader-meta a{color:var(--accent);font-size:12px;white-space:nowrap}.document-reader pre{max-height:62vh;padding:16px;margin:0;overflow:auto;color:#203b58;background:#f7fbff;border:1px solid #dbe8f2;border-radius:5px;font:13px/1.7 Cascadia Code,Consolas,monospace;white-space:pre-wrap;overflow-wrap:anywhere}.move-document-name{padding:11px 13px;margin:0 0 17px;color:#31506d;background:#f4f9ff;border:1px solid #cfe2f6;border-radius:5px;overflow-wrap:anywhere}.file-input{display:block;width:100%;padding:9px;color:#475569;background:#f8fafc;border:1px solid var(--line);border-radius:5px}.icon-grid{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:12px;padding-top:22px}.icon-card{overflow:hidden;background:#fff;border:1px solid var(--line);border-radius:7px}.icon-preview{display:grid;place-items:center;aspect-ratio:4/3;padding:20px;background:#f8fafc;border-bottom:1px solid var(--line)}.icon-preview img{max-width:100%;max-height:100%;object-fit:contain}.icon-card-meta{padding:12px 13px}.icon-card-meta strong,.icon-card-meta span{display:block;overflow-wrap:anywhere}.icon-card-meta strong{font-size:13px}.icon-card-meta span{margin-top:5px;color:var(--muted);font-size:11px}.login-page{display:grid;grid-template-columns:minmax(360px,.9fr) minmax(460px,1.1fr);min-height:100vh;background:#fff}.login-brand{display:grid;place-items:center;min-height:100vh;padding:60px;color:#fff;background-color:#0b2e63;background-image:linear-gradient(rgba(125,211,252,.08) 1px,transparent 1px),linear-gradient(90deg,rgba(125,211,252,.08) 1px,transparent 1px);background-size:34px 34px}.login-brand-inner{width:min(430px,100%)}.login-company-logo{display:block;width:min(250px,72%);height:auto;margin-bottom:48px;object-fit:contain}.brand-symbol{display:grid;place-items:center;width:58px;height:58px;color:#0b2e63;background:#fff;border-radius:8px}.login-brand h1{margin:28px 0 4px;font-size:46px;line-height:1.1;letter-spacing:0}.login-brand p{margin:0;color:#9ca9b9;font-size:18px}.brand-metrics{display:flex;flex-wrap:wrap;gap:8px;margin-top:44px}.brand-metrics span{padding:7px 10px;color:#dbeafe;border:1px solid rgba(186,230,253,.32);border-radius:4px;font-size:11px}.login-panel{position:relative;display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:100vh;padding:42px}.login-form-wrap{width:min(430px,100%)}.login-heading{margin-bottom:25px}.login-heading>span{color:var(--accent);font-size:11px;font-weight:700}.login-heading h2{margin:6px 0 0;font-size:29px;letter-spacing:0}.login-runtime{display:flex;align-items:center;justify-content:space-between;padding-bottom:12px;margin-bottom:17px;color:#58738c;border-bottom:1px solid var(--line);font-size:12px}.login-runtime strong{color:var(--accent)}.login-form{margin-top:25px}.login-form .el-form-item{margin-bottom:19px}.login-submit{width:100%;margin-top:4px}.code-row{display:grid;grid-template-columns:1fr 110px;gap:8px;width:100%}.admin-link{display:block;margin-top:20px;color:#6b7280;font-size:12px;text-align:center;text-decoration:none}.admin-link:hover{color:var(--accent)}.login-copyright{position:absolute;right:42px;bottom:26px;left:42px;color:#7c91a6;font-size:12px;text-align:center}.login-copyright span{color:#486786}.topology-editor{display:grid;grid-template-rows:60px minmax(0,1fr);width:100vw;height:100vh;overflow:hidden;background:#f8fafc}.editor-header{z-index:5;display:flex;align-items:center;gap:12px;padding:0 14px;background:#fff;border-bottom:1px solid var(--line)}.editor-title{min-width:170px;max-width:300px}.editor-title strong,.editor-title span{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.editor-title strong{font-size:14px}.editor-title span{margin-top:3px;color:var(--muted);font-size:10px}.editor-toolbar{display:flex;align-items:center;justify-content:flex-end;min-width:0;gap:5px;margin-left:auto}.tool-button{display:grid;place-items:center;width:34px;height:34px;padding:0;color:#475569;background:#fff;border:1px solid #d9dee4;border-radius:5px;cursor:pointer}.tool-button:hover{color:var(--accent);background:#eff6ff;border-color:#9fc2eb}.tool-divider{width:1px;height:24px;margin:0 3px;background:var(--line)}.editor-body{position:relative;display:grid;grid-template-columns:184px minmax(0,1fr);min-height:0;overflow:hidden}.device-palette{z-index:3;padding:13px 10px;background:#fff;border-right:1px solid var(--line);overflow-y:auto}.palette-heading{display:flex;align-items:baseline;justify-content:space-between;padding:4px 6px 12px}.palette-heading strong{font-size:13px}.palette-heading span{color:var(--muted);font-size:10px}.palette-item{display:flex;align-items:center;width:100%;height:48px;gap:10px;padding:6px 7px;margin-bottom:5px;color:#334155;background:#fff;border:1px solid #e2e8f0;border-radius:5px;cursor:grab;text-align:left}.palette-item:hover{border-color:#8fb7e8;background:#f4f9ff}.palette-item:active{cursor:grabbing}.palette-item>span{display:grid;place-items:center;width:32px;height:32px;color:#fff;border-radius:4px;font-size:10px;font-weight:700}.palette-item strong{min-width:0;overflow:hidden;font-size:12px;text-overflow:ellipsis;white-space:nowrap}.palette-note{padding:10px 5px;color:#94a3b8;font-size:10px;text-align:center}.graph-canvas{width:100%;min-width:0;min-height:0;overflow:hidden}.edge-inspector{position:absolute;z-index:8;top:12px;right:12px;width:260px;padding:14px;background:#fff;border:1px solid var(--line);border-radius:7px;box-shadow:0 12px 32px #0f172a1f}.inspector-heading{display:flex;align-items:center;justify-content:space-between;margin-bottom:14px}.inspector-heading strong{font-size:13px}.edge-inspector .el-select{width:100%}.cable-option{display:inline-flex;align-items:center;gap:8px}.cable-option i{display:inline-block;width:22px;height:3px;border-radius:2px}.link-confirmation{display:grid;grid-template-columns:minmax(0,1fr) 42px minmax(0,1fr);align-items:center;gap:12px}.link-endpoint-card{min-width:0;padding:17px;background:#f8fbff;border:1px solid #d7e5f4;border-radius:6px}.link-endpoint-card>span,.link-endpoint-card>strong,.link-endpoint-card>small{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.link-endpoint-card>span{color:#52708c;font-size:11px}.link-endpoint-card>strong{margin-top:7px;color:#142f4c;font-size:15px}.link-endpoint-card>small{margin-top:4px;color:#74899e;font-size:11px}.link-endpoint-card .el-form{margin-top:16px}.link-endpoint-card .el-form-item{margin-bottom:0}.link-direction{display:grid;place-items:center;color:#4d83b8}.link-type-form{width:220px;margin-top:16px}.link-type-form .el-select{width:100%}.device-config-dialog .el-dialog__body{padding-top:6px}.device-config-dialog .el-tabs__header{margin-bottom:18px}.config-tab-heading{display:flex;align-items:center;justify-content:space-between;gap:12px;min-height:32px;margin-bottom:11px;color:#6b8299;font-size:12px}.config-tab-heading span{min-width:0}.device-config-table{width:100%;border:1px solid #e1eaf2;border-radius:6px;overflow:hidden}.device-config-table .el-input__wrapper,.device-config-table .el-select__wrapper{min-height:28px;padding:1px 7px;box-shadow:none;background:#fbfdff}.device-config-table .el-input__wrapper:hover,.device-config-table .el-select__wrapper:hover{box-shadow:0 0 0 1px #9fc2eb inset}.device-config-table .el-table__cell{padding:6px 0}.peer-inputs{display:grid;grid-template-columns:1fr 1fr;gap:5px}.table-icon-button{display:grid;place-items:center;width:27px;height:27px;padding:0;color:#7890a6;background:transparent;border:0;border-radius:4px;cursor:pointer}.table-icon-button:hover{color:#dc2626;background:#fff1f2}.file-size{display:block;margin-top:7px;color:var(--muted);font-size:11px}.release-summary{display:flex;align-items:center;gap:24px;padding:20px 0;border-bottom:1px solid var(--line)}.release-environment{display:flex;align-items:center;min-width:210px;gap:11px}.release-environment>div span,.release-environment>div strong{display:block}.release-environment>div span{color:var(--muted);font-size:11px}.release-environment>div strong{margin-top:3px;font-size:23px}.environment-dot{width:10px;height:10px;background:#f59e0b;border-radius:50%;box-shadow:0 0 0 5px #fef3c7}.environment-dot.production{background:#0891b2;box-shadow:0 0 0 5px #cffafe}.release-flow{display:flex;align-items:center;gap:7px;margin-left:auto;color:#6b8299;font-size:11px}.release-flow svg{color:var(--accent)}.release-dialog-intro{display:flex;align-items:flex-start;justify-content:space-between;gap:14px;padding:11px 13px;margin-bottom:18px;color:#31506d;background:#f4f9ff;border:1px solid #cfe2f6;border-radius:6px;font-size:12px;line-height:1.55}.release-dialog-intro>div{display:flex;align-items:flex-start;gap:8px;min-width:0}.release-dialog-intro svg{flex:0 0 auto;margin-top:1px;color:var(--accent)}.release-dialog-intro .el-tag{flex:0 0 auto}.release-diff-summary{display:flex;flex-wrap:wrap;gap:8px 18px;padding:10px 13px;margin:-8px 0 18px;color:#5f7890;background:#f8fafc;border:1px solid #e0e8f0;border-radius:6px;font-size:12px;line-height:1.5}.release-diff-summary strong{margin-left:3px;color:#263f56;font-weight:600}.release-form-hint{margin-top:6px;color:#7890a7;font-size:11px;line-height:1.5}.release-confirmation{padding:12px 14px;margin-top:2px;background:#fff8eb;border:1px solid #f4d9a4;border-radius:6px}.release-confirmation .el-checkbox{align-items:flex-start;height:auto;white-space:normal}.release-confirmation .el-checkbox__label{display:grid;gap:3px;color:#6c4b12;font-size:12px;line-height:1.5}.release-confirmation .el-checkbox__label strong{color:#704b0b;font-size:13px}.release-change-list{max-height:132px;padding-left:17px;margin:0;overflow-y:auto;color:#405b73;font-size:12px;line-height:1.65}.release-mobile-list{display:none}.release-mobile-item{min-width:0;padding:15px;background:#fff;border:1px solid var(--line);border-radius:7px}.release-mobile-heading{display:flex;align-items:flex-start;justify-content:space-between;gap:10px;padding-bottom:12px;border-bottom:1px solid #e7eff6}.release-mobile-heading strong,.release-mobile-heading span{display:block;overflow-wrap:anywhere}.release-mobile-heading strong{font-size:17px}.release-mobile-heading span{margin-top:4px;color:var(--muted);font-size:12px}.release-mobile-item .release-change-list{max-height:none;padding:13px 0 0 18px;overflow:visible}.release-submitted{color:#7a8fa5;font-size:12px}.release-mobile-item footer{display:flex;align-items:center;justify-content:space-between;gap:10px;padding-top:12px;margin-top:12px;color:var(--muted);border-top:1px solid #e7eff6;font-size:11px}.access-address-band{display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:12px;padding:18px 0;border-bottom:1px solid var(--line)}.access-address-band>svg{color:var(--accent)}.access-address-band>div span,.access-address-band>div strong{display:block}.access-address-band>div span{color:var(--muted);font-size:11px}.access-address-band>div strong{margin-top:5px;color:#1746b3;font-family:Cascadia Code,Consolas,monospace;font-size:15px;overflow-wrap:anywhere}.access-address-band>div strong:only-child{margin-top:0}.service-restart-hint{margin-bottom:18px}.address-actions{display:flex;gap:8px}.network-settings{max-width:920px}.network-form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:0 18px}.network-form-grid .el-input-number{width:100%}.config-actions{display:flex;align-items:center;justify-content:space-between;gap:12px;padding-top:10px}.detected-state{display:inline-flex;align-items:center;gap:6px;color:#087f8c;font-size:12px}.ai-model-selector{display:flex;align-items:center;justify-content:space-between;gap:14px;padding:20px 0;border-bottom:1px solid var(--line)}.ai-config-section{max-width:920px}.ai-config-form{max-width:760px}.ai-key-row .el-form-item:last-child{display:flex;flex-direction:column}.ai-key-row .el-form-item:last-child .el-form-item__content{min-height:32px;align-items:center}.ai-config-actions{display:flex;justify-content:flex-end;padding-top:2px}.ai-chat-section{max-width:920px}.ai-chat-layout{display:grid;gap:12px}.ai-chat-actions{display:flex;justify-content:flex-end}.ai-response{display:grid;grid-template-columns:auto minmax(0,1fr);align-items:start;gap:9px;min-height:112px;padding:13px;color:#0f3b6d;background:#f4f9ff;border:1px solid #cfe2f6;border-radius:6px}.ai-response svg{margin-top:2px;color:var(--accent)}.ai-response pre{min-width:0;margin:0;overflow-wrap:anywhere;white-space:pre-wrap;font:13px/1.65 Inter,Microsoft YaHei,sans-serif}.topology-prompt-label{display:flex;align-items:center;justify-content:space-between;width:100%;gap:12px}.topology-ai-form .el-form-item__label{width:100%}.topology-generation-hint{display:flex;align-items:flex-start;gap:6px;margin-top:7px;color:#6b8299;font-size:11px;line-height:1.5}.topology-generation-hint svg{flex:0 0 auto;margin-top:1px;color:#607d9b}.ai-polished-status{display:inline-flex;align-items:center;gap:5px;color:#087f8c;font-size:12px;font-weight:500}.polished-prompt textarea{color:#123b68;background:#f7fbff;border-color:#bfdbfe}.field-hint{margin-top:5px;color:#7890a7;font-size:11px;line-height:1.45}.topology-thumbnail{position:relative;display:block;width:132px;height:62px;padding:0;overflow:hidden;background:#f8fbff;border:1px solid #d7e5f4;border-radius:5px;cursor:pointer}.topology-thumbnail:hover{border-color:#79a9df;box-shadow:0 3px 10px #1d4ed81f}.topology-thumbnail img{display:block;width:100%;height:100%;object-fit:contain}.topology-thumbnail>span{display:grid;place-items:center;width:100%;height:100%;color:#7a94ad}.topology-thumbnail>i{position:absolute;right:4px;bottom:4px;display:grid;place-items:center;width:19px;height:19px;color:#fff;background:#153f67bf;border-radius:4px}.topology-name-link{display:block;max-width:100%;padding:0;overflow:hidden;color:#173b5e;background:transparent;border:0;cursor:pointer;font:inherit;font-weight:600;text-align:left;text-overflow:ellipsis;white-space:nowrap}.topology-name-link:hover{color:var(--accent)}.topology-type-hint{display:inline-flex;align-items:center;gap:4px;margin-top:5px;color:#7b92a8;font-size:11px}.topology-preview-layout{display:grid;grid-template-columns:minmax(0,1fr) 250px;gap:18px;min-height:390px}.topology-preview-frame{display:grid;place-items:center;min-width:0;min-height:390px;padding:12px;overflow:auto;background:#f7fbff;border:1px solid #d7e5f4;border-radius:6px}.topology-preview-frame img{display:block;width:100%;max-height:560px;object-fit:contain}.topology-preview-info{display:grid;align-content:start;gap:15px;padding:14px;color:#55728d;background:#fbfdff;border:1px solid #e2edf7;border-radius:6px}.topology-preview-info>div{display:grid;gap:5px}.topology-preview-info span{color:#7890a7;font-size:11px}.topology-preview-info strong{color:#173b5e;font-size:14px}.topology-preview-requirement p{max-height:260px;margin:0;overflow:auto;color:#31506d;font-size:12px;line-height:1.65;white-space:pre-wrap}.topology-requirement-dialog{display:grid;gap:14px}.topology-requirement-summary{display:flex;align-items:center;gap:10px;color:#7890a7;font-size:12px}.topology-requirement-summary strong{color:#173b5e;font-size:16px}.topology-requirement-summary .el-tag{margin-left:auto}.page-subtitle{margin:9px 0 0;color:var(--muted);font-size:13px;line-height:1.5}.refresh-caption{color:#7890a7;font-size:11px}.warning-number{color:#d97706}.metric-unit{margin-left:2px;color:#5e7b96;font-size:14px;font-weight:600}.cockpit-metrics{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;padding:22px 0 2px}.cockpit-metric{position:relative;min-height:125px}.cockpit-metric small{grid-column:2;display:inline-flex;align-items:center;gap:4px;color:#7890a7;font-size:11px}.positive-text{color:#15803d!important}.dashboard-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;margin-top:14px}.dashboard-panel{min-width:0;padding:20px;background:#fff;border:1px solid var(--line);border-radius:7px}.dashboard-panel-wide{grid-column:span 2}.dashboard-panel .section-heading{margin-bottom:17px}.panel-icon{color:var(--accent)}.quiet-link{display:inline-flex;align-items:center;gap:4px;padding:0;color:var(--accent);background:transparent;border:0;cursor:pointer;font-size:12px}.health-list{display:grid;gap:2px}.health-row{display:grid;grid-template-columns:minmax(220px,1.35fr) minmax(180px,1fr) 78px;align-items:center;gap:18px;padding:12px 0;border-top:1px solid #edf2f7}.health-row:first-child{border-top:0}.health-project{display:flex;min-width:0;align-items:center;gap:10px}.health-project>div{min-width:0}.health-project strong,.health-project span{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.health-project strong{font-size:13px}.health-project span{margin-top:4px;color:var(--muted);font-size:11px}.health-dot{width:8px;height:8px;flex:0 0 auto;border-radius:50%;background:#2563eb}.health-dot.is-success{background:#16a34a}.health-dot.is-warning{background:#f59e0b}.health-dot.is-danger{background:#dc2626}.health-progress{display:flex;align-items:center;gap:10px}.health-progress .el-progress{flex:1}.health-progress span{min-width:35px;color:#47637f;font-size:11px;text-align:right}.status-donut{display:flex;align-items:center;justify-content:center;gap:31px;min-height:164px}.donut-ring{display:grid;place-items:center;width:124px;height:124px;padding-top:2px;background:radial-gradient(circle at center,#fff 0 55%,transparent 56%),conic-gradient(#16a34a 0 98.5%,#dbe7f2 98.5% 100%);border-radius:50%}.donut-ring strong,.donut-ring small{display:block}.donut-ring strong{color:#153f67;font-size:25px}.donut-ring strong span{margin-left:1px;font-size:13px}.donut-ring small{margin-top:2px;color:var(--muted);font-size:11px}.status-legend{display:grid;gap:12px;color:#627d98;font-size:12px}.status-legend span{display:flex;align-items:center;gap:7px}.status-legend strong{margin-left:8px;color:#173b5e}.status-legend i,.event-footer i{width:8px;height:8px;display:inline-block;border-radius:50%}.legend-online{background:#16a34a}.legend-offline{background:#94a3b8}.legend-warning{background:#f59e0b}.event-summary{display:grid;grid-template-columns:auto 1fr;align-items:end;gap:4px 12px;min-height:126px}.event-summary>strong{color:#173b5e;font-size:37px;line-height:1}.event-summary>span{color:var(--muted);font-size:12px}.event-bars{grid-column:1 / -1;display:flex;align-items:end;gap:9px;height:68px;padding:0 4px;border-bottom:1px solid #dbe7f2}.event-bars i{flex:1;min-width:7px;background:linear-gradient(180deg,#60a5fa,#2563eb);border-radius:3px 3px 0 0}.event-footer{display:flex;gap:18px;padding-top:12px;color:var(--muted);font-size:11px}.event-footer span{display:inline-flex;align-items:center;gap:6px}.quick-link-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}.quick-link-card{display:flex;align-items:center;min-width:0;gap:11px;padding:14px;color:#31506d;background:#f8fbff;border:1px solid #d7e5f4;border-radius:6px;cursor:pointer;text-align:left}.quick-link-card:hover{color:var(--accent);border-color:#9fc2eb;background:#f2f8ff}.quick-link-card>span{min-width:0;flex:1}.quick-link-card strong,.quick-link-card small{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.quick-link-card strong{font-size:13px}.quick-link-card small{margin-top:4px;color:var(--muted);font-size:11px}.quick-link-card>svg:last-child{color:#8aa1b7}.service-summary-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;padding:22px 0 2px}.service-summary-card{display:grid;grid-template-columns:auto 1fr;grid-template-rows:auto auto auto;gap:3px 11px;min-height:116px;padding:16px;background:#fff;border:1px solid var(--line);border-radius:7px}.service-summary-card>svg{grid-row:1 / 4;align-self:center;color:var(--accent)}.service-summary-card span{color:var(--muted);font-size:12px}.service-summary-card strong{color:#173b5e;font-size:24px;line-height:1.1}.service-summary-card small{color:#7890a7;font-size:11px}.service-board{padding:22px 0}.service-project-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}.service-project-card{display:flex;min-width:0;flex-direction:column;padding:17px;color:inherit;background:#fff;border:1px solid var(--line);border-radius:7px;cursor:pointer;text-align:left;transition:border-color .15s,box-shadow .15s,transform .15s}.service-project-card:hover{border-color:#8fb7e8;box-shadow:0 8px 22px #1d4ed814;transform:translateY(-2px)}.service-card-heading{display:flex;align-items:center;justify-content:space-between;gap:8px}.service-project-icon{display:grid;place-items:center;width:34px;height:34px;color:var(--accent);background:#eff6ff;border-radius:5px}.service-project-card h3{margin:16px 0 7px;overflow-wrap:anywhere;font-size:16px}.service-project-card p{flex:1;min-height:42px;margin:0;color:var(--muted);font-size:12px;line-height:1.65}.service-card-meta{display:grid;gap:6px;padding:13px 0;margin-top:13px;color:#6c849b;border-top:1px solid #edf2f7;font-size:11px}.service-card-meta span{display:inline-flex;align-items:center;gap:5px}.service-project-card footer{display:flex;align-items:center;justify-content:space-between;padding-top:12px;color:var(--accent);border-top:1px solid #edf2f7;font-size:12px}.solution-ai-banner{display:flex;align-items:flex-start;gap:10px;padding:13px 15px;margin-top:18px;color:#31506d;background:#f4f9ff;border:1px solid #cfe2f6;border-radius:6px}.solution-ai-banner>svg{flex:0 0 auto;color:var(--accent)}.solution-ai-banner>div{display:grid;gap:3px;min-width:0;flex:1}.solution-ai-banner strong{font-size:13px}.solution-ai-banner span{color:var(--muted);font-size:12px;line-height:1.5}.solution-tools{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;padding:22px 0}.solution-tool-card{display:flex;align-items:center;min-width:0;gap:13px;padding:18px;color:inherit;background:#fff;border:1px solid var(--line);border-radius:7px;cursor:pointer;text-align:left}.solution-tool-card:hover{border-color:#8fb7e8;box-shadow:0 7px 18px #1d4ed812}.solution-tool-card>div{min-width:0;flex:1}.solution-tool-card h2{margin:0;font-size:16px}.solution-tool-card p{margin:7px 0 0;color:var(--muted);font-size:12px;line-height:1.55}.solution-tool-card>svg:last-child{color:#89a1b7}.solution-tool-icon{display:grid;place-items:center;width:43px;height:43px;flex:0 0 auto;border-radius:7px}.topology-icon{color:#2563eb;background:#eff6ff}.ai-icon{color:#0f766e;background:#ecfeff}.script-icon{color:#7c3aed;background:#f5f3ff}.solution-projects{padding:2px 0 22px}.design-content-tags{display:flex;align-items:center;flex-wrap:wrap;gap:6px}.design-content-tags>span{overflow:hidden;color:var(--muted);text-overflow:ellipsis;white-space:nowrap}.ipam-metrics{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;padding:22px 0 2px}.ipam-section{padding:22px 0}.ipam-tools{display:flex;align-items:center;gap:8px}.ipam-section .el-alert{margin:0 0 15px}.ip-usage{display:grid;gap:4px}.ip-usage>div{display:flex;align-items:center;gap:10px}.ip-usage .el-progress{flex:1}.ip-usage>div>span{min-width:75px;color:#58738c;font-size:11px;text-align:right}.ip-usage small{color:var(--muted);font-size:10px}.ipam-note{display:flex;align-items:center;gap:7px;padding:13px 0 0;color:#6b8299;font-size:11px}.ipam-note svg{flex:0 0 auto;color:#15803d}.ipam-note strong{margin-left:auto;color:#1746b3;font-weight:600}@media(max-width:1100px){.project-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.icon-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.metric-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.script-controls{grid-template-columns:1fr 1fr}.script-controls>:last-child{grid-column:1 / -1}.editor-title{max-width:180px}.tool-divider{display:none}.primary-nav-item{padding:0 10px}.company-logo{width:132px}.cockpit-metrics,.service-summary-grid,.ipam-metrics,.service-project-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.solution-tools{grid-template-columns:1fr}}@media(max-width:760px){.app-sidebar{transform:translate(-100%);transition:transform .2s}.app-sidebar.is-open{transform:translate(0)}.mobile-backdrop{position:fixed;inset:0;z-index:29;display:block;background:#0f172a80}.app-main{width:100%;margin-left:0}.app-topbar{height:auto;min-height:52px;flex-wrap:wrap;gap:8px;padding:8px 12px 7px}.app-topbar .mobile-only{display:inline-grid}.primary-nav{order:5;width:100%;height:34px}.primary-nav-item{height:32px;padding:0 12px;font-size:12px}.company-logo{width:106px;height:30px}.runtime-status{padding:0 6px;margin-left:auto}.runtime-status span{display:none}.page-shell{padding:24px 16px 42px}.page-header{align-items:flex-start}.page-header h1{font-size:24px}.header-actions{flex-wrap:wrap;justify-content:flex-end}.project-grid{grid-template-columns:1fr}.project-card{min-height:170px}.definition-grid{grid-template-columns:1fr}.definition-grid>div{border-right:0}.definition-grid>div.wide{grid-column:auto}.form-grid,.script-controls,.knowledge-type-control{grid-template-columns:1fr}.script-controls>:last-child{grid-column:auto}.knowledge-type-control .el-button{width:100%}.sync-summary{align-items:flex-start;flex-direction:column}.sync-metrics{justify-content:flex-start;text-align:left}.knowledge-search{width:100%}.document-reader-meta{grid-template-columns:1fr;gap:6px}.metric-grid{grid-template-columns:1fr 1fr}.knowledge-layout{grid-template-columns:1fr}.knowledge-tree{border-right:0;border-bottom:1px solid var(--line)}.icon-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.login-page{grid-template-columns:1fr}.login-brand{min-height:265px;padding:36px 24px;align-items:end}.login-brand h1{margin-top:18px;font-size:34px}.brand-metrics{margin-top:22px}.login-panel{min-height:calc(100vh - 265px);padding:34px 20px;align-items:start}.login-copyright{position:static;width:100%;padding-top:28px}.topology-editor{grid-template-rows:auto minmax(0,1fr)}.editor-header{flex-wrap:wrap;min-height:60px;padding:8px}.editor-title{max-width:calc(100% - 55px)}.editor-toolbar{width:100%;justify-content:flex-start;overflow-x:auto}.editor-toolbar .el-button{width:34px;padding:8px}.editor-toolbar .command-label{display:none}.editor-body{grid-template-columns:74px minmax(0,1fr)}.device-palette{padding:9px 6px}.palette-heading strong,.palette-heading span,.palette-item strong,.palette-note{display:none}.palette-item{justify-content:center;height:45px;padding:5px}.edge-inspector{top:8px;right:8px;width:min(250px,calc(100% - 16px))}.link-confirm-dialog,.device-config-dialog{width:calc(100% - 24px)!important;margin:12px auto}.link-confirmation{grid-template-columns:1fr;gap:8px}.link-direction{transform:rotate(90deg)}.link-type-form{width:100%}.config-tab-heading{align-items:flex-start;flex-direction:column}.device-config-table{overflow-x:auto}.release-summary{align-items:flex-start;flex-wrap:wrap;gap:14px}.release-flow{width:100%;margin-left:0}.release-desktop-table{display:none}.release-mobile-list{display:grid;gap:10px}.access-address-band{grid-template-columns:auto minmax(0,1fr)}.address-actions{grid-column:1 / -1;width:100%}.address-actions .el-button{flex:1}.network-form-grid{grid-template-columns:1fr}.config-actions{align-items:stretch;flex-direction:column}.login-company-logo{width:190px;margin-bottom:20px}.ai-model-selector{align-items:flex-start;flex-direction:column}.ai-model-selector .el-segmented{max-width:100%;overflow-x:auto}.ai-config-actions .el-button,.ai-chat-actions .el-button{width:100%}.cockpit-metrics,.service-summary-grid,.ipam-metrics{grid-template-columns:1fr 1fr;gap:8px}.dashboard-grid{grid-template-columns:1fr}.dashboard-panel-wide{grid-column:auto}.health-row{grid-template-columns:minmax(0,1fr) 74px;gap:10px}.health-progress{grid-column:1 / -1;grid-row:2}.health-row>.el-tag{grid-column:2;grid-row:1;justify-self:end}.status-donut{justify-content:flex-start;gap:18px}.quick-link-grid,.service-project-grid{grid-template-columns:1fr}.solution-ai-banner{align-items:flex-start;flex-wrap:wrap}.solution-ai-banner .el-button{margin-left:28px}.ipam-tools{width:100%}.ipam-tools .el-input{flex:1}.ipam-section .section-heading{align-items:flex-start;flex-direction:column}.ipam-note{align-items:flex-start;flex-wrap:wrap}.ipam-note strong{margin-left:22px}.topology-preview-layout{grid-template-columns:1fr}.topology-preview-frame{min-height:250px}.topology-thumbnail{width:118px;height:56px}}@media(min-width:761px){.mobile-only{display:none}.app-sidebar{width:68px;padding:18px 9px;overflow:hidden;transition:width .2s ease,padding .2s ease,box-shadow .2s ease}.app-sidebar:hover{width:236px;padding:18px 14px;box-shadow:10px 0 30px #1e40af1f}.app-sidebar:not(:hover) .brand-block{justify-content:center;padding-right:0;padding-left:0}.app-sidebar:not(:hover) .brand-block>div:nth-child(2),.app-sidebar:not(:hover) .sidebar-context,.app-sidebar:not(:hover) .nav-label,.app-sidebar:not(:hover) .side-nav button span,.app-sidebar:not(:hover) .sidebar-user .user-meta,.app-sidebar:not(:hover) .sidebar-user>.icon-button{display:none}.app-sidebar:not(:hover) .side-nav button{justify-content:center;padding-right:0;padding-left:0}.app-sidebar:not(:hover) .sidebar-user{justify-content:center;padding-right:0;padding-left:0}.app-main{width:calc(100% - 68px);margin-left:68px}}
