:root {
  --accent: #0f6cbd;
  --border: #e1dfdd;
  --text: #242424;
  --muted: #616161;
  --font: "Segoe UI", sans-serif;
}

* { box-sizing: border-box; }
body { margin: 0; font-family: var(--font); color: var(--text); background: #f5f5f5; }

.login-wrap { min-height: 100vh; display: flex; align-items: center; justify-content: center; padding: 24px; }
.login-card { width: 100%; max-width: 400px; background: #fff; padding: 28px; border-radius: 10px; box-shadow: 0 4px 16px rgba(0,0,0,.08); }
.login-card h1 { margin: 0 0 6px; }
.login-card p { margin: 0 0 18px; color: var(--muted); }
.login-card label { display: block; margin-bottom: 14px; font-size: 13px; font-weight: 600; color: var(--muted); }
.login-card input { display: block; width: 100%; margin-top: 6px; padding: 10px; border: 1px solid #c8c6c4; border-radius: 4px; }
.login-card button { width: 100%; padding: 10px; border: 0; border-radius: 4px; background: var(--accent); color: #fff; font-weight: 600; cursor: pointer; }
.error, .banner.error { background: #fde7e9; color: #a4262c; padding: 10px 12px; border-radius: 4px; margin-bottom: 12px; }

.topbar { display: flex; gap: 12px; align-items: center; padding: 12px 16px; background: #fff; border-bottom: 1px solid var(--border); }
.search-form { flex: 1; }
.search-form input { width: 100%; padding: 8px 10px; border: 1px solid #c8c6c4; border-radius: 4px; }
.topbar a { color: var(--accent); text-decoration: none; font-size: 13px; }

.grid { padding: 16px; }
.list h2 { margin: 0 0 12px; font-size: 16px; }
.card { background: #fff; border: 1px solid var(--border); border-radius: 8px; padding: 14px; margin-bottom: 10px; }
.card h3 { margin: 0 0 8px; }
.card p { margin: 4px 0; font-size: 13px; }
.muted { color: var(--muted); }
