* { box-sizing: border-box; } body { font-family: system-ui, -apple-system, sans-serif; max-width: 640px; margin: 0 auto; padding: 1rem; background: #1a1b26; color: #c0caf5; min-height: 100vh; } h1 { font-size: 1.25rem; margin: 0 0 0.5rem; color: #7aa2f7; } h2 { font-size: 0.95rem; margin: 1rem 0 0.5rem; color: #bb9af7; font-weight: 600; } p { margin: 0 0 0.5rem; font-size: 0.9rem; color: #a9b1d6; } .row { display: flex; gap: 0.5rem; margin-bottom: 0.5rem; align-items: center; flex-wrap: wrap; } input[type="text"] { flex: 1; min-width: 120px; padding: 0.5rem 0.75rem; border: 1px solid #3b4261; border-radius: 6px; background: #24283b; color: #c0caf5; font-size: 0.9rem; } input::placeholder { color: #565f89; } button { padding: 0.5rem 0.75rem; border: none; border-radius: 6px; font-size: 0.85rem; cursor: pointer; font-weight: 500; } button.primary { background: #7aa2f7; color: #1a1b26; } button.primary:hover { background: #89b4fa; } button.primary:disabled { opacity: 0.5; cursor: not-allowed; } button.secondary { background: #3b4261; color: #c0caf5; } button.secondary:hover { background: #414868; } button.danger { background: #f7768e; color: #1a1b26; } button.danger:hover { background: #ff9db5; } .status { font-size: 0.85rem; margin-bottom: 0.5rem; } .status.ok { color: #9ece6a; } .status.error { color: #f7768e; } .status.warn { color: #e0af68; } .log { background: #24283b; border: 1px solid #3b4261; border-radius: 6px; padding: 0.6rem; height: 200px; overflow-y: auto; font-family: ui-monospace, monospace; font-size: 0.75rem; line-height: 1.35; margin-top: 0.5rem; } .log .peer { color: #bb9af7; } .log .raw { color: #9ece6a; } .log .protomux { color: #7dcfff; } .log .sys { color: #7aa2f7; } .log .err { color: #f7768e; } .section { margin-bottom: 1rem; } .badge { font-size: 0.7rem; padding: 0.15rem 0.4rem; border-radius: 4px; background: #3b4261; color: #a9b1d6; }