:root {
  --ku-page: #101112;
  --ku-surface: #171819;
  --ku-text: #e9e4d8;
  --ku-muted: #a8a397;
  --ku-faint: #969188;
  --ku-line: rgba(233, 228, 216, 0.14);
  --ku-line-strong: rgba(233, 228, 216, 0.28);
  --ku-accent: #bd4b35;
  --ku-gold: #c7a565;
  --ku-accent-wash: rgba(189, 75, 53, 0.12);
  --ku-gold-wash: rgba(199, 165, 101, 0.08);
  --ku-header-surface: rgba(16, 17, 18, 0.9);
  --ku-vignette-middle: rgba(5, 6, 7, 0.18);
  --ku-vignette-edge: rgba(5, 6, 7, 0.72);
  --ku-header-height: 70px;
}

[data-theme="light"] {
  --ku-page: #e9e6de;
  --ku-surface: #f1eee7;
  --ku-text: #202123;
  --ku-muted: #5f5d58;
  --ku-faint: #6b6760;
  --ku-line: rgba(32, 33, 35, 0.16);
  --ku-line-strong: rgba(32, 33, 35, 0.3);
  --ku-accent: #a83f2c;
  --ku-gold: #806635;
  --ku-accent-wash: rgba(168, 63, 44, 0.09);
  --ku-gold-wash: rgba(128, 102, 53, 0.08);
  --ku-header-surface: rgba(233, 230, 222, 0.9);
  --ku-vignette-middle: rgba(91, 79, 60, 0.03);
  --ku-vignette-edge: rgba(91, 79, 60, 0.13);
}

* {
  box-sizing: border-box;
}

html {
  width: 100%;
  height: 100%;
  min-width: 320px;
  min-height: 100%;
  overflow: hidden;
  overscroll-behavior: none;
  touch-action: none;
  background: var(--ku-page);
}

body.knowledge-universe-page {
  position: fixed;
  inset: 0;
  min-width: 320px;
  margin: 0;
  overflow: hidden;
  overscroll-behavior: none;
  touch-action: none;
  color: var(--ku-text);
  background: var(--ku-page);
}

.knowledge-universe-page .site-header {
  position: relative;
  z-index: 12;
  min-height: var(--ku-header-height);
  border-bottom-color: var(--ku-line);
  background: var(--ku-header-surface);
}

.knowledge-universe-page .site-nav a[aria-current="page"] {
  color: var(--ku-gold);
}

.knowledge-universe-page .theme-toggle,
.knowledge-universe-page .menu-toggle,
.knowledge-universe-page .site-nav {
  color: var(--ku-muted);
}

.knowledge-universe-page .skip-link:focus {
  color: var(--ku-page);
  background: var(--ku-text);
}

.knowledge-universe-page a:focus-visible,
.knowledge-universe-page button:focus-visible,
.knowledge-universe-page canvas:focus-visible {
  outline: 2px solid var(--ku-gold);
  outline-offset: 3px;
}

.universe {
  position: relative;
  height: calc(100dvh - var(--ku-header-height));
  min-height: 0;
  overflow: hidden;
}

.graph-surface {
  position: absolute;
  inset: 0;
  isolation: isolate;
  contain: strict;
  overflow: hidden;
  overscroll-behavior: none;
  background: var(--ku-page);
  cursor: grab;
  touch-action: none;
  -webkit-user-select: none;
  user-select: none;
}

.graph-surface::before,
.graph-surface::after {
  content: "";
  position: absolute;
  pointer-events: none;
}

.graph-surface::before {
  inset: -18%;
  z-index: 0;
  background:
    linear-gradient(129deg, transparent 31%, var(--ku-gold-wash) 49%, transparent 67%),
    radial-gradient(ellipse at 18% 24%, var(--ku-accent-wash), transparent 24%),
    radial-gradient(ellipse at 78% 70%, var(--ku-gold-wash), transparent 30%),
    radial-gradient(ellipse at 55% 48%, color-mix(in srgb, var(--ku-text) 3%, transparent), transparent 44%);
  opacity: 0.72;
  transform: rotate(-8deg) scale(1.08, 0.82);
}

