.app{display:flex;flex-direction:column;min-height:100vh}.app-header{display:flex;align-items:center;gap:16px;background:var(--panel);border-bottom:1px solid var(--border);padding:10px 20px}.app-header h1{font-size:16px;font-weight:600;margin:0}.app-header .tabs{display:flex;gap:4px;margin-left:20px;flex:1}.app-header .tabs button{background:transparent;border:1px solid transparent;padding:6px 16px;border-radius:6px}.app-header .tabs button.active{background:#eaeef2;font-weight:500}.app-header .user{display:flex;align-items:center;gap:8px}.app-body{flex:1;padding:16px 20px;display:flex;flex-direction:column;gap:16px}.row{display:flex;gap:16px}.row>*{flex:1}.section-title{font-size:13px;font-weight:600;color:var(--text-muted);text-transform:uppercase;margin:0 0 8px}.host-grid{display:grid;grid-template-columns:200px 1fr 200px 120px;gap:12px;align-items:center;padding:12px 0;border-bottom:1px solid var(--border)}.host-grid:last-child{border-bottom:none}.host-grid .name{font-weight:600}.host-grid .progress{font-size:13px}.host-grid .actions{text-align:right}.progress-bar{width:100%;height:8px;background:#eaeef2;border-radius:4px;overflow:hidden}.progress-bar>div{height:100%;background:var(--primary);transition:width .3s}.event-row{display:grid;grid-template-columns:90px 160px 1fr;gap:16px;padding:6px 10px;border-bottom:1px solid #f0f3f7;font-size:12px;font-family:ui-monospace,SF Mono,Menlo,monospace;align-items:center}.event-row>.tag{justify-self:start;white-space:nowrap}.event-row.success{background:#dafbe130}.event-row.danger{background:#ffebe930}.event-row.muted{opacity:.55}.event-row .ts{color:var(--text-muted)}.summary-grid{display:grid;grid-template-columns:repeat(6,1fr);gap:12px}.summary-cell{display:flex;flex-direction:column;align-items:flex-start}.summary-cell .label{font-size:12px;color:var(--text-muted)}.summary-cell .value{font-size:22px;font-weight:600}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#0006;display:flex;align-items:center;justify-content:center;z-index:100}.modal{background:var(--panel);border-radius:8px;padding:24px;width:480px;max-width:90vw;max-height:90vh;overflow:auto}.modal h2{margin:0 0 16px;font-size:18px}.modal .actions{margin-top:20px;display:flex;justify-content:flex-end;gap:8px}.drawer-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#0000004d;z-index:100}.drawer{position:fixed;top:0;right:0;bottom:0;width:520px;max-width:100vw;background:var(--panel);border-left:1px solid var(--border);z-index:101;display:flex;flex-direction:column;overflow:hidden}.drawer header{padding:16px 20px;border-bottom:1px solid var(--border);display:flex;align-items:center;justify-content:space-between}.drawer header h2{margin:0;font-size:16px}.drawer .tab-bar{display:flex;border-bottom:1px solid var(--border);background:#f5f7fa}.drawer .tab-bar button{flex:1;border:none;border-bottom:2px solid transparent;background:transparent;border-radius:0;padding:10px}.drawer .tab-bar button.active{border-bottom-color:var(--primary);font-weight:500;background:var(--panel)}.drawer .content{flex:1;padding:20px;overflow:auto}.drawer .field{margin-bottom:14px}.drawer .field label{display:block;font-size:13px;margin-bottom:4px;color:var(--text-muted)}.drawer .field input,.drawer .field select{width:100%}.drawer .footer{padding:14px 20px;border-top:1px solid var(--border);display:flex;justify-content:flex-end;gap:8px}:root{--bg: #f5f7fa;--panel: #ffffff;--border: #e1e4e8;--text: #1f2328;--text-muted: #656d76;--primary: #0969da;--primary-hover: #0860c7;--success: #1a7f37;--warn: #9a6700;--danger: #cf222e;--shadow: 0 1px 3px rgba(0, 0, 0, .06)}*{box-sizing:border-box}html,body,#root{margin:0;padding:0;height:100%;background:var(--bg);color:var(--text);font-family:-apple-system,BlinkMacSystemFont,Segoe UI,PingFang SC,Hiragino Sans GB,Microsoft YaHei,sans-serif;font-size:14px;line-height:1.5}a{color:var(--primary);text-decoration:none}a:hover{text-decoration:underline}button{cursor:pointer;font:inherit;color:inherit;background:var(--panel);border:1px solid var(--border);border-radius:6px;padding:6px 12px;transition:background .1s}button:hover{background:#f0f3f7}button:disabled{opacity:.5;cursor:not-allowed}button.primary{background:var(--primary);border-color:var(--primary);color:#fff}button.primary:hover{background:var(--primary-hover)}button.danger{background:var(--danger);border-color:var(--danger);color:#fff}button.danger:hover{background:#a40e1e}input,select,textarea{font:inherit;color:inherit;background:var(--panel);border:1px solid var(--border);border-radius:6px;padding:6px 10px}input:focus,select:focus,textarea:focus{outline:2px solid var(--primary);outline-offset:-1px}.panel{background:var(--panel);border:1px solid var(--border);border-radius:8px;box-shadow:var(--shadow);padding:16px}.muted{color:var(--text-muted)}.mono{font-family:ui-monospace,SF Mono,Menlo,Consolas,monospace}.tag{display:inline-block;padding:2px 8px;border-radius:10px;font-size:12px;background:#eaeef2;color:var(--text-muted)}.tag.success{background:#dafbe1;color:var(--success)}.tag.warn{background:#fff8c5;color:var(--warn)}.tag.danger{background:#ffebe9;color:var(--danger)}.tag.primary{background:#ddf4ff;color:var(--primary)}.dot{display:inline-block;width:8px;height:8px;border-radius:50%;margin-right:6px;vertical-align:middle}.dot.green{background:var(--success)}.dot.red{background:var(--danger)}.dot.gray{background:#afb8c1}.dot.yellow{background:var(--warn)}table{border-collapse:collapse;width:100%}th,td{text-align:left;padding:8px 10px;border-bottom:1px solid var(--border);vertical-align:middle}th{background:#f5f7fa;font-weight:600;color:var(--text-muted);font-size:12px;text-transform:uppercase}
