.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}@media (width<=640px){.auth-container{align-items:flex-start;padding:16px}.auth-card{border-radius:10px;margin-top:12vh;padding:24px 20px}.auth-header h2{font-size:22px}}*{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}}.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}.database-page{max-width:1400px}.database-layout{grid-template-columns:260px minmax(0,1fr);align-items:start;gap:16px;display:grid}.database-server-panel,.database-main-panel{background:#161b22;border:1px solid #30363d;border-radius:8px;padding:16px}.database-server-panel h3{color:#c9d1d9;margin:0 0 12px;font-size:14px}.database-server-list{flex-direction:column;gap:8px;margin:0;padding:0;list-style:none;display:flex}.database-server-item{text-align:left;color:#c9d1d9;cursor:pointer;background:#0d1117;border:1px solid #30363d;border-radius:6px;flex-direction:column;align-items:flex-start;gap:4px;width:100%;padding:10px 12px;display:flex}.database-server-item:hover{border-color:#58a6ff}.database-server-item.active{background:#388bfd1f;border-color:#58a6ff}.database-server-name{font-size:13px;font-weight:600}.database-server-meta,.database-server-desc{color:#8b949e;font-size:12px}.database-server-summary{color:#8b949e;flex-wrap:wrap;justify-content:space-between;gap:12px;margin-bottom:12px;font-size:13px;display:flex}.database-table-panel{margin-top:8px}.database-table-toolbar{justify-content:space-between;align-items:center;gap:12px;margin-bottom:8px;display:flex}.database-table-wrap{border:1px solid #30363d;border-radius:6px;max-height:480px;overflow:auto}.database-data-table{border-collapse:collapse;width:100%;font-size:12px}.database-data-table th,.database-data-table td{text-align:left;vertical-align:top;white-space:nowrap;border-bottom:1px solid #30363d;padding:8px 10px}.database-data-table th{color:#8b949e;z-index:1;background:#0d1117;font-weight:600;position:sticky;top:0}.database-data-table tbody tr:hover{background:#388bfd14}.database-query-cell{white-space:normal;word-break:break-word;min-width:220px;max-width:360px}.database-query-panel{flex-direction:column;gap:14px;display:flex}.database-query-editor-wrap{flex-direction:column;gap:10px;display:flex}.database-query-editor-label{width:100%}.database-query-editor{resize:vertical;color:#c9d1d9;background:#0d1117;border:1px solid #30363d;border-radius:8px;width:100%;min-height:180px;padding:12px 14px;font-family:Consolas,Monaco,Courier New,monospace;font-size:13px;line-height:1.45}.database-query-editor:focus{border-color:#58a6ff;outline:none}.database-query-actions{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:10px;display:flex}.database-query-results .database-table-wrap{max-height:min(520px,55vh)}.database-table-empty{text-align:center;color:#8b949e;padding:32px 12px!important}.database-table-hint{margin:8px 0 0;font-size:12px}.database-context-menu{min-width:200px}.database-context-divider{background:#30363d;height:1px;margin:4px 0}.database-action-danger{color:#f85149}.database-restore-card{background:#161b22;border:1px solid #30363d;border-radius:8px;padding:20px}.database-restore-intro h3{color:#c9d1d9;margin:0 0 8px}.database-target-info{color:#8b949e;background:#0d1117;border:1px solid #30363d;border-radius:6px;gap:6px;margin:16px 0;padding:12px 14px;font-size:13px;display:grid}.database-restore-form{flex-direction:column;gap:14px;margin-top:16px;display:flex}.database-drop-schema-panel{background:#f851490d;border:1px solid #f8514966;border-radius:8px;margin-top:20px;padding:16px}.database-drop-schema-title{color:#f85149;margin:0 0 8px;font-size:14px}.database-drop-schema-btn{color:#f85149;border-color:#f8514966}.database-drop-schema-btn:hover:not(:disabled){background:#f8514922}.database-restore-field{color:#c9d1d9;flex-direction:column;gap:6px;font-size:13px;display:flex}.database-connection-grid,.database-target-grid{grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:14px;margin:16px 0;display:grid}.database-mode-tabs{gap:8px;margin:16px 0 8px;display:flex}.database-restore-field input[type=text],.database-restore-field input[type=file],.database-restore-field select{color:#c9d1d9;background:#0d1117;border:1px solid #30363d;border-radius:6px;padding:8px 10px}.database-restore-confirm{color:#8b949e;align-items:flex-start;gap:8px;font-size:13px;display:flex}.database-restore-output-wrap{margin-top:20px}.database-restore-output-wrap h4{color:#c9d1d9;margin:0 0 8px;font-size:14px}.database-restore-output{color:#8b949e;white-space:pre-wrap;word-break:break-word;background:#0d1117;border:1px solid #30363d;border-radius:6px;max-height:320px;margin:0;padding:12px;font-size:12px;line-height:1.5;overflow:auto}.estox-deploy-modal{max-width:920px}.estox-deploy-intro{margin:0 0 16px;font-size:13px}.estox-deploy-targets{grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;margin-bottom:16px;display:grid}.estox-deploy-target{color:#c9d1d9;cursor:pointer;text-align:left;background:#0d1117;border:1px solid #30363d;border-radius:8px;flex-direction:column;align-items:flex-start;gap:4px;padding:12px 14px;display:flex}.estox-deploy-target span{color:#8b949e;font-size:12px}.estox-deploy-target.active{background:#388bfd1f;border-color:#58a6ff}.estox-deploy-panel{flex-direction:column;gap:12px;margin-bottom:16px;display:flex}.estox-releases-section{margin-top:8px}.estox-releases-header{justify-content:space-between;align-items:center;gap:12px;margin-bottom:8px;display:flex}.estox-releases-header h4{color:#c9d1d9;margin:0;font-size:14px}.estox-releases-table .topbar-secondary-btn{padding:4px 10px;font-size:12px}.estox-releases-table .estox-download-link{color:var(--accent,#4ade80);word-break:break-all;text-decoration:underline}.estox-releases-table .estox-download-link:hover{opacity:.85}.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}.api-clients-page .api-client-name{color:var(--text-primary);font-weight:600}.api-clients-page .api-client-id{color:var(--accent-blue);word-break:break-all;font-size:12px}.api-clients-page .api-client-row--revoked{opacity:.65}.api-clients-page .status-badge{border-radius:999px;padding:2px 8px;font-size:11px;font-weight:600;display:inline-block}.api-clients-page .status-badge.online{color:#3ecf8e;background:#3ecf8e1f;border:1px solid #3ecf8e59}.api-clients-page .status-badge.offline{color:#f85149;background:#f851491f;border:1px solid #f8514959}.api-client-secret-modal .api-client-secret-warning{margin-bottom:16px}.api-client-secret-field{flex-direction:column;gap:6px;margin-bottom:14px;display:flex}.api-client-secret-field label{color:var(--text-secondary);font-size:12px}.api-client-secret-row{align-items:flex-start;gap:8px;display:flex}.api-client-secret-row code{border:1px solid var(--border-default);background:var(--bg-panel-deep);min-width:0;color:var(--text-primary);word-break:break-all;white-space:pre-wrap;border-radius:6px;flex:1;padding:10px 12px;font-size:12px}.api-client-secret-row .topbar-secondary-btn{flex-shrink:0}.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-create-dir-btn{margin-top:10px}.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;--bp-sm:480px;--bp-md:768px;--bp-lg:1024px;--bp-xl:1280px;--page-padding-x:16px;--page-padding-y:20px}@media (width>=768px){:root{--page-padding-x:20px;--page-padding-y:24px}}@media (width>=1024px){:root{--page-padding-x:24px;--page-padding-y:32px}}[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}@media (width<=1023px){html[dir=rtl] .sidebar{left:auto;right:0;transform:translate(100%);box-shadow:-4px 0 24px #00000059}html[dir=rtl] .app-shell--nav-open .sidebar{transform:translate(0)}html[dir=rtl] .sidebar-link.active:after{border-radius:0 3px 3px 0;left:-12px;right:auto}}body.nav-open{overflow:hidden}.page-content{padding:var(--page-padding-y) var(--page-padding-x)}.page-panel{padding:16px}.topbar-menu-btn{border:1px solid var(--border-muted);background:var(--bg-panel-deep);width:40px;height:40px;color:var(--text-secondary);cursor:pointer;border-radius:8px;flex-shrink:0;justify-content:center;align-items:center;font-size:18px;display:none}.topbar-menu-btn:hover{border-color:var(--accent-mint);color:var(--accent-mint)}.sidebar-backdrop{display:none}@media (width<=1023px){.topbar-menu-btn{display:inline-flex}.sidebar-backdrop{z-index:1090;cursor:pointer;opacity:0;visibility:hidden;background:#0000008c;border:none;margin:0;padding:0;transition:opacity .2s,visibility .2s;display:block;position:fixed;inset:0}.app-shell--nav-open .sidebar-backdrop{opacity:1;visibility:visible}.sidebar{z-index:1100;width:min(280px,88vw);height:100dvh;transition:transform .24s;position:fixed;top:0;bottom:0;left:0;transform:translate(-100%);box-shadow:4px 0 24px #00000059}.app-shell--nav-open .sidebar{transform:translate(0)}.topbar{padding:12px var(--page-padding-x);flex-wrap:wrap;gap:10px 12px}.topbar-left{flex:1;min-width:0}.topbar-title{font-size:17px;line-height:1.25}.topbar-subtitle{display:none}.topbar-search{flex:100%;order:10;width:100%;max-width:none}.topbar-right{flex-wrap:wrap;justify-content:flex-end;gap:6px;max-width:100%;margin-left:auto}.topbar-action-group{flex-wrap:wrap}.topbar-primary-btn,.topbar-secondary-btn{padding:8px 12px;font-size:12px}.topbar-divider{display:none}}@media (width<=480px){.topbar-pref-select{max-width:88px;padding:6px 8px}.topbar-icon-btn{width:34px;height:34px}}@media (width<=1023px){.services-page{height:auto;min-height:0}.services-page-layout{flex-direction:column;min-height:360px}.services-page-main{flex:none;max-height:none;padding:14px}.services-panel-resizer{display:none}.services-logs-panel{border-top:1px solid #30363d;border-left:none;max-width:none;min-height:280px;max-height:50vh;width:100%!important}.services-logs-panel--collapsed{min-height:44px;max-height:44px;width:100%!important}.services-logs-panel--expanded{width:100%!important}.services-logs-panel-toggle{border-bottom:1px solid #30363d;border-left:none;flex-direction:row;justify-content:flex-start;width:100%;padding:10px 14px}.services-logs-panel-toggle-label{writing-mode:horizontal-tb}.stats-bar{grid-template-columns:repeat(3,minmax(0,1fr))}.database-layout,.service-files-layout{grid-template-columns:1fr}.service-files-tree,.service-files-content{max-height:280px}.form-grid,.estox-deploy-targets{grid-template-columns:1fr}.nginx-site-form-row{flex-direction:column}}@media (width<=640px){.stats-bar{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (width<=400px){.stats-bar{grid-template-columns:1fr}}.table-scroll,.services-table-wrapper,.users-table-wrapper,.health-services-table-wrapper,.database-table-wrap,.nginx-sites-table-wrapper{-webkit-overflow-scrolling:touch}@media (width<=768px){.services-table th,.services-table td{padding:8px 10px;font-size:12px}.services-table-desc{display:none}.services-table-actions{flex-wrap:wrap;gap:4px}}@media (width<=640px){.modal-overlay{align-items:flex-end;padding:10px}.modal-card{border-bottom-right-radius:0;border-bottom-left-radius:0;max-height:92dvh;padding:16px}.modal-header h3,.modal-header h2{font-size:16px}.modal-actions,.form-actions{flex-direction:column-reverse;align-items:stretch}.modal-actions .primary-btn,.modal-actions .secondary-btn,.modal-actions button,.form-actions .primary-btn,.form-actions .secondary-btn,.form-actions button{width:100%}}@media (width<=768px){.logs-toolbar{flex-direction:column;align-items:stretch}.logs-toolbar>*{width:100%}.health-custom-toolbar{flex-direction:column;align-items:stretch}.deployment-card-actions,.database-mode-tabs{flex-wrap:wrap}.database-connection-grid,.database-target-grid{grid-template-columns:1fr}.database-restore-confirm{align-items:flex-start}.database-query-actions{flex-direction:column;align-items:stretch}.database-query-actions .topbar-primary-btn{width:100%}.nginx-status-banner{flex-direction:column;align-items:flex-start}.nginx-site-modal{width:100%}.nginx-site-form{padding:0 14px 14px}.users-toolbar,.rbac-toolbar,.compose-toolbar{flex-direction:column;align-items:stretch}}@media (width<=1023px) and (pointer:coarse){.sidebar-link{min-height:44px}.btn,.primary-btn,.secondary-btn,.topbar-primary-btn,.topbar-secondary-btn{min-height:40px}}
