:root {
  --bg: #0d1117; --panel: #161b22; --border: #30363d;
  --fg: #e6edf3; --muted: #8b949e; --accent: #6e9bff; --error: #f85149;
}
* { box-sizing: border-box; }
body { margin: 0; font-family: system-ui, sans-serif; background: var(--bg); color: var(--fg); }
a { color: var(--accent); text-decoration: none; }

.auth { max-width: 320px; margin: 12vh auto; text-align: center; }
.auth h1 { margin-bottom: .2rem; }
.auth form { display: flex; flex-direction: column; gap: .6rem; margin-top: 1.5rem; }
.auth input, .auth button { padding: .7rem; border-radius: 8px; border: 1px solid var(--border);
  background: var(--panel); color: var(--fg); font-size: 1rem; }
.auth button { background: var(--accent); color: #0d1117; border: none; cursor: pointer; font-weight: 600; }

.topbar { display: flex; justify-content: space-between; align-items: center;
  padding: 1rem 1.5rem; border-bottom: 1px solid var(--border); }
.topbar h1 { display: flex; align-items: center; gap: .5rem; margin: 0; font-size: 1.3rem; }
.topbar .logo { width: 28px; height: 28px; }
.topbar nav a { margin-left: 1.2rem; }

.badge { align-self: flex-start; font-size: .68rem; font-weight: 600; text-transform: uppercase;
  letter-spacing: .04em; padding: .15rem .5rem; border-radius: 999px; }
.badge.commercial { background: rgba(63,111,246,.18); color: #8fb4ff; border: 1px solid #3b6ff6; }
.badge.perso { background: rgba(139,148,158,.15); color: var(--muted); border: 1px solid var(--border); }
.card.kind-commercial { border-color: rgba(59,111,246,.45); }

.cockpit { padding: 1.5rem; max-width: 1100px; margin: 0 auto; }
.cockpit section { margin-bottom: 2.5rem; }
.grid { display: grid; gap: 1rem; grid-template-columns: repeat(auto-fill, minmax(220px, 1fr)); }
.card { display: flex; flex-direction: column; gap: .35rem; padding: 1rem;
  background: var(--panel); border: 1px solid var(--border); border-radius: 12px; }
.card:hover { border-color: var(--accent); }
.card .stack { font-size: .8rem; color: var(--accent); }
.muted { color: var(--muted); font-size: .85rem; }
.error { color: var(--error); }

.sources-section { margin-bottom: 1.5rem; }
.sources-title { margin: 0 0 .5rem; font-size: .85rem; text-transform: uppercase; letter-spacing: .06em; color: var(--muted); }
#sources-bandeau { display: flex; gap: 1.2rem; flex-wrap: wrap; }
.source-item { display: flex; align-items: center; gap: .4rem; font-size: .85rem; }

.badge.status-done { background: rgba(35,134,54,.18); color: #3fb950; border: 1px solid #238836; }
.badge.status-skipped { background: rgba(139,148,158,.15); color: var(--muted); border: 1px solid var(--border); }
.badge.status-error { background: rgba(248,81,73,.15); color: var(--error); border: 1px solid var(--error); }
.badge.status-up { background: rgba(35,134,54,.18); color: #3fb950; border: 1px solid #238836; }
.badge.status-down { background: rgba(248,81,73,.15); color: var(--error); border: 1px solid var(--error); }
.badge.status-unknown { background: rgba(139,148,158,.15); color: var(--muted); border: 1px solid var(--border); }

.badge.pipeline-success { background: rgba(35,134,54,.18); color: #3fb950; border: 1px solid #238836; }
.badge.pipeline-failed { background: rgba(248,81,73,.15); color: var(--error); border: 1px solid var(--error); }
.badge.pipeline-running { background: rgba(187,128,9,.18); color: #e3b341; border: 1px solid #bb8009; }
.badge.pipeline-canceled { background: rgba(139,148,158,.15); color: var(--muted); border: 1px solid var(--border); }

.service-list { list-style: none; margin: .4rem 0 0; padding: 0; display: flex; flex-direction: column; gap: .2rem; font-size: .8rem; }
.service-list li { display: flex; align-items: center; justify-content: space-between; }

/* Search results (shared by /search and /kb) */
.search-results { list-style: none; padding: 0; display: flex; flex-direction: column; gap: 1.2rem; }
.search-result { padding: .8rem; background: var(--panel); border: 1px solid var(--border); border-radius: 8px; }
.result-meta { display: flex; align-items: baseline; gap: .6rem; flex-wrap: wrap; margin-bottom: .3rem; }
.result-title { font-weight: 600; }
.source-link { font-size: .8rem; }
.result-snippet { margin: 0; font-size: .87rem; color: var(--muted); }
.result-snippet mark { background: rgba(255,255,0,.25); color: var(--fg); border-radius: 2px; }

/* KB list page */
.kb-page { padding: 1.5rem; max-width: 900px; margin: 0 auto; }
.kb-filter-form { display: flex; gap: .6rem; margin-bottom: 2rem; flex-wrap: wrap; }
.kb-filter-form input[type=search],
.kb-filter-form select { padding: .5rem .8rem; border-radius: 8px; border: 1px solid var(--border);
  background: var(--panel); color: var(--fg); font-size: .9rem; }
.kb-filter-form select option { background: var(--panel); }
.kb-filter-form button { padding: .5rem 1rem; border-radius: 8px; border: none;
  background: var(--accent); color: #0d1117; font-weight: 600; cursor: pointer; }
.kb-project { margin-bottom: 2rem; }
.kb-project h3 { margin: 0 0 .5rem; }
.kb-doc-list { list-style: none; padding: 0; margin: 0; display: flex; flex-direction: column; gap: .3rem; }
.kb-doc-list li { font-size: .9rem; }

/* KB document page */
.kb-doc-page { padding: 1.5rem; max-width: 860px; margin: 0 auto; }
.breadcrumb { font-size: .8rem; color: var(--muted); margin-bottom: 1rem; }
.breadcrumb a { color: var(--muted); }
.breadcrumb a:hover { color: var(--accent); }
.kb-doc-header { margin-bottom: 1.5rem; border-bottom: 1px solid var(--border); padding-bottom: 1rem; }
.kb-doc-header h1 { margin: 0 0 .6rem; font-size: 1.6rem; }
.kb-doc-meta { display: flex; align-items: center; gap: 1rem; }
.kb-source-link { font-size: .85rem; }

/* Markdown body */
.markdown-body { line-height: 1.75; }
.markdown-body h1 { font-size: 1.5rem; border-bottom: 1px solid var(--border); padding-bottom: .3rem; }
.markdown-body h2 { font-size: 1.25rem; border-bottom: 1px solid var(--border); padding-bottom: .3rem; }
.markdown-body h3 { font-size: 1.1rem; }
.markdown-body code { background: var(--panel); padding: .15rem .4rem; border-radius: 4px;
  font-size: .88rem; font-family: ui-monospace, monospace; }
.markdown-body pre { background: var(--panel); border: 1px solid var(--border); border-radius: 8px;
  padding: 1rem; overflow-x: auto; }
.markdown-body pre code { background: none; padding: 0; }
.markdown-body blockquote { border-left: 3px solid var(--border); margin: 1rem 0;
  padding-left: 1rem; color: var(--muted); }
.markdown-body table { border-collapse: collapse; width: 100%; margin: 1rem 0; }
.markdown-body th, .markdown-body td { border: 1px solid var(--border); padding: .4rem .8rem; text-align: left; }
.markdown-body th { background: var(--panel); }
.markdown-body a { color: var(--accent); }
.markdown-body mark { background: rgba(255,255,0,.3); color: inherit; }
.markdown-body img { max-width: 100%; }
.markdown-body hr { border: none; border-top: 1px solid var(--border); margin: 1.5rem 0; }
.badge.kind-readme { background: rgba(63,111,246,.18); color: #8fb4ff; border: 1px solid #3b6ff6; }
.badge.kind-doc { background: rgba(139,148,158,.15); color: var(--muted); border: 1px solid var(--border); }
.badge.kind-bmad { background: rgba(187,128,9,.18); color: #e3b341; border: 1px solid #bb8009; }
.badge.kind-code { background: rgba(35,134,54,.18); color: #3fb950; border: 1px solid #238836; }
