/* Metaplasma — console x grimoire aesthetic */
:root {
  --bg: #0a0a0a;
  --ink: #e8e8e8;
  --muted: #b7b7b7;
  --accent: #77ffaa;
  --accent-dim: #4ce089;
  --line: #1a1a1a;
  --glow: 0 0 10px rgba(119, 255, 170, 0.15), 0 0 24px rgba(119, 255, 170, 0.08);
}

* { box-sizing: border-box; }
html, body { height: 100%; }
html { scroll-behavior: smooth; }
body {
  margin: 0; padding: 0; color: var(--ink); background: var(--bg);
  font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, "Liberation Mono", monospace;
  line-height: 1.6; letter-spacing: 0.2px;
}

.scanlines {
  position: fixed; inset: 0; pointer-events: none; opacity: 0.08;
  background: repeating-linear-gradient(
    to bottom,
    rgba(255,255,255,0.04) 0px,
    rgba(255,255,255,0.04) 1px,
    transparent 2px,
    transparent 3px
  );
  mix-blend-mode: lighten;
}

.site-header { padding: 48px 24px 8px; text-align: center; }
.brand { display: inline-flex; align-items: center; gap: 16px; }
.brand-mark { height: 96px; width: auto; image-rendering: pixelated; filter: drop-shadow(0 0 12px rgba(119,255,170,0.25)); animation: glow-breathe 6s ease-in-out infinite; }
.logo {
  margin: 0;
  font-size: clamp(28px, 7vw, 72px);
  letter-spacing: 0.25em;
  text-transform: uppercase;
  text-shadow: var(--glow);
}
.tagline { margin: 8px 0 16px; color: var(--muted); font-size: 14px; }
.credit { margin: 0 0 12px; color: var(--muted); font-size: 12px; letter-spacing: 0.08em; }

.nav { display: inline-flex; gap: 16px; flex-wrap: wrap; }
.nav a {
  color: var(--ink); text-decoration: none; opacity: 0.85; padding: 4px 6px;
  border-bottom: 1px dotted var(--accent-dim);
}
.nav a:hover { color: var(--accent); text-shadow: var(--glow); opacity: 1; }
.nav a.active { color: var(--accent); text-shadow: var(--glow); opacity: 1; border-bottom-color: var(--accent); }

/* Mobile nav toggle */
.nav-toggle {
  display: none;
  margin: 12px auto 0; padding: 6px 10px; background: transparent; color: var(--ink);
  border: 1px solid var(--line); border-radius: 4px; cursor: pointer; font-family: inherit;
}
.nav-toggle:hover { border-color: var(--accent-dim); color: var(--accent); }

.content { max-width: 960px; margin: 0 auto; padding: 24px; }
.panel { border-top: 1px solid var(--line); padding: 28px 0; }
.panel:first-of-type { border-top: none; }

h2 {
  margin: 0 0 12px;
  font-size: 20px;
  letter-spacing: 0.06em;
  text-transform: none;
  font-family: 'IM Fell English SC', serif;
}
p { margin: 0 0 12px; }

.bullets { list-style: none; padding: 0; margin: 0; }
.bullets li { padding-left: 0; margin: 8px 0; }
.bullets b { color: var(--accent); font-weight: 600; }

.console {
  background: #0d0d0d; color: var(--ink); border: 1px solid var(--line);
  padding: 12px 16px; border-radius: 6px; box-shadow: var(--glow);
  overflow-x: auto;
}

code, pre, .nav, .logo { font-variant-ligatures: none; }
code { color: var(--accent); }

.links { list-style: none; padding: 0; margin: 0; }
.links li { margin: 6px 0; }
.links a { color: var(--ink); text-decoration: none; }
.links a:hover { color: var(--accent); text-shadow: var(--glow); }

.divider { text-align: center; color: var(--accent); opacity: 0.3; letter-spacing: 0.5em; }
.site-footer { padding: 24px; border-top: 1px solid var(--line); text-align: center; color: var(--muted); }

/* Small flourish for headings */
h2::before { content: "// "; color: var(--accent-dim); }

/* Back to top link */
.back { display: inline-block; margin-top: 8px; color: var(--muted); font-size: 12px; text-decoration: none; }
.back:hover { color: var(--accent); text-shadow: var(--glow); }

/* Responsive tweaks */
@media (max-width: 640px) {
  .nav { display: block; gap: 0; }
  .nav a { display: block; padding: 8px 0; }
  .nav:not(.open) a { display: none; }
  .nav-toggle { display: inline-block; }
  .content { padding: 16px; }
}


.panel.pulse { box-shadow: 0 0 0 0 rgba(119,255,170,0.0); animation: flash 0.5s ease-out; }
@keyframes flash { from { box-shadow: 0 0 0 0 rgba(119,255,170,0.0);} 50% { box-shadow: 0 0 24px 2px rgba(119,255,170,0.25);} to { box-shadow: 0 0 0 0 rgba(119,255,170,0.0);} }

/* Quotes list */
.quotes { list-style: none; padding: 0; margin: 0; }
.quotes li { margin: 6px 0; color: var(--muted); }
.quotes li::before { content: '“'; color: var(--accent-dim); margin-right: 6px; }

/* Subtle logo animation keyframes */
@keyframes glow-breathe {
  0% { filter: drop-shadow(0 0 6px rgba(119,255,170,0.12)); }
  50% { filter: drop-shadow(0 0 12px rgba(119,255,170,0.28)); }
  100% { filter: drop-shadow(0 0 6px rgba(119,255,170,0.12)); }
}

/* Inline icons in lists */
.icon { width: 16px; height: 16px; vertical-align: -2px; margin-right: 8px; opacity: 0.85; }

/* Card grid for relations */
.card-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(240px, 1fr));
  gap: 16px;
}
details.card {
  border: 1px solid var(--line);
  border-radius: 8px;
  background: #0d0d0d;
  padding: 8px 12px;
  box-shadow: var(--glow);
}
details.card[open] { border-color: var(--accent-dim); }
details.card summary {
  list-style: none;
  cursor: pointer;
  user-select: none;
  outline: none;
}
details.card summary::-webkit-details-marker { display: none; }
details.card summary::marker { content: ""; }
details.card .bullets { margin-top: 8px; }

/* Diagram styling */
.diagram { margin: 8px 0 0; }
.diagram svg { width: 100%; max-width: 780px; display: block; margin: 0 auto; }
.diagram .node rect { fill: none; stroke: var(--accent-dim); stroke-width: 1.25; }
.diagram .node text { fill: var(--ink); font-size: 12px; letter-spacing: 0.08em; }
.diagram .link { stroke: var(--accent-dim); stroke-width: 1.25; fill: none; }
.diagram .hint { text-anchor: middle; fill: var(--muted); font-size: 11px; }
