.auth-container{background:linear-gradient(135deg,#0d1117 0%,#161b22 100%);justify-content:center;align-items:center;min-height:100vh;display:flex}.auth-card{background:#161b22;border:1px solid #30363d;border-radius:12px;width:100%;max-width:450px;padding:40px;box-shadow:0 8px 24px #0000004d}.auth-header{text-align:center;margin-bottom:32px}.auth-header h2{color:#58a6ff;margin-bottom:8px;font-size:28px}.auth-header p{color:#8b949e;font-size:14px}.auth-error{color:#f85149;text-align:center;background:#f8514920;border:1px solid #f85149;border-radius:6px;margin-bottom:20px;padding:12px;font-size:14px}.auth-success{color:#2ea043;text-align:center;background:#2ea04320;border:1px solid #2ea043;border-radius:6px;margin-bottom:20px;padding:12px;font-size:14px}.auth-form{flex-direction:column;gap:20px;display:flex}.form-group{flex-direction:column;gap:8px;display:flex}.form-group label{color:#c9d1d9;font-size:14px;font-weight:500}.form-group input{color:#c9d1d9;background:#0d1117;border:1px solid #30363d;border-radius:6px;padding:10px 12px;font-size:14px;transition:all .2s}.form-group input:focus{border-color:#58a6ff;outline:none;box-shadow:0 0 0 3px #58a6ff20}.form-group input::placeholder{color:#6e7681}.password-input-wrapper{align-items:center;display:flex;position:relative}.password-input-wrapper input{width:100%;padding-right:42px}.password-toggle-btn{color:#8b949e;cursor:pointer;background:0 0;border:none;border-radius:4px;padding:4px 6px;font-size:16px;line-height:1;transition:color .2s;position:absolute;right:8px}.password-toggle-btn:hover{color:#c9d1d9}.auth-button{color:#fff;cursor:pointer;background:#238636;border:none;border-radius:6px;margin-top:10px;padding:12px;font-size:16px;font-weight:500;transition:all .2s}.auth-button:hover:not(:disabled){background:#2ea043;transform:translateY(-1px)}.auth-button:disabled{opacity:.5;cursor:not-allowed}.auth-footer{text-align:center;border-top:1px solid #30363d;margin-top:24px;padding-top:20px}.auth-footer p{color:#8b949e;font-size:14px}.link-button{color:#58a6ff;cursor:pointer;background:0 0;border:none;font-size:14px;text-decoration:underline;transition:color .2s}.link-button:hover{color:#79c0ff}*{box-sizing:border-box;margin:0;padding:0}body{background:var(--bg-app);color:var(--text-primary);font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,sans-serif}:root{--sidebar-width:220px;--topbar-height:64px;--accent-mint:var(--accent);--dashboard-header-height:64px}.app-shell{background:var(--bg-shell);min-height:100vh;display:flex}.app-main{background:var(--bg-app);flex-direction:column;flex:1;min-width:0;display:flex}.page-content{flex:1;padding:20px 24px 32px;overflow-y:auto}.sidebar{width:var(--sidebar-width);background:var(--sidebar-bg);border-right:1px solid var(--border-muted);flex-direction:column;flex-shrink:0;height:100vh;padding:24px 0 16px;display:flex;position:sticky;top:0}.sidebar-brand{padding:0 20px 28px}.sidebar-brand-title{color:var(--accent-mint);margin-bottom:4px;font-size:18px;font-weight:700}.sidebar-brand-subtitle{color:var(--text-muted);font-size:12px}.sidebar-nav{flex-direction:column;flex:1;gap:4px;padding:0 12px;display:flex}.sidebar-footer{border-top:1px solid #1c2a3a;flex-direction:column;gap:4px;padding:12px 12px 0;display:flex}.sidebar-link{color:var(--text-secondary);cursor:pointer;text-align:start;background:0 0;border:none;border-radius:8px;align-items:center;gap:12px;width:100%;padding:10px 12px;font-size:14px;text-decoration:none;transition:color .15s,background .15s;display:flex;position:relative}.sidebar-link:hover{color:var(--text-primary);background:var(--bg-hover)}.sidebar-link.active{color:var(--accent-mint);background:var(--bg-hover)}.sidebar-link.active:after{content:"";background:var(--accent-mint);border-radius:3px 0 0 3px;width:3px;position:absolute;top:8px;bottom:8px;right:-12px}.sidebar-link-icon{text-align:center;opacity:.9;width:18px;font-size:14px}.sidebar-user{background:#0d1524;border:1px solid #1c2a3a;border-radius:10px;align-items:center;gap:10px;margin-top:16px;padding:12px;display:flex}.sidebar-user-avatar{color:#0b1220;background:linear-gradient(135deg,#2ea043,#3ecf8e);border-radius:50%;justify-content:center;align-items:center;width:36px;height:36px;font-size:14px;font-weight:700;display:flex}.sidebar-user-name{color:#e6edf3;font-size:13px;font-weight:600;display:block}.sidebar-user-role{letter-spacing:.06em;color:#6b7c93;margin-top:2px;font-size:10px;display:block}.sidebar-active-indicator{display:none}.topbar{background:var(--topbar-bg);border-bottom:1px solid var(--border-muted);min-height:var(--topbar-height);z-index:100;align-items:center;gap:20px;padding:14px 24px;display:flex;position:sticky;top:0}.topbar-left{flex-shrink:0}.topbar-title{color:#f0f6fc;font-size:20px;font-weight:700;line-height:1.2}.topbar-subtitle{color:#6b7c93;margin-top:2px;font-size:12px}.topbar-search{flex:1;max-width:420px;position:relative}.topbar-search-icon{color:#6b7c93;pointer-events:none;font-size:14px;position:absolute;top:50%;left:12px;transform:translateY(-50%)}.topbar-search-input{border:1px solid var(--border-muted);background:var(--bg-input);width:100%;color:var(--text-primary);border-radius:8px;padding:10px 12px 10px 34px;font-size:14px}.topbar-search-input::placeholder{color:var(--text-muted)}.topbar-search-input:focus{border-color:var(--accent-mint);outline:none}.topbar-right{align-items:center;gap:10px;margin-left:auto;display:flex}.topbar-action-group{align-items:center;gap:6px;display:flex}.topbar-divider{background:#1c2a3a;width:1px;height:28px}.topbar-connection{font-size:12px}.topbar-connection.connected{color:var(--accent-mint)}.topbar-connection.disconnected{color:#6b7c93}.topbar-icon-btn{color:#c9d1d9;cursor:pointer;background:#121c2e;border:1px solid #1c2a3a;border-radius:8px;justify-content:center;align-items:center;width:36px;height:36px;font-size:16px;display:inline-flex}.topbar-icon-btn:hover:not(:disabled){border-color:var(--accent-mint);color:var(--accent-mint)}.topbar-view-toggle{align-items:center;gap:4px;display:inline-flex}.topbar-icon-btn.active{border-color:var(--accent-mint);color:var(--accent-mint);background:#1a2f28}.topbar-primary-btn{color:#0b1220;cursor:pointer;background:linear-gradient(135deg,#2ea043,#3ecf8e);border:none;border-radius:8px;padding:10px 18px;font-size:13px;font-weight:700}.topbar-primary-btn:disabled{opacity:.6;cursor:not-allowed}.topbar-secondary-btn{border:1px solid var(--border-default);background:var(--bg-panel-deep);color:var(--text-primary);cursor:pointer;border-radius:8px;padding:10px 18px;font-size:13px;font-weight:600}.topbar-secondary-btn:hover:not(:disabled){border-color:var(--accent-mint);color:var(--accent-mint)}.topbar-secondary-btn:disabled{opacity:.6;cursor:not-allowed}.page-panel{background:var(--bg-panel);border:1px solid var(--border-default);box-shadow:var(--shadow-panel);border-radius:10px;padding:20px}.services-page{max-width:none;height:calc(100vh - var(--topbar-height) - 52px);flex-direction:column;gap:20px;min-height:480px;display:flex}.services-page-layout{background:#161b22;border:1px solid #30363d;border-radius:10px;flex:1;align-items:stretch;gap:0;min-height:0;display:flex;overflow:hidden}.services-page-main{background:0 0;border:none;border-radius:0;flex:1;min-width:0;padding:20px;transition:flex .28s;overflow-y:auto}.services-page-layout--resizing .services-page-main{transition:none}.services-panel-resizer{cursor:col-resize;z-index:2;touch-action:none;flex-shrink:0;width:8px;margin:0 -4px;position:relative}.services-panel-resizer:after{content:"";background:#30363d;border-radius:1px;width:2px;transition:background .15s,width .15s;position:absolute;top:0;bottom:0;left:50%;transform:translate(-50%)}.services-panel-resizer:hover:after,.services-page-layout--resizing .services-panel-resizer:after{background:var(--accent-mint);width:3px}.services-panel--full{width:100%}.services-logs-panel{background:#0d1117;border-left:1px solid #30363d;flex-shrink:0;align-self:stretch;min-height:0;max-height:100%;transition:width .28s;display:flex;position:relative;overflow:hidden}.services-logs-panel--collapsed{width:44px}.services-logs-panel--expanded{width:460px;max-width:80vw}.services-logs-panel--resizing,.services-page-layout--resizing .services-logs-panel{transition:none}.services-logs-panel-toggle{color:#8b949e;cursor:pointer;background:#121c2e;border:none;border-left:1px solid #30363d;flex-direction:column;flex-shrink:0;justify-content:center;align-items:center;gap:8px;width:44px;padding:12px 6px;transition:background .15s,color .15s;display:flex;position:relative}.services-logs-panel-toggle:hover{color:var(--accent-mint);background:#1a2f28}.services-logs-panel-toggle-icon{font-size:18px;font-weight:700;line-height:1}.services-logs-panel-toggle-label{writing-mode:vertical-rl;text-orientation:mixed;letter-spacing:.08em;text-transform:uppercase;font-size:11px;font-weight:600}.services-logs-panel-activity{background:var(--accent-mint);width:8px;height:8px;box-shadow:0 0 8px var(--accent-mint);border-radius:50%;animation:1.5s ease-in-out infinite logs-activity-pulse;position:absolute;top:10px;right:8px}@keyframes logs-activity-pulse{0%,to{opacity:1;transform:scale(1)}50%{opacity:.6;transform:scale(.85)}}.services-logs-panel-inner{opacity:1;flex-direction:column;flex:1;min-width:0;height:100%;min-height:0;transition:opacity .2s;display:flex;overflow:hidden}.services-logs-panel--collapsed .services-logs-panel-inner{opacity:0;pointer-events:none;width:0;overflow:hidden}.services-logs-panel-header{border-bottom:1px solid #30363d;flex-shrink:0;justify-content:space-between;align-items:flex-start;gap:12px;padding:16px 16px 8px;display:flex}.services-logs-panel-title{color:#f0f6fc;text-transform:uppercase;letter-spacing:.05em;font-size:14px;font-weight:700}.services-logs-panel-subtitle{color:#8b949e;white-space:nowrap;text-overflow:ellipsis;max-width:280px;margin-top:4px;font-size:12px;overflow:hidden}.services-logs-panel-collapse-btn{color:#c9d1d9;cursor:pointer;background:#21262d;border:1px solid #30363d;border-radius:6px;flex-shrink:0;width:28px;height:28px}.services-logs-panel-collapse-btn:hover{border-color:var(--accent-mint);color:var(--accent-mint)}.services-logs-panel-tabs{border-bottom:1px solid #30363d;flex-shrink:0;gap:4px;padding:8px 16px 0;display:flex}.services-logs-panel-body{flex-direction:column;flex:1;min-height:0;padding:12px 16px 16px;display:flex;overflow:hidden}.services-logs-panel-body .deployment-logs--embedded{background:0 0;border:none;flex-direction:column;flex:1;min-height:0;padding:0;display:flex}.services-logs-panel-body .deployment-logs--embedded .logs-header{border-bottom:1px solid #21262d;flex-shrink:0;margin-bottom:10px;padding-bottom:10px}.services-logs-panel-body .deployment-logs--embedded .logs-header h3{font-size:14px}.services-logs-panel-body .deployment-logs--embedded .logs-header-controls{flex-wrap:wrap;gap:6px}.services-logs-panel-body .deployment-logs--embedded .logs-container{scrollbar-gutter:stable;scrollbar-width:thin;scrollbar-color:#484f58 #0d1117;background:#010409;border:1px solid #21262d;border-radius:6px;flex:auto;height:0;min-height:120px;max-height:none;padding:12px;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;font-size:12px;line-height:1.5;overflow:auto scroll}.services-logs-panel-body .deployment-logs--embedded .logs-container::-webkit-scrollbar{width:10px}.services-logs-panel-body .deployment-logs--embedded .logs-container::-webkit-scrollbar-track{background:#0d1117;border-radius:0 6px 6px 0}.services-logs-panel-body .deployment-logs--embedded .logs-container::-webkit-scrollbar-thumb{background:#484f58;border:2px solid #0d1117;border-radius:5px}.services-logs-panel-body .deployment-logs--embedded .logs-container::-webkit-scrollbar-thumb:hover{background:var(--accent-mint)}.services-logs-panel-body .deployment-logs{flex:1;min-height:0}.services-logs-panel-body .logs-container{max-height:none}.services-logs-panel-body .select-service-prompt{flex:1;justify-content:center;align-items:center;min-height:200px;display:flex}.compose-page{min-height:calc(100vh - var(--topbar-height) - 80px)}.drawer-root{z-index:500;justify-content:flex-end;display:flex;position:fixed;inset:0}.drawer-backdrop{cursor:pointer;background:#010409a6;border:none;position:absolute;inset:0}.drawer-panel{background:#161b22;border-left:1px solid #30363d;flex-direction:column;width:min(560px,100vw);height:100%;animation:.2s ease-out drawer-slide-in;display:flex;position:relative;box-shadow:-8px 0 32px #0006}@keyframes drawer-slide-in{0%{transform:translate(100%)}to{transform:translate(0)}}.drawer-header{border-bottom:1px solid #30363d;justify-content:space-between;align-items:flex-start;gap:12px;padding:20px 20px 12px;display:flex}.drawer-title{color:#f0f6fc;font-size:18px;font-weight:700}.drawer-subtitle{color:#8b949e;margin-top:4px;font-size:12px}.drawer-close-btn{color:#c9d1d9;cursor:pointer;background:#21262d;border:1px solid #30363d;border-radius:6px;width:32px;height:32px}.drawer-tabs{border-bottom:1px solid #30363d;gap:8px;padding:12px 20px;display:flex}.drawer-tab{color:#8b949e;cursor:pointer;background:#21262d;border:1px solid #30363d;border-radius:6px;padding:6px 14px;font-size:13px}.drawer-tab.active{color:var(--accent-mint);border-color:var(--accent-mint);background:#1a2f28}.drawer-body{flex:1;min-height:0;padding:16px 20px 24px;overflow-y:auto}.drawer-body .deployment-logs{background:0 0;border:none;min-height:100%;padding:0}.drawer-body .deployment-logs h2{display:none}.drawer-body .logs-container{min-height:300px;max-height:none}.service-action-menu-wrap{position:relative}.service-action-trigger{color:#c9d1d9;cursor:pointer;background:#21262d;border:1px solid #30363d;border-radius:6px;align-items:center;gap:6px;padding:6px 10px;font-size:12px;display:inline-flex}.service-action-caret{color:#8b949e;font-size:10px}.service-action-dropdown,.service-context-menu{z-index:50;background:#161b22;border:1px solid #30363d;border-radius:8px;min-width:180px;padding:6px;position:absolute;top:calc(100% + 4px);right:0;box-shadow:0 8px 24px #0006}.service-context-menu{position:fixed;top:auto;right:auto}.service-action-item{text-align:left;color:#c9d1d9;cursor:pointer;background:0 0;border:none;border-radius:6px;width:100%;padding:8px 12px;font-size:13px;display:block}.service-action-item:hover:not(:disabled){color:var(--accent-mint);background:#21262d}.service-action-item:disabled{opacity:.5;cursor:not-allowed}.service-quick-actions{gap:4px;display:none}.service-quick-action{color:#8b949e;cursor:pointer;white-space:nowrap;background:#0d1117;border:1px solid #30363d;border-radius:4px;padding:4px 8px;font-size:10px}.service-quick-action:hover:not(:disabled){border-color:var(--accent-mint);color:var(--accent-mint)}.services-table-actions{justify-content:flex-end;align-items:center;gap:8px;display:flex}@media (width>=1100px){.service-quick-actions{display:flex}}@media (width<=900px){.app-shell{flex-direction:column}.sidebar{flex-flow:wrap;width:100%;height:auto;padding:12px;position:relative}.sidebar-brand,.sidebar-footer,.sidebar-nav{width:100%}.sidebar-user{display:none}.topbar{flex-wrap:wrap}.topbar-search{order:3;width:100%;max-width:none}}.app{min-height:100vh}.dashboard-page{max-width:1400px;margin:0 auto;padding:16px}.dashboard-page--single{padding-top:24px}.dashboard-layout{grid-template-columns:minmax(320px,.95fr) minmax(420px,1.35fr);align-items:start;gap:20px;display:grid}.panel-title{color:#c9d1d9;text-transform:uppercase;letter-spacing:.04em;margin-bottom:16px;font-size:16px;font-weight:600}.services-panel{background:#161b22;border:1px solid #30363d;border-radius:8px;padding:16px}.services-panel-header{flex-direction:column;gap:10px;margin-bottom:14px;display:flex}.services-compose-select{margin-bottom:0}.services-list{grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:10px;display:grid}.services-table-wrapper{border:1px solid #30363d;border-radius:8px;overflow-x:auto}.services-table{border-collapse:collapse;width:100%;font-size:13px}.services-table th,.services-table td{text-align:left;vertical-align:middle;border-bottom:1px solid #30363d;padding:10px 12px}.services-table th{color:#8b949e;text-transform:uppercase;letter-spacing:.04em;white-space:nowrap;background:#0d1117;font-size:11px;font-weight:600}.services-table tbody tr:hover{background:#0d1117}.services-table tbody tr:last-child td{border-bottom:none}.services-table-service{min-width:140px}.services-table-title{color:#c9d1d9;margin-bottom:2px;font-weight:600;display:block}.services-table-desc{color:#8b949e;text-overflow:ellipsis;white-space:nowrap;max-width:220px;font-size:11px;line-height:1.3;display:block;overflow:hidden}.services-table-notify-badge{opacity:.85;margin-left:6px;font-size:12px;display:inline-block}.services-table-code{color:#d29922;background:#21262d;border-radius:4px;padding:2px 6px;font-family:monospace;font-size:12px}.services-table-port{color:#79c0ff;background:#21262d;border-radius:4px;padding:2px 6px;font-family:monospace;font-size:12px}.services-table-muted{color:#6e7681;font-size:12px}.services-table-actions-col{white-space:nowrap;width:1%}.services-table-actions{flex-wrap:nowrap;align-items:center;gap:6px;display:flex}.services-table-empty{text-align:center;padding:24px}.logs-panel{flex-direction:column;gap:20px;display:flex}.logs-panel-card{background:#161b22;border:1px solid #30363d;border-radius:8px;padding:16px 20px 20px}.logs-panel-toolbar{border-bottom:1px solid #30363d;flex-wrap:wrap;align-items:center;gap:16px;margin-bottom:16px;padding-bottom:12px;display:flex}.logs-panel-label{color:#8b949e;text-transform:uppercase;letter-spacing:.06em;font-size:12px;font-weight:600}.logs-tabs{flex:1;gap:4px;display:flex}.logs-tab{color:#8b949e;cursor:pointer;background:0 0;border:none;border-bottom:2px solid #0000;border-radius:6px 6px 0 0;padding:8px 14px;font-size:14px;font-weight:500;transition:color .2s,border-color .2s}.logs-tab:hover{color:#c9d1d9}.logs-tab.active{color:#58a6ff;border-bottom-color:#58a6ff}.logs-panel-toolbar-actions{gap:8px;margin-left:auto;display:flex}.logs-panel-body{min-height:320px}.logs-panel-body .deployment-logs{background:0 0;border:none;flex:none;min-height:300px;padding:0}.logs-panel-body .deployment-logs h2{display:none}.logs-panel-body .logs-container{min-height:260px;max-height:420px}.logs-panel--fullscreen{inset:var(--dashboard-header-height) 0 0 0;z-index:150;background:#0d1117;padding:16px 20px;position:fixed;overflow-y:auto}.logs-panel--fullscreen .logs-panel-card{min-height:calc(100vh - var(--dashboard-header-height) - 32px);flex-direction:column;display:flex}.logs-panel--fullscreen .logs-panel-body,.logs-panel--fullscreen .logs-panel-body .deployment-logs{flex-direction:column;flex:1;min-height:0;display:flex}.logs-panel--fullscreen .logs-panel-body .logs-container{flex:1;max-height:none}.loading-container{flex-direction:column;justify-content:center;align-items:center;height:100vh;display:flex}.spinner{border:3px solid #30363d;border-top-color:#58a6ff;border-radius:50%;width:50px;height:50px;margin-bottom:20px;animation:1s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.header-content{justify-content:space-between;align-items:center;max-width:1400px;margin:0 auto;display:flex}.header h1{color:#58a6ff;margin-bottom:8px;font-size:24px}.header p{color:#8b949e;margin-bottom:8px;font-size:14px}.connection-status{border-radius:12px;padding:2px 8px;font-size:12px}.connection-status.connected{color:#2ea043;background:#2ea04320}.connection-status.disconnected{color:#f85149;background:#f8514920}.deploy-all-btn{color:#fff;cursor:pointer;background:#238636;border:none;border-radius:6px;padding:10px 20px;font-size:14px;font-weight:500;transition:all .2s}.deploy-all-btn:hover:not(:disabled){background:#2ea043;transform:scale(1.02)}.deploy-all-btn:disabled{opacity:.5;cursor:not-allowed}.stats-bar{grid-template-columns:repeat(6,minmax(0,1fr));gap:10px;width:100%;margin-bottom:16px;display:grid}.stat-card{text-align:center;background:#161b22;border:1px solid #30363d;border-radius:8px;flex-direction:column;justify-content:center;min-height:72px;padding:12px 10px;display:flex}.stat-value{margin-bottom:2px;font-size:22px;font-weight:700}.stat-label{color:#8b949e;text-transform:uppercase;letter-spacing:.03em;font-size:10px}.container{grid-template-columns:1fr 1fr;gap:20px;max-width:1400px;margin:0 auto;padding:20px;display:grid}.container--logs-expanded{grid-template-columns:minmax(260px,32%) 1fr;max-width:none}.services-section{background:#161b22;border:1px solid #30363d;border-radius:8px;height:calc(100vh - 200px);padding:20px;overflow-y:auto}.services-section--compact{max-height:calc(100vh - 180px)}.services-section h2{color:#58a6ff;margin-bottom:20px;font-size:18px}.services-grid{gap:12px;display:grid}.service-card{background:#0d1117;border:1px solid #30363d;border-radius:8px;padding:12px;transition:border-color .2s,box-shadow .2s}.service-card:hover{border-color:#58a6ff;box-shadow:0 4px 12px #00000040}.service-card-top{justify-content:space-between;align-items:flex-start;gap:8px;margin-bottom:6px;display:flex}.service-card-meta{flex-shrink:0;align-items:center;gap:4px;display:flex}.service-status-pill{text-transform:uppercase;letter-spacing:.04em;border:1px solid #0000;border-radius:999px;padding:3px 8px;font-size:10px;font-weight:600}.service-status-pill.status-running{color:#2ea043;background:#2ea04318;border-color:#2ea04340}.service-status-pill.status-stopped{color:#f85149;background:#f8514918;border-color:#f8514940}.service-status-pill.status-created,.service-status-pill.status-restarting{color:#d29922;background:#d2992218;border-color:#d2992240}.service-status-pill.status-unknown{color:#8b949e;background:#8b949e18;border-color:#8b949e40}.service-unregistered-pill{text-transform:uppercase;letter-spacing:.04em;color:#d29922;background:#d2992218;border:1px solid #d2992240;border-radius:999px;margin-top:.35rem;padding:.1rem .45rem;font-size:.68rem;display:inline-block}.service-header{justify-content:space-between;align-items:flex-start;margin-bottom:8px;display:flex}.service-info{flex:1}.service-info h3{color:#c9d1d9;margin-bottom:2px;font-size:14px;line-height:1.3}.service-name{color:#8b949e;font-family:monospace;font-size:11px}.status-indicator{margin-left:8px;font-size:16px}.service-status-text{margin-bottom:8px;font-size:12px}.service-status-text strong{text-transform:uppercase;font-size:11px}.status-running{color:#2ea043}.status-stopped{color:#f85149}.status-created{color:#d29922}.service-description{color:#8b949e;-webkit-line-clamp:2;-webkit-box-orient:vertical;margin-bottom:8px;font-size:11px;line-height:1.4;display:-webkit-box;overflow:hidden}.service-action-bar{flex-wrap:wrap;align-items:center;gap:6px;display:flex}.service-action-divider{background:#30363d;width:1px;height:22px;margin:0 2px}.action-icon-btn{color:#c9d1d9;cursor:pointer;background:#21262d;border:1px solid #30363d;border-radius:6px;justify-content:center;align-items:center;width:32px;height:32px;padding:0;font-size:14px;line-height:1;transition:background .15s,border-color .15s,transform .15s;display:inline-flex}.action-icon-btn:hover:not(:disabled){background:#30363d;border-color:#58a6ff;transform:translateY(-1px)}.action-icon-btn:active:not(:disabled){transform:translateY(0)}.action-icon-btn:disabled{opacity:.45;cursor:not-allowed}.action-icon-btn--deploy{color:#fff;background:#238636;border-color:#2ea043}.action-icon-btn--deploy:hover:not(:disabled){background:#2ea043}.action-icon-btn--start{color:#fff;background:#2ea043;border-color:#3fb950}.action-icon-btn--start:hover:not(:disabled){background:#3fb950}.action-icon-btn--stop{color:#fff;background:#da3633;border-color:#f85149}.action-icon-btn--stop:hover:not(:disabled){background:#f85149}.action-icon-btn--ghost{background:0 0;border-color:#0000;width:28px;height:28px;font-size:13px}.action-icon-btn--ghost:hover:not(:disabled){background:#21262d;border-color:#30363d}.service-actions{flex-wrap:wrap;gap:8px;display:flex}.deploy-btn,.logs-btn,.start-btn,.stop-btn{cursor:pointer;border:none;border-radius:6px;flex:calc(50% - 4px);min-width:110px;padding:8px 12px;font-size:13px;font-weight:500;transition:all .2s}.deploy-btn{color:#fff;background:#238636}.deploy-btn:hover:not(:disabled){background:#2ea043}.deploy-btn:disabled{opacity:.5;cursor:not-allowed}.logs-btn{color:#c9d1d9;background:#21262d;border:1px solid #30363d}.logs-btn:hover{background:#30363d}.logs-section{flex-direction:column;gap:20px;height:calc(100vh - 200px);min-height:0;display:flex}.logs-section--expanded{height:calc(100vh - 180px)}.logs-section--fullscreen{z-index:1100;background:#0d1117;gap:12px;height:100vh;padding:16px;position:fixed;inset:0}.logs-section-toolbar{background:#161b22;border:1px solid #30363d;border-radius:8px;flex-shrink:0;justify-content:space-between;align-items:center;padding:10px 14px;display:flex}.logs-section-title{color:#58a6ff;font-size:14px;font-weight:600}.logs-section-toolbar-actions{gap:8px;display:flex}.logs-panel-btn{color:#c9d1d9;cursor:pointer;background:#21262d;border:1px solid #30363d;border-radius:6px;padding:6px 12px;font-size:13px;transition:background .2s,border-color .2s}.logs-panel-btn:hover{color:#58a6ff;background:#30363d;border-color:#58a6ff}.logs-section--fullscreen .deployment-logs{flex:1}.logs-section--expanded .deployment-logs,.logs-section--fullscreen .deployment-logs{min-height:0}.deployment-logs{background:#161b22;border:1px solid #30363d;border-radius:8px;flex-direction:column;flex:2;min-height:0;padding:20px;display:flex}.deployment-logs h2{color:#58a6ff;margin-bottom:16px;font-size:18px}.logs-header{border-bottom:1px solid #30363d;justify-content:space-between;align-items:center;margin-bottom:16px;padding-bottom:12px;display:flex}.logs-header h3{color:#d29922;margin-bottom:4px;font-size:16px}.service-badge{color:#8b949e;background:#21262d;border-radius:4px;padding:2px 6px;font-family:monospace;font-size:11px}.logs-header-meta{color:#8b949e;flex-wrap:wrap;align-items:center;gap:6px;margin:6px 0 0;font-size:12px;display:flex}.logs-header-meta-sep{color:#484f58}.close-btn{color:#c9d1d9;cursor:pointer;background:#21262d;border:none;border-radius:6px;padding:6px 12px;font-size:14px;transition:all .2s}.close-btn:hover{color:#fff;background:#da3633}.logs-container{background:#0d1117;border-radius:6px;flex:1;padding:12px;font-family:Courier New,monospace;font-size:12px;overflow-y:auto}.log-line{white-space:pre-wrap;word-break:break-all;border-bottom:1px solid #21262d;padding:4px 0}.log-text{color:#8b949e}.no-logs,.select-service-prompt,.no-deployments{color:#8b949e;text-align:center;padding:40px}.select-service-prompt{flex:1;justify-content:center;align-items:center;display:flex}.select-service-prompt--clickable{cursor:pointer;width:100%;font:inherit;color:inherit;background:0 0;border:none}.select-service-prompt--clickable:hover:not(:disabled) .prompt-content p{color:#c9d1d9}.select-service-prompt--clickable:disabled{cursor:default}.prompt-content{text-align:center}.prompt-icon{margin-bottom:16px;font-size:48px;display:block}.prompt-content p{margin-bottom:8px}.prompt-content small{opacity:.7;font-size:12px}.deploying-indicator{text-align:center;background:#21262d;border-radius:6px;justify-content:center;align-items:center;gap:8px;margin-top:12px;padding:8px;display:flex}.spinner-small{border:2px solid #30363d;border-top-color:#58a6ff;border-radius:50%;width:16px;height:16px;animation:1s linear infinite spin;display:inline-block}.recent-deployments{background:#161b22;border:1px solid #30363d;border-radius:8px;padding:20px}.deployments-page-header{justify-content:space-between;align-items:flex-start;gap:16px;margin-bottom:16px;display:flex}.deployments-page-subtitle{margin-top:4px;font-size:13px}.deployments-page .recent-deployments{flex:1}.services-panel-header-row{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;display:flex}.services-panel-actions{align-items:center;gap:8px;display:flex}.deployments-list{flex-direction:column;gap:10px;display:flex}.deployment-item{background:#0d1117;border:1px solid #30363d;border-radius:6px;justify-content:space-between;align-items:center;gap:12px;padding:12px 14px;display:flex}.deployment-item--selected{background:#161b22;border-color:#58a6ff;box-shadow:inset 0 0 0 1px #58a6ff40}.deployment-item-actions{flex-shrink:0;align-items:center;gap:8px;display:flex}.deployment-logs-btn{color:#c9d1d9;cursor:pointer;white-space:nowrap;background:#0d1117;border:1px solid #30363d;border-radius:4px;padding:4px 10px;font-size:12px;font-weight:500}.deployment-logs-btn:hover{color:#58a6ff;border-color:#58a6ff}.deployment-item-main{align-items:center;gap:12px;min-width:0;display:flex}.deployment-item-icon{flex-shrink:0;font-size:18px}.deployment-item-info{flex-direction:column;gap:2px;min-width:0;display:flex}.deployment-service{color:#c9d1d9;font-size:14px;font-weight:600}.deployment-time{color:#8b949e;text-transform:uppercase;letter-spacing:.03em;font-size:11px}.deployment-id{color:#6e7681;font-family:monospace;font-size:11px}.deployment-status-badge{text-transform:uppercase;letter-spacing:.04em;border-radius:4px;flex-shrink:0;padding:4px 10px;font-size:11px;font-weight:600}.deployment-status-badge.status-completed{color:#2ea043;background:#2ea04325;border:1px solid #2ea04350}.deployment-status-badge.status-failed{color:#f85149;background:#f8514925;border:1px solid #f8514950}.deployment-status-badge.status-running{color:#d29922;background:#d2992225;border:1px solid #d2992250}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-track{background:#161b22}::-webkit-scrollbar-thumb{background:#30363d;border-radius:4px}::-webkit-scrollbar-thumb:hover{background:#58a6ff}@media (width<=1200px){.dashboard-layout{grid-template-columns:1fr}}@media (width<=1024px){.stats-bar{grid-template-columns:repeat(3,minmax(0,1fr))}.logs-panel--fullscreen{inset:var(--dashboard-header-height) 0 0 0}}@media (width<=768px){.dashboard-page{padding:12px}.header h1{font-size:18px}.header-brand p,.user-badge{display:none}.nav-btn{padding:6px 10px;font-size:12px}}@media (width<=480px){.stats-bar{grid-template-columns:repeat(2,minmax(0,1fr))}.header-content{flex-direction:column;align-items:flex-start;gap:10px}.header-right{justify-content:flex-start;width:100%}.main-nav{flex-wrap:wrap}}.header-right{flex-wrap:wrap;align-items:center;gap:10px;display:flex}.header-action-group{align-items:center;gap:6px;display:flex}.header-icon-btn{color:#c9d1d9;cursor:pointer;background:#21262d;border:1px solid #30363d;border-radius:6px;justify-content:center;align-items:center;width:36px;height:36px;padding:0;font-size:16px;line-height:1;transition:background .15s,border-color .15s;display:inline-flex}.header-icon-btn:hover:not(:disabled){background:#30363d;border-color:#58a6ff}.header-icon-btn:disabled{opacity:.5;cursor:not-allowed}.header-icon-btn--primary{background:#238636;border-color:#2ea043}.header-icon-btn--primary:hover:not(:disabled){background:#2ea043}.main-nav{gap:6px;display:flex}.nav-btn{color:#c9d1d9;cursor:pointer;background:#21262d;border:1px solid #30363d;border-radius:6px;padding:6px 12px;font-size:13px}.nav-btn.active,.nav-btn:hover{color:#58a6ff;background:#30363d;border-color:#58a6ff}.user-menu{align-items:center;gap:10px;display:flex}.user-badge{color:#8b949e;background:#21262d;border:1px solid #30363d;border-radius:16px;padding:6px 12px;font-size:13px}.logout-btn{color:#f85149;cursor:pointer;background:0 0;border:1px solid #f85149;border-radius:6px;padding:6px 10px;font-size:12px}.logout-btn:hover{background:#f8514920}.service-header-actions{align-items:center;gap:8px;display:flex}.icon-btn{cursor:pointer;background:0 0;border:none;padding:4px;font-size:16px}.start-btn{color:#fff;background:#2ea043}.stop-btn{color:#fff;background:#f85149}.start-btn:disabled,.stop-btn:disabled{opacity:.5;cursor:not-allowed}.logs-btn.secondary{color:#8b949e;background:#21262d}.logs-header-controls{align-items:center;gap:10px;display:flex}.tail-control{color:#8b949e;align-items:center;gap:6px;font-size:13px;display:flex}.tail-control select{color:#c9d1d9;background:#21262d;border:1px solid #30363d;border-radius:4px;padding:4px 8px}.refresh-btn{color:#58a6ff;cursor:pointer;background:#21262d;border:1px solid #30363d;border-radius:6px;padding:6px 12px;font-size:13px}.create-user-btn{color:#fff;cursor:pointer;background:#238636;border:1px solid #2ea043;border-radius:6px;padding:6px 14px;font-size:13px;font-weight:500}.create-user-btn:hover:not(:disabled){background:#2ea043}.create-user-btn:disabled,.refresh-btn:disabled{opacity:.6;cursor:not-allowed}.compose-console{flex-direction:column;gap:14px;min-height:300px;display:flex}.compose-console-header{flex-wrap:wrap;justify-content:space-between;align-items:flex-start;gap:12px;display:flex}.compose-console-header h3{color:#d29922;margin-bottom:4px;font-size:16px}.compose-console-hint{color:#8b949e;font-size:12px}.compose-console-hint code{color:#c9d1d9;background:#21262d;border-radius:4px;padding:1px 5px;font-family:monospace}.compose-presets{flex-wrap:wrap;gap:8px;display:flex}.compose-preset-btn{color:#c9d1d9;cursor:pointer;background:#21262d;border:1px solid #30363d;border-radius:16px;padding:6px 12px;font-size:12px;transition:border-color .2s,color .2s}.compose-preset-btn:hover:not(:disabled){color:#58a6ff;border-color:#58a6ff}.compose-preset-btn:disabled{opacity:.5;cursor:not-allowed}.compose-input-row{flex-wrap:wrap;align-items:stretch;gap:8px;display:flex}.compose-input-prefix{color:#8b949e;white-space:nowrap;background:#0d1117;border:1px solid #30363d;border-radius:6px;align-items:center;padding:0 12px;font-family:monospace;font-size:13px;display:flex}.compose-input{color:#c9d1d9;background:#0d1117;border:1px solid #30363d;border-radius:6px;flex:1;min-width:200px;padding:10px 12px;font-family:monospace;font-size:13px}.compose-input:focus{border-color:#58a6ff;outline:none}.compose-run-btn{flex:none;min-width:100px}.compose-output{min-height:260px;max-height:420px}.compose-error{margin:0}.compose-file-modal{max-width:900px}.compose-file-toolbar{justify-content:space-between;align-items:center;gap:12px;margin-bottom:10px;display:flex}.compose-file-toolbar-left{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.compose-file-dirty{color:#d29922;font-size:12px}.compose-file-editor{color:#c9d1d9;resize:vertical;background:#0d1117;border:1px solid #30363d;border-radius:8px;width:100%;min-height:420px;max-height:60vh;margin-bottom:16px;padding:14px;font-family:Courier New,monospace;font-size:13px;line-height:1.5}.compose-file-editor:focus{border-color:#58a6ff;outline:none}.compose-files-modal{max-width:760px}.compose-files-toolbar{margin-bottom:12px}.compose-files-create-form{background:#0d1117;border:1px solid #30363d;border-radius:8px;flex-direction:column;gap:12px;margin-bottom:16px;padding:14px;display:flex}.compose-files-form-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;display:grid}.compose-files-create-form label{color:#8b949e;flex-direction:column;gap:6px;font-size:12px;display:flex}.compose-files-create-form input,.compose-files-create-form select{color:#c9d1d9;background:#161b22;border:1px solid #30363d;border-radius:6px;padding:8px 10px;font-size:13px}.compose-files-list{flex-direction:column;gap:10px;max-height:420px;display:flex;overflow-y:auto}.compose-file-item{background:#0d1117;border:1px solid #30363d;border-radius:8px;justify-content:space-between;align-items:flex-start;gap:12px;padding:12px 14px;display:flex}.compose-file-item-title{align-items:center;gap:8px;margin-bottom:4px;display:flex}.compose-file-badge{text-transform:uppercase;color:#58a6ff;background:#58a6ff18;border:1px solid #58a6ff40;border-radius:999px;padding:2px 8px;font-size:10px}.compose-file-item-meta{flex-wrap:wrap;gap:10px;font-size:12px;display:flex}.compose-file-item-meta code{color:#d29922}.compose-file-item-desc{color:#8b949e;margin-top:6px;font-size:12px}.compose-file-item-actions{flex-shrink:0;gap:6px;display:flex}.compose-file-select-row{flex-wrap:wrap;align-items:center;gap:10px;margin-bottom:12px;display:flex}.compose-file-select-label{color:#8b949e;text-transform:uppercase;letter-spacing:.04em;font-size:12px}.compose-file-select{color:#c9d1d9;background:#0d1117;border:1px solid #30363d;border-radius:6px;flex:1;min-width:220px;padding:8px 10px;font-size:13px}@media (width<=600px){.compose-files-form-grid{grid-template-columns:1fr}}.logs-panel--fullscreen .compose-output{flex:1;max-height:none}.create-user-form{flex-direction:column;gap:14px;display:flex}.create-user-form .form-field{flex-direction:column;gap:6px;display:flex}.create-user-form label{color:#8b949e;font-size:13px}.create-user-form input,.create-user-form select{color:#c9d1d9;background:#0d1117;border:1px solid #30363d;border-radius:6px;padding:10px 12px}.form-field-checkbox{align-items:center;flex-direction:row!important;gap:8px!important}.form-field-checkbox input[type=checkbox]{width:auto;padding:0}.form-field-group{flex-direction:column;gap:8px;display:flex}.form-field-label{color:#8b949e;font-size:13px}.form-actions{justify-content:flex-end;gap:10px;margin-top:8px;display:flex}.docker-logs{font-family:Consolas,Monaco,monospace;font-size:12px}.user-management,.profile-page{max-width:1400px;margin:0 auto;padding:24px}.section-header{justify-content:space-between;align-items:center;margin-bottom:20px;display:flex}.tab-buttons{gap:8px;display:flex}.tab-btn{color:#c9d1d9;cursor:pointer;background:#21262d;border:1px solid #30363d;border-radius:6px;padding:8px 16px}.tab-btn.active{color:#58a6ff;background:#58a6ff20;border-color:#58a6ff}.user-toolbar{gap:10px;margin-bottom:16px;display:flex}.user-toolbar input{color:#c9d1d9;background:#0d1117;border:1px solid #30363d;border-radius:6px;flex:1;padding:10px 14px}.users-table-wrapper{border:1px solid #30363d;border-radius:8px;overflow-x:auto}.users-table{border-collapse:collapse;width:100%;font-size:14px}.users-table th,.users-table td{text-align:left;border-bottom:1px solid #30363d;padding:12px 14px}.users-table th{color:#8b949e;background:#161b22;font-weight:600}.users-table tr:hover{background:#161b22}.rbac-management{margin-top:8px}.rbac-toolbar{flex-wrap:wrap;gap:10px;margin-bottom:16px;display:flex}.rbac-grid{grid-template-columns:1fr 1fr;gap:20px;display:grid}@media (width<=1100px){.rbac-grid{grid-template-columns:1fr}}.rbac-panel{background:#0d1117;border:1px solid #30363d;border-radius:8px;padding:16px}.rbac-panel h3{margin:0 0 12px}.rbac-group{border:1px solid #21262d;border-radius:6px;margin-bottom:12px;padding:8px 12px}.rbac-group summary{cursor:pointer;list-style:none}.rbac-perm-list{color:#8b949e;margin:8px 0 0;padding-left:18px;font-size:13px}.rbac-perm-list code{color:#79c0ff;margin-right:6px}.rbac-checkboxes{background:#0d1117;border:1px solid #30363d;border-radius:6px;flex-direction:column;gap:6px;max-height:220px;padding:8px;display:flex;overflow-y:auto}.rbac-service-list{max-height:160px}.checkbox-label{align-items:center;gap:8px;font-size:13px;display:flex}.checkbox-label code{color:#8b949e;font-size:11px}.rbac-perm-picker{max-height:320px;overflow-y:auto}.rbac-perm-picker>label{color:#8b949e;margin-bottom:8px;font-size:13px;display:block}.rbac-form .form-field select{color:#c9d1d9;background:#0d1117;border:1px solid #30363d;border-radius:6px;width:100%;padding:10px 12px}.rbac-modal{max-width:760px}.rbac-modal .modal-header h3{color:#c9d1d9;margin:0}.rbac-perm-group{margin-bottom:12px}.rbac-perm-group strong{color:#58a6ff;margin-bottom:6px;font-size:13px;display:block}.rbac-perm-group-header{justify-content:space-between;align-items:center;gap:12px;margin-bottom:6px;display:flex}.rbac-perm-group-header strong{margin-bottom:0}.select-all-label{border-bottom:1px solid #30363d;margin-bottom:4px;padding-bottom:6px}.select-all-label strong{color:#c9d1d9;font-size:12px}.text-muted{color:#8b949e;font-size:12px}.badge{color:#8b949e;background:#21262d;border-radius:4px;margin-left:6px;padding:1px 6px;font-size:10px;display:inline-block}.user-blocked{opacity:.6}.user-actions{flex-wrap:wrap;align-items:center;gap:6px;display:flex}.user-manage-menu{display:inline-block}.action-btn{color:#c9d1d9;cursor:pointer;background:#21262d;border:1px solid #30363d;border-radius:4px;padding:4px 10px;font-size:12px}.action-btn.danger{color:#f85149;border-color:#f85149}.action-btn:hover{background:#30363d}.status-active{color:#2ea043}.status-blocked{color:#f85149}.loading-inline{text-align:center;color:#8b949e;padding:40px}.profile-card{background:#161b22;border:1px solid #30363d;border-radius:8px;margin-bottom:20px;padding:24px}.profile-info{gap:12px;display:grid}.profile-info div{border-bottom:1px solid #21262d;justify-content:space-between;padding:8px 0;display:flex}.profile-info span{color:#8b949e}.profile-form{max-width:400px}.role-badge{text-transform:uppercase;border-radius:4px;padding:2px 8px;font-size:12px}.role-admin{color:#58a6ff;background:#58a6ff20}.role-user{color:#8b949e;background:#8b949e20}.modal-overlay{z-index:1000;background:#000000b3;justify-content:center;align-items:center;padding:20px;display:flex;position:fixed;inset:0}.modal-card{background:#161b22;border:1px solid #30363d;border-radius:12px;width:100%;max-width:600px;max-height:90vh;padding:24px;overflow-y:auto}.modal-header{justify-content:space-between;align-items:center;margin-bottom:20px;display:flex}.modal-section{border-top:1px solid #30363d;margin-bottom:20px;padding-top:16px}.modal-section h4{color:#58a6ff;margin-bottom:12px}.form-row{flex-wrap:wrap;gap:8px;display:flex}.form-row input{color:#c9d1d9;background:#0d1117;border:1px solid #30363d;border-radius:6px;flex:1;min-width:140px;padding:8px 12px}.sessions-list{flex-direction:column;gap:8px;display:flex}.session-item{background:#0d1117;border:1px solid #30363d;border-radius:6px;padding:10px;font-size:13px}.muted{color:#8b949e;font-size:12px}.token-display{align-items:center;gap:8px;margin-top:10px;display:flex}.token-display code{word-break:break-all;background:#0d1117;border-radius:4px;flex:1;padding:8px;font-size:12px}.auth-success{color:#2ea043;background:#2ea04320;border:1px solid #2ea043;border-radius:6px;margin-bottom:16px;padding:12px;font-size:14px}.register-service-btn{color:#fff;cursor:pointer;background:#238636;border:none;border-radius:6px;padding:10px 16px;font-size:14px}.register-service-btn:hover{background:#2ea043}.modal-card-wide{max-width:760px}.register-service-form,.upload-files-form{flex-direction:column;gap:14px;display:flex}.register-service-form label,.upload-files-form label{color:#8b949e;flex-direction:column;gap:6px;font-size:13px;display:flex}.register-service-form input,.register-service-form select,.register-service-form textarea,.upload-files-form input{color:#c9d1d9;background:#0d1117;border:1px solid #30363d;border-radius:6px;padding:8px 12px}.form-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;display:grid}.checkbox-label{align-items:center;flex-direction:row!important;gap:8px!important}.muted-text{color:var(--text-secondary);margin-bottom:4px;font-size:13px}.files-list{margin-bottom:16px}.modal-actions{justify-content:flex-end;gap:8px;margin-top:8px;display:flex}.primary-btn,.secondary-btn{cursor:pointer;border:none;border-radius:6px;padding:8px 14px}.primary-btn{color:#fff;background:#238636}.secondary-btn{color:#c9d1d9;background:#30363d}.error-message{color:#f85149;font-size:13px}.success-message{color:#2ea043;font-size:13px}.service-files-modal{max-width:960px}.service-files-layout{grid-template-columns:280px 1fr;gap:16px;min-height:320px;margin-bottom:16px;display:grid}.service-files-tree,.service-files-content{background:#0d1117;border:1px solid #30363d;border-radius:8px;flex-direction:column;max-height:480px;padding:12px;display:flex;overflow:auto}.service-files-tree-header,.service-files-content-header{justify-content:space-between;align-items:center;gap:8px;margin-bottom:10px;display:flex}.service-files-tree-body{flex:1;min-height:180px;overflow:auto}.service-files-tree-actions{border-top:1px solid #30363d;flex-direction:column;gap:8px;margin-top:12px;padding-top:12px;display:flex}.tree-action-row{align-items:center;gap:8px;display:flex}.tree-action-row input[type=text],.tree-action-row input:not([type=file]){color:#c9d1d9;background:#161b22;border:1px solid #30363d;border-radius:6px;flex:1;padding:6px 10px;font-size:13px}.tree-action-row input[type=file]{color:#8b949e;flex:1;font-size:12px}.tree-action-hint{font-size:11px;line-height:1.4}.service-files-tree h4,.service-files-content h4{color:#58a6ff;margin-bottom:0;font-size:14px}.file-tree{margin:0;padding:0;list-style:none}.file-tree li{margin-bottom:4px}.file-tree-dir .file-tree-label{color:#c9d1d9;margin-bottom:4px;font-size:13px;display:block}.file-tree-file{text-align:left;color:#c9d1d9;cursor:pointer;background:0 0;border:none;border-radius:4px;justify-content:space-between;gap:8px;width:100%;padding:4px 6px;font-size:13px;display:flex}.file-tree-file:hover,.file-tree-file.selected,.file-tree-folder:hover,.file-tree-folder.selected{color:#58a6ff;background:#21262d}.file-tree-folder{text-align:left;color:#c9d1d9;cursor:pointer;background:0 0;border:none;border-radius:4px;width:100%;padding:4px 6px;font-size:13px}.file-tree-meta{color:#8b949e;flex-shrink:0;font-size:11px}.file-content-preview{white-space:pre-wrap;word-break:break-word;color:#c9d1d9;margin:0;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:12px;line-height:1.5}.file-content-editor{resize:vertical;color:#c9d1d9;background:#161b22;border:1px solid #30363d;border-radius:6px;flex:1;width:100%;min-height:320px;padding:12px;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:12px;line-height:1.5}.health-dashboard{min-height:calc(100vh - var(--topbar-height) - 52px);flex-direction:column;gap:20px;display:flex}.health-charts-page{gap:16px}.health-summary-section{flex-direction:column;gap:12px;display:flex}.health-summary-bar{grid-template-columns:repeat(5,minmax(0,1fr));gap:16px;display:grid}.health-stat-card{background:var(--bg-panel);border:1px solid var(--border-default);border-radius:10px;padding:18px 20px}.health-stat-card-top{justify-content:space-between;align-items:center;margin-bottom:8px;display:flex}.health-stat-icon{opacity:.9;font-size:18px}.health-stat-value{font-size:28px;font-weight:700;line-height:1}.health-stat-label{color:var(--text-secondary);text-transform:uppercase;letter-spacing:.05em;font-size:12px}.health-stat-sub{color:#6b7c93;margin-top:4px;font-size:11px}.health-infra-strip{background:#0d1117;border:1px solid #30363d;border-radius:8px;flex-wrap:wrap;gap:16px 24px;padding:12px 16px;font-size:12px;display:flex}.health-infra-item{color:#c9d1d9;align-items:center;gap:8px;display:flex}.health-infra-label{color:#6b7c93;text-transform:uppercase;letter-spacing:.04em;font-size:10px}.health-nginx-pill{text-transform:uppercase;border-radius:4px;padding:2px 8px;font-size:11px;font-weight:600}.health-nginx-pill.status-healthy{color:#3ecf8e;background:#2ea04325}.health-nginx-pill.status-degraded{color:#f85149;background:#f8514925}.health-nginx-pill.status-not_configured{color:#8b949e;background:#30363d}.health-dashboard-body{flex:1;grid-template-columns:minmax(0,1fr) 320px;align-items:start;gap:20px;min-height:0;display:grid}.health-services-grid{grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:16px;display:grid}.health-services-empty{text-align:center;grid-column:1/-1;padding:40px}.health-services-section{flex-direction:column;gap:16px;min-width:0;display:flex}.health-compose-select{margin-bottom:0}.health-compose-filter-hint{font-size:12px}.health-services-table-wrapper{overflow-x:auto}.health-services-table{border-collapse:collapse;width:100%;font-size:13px}.health-services-table th,.health-services-table td{text-align:left;vertical-align:top;border-bottom:1px solid #30363d;padding:10px 12px}.health-services-table th{color:#8b949e;text-transform:uppercase;letter-spacing:.05em;font-size:11px;font-weight:600}.health-services-table-name{color:#f0f6fc;font-weight:600}.health-services-table-sub{color:#6e7681;margin-top:2px;font-size:11px}.health-services-table-code{color:#d29922;font-family:monospace;font-size:12px}.health-services-table-compose{color:#c9d1d9;font-size:12px}.health-services-table-muted{color:#6e7681}.health-services-table-ports{color:#79c0ff;font-family:monospace;font-size:11px}.health-services-table-actions{flex-wrap:wrap;gap:6px;display:flex}.health-metric-text--ok{color:#3ecf8e;font-weight:600}.health-metric-text--warn{color:#d29922;font-weight:600}.health-metric-text--bad{color:#f85149;font-weight:600}.health-service-card{background:#161b22;border:1px solid #30363d;border-radius:10px;flex-direction:column;gap:14px;padding:16px;display:flex}.health-service-card.status-unhealthy{border-color:#f8514960}.health-service-card.status-restarting{border-color:#d2992260}.health-service-card-header{justify-content:space-between;align-items:flex-start;gap:10px;display:flex}.health-service-name{color:#f0f6fc;margin-bottom:4px;font-size:15px;font-weight:700}.health-service-version{color:#8b949e;font-family:monospace;font-size:11px}.health-status-badge{text-transform:uppercase;letter-spacing:.05em;border-radius:4px;flex-shrink:0;padding:4px 8px;font-size:10px;font-weight:700}.health-status-badge.status-healthy{color:#3ecf8e;background:#2ea04325;border:1px solid #2ea04350}.health-status-badge.status-unhealthy{color:#f85149;background:#f8514925;border:1px solid #f8514950}.health-status-badge.status-restarting{color:#d29922;background:#d2992225;border:1px solid #d2992250}.health-metric-row{color:#8b949e;justify-content:space-between;margin-bottom:6px;font-size:12px;display:flex}.health-metric-bar{background:#21262d;border-radius:3px;height:6px;overflow:hidden}.health-metric-fill{border-radius:3px;height:100%;transition:width .3s}.health-metric-sub{color:#6b7c93;margin-top:4px;font-family:monospace;font-size:10px}.health-service-card-footer{border-top:1px solid #21262d;justify-content:space-between;align-items:center;gap:8px;margin-top:auto;padding-top:8px;display:flex}.health-icon-btn{color:#8b949e;cursor:pointer;background:0 0;border:1px solid #30363d;border-radius:6px;padding:6px 10px;font-size:11px}.health-icon-btn:hover{color:var(--accent-mint);border-color:var(--accent-mint)}.health-service-main-actions{gap:8px;display:flex}.health-btn{cursor:pointer;border:none;border-radius:6px;padding:8px 14px;font-size:12px;font-weight:600}.health-btn--restart{color:#c9d1d9;background:#21262d;border:1px solid #30363d}.health-btn--restart:hover:not(:disabled){color:#3ecf8e;border-color:#3ecf8e}.health-btn--stop{color:#f85149;background:#f8514920;border:1px solid #f8514950}.health-btn--stop:hover:not(:disabled){background:#f8514935}.health-btn--pending{color:#8b949e;cursor:not-allowed;background:#30363d}.health-btn:disabled{opacity:.5;cursor:not-allowed}.health-events-panel{max-height:calc(100vh - var(--topbar-height) - 220px);background:#161b22;border:1px solid #30363d;border-radius:10px;flex-direction:column;padding:16px;display:flex;position:sticky;top:12px;overflow:hidden}.health-events-header{border-bottom:1px solid #30363d;justify-content:space-between;align-items:center;margin-bottom:14px;padding-bottom:12px;display:flex}.health-events-header h2{color:#f0f6fc;font-size:14px;font-weight:700}.health-events-icon{color:#3ecf8e;font-size:16px}.health-events-list{flex-direction:column;flex:1;gap:12px;padding-right:4px;display:flex;overflow-y:auto}.health-events-empty{text-align:center;padding:24px 8px}.health-event-item{border-bottom:1px solid #21262d;padding-bottom:12px}.health-event-row{align-items:flex-start;gap:10px;display:flex}.health-event-dot{border-radius:50%;flex-shrink:0;width:8px;height:8px;margin-top:5px}.health-event-dot.severity-success,.health-event-dot.severity-info{background:#3ecf8e}.health-event-dot.severity-warning{background:#d29922}.health-event-dot.severity-critical{background:#f85149}.health-event-title{color:#e6edf3;margin-bottom:4px;font-size:13px;font-weight:600}.health-event-meta{color:#6b7c93;text-transform:uppercase;letter-spacing:.04em;flex-wrap:wrap;gap:8px;font-size:10px;display:flex}.health-event-alert{color:#f85149;background:#f8514915;border:1px solid #f8514940;border-radius:6px;margin-top:8px;margin-left:18px;padding:8px 10px;font-family:monospace;font-size:11px}.health-metrics-panel{flex-direction:column;gap:16px;display:flex}.health-metrics-panel-header{flex-wrap:wrap;justify-content:space-between;align-items:flex-start;gap:16px;display:flex}.health-metrics-panel-title{color:#c9d1d9;margin:0;font-size:18px}.health-metrics-panel-subtitle{margin:4px 0 0;font-size:12px}.health-metrics-tabs{background:#0d1117;border:1px solid #30363d;border-radius:8px;gap:8px;padding:4px;display:inline-flex}.health-metrics-tab{color:#8b949e;cursor:pointer;background:0 0;border:none;border-radius:6px;padding:8px 14px;font-size:13px}.health-metrics-tab.active{color:#c9d1d9;background:#21262d}.health-metrics-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:16px;display:grid}.health-bandwidth-layout{grid-template-columns:minmax(0,1.2fr) minmax(0,1fr);gap:16px;display:grid}.health-bandwidth-side{flex-direction:column;gap:16px;display:flex}.health-chart-card{background:var(--bg-panel-deep);border:1px solid var(--border-default);border-radius:10px;padding:14px 16px 8px}.health-chart-card--wide{min-height:320px}.health-chart-card-header{justify-content:space-between;align-items:center;gap:12px;margin-bottom:8px;display:flex}.health-chart-card-header h3{color:#c9d1d9;margin:0;font-size:14px}.health-chart-card-header span{color:#8b949e;font-size:12px}.health-metrics-empty{margin:0;padding:12px 0}.health-chart-tooltip{background:var(--chart-tooltip-bg);border:1px solid var(--border-default);color:#c9d1d9;border-radius:8px;padding:10px 12px;font-size:12px}.health-chart-tooltip-label{color:#8b949e;margin-bottom:6px}.health-chart-tooltip-row{justify-content:space-between;gap:12px;display:flex}.health-services-table-network{color:var(--accent-blue);font-family:monospace;font-size:12px}.topbar-prefs{align-items:center;gap:8px;display:inline-flex}.topbar-pref-select{background:var(--bg-input);border:1px solid var(--border-default);color:var(--text-primary);border-radius:6px;padding:8px 10px;font-size:12px}.health-custom-dashboard{flex-direction:column;gap:16px;display:flex}.health-custom-dashboard-header{flex-wrap:wrap;justify-content:space-between;align-items:flex-start;gap:16px;display:flex}.health-custom-toolbar{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.health-custom-services-title{color:var(--text-primary);margin:0 0 10px;font-size:14px}.health-custom-services-grid{grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:10px;display:grid}.health-custom-service-item{border:1px solid var(--border-default);background:var(--bg-panel-deep);cursor:pointer;border-radius:8px;align-items:flex-start;gap:10px;padding:10px 12px;display:flex}.health-custom-service-item.selected{border-color:var(--accent-blue);box-shadow:inset 0 0 0 1px var(--accent-blue)}.health-custom-service-name{color:var(--text-primary);font-size:13px;display:block}.health-custom-service-meta{margin-top:2px;font-size:11px;display:block}.health-custom-charts{grid-template-columns:1fr;gap:16px;display:grid}.logs-page{min-height:calc(100vh - var(--topbar-height) - 52px);flex-direction:column;gap:16px;display:flex}.logs-layout{grid-template-columns:minmax(0,1fr) 280px;gap:16px;display:grid}.logs-toolbar{flex-wrap:wrap;justify-content:space-between;gap:12px;margin-bottom:14px;display:flex}.logs-tabs{background:var(--bg-panel-deep);border:1px solid var(--border-default);border-radius:8px;gap:8px;padding:4px;display:inline-flex}.logs-tab{color:var(--text-secondary);cursor:pointer;background:0 0;border:none;border-radius:6px;padding:8px 14px}.logs-tab.active{background:var(--bg-hover);color:var(--text-primary)}.logs-filters{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.logs-filters input,.logs-filters select,.logs-search-controls input,.logs-search-controls select{background:var(--bg-input);border:1px solid var(--border-default);color:var(--text-primary);border-radius:6px;padding:8px 10px;font-size:13px}.logs-autoscroll{color:var(--text-secondary);align-items:center;gap:6px;font-size:12px;display:inline-flex}.logs-stream{max-height:calc(100vh - var(--topbar-height) - 220px);background:var(--bg-panel-deep);border:1px solid var(--border-default);border-radius:8px;padding:8px 0;font-family:Consolas,Monaco,monospace;font-size:12px;overflow:auto}.logs-line{border-bottom:1px solid var(--border-muted);grid-template-columns:150px 70px 120px auto minmax(0,1fr);align-items:start;gap:10px;padding:6px 12px;display:grid}.logs-line-header{z-index:1;background:var(--bg-panel-deep);border-bottom:1px solid var(--border-default);text-transform:uppercase;letter-spacing:.04em;color:var(--text-secondary);padding-top:8px;padding-bottom:8px;font-size:10px;font-weight:600;position:sticky;top:0}.logs-line-header:hover{background:var(--bg-panel-deep)}.logs-line-body{flex-direction:column;flex:1;gap:4px;min-width:0;display:flex}.logs-line-tags{flex-wrap:wrap;gap:6px;display:flex}.logs-tag{letter-spacing:.02em;text-transform:uppercase;border-radius:4px;align-items:center;padding:1px 6px;font-size:10px;font-weight:600;display:inline-flex}.logs-tag-product{color:#60a5fa;background:#3b82f626}.logs-tag-env{color:#34d399;background:#10b98126}.logs-line-meta{color:var(--text-muted);font-size:11px}.logs-line:hover{background:var(--bg-hover)}.logs-line-time,.logs-line-service,.logs-line-app{color:var(--text-secondary);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.logs-line-message{color:var(--text-primary);white-space:pre-wrap;word-break:break-word}.log-level-error{color:var(--accent-red)}.log-level-warn{color:var(--accent-amber)}.log-level-info{color:var(--accent-blue)}.log-level-debug{color:var(--text-muted)}.logs-search-panel{flex-direction:column;gap:12px;display:flex}.logs-search-controls{flex-wrap:wrap;gap:8px;display:flex}.logs-empty{padding:24px 12px}.logs-sidebar-title{margin:0 0 12px;font-size:15px}.logs-stats-block{margin-top:16px}.logs-stats-block h4{color:var(--text-secondary);text-transform:uppercase;margin:0 0 8px;font-size:12px}.logs-stats-row{border-bottom:1px solid var(--border-muted);justify-content:space-between;gap:8px;padding:4px 0;font-size:12px;display:flex}.logs-stats-source{font-size:11px}@media (width<=1100px){.logs-layout{grid-template-columns:1fr}.logs-line{grid-template-columns:1fr;gap:4px}.health-summary-bar{grid-template-columns:repeat(2,minmax(0,1fr))}.health-metrics-grid,.health-bandwidth-layout,.health-dashboard-body{grid-template-columns:1fr}.health-events-panel{max-height:420px;position:relative}}@media (width<=600px){.health-summary-bar{grid-template-columns:1fr}}.nginx-page{flex-direction:column;gap:16px;display:flex}.nginx-status-banner{background:#0d1117;border:1px solid #30363d;border-radius:8px;flex-wrap:wrap;justify-content:space-between;gap:12px;padding:14px 16px;font-size:13px;display:flex}.nginx-status-meta{color:#8b949e;flex-wrap:wrap;align-items:center;gap:12px;font-size:12px;display:flex}.nginx-config-pill{border-radius:4px;margin-left:10px;padding:2px 8px;font-size:11px;font-weight:600}.nginx-config-pill.ok{color:#3ecf8e;background:#2ea04325}.nginx-config-pill.bad{color:#f85149;background:#f8514925}.text-ok{color:#3ecf8e}.text-bad{color:#f85149}.nginx-sites-table-wrapper{border:1px solid #30363d;border-radius:8px;overflow-x:auto}.nginx-sites-table{border-collapse:collapse;width:100%;font-size:13px}.nginx-sites-table th,.nginx-sites-table td{text-align:left;vertical-align:top;border-bottom:1px solid #30363d;padding:12px}.nginx-sites-table th{color:#8b949e;text-transform:uppercase;background:#0d1117;font-size:11px}.nginx-site-name{color:#f0f6fc;font-weight:600}.nginx-site-sub{color:#6b7c93;margin-top:2px;font-size:11px}.nginx-ssl-pill{text-transform:uppercase;border-radius:4px;padding:4px 8px;font-size:11px;font-weight:600;display:inline-block}.nginx-ssl-pill.ssl-missing{color:#8b949e;background:#30363d}.nginx-ssl-pill.ssl-valid{color:#3ecf8e;background:#2ea04325}.nginx-ssl-pill.ssl-expiring_soon{color:#d29922;background:#d2992225}.nginx-ssl-pill.ssl-expired,.nginx-ssl-pill.ssl-unknown{color:#f85149;background:#f8514925}.nginx-row-actions{flex-wrap:wrap;gap:6px;display:flex}.nginx-empty-row{text-align:center;color:#8b949e;padding:28px}.nginx-config-editor{max-width:960px}.nginx-config-editor-meta label{flex-direction:column;gap:.35rem;margin-bottom:.75rem;display:flex}.nginx-config-editor-meta input{border:1px solid var(--border-color,#333);background:var(--input-bg,#1a1a1a);color:inherit;border-radius:6px;padding:.5rem .75rem}.nginx-config-editor-path{margin:0 0 .75rem}.nginx-config-textarea{min-height:420px}.nginx-site-modal{width:min(560px,96vw)}.nginx-site-form{flex-direction:column;gap:14px;padding:0 20px 20px;display:flex}.nginx-site-form label{color:#8b949e;flex-direction:column;gap:6px;font-size:12px;display:flex}.nginx-site-form input,.nginx-site-form textarea{color:#c9d1d9;background:#0d1117;border:1px solid #30363d;border-radius:6px;padding:10px 12px;font-size:14px}.nginx-site-form-row{grid-template-columns:1fr 120px;gap:12px;display:grid}.nginx-site-checkbox{align-items:center;color:#c9d1d9!important;flex-direction:row!important;gap:8px!important}:root,[data-theme=dark]{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--bg-app:#0d1117;--bg-shell:#0b1220;--bg-panel:#161b22;--bg-panel-deep:#0d1117;--bg-input:#0d1117;--bg-hover:#21262d;--border-default:#30363d;--border-muted:#1c2a3a;--text-primary:#c9d1d9;--text-secondary:#8b949e;--text-muted:#6b7c93;--accent:#3ecf8e;--accent-blue:#58a6ff;--accent-amber:#d29922;--accent-red:#f85149;--accent-purple:#bc8cff;--shadow-panel:0 1px 0 #ffffff0a;--chart-grid:#30363d;--chart-tooltip-bg:#161b22;--topbar-bg:#0d1117;--sidebar-bg:#0b1220}[data-theme=light]{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--bg-app:#f6f8fa;--bg-shell:#fff;--bg-panel:#fff;--bg-panel-deep:#f6f8fa;--bg-input:#fff;--bg-hover:#f3f4f6;--border-default:#d0d7de;--border-muted:#d8dee4;--text-primary:#1f2328;--text-secondary:#656d76;--text-muted:#8c959f;--accent:#1a7f4b;--accent-blue:#0969da;--accent-amber:#9a6700;--accent-red:#cf222e;--accent-purple:#8250df;--shadow-panel:0 1px 3px #1b1f2414;--chart-grid:#d8dee4;--chart-tooltip-bg:#fff;--topbar-bg:#fff;--sidebar-bg:#fff}html[dir=rtl] .sidebar{border-right:none;border-left:1px solid var(--border-muted)}html[dir=rtl] .sidebar-active-indicator{border-radius:0 4px 4px 0;left:0;right:auto}html[dir=rtl] .topbar-search-icon{left:auto;right:12px}html[dir=rtl] .topbar-search-input{padding:10px 36px 10px 14px}html[dir=rtl] .health-custom-service-item,html[dir=rtl] .health-custom-toolbar,html[dir=rtl] .health-metrics-panel-header,html[dir=rtl] .health-chart-card-header,html[dir=rtl] .modal-actions,html[dir=rtl] .form-actions{flex-direction:row-reverse}
