:root{color:#21314f;background:radial-gradient(circle at top left,#ffe9f3 0,transparent 28%),radial-gradient(circle at top right,#dff2ff 0,transparent 30%),linear-gradient(180deg,#fdfcff,#f3fbff);font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;line-height:1.5;font-weight:400;font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;--surface: rgba(255, 255, 255, .82);--surface-strong: rgba(255, 255, 255, .94);--border: rgba(76, 109, 161, .24);--border-strong: rgba(76, 109, 161, .4);--text-subtle: #5f7398;--shadow: 0 18px 40px rgba(105, 145, 191, .16);--online: #7dd3a7;--degraded: #ffd37f;--offline: #f6a6ad;--unknown: #b7c6df}*{box-sizing:border-box}body{margin:0;min-width:320px;min-height:100dvh}a{color:inherit}button,a{-webkit-tap-highlight-color:transparent}:focus-visible{outline:2px solid #7ab4ff;outline-offset:2px}#root{min-height:100dvh}.watchboard,.admin-page{min-height:100dvh;padding:24px}.watchboard{display:block}.topbar{display:flex;justify-content:space-between;align-items:flex-start;gap:16px;margin:0 auto 20px;max-width:1200px}.topbar__title-group h1,.node-section__header h2,.status-card__header h3,.assistant-copy p{margin:0}.topbar__eyebrow,.node-section__header p,.topbar__timestamp,.assistant-copy__label{margin:0;color:var(--text-subtle);font-size:.875rem}.topbar__eyebrow,.assistant-copy__label{text-transform:uppercase;letter-spacing:0}.topbar__title-group h1{font-size:clamp(1.75rem,4vw,2.4rem);line-height:1.1}.topbar__timestamp{flex-shrink:0;padding-top:6px;text-align:right}.watchboard__alert{max-width:1200px;margin:0 auto 16px;padding:10px 12px;border:1px solid rgba(230,125,141,.4);border-radius:8px;background:#ffeef1eb;color:#7a3344}.watchboard-layout{display:grid;grid-template-columns:minmax(0,1fr) minmax(220px,280px);gap:16px;align-items:start;max-width:1200px;margin:0 auto}.node-stack{display:grid;gap:16px}.assistant-panel{border:1px solid var(--border);border-radius:8px;background:var(--surface);-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);box-shadow:var(--shadow)}.node-section{padding:4px 0 8px}.node-section__header{display:flex;justify-content:space-between;gap:12px;align-items:flex-start;margin-bottom:14px}.node-section__header h2{font-size:1.2rem}.service-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:12px}.status-card{display:grid;gap:12px;min-height:184px;padding:14px;border:1px solid var(--border);border-radius:8px;background:var(--surface-strong)}.status-card--online{border-color:#7dd3a780}.status-card--degraded{border-color:#ffd37f99}.status-card--offline{border-color:#f6a6ad99}.status-card__header{display:flex;align-items:center;gap:10px;min-width:0}.status-card__header h3{font-size:1rem;line-height:1.3}.status-dot{width:10px;height:10px;border-radius:999px;flex-shrink:0;background:var(--unknown);box-shadow:0 0 0 3px #b7c6df33}.status-dot--online{background:var(--online);box-shadow:0 0 0 3px #7dd3a738}.status-dot--degraded{background:var(--degraded);box-shadow:0 0 0 3px #ffd37f3d}.status-dot--offline{background:var(--offline);box-shadow:0 0 0 3px #f6a6ad3d}.status-card__state{margin:0;color:var(--text-subtle);text-transform:capitalize}.status-card__checks{display:flex;flex-wrap:wrap;gap:8px;align-content:start}.status-chip{display:inline-flex;align-items:center;min-height:28px;padding:4px 10px;border:1px solid var(--border);border-radius:999px;background:#edf7ffeb;color:var(--text-subtle);font-size:.875rem}.status-chip--pass{border-color:#7dd3a78c;background:#e8fff3eb;color:#2f7654}.status-chip--fail{border-color:#f6a6ad8c;background:#ffeff1eb;color:#9a4653}.discovered-ports{margin-top:12px;padding-top:10px;border-top:1px solid var(--border)}.discovered-ports p{margin:0 0 8px;color:var(--text-subtle);font-size:.875rem}.discovered-ports ul{display:flex;flex-wrap:wrap;gap:8px;padding:0;margin:0;list-style:none}.discovered-ports li{display:inline-flex;align-items:center;gap:8px;min-height:30px;padding:4px 10px;border:1px solid rgba(76,109,161,.22);border-radius:8px;background:#ffffffc2;color:#33496f;font-size:.875rem}.status-card__link{display:inline-flex;align-items:center;gap:8px;min-height:36px;margin-top:auto;color:#255ea8;font-weight:600;text-decoration:none}.assistant-panel{display:grid;gap:12px;padding:14px;position:sticky;top:24px}.assistant-avatar{position:relative;width:88px;height:88px}.assistant-avatar--live2d{width:112px;height:128px}.assistant-avatar__image{display:block;width:100%;height:100%;border-radius:8px;filter:drop-shadow(0 12px 22px rgba(105,145,191,.18));transform-origin:50% 78%;animation:assistant-breathe 3.2s ease-in-out infinite;-webkit-user-select:none;user-select:none}.assistant-live2d,.assistant-live2d__stage,.assistant-live2d__fallback{position:absolute;inset:0}.assistant-live2d{overflow:hidden;border-radius:8px}.assistant-live2d__stage canvas{display:block;width:100%!important;height:100%!important}.assistant-live2d__fallback{display:grid;place-items:center}.assistant-live2d--ready .assistant-live2d__fallback{display:none}.assistant-copy{display:grid;gap:6px}.admin-page{max-width:1200px;margin:0 auto}.admin-page__header,.admin-page__statusline,.admin-panel__heading,.admin-field,.admin-action-button,.admin-panel__footnote{display:grid}.admin-page__header{grid-template-columns:minmax(0,1fr) auto;gap:16px;align-items:start;margin-bottom:20px}.admin-page__header h1,.admin-panel__heading h2,.admin-result pre{margin:0}.admin-page__eyebrow,.admin-page__summary,.admin-page__statusline,.admin-panel__heading p,.admin-field span,.admin-action-button small,.admin-panel__note,.admin-panel__footnote,.admin-result p{margin:0;color:var(--text-subtle)}.admin-page__eyebrow{text-transform:uppercase;font-size:.875rem}.admin-page__header h1{font-size:clamp(1.75rem,4vw,2.4rem);line-height:1.1;margin:0 0 8px}.admin-page__summary{max-width:56ch}.admin-page__statusline{min-width:220px;gap:8px;padding:14px;border:1px solid var(--border);border-radius:8px;background:#ffffffb8}.admin-login,.admin-panel{border:1px solid var(--border);border-radius:8px;background:var(--surface);-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);box-shadow:var(--shadow)}.admin-login{max-width:480px;padding:16px}.admin-login__form,.admin-grid,.admin-action-grid{display:grid;gap:12px}.admin-login__form{margin-top:16px}.admin-field{gap:6px}.admin-field input{min-height:42px;padding:10px 12px;border:1px solid var(--border);border-radius:8px;background:#fffffff0;color:inherit;font:inherit}.admin-grid{grid-template-columns:minmax(0,1.1fr) minmax(320px,.9fr);align-items:start}.admin-panel{gap:16px;padding:16px}.admin-panel__heading{gap:4px}.admin-action-grid{grid-template-columns:repeat(auto-fit,minmax(160px,1fr))}.admin-button,.admin-action-button{border:1px solid var(--border);border-radius:8px;background:#ffffffe0;color:inherit;font:inherit}.admin-button{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:42px;padding:0 14px;font-weight:600}.admin-button--primary{border-color:#7ab4ff73;background:#e3f1fff5}.admin-button:disabled,.admin-action-button:disabled{cursor:wait;opacity:.72}.admin-button__icon,.admin-action-button__icon,.admin-panel__footnote-icon{width:16px;height:16px}.admin-action-button{gap:8px;min-height:112px;padding:14px;text-align:left;align-content:start}.admin-action-button span{font-weight:600}.admin-result{min-height:240px;padding:14px;border:1px solid var(--border);border-radius:8px;background:#f8fbffeb}.admin-result pre{white-space:pre-wrap;word-break:break-word;font:.9rem/1.5 SFMono-Regular,Consolas,Liberation Mono,Menlo,monospace}.admin-panel__note,.admin-panel__footnote{font-size:.925rem}.admin-panel__footnote{grid-template-columns:auto minmax(0,1fr);gap:8px;align-items:center}.admin-button__icon--spin,.admin-action-button__icon--spin{animation:admin-spin 1s linear infinite}@keyframes admin-spin{to{transform:rotate(360deg)}}@keyframes assistant-breathe{0%,to{transform:translateY(0) scale(1)}50%{transform:translateY(-3px) scale(1.025)}}@media(prefers-reduced-motion:reduce){.assistant-avatar__image{animation:none}}@media(max-width:900px){.watchboard-layout,.admin-page__header,.admin-grid{grid-template-columns:1fr}.assistant-panel{position:static;grid-template-columns:auto 1fr;align-items:center}}@media(max-width:640px){.watchboard,.admin-page{padding:16px}.topbar,.node-section__header,.admin-page__header{flex-direction:column}.topbar__timestamp{padding-top:0;text-align:left}.service-grid,.assistant-panel,.admin-action-grid{grid-template-columns:1fr}}
