*,*:before,*:after{margin:0;padding:0;box-sizing:border-box}html,body,#root{height:100%;width:100%}body{font-family:Noto Sans KR,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif;font-size:14px;line-height:1.5;background:#1a1a2e;color:#e0e0e0;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;overflow:hidden}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:#334155;border-radius:3px}::-webkit-scrollbar-thumb:hover{background:#475569}a{color:#0ea5e9;text-decoration:none}a:hover{color:#38bdf8}:root{--color-bg-main: #1a1a2e;--color-bg-sidebar: #16213e;--color-bg-header: #0f3460;--color-text: #e0e0e0;--color-text-muted: #64748b;--color-accent: #0ea5e9;--color-success: #22c55e;--color-error: #ef4444;--color-warning: #f59e0b;--color-border: #1e3a5f}.app-init{display:flex;align-items:center;justify-content:center;height:100vh;background:var(--color-bg-main)}.app-init-spinner{display:block;width:28px;height:28px;border:3px solid #1e3a5f;border-top-color:var(--color-accent);border-radius:50%;animation:app-spin .8s linear infinite}@keyframes app-spin{to{transform:rotate(360deg)}}.app{display:flex;flex-direction:column;height:100vh;overflow:hidden}.app-body{display:flex;flex:1;overflow:hidden}.header{height:48px;min-height:48px;background:#0f3460;display:flex;align-items:center;justify-content:space-between;padding:0 16px;border-bottom:1px solid #1e4a80;z-index:100}.header-logo{display:flex;align-items:center;gap:8px}.header-logo-icon{font-size:18px;color:#0ea5e9}.header-logo-text{font-size:16px;font-weight:700;color:#e0e0e0;letter-spacing:.5px}.header-right{display:flex;align-items:center}.header-user{font-size:13px;color:#94a3b8;padding:4px 10px;border:1px solid #334155;border-radius:4px;cursor:pointer;transition:background .15s}.header-user:hover{background:#1e4a80;color:#e0e0e0}.header-user-info{font-size:12px;color:#94a3b8;padding:4px 10px;margin-right:6px}.header-users-btn{font-size:12px;color:#94a3b8;background:transparent;border:1px solid #334155;border-radius:4px;padding:4px 10px;cursor:pointer;font-family:inherit;margin-right:6px;transition:background .15s,color .15s,border-color .15s}.header-users-btn:hover{background:#0ea5e91a;border-color:#0ea5e9;color:#38bdf8}.header-logout-btn{font-size:12px;color:#94a3b8;background:transparent;border:1px solid #334155;border-radius:4px;padding:4px 10px;cursor:pointer;font-family:inherit;transition:background .15s,color .15s,border-color .15s}.header-logout-btn:hover{background:#ef44441a;border-color:#ef4444;color:#ef4444}.sidebar{width:240px;min-width:240px;background:#16213e;display:flex;flex-direction:column;border-right:1px solid #1e3a5f;overflow:hidden}.sidebar-header{height:36px;display:flex;align-items:center;padding:0 12px;border-bottom:1px solid #1e3a5f}.sidebar-title{font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.8px;color:#64748b}.sidebar-server-list{flex:1;overflow-y:auto;padding:4px 0}.sidebar-message{padding:12px;font-size:12px;color:#64748b;text-align:center}.sidebar-message--error{color:#ef4444}.sidebar-server-item{display:flex;align-items:center;gap:10px;padding:10px 12px;cursor:pointer;border-radius:4px;margin:2px 6px;transition:background .1s;-webkit-user-select:none;user-select:none;position:relative}.sidebar-server-item:hover{background:#1e3a5f}.sidebar-server-item--selected{background:#1e3a5f;border-left:2px solid var(--color-accent);padding-left:10px}.sidebar-server-actions{display:none;align-items:center;gap:2px;margin-left:auto;flex-shrink:0}.sidebar-server-item:hover .sidebar-server-actions{display:flex}.sidebar-action-btn{width:22px;height:22px;border-radius:3px;border:none;background:transparent;font-size:13px;line-height:1;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:background .12s,color .12s;padding:0}.sidebar-action-btn--edit{color:#64748b}.sidebar-action-btn--edit:hover{background:#0ea5e926;color:var(--color-accent)}.sidebar-action-btn--delete{color:#64748b;font-size:11px}.sidebar-action-btn--delete:hover{background:#ef444426;color:var(--color-error)}.sidebar-server-info{display:flex;flex-direction:column;gap:2px;overflow:hidden;min-width:0;flex:1}.sidebar-server-name{font-size:13px;color:#e0e0e0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.sidebar-server-host{font-size:11px;color:#64748b;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.sidebar-footer{padding:8px;border-top:1px solid #1e3a5f}.btn-add-server{width:100%;padding:7px 0;background:transparent;border:1px dashed #334155;border-radius:4px;color:#64748b;font-size:12px;cursor:pointer;transition:border-color .15s,color .15s}.btn-add-server:hover{border-color:#0ea5e9;color:#0ea5e9;background:transparent}.status-dot{width:10px;height:10px;min-width:10px;border-radius:50%;display:inline-block;flex-shrink:0}.status-dot--online{background:#22c55e;box-shadow:0 0 6px #22c55e99}.status-dot--offline{background:#ef4444;box-shadow:0 0 4px #ef444466}.status-dot--checking{background:#f59e0b;box-shadow:0 0 4px #f59e0b66;animation:pulse-dot 1s ease-in-out infinite}@keyframes pulse-dot{0%,to{opacity:1}50%{opacity:.4}}.workspace{flex:1;display:flex;flex-direction:column;background:#1a1a2e;overflow:hidden}.tab-bar{display:flex;align-items:flex-end;height:36px;min-height:36px;background:#16213e;border-bottom:1px solid #1e3a5f;overflow-x:auto;overflow-y:hidden;padding:0 4px}.tab-bar--empty{background:#16213e;border-bottom:1px solid #1e3a5f}.tab-bar::-webkit-scrollbar{height:3px}.tab-bar::-webkit-scrollbar-thumb{background:#334155;border-radius:2px}.tab-item{display:flex;align-items:center;gap:6px;padding:0 12px;height:30px;background:#1a1a2e;border:1px solid #1e3a5f;border-bottom:none;border-radius:4px 4px 0 0;cursor:pointer;white-space:nowrap;margin-right:2px;transition:background .1s;color:#94a3b8}.tab-item:hover{background:#1e2a44;color:#e0e0e0}.tab-item--active{background:#1a1a2e;border-color:#0ea5e9;color:#e0e0e0;position:relative}.tab-item--active:after{content:"";position:absolute;bottom:-1px;left:0;right:0;height:1px;background:#1a1a2e}.tab-item-title{font-size:12px}.tab-item-close{background:none;border:none;color:#64748b;font-size:16px;line-height:1;cursor:pointer;padding:0 2px;border-radius:2px;transition:color .1s,background .1s}.tab-item-close:hover{color:#ef4444;background:#2a1a1a}.workspace-content{flex:1;display:flex;flex-direction:column;overflow:hidden}.workspace-empty,.workspace-placeholder{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center}.workspace-empty{gap:8px;color:#334155}.workspace-empty-icon{font-size:40px;opacity:.3}.workspace-empty-title{font-size:15px;font-weight:500;color:#475569}.workspace-empty-hint{font-size:12px;color:#334155}.workspace-placeholder{gap:8px}.workspace-placeholder-icon{font-size:32px;opacity:.5}.workspace-placeholder-text{font-size:14px;color:#64748b}.detail-panel{width:280px;min-width:280px;background:#16213e;border-left:1px solid #1e3a5f;display:flex;flex-direction:column;overflow:hidden}.detail-panel-empty{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;color:#334155}.detail-panel-empty-icon{font-size:32px;opacity:.3}.detail-panel-empty p{font-size:13px;color:#475569}.detail-panel-header{height:36px;display:flex;align-items:center;padding:0 14px;border-bottom:1px solid #1e3a5f}.detail-panel-title{font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.8px;color:#64748b}.detail-panel-body{flex:1;overflow-y:auto;padding:10px 0}.detail-field{display:flex;flex-direction:column;padding:6px 14px;border-bottom:1px solid #1a2a44}.detail-field:last-child{border-bottom:none}.detail-field-label{font-size:10px;text-transform:uppercase;letter-spacing:.6px;color:#64748b;margin-bottom:2px}.detail-field-value{font-size:13px;color:#cbd5e1;word-break:break-all}.detail-status{font-weight:600}.detail-status--online{color:#22c55e}.detail-status--offline{color:#64748b}.detail-status--checking{color:#f59e0b}.detail-panel-section-label{font-size:10px;font-weight:600;text-transform:uppercase;letter-spacing:.7px;color:#334155;padding:10px 14px 4px;border-top:1px solid #1a2a44;margin-top:4px}.detail-job-running{color:#38bdf8!important}.detail-job-completed{color:#4ade80!important}.detail-job-failed{color:#f87171!important}.detail-job-name{font-size:12px;font-weight:400;margin-top:2px}.status-bar{height:32px;min-height:32px;background:#0f3460;display:flex;align-items:center;justify-content:space-between;padding:0 14px;border-top:1px solid #1e4a80;font-size:11px}.status-bar-items{display:flex;align-items:center;gap:8px}.status-bar-item{display:flex;align-items:center;gap:5px;color:#94a3b8}.status-bar-item strong{color:#cbd5e1;font-weight:600}.status-bar-separator{color:#334155}.status-bar-dot{width:6px;height:6px;border-radius:50%;display:inline-block}.status-bar-dot--running{background:#0ea5e9}.status-bar-dot--running.status-bar-dot--active{animation:statusbar-pulse 1.1s ease-in-out infinite;box-shadow:0 0 4px #0ea5e9}@keyframes statusbar-pulse{0%,to{opacity:1}50%{opacity:.35}}.status-bar-dot--completed{background:#22c55e}.status-bar-dot--error{background:#ef4444}.status-bar-right{color:#475569;font-size:10px}.login-page{display:flex;align-items:center;justify-content:center;height:100vh;width:100vw;background:var(--color-bg-main)}.login-card{width:360px;background:var(--color-bg-sidebar);border:1px solid var(--color-border);border-radius:8px;padding:36px 32px 32px;display:flex;flex-direction:column;gap:24px;box-shadow:0 8px 32px #0006}.login-logo{display:flex;flex-direction:column;align-items:center;gap:8px}.login-logo-icon{font-size:36px;color:var(--color-accent);line-height:1}.login-logo-title{font-size:22px;font-weight:700;color:var(--color-text);letter-spacing:.5px}.login-logo-subtitle{font-size:12px;color:var(--color-text-muted);letter-spacing:.3px}.login-form{display:flex;flex-direction:column;gap:14px}.login-field{display:flex;flex-direction:column;gap:5px}.login-label{font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.6px;color:var(--color-text-muted)}.login-input{height:38px;padding:0 12px;background:var(--color-bg-main);border:1px solid var(--color-border);border-radius:4px;color:var(--color-text);font-size:14px;font-family:inherit;outline:none;transition:border-color .15s,box-shadow .15s}.login-input::placeholder{color:#334155}.login-input:focus{border-color:var(--color-accent);box-shadow:0 0 0 2px #0ea5e926}.login-input:disabled{opacity:.5;cursor:not-allowed}.login-error{display:flex;align-items:center;gap:6px;padding:9px 12px;background:#ef44441a;border:1px solid rgba(239,68,68,.3);border-radius:4px;font-size:13px;color:var(--color-error);min-height:38px}.login-error-icon{font-size:14px;flex-shrink:0}.login-btn{height:40px;background:var(--color-accent);border:none;border-radius:4px;color:#fff;font-size:14px;font-weight:600;font-family:inherit;cursor:pointer;transition:background .15s,opacity .15s;letter-spacing:.3px;margin-top:4px}.login-btn:hover:not(:disabled){background:#38bdf8}.login-btn:active:not(:disabled){background:#0284c7}.login-btn:disabled{opacity:.55;cursor:not-allowed}.login-btn--loading{position:relative;color:transparent}.login-btn--loading:after{content:"";position:absolute;top:50%;left:50%;width:16px;height:16px;margin:-8px 0 0 -8px;border:2px solid rgba(255,255,255,.3);border-top-color:#fff;border-radius:50%;animation:login-spin .7s linear infinite}@keyframes login-spin{to{transform:rotate(360deg)}}.user-modal-backdrop{position:fixed;inset:0;background:#0009;display:flex;align-items:center;justify-content:center;z-index:1000;animation:um-fade-in .12s ease}@keyframes um-fade-in{0%{opacity:0}to{opacity:1}}.user-modal{background:#16213e;border:1px solid #1e4a80;border-radius:8px;width:420px;max-width:calc(100vw - 32px);box-shadow:0 20px 60px #0009;animation:um-slide-in .14s ease;overflow:hidden}@keyframes um-slide-in{0%{transform:translateY(-12px);opacity:0}to{transform:translateY(0);opacity:1}}.user-modal-header{display:flex;align-items:center;justify-content:space-between;padding:14px 18px;border-bottom:1px solid #1e3a5f;background:#0f3460}.user-modal-title{font-size:14px;font-weight:600;color:#e0e0e0;letter-spacing:.3px}.user-modal-close{background:none;border:none;color:#64748b;font-size:20px;line-height:1;cursor:pointer;padding:0 4px;border-radius:4px;transition:color .12s,background .12s}.user-modal-close:hover{color:#e0e0e0;background:#ffffff14}.user-modal-body{padding:20px 18px 16px;display:flex;flex-direction:column;gap:14px}.user-modal-field{display:flex;flex-direction:column;gap:5px}.user-modal-label{font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.6px;color:#64748b}.user-modal-optional{font-size:10px;font-weight:400;text-transform:none;letter-spacing:0;color:#475569}.user-modal-input,.user-modal-select{background:#0f1c35;border:1px solid #334155;border-radius:4px;color:#e0e0e0;font-size:13px;font-family:inherit;padding:7px 10px;outline:none;transition:border-color .15s;width:100%;box-sizing:border-box}.user-modal-input:focus,.user-modal-select:focus{border-color:#0ea5e9}.user-modal-input::placeholder{color:#475569}.user-modal-input:disabled,.user-modal-select:disabled{opacity:.5;cursor:not-allowed}.user-modal-select option{background:#16213e;color:#e0e0e0}.user-modal-error{font-size:12px;color:#f87171;margin:0;padding:6px 10px;background:#ef44441a;border-left:2px solid #ef4444;border-radius:2px}.user-modal-footer{display:flex;justify-content:flex-end;gap:8px;padding-top:4px}.user-modal-btn{font-size:12px;font-family:inherit;font-weight:500;padding:6px 16px;border-radius:4px;border:1px solid transparent;cursor:pointer;transition:background .15s,border-color .15s,color .15s}.user-modal-btn:disabled{opacity:.5;cursor:not-allowed}.user-modal-btn--cancel{background:transparent;border-color:#334155;color:#94a3b8}.user-modal-btn--cancel:hover:not(:disabled){background:#1e3a5f;color:#e0e0e0}.user-modal-btn--save{background:#0ea5e9;border-color:#0ea5e9;color:#fff}.user-modal-btn--save:hover:not(:disabled){background:#0284c7;border-color:#0284c7}.um-backdrop{position:fixed;inset:0;background:#0000008c;display:flex;align-items:center;justify-content:center;z-index:900;animation:um-bd-in .12s ease}@keyframes um-bd-in{0%{opacity:0}to{opacity:1}}.um-panel{background:#16213e;border:1px solid #1e4a80;border-radius:8px;width:720px;max-width:calc(100vw - 40px);max-height:calc(100vh - 80px);display:flex;flex-direction:column;box-shadow:0 24px 64px #000000a6;animation:um-panel-in .15s ease;overflow:hidden}@keyframes um-panel-in{0%{transform:translateY(-16px);opacity:0}to{transform:translateY(0);opacity:1}}.um-header{display:flex;align-items:center;justify-content:space-between;padding:14px 18px;border-bottom:1px solid #1e3a5f;background:#0f3460;flex-shrink:0}.um-title{font-size:15px;font-weight:600;color:#e0e0e0;letter-spacing:.3px}.um-header-actions{display:flex;align-items:center;gap:8px}.um-close-btn{background:none;border:none;color:#64748b;font-size:20px;line-height:1;cursor:pointer;padding:0 4px;border-radius:4px;transition:color .12s,background .12s}.um-close-btn:hover{color:#e0e0e0;background:#ffffff14}.um-body{flex:1;overflow-y:auto;padding:0}.um-body::-webkit-scrollbar{width:6px}.um-body::-webkit-scrollbar-thumb{background:#334155;border-radius:3px}.um-state{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:10px;padding:48px 0;color:#64748b;font-size:13px}.um-state--error{color:#f87171}.um-spinner{display:block;width:24px;height:24px;border:2px solid #1e3a5f;border-top-color:#0ea5e9;border-radius:50%;animation:um-spin .7s linear infinite}@keyframes um-spin{to{transform:rotate(360deg)}}.um-table{width:100%;border-collapse:collapse;font-size:13px}.um-th{font-size:10px;font-weight:600;text-transform:uppercase;letter-spacing:.7px;color:#64748b;padding:10px 16px;text-align:left;border-bottom:1px solid #1e3a5f;background:#0f1c35;white-space:nowrap}.um-th--actions{text-align:right}.um-tr{border-bottom:1px solid #1a2a44;transition:background .1s}.um-tr:hover{background:#1a2a44}.um-tr--self{border-bottom:1px solid #1a2a44;background:#0ea5e90a}.um-tr--self:hover{background:#0ea5e914}.um-td{padding:10px 16px;color:#cbd5e1;vertical-align:middle}.um-td--date{font-size:12px;color:#64748b;white-space:nowrap}.um-td--actions{text-align:right;white-space:nowrap}.um-email{color:#e0e0e0}.um-self-badge{display:inline-block;margin-left:6px;font-size:10px;font-weight:600;padding:1px 5px;background:#0ea5e926;color:#38bdf8;border-radius:3px;vertical-align:middle}.um-role-badge{display:inline-block;font-size:11px;font-weight:600;padding:2px 8px;border-radius:3px;text-transform:capitalize}.um-role-badge--admin{background:#ef444426;color:#f87171}.um-role-badge--operator{background:#f59e0b26;color:#fbbf24}.um-role-badge--viewer{background:#64748b33;color:#94a3b8}.um-action-btn{font-size:11px;font-family:inherit;font-weight:500;padding:4px 10px;border-radius:3px;border:1px solid transparent;cursor:pointer;transition:background .12s,border-color .12s,color .12s}.um-action-btn:disabled{opacity:.3;cursor:not-allowed}.um-action-btn--edit{background:transparent;border-color:#334155;color:#94a3b8;margin-right:4px}.um-action-btn--edit:hover:not(:disabled){background:#0ea5e91f;border-color:#0ea5e9;color:#38bdf8}.um-action-btn--delete{background:transparent;border-color:#334155;color:#94a3b8}.um-action-btn--delete:hover:not(:disabled){background:#ef44441f;border-color:#ef4444;color:#f87171}.um-btn{font-size:12px;font-family:inherit;font-weight:500;padding:6px 14px;border-radius:4px;border:1px solid transparent;cursor:pointer;transition:background .15s,border-color .15s}.um-btn--add{background:#0ea5e9;border-color:#0ea5e9;color:#fff}.um-btn--add:hover{background:#0284c7;border-color:#0284c7}.um-btn--ghost{background:transparent;border-color:#334155;color:#94a3b8}.um-btn--ghost:hover{background:#1e3a5f;color:#e0e0e0}.modal-overlay{position:fixed;inset:0;background:#0009;display:flex;align-items:center;justify-content:center;z-index:1000;animation:modal-overlay-in .15s ease}@keyframes modal-overlay-in{0%{opacity:0}to{opacity:1}}.modal-card{width:100%;max-width:480px;background:var(--color-bg-sidebar);border:1px solid var(--color-border);border-radius:8px;box-shadow:0 16px 48px #0000008c;display:flex;flex-direction:column;animation:modal-card-in .15s ease;margin:0 16px}@keyframes modal-card-in{0%{opacity:0;transform:translateY(-12px)}to{opacity:1;transform:translateY(0)}}.modal-header{display:flex;align-items:center;justify-content:space-between;padding:18px 24px 14px;border-bottom:1px solid var(--color-border)}.modal-title{font-size:15px;font-weight:600;color:var(--color-text)}.modal-close-btn{background:none;border:none;font-size:22px;line-height:1;color:var(--color-text-muted);cursor:pointer;padding:2px 6px;border-radius:4px;transition:color .15s,background .15s;font-family:inherit}.modal-close-btn:hover{color:var(--color-text);background:#ffffff12}.modal-form{display:flex;flex-direction:column;gap:14px;padding:20px 24px 24px}.modal-field{display:flex;flex-direction:column;gap:5px}.modal-row{display:flex;gap:12px}.modal-field--port{width:100px;flex-shrink:0}.modal-field--grow{flex:1}.modal-label{font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.6px;color:var(--color-text-muted)}.modal-label-optional{font-weight:400;text-transform:none;letter-spacing:0;font-size:10px;color:#475569}.modal-input{height:38px;padding:0 12px;background:var(--color-bg-main);border:1px solid var(--color-border);border-radius:4px;color:var(--color-text);font-size:13px;font-family:inherit;outline:none;transition:border-color .15s,box-shadow .15s;width:100%}.modal-input::placeholder{color:#334155}.modal-input:focus{border-color:var(--color-accent);box-shadow:0 0 0 2px #0ea5e926}.modal-input:disabled{opacity:.5;cursor:not-allowed}.modal-input[type=number]::-webkit-inner-spin-button,.modal-input[type=number]::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.modal-input[type=number]{-moz-appearance:textfield}.modal-error{display:flex;align-items:center;gap:6px;padding:9px 12px;background:#ef44441a;border:1px solid rgba(239,68,68,.3);border-radius:4px;font-size:12px;color:var(--color-error)}.modal-error-icon{width:16px;height:16px;min-width:16px;background:var(--color-error);color:#fff;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:10px;font-weight:700;line-height:1}.modal-footer{display:flex;justify-content:flex-end;gap:8px;margin-top:4px}.modal-btn{height:36px;padding:0 18px;border-radius:4px;font-size:13px;font-weight:600;font-family:inherit;cursor:pointer;transition:background .15s,border-color .15s,color .15s,opacity .15s;border:1px solid transparent;letter-spacing:.2px}.modal-btn:disabled{opacity:.5;cursor:not-allowed}.modal-btn--cancel{background:transparent;border-color:#334155;color:var(--color-text-muted)}.modal-btn--cancel:hover:not(:disabled){background:#ffffff0d;color:var(--color-text);border-color:#475569}.modal-btn--save{background:var(--color-accent);color:#fff;border-color:var(--color-accent)}.modal-btn--save:hover:not(:disabled){background:#38bdf8;border-color:#38bdf8}.modal-btn--save:active:not(:disabled){background:#0284c7;border-color:#0284c7}.modal-section-divider{display:flex;align-items:center;gap:10px;margin:4px 0 -4px}.modal-section-divider:before,.modal-section-divider:after{content:"";flex:1;height:1px;background:var(--color-border)}.modal-section-label{font-size:10px;font-weight:600;text-transform:uppercase;letter-spacing:.8px;color:var(--color-text-muted);white-space:nowrap}.modal-test-result{display:flex;align-items:center;gap:8px;padding:9px 12px;border-radius:4px;font-size:12px}.modal-test-result--success{background:#22c55e1a;border:1px solid rgba(34,197,94,.3);color:#22c55e}.modal-test-result--fail{background:#ef44441a;border:1px solid rgba(239,68,68,.3);color:var(--color-error)}.modal-test-result-icon{font-size:14px;font-weight:700;line-height:1}.modal-btn--test{background:transparent;border-color:#22c55e;color:#22c55e}.modal-btn--test:hover:not(:disabled){background:#22c55e1a}.modal-btn--test:active:not(:disabled){background:#22c55e33}.modal-footer-spacer{flex:1}.confirm-modal-card{width:100%;max-width:360px;background:var(--color-bg-sidebar);border:1px solid rgba(239,68,68,.35);border-radius:8px;box-shadow:0 16px 48px #0000008c;display:flex;flex-direction:column;align-items:center;padding:28px 28px 24px;gap:12px;text-align:center;animation:modal-card-in .15s ease;margin:0 16px}.confirm-modal-icon-wrap{width:48px;height:48px;border-radius:50%;background:#ef444426;border:2px solid rgba(239,68,68,.4);display:flex;align-items:center;justify-content:center;margin-bottom:4px}.confirm-modal-icon{font-size:22px;font-weight:700;color:var(--color-error);line-height:1}.confirm-modal-title{font-size:15px;font-weight:600;color:var(--color-text)}.confirm-modal-message{font-size:13px;color:var(--color-text-muted);line-height:1.5}.confirm-modal-footer{display:flex;justify-content:center;gap:10px;margin-top:8px;width:100%}.confirm-modal-footer .modal-btn{flex:1;max-width:140px}.modal-btn--delete{background:var(--color-error);color:#fff;border-color:var(--color-error);height:36px;padding:0 18px;border-radius:4px;font-size:13px;font-weight:600;font-family:inherit;cursor:pointer;transition:background .15s,border-color .15s,opacity .15s;border:1px solid transparent;letter-spacing:.2px}.modal-btn--delete:hover:not(:disabled){background:#f87171;border-color:#f87171}.modal-btn--delete:active:not(:disabled){background:#dc2626;border-color:#dc2626}.modal-btn--delete:disabled{opacity:.5;cursor:not-allowed}.job-modal-overlay{position:fixed;inset:0;background:#0009;display:flex;align-items:center;justify-content:center;z-index:1000;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px)}.job-modal{background:#16213e;border:1px solid #1e3a5f;border-radius:8px;width:580px;max-width:calc(100vw - 32px);max-height:calc(100vh - 48px);box-shadow:0 24px 64px #0009;overflow:hidden;display:flex;flex-direction:column}.job-modal-header{display:flex;align-items:center;justify-content:space-between;padding:14px 18px;border-bottom:1px solid #1e3a5f;background:#0f3460}.job-modal-title{font-size:14px;font-weight:600;color:#e0e0e0;letter-spacing:.3px}.job-modal-close{background:transparent;border:none;color:#64748b;font-size:20px;line-height:1;cursor:pointer;padding:0 4px;border-radius:4px;transition:color .15s,background .15s}.job-modal-close:hover{color:#ef4444;background:#ef44441a}.job-modal-body{padding:18px;display:flex;flex-direction:column;gap:14px;overflow-y:auto}.job-modal-error{background:#ef44441a;border:1px solid rgba(239,68,68,.3);border-radius:4px;color:#f87171;font-size:12px;padding:8px 12px}.job-modal-field{display:flex;flex-direction:column;gap:5px}.job-modal-label{font-size:11px;text-transform:uppercase;letter-spacing:.6px;color:#64748b}.job-modal-input,.job-modal-select{background:#1a2a44;border:1px solid #334155;border-radius:4px;color:#cbd5e1;font-size:13px;font-family:inherit;padding:8px 10px;outline:none;transition:border-color .15s;width:100%;box-sizing:border-box}.job-modal-input::placeholder{color:#475569}.job-modal-input:focus,.job-modal-select:focus{border-color:#0ea5e9}.job-modal-select{cursor:pointer;appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12'%3E%3Cpath fill='%2364748b' d='M6 8L1 3h10z'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 10px center;padding-right:28px}.job-modal-select option{background:#1a2a44;color:#cbd5e1}.job-modal-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:4px}.job-modal-btn{padding:8px 18px;border-radius:4px;font-size:13px;font-family:inherit;font-weight:500;cursor:pointer;border:1px solid transparent;transition:background .15s,border-color .15s,color .15s}.job-modal-btn:disabled{opacity:.5;cursor:not-allowed}.job-modal-btn--cancel{background:transparent;border-color:#334155;color:#94a3b8}.job-modal-btn--cancel:hover:not(:disabled){background:#1e3a5f;color:#e0e0e0}.job-modal-btn--create{background:#0ea5e9;border-color:#0ea5e9;color:#fff}.job-modal-btn--create:hover:not(:disabled){background:#0284c7;border-color:#0284c7}.job-modal-path-row{display:flex;gap:6px;align-items:center}.job-modal-path-row .job-modal-input{flex:1}.verify-btn{flex-shrink:0;width:34px;height:34px;border-radius:4px;border:1px solid #334155;background:#1a2a44;color:#64748b;font-size:14px;font-weight:700;cursor:pointer;transition:all .15s;display:flex;align-items:center;justify-content:center}.verify-btn:hover:not(:disabled){border-color:#0ea5e9;color:#0ea5e9}.verify-btn:disabled{opacity:.5;cursor:not-allowed}.verify-btn--ok{border-color:#22c55e;color:#22c55e;background:#22c55e1a}.verify-btn--fail{border-color:#ef4444;color:#ef4444;background:#ef44441a}.verify-btn--checking{color:#f59e0b;animation:spin 1s linear infinite}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.verify-msg{font-size:11px;line-height:1.3}.verify-msg--ok{color:#22c55e}.verify-msg--fail{color:#f87171}.rsync-options-grid{display:flex;flex-direction:column;gap:2px;background:#1a2a44;border:1px solid #334155;border-radius:4px;padding:6px;max-height:220px;overflow-y:auto}.rsync-option-item{display:grid;grid-template-columns:18px auto 1fr;grid-template-rows:auto auto;align-items:center;gap:0 6px;padding:6px 8px;border-radius:4px;cursor:pointer;transition:background .12s}.rsync-option-item:hover{background:#0ea5e914}.rsync-option-item--checked{background:#0ea5e90f}.rsync-option-item--dangerous .rsync-option-flag,.rsync-option-item--dangerous .rsync-option-label{color:#f87171}.rsync-option-checkbox{grid-row:1 / 3;width:14px;height:14px;accent-color:#0ea5e9;cursor:pointer}.rsync-option-flag{font-family:Consolas,Monaco,monospace;font-size:12px;color:#38bdf8;font-weight:600}.rsync-option-label{font-size:12px;color:#e0e0e0;font-weight:500}.rsync-option-desc{grid-column:2 / 4;font-size:11px;color:#64748b;line-height:1.3}.rsync-preview{background:#0d1b2a;border:1px solid #334155;border-radius:4px;padding:10px 12px;font-family:Consolas,Monaco,monospace;font-size:12px;color:#4ade80;word-break:break-all;line-height:1.5}.log-viewer{flex:1;overflow-y:auto;background:#0d0d0d;font-family:Consolas,Menlo,Monaco,Courier New,monospace;font-size:12px;line-height:1.6;padding:10px 14px;min-height:0}.log-viewer::-webkit-scrollbar{width:6px}.log-viewer::-webkit-scrollbar-track{background:#1a1a1a}.log-viewer::-webkit-scrollbar-thumb{background:#2a2a2a;border-radius:3px}.log-viewer::-webkit-scrollbar-thumb:hover{background:#3a3a3a}.log-viewer-empty{color:#475569;font-size:12px;font-style:italic;padding:12px 0;-webkit-user-select:none;user-select:none}.log-line{display:flex;gap:10px;height:21px;line-height:21px;padding:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;box-sizing:border-box}.log-line:hover{background:#ffffff08;border-radius:2px}.log-line-time{flex-shrink:0;color:#4a5568;-webkit-user-select:none;user-select:none;font-size:11px;padding-top:1px;min-width:90px}.log-line--stdout .log-line-content{color:#b8f7b8}.log-line--stderr .log-line-content{color:#f87171}.xterm{cursor:text;position:relative;user-select:none;-ms-user-select:none;-webkit-user-select:none}.xterm.focus,.xterm:focus{outline:none}.xterm .xterm-helpers{position:absolute;top:0;z-index:5}.xterm .xterm-helper-textarea{padding:0;border:0;margin:0;position:absolute;opacity:0;left:-9999em;top:0;width:0;height:0;z-index:-5;white-space:nowrap;overflow:hidden;resize:none}.xterm .composition-view{background:#000;color:#fff;display:none;position:absolute;white-space:nowrap;z-index:1}.xterm .composition-view.active{display:block}.xterm .xterm-viewport{background-color:#000;overflow-y:scroll;cursor:default;position:absolute;inset:0}.xterm .xterm-screen{position:relative}.xterm .xterm-screen canvas{position:absolute;left:0;top:0}.xterm-char-measure-element{display:inline-block;visibility:hidden;position:absolute;top:0;left:-9999em;line-height:normal}.xterm.enable-mouse-events{cursor:default}.xterm.xterm-cursor-pointer,.xterm .xterm-cursor-pointer{cursor:pointer}.xterm.column-select.focus{cursor:crosshair}.xterm .xterm-accessibility:not(.debug),.xterm .xterm-message{position:absolute;inset:0;z-index:10;color:transparent;pointer-events:none}.xterm .xterm-accessibility-tree:not(.debug) *::selection{color:transparent}.xterm .xterm-accessibility-tree{font-family:monospace;-webkit-user-select:text;user-select:text;white-space:pre}.xterm .xterm-accessibility-tree>div{transform-origin:left;width:fit-content}.xterm .live-region{position:absolute;left:-9999px;width:1px;height:1px;overflow:hidden}.xterm-dim{opacity:1!important}.xterm-underline-1{text-decoration:underline}.xterm-underline-2{text-decoration:double underline}.xterm-underline-3{text-decoration:wavy underline}.xterm-underline-4{text-decoration:dotted underline}.xterm-underline-5{text-decoration:dashed underline}.xterm-overline{text-decoration:overline}.xterm-overline.xterm-underline-1{text-decoration:overline underline}.xterm-overline.xterm-underline-2{text-decoration:overline double underline}.xterm-overline.xterm-underline-3{text-decoration:overline wavy underline}.xterm-overline.xterm-underline-4{text-decoration:overline dotted underline}.xterm-overline.xterm-underline-5{text-decoration:overline dashed underline}.xterm-strikethrough{text-decoration:line-through}.xterm-screen .xterm-decoration-container .xterm-decoration{z-index:6;position:absolute}.xterm-screen .xterm-decoration-container .xterm-decoration.xterm-decoration-top-layer{z-index:7}.xterm-decoration-overview-ruler{z-index:8;position:absolute;top:0;right:0;pointer-events:none}.xterm-decoration-top{z-index:2;position:relative}.xterm .xterm-scrollable-element>.scrollbar{cursor:default}.xterm .xterm-scrollable-element>.scrollbar>.scra{cursor:pointer;font-size:11px!important}.xterm .xterm-scrollable-element>.visible{opacity:1;background:#0000;transition:opacity .1s linear;z-index:11}.xterm .xterm-scrollable-element>.invisible{opacity:0;pointer-events:none}.xterm .xterm-scrollable-element>.invisible.fade{transition:opacity .8s linear}.xterm .xterm-scrollable-element>.shadow{position:absolute;display:none}.xterm .xterm-scrollable-element>.shadow.top{display:block;top:0;left:3px;height:3px;width:100%;box-shadow:var(--vscode-scrollbar-shadow, #000) 0 6px 6px -6px inset}.xterm .xterm-scrollable-element>.shadow.left{display:block;top:3px;left:0;height:100%;width:3px;box-shadow:var(--vscode-scrollbar-shadow, #000) 6px 0 6px -6px inset}.xterm .xterm-scrollable-element>.shadow.top-left-corner{display:block;top:0;left:0;height:3px;width:3px}.xterm .xterm-scrollable-element>.shadow.top.left{box-shadow:var(--vscode-scrollbar-shadow, #000) 6px 0 6px -6px inset}.terminal-panel{display:flex;flex-direction:column;flex:1;min-height:0;overflow:hidden;background:#0d1117}.terminal-container{flex:1;min-height:0;padding:4px}.terminal-container .xterm{height:100%}.terminal-container .xterm-viewport{overflow-y:auto!important}.terminal-container .xterm-viewport::-webkit-scrollbar{width:5px}.terminal-container .xterm-viewport::-webkit-scrollbar-thumb{background:#2a3a5a;border-radius:3px}.tab-content{display:flex;flex-direction:column;height:100%;overflow:hidden}.tab-content-error{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:8px 16px;background:#ef44441f;border-bottom:1px solid rgba(239,68,68,.3);color:#ef4444;font-size:12px}.tab-content-error-close{background:none;border:none;color:#ef4444;font-size:16px;cursor:pointer;padding:0 4px;line-height:1}.tab-content-header{display:flex;align-items:center;justify-content:space-between;padding:0 16px;height:42px;min-height:42px;border-bottom:1px solid #1e3a5f;background:#16213e}.tab-content-server-label{font-size:13px;color:#94a3b8}.tab-content-server-label strong{color:#e0e0e0;font-weight:600}.btn-add-job{padding:5px 14px;background:#0ea5e9;border:none;border-radius:4px;color:#fff;font-size:12px;font-weight:600;font-family:inherit;cursor:pointer;transition:background .15s;white-space:nowrap}.tab-content-header-actions{display:flex;gap:6px}.btn-add-job:hover{background:#0284c7}.btn-open-terminal{padding:5px 14px;background:#8b5cf633;border:1px solid rgba(139,92,246,.4);border-radius:4px;color:#a78bfa;font-size:12px;font-weight:600;font-family:inherit;cursor:pointer;transition:background .15s;white-space:nowrap}.btn-open-terminal:hover{background:#8b5cf64d}.job-list{border-bottom:1px solid #1e3a5f;overflow-y:auto;max-height:260px;min-height:80px;background:#16213e}.job-list::-webkit-scrollbar{width:5px}.job-list::-webkit-scrollbar-thumb{background:#2a3a5a;border-radius:3px}.job-list-empty{padding:16px;font-size:12px;color:#475569;text-align:center;font-style:italic}.job-item{display:flex;align-items:center;gap:10px;padding:9px 14px;border-bottom:1px solid #1a2a44;cursor:pointer;transition:background .1s}.job-item:last-child{border-bottom:none}.job-item:hover{background:#1a2a44}.job-item--selected{background:#1a2a44;border-left:3px solid #0ea5e9;padding-left:11px}.job-status-dot{width:8px;height:8px;min-width:8px;border-radius:50%;display:inline-block}.job-status-dot--idle{background:#475569}.job-status-dot--running{background:#0ea5e9;box-shadow:0 0 5px #0ea5e980;animation:job-dot-pulse 1.2s ease-in-out infinite}.job-status-dot--completed{background:#22c55e;box-shadow:0 0 4px #22c55e60}.job-status-dot--failed{background:#ef4444;box-shadow:0 0 4px #ef444460}.job-status-dot--stopped{background:#f59e0b}@keyframes job-dot-pulse{0%,to{opacity:1}50%{opacity:.4}}.job-item-info{display:flex;flex-direction:column;flex:1;overflow:hidden;gap:2px}.job-item-name{font-size:13px;color:#e0e0e0;font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.job-item-paths{font-size:11px;color:#64748b;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-family:Consolas,Menlo,monospace}.job-priority{font-size:10px;padding:2px 6px;border-radius:3px;font-weight:600;text-transform:uppercase;letter-spacing:.4px;white-space:nowrap}.job-priority--high{background:#ef444426;color:#f87171}.job-priority--normal{background:#0ea5e91f;color:#38bdf8}.job-priority--low{background:#4755694d;color:#94a3b8}.job-status-label{font-size:10px;padding:2px 7px;border-radius:3px;font-weight:600;text-transform:capitalize;white-space:nowrap}.job-status-label--running{background:#0ea5e926;color:#38bdf8}.job-status-label--completed{background:#22c55e1f;color:#4ade80}.job-status-label--failed{background:#ef44441f;color:#f87171}.job-status-label--stopped{background:#f59e0b1f;color:#fbbf24}.job-item-actions{display:flex;gap:6px;flex-shrink:0}.job-btn{padding:4px 10px;border-radius:3px;font-size:11px;font-weight:600;font-family:inherit;cursor:pointer;border:1px solid transparent;transition:background .15s,opacity .15s}.job-btn:disabled{opacity:.35;cursor:not-allowed}.job-btn--start{background:#22c55e26;border-color:#22c55e66;color:#4ade80}.job-btn--start:hover:not(:disabled){background:#22c55e40}.job-btn--stop{background:#ef44441f;border-color:#ef444459;color:#f87171}.job-btn--stop:hover:not(:disabled){background:#ef444438}.log-viewer-section{display:flex;flex-direction:column;flex:1;overflow:hidden;min-height:0}.log-viewer-section-header{display:flex;align-items:center;justify-content:space-between;padding:0 14px;height:34px;min-height:34px;border-bottom:1px solid #1e2a3e;background:#111827}.log-viewer-section-title{font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.7px;color:#4a5568}.log-viewer-job-label{font-size:11px;color:#38bdf8;text-transform:none;font-weight:400;letter-spacing:0}.log-viewer-controls{display:flex;align-items:center;gap:6px}.log-viewer-count{font-size:10px;color:#4a5568}.log-scroll-btn{width:22px;height:22px;border:none;border-radius:3px;background:transparent;color:#4a5568;font-size:10px;line-height:1;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:background .12s,color .12s}.log-scroll-btn:hover{background:#0ea5e926;color:#38bdf8}.job-action-btn{width:24px;height:24px;border-radius:3px;border:none;background:transparent;font-size:13px;line-height:1;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:background .12s,color .12s;color:var(--color-text-muted, #64748b);opacity:0;flex-shrink:0}.job-item:hover .job-action-btn{opacity:1}.job-action-btn--edit:hover{background:#0ea5e926;color:#0ea5e9}.job-action-btn--duplicate:hover{background:#a855f726;color:#a855f7}.job-action-btn--delete:hover{background:#ef444426;color:#ef4444}.job-action-btn:disabled{opacity:.3;cursor:not-allowed}.bottom-panel-tabs{display:flex;align-items:center;gap:0;overflow-x:auto;flex:1;min-width:0}.bottom-panel-tab{display:flex;align-items:center;gap:4px;padding:0 12px;height:34px;background:none;border:none;border-bottom:2px solid transparent;font-size:11px;font-weight:600;font-family:inherit;text-transform:uppercase;letter-spacing:.5px;color:#4a5568;cursor:pointer;white-space:nowrap;transition:color .15s,border-color .15s}.bottom-panel-tab:hover{color:#94a3b8}.bottom-panel-tab--active{color:#38bdf8;border-bottom-color:#38bdf8}.bottom-panel-tab-close{display:inline-flex;align-items:center;justify-content:center;width:16px;height:16px;border-radius:3px;font-size:13px;line-height:1;color:inherit;transition:background .12s,color .12s}.bottom-panel-tab-close:hover{background:#ef444433;color:#f87171}
