/* Higher-contrast theme on top of Bootstrap 5 */
:root {
  --ink: #0f172a;          /* main text */
  --ink-2: #334155;        /* secondary text (was Bootstrap's faded grey) */
  --line: #cbd5e1;         /* borders */
  --line-soft: #e2e8f0;
  --surface: #ffffff;
  --surface-2: #f1f5f9;    /* card headers, code gutters */
  --page: #e8edf3;
  --accent: #1d4ed8;

  --bs-body-color: var(--ink);
  --bs-body-bg: var(--page);
  --bs-secondary-color: var(--ink-2);
  --bs-border-color: var(--line);
  --bs-link-color: var(--accent);
  --bs-link-color-rgb: 29, 78, 216;
  --bs-link-hover-color: #1e3a8a;
  --bs-primary: var(--accent);
  --bs-primary-rgb: 29, 78, 216;
  --bs-body-font-family: 'Inter', system-ui, -apple-system, 'Segoe UI', sans-serif;
  --bs-font-monospace: 'JetBrains Mono', ui-monospace, Consolas, monospace;
}

body { background: var(--page); color: var(--ink); -webkit-font-smoothing: antialiased; }
[hidden] { display: none !important; } /* beat Bootstrap's d-flex !important */
.min-w-0 { min-width: 0; }
h1, h2, h3, .h1, .h2, .h3, .h4, .h5, .h6 { color: var(--ink); font-weight: 700; letter-spacing: -.01em; }
.text-muted { color: var(--ink-2) !important; }
code { color: #9d174d; font-size: .875em; }

/* navbar */
.app-nav { background: var(--ink); border-bottom: 3px solid var(--accent); }
.app-nav .nav-link { color: #cbd5e1; font-weight: 500; }
.app-nav .nav-link:hover, .app-nav .nav-link.active { color: #fff; }
.app-nav .brand-icon { color: #60a5fa; }

/* buttons */
.btn-primary { --bs-btn-bg: var(--accent); --bs-btn-border-color: var(--accent); --bs-btn-hover-bg: #1e40af; --bs-btn-hover-border-color: #1e40af; --bs-btn-active-bg: #1e3a8a; font-weight: 600; }
.btn-outline-primary { --bs-btn-color: var(--accent); --bs-btn-border-color: var(--accent); --bs-btn-hover-bg: var(--accent); --bs-btn-hover-border-color: var(--accent); font-weight: 600; }
.btn-outline-secondary { --bs-btn-color: var(--ink-2); --bs-btn-border-color: #94a3b8; --bs-btn-hover-bg: var(--ink-2); --bs-btn-hover-border-color: var(--ink-2); }

/* cards */
.card { border: 1px solid var(--line); border-radius: .625rem; box-shadow: 0 1px 2px rgba(15, 23, 42, .06), 0 2px 6px rgba(15, 23, 42, .04); }
.card-header, .card-header.bg-white { background: var(--surface-2) !important; border-bottom: 1px solid var(--line); color: var(--ink); }
.card-header .fw-semibold { font-weight: 700 !important; }
.list-group-item { border-color: var(--line-soft); color: var(--ink); }
.list-group-item-action:hover { background: #eff6ff; }
.table { --bs-table-color: var(--ink); }
.table thead th { font-size: .75rem; text-transform: uppercase; letter-spacing: .04em; color: var(--ink-2); background: var(--surface-2); border-bottom-color: var(--line); }
.nav-tabs { border-bottom: 2px solid var(--line); }
.nav-tabs .nav-link { color: var(--ink-2); font-weight: 500; border: 0; border-bottom: 2px solid transparent; margin-bottom: -2px; }
.nav-tabs .nav-link.active { color: var(--accent); background: transparent; border-bottom-color: var(--accent); font-weight: 600; }
.badge { font-weight: 600; letter-spacing: .01em; }
.badge.text-bg-info { background: #0369a1 !important; color: #fff !important; }
.spin { display: inline-block; animation: spin 1s linear infinite; }
@keyframes spin { to { transform: rotate(360deg); } }
.badge.text-bg-light { color: var(--ink) !important; background: var(--surface-2) !important; border-color: var(--line) !important; }
.form-control, .form-select { border-color: #94a3b8; color: var(--ink); }
.form-control:focus, .form-select:focus { border-color: var(--accent); box-shadow: 0 0 0 .2rem rgba(29, 78, 216, .2); }
.form-label { font-weight: 600; color: var(--ink); }
dt { color: var(--ink-2); font-weight: 600; }

/* dashboard stats */
.stat { border-left: 4px solid var(--accent); }
.stat .fs-3 { line-height: 1.2; font-weight: 700 !important; }
.stat .small { font-weight: 600; text-transform: uppercase; letter-spacing: .04em; font-size: .7rem; }

/* code viewer: line numbers column + code column share the same line height */
.code-view { display: flex; overflow-x: auto; font-family: var(--bs-font-monospace); font-size: 13px; line-height: 1.55; background: #fff; }
.code-view pre { margin: 0; padding: .75rem 0; font-size: inherit; line-height: inherit; overflow: visible; }
.code-view .line-numbers { padding: .75rem .75rem; text-align: right; color: #64748b; user-select: none; background: var(--surface-2); border-right: 1px solid var(--line); }
.code-view .code { flex: 1; padding-left: 1rem; padding-right: 1rem; color: var(--ink); }
.code-view code { color: inherit; font-size: inherit; }
.code-view code.hljs { padding: 0; background: transparent; }

.diff { font-family: var(--bs-font-monospace); font-size: 13px; line-height: 1.55; padding: .5rem 0; color: var(--ink); }
.diff span { display: block; padding: 0 1rem; white-space: pre; }
.diff .add { background: #dcfce7; color: #14532d; }
.diff .del { background: #fee2e2; color: #7f1d1d; }
.diff .hunk { background: #dbeafe; color: #1e3a8a; }
.diff .file { background: var(--surface-2); font-weight: 700; border-top: 1px solid var(--line); margin-top: .5rem; padding-top: .3rem; padding-bottom: .3rem; }
.diff .meta { color: var(--ink-2); }

.markdown { font-size: .95rem; color: var(--ink); }
.markdown img { max-width: 100%; }
.markdown pre { background: var(--surface-2); padding: .75rem; border-radius: .375rem; border: 1px solid var(--line-soft); }
.markdown table { border-collapse: collapse; margin-bottom: 1rem; }
.markdown th, .markdown td { border: 1px solid var(--line); padding: .25rem .5rem; }
.markdown :last-child { margin-bottom: 0; }
.markdown h1, .markdown h2, .markdown h3 { margin-top: 1.5rem; }
.markdown h1:first-child, .markdown h2:first-child { margin-top: 0; }
.markdown code { background: var(--surface-2); padding: .1em .35em; border-radius: .25rem; }
.markdown pre code { background: none; padding: 0; }
.markdown blockquote { border-left: 4px solid var(--accent); padding: .25rem 1rem; color: var(--ink-2); background: #eff6ff; }
.wiki-preview { max-height: 70vh; overflow: auto; }

.secret { background: var(--surface-2); border: 1px solid var(--line-soft); padding: .5rem .75rem; border-radius: .375rem; white-space: pre-wrap; word-break: break-all; font-size: 12px; max-height: 300px; overflow: auto; }
