*{box-sizing:border-box;margin:0;padding:0}:root{--primary:#6c47ff;--primary-light:#8b6fff;--primary-bg:#f5f0ff;--danger:#e74c3c;--success:#27ae60;--warning:#f39c12;--bg:#f7f8fc;--card-bg:#fff;--text:#2c3e50;--text-light:#7f8c8d;--border:#e8ecf1;--radius:12px}body{background:var(--bg);color:var(--text);font-family:-apple-system,BlinkMacSystemFont,Segoe UI,PingFang SC,Hiragino Sans GB,Microsoft YaHei,sans-serif;line-height:1.6}.app-layout{min-height:100vh;display:flex}.sidebar{color:#fff;z-index:100;background:linear-gradient(#1a1a2e 0%,#16213e 100%);flex-direction:column;width:240px;height:100vh;display:flex;position:fixed}.sidebar-header{border-bottom:1px solid #ffffff14;padding:24px 20px}.sidebar-header h2{font-size:18px;font-weight:700}.sidebar-nav{flex:1;padding:16px 0}.nav-item{color:#ffffffb3;align-items:center;gap:10px;padding:12px 20px;font-size:14px;text-decoration:none;transition:all .2s;display:flex}.nav-item:hover{color:#fff;background:#ffffff14}.nav-item.active{color:#fff;border-right:3px solid var(--primary-light);background:#6c47ff4d}.sidebar-footer{border-top:1px solid #ffffff14;padding:16px 20px}.user-info{flex-direction:column;gap:4px;margin-bottom:12px;display:flex}.user-role{border-radius:10px;width:fit-content;padding:2px 8px;font-size:11px;display:inline-block}.role-admin{background:var(--primary-light);color:#fff}.role-user{color:#ccc;background:#ffffff26}.user-name{color:#fffc;font-size:13px}.btn-logout{color:#ccc;cursor:pointer;background:#ffffff1a;border:1px solid #ffffff26;border-radius:8px;width:100%;padding:8px;font-size:13px}.btn-logout:hover{color:#e74c3c;background:#e74c3c33;border-color:#e74c3c4d}.main-area{flex:1;min-height:100vh;margin-left:240px;padding:32px}.login-page{background:linear-gradient(135deg,#667eea 0%,#764ba2 100%);justify-content:center;align-items:center;min-height:100vh;display:flex}.login-card{background:#fff;border-radius:16px;width:400px;max-width:90vw;padding:48px 40px;box-shadow:0 20px 60px #00000026}.login-header{text-align:center;margin-bottom:32px}.login-header h1{color:#2c3e50;margin-bottom:8px;font-size:24px}.subtitle{color:#7f8c8d;font-size:14px}.login-form .form-group{margin-bottom:20px}.form-group{margin-bottom:16px}.form-group label{color:#555;margin-bottom:6px;font-size:13px;font-weight:600;display:block}.form-group input,.form-group select{border:1.5px solid var(--border);background:#fafbfc;border-radius:8px;width:100%;padding:10px 14px;font-size:14px;transition:border-color .2s}.form-group input:focus,.form-group select:focus{border-color:var(--primary);background:#fff;outline:none;box-shadow:0 0 0 3px #6c47ff1a}.form-row{gap:16px;display:flex}.form-row .form-group{flex:1}.btn-primary{background:var(--primary);color:#fff;cursor:pointer;border:none;border-radius:8px;justify-content:center;align-items:center;padding:10px 24px;font-size:14px;font-weight:600;text-decoration:none;transition:all .2s;display:inline-flex}.btn-primary:hover{background:var(--primary-light);transform:translateY(-1px)}.btn-primary:disabled{opacity:.6;cursor:not-allowed;transform:none}.btn-secondary{color:var(--text);border:1.5px solid var(--border);cursor:pointer;background:#fff;border-radius:8px;align-items:center;padding:10px 24px;font-size:14px;text-decoration:none;transition:all .2s;display:inline-flex}.btn-secondary:hover{border-color:var(--primary);color:var(--primary)}.btn-danger{color:var(--danger);border:1.5px solid var(--danger);cursor:pointer;background:#fff;border-radius:8px;align-items:center;padding:10px 24px;font-size:14px;transition:all .2s;display:inline-flex}.btn-danger:hover{background:#fdf0ef}.btn-sm{padding:6px 12px;font-size:12px}.error-msg{color:var(--danger);margin:8px 0;font-size:13px}.success-msg{color:var(--success);margin:8px 0;font-size:13px}.page-header{margin-bottom:24px}.page-header h1{font-size:22px;font-weight:700}.page-header .desc{color:var(--text-light);margin-top:4px;font-size:14px}.stats-row{gap:16px;margin-top:20px;display:flex}.stat-card{background:var(--card-bg);border:1px solid var(--border);border-radius:var(--radius);flex-direction:column;align-items:center;min-width:120px;padding:20px 28px;display:flex}.stat-value{color:var(--primary);font-size:28px;font-weight:700}.stat-label{color:var(--text-light);margin-top:4px;font-size:12px}.header-actions{gap:12px;display:flex}.instance-grid{grid-template-columns:repeat(auto-fill,minmax(320px,1fr));gap:20px;margin-top:20px;display:grid}.instance-card{background:var(--card-bg);border:1px solid var(--border);border-radius:var(--radius);cursor:pointer;padding:20px;transition:all .2s}.instance-card:hover{border-color:var(--primary);transform:translateY(-2px);box-shadow:0 4px 12px #6c47ff1a}.card-header{justify-content:space-between;align-items:center;margin-bottom:16px;display:flex}.card-header h3{font-size:16px;font-weight:600}.status-badge{text-transform:uppercase;border-radius:12px;padding:3px 10px;font-size:11px;font-weight:600}.status-badge.running{color:var(--success);background:#e8f8f0}.status-badge.stopped{color:#999;background:#f0f0f0}.status-badge.error{color:var(--danger);background:#fdf0ef}.status-badge.creating{color:var(--warning);background:#fff8e1}.field-hint{color:var(--text-light);margin:4px 0 0;font-size:12px}.card-body .info-row{border-bottom:1px solid #f5f5f5;justify-content:space-between;padding:6px 0;font-size:13px;display:flex}.card-body .info-row:last-child{border-bottom:none}.card-body .label{color:var(--text-light)}.card-body .value{font-weight:500}.card-footer{border-top:1px solid var(--border);color:var(--text-light);justify-content:space-between;margin-top:12px;padding-top:12px;font-size:12px;display:flex}.arrow{color:var(--primary)}.empty-state{text-align:center;color:var(--text-light);grid-column:1/-1;padding:60px 20px}.empty-state p{margin-bottom:16px}.detail-grid{grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:20px;margin-bottom:24px;display:grid}.detail-section{background:var(--card-bg);border:1px solid var(--border);border-radius:var(--radius);padding:20px}.detail-section h3{color:var(--text-light);text-transform:uppercase;letter-spacing:.5px;margin-bottom:12px;font-size:14px;font-weight:600}.info-table .info-row{border-bottom:1px solid #f5f5f5;justify-content:space-between;padding:8px 0;font-size:13px;display:flex}.info-table .info-row:last-child{border-bottom:none}.info-table .label{color:var(--text-light)}.info-table .value{font-weight:500}.info-table .code{font-family:monospace;font-size:12px}.log-viewer{color:#cdd6f4;white-space:pre-wrap;word-break:break-all;background:#1e1e2e;border-radius:8px;max-height:400px;padding:16px;font-family:JetBrains Mono,Fira Code,monospace;font-size:12px;line-height:1.5;overflow:auto}.form-section{background:var(--card-bg);border:1px solid var(--border);border-radius:var(--radius);margin-bottom:20px;padding:24px}.form-section h3{color:var(--text);margin-bottom:16px;font-size:15px}.form-actions{gap:12px;margin-top:24px;display:flex}.user-form-card{background:var(--card-bg);border:1px solid var(--border);border-radius:var(--radius);margin-bottom:24px;padding:24px}.user-form-card h3{margin-bottom:16px;font-size:15px}.inline-form{flex-wrap:wrap;align-items:flex-end;gap:12px;display:flex}.inline-form input,.inline-form select{border:1.5px solid var(--border);border-radius:8px;min-width:150px;padding:10px 14px;font-size:14px}.inline-form input:focus{border-color:var(--primary);outline:none}.users-table{border-collapse:collapse;background:var(--card-bg);border-radius:var(--radius);width:100%;overflow:hidden}.users-table th{text-align:left;color:var(--text-light);text-transform:uppercase;letter-spacing:.5px;background:#f8f9fc;padding:12px 16px;font-size:12px;font-weight:600}.users-table td{border-top:1px solid var(--border);padding:12px 16px;font-size:13px}.users-table tr:hover td{background:#fafbfc}.role-badge{border-radius:10px;padding:2px 10px;font-size:11px;font-weight:600}.role-badge.admin{color:var(--primary);background:#6c47ff1a}.role-badge.user{color:#666;background:#f0f0f0}.admin-table{border-collapse:collapse;background:var(--card-bg);border-radius:var(--radius);width:100%;overflow:hidden;box-shadow:0 1px 3px #0000000a}.admin-table th{text-align:left;color:var(--text-light);text-transform:uppercase;letter-spacing:.5px;white-space:nowrap;background:#f8f9fc;padding:12px 16px;font-size:12px;font-weight:600}.admin-table td{border-top:1px solid var(--border);vertical-align:middle;padding:12px 16px;font-size:13px}.admin-table tr:hover td{background:#fafbfc}.admin-table code{background:#f5f5f5;border-radius:4px;padding:2px 6px;font-family:monospace;font-size:12px}.admin-table .cell-name{color:var(--primary);font-weight:600}.user-card{background:var(--card-bg);border:1px solid var(--border);border-radius:var(--radius);margin-bottom:20px;overflow:hidden}.user-card-header{border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;padding:20px 24px;display:flex}.user-card-title{align-items:center;gap:12px;display:flex}.user-card-title h2{font-size:18px;font-weight:700}.user-card-port{color:var(--text-light);font-size:13px}.user-card-port code{color:var(--text);background:#f5f5f5;border-radius:4px;padding:2px 8px;font-family:monospace;font-size:13px;font-weight:600}.user-card-body{padding:20px 24px}.config-grid{grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:12px;display:grid}.config-item{background:#fafbfc;border:1px solid #f0f0f0;border-radius:8px;padding:10px 14px}.config-label{color:var(--text-light);text-transform:uppercase;letter-spacing:.5px;margin-bottom:4px;font-size:11px;display:block}.config-value{font-size:13px;font-weight:500}.config-value.code{color:#666;font-family:monospace;font-size:12px}.monitor-row{color:var(--text-light);background:#f8f9fc;border-radius:8px;gap:24px;margin-top:16px;padding:12px 16px;font-size:13px;display:flex}.user-card-footer{border-top:1px solid var(--border);background:#fafbfc;align-items:center;gap:12px;padding:16px 24px;display:flex}.user-card-footer .time{color:var(--text-light);margin-left:auto;font-size:12px}.muted{color:var(--text-light);font-size:13px}.detail-page{max-width:900px}.page-header-left{align-items:center;gap:12px;display:flex}.page-header-left h1{margin:0}.status-bar{border-bottom:1px solid var(--border);gap:24px;margin-bottom:24px;padding:16px 0;display:flex}.status-item{align-items:center;gap:8px;font-size:14px;display:flex}.status-item .label{color:var(--text-light);font-size:13px}.status-item code{background:#f5f5f5;border-radius:4px;padding:2px 8px;font-family:monospace;font-size:13px}.status-item code.small{color:#888;font-size:11px}.detail-page .form-section{border:1px solid var(--border);background:#fff;border-radius:12px;margin-bottom:20px;padding:24px}.detail-page .form-section h3{margin-bottom:16px;font-size:16px}.section-desc{color:var(--text-light);margin:-12px 0 16px;font-size:13px}.detail-page .form-group{margin-bottom:0}.detail-page .form-row{gap:16px;margin-bottom:16px;display:flex}.detail-page .form-row .form-group{flex:1;margin-bottom:0}.detail-page input,.detail-page select{width:100%}.btn-save{margin-bottom:8px}.save-hint{color:var(--text-light);margin-bottom:24px;font-size:12px}.log-section{margin-top:8px}.log-header{justify-content:space-between;align-items:center;margin-bottom:12px;display:flex}.log-header h3{margin:0;font-size:16px}.log-viewer{color:#cdd6f4;white-space:pre-wrap;word-break:break-all;background:#1e1e2e;border-radius:12px;max-height:400px;padding:16px;font-family:JetBrains Mono,Fira Code,monospace;font-size:12px;line-height:1.6;overflow-y:auto}.form-note{color:#1a5fa8;background:#f0f7ff;border:1px solid #d0e4ff;border-radius:8px;margin-bottom:16px;padding:12px 16px;font-size:13px;line-height:1.6}@media (width<=768px){.sidebar{width:60px}.sidebar-header h2,.nav-item span:not(:first-child),.user-name,.user-role{display:none}.main-area{margin-left:60px;padding:16px}.instance-grid{grid-template-columns:1fr}.form-row,.inline-form{flex-direction:column}.inline-form input{width:100%}}
