:root{--bg: #0d0d0d;--surface: #171717;--surface-2: #1f1f1f;--border: #2a2a2a;--text: #e8e8e8;--text-muted: #888;--text-dim: #555;--green: #4ade80;--red: #f87171;--yellow: #fbbf24;--accent: #818cf8;--accent-hover: #a5b4fc;--btn-bg: #252535;--btn-hover: #2e2e42;--radius: 10px;--radius-sm: 6px}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}html{font-size:16px;-webkit-text-size-adjust:100%;overflow-x:hidden}body{background:var(--bg);color:var(--text);font-family:-apple-system,BlinkMacSystemFont,Segoe UI,system-ui,sans-serif;min-height:100dvh;line-height:1.5;overflow-x:hidden}.login-wrap{min-height:100dvh;display:flex;align-items:center;justify-content:center;padding:1.5rem}.login-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:2.5rem 2rem;width:100%;max-width:360px;display:flex;flex-direction:column;gap:1.5rem}.login-logo{display:flex;flex-direction:column;align-items:center;gap:.5rem}.login-logo h1{font-size:1.75rem;font-weight:700;letter-spacing:-.03em;color:var(--accent)}.login-logo p{font-size:.85rem;color:var(--text-muted)}.login-form{display:flex;flex-direction:column;gap:1rem}.form-group{display:flex;flex-direction:column;gap:.4rem}.form-group label{font-size:.8rem;color:var(--text-muted);font-weight:500;text-transform:uppercase;letter-spacing:.05em}.form-group input{background:var(--surface-2);border:1px solid var(--border);border-radius:var(--radius-sm);color:var(--text);padding:.7rem .9rem;font-size:1rem;outline:none;transition:border-color .15s;-webkit-appearance:none}.form-group input:focus{border-color:var(--accent)}.btn-primary{background:var(--accent);color:#0d0d0d;border:none;border-radius:var(--radius-sm);padding:.75rem 1.25rem;font-size:.95rem;font-weight:600;cursor:pointer;transition:background .15s,transform .1s;-webkit-tap-highlight-color:transparent}.btn-primary:hover{background:var(--accent-hover)}.btn-primary:active{transform:scale(.98)}.btn-primary:disabled{opacity:.5;cursor:not-allowed;transform:none}.login-error{color:var(--red);font-size:.85rem;text-align:center;min-height:1.2em}.dashboard{min-height:100dvh;display:flex;flex-direction:column}.topbar{background:var(--surface);border-bottom:1px solid var(--border);padding:1rem 1.25rem;display:flex;align-items:center;justify-content:space-between;gap:.85rem;position:sticky;top:0;z-index:10}.topbar-left{display:flex;align-items:center;gap:.6rem}.topbar-title{font-size:1.1rem;font-weight:700;color:var(--accent);letter-spacing:-.02em}.topbar-refresh{font-size:.75rem;color:var(--text-dim)}.main-content{padding:1.25rem;flex:1;max-width:1100px;margin:0 auto;width:100%}.category-section{margin-bottom:2rem}.category-title{font-size:.7rem;font-weight:600;text-transform:uppercase;letter-spacing:.1em;color:var(--text-dim);margin-bottom:.75rem;padding-left:.1rem}.services-grid{display:grid;grid-template-columns:minmax(0,1fr);gap:.75rem}@media (min-width: 480px){.services-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (min-width: 900px){.services-grid{grid-template-columns:repeat(3,minmax(0,1fr))}}.service-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:1rem 1.1rem;display:flex;flex-direction:column;gap:.75rem;min-width:0;transition:border-color .15s}.service-card:hover{border-color:#3a3a3a}.service-card.disabled{opacity:.45}.card-header{display:flex;align-items:flex-start;justify-content:space-between;gap:.5rem}.card-info{flex:1;min-width:0}.card-name{font-size:.95rem;font-weight:600;color:var(--text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.card-description{font-size:.78rem;color:var(--text-muted);margin-top:.15rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.status-badge{display:flex;align-items:center;gap:.35rem;font-size:.72rem;font-weight:500;flex-shrink:0;padding:.2rem .5rem;border-radius:99px;border:1px solid transparent}.status-badge.running{color:var(--green);background:#4ade8014;border-color:#4ade8033}.status-badge.stopped{color:var(--text-dim);background:#ffffff08;border-color:var(--border)}.status-badge.unknown{color:var(--yellow);background:#fbbf2414;border-color:#fbbf2433}.status-dot{width:6px;height:6px;border-radius:50%;background:currentColor;flex-shrink:0}.status-badge.running .status-dot{animation:pulse-green 2s infinite}@keyframes pulse-green{0%,to{opacity:1}50%{opacity:.4}}.protected-badge{font-size:.65rem;color:var(--accent);background:#818cf814;border:1px solid rgba(129,140,248,.25);border-radius:99px;padding:.15rem .5rem;flex-shrink:0}.placeholder-badge{font-size:.65rem;color:var(--text-dim);background:var(--surface-2);border:1px solid var(--border);border-radius:99px;padding:.15rem .5rem;flex-shrink:0}.dir-picker-row{display:flex;gap:.4rem;margin-bottom:.5rem}.dir-select{display:block;width:100%;min-width:0;flex:1;padding:.45rem .5rem;border-radius:var(--radius-sm);border:1px solid var(--border);background:var(--btn-bg);color:var(--text);font-size:.8rem;font-weight:500;cursor:pointer;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;-webkit-tap-highlight-color:transparent}.dir-select:disabled{opacity:.3;cursor:not-allowed}.dir-browse{flex-shrink:0;padding:.45rem .6rem;border-radius:var(--radius-sm);border:1px solid var(--border);background:var(--btn-bg);color:var(--text);font-size:.85rem;cursor:pointer;transition:background .15s,border-color .15s}.dir-browse:hover:not(:disabled){background:var(--btn-hover);border-color:var(--accent)}.dir-browse:disabled{opacity:.3;cursor:not-allowed}.card-actions{display:flex;gap:.5rem}.btn-action{flex:1;padding:.5rem;border-radius:var(--radius-sm);border:1px solid var(--border);background:var(--btn-bg);color:var(--text-muted);font-size:.8rem;font-weight:500;cursor:pointer;transition:background .15s,color .15s,border-color .15s,transform .1s;-webkit-tap-highlight-color:transparent}.btn-action:not(:disabled):hover{background:var(--btn-hover);color:var(--text)}.btn-action:active:not(:disabled){transform:scale(.97)}.btn-action.start:not(:disabled):hover{border-color:#4ade8066;color:var(--green)}.btn-action.stop:not(:disabled):hover{border-color:#f8717166;color:var(--red)}.btn-action:disabled{opacity:.3;cursor:not-allowed;transform:none}.btn-action.loading{color:var(--accent);border-color:var(--accent)}.btn-link{flex:0;padding:.5rem .65rem;border-radius:var(--radius-sm);border:1px solid var(--border);background:var(--btn-bg);color:var(--text-dim);font-size:.85rem;line-height:1;text-decoration:none;display:inline-flex;align-items:center;justify-content:center;transition:background .15s,color .15s,border-color .15s;-webkit-tap-highlight-color:transparent}.btn-link:hover{background:var(--btn-hover);color:var(--accent);border-color:#818cf866}@media (max-width: 479px){.main-content{padding:1rem}.services-grid{gap:.6rem}.category-section{margin-bottom:1.4rem}.category-title{font-size:.65rem;margin-bottom:.6rem}.service-card{padding:.8rem .9rem;gap:.55rem}.card-name{font-size:.86rem}.card-description{font-size:.72rem}.status-badge,.protected-badge,.placeholder-badge{font-size:.64rem;padding:.15rem .45rem}.dir-select{padding:.4rem .45rem;font-size:.74rem;margin-bottom:.4rem}.card-actions{gap:.4rem}.btn-action{padding:.42rem;font-size:.72rem}}.nginx-toolbar{display:flex;gap:.75rem;align-items:center;margin-bottom:1.5rem;flex-wrap:wrap}.nginx-btn{padding:.45rem 1rem;border-radius:var(--radius-sm);border:1px solid var(--border);background:var(--btn-bg);color:var(--text-muted);font-size:.85rem;font-weight:500;cursor:pointer;transition:background .15s,color .15s,border-color .15s;-webkit-tap-highlight-color:transparent}.nginx-btn:hover:not(:disabled){background:var(--btn-hover);color:var(--text)}.nginx-btn.primary{color:var(--accent);border-color:#818cf84d}.nginx-btn.primary:hover:not(:disabled){border-color:var(--accent);background:#818cf814}.nginx-btn:disabled{opacity:.4;cursor:not-allowed}.nginx-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#000000a6;z-index:200;display:flex;align-items:center;justify-content:center;padding:1rem}.nginx-overlay.hidden{display:none}.nginx-modal{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);width:100%;max-width:780px;max-height:90dvh;display:flex;flex-direction:column;overflow:hidden}.nginx-modal-sm{max-width:440px}.nginx-modal-head{display:flex;align-items:center;justify-content:space-between;padding:.85rem 1.1rem;border-bottom:1px solid var(--border);gap:.75rem;flex-shrink:0}.nginx-modal-title{font-size:.9rem;font-weight:600;color:var(--accent);min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.nginx-modal-x{flex-shrink:0;background:none;border:none;color:var(--text-dim);font-size:1rem;cursor:pointer;padding:.1rem .3rem;transition:color .15s;line-height:1}.nginx-modal-x:hover{color:var(--text)}.nginx-editor{flex:1;background:var(--bg);color:var(--text);border:none;padding:1rem;font-family:Menlo,Monaco,Consolas,monospace;font-size:.78rem;line-height:1.55;resize:none;outline:none;overflow-y:auto;min-height:260px}.nginx-modal-foot{display:flex;align-items:center;gap:1rem;padding:.85rem 1.1rem;border-top:1px solid var(--border);flex-shrink:0}.nginx-save-status{font-size:.8rem;color:var(--text-muted);min-width:0;overflow:hidden;text-overflow:ellipsis}.nginx-new-form{padding:1rem 1.1rem;display:flex;flex-direction:column;gap:.55rem;overflow-y:auto}.nginx-new-form label{font-size:.72rem;color:var(--text-muted);font-weight:600;text-transform:uppercase;letter-spacing:.05em;margin-top:.3rem}.nginx-new-form input[type=text],.nginx-new-form input[type=number]{background:var(--surface-2);border:1px solid var(--border);border-radius:var(--radius-sm);color:var(--text);padding:.5rem .75rem;font-size:.9rem;outline:none;transition:border-color .15s;width:100%}.nginx-new-form input:focus{border-color:var(--accent)}.nginx-check-row{display:flex!important;align-items:center;gap:.5rem;text-transform:none!important;letter-spacing:0!important;font-size:.82rem!important;font-weight:400!important;color:var(--text-muted)!important;cursor:pointer;margin-top:.2rem}.toast{position:fixed;bottom:1.5rem;left:50%;transform:translate(-50%) translateY(4rem);background:var(--surface-2);border:1px solid var(--border);border-radius:var(--radius);padding:.75rem 1.25rem;font-size:.85rem;color:var(--text-muted);opacity:0;transition:transform .25s ease,opacity .25s ease;z-index:100;white-space:nowrap;pointer-events:none;max-width:calc(100vw - 2rem);text-align:center}.toast.show{transform:translate(-50%) translateY(0);opacity:1}.toast.error{color:var(--red);border-color:#f871714d}.toast.success{color:var(--green);border-color:#4ade804d}.tab-nav{display:flex;gap:.25rem;background:var(--surface-2);border:1px solid var(--border);border-radius:var(--radius-sm);padding:.2rem;flex:1;min-width:0;overflow-x:auto;overflow-y:hidden;scrollbar-width:none;-ms-overflow-style:none}.tab-nav::-webkit-scrollbar{display:none}.tab-btn{background:none;border:none;border-radius:4px;color:var(--text-muted);padding:.3rem .75rem;font-size:.82rem;font-weight:500;cursor:pointer;transition:background .15s,color .15s;-webkit-tap-highlight-color:transparent;flex-shrink:0;white-space:nowrap}.tab-btn:hover{color:var(--text)}.tab-btn.active{background:var(--surface);color:var(--text);box-shadow:0 1px 3px #0006}.tab-logout{margin-left:auto}.tab-logout:hover,.tab-logout:active{color:var(--red)}.tab-content{flex:1;display:flex;flex-direction:column}.services-tab-wrap{display:flex;flex-direction:column;flex:1}.topbar-refresh-row{padding:.5rem 1.25rem 0;font-size:.72rem;color:var(--text-dim);min-height:1.4rem}.metrics-content{padding:1.25rem;overflow-y:auto;flex:1}#metrics-inner{max-width:1100px;margin:0 auto;display:flex;flex-direction:column;gap:1.75rem}.metrics-loading,.metrics-error{color:var(--text-muted);text-align:center;padding:3rem 1rem;font-size:.9rem}.metrics-error{color:var(--red)}.metrics-header{display:flex;align-items:center;justify-content:space-between;font-size:.72rem;color:var(--text-dim)}.metrics-section{display:flex;flex-direction:column}.metrics-section-title{font-size:.7rem;font-weight:600;text-transform:uppercase;letter-spacing:.1em;color:var(--text-dim);margin-bottom:.75rem}.metrics-section-title-row{display:flex;align-items:center;justify-content:space-between;margin-bottom:.75rem}.metrics-section-title-row .metrics-section-title{margin-bottom:0}.btn-expand{font-size:.75rem;color:var(--accent);background:none;border:1px solid rgba(129,140,248,.3);border-radius:var(--radius-sm);padding:.25rem .65rem;cursor:pointer;transition:background .15s,border-color .15s;-webkit-tap-highlight-color:transparent}.btn-expand:hover{background:#818cf814;border-color:var(--accent)}.sys-grid{display:grid;grid-template-columns:1fr;gap:.75rem}@media (min-width: 540px){.sys-grid{grid-template-columns:repeat(3,1fr)}}.sys-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:1rem 1.1rem;display:flex;flex-direction:column;gap:.65rem}.sys-card-header{display:flex;justify-content:space-between;align-items:baseline}.sys-label{font-size:.72rem;font-weight:600;text-transform:uppercase;letter-spacing:.08em;color:var(--text-muted)}.sys-value{font-size:1.15rem;font-weight:700;font-variant-numeric:tabular-nums}.sys-bar-track{height:4px;background:var(--surface-2);border-radius:99px;overflow:hidden}.sys-bar-fill{height:100%;border-radius:99px;transition:width .6s ease;min-width:2px}.sys-spark{overflow:hidden}.sys-spark svg,.proc-chart-svg svg,.combined-chart-svg svg,.modal-chart-svg svg{width:100%;display:block}.sys-detail{font-size:.72rem;color:var(--text-muted)}.combined-charts{display:flex;flex-direction:column;gap:1rem}.combined-chart-wrap{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:1rem 1.1rem;display:flex;flex-direction:column;gap:.6rem}.combined-chart-header{display:flex;justify-content:space-between;align-items:center}.combined-chart-label{font-size:.72rem;font-weight:600;text-transform:uppercase;letter-spacing:.08em;color:var(--text-muted)}.combined-chart-max{font-size:.72rem;color:var(--text-dim);font-variant-numeric:tabular-nums}.combined-chart-svg{overflow:hidden;border-radius:4px;background:var(--surface-2)}.legend{display:flex;flex-wrap:wrap;gap:.5rem 1rem;margin-top:.25rem}.legend-item{display:flex;align-items:center;gap:.35rem;font-size:.75rem;color:var(--text-muted)}.legend-dot{width:8px;height:8px;border-radius:50%;flex-shrink:0}.legend-name{color:var(--text);font-weight:500}.legend-val{color:var(--text-dim);font-variant-numeric:tabular-nums}.proc-list{display:flex;flex-direction:column;gap:.75rem}.proc-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:1rem 1.1rem;display:flex;flex-direction:column;gap:.9rem}.proc-card--stopped{display:flex;flex-direction:row;align-items:center;justify-content:space-between;opacity:.35;padding:.65rem 1.1rem}.proc-card-header{display:flex;align-items:center;justify-content:space-between}.proc-info{display:flex;align-items:center;gap:.5rem}.proc-dot{width:8px;height:8px;border-radius:50%;flex-shrink:0}.proc-name{font-size:.95rem;font-weight:600;color:var(--text)}.proc-pid{font-size:.7rem;color:var(--text-dim);font-variant-numeric:tabular-nums}.proc-meters{display:grid;grid-template-columns:1fr 1fr;gap:.75rem 1.25rem}.proc-meter{display:flex;flex-direction:column;gap:.35rem}.proc-meter-header{display:flex;justify-content:space-between;align-items:baseline}.proc-meter-label{font-size:.68rem;font-weight:600;text-transform:uppercase;letter-spacing:.06em;color:var(--text-muted)}.proc-meter-value{font-size:.9rem;font-weight:700;font-variant-numeric:tabular-nums}.proc-charts{display:grid;grid-template-columns:1fr 1fr;gap:.75rem}.proc-chart-wrap{display:flex;flex-direction:column;gap:.3rem}.proc-chart-top{display:flex;justify-content:space-between;align-items:center}.proc-chart-label{font-size:.65rem;font-weight:700;text-transform:uppercase;letter-spacing:.06em}.proc-chart-max{font-size:.65rem;color:var(--text-dim);font-variant-numeric:tabular-nums}.proc-chart-svg{border-radius:4px;background:var(--surface-2);overflow:hidden}.proc-stopped-badge{font-size:.7rem;color:var(--text-dim);background:var(--surface-2);border:1px solid var(--border);border-radius:99px;padding:.15rem .5rem}.modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#000000b3;z-index:200;display:flex;align-items:flex-end;justify-content:center;opacity:0;transition:opacity .2s ease}@media (min-width: 600px){.modal-overlay{align-items:center}}.modal-overlay.open{opacity:1}.modal-box{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius) var(--radius) 0 0;width:100%;max-width:860px;max-height:90dvh;display:flex;flex-direction:column;transform:translateY(2rem);transition:transform .2s ease;overflow:hidden}@media (min-width: 600px){.modal-box{border-radius:var(--radius);transform:scale(.97);max-height:85dvh}}.modal-overlay.open .modal-box{transform:translateY(0) scale(1)}.modal-header{display:flex;align-items:center;justify-content:space-between;padding:1rem 1.25rem;border-bottom:1px solid var(--border);flex-shrink:0}.modal-title{font-size:.95rem;font-weight:600}.modal-close{background:none;border:none;color:var(--text-muted);font-size:1rem;cursor:pointer;padding:.25rem .5rem;border-radius:4px;transition:color .15s,background .15s}.modal-close:hover{color:var(--text);background:var(--surface-2)}.modal-body{overflow-y:auto;padding:1.25rem;display:flex;flex-direction:column;gap:1.5rem}.modal-chart-section{display:flex;flex-direction:column;gap:.6rem}.modal-chart-header{display:flex;justify-content:space-between;align-items:center}.modal-chart-label{font-size:.72rem;font-weight:600;text-transform:uppercase;letter-spacing:.08em;color:var(--text-muted)}.modal-chart-scale{font-size:.72rem;color:var(--text-dim)}.modal-chart-svg{border-radius:var(--radius-sm);background:var(--surface-2);overflow:hidden;position:relative}.modal-y-labels{display:flex;flex-direction:column;justify-content:space-between;font-size:.62rem;color:var(--text-dim);font-variant-numeric:tabular-nums;height:0;position:relative;margin-top:-200px;pointer-events:none;padding:0 .4rem}.modal-legend{display:flex;flex-direction:column;gap:.6rem;padding-top:.25rem;border-top:1px solid var(--border)}.modal-legend-row{display:flex;align-items:center;gap:.6rem;font-size:.82rem;flex-wrap:wrap}.modal-legend-name{font-weight:600;color:var(--text);flex:1;min-width:80px}.modal-legend-stats{color:var(--text-muted);font-variant-numeric:tabular-nums;font-size:.78rem}.folder-picker-box{max-width:720px}.folder-picker-body{display:flex;flex-direction:row;gap:1rem;padding:0;height:min(60vh,420px)}@media (max-width: 599px){.folder-picker-body{flex-direction:column;height:min(70vh,520px)}}.folder-favorites{width:180px;flex-shrink:0;border-right:1px solid var(--border);padding:1rem .75rem;overflow-y:auto;display:flex;flex-direction:column;gap:.5rem}@media (max-width: 599px){.folder-favorites{width:auto;border-right:none;border-bottom:1px solid var(--border);flex-direction:row;flex-wrap:wrap;max-height:30%}}.folder-favorites-title{font-size:.72rem;font-weight:600;text-transform:uppercase;letter-spacing:.08em;color:var(--text-muted)}.folder-favorites-empty{font-size:.78rem;color:var(--text-dim)}.folder-favorite-row{display:flex;align-items:center;gap:.25rem}.folder-favorite-nav{flex:1;text-align:left;background:none;border:none;color:var(--text);font-size:.8rem;padding:.3rem .4rem;border-radius:var(--radius-sm);cursor:pointer;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.folder-favorite-row.active .folder-favorite-nav,.folder-favorite-nav:hover{background:var(--surface-2)}.folder-favorite-remove{flex-shrink:0;background:none;border:none;color:var(--text-dim);cursor:pointer;padding:.2rem .35rem;border-radius:var(--radius-sm)}.folder-favorite-remove:hover{color:var(--text);background:var(--surface-2)}.folder-browser{flex:1;display:flex;flex-direction:column;min-width:0;padding:1rem 1.25rem 1rem 0;overflow:hidden}.folder-breadcrumb{font-size:.8rem;color:var(--text-muted);margin-bottom:.6rem;overflow-x:auto;white-space:nowrap;flex-shrink:0}.breadcrumb-item{background:none;border:none;color:var(--text-muted);cursor:pointer;padding:.1rem .2rem;font-size:.8rem}.breadcrumb-item:hover{color:var(--text)}.breadcrumb-item.current{color:var(--text);font-weight:600;cursor:default}.breadcrumb-sep{color:var(--text-dim);padding:0 .1rem}.folder-list{flex:1;overflow-y:auto;display:flex;flex-direction:column;gap:.15rem}.folder-list-item{text-align:left;background:none;border:none;color:var(--text);font-size:.85rem;padding:.45rem .5rem;border-radius:var(--radius-sm);cursor:pointer}.folder-list-item:hover{background:var(--surface-2)}.folder-list-empty,.folder-list-loading,.folder-list-error{color:var(--text-dim);font-size:.82rem;padding:.5rem}.folder-list-error{color:var(--danger, #e05252)}.folder-picker-footer{display:flex;align-items:center;justify-content:space-between;gap:.75rem;padding:.85rem 1.25rem;border-top:1px solid var(--border);flex-wrap:wrap}.folder-current-path{font-size:.75rem;color:var(--text-dim);font-family:monospace;word-break:break-all;flex:1;min-width:0}.folder-picker-actions{display:flex;gap:.5rem;flex-shrink:0}.claude-sessions-wrap{max-width:900px;margin:0 auto;padding:1rem;display:flex;flex-direction:column;gap:1rem}.cs-toolbar{display:flex;align-items:center;justify-content:space-between;gap:1rem;flex-wrap:wrap}.cs-intro{font-size:.85rem;color:var(--text-muted);margin:0;flex:1;min-width:220px}.cs-list{display:flex;flex-direction:column;gap:.6rem}.cs-empty{color:var(--text-dim);font-size:.88rem;padding:1.5rem;text-align:center;border:1px dashed var(--border);border-radius:var(--radius)}.cs-card{display:flex;align-items:center;justify-content:space-between;gap:1rem;flex-wrap:wrap;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:.85rem 1rem}.cs-card-info{min-width:0;flex:1}.cs-card-label{font-weight:600;font-size:.92rem}.cs-card-dir{font-size:.76rem;color:var(--text-muted);font-family:monospace;word-break:break-all;margin-top:.15rem}.cs-card-meta{font-size:.72rem;color:var(--text-dim);margin-top:.2rem}.cs-card-actions{display:flex;gap:.5rem;flex-shrink:0}.skeleton{background:linear-gradient(90deg,var(--surface) 25%,var(--surface-2) 50%,var(--surface) 75%);background-size:200% 100%;animation:shimmer 1.5s infinite;border-radius:var(--radius-sm)}@keyframes shimmer{0%{background-position:200% 0}to{background-position:-200% 0}}.skeleton-card{height:110px;border-radius:var(--radius)}.terminal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:300;background:var(--bg);display:flex;flex-direction:column}.terminal-header{display:flex;align-items:center;gap:.75rem;padding:.75rem 1rem;border-bottom:1px solid var(--border);flex-shrink:0}.terminal-title{font-weight:600;font-size:.9rem;color:var(--accent);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.terminal-status{font-size:.78rem;color:var(--text-muted);flex:1}.terminal-status.connected{color:var(--green)}.terminal-status.error{color:var(--red)}.terminal-close{background:var(--btn-bg);border:1px solid var(--border);border-radius:var(--radius-sm);color:var(--text-muted);font-size:.8rem;padding:.4rem .75rem;cursor:pointer;transition:color .15s,border-color .15s;flex-shrink:0}.terminal-close:hover{color:var(--text);border-color:var(--accent)}.terminal-body{flex:1;overflow:hidden;padding:.5rem}.terminal-body .xterm,.terminal-body .xterm-viewport{height:100%}.btn-action.terminal{color:var(--accent);border-color:var(--accent)}.btn-action.terminal:not(:disabled):hover{background:var(--accent);color:var(--bg)}.terminal-scroll-ctrl{flex-shrink:0;border-bottom:1px solid var(--border);background:var(--surface);padding:.3rem .5rem;display:flex;align-items:center;gap:.3rem}.terminal-scroll-label{font-size:.72rem;color:var(--text-muted);text-transform:uppercase;letter-spacing:.04em;margin-right:.25rem;flex-shrink:0}.tkey-scroll{flex:1;max-width:4rem;padding:.35rem 0;font-size:.85rem;color:var(--accent)!important;border-color:color-mix(in srgb,var(--accent) 40%,transparent)!important}.tkey-scroll:active{background:color-mix(in srgb,var(--accent) 15%,transparent)!important;color:var(--accent)!important}.terminal-keys{flex-shrink:0;border-top:1px solid var(--border);background:var(--surface);padding:.35rem .5rem .4rem}.terminal-keys-row{display:flex;gap:.3rem}.tkey{flex:1;background:var(--btn-bg);border:1px solid var(--border);border-radius:var(--radius-sm);color:var(--text);font-size:.9rem;padding:.5rem 0;cursor:pointer;text-align:center;user-select:none;-webkit-user-select:none;touch-action:manipulation;font-family:inherit;line-height:1;transition:background .08s,color .08s}.tkey:active{background:var(--btn-hover);color:var(--accent)}.users-tab-wrap{max-width:720px;margin:0 auto;padding:1rem;display:flex;flex-direction:column;gap:1.25rem}.users-create.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:1rem 1.1rem 1.2rem}.users-create h2{font-size:.95rem;margin:0 0 .8rem;color:var(--text)}.users-form{display:flex;flex-wrap:wrap;gap:.5rem}.users-form input{flex:1 1 140px;min-width:0;padding:.6rem .7rem;background:var(--bg);border:1px solid var(--border);border-radius:var(--radius-sm);color:var(--text);font-size:.9rem}.users-form input:focus{outline:none;border-color:var(--accent)}.users-form .btn-primary{flex:0 0 auto}.users-list{display:flex;flex-direction:column;gap:.6rem}.user-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:.8rem 1rem;display:flex;flex-direction:column;gap:.35rem}.user-card-main{display:flex;align-items:baseline;gap:.5rem;flex-wrap:wrap}.user-name{font-weight:600;color:var(--text)}.user-handle{color:var(--accent);font-size:.85rem}.user-card-meta{color:var(--text-muted);font-size:.78rem}.user-card-actions{display:flex;gap:.5rem;margin-top:.3rem;flex-wrap:wrap}.users-error{color:var(--red);padding:.5rem}.btn-secondary,.btn-danger{background:var(--btn-bg);border:1px solid var(--border);color:var(--text);border-radius:var(--radius-sm);cursor:pointer;transition:background .15s,border-color .15s,color .15s}.btn-secondary:hover{background:var(--btn-hover);border-color:var(--accent)}.btn-danger:hover{color:var(--red);border-color:var(--red)}.btn-sm{padding:.4rem .7rem;font-size:.82rem}.claude-user-name{color:var(--text-muted);font-size:.85rem;margin-left:auto;margin-right:.8rem}.claude-wrap{display:flex;justify-content:center;align-items:flex-start;padding:2rem 1rem}.claude-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:1.5rem 1.6rem;max-width:480px;width:100%;text-align:center}.claude-card h2{margin:0 0 .8rem;font-size:1.1rem}.claude-dir{font-family:ui-monospace,monospace;font-size:.85rem;color:var(--accent);background:var(--bg);border:1px solid var(--border);border-radius:var(--radius-sm);padding:.6rem .8rem;word-break:break-all}.claude-status-row{margin:.9rem 0}.claude-status{font-size:.9rem;font-weight:600}.claude-status.on{color:var(--green)}.claude-status.off{color:var(--text-muted)}.claude-actions{display:flex;gap:.6rem;justify-content:center;flex-wrap:wrap}.claude-error{color:var(--red);font-size:.85rem;margin-top:.8rem;min-height:1em}.users-select,.users-workdir{flex:1 1 160px;min-width:0;padding:.6rem .7rem;background:var(--bg);border:1px solid var(--border);border-radius:var(--radius-sm);color:var(--text);font-size:.9rem}.users-workdir{flex-basis:100%}.users-select:focus,.users-workdir:focus{outline:none;border-color:var(--accent)}.users-hint{color:var(--text-muted);font-size:.78rem;margin:.7rem 0 0}.user-tier{font-size:.72rem;padding:.12rem .5rem;border-radius:999px;border:1px solid var(--border);color:var(--text-muted)}.user-tier.tier-1{color:var(--green);border-color:#4ade8066}.user-tier.tier-2{color:var(--yellow);border-color:#fbbf2466}.user-tier.tier-3{color:var(--accent);border-color:#818cf866}.user-dir{font-family:ui-monospace,monospace}.users-form-row{display:flex;flex-wrap:wrap;gap:.5rem;width:100%}.users-form-row input,.users-form-row .users-select{flex:1 1 140px;min-width:0}.perms-block{width:100%;display:flex;flex-direction:column;gap:.6rem;padding:.8rem;background:var(--bg);border:1px solid var(--border);border-radius:var(--radius-sm)}.perms-block.perms-disabled{opacity:.45;pointer-events:none}.perms-block input[type=checkbox]{flex:0 0 auto;width:1rem;height:1rem;min-width:0;padding:0;margin:0;background:none;accent-color:var(--accent)}.perms-check{display:flex;align-items:center;gap:.45rem;font-size:.85rem;color:var(--text);cursor:pointer}.perms-check.perms-top{font-size:.88rem}.perms-group{display:flex;flex-direction:column;gap:.4rem}.perms-label{font-size:.78rem;color:var(--text-muted);text-transform:uppercase;letter-spacing:.03em}.perms-block .users-workdir{flex-basis:100%}.ms{display:flex;flex-direction:column;gap:.4rem}.ms-chips{display:flex;flex-wrap:wrap;gap:.35rem}.ms-chips:empty{display:none}.ms-chip{display:inline-flex;align-items:center;gap:.4rem;padding:.2rem .3rem .2rem .6rem;background:var(--btn-bg);border:1px solid var(--border);border-radius:999px;font-size:.82rem;color:var(--text)}.ms-chip-x{display:inline-flex;align-items:center;justify-content:center;width:1.1rem;height:1.1rem;padding:0;background:none;border:none;border-radius:999px;color:var(--text-muted);font-size:.7rem;cursor:pointer;transition:background .15s,color .15s}.ms-chip-x:hover{background:var(--red);color:#fff}.ms-select{flex:0 0 auto;width:100%}.user-editor{margin-top:.5rem}.user-edit-form{display:flex;flex-direction:column;gap:.6rem}.user-edit-actions{display:flex;gap:.5rem}.apps-tab-wrap{padding:1rem 0}.app-card{display:flex;flex-direction:column;gap:.5rem;justify-content:space-between;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:1rem}.app-card-main{display:flex;flex-direction:column;gap:.25rem}.app-card .service-name{font-weight:600;color:var(--text)}.app-card .service-desc{font-size:.82rem;color:var(--text-muted)}.app-card-actions{display:flex}.app-card-actions .btn-primary{text-decoration:none;display:inline-block}/**
 * Copyright (c) 2014 The xterm.js authors. All rights reserved.
 * Copyright (c) 2012-2013, Christopher Jeffrey (MIT License)
 * https://github.com/chjj/term.js
 * @license MIT
 *
 * Permission is hereby granted, free of charge, to any person obtaining a copy
 * of this software and associated documentation files (the "Software"), to deal
 * in the Software without restriction, including without limitation the rights
 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
 * copies of the Software, and to permit persons to whom the Software is
 * furnished to do so, subject to the following conditions:
 *
 * The above copyright notice and this permission notice shall be included in
 * all copies or substantial portions of the Software.
 *
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
 * THE SOFTWARE.
 *
 * Originally forked from (with the author's permission):
 *   Fabrice Bellard's javascript vt100 for jslinux:
 *   http://bellard.org/jslinux/
 *   Copyright (c) 2011 Fabrice Bellard
 *   The original design remains. The terminal itself
 *   has been extended to include xterm CSI codes, among
 *   other features.
 */.xterm{cursor:text;position:relative;user-select:none;-ms-user-select:none;-webkit-user-select:none}.xterm.focus,.xterm:focus{outline:none}.xterm .xterm-helpers{position:absolute;top:0;z-index:5}.xterm .xterm-helper-textarea{padding:0;border:0;margin:0;position:absolute;opacity:0;left:-9999em;top:0;width:0;height:0;z-index:-5;white-space:nowrap;overflow:hidden;resize:none}.xterm .composition-view{background:#000;color:#fff;display:none;position:absolute;white-space:nowrap;z-index:1}.xterm .composition-view.active{display:block}.xterm .xterm-viewport{background-color:#000;overflow-y:scroll;cursor:default;position:absolute;right:0;left:0;top:0;bottom:0}.xterm .xterm-screen{position:relative}.xterm .xterm-screen canvas{position:absolute;left:0;top:0}.xterm-char-measure-element{display:inline-block;visibility:hidden;position:absolute;top:0;left:-9999em;line-height:normal}.xterm.enable-mouse-events{cursor:default}.xterm.xterm-cursor-pointer,.xterm .xterm-cursor-pointer{cursor:pointer}.xterm.column-select.focus{cursor:crosshair}.xterm .xterm-accessibility:not(.debug),.xterm .xterm-message{position:absolute;left:0;top:0;bottom:0;right:0;z-index:10;color:transparent;pointer-events:none}.xterm .xterm-accessibility-tree:not(.debug) *::selection{color:transparent}.xterm .xterm-accessibility-tree{font-family:monospace;-webkit-user-select:text;user-select:text;white-space:pre}.xterm .xterm-accessibility-tree>div{transform-origin:left;width:fit-content}.xterm .live-region{position:absolute;left:-9999px;width:1px;height:1px;overflow:hidden}.xterm-dim{opacity:1!important}.xterm-underline-1{text-decoration:underline}.xterm-underline-2{text-decoration:double underline}.xterm-underline-3{text-decoration:wavy underline}.xterm-underline-4{text-decoration:dotted underline}.xterm-underline-5{text-decoration:dashed underline}.xterm-overline{text-decoration:overline}.xterm-overline.xterm-underline-1{text-decoration:overline underline}.xterm-overline.xterm-underline-2{text-decoration:overline double underline}.xterm-overline.xterm-underline-3{text-decoration:overline wavy underline}.xterm-overline.xterm-underline-4{text-decoration:overline dotted underline}.xterm-overline.xterm-underline-5{text-decoration:overline dashed underline}.xterm-strikethrough{text-decoration:line-through}.xterm-screen .xterm-decoration-container .xterm-decoration{z-index:6;position:absolute}.xterm-screen .xterm-decoration-container .xterm-decoration.xterm-decoration-top-layer{z-index:7}.xterm-decoration-overview-ruler{z-index:8;position:absolute;top:0;right:0;pointer-events:none}.xterm-decoration-top{z-index:2;position:relative}.xterm .xterm-scrollable-element>.scrollbar{cursor:default}.xterm .xterm-scrollable-element>.scrollbar>.scra{cursor:pointer;font-size:11px!important}.xterm .xterm-scrollable-element>.visible{opacity:1;background:#0000;transition:opacity .1s linear;z-index:11}.xterm .xterm-scrollable-element>.invisible{opacity:0;pointer-events:none}.xterm .xterm-scrollable-element>.invisible.fade{transition:opacity .8s linear}.xterm .xterm-scrollable-element>.shadow{position:absolute;display:none}.xterm .xterm-scrollable-element>.shadow.top{display:block;top:0;left:3px;height:3px;width:100%;box-shadow:var(--vscode-scrollbar-shadow, #000) 0 6px 6px -6px inset}.xterm .xterm-scrollable-element>.shadow.left{display:block;top:3px;left:0;height:100%;width:3px;box-shadow:var(--vscode-scrollbar-shadow, #000) 6px 0 6px -6px inset}.xterm .xterm-scrollable-element>.shadow.top-left-corner{display:block;top:0;left:0;height:3px;width:3px}.xterm .xterm-scrollable-element>.shadow.top.left{box-shadow:var(--vscode-scrollbar-shadow, #000) 6px 0 6px -6px inset}