.graph-surface::after {
  inset: 0;
  z-index: 0;
  background:
    radial-gradient(ellipse at center, transparent 42%, var(--ku-vignette-middle) 76%, var(--ku-vignette-edge) 100%),
    linear-gradient(180deg, transparent, var(--ku-vignette-middle));
}

.graph-surface.is-dragging {
  cursor: grabbing;
}

#knowledge-graph {
  position: relative;
  z-index: 1;
  display: block;
  width: 100%;
  height: 100%;
  touch-action: none;
  -webkit-touch-callout: none;
}

.graph-intro {
  position: absolute;
  top: 28px;
  left: max(24px, calc((100vw - 1280px) / 2));
  z-index: 5;
  pointer-events: none;
}

.graph-intro h1 {
  margin: 0;
  color: var(--ku-text);
  font-family: var(--serif);
  font-size: clamp(46px, 4.4vw, 66px);
  font-weight: 600;
  letter-spacing: -0.075em;
  line-height: 1;
}

.graph-counts {
  display: flex;
  gap: 24px;
  margin: 16px 0 0;
}

.graph-counts div {
  display: flex;
  gap: 8px;
  align-items: baseline;
}

.graph-counts dt,
.graph-counts dd {
  font-family: var(--mono);
  font-size: 10px;
  font-variant-numeric: tabular-nums;
  letter-spacing: 0.08em;
}

.graph-counts dt {
  color: var(--ku-faint);
}

.graph-counts dd {
  margin: 0;
  color: var(--ku-gold);
}

.graph-legend {
  position: absolute;
  right: max(24px, calc((100vw - 1280px) / 2));
  bottom: 24px;
  z-index: 5;
  display: flex;
  gap: 17px;
  align-items: center;
  padding: 9px 11px;
  border: 1px solid var(--ku-line);
  border-radius: 2px;
  background: color-mix(in srgb, var(--ku-page) 82%, transparent);
  backdrop-filter: blur(14px);
  -webkit-backdrop-filter: blur(14px);
  color: var(--ku-faint);
  font-family: var(--sans);
  font-size: 10px;
  pointer-events: none;
}

.graph-legend span {
  display: inline-flex;
  gap: 7px;
  align-items: center;
  white-space: nowrap;
}

.legend-node {
  display: inline-block;
  width: 8px;
  height: 8px;
  border: 1px solid var(--ku-muted);
  border-radius: 50%;
}

.legend-project {
  background: var(--ku-muted);
}

.legend-theme {
  border-color: var(--ku-accent);
  background: var(--ku-accent);
}

.legend-idea {
  background: transparent;
}

.legend-subtopic {
  width: 6px;
  height: 6px;
  border-color: var(--ku-gold);
  background: transparent;
}

.sr-only {
  position: absolute !important;
  width: 1px !important;
  height: 1px !important;
  padding: 0 !important;
  margin: -1px !important;
  overflow: hidden !important;
  clip: rect(0, 0, 0, 0) !important;
  white-space: nowrap !important;
  border: 0 !important;
}

@media (max-width: 760px) {
  :root {
    --ku-header-height: 64px;
  }

  .graph-intro {
    top: 16px;
    left: 16px;
  }

  .graph-intro h1 {
    font-size: 36px;
  }

  .graph-counts {
    gap: 17px;
    margin-top: 10px;
  }

  .graph-legend {
    right: 12px;
    bottom: max(12px, env(safe-area-inset-bottom));
    gap: 11px;
    padding: 8px;
    font-size: 9px;
  }
}

@media (max-width: 420px) {
  .graph-legend {
    display: grid;
    grid-template-columns: auto auto;
  }
}

@media (prefers-reduced-motion: reduce) {
  *,
  *::before,
  *::after {
    scroll-behavior: auto !important;
    transition-duration: 0.01ms !important;
  }
}

@media (prefers-reduced-transparency: reduce) {
  .knowledge-universe-page .site-header,
  .graph-legend {
    background: var(--ku-page);
    backdrop-filter: none;
    -webkit-backdrop-filter: none;
  }
}
