* { box-sizing: border-box; } body { margin: 0; font-family: system-ui, -apple-system, sans-serif; background: #f4f5f7; color: #1f2430; } nav { display: flex; align-items: center; gap: 1rem; padding: 0.75rem 1.5rem; background: #1f2430; color: #fff; } nav .brand { font-weight: 700; margin-right: 1rem; } nav a { color: #cdd3e0; text-decoration: none; } nav a:hover { color: #fff; } nav form { margin-left: auto; } main { max-width: 960px; margin: 0 auto; padding: 1.5rem; } h1 { margin-top: 0; } .cards { display: flex; gap: 1rem; flex-wrap: wrap; } .card { background: #fff; border-radius: 8px; padding: 1rem 1.25rem; box-shadow: 0 1px 3px rgba(0,0,0,0.08); flex: 1 1 220px; } .card h3 { margin: 0 0 0.5rem; font-size: 0.85rem; text-transform: uppercase; color: #6b7280; } table { width: 100%; border-collapse: collapse; background: #fff; border-radius: 8px; overflow: hidden; } th, td { text-align: left; padding: 0.6rem 0.8rem; border-bottom: 1px solid #e5e7eb; } thead th { background: #eef0f4; font-size: 0.8rem; text-transform: uppercase; color: #6b7280; } table.kv { background: transparent; } table.kv th { width: 200px; color: #6b7280; } .badge { padding: 0.15rem 0.5rem; border-radius: 999px; font-size: 0.75rem; } .badge.ok { background: #d1fae5; color: #065f46; } .badge.err { background: #fee2e2; color: #991b1b; } .badge.muted { background: #e5e7eb; color: #4b5563; } .muted { color: #6b7280; } .error { color: #991b1b; } button, .button { background: #2563eb; color: #fff; border: none; border-radius: 6px; padding: 0.45rem 0.9rem; cursor: pointer; font-size: 0.9rem; text-decoration: none; display: inline-block; } button:hover, .button:hover { background: #1d4ed8; } button.danger { background: #dc2626; } button.danger:hover { background: #b91c1c; } button.link { background: none; padding: 0; color: #cdd3e0; } button.link:hover { color: #fff; background: none; } form.inline { display: inline; } .actions form { margin-right: 0.25rem; } .actions-row { margin-top: 1rem; display: flex; gap: 0.5rem; } input { padding: 0.45rem 0.6rem; border: 1px solid #d1d5db; border-radius: 6px; font-size: 0.9rem; } .add-peer { display: flex; gap: 0.5rem; align-items: center; margin-bottom: 0.25rem; flex-wrap: wrap; } input.narrow { width: 80px; } input.mid { width: 160px; } .breadcrumbs { margin-bottom: 1rem; font-size: 0.85rem; color: #6b7280; } .breadcrumbs a { color: #2563eb; text-decoration: none; } .breadcrumbs a:hover { text-decoration: underline; } .config-card { margin-top: 1rem; } .config-card pre { background: #1f2430; color: #d6e2ff; padding: 1rem; border-radius: 6px; overflow-x: auto; font-size: 0.85rem; } form.stack label { display: block; margin-bottom: 0.5rem; } form.stack { margin-top: 0.75rem; } .login-page { display: flex; align-items: center; justify-content: center; min-height: 100vh; } .login-box { background: #fff; padding: 2rem; border-radius: 10px; box-shadow: 0 4px 16px rgba(0,0,0,0.1); width: 320px; } .login-box h1 { font-size: 1.3rem; text-align: center; } .login-box label { display: block; margin-bottom: 0.75rem; font-size: 0.9rem; } .login-box input { width: 100%; margin-top: 0.25rem; } .login-box button { width: 100%; margin-top: 0.5rem; } .qr { max-width: 220px; display: block; margin-bottom: 0.5rem; } code { word-break: break-all; font-size: 0.85em; }