/* wiki.css: the /wiki page. Loads after ds/fonts.css, ds/tokens.css and ds/bundle.css (and bar.css).
   Tokens only, no new colours, fonts or radii. The header repeats /about's (about.css .ab2-head) so the
   wiki does not have to load that whole file. Needs <html class="pc" data-theme="light|dark">. */

body { margin: 0; background: var(--surface-page); color: var(--text); font-family: var(--font-sans); }
.pc a { text-underline-offset: 4px; }
:focus-visible { outline: 2px solid var(--focus); outline-offset: 3px; }
.wk-ico { width: 1em; height: 1em; flex: 0 0 auto; display: block; }

/* ---------- Header (as /about) ---------- */
.wk-head {
  position: sticky;
  top: 0;
  z-index: var(--z-menu);
  background: var(--surface-page);
  border-bottom: 1px solid var(--line);
}
.wk-head__in { display: flex; align-items: center; justify-content: space-between; gap: var(--space-4); height: 80px; }
.wk-brand { transition: transform .24s var(--ease-out); }
.wk-brand:hover { transform: translateY(-1px); }
.wk-head__end { display: flex; align-items: center; gap: var(--space-2); }
.wk-back {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  min-height: 40px;
  padding: 6px 14px 6px 10px;
  border: 1px solid var(--line-strong);
  border-radius: var(--radius-pill);
  color: var(--text);
  font-family: var(--font-display);
  font-size: 14px;
  font-weight: 500;
  transition: border-color var(--duration-fast) var(--ease-out);
}
.wk-back:hover { border-color: var(--text); }
.product-mark { flex: 0 0 auto; display: block; }
.wk-theme {
  display: inline-grid;
  place-items: center;
  width: 40px;
  height: 40px;
  padding: 0;
  border: 1px solid var(--line-strong);
  border-radius: var(--radius-pill);
  background: transparent;
  color: var(--text);
  font-size: 18px;
  cursor: pointer;
  transition: border-color var(--duration-fast) var(--ease-out);
}
.wk-theme:hover { border-color: var(--text); }
.wk-theme .wk-ico--sun { display: none; }
[data-theme="dark"] .wk-theme .wk-ico--sun { display: block; }
[data-theme="dark"] .wk-theme .wk-ico--moon { display: none; }

/* ---------- Intro ---------- */
.wk-intro { border-bottom: 1px solid var(--line); padding-block: var(--space-8) var(--space-7); }
.wk-intro__in { display: flex; flex-wrap: wrap; align-items: flex-end; justify-content: space-between; gap: var(--space-5); }
.wk-intro h1 {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: var(--space-3);
  font-size: clamp(32px, 5vw, 56px);
  line-height: 1.02;
  letter-spacing: -0.03em;
}
.wk-intro p { margin-top: var(--space-3); color: var(--text-muted); font-size: 18px; max-width: var(--measure-lede, 60ch); }
.wk-intro__actions { display: flex; flex-wrap: wrap; align-items: center; gap: var(--space-3); }

/* ---------- Body ---------- */
.wk-body { padding-block: var(--space-8); }
.wk-body__in { display: grid; grid-template-columns: minmax(0, 5fr) minmax(0, 7fr); gap: var(--space-6); align-items: start; }
@media (max-width: 899px) {
  .wk-head__in { height: 64px; }
  .wk-body__in { grid-template-columns: minmax(0, 1fr); }
  .wk-intro { padding-block: var(--space-7) var(--space-6); }
}
.wk-card {
  min-width: 0;
  padding: var(--space-6);
  border: 1px solid var(--line);
  border-radius: var(--radius-md);
  background: var(--surface-raised);
}
@media (max-width: 480px) { .wk-card { padding: var(--space-5); } }
.wk-card h2 { font-size: clamp(24px, 3vw, 32px); line-height: 1.12; letter-spacing: -0.02em; margin-top: var(--space-3); }
.wk-card .wk-lead { margin-top: var(--space-4); color: var(--text-muted); font-size: 17px; }
.wk-cta { display: flex; flex-wrap: wrap; gap: var(--space-3); margin-top: var(--space-5); }
.wk-mode { display: flex; align-items: flex-start; gap: var(--space-3); margin-top: var(--space-5); color: var(--text-muted); font-size: 15px; }
.wk-mode__dot { width: 8px; height: 8px; margin-top: 8px; border-radius: 50%; background: var(--success); flex: 0 0 auto; }
.wk-mode b { font-family: var(--font-display); font-size: 14px; font-weight: 500; color: var(--text-faint); margin-right: var(--space-2); }
.wk-points { list-style: none; margin: var(--space-5) 0 0; padding: 0; display: grid; gap: var(--space-4); }
.wk-points li { display: flex; align-items: flex-start; gap: var(--space-3); color: var(--text-muted); font-size: 16px; }
.wk-points li strong { color: var(--text); font-weight: 600; }
.wk-points .wk-ico { margin-top: 3px; font-size: 18px; color: var(--text-accent); }

