*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }

:root {
  --color-primary: #2563eb;
  --color-text: #111;
  --color-text-2: #444;
  --color-text-3: #888;
  --color-bg: #fff;
  --color-surface: #f8f8f8;
  --color-border: #e5e5e5;
  --font-sans: system-ui, -apple-system, sans-serif;
  --font-mono: 'Menlo', 'Monaco', monospace;

  /* Syntax highlight tokens */
  --syn-kw:   #9333ea;  /* keyword */
  --syn-str:  #16a34a;  /* string */
  --syn-num:  #d97706;  /* number */
  --syn-fn:   #2563eb;  /* function */
  --syn-id:   #111;     /* identifier */
  --syn-cm:   #6b7280;  /* comment */
  --syn-op:   #374151;  /* operator/punctuation */
  --syn-attr: #0369a1;  /* attribute */
  --syn-tag:  #be185d;  /* tag */
  --syn-sel:  #9333ea;  /* css selector */
  --syn-prop: #0369a1;  /* css property */
  --syn-val:  #16a34a;  /* css value */
}

body {
  font-family: var(--font-sans);
  color: var(--color-text);
  background: var(--color-bg);
  font-size: 15px;
  line-height: 1.6;
}

nav {
  padding: 16px 40px;
  border-bottom: 1px solid var(--color-border);
}

nav a {
  color: var(--color-text-2);
  text-decoration: none;
  font-size: 14px;
}

nav a:hover { color: var(--color-primary); }

main {
  max-width: 860px;
  margin: 0 auto;
  padding: 40px 40px 80px;
}

.page-header { margin-bottom: 36px; }
.page-header h1 { font-size: 24px; font-weight: 700; margin-bottom: 8px; }
.page-desc { color: var(--color-text-2); font-size: 15px; }

/* ── Review cards ── */

.review-cards {
  display: flex;
  flex-direction: column;
  gap: 28px;
}

.review-card {
  border: 1px solid var(--color-border);
  border-radius: 12px;
  overflow: hidden;
}

.card-header {
  display: flex;
  align-items: center;
  gap: 12px;
  padding: 16px 20px;
  background: var(--color-surface);
  border-bottom: 1px solid var(--color-border);
}

.card-title {
  font-size: 15px;
  font-weight: 600;
}

/* ── Badges ── */

.badge {
  font-size: 11px;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.07em;
  padding: 3px 8px;
  border-radius: 4px;
  flex-shrink: 0;
}

.badge--perf  { background: #fef9c3; color: #854d0e; }
.badge--a11y  { background: #dbeafe; color: #1d4ed8; }
.badge--maint { background: #f0fdf4; color: #166534; }
.badge--sec   { background: #fee2e2; color: #991b1b; }

/* ── Tabs ── */

.tab-bar {
  display: flex;
  border-bottom: 1px solid var(--color-border);
  background: var(--color-surface);
}

.tab-btn {
  padding: 8px 18px;
  font-size: 13px;
  font-family: var(--font-sans);
  font-weight: 500;
  color: var(--color-text-3);
  background: none;
  border: none;
  border-bottom: 2px solid transparent;
  cursor: pointer;
  transition: color 0.15s, border-color 0.15s;
  margin-bottom: -1px;
}

.tab-btn:hover { color: var(--color-text); }

.tab-btn.active {
  color: var(--color-primary);
  border-bottom-color: var(--color-primary);
}

/* ── Code panels ── */

.code-panel { display: none; }
.code-panel.active { display: block; }

.code-block {
  background: #1e1e1e;
  color: #d4d4d4;
  font-family: var(--font-mono);
  font-size: 12.5px;
  line-height: 1.7;
  padding: 20px 24px;
  overflow-x: auto;
  white-space: pre;
}

/* ── Syntax highlighting spans ── */
.t-kw   { color: #c792ea; }
.t-str  { color: #c3e88d; }
.t-num  { color: #f78c6c; }
.t-fn   { color: #82aaff; }
.t-id   { color: #eeffff; }
.t-cm   { color: #546e7a; font-style: italic; }
.t-op   { color: #89ddff; }
.t-attr { color: #ffcb6b; }
.t-tag  { color: #f07178; }
.t-sel  { color: #c792ea; }
.t-prop { color: #82aaff; }
.t-val  { color: #c3e88d; }

/* ── Explanation ── */

.card-explanation {
  padding: 14px 20px;
  font-size: 13.5px;
  color: var(--color-text-2);
  line-height: 1.65;
  border-top: 1px solid var(--color-border);
  background: var(--color-bg);
}

.card-explanation code {
  font-family: var(--font-mono);
  font-size: 12px;
  background: var(--color-surface);
  border: 1px solid var(--color-border);
  padding: 1px 5px;
  border-radius: 3px;
  color: var(--color-text);
}

/* ── Mobile ── */

@media (max-width: 640px) {
  main { padding: 24px 20px 60px; }
  nav { padding: 14px 20px; }
  .code-block { font-size: 11.5px; padding: 14px 16px; }
}
