*{box-sizing:border-box}html,body{height:100%}body{margin:0;color:#1f2937;background:#eef3f8;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,PingFang SC,Microsoft YaHei,sans-serif}#root{height:100%}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:#cbd5e1;border-radius:999px}::-webkit-scrollbar-thumb:hover{background:#94a3b8}.app-shell{height:100vh;overflow:hidden;background:#eef3f8}.workbench{min-width:0;background:#eef3f8}.app-sider{background:#16202a!important;border-right:1px solid #1e293b}.app-sider .ant-layout-sider-children{display:flex;flex-direction:column;background:#16202a}.app-sider .ant-menu-dark{flex:1;background:transparent}.app-sider .ant-menu-dark .ant-menu-item{width:calc(100% - 12px);margin-inline:6px;border-radius:3px;color:#cbd5e1}.app-sider .ant-menu-dark .ant-menu-item-selected{background:#2f6f73;color:#fff}.brand{height:58px;display:flex;align-items:center;gap:10px;padding:0 16px;color:#fff;border-bottom:1px solid rgba(255,255,255,.08)}.brand-mark{width:30px;height:30px;display:inline-grid;place-items:center;flex:0 0 auto;border-radius:3px;background:#2f6f73;font-weight:760;letter-spacing:0}.brand-title{font-size:16px;font-weight:680;white-space:nowrap}.app-header{height:58px;padding:0 18px;background:#fffffff0;display:flex;align-items:center;gap:14px;border-bottom:1px solid #e5e7eb;box-shadow:0 1px 2px #0f172a0a}.icon-button{width:34px;height:34px;border:1px solid #dbe4ef;background:#fff;color:#374151}.icon-button:hover{border-color:#b7d2d4!important;background:#f8fbff!important;color:#2f6f73!important}.header-status{display:flex;align-items:center;gap:8px;height:34px;padding:0 10px;color:#374151;background:#f8fafc;border:1px solid #dbe4ef;border-radius:3px}.header-status .ant-tag{margin-inline-end:0;border-radius:3px}.header-spacer{flex:1}.user-profile{height:44px;min-width:168px;display:inline-flex;align-items:center;gap:10px;padding:4px 0 4px 6px;border-radius:3px}.user-menu-trigger{width:26px;height:26px;display:inline-grid;place-items:center;padding:0;color:#6b7280;background:transparent;border:0;border-radius:3px;cursor:pointer;font-size:11px;transition:color .16s ease,background .16s ease}.user-menu-trigger:hover,.user-menu-trigger:focus-visible{color:#2f6f73;background:#f3f8f8;outline:none}.user-avatar{background:#16202a;color:#fff}.user-meta{display:grid;line-height:1.15;text-align:left;min-width:84px}.user-name{color:#111827;font-size:14px;font-weight:620}.user-role{color:#6b7280;font-size:12px}.profile-menu-item{display:grid;gap:2px;line-height:1.2}.profile-menu-item span:first-child{color:#111827;font-weight:600}.profile-menu-item span:last-child{color:#6b7280;font-size:12px}.form-toolbar{display:flex;justify-content:flex-end;margin-bottom:12px}.select-file-option{display:flex;align-items:center;justify-content:space-between;gap:10px;min-width:0}.select-file-option>span:first-child{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.app-content{height:calc(100vh - 58px);min-height:0;padding:18px 20px;overflow:hidden}.page{max-width:1480px;height:100%;margin:0 auto;display:flex;flex-direction:column;min-height:0}.page-title{min-height:58px;display:flex;align-items:flex-start;justify-content:space-between;gap:16px;flex:0 0 auto;margin-bottom:14px}.page-title-copy{display:flex;align-items:flex-start;gap:12px;min-width:0}.page-title-icon{width:38px;height:38px;display:inline-grid;place-items:center;flex:0 0 auto;color:#2f6f73;background:#f3f8f8;border:1px solid #cbdede;border-radius:3px;font-size:18px}.page-title h1{margin:0;font-size:22px;line-height:30px;letter-spacing:0}.page-title p{margin:4px 0 0;color:#6b7280}.config-page-title{display:grid;grid-template-columns:minmax(320px,1fr) minmax(560px,680px);align-items:start}.config-toolbar{display:grid;grid-template-columns:minmax(150px,190px) minmax(220px,1fr) auto auto;gap:8px;width:100%;min-width:0}.config-toolbar .ant-btn{white-space:nowrap}.config-instance-select,.config-file-select{width:100%;min-width:0}.auth-page{min-height:100vh;display:grid;place-items:center;background:#edf3f8}.auth-panel{width:min(420px,calc(100vw - 32px));padding:28px;background:#fff;border:1px solid #e5e7eb;border-radius:3px;box-shadow:0 18px 45px #1f29371f}.auth-panel h1{margin:0 0 22px;font-size:24px}.boot{min-height:100vh;display:grid;place-items:center;color:#4b5563}.editor-layout{position:relative;display:grid;grid-template-columns:260px minmax(0,1fr) 380px;gap:16px;flex:1 1 auto;min-height:0}.editor-layout.tree-collapsed{grid-template-columns:minmax(0,1fr) 380px}.editor-layout.console-collapsed{grid-template-columns:260px minmax(0,1fr)}.editor-layout.tree-collapsed.console-collapsed{grid-template-columns:minmax(0,1fr)}.editor-main,.file-tree-panel,.console-output,.log-output,.log-viewer,.visualizer{background:#fff;border:1px solid #dbe4ef;border-radius:3px;overflow:hidden;box-shadow:0 8px 24px #0f172a0d}.editor-main{display:flex;flex-direction:column;min-width:0;min-height:0}.editor-main>section{flex:1 1 auto;min-height:0}.editor-main-title{height:42px;padding:0 12px;display:inline-flex;align-items:center;gap:8px;width:100%;color:#475569;background:#f8fafc;border-bottom:1px solid #dbe4ef;font-size:13px;font-weight:600}.editor-main-title span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.file-tree-panel{padding:10px;min-height:0;overflow:auto}.file-tree-title{display:grid;gap:3px;padding:4px 6px 10px;color:#374151;font-size:13px;font-weight:640}.file-tree-heading{display:inline-flex;align-items:center;gap:8px;min-width:0}.file-tree-subtitle{color:#6b7280;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:12px;font-weight:400}.file-tree-actions{margin:0 0 10px 6px}.panel-visibility-controls{position:absolute;right:10px;bottom:10px;z-index:5;display:inline-flex;align-items:center;gap:4px;padding:4px;background:#fffffff0;border:1px solid #dbe4ef;border-radius:3px;box-shadow:0 6px 18px #0f172a1f}.panel-visibility-controls .ant-btn{width:28px;height:26px;padding:0}.file-tree-panel .ant-tree{background:transparent}.file-tree-panel .ant-tree-title{font-size:13px}.tree-file-title,.tree-group-title{display:inline-flex;align-items:center;gap:6px;max-width:100%}.tree-file-title>span:nth-child(2){overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.tree-file-title .ant-tag,.tree-group-title .ant-tag{margin-inline-end:0;border-radius:3px}.console-output,.log-output{margin:0;padding:14px;min-height:0;overflow:auto;color:#334155;background:#f8fafc;white-space:pre-wrap;font-size:13px;line-height:1.6}.log-output{height:100%;min-height:0;overflow:auto}.log-viewer{min-height:0;display:flex;flex-direction:column}.log-viewer .log-output{flex:1 1 auto;border:0;border-radius:0;box-shadow:none}.log-line{display:block;min-height:20px;padding:0 8px;border-left:3px solid transparent;border-radius:3px}.log-line+.log-line{margin-top:2px}.log-line-error{color:#991b1b;background:#fff1f2;border-left-color:#ef4444}.log-line-warning{color:#92400e;background:#fffbeb;border-left-color:#f59e0b}.log-line-success{color:#166534;background:#f0fdf4;border-left-color:#22c55e}.log-line-info{color:#1e40af;background:#eff6ff;border-left-color:#60a5fa}.log-output-meta{min-height:40px;display:flex;align-items:center;gap:8px;padding:7px 10px;color:#64748b;background:#fff;border-bottom:1px solid #dbe4ef;font-size:12px}.log-output-meta>span:first-child{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.log-output-meta .ant-tag{margin-inline-end:0;border-radius:3px}.log-layout{display:grid;grid-template-columns:280px minmax(0,1fr);gap:16px;flex:1 1 auto;min-height:0}.visualizer{flex:1 1 auto;min-height:0;padding:32px;display:grid;grid-template-columns:repeat(4,minmax(140px,1fr));align-items:center;gap:22px}.node{min-height:88px;display:inline-flex;align-items:center;justify-content:center;gap:8px;border:1px solid #cbdede;background:#f3f8f8;color:#2f6f73;border-radius:3px;font-weight:600}.node.primary{background:#2f6f73;color:#fff}.node.muted{background:#f3f4f6;color:#4b5563;border-color:#d1d5db}.management-empty{display:inline-flex;align-items:center;justify-content:center;gap:8px;color:#6b7280}.management-row-detail{margin:0;padding:14px;color:#334155;background:#f8fafc;border:1px solid #dbe4ef;border-radius:3px;white-space:pre-wrap;font-size:13px;line-height:1.6}.management-footnote{display:inline-flex;align-items:center;gap:8px;margin-top:12px;color:#64748b;font-size:13px}.deploy-page-title{align-items:center}.deploy-site-select{width:260px}.deploy-layout{display:grid;grid-template-columns:360px minmax(0,1fr);gap:16px;flex:1 1 auto;min-height:0}.deploy-upload-panel,.deploy-release-table{background:#fff;border:1px solid #dbe4ef;border-radius:3px;box-shadow:0 8px 24px #0f172a0d}.deploy-upload-panel{min-width:0;padding:14px;display:flex;flex-direction:column;gap:12px;align-self:start}.deploy-panel-title{min-height:32px;display:flex;align-items:center;justify-content:space-between;gap:8px;color:#111827}.deploy-panel-title .ant-tag{max-width:170px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;margin-inline-end:0}.deploy-release-table{min-width:0;min-height:0;overflow:auto}.deploy-file-panel{grid-column:1 / -1;display:grid;grid-template-columns:minmax(260px,340px) minmax(0,1fr);gap:16px;min-height:560px}.deploy-file-panel-maximized{grid-column:auto;height:calc(100vh - 150px);min-height:620px}.deploy-file-tree,.deploy-file-editor{min-width:0;min-height:0;padding:14px;background:#fff;border:1px solid #dbe4ef;border-radius:3px;box-shadow:0 8px 24px #0f172a0d}.deploy-file-tree{overflow:auto}.deploy-file-tree .ant-tree{margin-top:10px;background:transparent}.deploy-file-editor{display:flex;flex-direction:column;gap:10px}.deploy-monaco-frame{flex:1 1 auto;min-height:0;overflow:hidden;border:1px solid #dbe4ef;border-radius:3px}.deploy-file-modal .ant-modal-content{height:calc(100vh - 48px);display:flex;flex-direction:column;padding:16px}.deploy-file-modal .ant-modal-body{flex:1 1 auto;min-height:0;padding:0}.deploy-file-modal .ant-modal-header{flex:0 0 auto;margin-bottom:12px}.page>.ant-table-wrapper{flex:1 1 auto;min-height:0;overflow:auto;background:#fff;border:1px solid #dbe4ef;border-radius:3px;box-shadow:0 8px 24px #0f172a0d}.page>.ant-table-wrapper .ant-table{border-radius:3px}.page>.ant-table-wrapper .ant-table-container{border-start-start-radius:8px;border-start-end-radius:8px}.page>.ant-table-wrapper .ant-table-thead>tr>th{background:#f8fafc;color:#475569;font-weight:650}.ant-btn{border-radius:3px}.ant-btn-primary{background:#2f6f73;border-color:#2f6f73;box-shadow:none}.ant-btn-primary:not(:disabled):not(.ant-btn-disabled):hover{background:#255c60!important;border-color:#255c60!important}.ant-btn-primary:not(:disabled):not(.ant-btn-disabled):active{background:#214f52!important;border-color:#214f52!important}.ant-tag.ant-tag-blue,.ant-tag.ant-tag-processing{color:#2f6f73!important;background:#f3f8f8!important;border-color:#cbdede!important}.ant-select-selector,.ant-input{border-radius:3px!important}.config-check-alert{margin:-6px 0 16px}.config-check-alert pre{margin:0;white-space:pre-wrap;word-break:break-word;font-size:13px;line-height:1.55}.config-check-description{display:grid;gap:10px}.config-error-location{display:flex;align-items:center;justify-content:space-between;gap:12px;min-width:0;padding:8px 10px;color:#334155;background:#f8fafc;border:1px solid #dbe4ef;border-radius:3px}.config-error-location span{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}@media(max-width:980px){.app-shell{overflow:auto}.app-content{height:auto;min-height:calc(100vh - 58px);overflow:visible}.page{height:auto}.editor-layout,.log-layout,.deploy-layout,.deploy-file-panel,.visualizer{grid-template-columns:1fr;height:auto;min-height:460px}.page-title{flex-direction:column}.config-page-title{display:flex}.config-toolbar{grid-template-columns:minmax(150px,210px) minmax(220px,1fr) auto auto}}@media(max-width:680px){.config-toolbar{grid-template-columns:1fr}.config-toolbar .ant-btn{width:100%}}