.wk-card h3 { display: flex; align-items: center; gap: var(--space-3); font-size: 24px; line-height: 1.2; letter-spacing: -0.02em; }
.wk-card h3 .wk-ico { font-size: 22px; color: var(--text-accent); }
.wk-note { margin-top: var(--space-3); color: var(--text-muted); font-size: 14px; }
.wk-note code { font-family: var(--font-mono); font-size: .92em; }
.wk-loading { display: inline-flex; align-items: center; gap: 8px; margin-top: var(--space-4); color: var(--text-muted); font-size: 14px; }
.wk-loading__dot { width: 6px; height: 6px; border-radius: 50%; background: var(--text-faint); animation: wk-pulse 1.3s ease-in-out infinite; }
.wk-loading__dot:nth-child(2) { animation-delay: .12s; }
.wk-loading__dot:nth-child(3) { animation-delay: .24s; }
@keyframes wk-pulse { 0%, 100% { opacity: .25; transform: translateY(0); } 50% { opacity: 1; transform: translateY(-2px); } }
@media (prefers-reduced-motion: reduce) { .wk-loading__dot { animation: none; } }

.wk-list { display: grid; margin-top: var(--space-4); }
.wk-item {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--space-4);
  padding: var(--space-4) 0;
  border-top: 1px solid var(--line);
}
.wk-item:first-child { border-top: 0; }
.wk-item__main { min-width: 0; display: grid; gap: 4px; }
.wk-item__row { display: flex; flex-wrap: wrap; align-items: center; gap: var(--space-2); }
.wk-item__title { font-family: var(--font-display); font-size: 18px; font-weight: 500; color: var(--text); }
.wk-item__desc { color: var(--text-muted); font-size: 14px; }
.wk-item__actions { display: grid; justify-items: end; gap: 6px; flex: 0 0 auto; }
.wk-open { gap: var(--space-2); white-space: nowrap; }
.wk-open .wk-ico { font-size: 16px; }
.wk-open.is-off { opacity: var(--opacity-disabled, .45); pointer-events: none; }
.wk-raw { color: var(--text-muted); font-size: 13px; }
.wk-raw:hover { color: var(--text); }
@media (max-width: 560px) {
  .wk-item { flex-direction: column; align-items: flex-start; }
  .wk-item__actions { justify-items: start; }
}

/* ---------- Footer ---------- */
.wk-foot { border-top: 1px solid var(--line); background: var(--surface-sunken); padding-block: var(--space-6); color: var(--text-muted); font-size: 14px; }
.wk-foot__in { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: var(--space-4); }
.wk-foot__badges { display: flex; flex-wrap: wrap; gap: var(--space-3); }
.wk-foot__badges span { display: inline-flex; align-items: center; gap: 8px; }
.wk-foot__badges .wk-ico { font-size: 16px; color: var(--text-accent); }
.wk-foot a { color: var(--text-muted); text-decoration: underline; text-decoration-color: var(--line-strong); }
.wk-foot a:hover { color: var(--text); }
@media (max-width: 420px) {
  .wk-head__end { gap: 6px; }
  .wk-head__end .pc-btn--sm { padding: 8px 14px; font-size: 13px; }
  .wk-back { padding: 6px 12px 6px 8px; font-size: 13px; }
}

/* Tags inside the h1 must not inherit its size or tight tracking */
.wk-intro h1 .pc-tag { font-size: 14px; letter-spacing: normal; line-height: 1.4; font-weight: 500; }
.wk-head__end .pc-btn { white-space: nowrap; }
@media (max-width: 420px) {
  .wk-head__in { gap: var(--space-2); }
  .wk-head__end .pc-btn--sm { padding: 8px 12px; font-size: 13px; }
  .wk-back { padding: 6px 10px; }
}
