*{margin:0;padding:0;box-sizing:border-box}body{font-family:'Segoe UI',Tahoma,Geneva,Verdana,sans-serif;background:linear-gradient(135deg,#f0f4f8 0,#e2e8f0 100%);min-height:100vh;display:flex;align-items:center;justify-content:center;overflow-x:auto}.container{width:100%;padding:20px;overflow-x:auto}.login-container{background:#fff;box-shadow:0 4px 24px rgba(0,0,0,.08),0 1px 4px rgba(0,0,0,.04);padding:40px;margin:0 auto}.mode-select-container{background:#fff;box-shadow:0 4px 24px rgba(0,0,0,.08),0 1px 4px rgba(0,0,0,.04);padding:50px;margin:0 auto;text-align:center}.mode-select-container h1{color:#1e293b;margin-bottom:10px;font-size:32px}.subtitle{color:#64748b;margin-bottom:40px;font-size:16px}.mode-cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:30px}.mode-card{border:2px solid #e2e8f0;padding:40px 30px;cursor:pointer;transition:.3s;text-align:center;box-shadow:0 2px 8px rgba(0,0,0,.03)}.mode-card:hover{transform:translateY(-5px);box-shadow:0 12px 32px rgba(0,0,0,.1)}.card-icon{font-size:48px;margin-bottom:20px;filter:saturate(.8)}.mode-card h2{color:#1e293b;margin-bottom:10px;font-size:22px}.mode-card p{color:#64748b;margin-bottom:25px;line-height:1.6}.card-footer{padding-top:15px;border-top:2px solid #e2e8f0;font-weight:600;font-size:14px}.admin-card .card-footer{color:#6366f1}.client-card .card-footer{color:#10b981}.login-container h1{text-align:center;color:#1e293b}.form-group{margin-bottom:20px}.form-group label{display:block;margin-bottom:8px;color:#475569;font-weight:500}.form-group input,.form-group select{width:100%;padding:12px;border:2px solid #cbd5e1;font-size:16px}.form-group input:focus,.form-group select:focus{outline:0;box-shadow:0 0 0 3px rgba(99,102,241,.1)}.btn{width:100%;padding:12px;font-size:16px;font-weight:600;cursor:pointer;transition:.3s}.btn-primary{background:linear-gradient(135deg,#6366f1 0,#4f46e5 100%)}.btn-primary:hover{box-shadow:0 8px 20px rgba(99,102,241,.35)}.btn-danger{background:#ef4444}.btn-danger:hover{background:#f87171}.btn-success{background:#10b981}.btn-success:hover{background:#34d399}.btn-warning{background:#f59e0b}.btn-warning:hover{background:#fbbf24}.btn-small{padding:6px 12px;font-size:14px;width:auto;margin-right:5px}.dashboard{background:#fff;box-shadow:0 4px 24px rgba(0,0,0,.1),0 1px 4px rgba(0,0,0,.06)}.dashboard-header{background:linear-gradient(135deg,#0f172a 0,#020617 100%);color:#fff;display:flex;justify-content:space-between;align-items:center;box-shadow:0 4px 16px rgba(15,23,42,.35)}.dashboard-header h1{font-size:22px;font-weight:600}.header-buttons{display:flex;gap:10px;align-items:center}.dashboard-content{padding:30px}.section{padding:28px;border:1px solid #e2e8f0;box-shadow:0 1px 4px rgba(0,0,0,.03)}.section h2{color:#1e293b;border-bottom:2px solid #e2e8f0;font-size:18px;font-weight:650}.section-header-row{display:flex;justify-content:space-between;align-items:center;gap:12px;margin-bottom:12px}.section-header-row h2{margin-bottom:0;flex:1}.section-header-actions{display:inline-flex;align-items:center;gap:8px;flex-wrap:nowrap;white-space:nowrap}.form-row{display:flex;gap:20px;flex-wrap:wrap}.filter-toolbar{margin-bottom:18px;border:1px solid #e2e8f0}.filter-inline-row{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.filter-control{width:auto;min-width:140px;max-width:180px}#admin-radar-filter-node{min-width:180px}.filter-card-key-input{min-width:220px;max-width:260px}.filter-actions{display:flex;justify-content:flex-end;gap:10px}.table-pagination{margin-top:16px;display:flex;justify-content:space-between;align-items:center;gap:12px;flex-wrap:wrap}.pagination-page-info,.pagination-summary{color:#475569;font-size:14px}.pagination-actions{display:flex;align-items:center;gap:10px}.node-status-list-wrapper{max-height:none}.node-status-table{min-width:auto}.node-status-table td:first-child,.node-status-table th:first-child{min-width:210px;white-space:nowrap}.node-status-table .row-action-group{flex-wrap:nowrap;white-space:nowrap}.node-status-summary{display:inline-flex;align-items:center;gap:8px;white-space:nowrap}.node-capacity-cell{white-space:nowrap}.node-capacity-value{display:inline-flex;align-items:center;flex-wrap:nowrap;gap:8px;min-width:0}.node-capacity-cell .node-capacity-count{color:var(--lux-text,#eceae6);font-weight:600;flex-shrink:0}.node-capacity-cell .status-badge{vertical-align:middle;flex-shrink:0}.node-status-hover-trigger{cursor:help}.node-status-hover-card{position:fixed;z-index:3600;min-width:280px;max-width:420px;padding:14px 16px;border-radius:12px;color:#fff;box-shadow:0 20px 48px rgba(0,0,0,.28);border:1px solid rgba(255,255,255,.08);pointer-events:none}.node-status-hover-card h4{font-size:15px;margin-bottom:10px}.node-status-hover-card li,.node-status-hover-card p{font-size:13px;line-height:1.6;color:rgba(255,255,255,.92)}.node-status-hover-card ul{margin:8px 0 0 18px}.node-status-hover-card .muted{color:rgba(255,255,255,.72)}.form-row .form-group{flex:1;min-width:200px}.radar-list{overflow-x:auto;overflow-y:hidden}table{width:100%;border-collapse:separate;border-spacing:0 9px}td,th{padding:14px 12px;text-align:left;border-bottom:1px solid #e2e8f0}th{color:#475569;font-size:13px;text-transform:uppercase;letter-spacing:.5px}tr{transition:background .2s}td code{padding:4px 8px;font-family:Consolas,Monaco,monospace;font-size:13px;color:#334155}.status-badge{display:inline-block;padding:4px 12px;border-radius:20px;font-size:12px;font-weight:600}.status-expired,.status-starting{background:#fef3c7;color:#92400e}.status-node-offline{color:#9d174d}.radar-restart-side-panel{position:fixed;top:50%;right:0;z-index:12050;transform:translateY(-50%);pointer-events:none}.radar-restart-side-panel.hidden{display:none}.radar-restart-side-panel-card{min-width:220px;max-width:280px;margin-right:12px;padding:14px 16px;border-radius:12px 0 0 12px;background:linear-gradient(135deg,rgba(15,23,42,.96),rgba(30,41,59,.94));border:1px solid rgba(56,189,248,.45);border-right:none;box-shadow:-8px 0 24px rgba(15,23,42,.35);color:#e2e8f0}.radar-restart-side-panel-title{font-size:12px;font-weight:600;letter-spacing:.04em;color:#7dd3fc;margin-bottom:8px}.radar-restart-side-panel-text{margin:0;font-size:14px;line-height:1.5;font-weight:600;word-break:break-word}.top-status-bar{position:fixed;top:0;left:0;right:0;z-index:3500;transform:translateY(-100%);transition:transform .22s;box-shadow:0 10px 24px rgba(0,0,0,.16)}.top-status-bar.show{transform:translateY(0)}.top-status-content{padding:12px 24px;color:#fff;font-size:14px;font-weight:600;text-align:center}.top-status-bar.status-warning .top-status-content{background:linear-gradient(135deg,#d97706 0,#f59e0b 100%)}.top-status-bar.status-error .top-status-content{background:linear-gradient(135deg,#dc2626 0,#ef4444 100%)}.top-status-bar.status-success .top-status-content{background:linear-gradient(135deg,#059669 0,#10b981 100%)}.top-status-bar.status-info .top-status-content{background:linear-gradient(135deg,#2563eb 0,#6366f1 100%)}.toast-container{position:fixed;z-index:3000;display:flex;flex-direction:column;gap:12px;pointer-events:none}.toast-item{min-width:280px;max-width:420px;color:#fff;box-shadow:0 16px 40px rgba(0,0,0,.18);transform:translateX(120%);pointer-events:auto}.toast-item.show{transform:translateX(0)}.toast-item.hide{transform:translateX(120%)}.toast-item.toast-success{background:linear-gradient(135deg,#059669 0,#10b981 100%)}.toast-item.toast-error{background:linear-gradient(135deg,#dc2626 0,#ef4444 100%)}.toast-item.toast-warning{background:linear-gradient(135deg,#d97706 0,#f59e0b 100%)}.toast-item.toast-info{background:linear-gradient(135deg,#2563eb 0,#6366f1 100%)}.toast-title{font-weight:700;margin-bottom:4px}.toast-message{line-height:1.5;word-break:break-word}.hidden{display:none!important}.btn-secondary{color:#fff}.card-key-section{margin-bottom:20px}.generated-keys{margin-top:20px;padding:20px;border:1px solid #e2e8f0}.generated-keys h3{margin-bottom:15px;color:#059669}.generated-keys-list{display:flex;flex-wrap:wrap;gap:10px}.key-item{background:#fff;padding:10px 15px;border-radius:6px;border:2px solid #6366f1;font-family:monospace;font-size:14px;cursor:pointer;user-select:all}.key-item:hover{background:#6366f1;color:#fff}.key-item-block{display:block;line-height:2;cursor:default;white-space:pre-wrap;word-break:break-all}.card-key-info{display:flex;gap:20px;align-items:center}.card-key-info span{background:rgba(255,255,255,.15);padding:5px 12px;border-radius:4px;font-size:14px}.modal{position:fixed;top:0;left:0;width:100%;height:100%;display:flex;align-items:center;justify-content:center;z-index:1000;padding:16px;box-sizing:border-box}.modal.hidden{display:none!important}.client-announcement-modal-content{max-width:520px;width:92%;max-height:85vh;overflow-y:auto;background:#f8fafc;border:1px solid #e2e8f0;border-radius:12px;padding:25px;box-shadow:0 20px 60px rgba(0,0,0,.22)}.client-announcement-modal-content h2{color:#1e293b;margin-bottom:20px;padding-bottom:10px;border-bottom:2px solid #e2e8f0;font-size:18px;font-weight:600}.client-announcement-modal-content .announcement-display{background:0 0}.client-announcement-modal-content .announcement-display-text{color:#1e293b}.client-announcement-modal-content .modal-buttons{margin-top:20px;padding-top:16px;border-top:1px solid #e2e8f0}.client-announcement-modal-content .modal-buttons .btn-primary{background:linear-gradient(135deg,#6366f1 0,#4f46e5 100%)}.radar-pwd-modal-content{max-width:400px;width:92%}.modal-content{background:#fff;padding:30px;max-width:400px;width:90%;box-shadow:0 12px 40px rgba(0,0,0,.15)}.node-editor-modal-content{max-width:520px}.checkbox-form-row{gap:16px;margin-top:8px}.checkbox-field{display:inline-flex;align-items:center;gap:8px;color:#475569;font-weight:500}.checkbox-field input{width:auto}.modal-content h2{margin-bottom:20px;color:#1e293b}.confirm-modal-content{max-width:520px}#global-confirm-modal[data-type=danger] .confirm-modal-content{border-top:6px solid #ef4444}#global-confirm-modal[data-type=primary] .confirm-modal-content{border-top:6px solid #6366f1}.confirm-modal-message{color:#1e293b;line-height:1.6;margin-bottom:10px}.confirm-modal-detail{color:#dc2626;background:#fef2f2;border:1px solid #fecaca;border-radius:8px;padding:10px 12px;font-size:13px;line-height:1.5;margin-bottom:16px}.confirm-modal-body{display:flex;flex-direction:column;gap:10px;margin-top:12px}.confirm-select-item{display:flex;align-items:center;gap:10px;padding:12px 14px;border:1px solid #e2e8f0;cursor:pointer;transition:background .2s,border-color .2s}.confirm-select-item:hover{background:#f1f5f9;border-color:#94a3b8}.confirm-select-item input{width:16px;height:16px}.confirm-empty{color:#64748b;padding:12px 0;text-align:center}.sync-node-toolbar{display:flex;align-items:center;gap:8px;margin-bottom:10px;flex-wrap:wrap}.sync-selected-count{font-size:13px;color:#475569;margin-left:auto}.sync-node-list{max-height:260px;overflow-y:auto;display:flex;flex-direction:column;gap:6px;padding-right:4px}.modal-buttons{display:flex;gap:10px;margin-top:20px}.modal-buttons .btn{flex:1}.form-control{width:100%;padding:12px;border:2px solid #cbd5e1;font-size:16px}.form-control:focus{outline:0;box-shadow:0 0 0 3px rgba(99,102,241,.1)}.status-expired-key{background:#fee2e2;color:#991b1b}.section-title{user-select:none;display:flex;align-items:center;gap:10px;cursor:pointer}.section-title:hover{color:#6366f1}.toggle-icon{transition:transform .3s;font-size:14px}.section-content.collapsed{display:none}.section-content.collapsed+.toggle-icon{transform:rotate(-90deg)}.radar-list-scrollable{max-height:400px;overflow-y:auto;overflow-x:auto;border:1px solid #e2e8f0}.radar-list-scrollable::-webkit-scrollbar{width:8px;height:8px}.radar-list-scrollable::-webkit-scrollbar-track{background:#f1f5f9;border-radius:4px}.radar-list-scrollable::-webkit-scrollbar-thumb{background:#94a3b8;border-radius:4px}.radar-list-scrollable::-webkit-scrollbar-thumb:hover{background:#64748b}.radar-list-scrollable table{margin:0}.radar-list table{min-width:auto}.radar-table-client{min-width:auto!important}.radar-table-client td:nth-child(2),.radar-table-client th:nth-child(2){padding-left:4px}.radar-list-scrollable thead th{position:sticky;top:0;z-index:10;background:#f1f5f9}.action-buttons{display:flex;gap:5px}.row-action-group{display:inline-flex;align-items:center;gap:8px;flex-wrap:wrap}.application-table .btn-small,.node-status-table .btn-small,.radar-table-admin .btn-small{margin-right:0}.confirm-upload-summary{display:flex;flex-direction:column;gap:8px;padding:4px 0;color:#1e293b;line-height:1.6}.application-table{min-width:auto}.application-table td:first-child,.application-table th:first-child{min-width:210px;white-space:nowrap}.application-table .row-action-group{flex-wrap:nowrap;white-space:nowrap}.upload-progress-modal-content{max-width:420px}.upload-progress-dock{position:fixed;top:14px;right:14px;z-index:12060;width:min(360px,calc(100vw - 28px));pointer-events:none}.upload-progress-dock:not(.hidden){pointer-events:auto}.upload-progress-dock.hidden{display:none!important}.upload-progress-dock-card{background:#fff;border:1px solid #e2e8f0;border-radius:12px;box-shadow:0 14px 40px rgba(15,23,42,.16);padding:14px 16px 16px;pointer-events:auto}.upload-progress-dock.is-collapsed .upload-progress-dock-body{display:none}.upload-progress-dock.is-collapsed .upload-progress-dock-card{padding-bottom:12px}.upload-progress-dock-header{display:flex;align-items:flex-start;justify-content:space-between;gap:10px}.upload-progress-dock-title{margin:0;font-size:14px;font-weight:600;color:#0f172a;line-height:1.45;word-break:break-word;flex:1}.upload-progress-dock-toggle{flex-shrink:0;border:1px solid #cbd5e1;background:#f8fafc;color:#475569;font-size:12px;line-height:1.2;padding:5px 10px;border-radius:6px;cursor:pointer}.upload-progress-dock-toggle:hover{background:#f1f5f9;border-color:#94a3b8}.upload-progress-dock-message{margin:10px 0 0;font-size:13px;color:#64748b;line-height:1.5;word-break:break-word}.upload-progress-bar{width:100%;height:12px;background:#e2e8f0;border-radius:999px;overflow:hidden;margin-top:18px}.upload-progress-fill{width:0;height:100%;background:linear-gradient(135deg,#6366f1 0,#4f46e5 100%);transition:width .2s}.upload-progress-text{margin-top:12px;text-align:right;color:#475569;font-size:14px;font-weight:600}.radar-action-group{display:inline-flex;align-items:center;gap:8px;flex-wrap:nowrap;white-space:nowrap}.radar-status-stack{display:inline-flex;align-items:center;gap:6px;flex-wrap:wrap}.cell-nowrap{white-space:nowrap}.empty-table-tip{text-align:center;color:#64748b;padding:24px 12px}.cell-ellipsis{max-width:240px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.radar-table-admin td:first-child,.radar-table-admin th:first-child{min-width:190px}.radar-table-admin td:nth-child(2),.radar-table-admin td:nth-child(3),.radar-table-admin td:nth-child(4),.radar-table-admin td:nth-child(5),.radar-table-admin td:nth-child(6),.radar-table-admin td:nth-child(8),.radar-table-admin td:nth-child(9),.radar-table-admin th:nth-child(2),.radar-table-admin th:nth-child(3),.radar-table-admin th:nth-child(4),.radar-table-admin th:nth-child(5),.radar-table-admin th:nth-child(6),.radar-table-admin th:nth-child(8),.radar-table-admin th:nth-child(9){white-space:nowrap}.radar-table-admin td:nth-child(7),.radar-table-admin th:nth-child(7){min-width:160px}.radar-table-admin td:nth-child(10),.radar-table-admin th:nth-child(10){min-width:280px}.radar-table-client td:first-child,.radar-table-client th:first-child{padding-right:4px;min-width:260px}.radar-table-client td:nth-child(4),.radar-table-client th:nth-child(4){min-width:160px}.radar-table-client td:nth-child(7),.radar-table-client th:nth-child(7){min-width:190px;white-space:nowrap}.radar-table-client td:nth-child(2),.radar-table-client td:nth-child(3),.radar-table-client td:nth-child(5),.radar-table-client td:nth-child(6),.radar-table-client th:nth-child(2),.radar-table-client th:nth-child(3),.radar-table-client th:nth-child(5),.radar-table-client th:nth-child(6){white-space:nowrap}.pagination-actions .btn:disabled{opacity:.45;cursor:not-allowed;transform:none;box-shadow:none}.two-select-row{display:flex;gap:24px;align-items:flex-start}.two-select-row .form-group-half{flex:1;min-width:0}.two-select-row .form-group-half select:disabled{background:#f1f5f9;color:#94a3b8;cursor:not-allowed}.service-category-select{width:auto;min-width:100px;padding:6px 10px;border:2px solid #cbd5e1;font-size:13px;cursor:pointer}.service-category-select:focus{outline:0}.client-radar-limit-tip{display:block;margin-top:6px;padding:10px 14px;border:1px solid #f59e0b;color:#92400e;font-size:14px;font-weight:500}.announcement-section{margin-bottom:30px}.announcement-editor textarea,.announcement-editor-input{width:100%;padding:10px;border:1px solid #cbd5e1;font-size:14px;resize:vertical;box-sizing:border-box}.announcement-editor-input{min-height:120px;max-height:280px;overflow-y:auto;white-space:pre-wrap;word-break:break-word;line-height:1.6;font-family:'Segoe UI','Microsoft YaHei','PingFang SC','Hiragino Sans GB','Apple Color Emoji','Segoe UI Emoji','Noto Color Emoji',sans-serif}.announcement-symbol-toolbar{display:flex;flex-wrap:wrap;align-items:center;gap:6px;margin-top:8px}.announcement-symbol-toolbar .announcement-editor-label{margin-right:4px}.announcement-symbol-btn{min-width:38px;height:38px;padding:4px 8px;border:1px solid #e2e8f0;font-size:20px;line-height:1;cursor:pointer;font-family:'Apple Color Emoji','Segoe UI Emoji','Noto Color Emoji','Segoe UI Symbol',sans-serif}.announcement-symbol-btn:active{transform:scale(.96)}.announcement-editor-input:empty::before{content:attr(data-placeholder);color:#94a3b8;pointer-events:none}.announcement-editor-input:focus{outline:0;box-shadow:0 0 0 2px rgba(99,102,241,.15)}.announcement-editor-toolbar{display:flex;flex-wrap:wrap;align-items:center;gap:10px;margin-top:10px}.announcement-color-picker{width:44px;min-width:44px;height:36px;padding:2px;border:1px solid var(--lux-line-soft,rgba(255,255,255,.14));border-radius:10px;background:0 0;cursor:pointer;vertical-align:middle}.announcement-color-hex{width:96px!important;min-width:96px;max-width:120px;font-family:'JetBrains Mono',Consolas,monospace}.announcement-editor-label{font-size:13px;color:#475569;white-space:nowrap}.announcement-editor-control{width:auto;min-width:100px}.announcement-image-toolbar{margin-top:8px}.announcement-image-toolbar #save-announcement-btn{margin-left:4px}.announcement-image-name{font-size:13px;color:#64748b}.announcement-preview-image{display:block;max-width:240px;max-height:140px;margin-top:10px;border:1px solid #e2e8f0;object-fit:contain}.announcement-client-preview{margin-top:14px;padding:14px;border:1px dashed #94a3b8}.announcement-preview-caption{font-size:13px;color:#64748b;margin-bottom:10px}.announcement-editor-input .announcement-link{color:#6366f1;text-decoration:underline;word-break:break-all}.announcement-status-text{font-size:13px}.announcement-display{display:flex;gap:16px;align-items:flex-start}.announcement-layout-top{flex-direction:column;align-items:stretch}.announcement-layout-bottom{flex-direction:column-reverse;align-items:stretch}.announcement-layout-left{flex-direction:row;align-items:flex-start}.announcement-layout-right{flex-direction:row-reverse;align-items:flex-start}.announcement-display-text{flex:1;min-width:0;line-height:1.6;word-break:break-word;overflow-wrap:anywhere;white-space:normal;-webkit-text-size-adjust:100%;color:#1e293b;font-family:'Segoe UI','Microsoft YaHei','PingFang SC','Hiragino Sans GB','Apple Color Emoji','Segoe UI Emoji','Noto Color Emoji',sans-serif}.announcement-display-text div,.announcement-display-text p{margin:0 0 8px;white-space:normal}.announcement-display-text div:last-child,.announcement-display-text p:last-child{margin-bottom:0}.announcement-display-image{flex-shrink:0;max-width:280px;max-height:220px;width:auto;height:auto;border:1px solid #e2e8f0;object-fit:contain}.announcement-layout-bottom .announcement-display-image,.announcement-layout-top .announcement-display-image{max-width:100%;align-self:center}.announcement-link{color:#6366f1;text-decoration:underline;cursor:pointer}.announcement-link:hover{color:#4f46e5}.file-deploy-toolbar{display:flex;align-items:center;gap:8px;margin-bottom:10px;flex-wrap:wrap}.file-deploy-badge{display:inline-block;border:1px solid #a7f3d0;border-radius:4px;padding:2px 10px;font-size:13px;font-weight:600;max-width:260px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.file-active-tag{display:inline-block;color:#6366f1;font-size:12px;font-weight:600;padding:4px 8px}#file-deploy-result{margin-top:6px;font-size:13px;line-height:1.8}#file-deploy-result div{padding:2px 0}[data-app-entry=client] .form-control,[data-app-entry=client] .form-group input,[data-app-entry=client] .form-group select{font-size:16px}@media (max-width:768px){[data-app-entry=client] .client-dashboard .dashboard-header{flex-direction:column;align-items:stretch;gap:10px}[data-app-entry=client] .client-dashboard .dashboard-header h1{font-size:20px}[data-app-entry=client] #client-logout-btn{width:100%;min-height:44px}[data-app-entry=client] .card-key-info{width:100%}[data-app-entry=client] .client-dashboard .section>h2,[data-app-entry=client] .client-radar-section h2{font-size:15px;line-height:1.45}[data-app-entry=client] #client-add-radar-form .btn.btn-primary{min-height:44px}[data-app-entry=client] .client-radar-list{max-height:none;overflow-x:visible;border:none;background:0 0;padding:0}[data-app-entry=client] .radar-table-client{min-width:0!important}[data-app-entry=client] .radar-table-client thead{display:none}[data-app-entry=client] .radar-table-client tbody tr{display:block;margin-bottom:14px;padding:14px;border:1px solid #e2e8f0;border-radius:12px;background:#fff;box-shadow:0 2px 8px rgba(0,0,0,.06)}[data-app-entry=client] .radar-table-client tbody td{display:grid;grid-template-columns:92px 1fr;gap:6px 12px;align-items:start;padding:8px 0;border:none;white-space:normal!important;min-width:0!important;text-align:right}[data-app-entry=client] .radar-table-client tbody td::before{content:attr(data-label);font-weight:600;color:#475569;font-size:12px;text-align:left;white-space:nowrap}[data-app-entry=client] .radar-table-client tbody td[data-label="操作"]{display:block;padding-top:12px;margin-top:4px;border-top:1px dashed #e2e8f0;text-align:left}[data-app-entry=client] .radar-table-client tbody td[data-label="操作"]::before{display:block;margin-bottom:10px}[data-app-entry=client] .radar-table-client .radar-action-group{flex-direction:column;align-items:stretch;width:100%;gap:8px}[data-app-entry=client] .radar-table-client .radar-action-group .btn,[data-app-entry=client] .radar-table-client .radar-action-group a.btn{display:flex;align-items:center;justify-content:center;width:100%;min-height:44px;margin:0;text-align:center;text-decoration:none;box-sizing:border-box;line-height:1.2}[data-app-entry=client] .radar-table-client tbody td>.status-badge{justify-self:end;width:fit-content;max-width:100%;white-space:nowrap;padding:4px 10px}.container{padding:10px;max-width:100%}.dashboard-header{flex-direction:column;gap:12px}.header-buttons{flex-wrap:wrap;gap:6px}.section-header-row{flex-direction:column;align-items:flex-start;gap:8px}.section-header-actions{flex-wrap:wrap}.dashboard-content{padding:15px}.section{padding:15px;margin-bottom:16px}.section h2{font-size:16px;margin-bottom:12px}.filter-inline-row{flex-direction:column;align-items:stretch;gap:8px}.filter-control{min-width:auto!important;max-width:none!important;width:100%}.filter-card-key-input{min-width:auto!important;max-width:none!important}.filter-actions{justify-content:flex-start}.filter-actions .btn{flex:1}.radar-list-scrollable{max-height:320px}td,th{padding:10px 8px;font-size:13px}.form-row{flex-direction:column;gap:12px}.form-row .form-group{min-width:auto}.two-select-row{flex-direction:column;gap:12px}.radar-action-group,.row-action-group{flex-wrap:wrap}.modal-content{width:95%;max-width:none;padding:20px}.confirm-modal-content,.node-editor-modal-content{width:95%;max-width:none}.modal-buttons{gap:8px}.file-deploy-toolbar{flex-direction:column;align-items:stretch}#file-target-path{width:100%!important}.toast-item{min-width:auto;max-width:90vw}.mode-cards{grid-template-columns:1fr}.mode-select-container{padding:25px 15px}.generated-keys-list{flex-direction:column}.announcement-display,.announcement-layout-left,.announcement-layout-right{flex-direction:column!important;align-items:stretch!important}.announcement-display-image{max-width:100%;max-height:180px;align-self:center}.client-announcement-modal-content{width:94%;max-width:none;padding:16px}.client-announcement-modal-content .announcement-display-text{font-size:15px!important}.confirm-select-item{padding:10px 12px}}@media (max-width:480px){body{align-items:flex-start;padding-top:6px;overflow-x:hidden}.container{padding:6px}.login-container{padding:20px 16px;border-radius:12px}.mode-select-container{padding:16px 10px}.dashboard-header{padding:14px 18px}.dashboard-header h1{font-size:18px}.dashboard-content{padding:10px}.section{padding:12px 10px;border-radius:8px}.section h2{font-size:15px}.btn{font-size:14px;padding:10px}.btn-small{font-size:12px;padding:4px 8px}td,th{padding:8px 6px;font-size:12px}.modal-content{padding:15px;border-radius:10px}.modal-buttons{flex-direction:column}.modal-buttons .btn{flex:none;width:100%}.toast-container{top:8px;right:8px;left:8px}.toast-item{max-width:none}.mode-card{padding:20px 12px}.card-key-info{flex-direction:column;gap:8px;align-items:flex-start}.file-deploy-badge{max-width:180px;font-size:12px}.announcement-editor textarea,.announcement-editor-input{max-width:100%}.announcement-editor-control{min-width:88px}.confirm-select-item{padding:8px 10px}.sync-node-toolbar{flex-wrap:wrap;gap:6px}[data-app-entry=client] .client-login-container{margin-top:8px}[data-app-entry=client] .client-dashboard .section>h2,[data-app-entry=client] .client-radar-section h2{font-size:14px}[data-app-entry=client] .radar-table-client tbody tr{padding:12px}[data-app-entry=client] .radar-table-client tbody td{grid-template-columns:80px 1fr}[data-app-entry=client] .radar-table-client tbody td>.status-badge{justify-self:end}}:root{--lux-bg:#030304;--lux-bg-soft:#080809;--lux-panel:rgba(16, 16, 18, 0.94);--lux-panel-soft:rgba(25, 25, 28, 0.82);--lux-panel-lift:rgba(31, 30, 31, 0.88);--lux-line:rgba(218, 197, 152, 0.18);--lux-line-soft:rgba(255, 255, 255, 0.08);--lux-text:#f3eee5;--lux-muted:#a19a8f;--lux-muted-2:#756f67;--lux-gold:#d8bd7f;--lux-gold-2:#f2d99a;--lux-green:#9eb890;--lux-red:#c87569;--lux-blue:#9ba9c8;--lux-shadow:0 22px 70px rgba(0, 0, 0, 0.48),inset 0 1px 0 rgba(255,255,255,0.04);--lux-shadow-soft:0 12px 36px rgba(0, 0, 0, 0.32),inset 0 1px 0 rgba(255,255,255,0.035)}html{background:var(--lux-bg)}body{color:var(--lux-text);background:radial-gradient(circle at 12% 8%,rgba(216,189,127,.1),transparent 28%),radial-gradient(circle at 88% 14%,rgba(120,130,96,.12),transparent 26%),linear-gradient(180deg,#080808 0,var(--lux-bg) 45%,#050505 100%);align-items:flex-start}body::before{content:"";position:fixed;inset:0;pointer-events:none;background:linear-gradient(90deg,rgba(255,255,255,.035) 1px,transparent 1px),linear-gradient(180deg,rgba(255,255,255,.026) 1px,transparent 1px);background-size:72px 72px;mask-image:linear-gradient(180deg,rgba(0,0,0,0.24),transparent 65%)}.container{max-width:1480px;padding:clamp(14px,3vw,42px)}.dashboard,.login-container,.modal-content,.mode-select-container{color:var(--lux-text);background:linear-gradient(180deg,rgba(18,18,20,.96),rgba(10,10,12,.94));border:1px solid var(--lux-line);border-radius:28px;box-shadow:var(--lux-shadow)}.login-container,.mode-select-container{margin-top:clamp(18px,8vh,90px)}.dashboard-header h1,.login-container h1,.modal-content h2,.mode-select-container h1,.section h2{color:var(--lux-text);letter-spacing:-.03em;font-weight:560}.announcement-editor-label,.announcement-image-name,.announcement-preview-caption,.confirm-modal-detail,.confirm-modal-message,.form-group label,.mode-card p,.pagination-page-info,.pagination-summary,.subtitle{color:var(--lux-muted)}.mode-card{color:var(--lux-text);background:rgba(255,255,255,.026);border:1px solid var(--lux-line-soft);border-radius:24px;box-shadow:var(--lux-shadow-soft)}.mode-card:hover{border-color:rgba(216,189,127,.34);background:rgba(216,189,127,.06);box-shadow:var(--lux-shadow)}.admin-card:hover,.client-card:hover{border-color:rgba(216,189,127,.34);background:rgba(216,189,127,.06)}.card-footer{border-top-color:var(--lux-line-soft)}.admin-card .card-footer,.client-card .card-footer{color:var(--lux-gold)}.dashboard{overflow:hidden}.dashboard-header{background:radial-gradient(circle at 18% 0,rgba(216,189,127,.16),transparent 42%),linear-gradient(135deg,rgba(18,18,21,.98),rgba(5,5,6,.98));border-bottom:1px solid var(--lux-line);box-shadow:none;padding:26px 34px}.card-key-info{background:rgba(255,255,255,.035);border:1px solid var(--lux-line-soft);border-radius:999px;padding:8px 14px;color:var(--lux-muted)}.dashboard-content{background:0 0;padding:clamp(18px,2.7vw,34px)}.announcement-client-preview,.confirm-select-item,.filter-toolbar,.generated-keys,.section,.sync-node-list,.sync-node-result,.upload-progress-modal-content{background:rgba(255,255,255,.026);border:1px solid var(--lux-line-soft);border-radius:22px;box-shadow:var(--lux-shadow-soft)}.section{padding:clamp(18px,2.4vw,30px);margin-bottom:24px;overflow:hidden}.section h2{border-bottom:1px solid var(--lux-line-soft);padding-bottom:14px;margin-bottom:20px}.filter-toolbar{padding:14px}.announcement-editor textarea,.announcement-editor-input,.form-control,.form-group input,.form-group select,.service-category-select{color:var(--lux-text);background:rgba(5,5,6,.86);border:1px solid var(--lux-line-soft);border-radius:15px;transition:border-color .2s,box-shadow .2s,background .2s}.announcement-editor-input:empty::before,.form-control::placeholder,.form-group input::placeholder{color:var(--lux-muted-2)}.announcement-editor-input:focus,.form-control:focus,.form-group input:focus,.form-group select:focus,.service-category-select:focus{border-color:rgba(216,189,127,.52);box-shadow:0 0 0 3px rgba(216,189,127,.12);background:rgba(8,8,9,.96)}.btn{border-radius:15px;border:1px solid transparent;box-shadow:none}.btn-primary{color:#1a1408;background:linear-gradient(135deg,var(--lux-gold-2),var(--lux-gold));border-color:rgba(255,229,171,.18)}.btn-primary:hover{transform:translateY(-1px);box-shadow:0 12px 30px rgba(216,189,127,.22)}.btn-secondary{color:var(--lux-text);background:rgba(255,255,255,.06);border-color:var(--lux-line-soft)}.btn-secondary:hover{background:rgba(255,255,255,.1);transform:translateY(-1px)}.btn-success{color:#071007;background:linear-gradient(135deg,#cfe2c6,var(--lux-green));border-color:rgba(158,184,144,.24)}.btn-warning{color:#1a1408;background:linear-gradient(135deg,#f2d99a,#b79555);border-color:rgba(216,189,127,.2)}.btn-danger{color:#fff0ee;background:linear-gradient(135deg,#b7685e,#7b3d38);border-color:rgba(200,117,105,.25)}.btn-danger:hover,.btn-success:hover,.btn-warning:hover{transform:translateY(-1px);filter:brightness(1.05)}.btn:disabled,.btn[disabled]{opacity:.48;cursor:not-allowed;transform:none!important;filter:none!important}.radar-list,.radar-list-scrollable{border-radius:18px;background:rgba(0,0,0,.15)}th{background:0 0;color:var(--lux-muted);border-bottom:none;font-weight:500}td{color:var(--lux-text);background:rgba(255,255,255,.028);border-top:1px solid var(--lux-line-soft);border-bottom:1px solid var(--lux-line-soft)}td:first-child{border-left:1px solid var(--lux-line-soft);border-radius:16px 0 0 16px}td:last-child{border-right:1px solid var(--lux-line-soft);border-radius:0 16px 16px 0}tr:hover{background:0 0}tr:hover td{background:rgba(216,189,127,.055);border-color:rgba(216,189,127,.16)}.generated-key-item,td code{color:var(--lux-gold-2);background:rgba(216,189,127,.09);border:1px solid rgba(216,189,127,.14);border-radius:10px}.status-active,.status-online,.status-running{color:#d9efd1;background:rgba(158,184,144,.14);border:1px solid rgba(158,184,144,.22)}.status-inactive,.status-offline,.status-stopped{color:#c9c0b4;background:rgba(255,255,255,.055);border:1px solid var(--lux-line-soft)}.status-error,.status-expired,.status-missing{color:#f0b5ad;background:rgba(200,117,105,.13);border:1px solid rgba(200,117,105,.22)}.status-node-offline,.status-pending,.status-starting{color:var(--lux-gold-2);background:rgba(216,189,127,.13);border:1px solid rgba(216,189,127,.22)}.header-buttons,.modal-buttons,.pagination-actions,.radar-action-group,.row-action-group{gap:9px}.modal{background:rgba(0,0,0,.72);backdrop-filter:blur(10px)}.modal-content{border-radius:26px}.toast-item{background:rgba(16,16,18,.96);border:1px solid var(--lux-line);color:var(--lux-text);box-shadow:var(--lux-shadow-soft);position:relative;min-width:min(420px,calc(100vw - 40px));max-width:min(520px,calc(100vw - 40px));padding:22px 26px 22px 28px;overflow:hidden;border-radius:24px;background:radial-gradient(circle at 18% 0,rgba(216,189,127,.16),transparent 36%),rgba(13,13,15,.96);border:1px solid rgba(216,189,127,.22);color:var(--lux-text);box-shadow:0 28px 80px rgba(0,0,0,.55),inset 0 1px 0 rgba(255,255,255,.06);transform:translateY(12px) scale(.96);opacity:0;backdrop-filter:blur(14px);transition:transform .28s,opacity .28s}.toast-container{align-items:flex-end}.toast-item::before{content:"";position:absolute;left:0;top:18px;bottom:18px;width:4px;border-radius:0 999px 999px 0;background:var(--lux-gold)}.toast-item.show{transform:translateY(0) scale(1);opacity:1}.toast-item.hide{transform:translateY(-8px) scale(.98);opacity:0}.toast-item.toast-success::before{background:var(--lux-green)}.toast-item.toast-error::before{background:var(--lux-red)}.toast-item.toast-warning::before{background:var(--lux-gold)}.toast-item.toast-info::before{background:var(--lux-blue)}.toast-item.toast-error,.toast-item.toast-info,.toast-item.toast-success,.toast-item.toast-warning{background:radial-gradient(circle at 18% 0,rgba(216,189,127,.16),transparent 36%),rgba(13,13,15,.96)}.toast-title{color:var(--lux-gold-2);font-size:16px;font-weight:650;letter-spacing:.04em}.toast-message{color:var(--lux-text);font-size:15px}.node-status-hover-card{background:rgba(16,16,18,.97);color:var(--lux-text);border-color:var(--lux-line);box-shadow:var(--lux-shadow)}.announcement-symbol-btn{color:var(--lux-text);background:rgba(255,255,255,.04);border-color:var(--lux-line-soft);border-radius:14px}.announcement-symbol-btn:active{background:rgba(216,189,127,.12)}.announcement-display-text,.announcement-display-text div,.announcement-display-text p{color:var(--lux-text)}.announcement-display-image,.announcement-preview-image{background:rgba(0,0,0,.18);border-color:var(--lux-line-soft);border-radius:16px}.announcement-editor-input .announcement-link,.announcement-link{color:var(--lux-gold-2)}.file-deploy-badge,.file-row-active{color:#d9efd1;background:rgba(158,184,144,.13);border-color:rgba(158,184,144,.22)}.file-active-tag{color:var(--lux-gold-2)}.client-radar-limit-tip{color:var(--lux-gold-2);background:rgba(216,189,127,.1);border-color:rgba(216,189,127,.22);border-radius:15px}.top-status-bar{background:rgba(12,12,13,.96);color:var(--lux-text);border-bottom:1px solid var(--lux-line)}@media (max-width:768px){.dashboard{border-radius:24px}.dashboard-header{padding:18px}.section{border-radius:20px}[data-app-entry=client] .radar-table-client tbody tr{border-color:var(--lux-line-soft);border-radius:20px;background:rgba(255,255,255,.03);box-shadow:var(--lux-shadow-soft)}[data-app-entry=client] .radar-table-client tbody td{color:var(--lux-text)}[data-app-entry=client] .radar-table-client tbody td::before{color:var(--lux-muted)}[data-app-entry=client] .radar-table-client tbody td[data-label="操作"]{border-top-color:var(--lux-line-soft)}[data-app-entry=client] .radar-table-client .radar-action-group{display:grid;grid-template-columns:repeat(2,minmax(0,1fr))}[data-app-entry=client] .radar-table-client .radar-action-group .btn,[data-app-entry=client] .radar-table-client .radar-action-group a.btn{border-radius:14px}}@media (max-width:480px){.container{padding:8px}.dashboard,.login-container,.modal-content,.mode-select-container{border-radius:20px}.section{padding:14px 12px;border-radius:18px}[data-app-entry=client] .radar-table-client .radar-action-group{grid-template-columns:1fr}}[data-app-entry=admin] .dashboard,[data-app-entry=client] .dashboard{width:100%;max-width:1440px;margin:0 auto}[data-app-entry=admin] .dashboard{display:grid;grid-template-columns:238px minmax(0,1fr);align-items:start}[data-app-entry=admin] .dashboard-header,[data-app-entry=client] .dashboard-header{min-height:112px;align-items:center}[data-app-entry=admin] .dashboard-header{grid-column:1/-1}[data-app-entry=admin] .dashboard-header h1,[data-app-entry=client] .dashboard-header h1{font-size:clamp(24px, 3vw, 36px);font-weight:520}[data-app-entry=admin] .dashboard-content{grid-column:2;display:grid;grid-template-columns:minmax(0,1fr);gap:22px;align-items:start}[data-app-entry=admin] .dashboard-content::before{content:none}.dashboard-sidebar{grid-column:1;position:sticky;top:24px;align-self:stretch;min-height:calc(100% - 56px);margin:28px 0 28px 28px;padding:26px 18px;color:var(--lux-muted);border:1px solid var(--lux-line-soft);border-radius:28px;background:rgba(255,255,255,.024);box-shadow:var(--lux-shadow-soft)}.dashboard-sidebar-brand{color:var(--lux-text);font-size:24px;font-weight:520;letter-spacing:-.03em;padding:8px 14px 26px}.dashboard-sidebar-item{display:block;color:var(--lux-muted);text-decoration:none;padding:16px;border-radius:18px;margin-bottom:8px;font-size:17px;font-weight:560}.dashboard-sidebar-item.is-active,.dashboard-sidebar-item:hover{color:var(--lux-text);background:rgba(216,189,127,.1);border:1px solid rgba(216,189,127,.18)}.admin-section-hidden{display:none!important}[data-app-entry=admin] .dashboard-content>.section{grid-column:1;margin-bottom:0}[data-app-entry=admin] .dashboard-content>.section:first-of-type::before,[data-app-entry=admin] .dashboard-content>.section:nth-of-type(2)::before,[data-app-entry=admin] .dashboard-content>.section:nth-of-type(3)::before{display:inline-flex;min-height:28px;align-items:center;padding:0 12px;margin-bottom:14px;border-radius:999px;color:var(--lux-gold-2);border:1px solid rgba(216,189,127,.22);background:rgba(216,189,127,.08);font-size:12px}[data-app-entry=admin] .dashboard-content>.section:first-of-type::before{content:"核心操作"}[data-app-entry=admin] .dashboard-content>.section:nth-of-type(2)::before{content:"节点管理"}[data-app-entry=admin] .dashboard-content>.section:nth-of-type(3)::before{content:"运行态监控"}[data-app-entry=admin] .section{border-radius:28px}[data-app-entry=admin] .section h2,[data-app-entry=client] .section h2{font-size:clamp(18px, 1.8vw, 24px)}[data-app-entry=admin] .file-deploy-toolbar,[data-app-entry=admin] .filter-inline-row,[data-app-entry=admin] .form-row,[data-app-entry=client] .form-row{gap:14px}[data-app-entry=client] .dashboard-content{display:grid;grid-template-columns:minmax(320px,0.9fr) minmax(0,1.1fr);gap:22px;align-items:start}[data-app-entry=client] .dashboard-content>.section{margin-bottom:0}[data-app-entry=client] .client-radar-section{min-height:100%}[data-app-entry=client] #client-add-radar-form{display:block}[data-app-entry=client] .two-select-row{display:grid;grid-template-columns:1fr;gap:14px}[data-app-entry=client] .client-radar-list{border:0;background:0 0;max-height:none;overflow:visible}[data-app-entry=client] .radar-table-client{border-collapse:separate;border-spacing:0 12px}[data-app-entry=client] .radar-table-client td{background:rgba(255,255,255,.032)}@media (min-width:769px){[data-app-entry=client] .client-radar-list{overflow-x:visible;overflow-y:visible;max-height:none;padding:0}[data-app-entry=client] .radar-table-client{display:block;width:100%;min-width:0!important;border-spacing:0}[data-app-entry=client] .radar-table-client thead{display:none}[data-app-entry=client] .radar-table-client tbody{display:grid;grid-template-columns:minmax(0,1fr);gap:18px}[data-app-entry=client] .radar-table-client tbody tr{display:block;width:100%;min-width:0;padding:22px 24px;border:1px solid var(--lux-line-soft);border-radius:24px;background:radial-gradient(circle at 8% 0,rgba(216,189,127,.08),transparent 32%),rgba(255,255,255,.034);box-shadow:0 18px 46px rgba(0,0,0,.34),inset 0 1px 0 rgba(255,255,255,.045)}[data-app-entry=client] .radar-table-client tbody td{display:grid;grid-template-columns:118px minmax(0,1fr);gap:16px;align-items:center;min-width:0!important;padding:10px 0;border:0;color:var(--lux-text);font-size:16px;line-height:1.5;text-align:left;white-space:normal!important;background:0 0}[data-app-entry=client] .radar-table-client tbody td::before{content:attr(data-label);color:var(--lux-muted);font-size:13px;line-height:1.5;text-align:left;white-space:nowrap}[data-app-entry=client] .radar-table-client tbody td[data-label="IP地址"],[data-app-entry=client] .radar-table-client tbody td[data-label="Web端口"],[data-app-entry=client] .radar-table-client tbody td[data-label="雷达端口"]{padding:13px 14px;margin-bottom:8px;border:1px solid rgba(255,255,255,.06);border-radius:18px;color:var(--lux-text);background:rgba(0,0,0,.22);font-size:20px;font-weight:650;letter-spacing:.01em}[data-app-entry=client] .radar-table-client tbody td[data-label="IP地址"]::before,[data-app-entry=client] .radar-table-client tbody td[data-label="Web端口"]::before,[data-app-entry=client] .radar-table-client tbody td[data-label="雷达端口"]::before{color:var(--lux-gold-2);font-size:16px;font-weight:650}[data-app-entry=client] .radar-table-client tbody td[data-label="应用名称"]{padding-top:4px;color:var(--lux-gold-2);font-size:18px;font-weight:650}[data-app-entry=client] .radar-table-client tbody td[data-label="状态"]>.status-badge{justify-self:start}[data-app-entry=client] .radar-table-client tbody td[data-label="操作"]{display:block;padding-top:16px;margin-top:10px;border-top:1px dashed var(--lux-line-soft);text-align:left}[data-app-entry=client] .radar-table-client tbody td[data-label="操作"]::before{display:block;margin-bottom:10px}[data-app-entry=client] .radar-table-client .radar-action-group{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;width:100%}[data-app-entry=client] .radar-table-client .radar-action-group .btn,[data-app-entry=client] .radar-table-client .radar-action-group a.btn{width:100%;min-height:42px;margin:0;border-radius:14px;font-size:14px;text-align:center}}.login-container{position:relative;max-width:560px;padding:clamp(34px,5vw,58px);margin-top:clamp(34px,10vh,108px);overflow:hidden}.login-container::before{display:block;margin-bottom:18px;color:var(--lux-gold);font-size:12px;letter-spacing:.28em;text-transform:uppercase}[data-app-entry=admin] .login-container::before{content:"ADMIN ACCESS"}[data-app-entry=client] .login-container::before{content:"CLIENT ACCESS"}.login-container::after{content:"";position:absolute;inset:0;pointer-events:none;background:radial-gradient(circle at 18% 0,rgba(216,189,127,.14),transparent 36%),linear-gradient(135deg,rgba(255,255,255,.075),transparent 30%,transparent 70%,rgba(216,189,127,.05))}.login-container>*{position:relative;z-index:1}.login-container h1{margin:0;color:var(--lux-text);font-size:clamp(34px, 5vw, 52px);line-height:1.04;font-weight:520;letter-spacing:-.06em}.login-subtitle{margin:16px 0 34px;color:var(--lux-muted);font-size:15px;line-height:1.8}.login-container .form-group{margin-bottom:22px}.login-container .form-group label{margin-bottom:10px;color:var(--lux-muted);font-size:14px;letter-spacing:.08em}.login-container .form-group input{height:58px;padding:0 18px;border-radius:18px;font-size:17px}.login-container .btn{min-height:62px;border-radius:18px;margin-top:4px;font-size:17px;letter-spacing:.08em}[data-app-entry=client] .login-container .btn-primary,[data-app-entry=client] .login-container .btn-success{color:#071007;background:linear-gradient(135deg,#d8ebd0,var(--lux-green));border-color:rgba(158,184,144,.26)}[data-app-entry=client] .login-container{border-color:rgba(158,184,144,.2)}.toast-container{top:24px!important;right:24px!important;bottom:auto!important;left:auto!important;width:auto;transform:none}@media (max-width:768px){.toast-container{top:12px!important;right:12px!important;left:12px!important;width:auto!important;max-width:calc(100vw - 24px);transform:none}.toast-item{min-width:min(320px,calc(100vw - 28px));max-width:calc(100vw - 28px)!important;padding:20px 22px 20px 24px;border-radius:22px}.toast-title{font-size:15px}.toast-message{font-size:14px}}.mode-select-container{max-width:980px}.mode-card{min-height:230px}.mode-card h2{color:var(--lux-text);font-weight:520}.dashboard,.filter-inline-row,.form-row,.section{min-width:0}.file-deploy-toolbar .btn,.filter-toolbar .btn,.header-buttons .btn,.modal-buttons .btn,.section .btn{text-align:center;white-space:nowrap}#client-add-radar-form>.btn,#generate-card-keys-btn{display:flex;align-items:center;justify-content:center}.radar-list,.radar-list-scrollable{max-width:100%}@media (max-width:640px){[data-app-entry=admin] .dashboard{display:block}[data-app-entry=admin] .dashboard-content,[data-app-entry=client] .dashboard-content{grid-template-columns:1fr}[data-app-entry=admin] .dashboard-content>.section{grid-column:1}.dashboard{max-width:calc(100vw - 24px)}}@media (max-width:768px){[data-app-entry=admin] .dashboard{display:block}[data-app-entry=admin] .dashboard-header{grid-column:auto}[data-app-entry=admin] .dashboard-content{grid-column:auto;display:block;padding:12px 0 0}[data-app-entry=admin] .dashboard-sidebar{display:flex;flex-direction:row;flex-wrap:nowrap;align-items:center;gap:8px;overflow-x:auto;overflow-y:hidden;-webkit-overflow-scrolling:touch;position:static;top:auto;align-self:auto;min-height:auto;margin:0 0 16px;padding:12px 14px;border-radius:20px;scrollbar-width:thin}[data-app-entry=admin] .dashboard-sidebar-brand{display:none}[data-app-entry=admin] .dashboard-sidebar-item{flex:0 0 auto;margin-bottom:0;padding:10px 16px;font-size:14px;white-space:nowrap}[data-app-entry=admin] .dashboard-header,[data-app-entry=client] .dashboard-header{min-height:auto}[data-app-entry=client] .dashboard-content{display:block}[data-app-entry=client] .dashboard-content>.section{margin-bottom:18px}[data-app-entry=client] .radar-table-client,[data-app-entry=client] .radar-table-client tbody,[data-app-entry=client] .radar-table-client td,[data-app-entry=client] .radar-table-client tr{display:block}[data-app-entry=admin] .radar-list,[data-app-entry=admin] .radar-list-scrollable{overflow-x:auto}}[data-app-entry=admin] .node-status-list-wrapper,[data-app-entry=admin] .radar-list-scrollable{max-height:none!important;overflow-y:visible!important;background:radial-gradient(circle at 8% 0,rgba(216,189,127,.08),transparent 34%),rgba(255,255,255,.026)!important;border:1px solid var(--lux-line-soft)!important;border-radius:22px;box-shadow:inset 0 1px 0 rgba(255,255,255,.035)}[data-app-entry=admin] .radar-list-scrollable{overflow-x:visible!important}[data-app-entry=admin] .application-table,[data-app-entry=admin] .node-status-table,[data-app-entry=admin] .radar-list-scrollable table{width:100%;min-width:0;margin:0;border-collapse:separate;border-spacing:0;background:0 0}[data-app-entry=admin] .application-table td,[data-app-entry=admin] .application-table th,[data-app-entry=admin] .node-status-table td,[data-app-entry=admin] .node-status-table th,[data-app-entry=admin] .radar-list-scrollable td,[data-app-entry=admin] .radar-list-scrollable th{background:0 0!important;border-bottom:1px solid var(--lux-line-soft);color:var(--lux-text)}[data-app-entry=admin] .application-table thead th,[data-app-entry=admin] .node-status-table thead th,[data-app-entry=admin] .radar-list-scrollable thead th{position:static;color:var(--lux-gold-2);background:rgba(216,189,127,.075)!important;font-size:13px;letter-spacing:.04em}[data-app-entry=admin] .application-table tbody tr:hover,[data-app-entry=admin] .file-row-active,[data-app-entry=admin] .node-status-table tbody tr:hover,[data-app-entry=admin] .radar-list-scrollable tbody tr:hover{background:rgba(216,189,127,.075)!important}[data-app-entry=admin] .application-table code,[data-app-entry=admin] .node-status-table code,[data-app-entry=admin] .radar-list-scrollable code{color:var(--lux-gold-2);background:rgba(0,0,0,.22);border:1px solid var(--lux-line-soft);border-radius:10px;padding:3px 7px}[data-app-entry=admin] .file-active-tag,[data-app-entry=admin] .file-deploy-badge,[data-app-entry=admin] .node-total-remaining-summary{color:var(--lux-gold-2);background:rgba(216,189,127,.1);border:1px solid rgba(216,189,127,.2);border-radius:999px}[data-app-entry=admin] .node-total-remaining-summary{display:inline-flex;align-items:center;padding:8px 14px;font-size:14px;font-weight:600;white-space:nowrap}[data-app-entry=admin] #card-keys-table-body,[data-app-entry=admin] #node-status-table-body,[data-app-entry=admin] #service-table-body,[data-app-entry=admin] #staged-files-table-body,[data-app-entry=admin] table:has(#card-keys-table-body),[data-app-entry=admin] table:has(#card-keys-table-body) thead,[data-app-entry=admin] table:has(#node-status-table-body),[data-app-entry=admin] table:has(#node-status-table-body) thead,[data-app-entry=admin] table:has(#service-table-body),[data-app-entry=admin] table:has(#service-table-body) thead,[data-app-entry=admin] table:has(#staged-files-table-body),[data-app-entry=admin] table:has(#staged-files-table-body) thead{display:block}[data-app-entry=admin] table:has(#card-keys-table-body) thead,[data-app-entry=admin] table:has(#node-status-table-body) thead,[data-app-entry=admin] table:has(#service-table-body) thead,[data-app-entry=admin] table:has(#staged-files-table-body) thead{display:none}[data-app-entry=admin] #card-keys-table-body tr,[data-app-entry=admin] #node-status-table-body tr,[data-app-entry=admin] #service-table-body tr,[data-app-entry=admin] #staged-files-table-body tr{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px 16px;width:100%;padding:14px 16px;margin-bottom:12px;border:1px solid var(--lux-line-soft);border-radius:20px;background:radial-gradient(circle at 8% 0,rgba(216,189,127,.08),transparent 34%),rgba(0,0,0,.18)!important}[data-app-entry=admin] #card-keys-table-body td,[data-app-entry=admin] #node-status-table-body td,[data-app-entry=admin] #service-table-body td,[data-app-entry=admin] #staged-files-table-body td{display:grid;grid-template-columns:92px minmax(0,1fr);gap:12px;align-items:center;min-width:0!important;padding:7px 0;border:0;white-space:normal;overflow-wrap:anywhere;word-break:break-word}[data-app-entry=admin] #service-table-body td{grid-template-columns:88px minmax(0,1fr)}[data-app-entry=admin] #card-keys-table-body td{grid-template-columns:98px minmax(0,1fr)}[data-app-entry=admin] #card-keys-table-body td:first-child code{display:inline-block;color:var(--lux-gold-2);font-size:20px;font-weight:700;letter-spacing:.04em}[data-app-entry=admin] #card-keys-table-body td:nth-child(2){justify-items:start;align-items:center}[data-app-entry=admin] #card-keys-table-body td .status-badge{display:inline-flex;align-items:center;justify-content:center;width:fit-content;max-width:100%;white-space:nowrap;justify-self:start}[data-app-entry=admin] #card-keys-table-body td::before,[data-app-entry=admin] #node-status-table-body td::before,[data-app-entry=admin] #service-table-body td::before,[data-app-entry=admin] #staged-files-table-body td::before{color:var(--lux-muted);font-size:12px;white-space:nowrap}[data-app-entry=admin] #node-status-table-body td:first-child::before{content:"操作";content:"操作";visibility:visible}[data-app-entry=admin] #node-status-table-body td:nth-child(2)::before{content:"节点"}[data-app-entry=admin] #node-status-table-body td:nth-child(3)::before{content:"地址"}[data-app-entry=admin] #node-status-table-body td:nth-child(4)::before{content:"节点状态"}[data-app-entry=admin] #node-status-table-body td:nth-child(5)::before{content:"雷达容量"}[data-app-entry=admin] #node-status-table-body td:nth-child(6)::before{content:"应用摘要"}[data-app-entry=admin] #node-status-table-body td:nth-child(7)::before{content:"最近检查"}[data-app-entry=admin] #node-status-table-body tr{grid-template-columns:minmax(0,1fr) minmax(0,1fr);grid-template-rows:auto auto auto;gap:12px 18px;padding:18px 18px 14px;align-items:start}[data-app-entry=admin] #node-status-table-body td{font-size:17px;grid-template-columns:88px minmax(0,1fr);gap:12px;padding:8px 0;align-items:center;min-width:0}[data-app-entry=admin] #node-status-table-body td::before{font-size:14px;font-weight:600}[data-app-entry=admin] #node-status-table-body td:nth-child(2){grid-column:1;grid-row:1;font-size:20px;font-weight:700;color:var(--lux-text,#eceae6)}[data-app-entry=admin] #node-status-table-body td:nth-child(3){grid-column:1;grid-row:2;font-size:18px}[data-app-entry=admin] #node-status-table-body td:nth-child(5){grid-column:1;grid-row:3}[data-app-entry=admin] #node-status-table-body td:nth-child(4){grid-column:2;grid-row:1}[data-app-entry=admin] #node-status-table-body td:nth-child(6){grid-column:2;grid-row:2}[data-app-entry=admin] #node-status-table-body td:nth-child(7){display:none!important}[data-app-entry=admin] #node-status-table-body td:first-child{grid-column:2;grid-row:3;align-items:start;padding-top:4px}[data-app-entry=admin] #node-status-table-body td:first-child .row-action-group{grid-column:2;align-self:start}[data-app-entry=admin] #node-status-table-body .row-action-group{display:flex;flex-wrap:wrap;justify-content:flex-start;width:100%}[data-app-entry=admin] #node-status-table-body .row-action-group .btn,[data-app-entry=admin] #node-status-table-body .row-action-group .btn-small{font-size:15px;padding:10px 16px;min-height:42px}[data-app-entry=admin] #node-status-table-body .status-badge{font-size:14px;padding:6px 12px}[data-app-entry=admin] #node-status-table-body .node-capacity-value{display:inline-flex;align-items:center;flex-wrap:nowrap;gap:8px}[data-app-entry=admin] #node-status-table-body .node-capacity-count{font-size:18px}[data-app-entry=admin] #node-status-table-body td:nth-child(5) .status-badge{width:fit-content;max-width:none;justify-self:auto}[data-app-entry=admin] #card-keys-table-body td:first-child::before{content:"卡密"}[data-app-entry=admin] #card-keys-table-body td:nth-child(2)::before{content:"状态"}[data-app-entry=admin] #card-keys-table-body td:nth-child(3)::before{content:"激活时间"}[data-app-entry=admin] #card-keys-table-body td:nth-child(4)::before{content:"到期时间"}[data-app-entry=admin] #card-keys-table-body td:nth-child(5)::before{content:"剩余"}[data-app-entry=admin] #card-keys-table-body td:nth-child(6)::before{content:"操作"}[data-app-entry=admin] #card-keys-table-body td .card-status-badges{display:inline-flex;align-items:center;gap:8px;flex-wrap:wrap}[data-app-entry=admin] #service-table-body td:first-child::before,[data-app-entry=admin] #staged-files-table-body td:nth-child(4)::before{content:"操作"}[data-app-entry=admin] #service-table-body td:nth-child(2)::before{content:"应用名称"}[data-app-entry=admin] #service-table-body td:nth-child(3)::before{content:"运行方式"}[data-app-entry=admin] #service-table-body td:nth-child(4)::before{content:"分类"}[data-app-entry=admin] #service-table-body td:nth-child(5)::before{content:"状态"}[data-app-entry=admin] #service-table-body td:nth-child(6)::before{content:"MD5"}[data-app-entry=admin] #service-table-body td:nth-child(7)::before,[data-app-entry=admin] #staged-files-table-body td:nth-child(2)::before{content:"大小"}[data-app-entry=admin] #service-table-body td:nth-child(8)::before{content:"更新时间"}[data-app-entry=admin] #staged-files-table-body td:first-child::before{content:"文件名"}[data-app-entry=admin] #staged-files-table-body td:nth-child(3)::before{content:"修改时间"}[data-app-entry=admin] #card-keys-table-body .action-buttons,[data-app-entry=admin] #node-status-table-body .row-action-group,[data-app-entry=admin] #service-table-body .row-action-group,[data-app-entry=admin] #staged-files-table-body td:last-child{display:flex;flex-wrap:wrap;gap:8px}[data-app-entry=admin] #card-keys-table-body .empty-table-tip,[data-app-entry=admin] #staged-files-table-body .empty-table-tip{display:block;grid-column:1/-1;text-align:center}[data-app-entry=admin] #card-keys-table-body .empty-table-tip::before,[data-app-entry=admin] #staged-files-table-body .empty-table-tip::before{content:none}[data-app-entry=admin] .generated-keys{background:radial-gradient(circle at 8% 0,rgba(158,184,144,.1),transparent 34%),rgba(255,255,255,.026);border:1px solid var(--lux-line-soft);border-radius:22px;box-shadow:inset 0 1px 0 rgba(255,255,255,.035)}[data-app-entry=admin] .generated-keys h3{color:var(--lux-gold-2)}[data-app-entry=admin] .generated-keys-list{gap:10px}[data-app-entry=admin] .key-item{color:var(--lux-text);background:rgba(0,0,0,.22);border:1px solid var(--lux-line-soft);border-radius:14px}[data-app-entry=admin] .key-item:hover{color:var(--lux-gold-2);background:rgba(216,189,127,.1)}[data-app-entry=admin] .key-item-block{color:var(--lux-gold-2);font-size:15px;line-height:1.9}[data-app-entry=admin] .table-pagination{padding:12px 14px;border:1px solid var(--lux-line-soft);border-radius:18px;background:rgba(255,255,255,.026)}[data-app-entry=admin] .pagination-page-info,[data-app-entry=admin] .pagination-summary{color:var(--lux-muted);font-size:14px}@media (max-width:900px){[data-app-entry=admin] #card-keys-table-body tr,[data-app-entry=admin] #service-table-body tr,[data-app-entry=admin] #staged-files-table-body tr{grid-template-columns:1fr}[data-app-entry=admin] #node-status-table-body tr{grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:10px 12px}[data-app-entry=admin] #node-status-table-body td{grid-template-columns:76px minmax(0,1fr);font-size:16px}[data-app-entry=admin] #node-status-table-body td:nth-child(2){font-size:19px}[data-app-entry=admin] #node-status-table-body td::before{font-size:13px}[data-app-entry=admin] #node-status-table-body .row-action-group .btn,[data-app-entry=admin] #node-status-table-body .row-action-group .btn-small{flex:1 1 calc(50% - 4px);min-width:calc(50% - 4px);font-size:14px;padding:8px 10px;min-height:38px}}@media (max-width:560px){[data-app-entry=admin] #node-status-table-body tr{grid-template-columns:1fr;grid-template-rows:none}[data-app-entry=admin] #node-status-table-body td:first-child,[data-app-entry=admin] #node-status-table-body td:nth-child(2),[data-app-entry=admin] #node-status-table-body td:nth-child(3),[data-app-entry=admin] #node-status-table-body td:nth-child(4),[data-app-entry=admin] #node-status-table-body td:nth-child(5),[data-app-entry=admin] #node-status-table-body td:nth-child(6){grid-column:1;grid-row:auto}}[data-app-entry=admin] #admin-log-list.admin-log-list{max-height:420px;padding:6px 10px;font-family:SFMono-Regular,Consolas,"Liberation Mono",Menlo,monospace}[data-app-entry=admin] .admin-log-item{display:flex;align-items:flex-start;gap:10px;padding:6px 8px;border-bottom:1px solid rgba(255,255,255,.06);font-size:13px;line-height:1.5;word-break:break-word}[data-app-entry=admin] .admin-log-item:last-child{border-bottom:none}[data-app-entry=admin] .admin-log-time{flex:0 0 auto;color:#9ca3af;white-space:nowrap}[data-app-entry=admin] .admin-log-level{flex:0 0 auto;min-width:38px;text-align:center;border-radius:4px;padding:0 6px;font-size:12px;color:#fff}[data-app-entry=admin] .admin-log-level-info{background:#2563eb}[data-app-entry=admin] .admin-log-level-warn{background:#d97706}[data-app-entry=admin] .admin-log-level-error{background:#dc2626}[data-app-entry=admin] .admin-log-level-debug{background:#4b5563}[data-app-entry=admin] .admin-log-msg{flex:1 1 auto;color:#e5e7eb}[data-app-entry=admin] .admin-log-item.admin-log-error .admin-log-msg{color:#fca5a5}[data-app-entry=admin] .admin-log-item.admin-log-warn .admin-log-msg{color:#fcd34d}[data-app-entry=admin] .admin-log-data{color:#9ca3af;font-size:12px}[data-app-entry=admin] .admin-log-ip{color:#93c5fd;font-weight:600}[data-app-entry=admin] .admin-log-loc{color:#fcd34d}[data-app-entry=admin] .admin-log-empty{padding:16px;text-align:center;color:#9ca3af}