:root{font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif;line-height:1.5;color:#1a1a1a}body{margin:0;padding:2rem;background:#fafafa}main{max-width:1100px;margin:0 auto}header{display:flex;align-items:center;gap:1rem;border-bottom:1px solid #e5e5e5;padding-bottom:1rem;margin-bottom:1.5rem}header h1{flex:1;margin:0;font-size:1.5rem}button{padding:.5rem 1rem;border:1px solid #1a1a1a;background:#1a1a1a;color:#fff;border-radius:6px;cursor:pointer;font-size:.9rem}table{width:100%;border-collapse:collapse;background:#fff;box-shadow:0 1px 3px #0000000d;border-radius:6px;overflow:hidden}th,td{text-align:left;padding:.75rem 1rem;border-bottom:1px solid #f0f0f0}th{background:#f5f5f5;font-weight:600;font-size:.85rem}tr:last-child td{border-bottom:0}a{color:#06c;text-decoration:none}a:hover{text-decoration:underline}.filters{display:flex;flex-wrap:wrap;gap:.5rem;margin-bottom:1rem}.filters input,.filters select{padding:.5rem .75rem;border:1px solid #ddd;border-radius:6px;background:#fff;font-size:.9rem;font-family:inherit;color:inherit}.filters input:focus,.filters select:focus{outline:none;border-color:#1a1a1a}.filter-search{flex:1;min-width:240px}.filters button{background:#fff;color:#1a1a1a;border:1px solid #ddd}.results-count{margin:0 0 .75rem;font-size:.85rem;color:#666}.tag{display:inline-block;padding:.1rem .5rem;border-radius:4px;font-size:.78rem;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;border:1px solid transparent;white-space:nowrap;line-height:1.4}.tag-green{color:#389e0d;background:#f6ffed;border-color:#b7eb8f}.tag-red{color:#cf1322;background:#fff1f0;border-color:#ffa39e}.branch-chip{display:inline-block;margin-left:.45rem;padding:.05rem .4rem;border-radius:3px;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.72rem;background:#f0f0f0;color:#333;vertical-align:middle}.tabs{display:flex;gap:.25rem;margin-right:auto;margin-left:1rem}.tabs button{background:transparent;color:#555;border:1px solid transparent;border-radius:6px;padding:.4rem .9rem;font-size:.95rem}.tabs button.tab-active{background:#1a1a1a;color:#fff}.pool-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(330px,1fr));gap:1rem;align-items:stretch}.pool-card{background:#fff;border:1px solid #e8e8e8;border-radius:8px;padding:1rem 1.1rem;box-shadow:0 1px 2px #0000000a;display:flex;flex-direction:column}.pool-card-header{display:flex;align-items:baseline;justify-content:space-between;gap:.5rem}.pool-card-title{display:flex;align-items:center;gap:.5rem;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.95rem}.pool-mode{font-family:system-ui,sans-serif;font-size:.7rem;padding:.1rem .45rem;border-radius:3px;text-transform:uppercase;letter-spacing:.04em;font-weight:600}.pool-mode-native{background:#fff7e6;color:#ad6800;border:1px solid #ffd591}.pool-mode-docker{background:#e6f4ff;color:#0050b3;border:1px solid #91caff}.pool-mode-unknown{background:#f5f5f5;color:#555;border:1px solid #d9d9d9}.pool-instance-count{font-size:.85rem;color:#666;white-space:nowrap}.pool-card-meta{margin:.75rem 0 .5rem}.pool-card-meta dl{margin:0;display:grid;grid-template-columns:7.5rem 1fr;row-gap:.4rem;font-size:.85rem}.pool-card-meta dt{color:#888;font-weight:500}.pool-card-meta dd{margin:0}.pool-toggle{background:transparent;color:#1a1a1a;border:0;padding:.4rem 0;font-size:.85rem;cursor:pointer;text-align:left;width:100%}.pool-instance-list{list-style:none;margin:.25rem 0 0;padding:0;border-top:1px dashed #e8e8e8;padding-top:.6rem}.pool-instance-list li{display:flex;align-items:center;gap:.5rem;padding:.35rem 0;font-size:.85rem;border-bottom:1px solid #f1f2f4}.pool-instance-list li:last-child{border-bottom:0}.pool-instance-list li>.inst-logs-btn{margin-left:auto}.muted{color:#999;font-size:.8rem}.pool-status{display:inline-block;padding:.05rem .4rem;border-radius:3px;font-size:.78rem;font-weight:500}.pool-status-active{background:#d4edda;color:#155724}.pool-status-empty{background:#fff3cd;color:#856404}.pool-status-stopped{background:#f8d7da;color:#721c24}.pool-empty{margin:.5rem 0 0;padding:.5rem 0;font-size:.85rem;color:#888;font-style:italic;border-top:1px dashed #e8e8e8}button.primary{background:#06c;color:#fff;border:1px solid #0066cc;border-radius:4px;padding:.4rem .9rem;font-weight:500;cursor:pointer}button.primary:hover{background:#0052a3;border-color:#0052a3}button.primary:disabled{opacity:.6;cursor:not-allowed}.flash{background:#e6f7e6;border-left:3px solid #1d8e3a;padding:.8rem 1rem;margin-bottom:1rem;border-radius:4px;color:#1d4a26}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#0006;display:flex;align-items:center;justify-content:center;z-index:1000}.modal{background:#fff;border-radius:8px;width:90%;max-width:520px;box-shadow:0 10px 40px #00000026;display:flex;flex-direction:column}.modal-header{display:flex;align-items:center;padding:1rem 1.25rem;border-bottom:1px solid #eee}.modal-header h2{flex:1;margin:0;font-size:1.15rem}.modal-close{background:transparent;border:0;font-size:1.1rem;cursor:pointer;color:#666}.form{padding:1rem 1.25rem 1.25rem;display:flex;flex-direction:column;gap:1rem}.form label{display:flex;flex-direction:column;gap:.3rem;font-size:.9rem}.form label span{font-weight:500}.form input,.form select{padding:.5rem .7rem;border:1px solid #ccc;border-radius:4px;font-size:.95rem;font-family:inherit}.form input:focus,.form select:focus{outline:2px solid #0066cc33;border-color:#06c}.form small{color:#666;font-size:.78rem}.form-error{background:#fdecea;border-left:3px solid #c0392b;color:#6e1e15;padding:.6rem .8rem;border-radius:4px;font-size:.88rem}.form-actions{display:flex;gap:.6rem;justify-content:flex-end}.form-actions button:not(.primary){background:#fff;border:1px solid #ccc;border-radius:4px;padding:.4rem .9rem;cursor:pointer}.form-help{font-size:.8rem;color:#666;margin:0}button.btn-secondary{background:#fff;color:#1a1a1a;border:1px solid #c4c4c4;border-radius:4px;padding:.4rem .9rem;cursor:pointer;font-weight:500}button.btn-secondary:hover{background:#f5f5f5;border-color:#999}button.btn-secondary:disabled{opacity:.5;cursor:not-allowed}.progress-body{padding:1rem 1.25rem 1.25rem;display:flex;flex-direction:column;gap:1rem}.steps{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:.4rem}.step{display:flex;align-items:center;gap:.6rem;padding:.35rem .5rem;border-radius:4px;font-size:.92rem}.step-marker{display:inline-flex;align-items:center;justify-content:center;width:1.4rem;height:1.4rem;border-radius:50%;font-size:.85rem;font-weight:700;flex-shrink:0}.step-pending{color:#999}.step-pending .step-marker{background:#ececec;color:#888}.step-active{color:#06c;background:#f0f7ff}.step-active .step-marker{background:#06c;color:#fff;animation:pulse 1.2s ease-in-out infinite}.step-done{color:#1d4a26}.step-done .step-marker{background:#1d8e3a;color:#fff}.step-fail{color:#6e1e15;background:#fdecea}.step-fail .step-marker{background:#c0392b;color:#fff}@keyframes pulse{0%,to{transform:scale(1);opacity:1}50%{transform:scale(1.15);opacity:.75}}.form-info{background:#f5f8fc;border:1px solid #d8e3ef;border-radius:4px;padding:.55rem .8rem;font-size:.88rem;display:flex;flex-wrap:wrap;gap:.4rem;align-items:baseline}.form-info-label{font-weight:500;color:#444;margin-right:.3rem}.form-info-note{color:#777;font-size:.82rem}input.input-invalid{border-color:#c0392b!important;background:#fef6f5}input.input-invalid:focus{outline:2px solid #c0392b33;border-color:#c0392b}small.input-error{color:#c0392b!important;font-weight:500}.step{display:block!important}.step-row{display:flex;align-items:center;gap:.6rem}.step-detail{margin:.2rem 0 0 2rem;font-size:.78rem;color:#555;font-family:ui-monospace,SF Mono,monospace;letter-spacing:-.01em}.step-active .step-detail{color:#06c}.step-fail .step-detail{color:#6e1e15}.success-summary{background:#e6f7e6;border-left:3px solid #1d8e3a;padding:.8rem 1rem;border-radius:4px;color:#1d4a26}.success-summary>strong{display:block;margin-bottom:.5rem}.summary-grid{display:grid;grid-template-columns:max-content 1fr;gap:.25rem .8rem;margin:0;font-size:.88rem}.summary-grid dt{color:#1d4a26;font-weight:500}.summary-grid dd{margin:0;word-break:break-all}.summary-grid code{background:#fff9;padding:1px 5px;border-radius:3px}.summary-grid a{color:#06c}.filter-checkbox{display:inline-flex;align-items:center;gap:.35rem;font-size:.85rem;color:#666;-webkit-user-select:none;user-select:none;cursor:pointer;padding:.2rem .4rem;border-radius:3px}.filter-checkbox:hover{background:#f0f0f0}.filter-checkbox input{cursor:pointer}.pool-update{margin-top:auto;padding-top:.6rem}.pool-update-actions{display:flex;justify-content:flex-end}.pool-update-btn{background:#fff;border:1px solid #0066cc;color:#06c;border-radius:4px;padding:.35rem .7rem;font-size:.85rem;font-weight:500;cursor:pointer}.pool-update-btn:hover:not(:disabled){background:#f0f7ff}.pool-update-btn:disabled{opacity:.55;cursor:progress}.update-steps{list-style:none;margin:.5rem 0 0;padding:0;display:flex;flex-direction:column;gap:.2rem;font-size:.82rem}.ustep{display:flex;align-items:center;gap:.45rem}.ustep-marker{display:inline-flex;align-items:center;justify-content:center;width:1.1rem;height:1.1rem;border-radius:50%;font-size:.7rem;font-weight:700;flex-shrink:0}.ustep-pending{color:#999}.ustep-pending .ustep-marker{background:#ececec;color:#888}.ustep-active{color:#06c}.ustep-active .ustep-marker{background:#06c;color:#fff;animation:pulse 1.2s ease-in-out infinite}.ustep-done{color:#1d4a26}.ustep-done .ustep-marker{background:#1d8e3a;color:#fff}.ustep-fail{color:#6e1e15}.ustep-fail .ustep-marker{background:#c0392b;color:#fff}.update-done{margin-top:.4rem;font-size:.82rem;color:#1d4a26;font-family:ui-monospace,monospace}.update-error{margin-top:.4rem;font-size:.8rem;color:#6e1e15}.inst-actions{display:inline-flex;align-items:center;gap:.4rem;white-space:nowrap;vertical-align:middle}.inst-logs-btn,.inst-open-btn{display:inline-flex;align-items:center;gap:.3rem;padding:4px 10px;font-size:.82rem;font-weight:500;font-family:inherit;border:1px solid #d4d9e0;background:#fff;color:#2f3a4a;border-radius:5px;cursor:pointer;line-height:1.2;text-decoration:none;transition:background .1s,border-color .1s,box-shadow .1s}.inst-logs-btn:before{content:"▶";font-size:.7em;color:#1958c0}.inst-open-btn:after{content:"↗";font-size:.85em;color:#1958c0}.inst-logs-btn:hover,.inst-open-btn:hover{background:#f4f8ff;border-color:#1958c0}.inst-logs-btn:active,.inst-open-btn:active{background:#e6efff;box-shadow:inset 0 1px 2px #0000000f}.log-modal{background:#1e1e1e;color:#d0d0d0;border-radius:8px;width:92%;max-width:1100px;height:80vh;display:flex;flex-direction:column;font-family:ui-monospace,SF Mono,Menlo,monospace;font-size:12px}.log-modal-header{display:flex;justify-content:space-between;align-items:center;padding:10px 14px;border-bottom:1px solid #333;background:#2a2a2a;border-radius:8px 8px 0 0;color:#f0f0f0}.log-modal-actions{display:flex;align-items:center;gap:.8rem}.log-modal-actions button{background:#444;color:#ddd;border:1px solid #555;padding:4px 10px;border-radius:4px;cursor:pointer}.log-modal-actions button:hover{background:#555}.log-autoscroll{display:flex;align-items:center;gap:4px;color:#bbb}.log-status{font-weight:400;font-size:.8rem;margin-left:6px}.log-status-open{color:#80e080}.log-status-connecting,.log-status-reconnecting{color:#f0d060}.log-status-closed{color:#aaa}.log-status-error{color:#f08080}.log-error{padding:6px 14px;background:#5e1e15;color:#f4c4bc;border-bottom:1px solid #c0392b}.log-list{flex:1;overflow-y:auto;padding:8px 12px;white-space:pre-wrap;word-break:break-word}.log-line{border-bottom:1px solid #2a2a2a;padding:1px 0;line-height:1.4}.log-empty{color:#777;padding:10px}.log-path{background:#f5f5f5;padding:1px 6px;border-radius:3px;font-size:.85em;color:#444}.server-grid{display:grid;gap:1rem;margin-top:1rem}.server-card{background:#fff;border:1px solid #e1e4e8;border-radius:8px;overflow:hidden}.server-card-header{display:flex;justify-content:space-between;align-items:center;padding:.7rem 1rem;cursor:pointer;-webkit-user-select:none;user-select:none;background:#fafbfc}.server-card-header:hover{background:#f4f6f8}.server-card-status{display:flex;align-items:center;gap:.6rem}.server-toggle{color:#888;font-size:.9rem}.server-card-body{padding:.8rem 1rem 1.2rem;border-top:1px solid #eef1f4}.server-live-tag{font-size:.75rem;padding:2px 8px;border-radius:10px;font-weight:500}.server-live-live{background:#e7f4ea;color:#1d8e3a}.server-live-connecting,.server-live-reconnecting{background:#fff4d0;color:#806000}.server-live-error{background:#fde0db;color:#6e1e15}.server-live-idle{background:#eee;color:#888}.server-meta{display:grid;grid-template-columns:70px 1fr;gap:.25rem 1rem;margin:0 0 1rem;font-size:.88rem}.server-meta dt{color:#666;font-weight:500}.server-meta dd{margin:0}.server-gauge{display:inline-block;min-width:50px;padding:1px 8px;background:#e7f4ea;color:#1d4a26;border-radius:3px;font-family:ui-monospace,monospace;font-size:.85rem}.server-gauge.hot{background:#fde0db;color:#6e1e15}.server-chart-title{margin:1rem 0 .4rem;font-size:.85rem;color:#444;font-weight:500}.server-chart{height:220px;width:100%}.mini-chart-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:.6rem;margin:.8rem 0}.mini-chart-panel{padding:.5rem .4rem .3rem;background:#fafbfc;border:1px solid #eef0f4;border-radius:6px}.mini-chart-panel .chart-panel-header{padding:0 .3rem .3rem}.mini-chart-panel .chart-panel-title{font-size:.8rem;color:#555;font-weight:500}.mini-chart{height:140px}@media (max-width: 800px){.mini-chart-grid{grid-template-columns:1fr}}.chart-tooltip-empty{color:#888;font-style:italic;font-size:11px}.chart-dot{display:inline-block;width:8px;height:8px;border-radius:50%;margin-right:4px;vertical-align:middle}button.server-card-header{width:100%;background:#f7f8fa;color:#1a1a1a;border:0;border-radius:0;padding:.9rem 1.1rem;font-size:inherit;font-family:inherit;text-align:left;cursor:pointer;display:flex;justify-content:space-between;align-items:center;gap:.6rem}button.server-card-header:hover{background:#eef1f5}.server-card{box-shadow:0 1px 3px #0000000a}.server-card.is-open{box-shadow:0 4px 14px #0000000f}.server-card-title{display:flex;align-items:center;gap:.75rem}.server-card-icon{font-size:1.3rem;color:#4f46e5;background:#eef2ff;width:34px;height:34px;border-radius:8px;display:inline-flex;align-items:center;justify-content:center}.server-card-title strong{display:block;font-family:ui-monospace,SF Mono,Menlo,monospace;font-size:.95rem}.server-card-sub{display:block;font-size:.75rem;color:#777;margin-top:1px}.server-card-meta-right{display:flex;align-items:center;gap:.6rem}.server-card-chevron{color:#999;font-size:.9rem}.pill{font-size:.72rem;font-weight:500;padding:3px 9px;border-radius:12px;letter-spacing:.02em}.pill-ok{background:#e6f6ec;color:#1d8e3a}.pill-warm{background:#fff4d0;color:#806000}.pill-err{background:#fde0db;color:#6e1e15}.pill-idle{background:#eee;color:#888}.server-card-body{padding:1rem 1.1rem 1.2rem;border-top:1px solid #eef1f4;background:#fff}.server-error{background:#fdecea;border-left:3px solid #c0392b;color:#6e1e15;padding:.6rem .8rem;border-radius:4px;margin-bottom:.8rem;font-size:.85rem}.server-skeleton{background:#fafbfc;border:1px dashed #e0e3e7;border-radius:6px;color:#888;font-size:.85rem;padding:.8rem 1rem;text-align:center}.stat-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:.7rem;margin-bottom:1rem}.stat-card{background:#fff;border:1px solid #eef0f4;border-radius:8px;padding:.75rem .9rem;display:flex;flex-direction:column;gap:.3rem}.stat-card-hot{border-color:#f5c2c2;background:#fef6f6}.stat-label{font-size:.72rem;color:#666;text-transform:uppercase;letter-spacing:.06em;font-weight:600}.stat-value{font-size:1.6rem;font-weight:600;font-family:ui-monospace,Menlo,monospace;line-height:1}.stat-bar{background:#f1f2f4;border-radius:999px;height:5px;overflow:hidden}.stat-bar-fill{height:100%;border-radius:999px;transition:width .4s}.stat-sub{font-size:.72rem;color:#888}@media (max-width: 700px){.stat-grid{grid-template-columns:1fr}}.chart-panel{background:#fff;border:1px solid #eef0f4;border-radius:8px;padding:.7rem .9rem;margin-bottom:.8rem}.chart-panel-header{display:flex;align-items:baseline;justify-content:space-between;gap:.5rem;margin-bottom:.3rem}.chart-panel-title{font-size:.85rem;font-weight:600;color:#333}.chart-panel-sub{font-size:.75rem;color:#888}.chart-tooltip{background:#14161bf2;color:#f0f1f3;border-radius:6px;padding:6px 9px;font-size:11px;line-height:1.5;box-shadow:0 4px 12px #0003}.chart-tooltip-label{font-weight:600;color:#fff;margin-bottom:3px;font-family:ui-monospace,monospace}.chart-tooltip-row{display:flex;align-items:center;gap:6px}.chart-tooltip-name{flex:1;opacity:.85}.chart-tooltip-value{font-family:ui-monospace,monospace;font-weight:600}.chart-legend{display:flex;gap:.6rem;font-size:.72rem;color:#555}.chart-legend-wrap{flex-wrap:wrap;margin-top:.4rem;padding:0 .2rem}.chart-legend-item{display:inline-flex;align-items:center;gap:4px;white-space:nowrap}.chart-legend-item i{width:9px;height:9px;border-radius:2px;display:inline-block}.backup-grid{display:flex;flex-direction:column;gap:.8rem;margin-top:1rem}.backup-day{background:#fff;border:1px solid #e1e4e8;border-radius:8px;overflow:hidden}button.backup-day-header{width:100%;display:flex;align-items:center;gap:1rem;padding:.9rem 1.1rem;background:#f7f8fa;color:#1a1a1a;border:0;cursor:pointer;font-family:inherit;font-size:.95rem;text-align:left}button.backup-day-header:hover{background:#eef1f5}.backup-day-date{font-family:ui-monospace,Menlo,monospace;font-weight:600}.backup-day-count{color:#777;font-size:.85rem;flex:1}.backup-chevron{color:#999;font-size:.9rem}.backup-day-body{padding:.4rem .6rem .6rem}.backup-snapshot{margin:.3rem 0;background:#fff;border:1px solid #eef0f4;border-radius:6px}button.backup-snapshot-header{width:100%;display:grid;grid-template-columns:90px 160px 1fr 28px;align-items:center;gap:.8rem;padding:.55rem .9rem;background:#fafbfc;color:#1a1a1a;border:0;cursor:pointer;font-family:inherit;font-size:.85rem;text-align:left}button.backup-snapshot-header:hover{background:#f4f6f8}.backup-time{font-family:ui-monospace,Menlo,monospace;color:#4f46e5;font-weight:500}.backup-host{font-family:ui-monospace,Menlo,monospace}.backup-summary{color:#666;font-size:.82rem}.backup-db-table{width:100%;border-collapse:collapse;background:#fff;border-top:1px solid #eef0f4}.backup-db-table th{text-align:left;padding:.4rem .8rem;font-size:.75rem;color:#777;text-transform:uppercase;letter-spacing:.04em;font-weight:500;border-bottom:1px solid #eef0f4;background:#fff}.backup-db-table td{padding:.4rem .8rem;font-size:.85rem;border-bottom:1px solid #f1f2f4}.backup-db-table tr:last-child td{border-bottom:0}.backup-tables-row td{background:#fafbfc;padding:.6rem .8rem}.backup-tables-grid{display:flex;flex-direction:column;gap:.4rem}.backup-tables-filter{padding:.35rem .6rem;border:1px solid #ddd;border-radius:4px;font-size:.82rem;max-width:320px;font-family:inherit}.backup-tables-list{max-height:360px;overflow-y:auto}.backup-tables-list table{width:100%;border-collapse:collapse}.backup-tables-list th,.backup-tables-list td{text-align:left;padding:2px 8px;font-size:.78rem;border-bottom:1px solid #f1f2f4}.backup-tables-list th{background:#fafbfc;font-weight:500;color:#666}.text-error{color:#c0392b;font-weight:700}
