:root{font-family:Inter,system-ui,-apple-system,Segoe UI,Roboto,sans-serif;color:#111827;background:#f3f4f6}*{box-sizing:border-box}body{margin:0}.layout{min-height:100vh;display:flex;flex-direction:column}.header{display:flex;justify-content:space-between;align-items:center;padding:12px 20px;border-bottom:1px solid #d1d5db;background:#fff}.header-brand{display:inline-flex;align-items:center;gap:10px}.header-brand img{width:50px;height:50px;border-radius:8px;object-fit:cover}.header nav{display:flex;gap:16px}.header a{color:#2563eb;text-decoration:none}main{padding:24px;flex:1}.card{background:#fff;border:1px solid #e5e7eb;border-radius:8px;padding:20px}.servers-layout{display:grid;gap:20px}.server-form{display:grid;gap:10px}.server-form label{display:grid;gap:6px;font-size:14px}.server-form input,.server-form select,.server-form textarea{width:100%;padding:8px;border:1px solid #d1d5db;border-radius:6px;font-size:14px}.checkbox-label{display:flex!important;align-items:center;gap:8px}.checkbox-label input{width:auto}.actions,.row-actions{display:flex;gap:8px}.servers-table .row-actions{align-items:center;min-height:100%;flex-wrap:wrap}button,.button-link{border:0;border-radius:6px;padding:8px 12px;background:#2563eb;color:#fff;cursor:pointer;text-decoration:none;font-size:14px;transition:transform .08s ease,box-shadow .12s ease,filter .12s ease}button:active,.button-link:active{transform:scale(.97);box-shadow:inset 0 2px 4px #00000026;filter:brightness(.95)}button:disabled{cursor:not-allowed;opacity:.7}button:disabled:active{transform:none;box-shadow:none;filter:none}button.secondary{background:#6b7280}button.success{background:#15803d;color:#fff}button.danger{background:#b91c1c}.error{color:#b91c1c}.servers-table{width:100%;border-collapse:collapse;margin-top:12px}.servers-table th,.servers-table td{border-bottom:1px solid #e5e7eb;text-align:left;padding:8px;font-size:14px;vertical-align:top}.servers-table td.status-good{background:#ecfdf3}.servers-table td.status-bad{background:#fef2f2}.servers-table tr.status-row-good td{background:#ecfdf3}.servers-table tr.status-row-bad td{background:#fef2f2}.status-cell-good{background:#ecfdf3}.status-cell-bad{background:#fef2f2}.detail-header{display:flex;justify-content:space-between;align-items:center;gap:16px}.server-meta p{margin:6px 0}.server-meta h4{margin:0 0 10px}.server-meta-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px}.server-meta-subblock{border:1px solid #e5e7eb;border-radius:8px;padding:10px;background:#fff}.list-block{margin-top:16px}.success{color:#166534}.json-editor-wrap{display:grid;grid-template-columns:1fr 1fr;gap:12px;width:100%}.json-editor-stack{position:relative;min-height:360px;height:360px;width:100%}.json-editor,.json-highlight{min-height:360px;height:360px;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;font-size:13px;line-height:1.5;border-radius:6px;box-sizing:border-box}.json-editor{position:absolute;top:0;right:0;bottom:0;left:0;z-index:2;border:1px solid #d1d5db;padding:10px;margin:0;width:100%;height:100%;resize:none;background:transparent;color:transparent;caret-color:#111827;white-space:pre;overflow-wrap:normal;overflow:auto}.json-highlight-editor{position:absolute;top:0;right:0;bottom:0;left:0;z-index:1;pointer-events:none;width:100%;height:100%;border:1px solid #d1d5db;padding:10px;margin:0;white-space:pre;word-break:normal;overflow:auto}.json-editor-empty-warning{position:absolute;top:10px;left:12px;z-index:3;color:#b91c1c;font-weight:700;pointer-events:none}.json-highlight{margin:0;border:1px solid #e5e7eb;background:#f9fafb;padding:10px;overflow:auto;white-space:pre;word-break:normal}.json-highlight-right{white-space:pre-wrap;word-break:break-word;pointer-events:none;overflow:hidden}.json-key{color:#1d4ed8}.json-string{color:#047857}.json-number{color:#7c3aed}.json-boolean,.json-null{color:#b45309}.login-card{max-width:860px;margin:24px auto}.login-content{display:grid;grid-template-columns:300px 1fr;gap:16px;align-items:center}.login-logo-wrap{display:flex;justify-content:center;align-items:center}.login-logo{width:300px;height:300px;border-radius:10px;object-fit:cover}.login-form-wrap h2{margin-top:0}.header-auth{display:flex;align-items:center;gap:10px;font-size:14px}.compare-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px}@media (max-width: 860px){.login-content{grid-template-columns:1fr}.login-logo{width:220px;height:220px}}.json-readonly{min-height:960px;max-height:960px;overflow:auto}.confirm-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#11182759;display:grid;place-items:center;z-index:50}.confirm-dialog{background:#fff;border-radius:8px;border:1px solid #e5e7eb;padding:16px;min-width:260px}.agent-setup-dialog{width:min(920px,92vw);max-height:90vh;overflow:auto;padding:20px}.agent-setup-dialog h3{margin:0 0 14px}.agent-setup-controls{gap:12px}.agent-setup-controls .row-actions{display:flex;gap:8px;flex-wrap:wrap}.agent-setup-dialog-actions{justify-content:center;margin-top:10px}.apply-result-dialog{min-width:680px;max-width:900px}.apply-result-dialog pre{max-height:420px;overflow:auto;border:1px solid #e5e7eb;border-radius:8px;padding:10px;background:#f9fafb}.success-output{color:#166534}.error-output{color:#b91c1c}.group-row{align-items:center;justify-content:space-between;margin-bottom:8px}.archive-actions{justify-content:flex-end}.editor-top-actions{margin-bottom:14px;flex-wrap:wrap}.footer{margin-top:auto;padding:12px 20px;border-top:1px solid #e5e7eb;color:#4b5563;font-size:13px;background:#fff;text-align:center}.home-middle,.servers-middle{vertical-align:middle!important}.group-spoiler{margin-top:8px;border:1px solid #e5e7eb;border-radius:8px;padding:10px}.group-spoiler summary,.json-spoiler summary,.connections-spoiler summary{cursor:pointer;font-weight:600}.json-spoiler,.connections-spoiler{margin-top:10px;border:1px solid #e5e7eb;border-radius:8px;padding:10px}.json-editor-large .json-editor-stack,.json-editor-large .json-editor,.json-editor-large .json-highlight{min-height:880px;height:880px}.json-search-row{display:flex;align-items:center;gap:8px;margin:10px 0;flex-wrap:wrap}.json-search-input{min-width:320px;flex:1;max-width:520px}.json-search-status{font-size:13px;color:#4b5563}.json-search-hit{background:#fde68a;color:inherit;padding:0}.json-search-hit-active{background:#f59e0b}.config-upload-dialog{max-width:560px;width:100%}.config-upload-dropzone{border:2px dashed #cbd5e1;border-radius:8px;padding:18px;text-align:center;color:#334155;background:#f8fafc;margin-bottom:10px}.config-upload-dropzone.drag-over{border-color:#2563eb;background:#eff6ff}.config-upload-file-name{margin:0 0 8px;font-size:13px;color:#1f2937}.config-upload-actions{margin-top:10px}.hidden-file-input{display:none}.home-monitor-row{display:flex;gap:12px;align-items:center}.heartbeat-refresh-actions{margin:14px 0;align-items:center;flex-wrap:wrap}.status-updated-label{color:#6b7280;font-size:13px}.heartbeat-columns{display:grid;grid-template-columns:1fr 1fr;gap:12px;align-items:start}.heartbeat-column{border:1px solid #e5e7eb;border-radius:8px;padding:10px;background:#fff}.status-server-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px}.nginx-cards-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px}.nginx-card{border:1px solid #e5e7eb;border-radius:8px;padding:10px;background:#fff}.nginx-card p{margin:6px 0}.nginx-logs-stack{display:grid;gap:12px}.nginx-log-item p{margin:0 0 6px}.nginx-log-output{width:100%;min-height:360px;border:1px solid #d1d5db;border-radius:8px;padding:10px;font-size:13px;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;background:#f9fafb;color:#111827;resize:vertical}.nginx-file-output{min-height:540px;margin-top:8px}.nginx-logs-table th:first-child,.nginx-logs-table td:first-child{width:1%;white-space:nowrap}.nginx-logs-table th:last-child,.nginx-logs-table td:last-child{width:auto}.nginx-logs-table .row-actions{flex-direction:row;flex-wrap:nowrap;align-items:flex-start;gap:6px}.nginx-logs-table .row-actions button{white-space:nowrap}.nginx-log-warning{color:#b91c1c;border-color:#fca5a5;background:#fef2f2}.missing-data-badge{display:inline-block;padding:4px 8px;border-radius:6px;background:#fee2e2;color:#991b1b;font-weight:600}.config-summary-tables{display:grid;gap:14px}.config-summary-section h5{margin:0 0 8px;text-align:left}.config-summary-table th,.config-summary-table td{text-align:center;vertical-align:middle}.config-summary-table th,.monitoring-header-table th{background:#dbeafe}.json-highlight-right{white-space:pre}.diff-line{min-height:19.5px}.diff-line-changed{background:#fce7f3}.monitoring-parent-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px;align-items:start}.monitoring-subblock{border:1px solid #e5e7eb;border-radius:8px;padding:10px;background:#fff}.servers-editor-layout{grid-template-columns:1fr 1.2fr;align-items:start}@media (max-width: 1100px){.servers-editor-layout,.status-server-grid{grid-template-columns:1fr}}.compare-result{font-weight:700}.compare-result-good{color:#166534}.compare-result-bad{color:#b91c1c}.apply-report{border:1px solid #e5e7eb;border-radius:8px;padding:12px;background:#fff}.apply-report h4{margin:0 0 10px}.report-log-medium{min-height:180px}.report-log-small{min-height:90px}
