/* ========================================
   Components shared by every page (PLAN-287): buttons, badges, code blocks
   and the colours of highlighted code.
   ======================================== */

/* @zen-impl: DOC-20_AC-1 */

/* Buttons (D4): rectangles with 8 px corners, 36 px high, always on one
   line. Primary is the highlighter (D3), secondary is outlined, the third
   kind is a text link. */
.btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 6px;
  box-sizing: border-box;
  height: 36px;
  padding: 0 14px;
  border: 1px solid transparent;
  border-radius: var(--radius-lg);
  background: none;
  font: inherit;
  font-size: 13.5px;
  font-weight: 600;
  line-height: 1;
  white-space: nowrap;
  color: inherit;
  cursor: pointer;
  text-decoration: none;
}

.btn[hidden] {
  display: none;
}

.btn:hover {
  text-decoration: none;
}

.btn:focus-visible {
  outline: 2px solid var(--color-primary);
  outline-offset: 2px;
}

.btn--primary {
  background-color: var(--color-highlight);
  color: var(--color-on-highlight);
}

.btn--primary:hover {
  color: var(--color-on-highlight);
  filter: brightness(0.95);
}

.btn--secondary {
  border-color: var(--color-border-dark);
  color: var(--color-text);
  font-weight: 500;
}

.btn--secondary:hover {
  background-color: var(--color-bg-subtle);
  color: var(--color-text);
}

.btn--link {
  padding: 0 4px;
  color: var(--color-link);
  font-weight: 500;
}

.btn--link:hover {
  text-decoration: underline;
}

.btn--small {
  height: 30px;
  padding: 0 10px;
  font-size: 12.5px;
  font-weight: 500;
  border-color: var(--color-border);
  background-color: var(--color-bg);
  color: var(--color-text-muted);
}

.btn--small:hover {
  border-color: var(--color-border-dark);
  color: var(--color-text);
}

/* Badges: the proposal label beside a title or on a tab. */
.badge {
  display: inline-flex;
  align-items: center;
  padding: 2px 8px;
  border: 1px solid transparent;
  border-radius: var(--radius-md);
  font-size: 11.5px;
  font-weight: 600;
  line-height: 1.4;
  white-space: nowrap;
}

.badge--proposal {
  background-color: var(--color-proposal-bg);
  border-color: var(--color-proposal-border);
  color: var(--color-proposal-text);
}

/* Code blocks (D9): language and actions in a head, then the code. */
.code-block {
  margin: 0 0 var(--space-4);
  border: 1px solid var(--color-border);
  border-radius: 10px;
  overflow: hidden;
  background-color: var(--color-bg);
}

.code-block-head {
  display: flex;
  align-items: center;
  gap: var(--space-2);
  min-height: 36px;
  padding: 3px 4px 3px 12px;
  background-color: var(--color-bg-subtle);
  border-bottom: 1px solid var(--color-border);
  font-size: 12px;
  color: var(--color-text-light);
}

.code-block-lang {
  font-family: var(--font-mono);
}

.code-block-actions {
  margin-left: auto;
  display: flex;
  align-items: center;
  gap: 6px;
  min-width: 0;
}

.code-block-status {
  font-size: 12px;
  color: var(--color-text-muted);
}

.code-block pre {
  margin: 0;
  border-radius: 0;
  background-color: var(--color-bg);
  padding: 12px 14px;
}

/* Highlighted code (lib/highlight.js). */
.tok-bit,
.tok-tag,
.tok-key {
  color: var(--syntax-key);
}

.tok-bit {
  font-weight: 600;
}

.tok-toggle,
.tok-literal {
  color: var(--syntax-literal);
}

.tok-string {
  color: var(--syntax-string);
}

.tok-number,
.tok-divider {
  color: var(--syntax-number);
}

/* PLAN-286 D7: the page actions under a page's title — small buttons on one
   line, wrapping on a phone. */
.page-actions {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  margin: 10px 0 20px;
}
