:root{font-family:JetBrains Mono,Monaco,Inconsolata,Fira Mono,monospace;font-size:13px;line-height:1.5;font-weight:400;color:#575279;background-color:#faf4ed;font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}body{margin:0;min-width:320px;min-height:100vh}:root{--bg: #e8e8e8;--bg-subtle: #d8d8d8;--bg-panel: #f0f0f0;--bg-hover: #c8c8c8;--bg-widget: #d0d0d0;--bg-widget-hover: #c0c0c0;--bg-widget-active: #b0b0b0;--border: #8c8c8c;--border-strong: #5a5a5a;--border-subtle: #c4c4c4;--border-faint: #d8d8d8;--text: #1b1b1b;--text-muted: #5a5a5a;--text-faint: #8c8c8c;--text-placeholder: #a0a0a0;--overlay-bg: rgba(0, 0, 0, .5);--scrollbar-thumb: #a0a0a0;--scrollbar-thumb-hover: #8c8c8c;--scrollbar-track: transparent;--accent: #2b7fc1;--accent-hover: #3a8fd1;--accent-gold: #b07800;--accent-error: #c04040;--accent-success: #2e8a4a;--accent-iris: #6050a8;--color-success: #2e8a4a;--color-success-bg: #d8eed8;--color-error: #c04040;--color-error-bg: #eed8d8;--btn-primary-bg: #2b7fc1;--btn-primary-text: #ffffff;--btn-primary-bg-hover: #3a8fd1;--accent-love: var(--accent-error);--accent-pine: var(--accent);--accent-foam: var(--accent);--diff-added-bg: rgba(46, 138, 74, .12);--diff-added-text: #2e8a4a;--diff-removed-bg: rgba(192, 64, 64, .12);--diff-removed-text: #c04040}[data-theme=dark]{--bg: #1b1b1b;--bg-subtle: #242424;--bg-panel: #2b2b2b;--bg-hover: #3c3c3c;--bg-widget: #3c3c3c;--bg-widget-hover: #484848;--bg-widget-active: #555555;--border: #545454;--border-strong: #8c8c8c;--border-subtle: #303030;--border-faint: #262626;--text: #e0e0e0;--text-muted: #8c8c8c;--text-faint: #545454;--text-placeholder: #888888;--overlay-bg: rgba(0, 0, 0, .7);--scrollbar-thumb: #484848;--scrollbar-thumb-hover: #5a5a5a;--scrollbar-track: transparent;--accent: #5b9bd5;--accent-hover: #6daee3;--accent-gold: #e8a000;--accent-error: #e05050;--accent-success: #4aa862;--accent-iris: #9a85d5;--color-success: #4aa862;--color-success-bg: #1a2b1f;--color-error: #e05050;--color-error-bg: #2b1a1a;--btn-primary-bg: #5b9bd5;--btn-primary-text: #ffffff;--btn-primary-bg-hover: #6daee3;--accent-love: var(--accent-error);--accent-pine: var(--accent);--accent-foam: var(--accent);--diff-added-bg: rgba(74, 168, 98, .15);--diff-added-text: #6a8759;--diff-removed-bg: rgba(224, 80, 80, .15);--diff-removed-text: #e05050}*{scrollbar-width:thin;scrollbar-color:var(--scrollbar-thumb) var(--scrollbar-track)}*::-webkit-scrollbar{width:6px;height:6px}*::-webkit-scrollbar-track{background:var(--scrollbar-track)}*::-webkit-scrollbar-thumb{background:var(--scrollbar-thumb)}*::-webkit-scrollbar-thumb:hover{background:var(--scrollbar-thumb-hover)}*::-webkit-scrollbar-corner{background:var(--scrollbar-track)}*{box-sizing:border-box;margin:0;padding:0}body{font-family:JetBrains Mono,Hack,Fira Mono,Consolas,Monaco,monospace;font-size:13px;line-height:1.4;background:var(--bg);color:var(--text)}.app{min-height:100vh;display:flex;flex-direction:column}.header{position:sticky;top:0;z-index:100;background:var(--bg-panel);border-bottom:1px solid var(--border);padding:0 .75rem}.header-top{display:flex;align-items:center;height:2.25rem;--header-height: 2.25rem}.header h1{font-size:16px;font-weight:600;letter-spacing:.02em;color:var(--text-muted)}.header-right{display:flex;align-items:center;gap:.5rem;margin-left:auto}.tab-bar{display:flex;align-items:stretch;gap:0;margin:0 0 -1px;border-radius:3px 3px 0 0;overflow:hidden;border-top:1px solid var(--border);border-left:1px solid var(--border);border-right:1px solid var(--border);overflow-x:auto;scrollbar-width:none;background:var(--bg-subtle)}.tab-bar::-webkit-scrollbar{display:none}.tab-item{display:inline-flex;align-items:center;gap:.4rem;padding:.25rem .75rem;font-family:inherit;font-size:12px;color:var(--text-muted);background:none;border:none;border-right:1px solid var(--border-subtle);cursor:pointer;white-space:nowrap;transition:none}.tab-item:hover{color:var(--text);background:var(--bg-hover)}.tab-item--active{color:var(--text);background:var(--bg-panel);border-bottom:2px solid var(--accent)}.tab-item--conflict{color:var(--accent-warning, #e8a400)}.tab-item--dirty{font-style:italic}.tab-state-indicator{font-size:10px;line-height:1}.tab-state-indicator--dirty{color:var(--accent, #4a9eff)}.tab-state-indicator--conflict{color:var(--accent-warning, #e8a400)}.tab-close{font-size:13px;line-height:1;color:var(--text-faint);padding:0 .1rem;border-radius:2px}.tab-close:hover{color:var(--accent-error);background:var(--bg-hover)}.tab-editor-content{display:flex;flex-direction:column;height:calc(100vh - var(--header-height, 2.25rem) - 2.25rem);padding:.4rem .75rem;gap:.4rem;background:var(--bg)}.tab-toolbar{display:flex;align-items:center;gap:.75rem;flex-shrink:0;background:var(--bg-panel);border:1px solid var(--border);border-radius:3px;padding:.3rem .6rem}.tab-toolbar-label{font-size:12px;color:var(--text-muted)}.tab-vim-toggle{display:inline-flex;align-items:center;gap:.25rem;font-size:12px;color:var(--text-muted);cursor:pointer;-webkit-user-select:none;user-select:none}.tab-vim-toggle input{margin:0}.config-conflict-banner{display:flex;align-items:center;gap:.5rem;font-size:12px;color:var(--accent-warning, #e8a400)}.btn-accept-conflict{font-size:11px;padding:.1rem .4rem;border:1px solid var(--accent-warning, #e8a400);color:var(--accent-warning, #e8a400);background:none;border-radius:3px;cursor:pointer}.btn-accept-conflict:hover{background:var(--bg-hover)}.tab-toolbar-actions{margin-left:auto;display:flex;gap:.4rem}.tab-editor-wrap{flex:1;min-height:0;overflow:hidden;border:1px solid var(--border);border-radius:3px}.username{color:var(--text-muted);font-size:12px}.logout-button{display:inline-flex;align-items:center;justify-content:center;background:var(--bg-widget);color:var(--text);border:1px solid var(--border);border-radius:3px;padding:.15rem .55rem;cursor:pointer;font-family:inherit;font-size:12px}.logout-button:hover{background:var(--bg-widget-hover);border-color:var(--border-strong)}.status-indicator{font-size:11px}.status-indicator.connected{color:var(--accent-success)}.status-indicator.disconnected{color:var(--accent-error)}.main{padding:.75rem;max-width:1600px;margin:0 auto}.error{color:var(--accent-error);padding:.4rem 0;margin-bottom:.75rem;font-size:12px;border-bottom:1px solid var(--color-error-bg)}.btn-error-wrap{position:relative;display:inline-flex}.btn-error-popup{position:absolute;top:calc(100% + 4px);left:0;background:var(--bg-panel);border:1px solid var(--accent-error);border-radius:3px;color:var(--accent-error);font-size:11px;padding:4px 8px;z-index:200;max-width:260px;white-space:normal;line-height:1.4;pointer-events:none}.search-container{position:relative;margin-bottom:.75rem;display:flex;gap:.35rem;align-items:center}.search-mode-wrap{position:relative;flex-shrink:0;align-self:stretch;display:flex}.search-mode-trigger{display:flex;align-items:center;gap:.3rem;font-size:12px;font-family:inherit;padding:0 .6rem;border:1px solid var(--border);border-radius:3px;background:var(--bg-widget);color:var(--text);cursor:pointer;white-space:nowrap;height:100%}.search-mode-trigger:hover{background:var(--bg-widget-hover);border-color:var(--border-strong)}.search-mode-arrow{display:flex;color:var(--text-faint)}.search-mode-menu{position:absolute;left:0;top:calc(100% + 2px);background:var(--bg-panel);border:1px solid var(--border-strong);border-radius:3px;z-index:20;min-width:100%;display:flex;flex-direction:column}.search-mode-item{background:none;border:none;border-bottom:1px solid var(--border-faint);cursor:pointer;text-align:left;font-family:inherit;padding:.3rem .6rem;font-size:11px;color:var(--text);white-space:nowrap}.search-mode-item:last-child{border-bottom:none}.search-mode-item:hover{background:var(--bg-hover)}.search-mode-item--active{color:var(--accent)}.search-input-wrap{position:relative;flex:1}.search-input{width:100%;padding:.3rem 2.5rem .3rem .5rem;font-size:12px;border:1px solid var(--border);border-radius:3px;background:var(--bg-widget);color:var(--text);font-family:inherit;outline:none}.search-input:focus{border-color:var(--accent)}.search-input::placeholder{color:var(--text-placeholder)}.search-clear{position:absolute;right:.25rem;top:50%;transform:translateY(-50%);background:none;border:none;font-size:1rem;color:var(--text-faint);cursor:pointer;padding:0 .25rem;line-height:1}.search-clear:hover{color:var(--text)}.locked-robots{border:1px solid var(--border);border-radius:3px;background:var(--bg-panel);margin-bottom:.5rem;font-size:12px}.locked-robots-title{display:flex;align-items:center;gap:.4rem;background:var(--bg-subtle);color:var(--accent-gold);padding:.35rem .6rem;border-bottom:1px solid var(--border);border-radius:3px 3px 0 0;font-size:13px;font-weight:600;letter-spacing:.01em}.locked-robots-list{display:flex;flex-direction:column;padding:.5rem .6rem;gap:.25rem}.locked-robot-item{display:flex;align-items:center;gap:.6rem;padding:.2rem 0}.locked-robot-server{color:var(--text-faint);font-size:11px;white-space:nowrap}.locked-robot-name{flex:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.platforms{display:flex;flex-direction:column;gap:.5rem}.platform{border:1px solid var(--border);border-radius:3px;background:var(--bg-panel)}.platform-header{display:flex;align-items:center;gap:.6rem;padding:.35rem .6rem;background:var(--bg-subtle);border-bottom:1px solid var(--border);border-radius:3px 3px 0 0;flex-wrap:wrap}.platform-header h2{font-size:13px;font-weight:600;letter-spacing:.01em;color:var(--text)}.version,.address{font-size:11px;color:var(--text-faint)}.services-container{display:grid;gap:0 1rem;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));padding:.5rem .6rem}.service-section h3{font-size:10px;font-weight:600;color:var(--text-faint);margin-bottom:.3rem;text-transform:uppercase;letter-spacing:.08em}.service-list{display:flex;flex-direction:column}.service-list--scrollable{max-height:380px;overflow-y:auto}.service-item{display:flex;align-items:center;gap:0 .5rem;padding:.2rem .4rem;border-bottom:1px solid var(--border-faint);border-radius:3px}.service-item:hover{background:var(--bg-hover)}.service-item:last-child{border-bottom:none}.service-info{display:flex;align-items:center;gap:.5rem;flex:1;min-width:0}.service-name{font-size:12px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;flex:1}.service-name--clickable{cursor:pointer}.service-name--clickable:hover{color:var(--accent)}.service-status{font-size:10px;font-weight:600;text-transform:uppercase;letter-spacing:.03em;white-space:nowrap;padding:.1rem .35rem;border-radius:2px;min-width:5.5em;text-align:center;display:inline-block}.service-actions{display:flex;gap:.15rem;flex-shrink:0}.service-actions .btn{padding:.15rem;font-size:14px;line-height:1}.btn{padding:.15rem .45rem;border:1px solid var(--border);border-radius:3px;background:var(--bg-widget);font-family:inherit;font-size:11px;cursor:pointer;color:var(--text);line-height:1.5;transition:none}.btn:hover:not(:disabled){background:var(--bg-widget-hover);border-color:var(--border-strong)}.btn:active:not(:disabled){background:var(--bg-widget-active)}.btn:disabled{opacity:.35;cursor:not-allowed}.btn svg{display:block}.btn-confirm--alert{color:var(--accent-error);border-color:var(--accent-error)}.btn-confirm--alert:hover:not(:disabled){background:var(--accent-error);color:#fff}.btn-dots{font-size:14px;letter-spacing:1px;padding:1px 5px}.service-dropdown-wrap{position:relative}.service-dropdown{position:absolute;right:0;top:calc(100% + 2px);background:var(--bg-panel);border:1px solid var(--border-strong);border-radius:3px;z-index:100;min-width:110px;display:flex;flex-direction:column}.service-dropdown-item{background:none;border:none;border-bottom:1px solid var(--border-faint);cursor:pointer;text-align:left;padding:.5rem .85rem;font-family:inherit;font-size:11px;color:var(--text);line-height:1.5}.service-dropdown-item:last-child{border-bottom:none}.service-dropdown-item:hover:not(:disabled){background:var(--bg-hover)}.service-dropdown-item:disabled{opacity:.35;cursor:not-allowed}.service-dropdown-item--danger{color:var(--accent-error)}.btn-update{background:var(--btn-primary-bg);color:var(--btn-primary-text);border-color:var(--btn-primary-bg);border-radius:3px}.btn-update:hover:not(:disabled){background:var(--btn-primary-bg-hover);border-color:var(--btn-primary-bg-hover)}.btn-reset{color:var(--text-muted);border-color:var(--border);border-radius:3px}.btn-reset:hover:not(:disabled){color:var(--accent-error);border-color:var(--accent-error)}.btn-cancel{color:var(--text-muted);border-color:var(--border)}.btn-danger{background:var(--accent-error);color:#fff;border-color:var(--accent-error);border-radius:3px}.btn-danger:hover{opacity:.85}.confirm-dialog{min-width:360px}.confirm-dialog .modal-body p{margin:0;font-size:13px;line-height:1.5;color:var(--text)}.btn-push-trades{color:var(--accent-iris);border-color:var(--accent-iris)}.btn-push-trades:hover:not(:disabled){background:var(--accent-iris);color:#fff}.btn-positions{color:var(--accent-success);border-color:var(--accent-success)}.btn-positions:hover:not(:disabled){background:var(--accent-success);color:#fff}.btn-variables{color:var(--text)}.btn-generate{color:var(--text-muted);border-color:var(--border)}.btn-generate:hover{background:var(--bg-widget-hover);color:var(--text)}.btn-restart{color:var(--accent-gold);border-color:var(--accent-gold)}.btn-restart:hover:not(:disabled){background:var(--accent-gold);color:#1b1b1b}.add-dropdown-wrap{position:relative;display:flex;align-items:center}.btn-add{display:inline-flex;align-items:center;justify-content:center;align-self:stretch;color:var(--accent);border-color:var(--accent)}.btn-add:hover:not(:disabled){background:var(--accent);color:#fff}.btn-create{color:var(--accent);border-color:var(--accent)}.btn-create:hover:not(:disabled){background:var(--accent);color:#fff}.create-service-name{display:flex;align-items:center;gap:.5rem;margin-bottom:.5rem}.create-service-name label{font-size:12px;color:var(--text-muted);white-space:nowrap}.create-service-name-input{flex:1;border:1px solid var(--border);border-radius:3px;background:var(--bg-widget);color:var(--text);padding:3px 7px;font-size:12px;font-family:inherit;outline:none}.create-service-name-input:focus{border-color:var(--accent)}.modal-overlay{position:fixed;inset:0;background:var(--overlay-bg);display:flex;align-items:center;justify-content:center;z-index:1000;padding:1rem}.modal-content{background:var(--bg-panel);border:1px solid var(--border-strong);border-radius:4px;width:fit-content;min-width:600px;max-width:90vw;max-height:90vh;display:flex;flex-direction:column}.modal-header{padding:.5rem .75rem;border-bottom:1px solid var(--border);background:var(--bg-subtle);border-radius:4px 4px 0 0;display:flex;justify-content:space-between;align-items:center}.modal-header h3{font-size:12px;font-weight:600;color:var(--text-muted);text-transform:uppercase;letter-spacing:.04em}.modal-close{background:none;border:none;font-size:1.1rem;color:var(--text-faint);cursor:pointer;padding:0;line-height:1}.modal-close:hover{color:var(--text)}.modal-body{padding:.75rem;flex:1;overflow:hidden;display:flex;flex-direction:column;min-height:0}.modal-vim{margin-bottom:.5rem;font-size:12px;color:var(--text-muted)}.modal-vim label{cursor:pointer;-webkit-user-select:none;user-select:none}.modal-footer{padding:.5rem .75rem;border-top:1px solid var(--border);display:flex;justify-content:flex-end;gap:.4rem}.config-history-modal{width:85vw;height:85vh}.config-history-modal .modal-body{overflow-y:auto;padding:0}.history-header-actions{display:flex;align-items:center;gap:.75rem}.history-compact-toggle{display:inline-flex;align-items:center;gap:.25rem;font-size:11px;color:var(--text-muted);cursor:pointer;-webkit-user-select:none;user-select:none;white-space:nowrap}.history-compact-toggle input{margin:0}.history-loading,.history-empty{padding:1.5rem;text-align:center;color:var(--text-muted);font-size:13px}.history-list{display:flex;flex-direction:column}.history-entry{border-bottom:1px solid var(--border)}.history-entry:last-child{border-bottom:none}.history-entry-header{display:flex;align-items:center;gap:.5rem;padding:.5rem .75rem;position:sticky;top:0;z-index:1;background:var(--bg-panel);cursor:pointer}.history-entry-header:hover{background:var(--bg-hover)}.history-entry-timestamp{font-size:12px;font-family:JetBrains Mono,Consolas,monospace;color:var(--text);flex:1}.history-entry-author{font-size:11px;color:var(--text-muted);padding:.1rem .4rem;background:var(--bg-subtle);border-radius:3px}.history-entry-actions{display:flex;gap:.3rem}.btn-history,.btn-format{color:var(--text-muted);border-color:var(--border);border-radius:3px}.btn-history:hover:not(:disabled),.btn-format:hover:not(:disabled){color:var(--text);border-color:var(--text-muted)}.btn-history-action{font-size:11px;padding:.15rem .5rem;color:var(--text-muted);border-color:var(--border);border-radius:3px}.btn-history-action:hover{color:var(--text);border-color:var(--text-muted)}.btn-history-apply:hover{color:var(--btn-primary-bg);border-color:var(--btn-primary-bg)}.history-diff{font-family:JetBrains Mono,Consolas,monospace;font-size:12px;line-height:1.5;overflow-x:auto;border-top:1px solid var(--border);overflow-y:auto;flex:1}.diff-line{display:flex;white-space:pre;padding:0 .5rem}.diff-same{color:var(--text-muted)}.diff-added{background:var(--diff-added-bg, rgba(0, 160, 0, .1));color:var(--diff-added-text, #067d17)}.diff-removed{background:var(--diff-removed-bg, rgba(200, 0, 0, .1));color:var(--diff-removed-text, #c04040)}.diff-marker{-webkit-user-select:none;user-select:none;width:1.2em;flex-shrink:0;text-align:center}.diff-text{flex:1}.diff-separator{color:var(--text-faint);text-align:center;padding:.1rem 0;border-top:1px dashed var(--border);border-bottom:1px dashed var(--border)}.status-success{padding:.3rem .6rem;border-left:3px solid var(--color-success);color:var(--color-success);font-size:12px;background:var(--color-success-bg);border-radius:0 2px 2px 0}.status-error{padding:.3rem .6rem;border-left:3px solid var(--color-error);color:var(--color-error);font-size:12px;background:var(--color-error-bg);border-radius:0 2px 2px 0}.empty-state{color:var(--text-faint);font-size:12px;padding:.5rem 0}.notifications{position:fixed;bottom:.75rem;right:.75rem;z-index:2000;display:flex;flex-direction:column-reverse;gap:.4rem;pointer-events:none}.notification{background:var(--bg-panel);color:var(--text);padding:.4rem .75rem;font-size:12px;max-width:320px;border:1px solid var(--border);border-left:3px solid var(--accent-error);border-radius:3px;cursor:pointer;pointer-events:all;box-shadow:0 2px 8px #00000040}.notification--update{display:flex;align-items:center;gap:.5rem;cursor:default;border-left-color:var(--accent-success, var(--accent-error))}.notif-button{position:relative}.notif-button--active{color:var(--accent-error);border-color:var(--accent-error)}.notif-count{margin-left:.25rem;font-size:10px;font-weight:600;line-height:1}.notif-panel{width:560px;max-width:90vw;max-height:80vh;display:flex;flex-direction:column}.notif-panel .notif-item-message{max-width:100%}.notif-panel-actions{display:flex;align-items:center;gap:.4rem}.notif-panel-body{overflow-y:auto;padding:0}.notif-empty{padding:1rem;color:var(--text-muted, var(--text));opacity:.6;text-align:center;font-size:12px}.notif-item{padding:.4rem .75rem;border-bottom:1px solid var(--border);border-left:3px solid var(--accent-error);cursor:pointer;font-size:12px;display:flex;flex-direction:column;gap:.15rem}.notif-item:hover{background:var(--bg-widget-hover)}.notif-item-time{font-size:10px;opacity:.6;font-family:var(--font-mono, monospace)}.notif-item-message{color:var(--text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.notif-item--expanded .notif-item-message{white-space:pre-wrap;overflow:visible;word-break:break-word}.theme-toggle{display:inline-flex;align-items:center;justify-content:center;background:var(--bg-widget);border:1px solid var(--border);border-radius:3px;color:var(--text);padding:.15rem .45rem;cursor:pointer;font-family:inherit;font-size:12px}.theme-toggle:hover{background:var(--bg-widget-hover);border-color:var(--border-strong)}@media(max-width:768px){.header{flex-direction:column;align-items:flex-start;gap:.4rem}.main{padding:.5rem}.services-container{grid-template-columns:1fr}.service-item{flex-wrap:wrap}.modal-content{min-width:unset;width:100%;max-height:95vh}}.groups-section{margin-bottom:.4rem}.groups-header{display:flex;align-items:center;gap:.3rem;-webkit-user-select:none;user-select:none;padding:.2rem 0}.groups-toggle{font-size:9px;color:var(--text-faint);line-height:1}.groups-label{font-size:10px;font-weight:700;color:var(--text-faint);text-transform:uppercase;letter-spacing:.08em}.groups-header:hover .groups-label,.groups-header:hover .groups-toggle{color:var(--text-muted)}.groups-body,.group-item{display:flex;flex-direction:column}.group-row{gap:.5rem}.group-row>.service-actions{display:flex}.group-expand-toggle{display:flex;color:var(--text-faint);cursor:pointer;flex-shrink:0;-webkit-user-select:none;user-select:none}.group-expand-toggle:hover{color:var(--text)}.group-name-input{border:none;border-bottom:1px solid transparent;background:transparent;font-family:inherit;font-size:12px;color:var(--text);width:80px;outline:none;padding:0;flex-shrink:0}.group-name-input:focus{border-bottom-color:var(--border)}.group-query-input{flex:1;border:none;border-bottom:1px solid var(--border);background:transparent;font-family:inherit;font-size:12px;color:var(--text);outline:none;padding:0;min-width:0}.group-query-input:focus{border-bottom-color:var(--border-strong)}.group-query-input::placeholder{color:var(--text-placeholder)}.group-count{font-size:10px;color:var(--text-faint);flex-shrink:0}.group-filter-input{width:100%;border:none;border-bottom:1px solid var(--border);background:transparent;font-family:inherit;font-size:11px;color:var(--text);outline:none;padding:.2rem 0;margin-bottom:.2rem;box-sizing:border-box}.group-filter-input:focus{border-bottom-color:var(--border-strong)}.group-filter-input::placeholder{color:var(--text-placeholder)}.group-service-checkbox{display:flex;align-items:center;gap:.4rem;padding:.15rem 0 .15rem .2rem;font-size:11px;cursor:pointer;-webkit-user-select:none;user-select:none}.group-service-checkbox input[type=checkbox]{margin:0;flex-shrink:0}.group-service-checkbox .service-name{font-size:11px;flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.group-service-checkbox .service-status{font-size:9px;flex-shrink:0}.group-svc-kind{font-size:9px;color:var(--text-faint);font-weight:700;text-transform:uppercase;flex-shrink:0;width:1.4em}.btn-commit{color:var(--text-faint);border-color:var(--border-subtle)}.btn-commit:hover{background:var(--bg-widget-hover);color:var(--text)}.btn-commit--dirty{color:var(--accent-success);border-color:var(--accent-success)}.btn-commit--dirty:hover{background:var(--accent-success);color:#fff}.btn-add-group{background:none;border:none;color:var(--text-faint);cursor:pointer;font-family:inherit;font-size:11px;padding:.3rem 0;text-align:left;border-bottom:1px solid var(--border-faint)}.btn-add-group:last-child{border-bottom:none}.btn-add-group:hover{color:var(--text)}.group-services{padding:0}.group-service-item{padding-left:1.2rem}.group-service-item .service-name{font-size:11px}.group-service-item .service-status{font-size:9px}.group-row-name--dirty:before{content:"●";color:var(--accent-success);font-size:8px;margin-right:.35rem;vertical-align:middle}.group-edit-modal{width:min(560px,95vw)}.group-edit-name-row{display:flex;align-items:center;gap:.5rem;margin-bottom:.5rem}.group-name-input--modal{width:100%;font-size:13px;border-bottom-color:var(--border);padding:.2rem 0}.group-services--modal{flex:1;overflow-y:auto;min-height:0;max-height:50vh}.group-services-split{display:grid;grid-template-columns:1fr 1fr;gap:.5rem;flex:1;min-height:0;max-height:50vh}.group-services-col{display:flex;flex-direction:column;min-height:0;border:1px solid var(--border-faint);border-radius:3px;background:var(--bg)}.group-services-col-title{display:flex;align-items:baseline;gap:.5rem;padding:.3rem .5rem;font-size:10px;font-weight:700;text-transform:uppercase;color:var(--text-faint);border-bottom:1px solid var(--border-faint);background:var(--bg-widget)}.group-services-col-hint{font-weight:400;text-transform:none;font-size:9px;color:var(--text-placeholder)}.group-services-col-body{flex:1;overflow-y:auto;min-height:60px;padding:.15rem}.group-services-col-empty{padding:.6rem .5rem;font-size:10px;color:var(--text-placeholder);text-align:center;font-style:italic}.group-service-row{display:flex;align-items:center;gap:.4rem;padding:.2rem .3rem;font-size:11px;cursor:pointer;-webkit-user-select:none;user-select:none;border-radius:2px}.group-service-row:hover{background:var(--bg-widget-hover)}.group-service-row--added{cursor:grab}.group-service-row--added:active{cursor:grabbing}.group-service-row--dragging{opacity:.4}.group-service-row .service-name{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:11px}.group-service-row .service-status{font-size:9px;flex-shrink:0}.group-svc-grip{color:var(--text-placeholder);font-size:11px;letter-spacing:-2px;flex-shrink:0}.modal-content--wide{width:min(900px,95vw);max-width:95vw}.modal-content--resizable{resize:both;overflow:hidden;min-width:600px;min-height:400px;max-width:98vw;max-height:98vh}.modal-content--resizable .var-modal-body{overflow-y:auto;flex:1;min-height:0}.var-modal-body{display:flex;flex-direction:column;padding:.75rem 1rem;gap:.5rem;height:calc(100vh - var(--header-height, 2.25rem) - 2.25rem);overflow-y:auto}.var-time-range{display:flex;align-items:center;gap:.5rem;flex-wrap:wrap;flex-shrink:0}.var-time-range label{font-size:11px;color:var(--text-muted);white-space:nowrap}.var-datetime-input{border:1px solid var(--border);border-radius:3px;background:var(--bg-widget);color:var(--text);font-family:inherit;font-size:11px;padding:.15rem .4rem;outline:none}.var-datetime-input:focus{border-color:var(--accent)}.var-split-view{display:grid;grid-template-columns:1fr 1fr;gap:.5rem;flex-shrink:0}.var-split-panel{display:flex;flex-direction:column;border:1px solid var(--border);border-radius:3px;min-height:0}.var-panel-header{font-size:10px;font-weight:600;text-transform:uppercase;letter-spacing:.06em;color:var(--text-faint);padding:.25rem .5rem;border-bottom:1px solid var(--border);background:var(--bg-subtle);border-radius:3px 3px 0 0;flex-shrink:0}.var-panel-list{flex:1;overflow-y:auto;max-height:220px;min-height:80px}.var-indicator-item{display:flex;align-items:center;justify-content:space-between;padding:.25rem .5rem;cursor:pointer;border-bottom:1px solid var(--border-faint);font-size:11px;gap:.5rem}.var-indicator-item:last-child{border-bottom:none}.var-indicator-item:hover{background:var(--bg-hover)}.var-indicator-name{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.var-indicator-add{color:var(--accent-foam);font-size:13px;font-weight:700;flex-shrink:0;line-height:1}.var-indicator-remove{color:var(--text-faint);font-size:14px;flex-shrink:0;line-height:1}.var-indicator-item--selected{background:var(--bg-subtle)}.var-indicator-item--selected:hover{background:var(--bg-hover)}.var-loading,.var-chart-loading{font-size:11px;color:var(--text-faint);padding:.5rem;text-align:center}.var-chart-wrap{border:1px solid var(--border-subtle);flex-shrink:0;width:100%;box-sizing:border-box;overflow:visible}.var-chart-container{width:100%;display:block}.var-chart-container .u-wrap{background:var(--bg)!important}.var-chart-container .u-select{background:var(--accent);opacity:.2}.var-chart-container .u-legend{font-size:11px;font-family:inherit;color:var(--text-muted);background:transparent;border:none;padding:.25rem .5rem}.var-chart-container .u-legend th,.var-chart-container .u-legend td{padding:.1rem .4rem;color:var(--text);font-size:11px}.var-chart-container .u-legend .u-series>*{cursor:pointer}.var-chart-container .u-legend .u-off>*{opacity:.35}.var-chart-container .u-cursor-x,.var-chart-container .u-cursor-y{border-color:var(--border-strong)!important}.u-tooltip{position:absolute;pointer-events:none;z-index:10;background:var(--bg-panel);border:1px solid var(--border);border-radius:3px;padding:.3rem .5rem;font-size:11px;font-family:inherit;color:var(--text);display:flex;flex-direction:column;gap:.2rem;white-space:nowrap}.u-tt-ts{color:var(--text-muted);margin-bottom:.15rem;display:block}.u-tt-row{display:flex;align-items:center;gap:.35rem}.u-tt-dot{width:6px;height:6px;border-radius:50%;flex-shrink:0}.u-tt-name{color:var(--text-muted);flex:1}.u-tt-val{color:var(--text);font-weight:600}.service-status--started{background:var(--accent-success);color:#fff}.service-status--stopped{background:var(--bg-widget);color:var(--text-faint)}.service-status--locked{background:var(--bg-widget);color:var(--accent-gold)}.service-status--hard-locked{background:var(--bg-widget);color:var(--accent-error)}.service-status--closing{background:var(--bg-widget);color:var(--accent-gold)}.positions-table-wrap{flex:1;display:flex;flex-direction:column;min-height:0;border:1px solid var(--border);border-radius:3px;overflow:hidden}.positions-empty{text-align:center;padding:32px;color:var(--text-muted)}.positions-count{color:var(--text-muted);font-size:12px;margin-left:8px}.positions-header{flex-shrink:0;background:var(--bg-panel)}.positions-body{flex:1;overflow-y:auto;min-height:0}.positions-table{width:100%;table-layout:fixed;border-collapse:collapse;font-size:13px;font-family:SF Mono,Cascadia Code,Consolas,monospace}.positions-table th,.positions-table td{padding:5px 10px;border-bottom:1px solid var(--border-faint);text-align:left;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.positions-header-labels th{background:var(--bg-panel);color:var(--text-muted);font-weight:600;font-size:11px;text-transform:uppercase;letter-spacing:.5px}.pos-th-sortable{cursor:pointer;-webkit-user-select:none;user-select:none}.pos-th-sortable:hover{color:var(--text)}.pos-sort-arrow{font-size:9px}.positions-header-filters th{background:var(--bg-panel);padding:2px 4px 4px;border-bottom:2px solid var(--border)}.pos-filter-input{width:100%;box-sizing:border-box;padding:2px 4px;font-size:11px;font-family:inherit;border:1px solid var(--border-subtle);border-radius:3px;background:var(--bg-widget);color:var(--text);outline:none}.pos-filter-input::placeholder{color:var(--text-faint)}.pos-filter-input:focus{border-color:var(--accent)}.positions-table tbody tr:hover{background:var(--bg-hover)}.positions-table td.num,.positions-table th.num{text-align:right;font-variant-numeric:tabular-nums}.positions-table td.ts{color:var(--text-muted);font-size:12px}.log-limit-input{width:60px}.log-filter-input{flex:1;border:1px solid var(--border);border-radius:3px;background:var(--bg-widget);color:var(--text);font-family:inherit;font-size:11px;padding:.15rem .4rem;outline:none}.log-filter-input:focus{border-color:var(--accent)}.log-table-scroll{flex:1;overflow:auto}.log-col-expand{width:3ch;min-width:3ch;text-align:center;cursor:pointer;color:var(--text-muted)}.log-col-ts{white-space:nowrap;width:35ch;min-width:35ch}.log-col-level{white-space:nowrap;width:15ch;min-width:15ch}.log-col-target,.log-col-message{width:50%}.log-table thead{position:sticky;top:0;z-index:1}.log-row{cursor:pointer}.log-row--expanded{background:var(--bg-hover)}.log-level{font-size:11px;font-weight:600;padding:1px 5px;border-radius:2px}.log-level--error{color:var(--accent-love)}.log-level--warn{color:var(--accent-gold)}.log-level--info{color:var(--accent-foam)}.log-level--debug{color:var(--text-muted)}.log-level--trace{color:var(--text-muted);opacity:.6}.log-target{color:var(--text-muted)}.log-message{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.log-detail-row td{padding:0!important;border-bottom:1px solid var(--border)!important}.log-detail{padding:8px 12px 8px 36px;background:var(--bg-panel);display:flex;flex-direction:column;gap:8px}.log-detail-section{display:flex;flex-direction:column;gap:4px}.log-detail-title{font-size:11px;font-weight:600;color:var(--text-muted);text-transform:uppercase;letter-spacing:.5px}.log-detail-entries{display:flex;flex-direction:column;gap:2px}.log-detail-entry{display:flex;gap:8px;font-size:12px;line-height:1.5}.log-detail-key{color:var(--accent-iris);white-space:nowrap;flex-shrink:0}.log-detail-key:after{content:":"}.log-detail-val{color:var(--text);word-break:break-all;white-space:pre-wrap}.log-detail-span{display:flex;flex-direction:column;gap:2px}.log-detail-span-header{font-size:11px;color:var(--text-muted)}.log-detail-empty{font-size:12px;color:var(--text-muted)}.btn-logs{background:var(--bg-widget);color:var(--text)}.status-short,.platform-header-break{display:none}@media(max-width:720px){.platform-header-break{display:block;flex-basis:100%;height:0}.status-full{display:none}.status-short{display:inline}.service-status{min-width:1.5em;padding:.1rem .25rem}.service-name{font-size:11px;min-width:0}}.modal-content.palette{width:600px;min-width:0;max-width:90vw;max-height:70vh;padding:0;overflow:hidden}.palette-input{width:100%;padding:.6rem .75rem;font-size:13px;border:none;border-bottom:1px solid var(--border);background:var(--bg-subtle);color:var(--text);outline:none;border-radius:4px 4px 0 0}.palette-input::placeholder{color:var(--text-placeholder)}.palette-list{flex:1;overflow-y:auto;max-height:50vh;display:grid;grid-template-columns:auto 1fr auto auto;align-content:start}.palette-item{display:grid;grid-template-columns:subgrid;grid-column:1 / -1;align-items:center;gap:.6rem;padding:.4rem .75rem;cursor:pointer;font-size:12px;color:var(--text);border-bottom:1px solid var(--border-faint)}.palette-item:last-child{border-bottom:none}.palette-item--active{background:var(--bg-hover)}.palette-item-cat{font-size:10px;color:var(--text-muted);text-transform:uppercase;letter-spacing:.04em;min-width:64px}.palette-item-label{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.palette-item-action{font-size:11px;color:var(--text-muted);white-space:nowrap}.palette-item-hint{font-size:11px;color:var(--text-faint);white-space:nowrap}.palette-empty{grid-column:1 / -1;padding:.75rem;font-size:12px;color:var(--text-muted);text-align:center}.shortcuts-modal{width:520px;min-width:0}.shortcuts-body{display:flex;flex-direction:column;gap:1rem;padding:.75rem 1rem;overflow-y:auto}.shortcuts-section{display:flex;flex-direction:column;gap:.3rem}.shortcuts-section-title{font-size:10px;font-weight:600;color:var(--text-muted);text-transform:uppercase;letter-spacing:.06em;margin-bottom:.15rem}.shortcut-row{display:flex;align-items:center;gap:.3rem;font-size:12px;color:var(--text);padding:.15rem 0}.shortcut-row kbd{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,monospace;font-size:10px;padding:.05rem .35rem;border:1px solid var(--border);border-bottom-width:2px;border-radius:3px;background:var(--bg-widget);color:var(--text);line-height:1.4}.shortcut-desc{margin-left:auto;color:var(--text-muted);font-size:12px}.settings-modal{width:420px;min-width:0}.settings-body{display:flex;flex-direction:column;gap:.75rem;padding:.75rem 1rem}.settings-row{display:flex;align-items:center;gap:.75rem;padding:.4rem 0}.settings-row-label{display:flex;flex-direction:column;gap:.15rem;margin-right:auto}.settings-row-title{font-size:13px;color:var(--text)}.settings-row-desc{font-size:11px;color:var(--text-muted);text-transform:lowercase}.login-container{display:flex;justify-content:center;align-items:center;min-height:100vh;background:var(--bg)}.login-box{background:var(--bg);padding:2rem;border:1px solid var(--border-strong);width:100%;max-width:360px}.login-box h1{margin:0 0 1.5rem;font-size:13px;font-weight:700;letter-spacing:.05em;text-transform:uppercase;color:var(--text)}.form-group{margin-bottom:.75rem}.form-group label{display:block;margin-bottom:.3rem;font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.08em;color:var(--text-faint)}.form-group input{width:100%;padding:.35rem .5rem;border:none;border-bottom:1px solid var(--border);font-size:12px;background:transparent;color:var(--text);font-family:inherit;outline:none;box-sizing:border-box}.form-group input:focus{border-color:var(--border-strong)}.form-group input::placeholder{color:var(--text-placeholder)}.form-group input:disabled{opacity:.35;cursor:not-allowed}.error-message{padding:.4rem .75rem;margin-bottom:.75rem;border-left:3px solid var(--color-error);color:var(--color-error);font-size:12px;background:var(--color-error-bg)}.login-button{width:100%;padding:.35rem .5rem;background:var(--btn-primary-bg);color:var(--btn-primary-text);border:1px solid var(--btn-primary-bg);font-size:12px;font-weight:700;letter-spacing:.04em;text-transform:uppercase;cursor:pointer;font-family:inherit;margin-top:1rem}.login-button:hover:not(:disabled){background:var(--btn-primary-bg-hover);border-color:var(--btn-primary-bg-hover)}.login-button:disabled{opacity:.35;cursor:not-allowed}@media(max-width:768px){.login-box{margin:1rem;padding:1.5rem}}
