/**
 * neo.css — the sympy.ai neomorphic design system as a class-based styleguide.
 *
 * Derived from globals.css: every inline hex/shadow idiom used across the app
 * is expressed here as a named class driven by CSS custom properties, so one
 * set of component classes renders under three token scopes:
 *
 *   .neo-scope              light  — default white/grey neomorphic style
 *   .neo-scope.neo-dark     dark   — the /graph page idiom
 *   .neo-scope.neo-studio   studio — design-studio warm-ivory light theme
 *
 * Everything is nested under .neo-scope so this file never collides with the
 * rules in globals.css that production pages still use.
 */

/* ---------------------------------------------------------------- tokens */

.neo-scope {
  /* light (default) */
  --neo-bg: #e8ecf0;
  --neo-surface: #e8ecf0;
  --neo-well: #dde3ea;
  --neo-border: #cbd5e0;
  --neo-text: #2d3748;
  --neo-text-muted: #718096;
  --neo-text-faint: #a0aec0;
  --neo-accent: #FF6B35;
  --neo-accent-dark: #e85a26;
  --neo-accent-light: #ff8559;
  --neo-accent-2: #105236;
  --neo-danger: #e53e3e;
  --neo-success: #2f855a;
  --neo-shadow-dark: rgba(163, 177, 198, 0.6);
  --neo-shadow-light: rgba(255, 255, 255, 0.5);
  --neo-radius-sm: 0.75rem;
  --neo-radius: 1rem;
  --neo-radius-lg: 1.25rem;

  --neo-shadow-raised: 8px 8px 16px var(--neo-shadow-dark), -8px -8px 16px var(--neo-shadow-light);
  --neo-shadow-raised-sm: 6px 6px 12px var(--neo-shadow-dark), -6px -6px 12px var(--neo-shadow-light);
  --neo-shadow-hover: 10px 10px 20px var(--neo-shadow-dark), -10px -10px 20px var(--neo-shadow-light);
  --neo-shadow-inset: inset 6px 6px 12px var(--neo-shadow-dark), inset -6px -6px 12px var(--neo-shadow-light);
  --neo-shadow-inset-sm: inset 4px 4px 8px var(--neo-shadow-dark), inset -4px -4px 8px var(--neo-shadow-light);

  background: var(--neo-bg);
  color: var(--neo-text);
  font-family: 'Poppins', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
}

.neo-scope.neo-dark {
  --neo-bg: #0e1116;
  --neo-surface: #151b23;
  --neo-well: #11161d;
  --neo-border: #1d2530;
  --neo-text: #e2e8f0;
  --neo-text-muted: #94a3b8;
  --neo-text-faint: #64748b;
  --neo-danger: #EF476F;
  --neo-success: #34d399;
  --neo-shadow-dark: rgba(0, 0, 0, 0.55);
  --neo-shadow-light: rgba(148, 163, 184, 0.07);
}

.neo-scope.neo-studio {
  --neo-bg: #eae4d9;
  --neo-surface: #efe9de;
  --neo-well: #e2dbcd;
  --neo-border: #d5cbb8;
  --neo-text: #3f3629;
  --neo-text-muted: #8a7d68;
  --neo-text-faint: #b0a48d;
  --neo-accent-2: #0e7365;
  --neo-danger: #c0392b;
  --neo-success: #2e7d5b;
  --neo-shadow-dark: rgba(146, 130, 102, 0.45);
  --neo-shadow-light: rgba(255, 252, 244, 0.85);
}

/* -------------------------------------------------------------- surfaces */

.neo-scope .neo-surface {
  background: var(--neo-bg);
  color: var(--neo-text);
}

.neo-scope .neo-card {
  background: var(--neo-surface);
  border-radius: var(--neo-radius-lg);
  box-shadow: var(--neo-shadow-raised);
}

.neo-scope .neo-card-inset {
  background: var(--neo-surface);
  border-radius: var(--neo-radius-lg);
  box-shadow: var(--neo-shadow-inset);
}

/* Flat bordered panel — the /graph drawer idiom. */
.neo-scope .neo-panel {
  background: var(--neo-bg);
  border: 1px solid var(--neo-border);
  border-radius: var(--neo-radius-sm);
}

/* Flat sunken area — canvas backdrops, segmented-control rails. */
.neo-scope .neo-well {
  background: var(--neo-well);
  border-radius: var(--neo-radius-sm);
}

.neo-scope .neo-divider {
  border: none;
  border-top: 1px solid var(--neo-border);
  margin: 0.75rem 0;
}

/* --------------------------------------------------------------- buttons */

.neo-scope .neo-button {
  background: var(--neo-surface);
  color: var(--neo-text);
  border: none;
  border-radius: var(--neo-radius-sm);
  box-shadow: var(--neo-shadow-raised-sm);
  padding: 1rem 2rem;
  font-size: 1rem;
  font-weight: 500;
  transition: all 0.2s ease;
  cursor: pointer;
}

.neo-scope .neo-button:hover {
  box-shadow: var(--neo-shadow-raised);
  transform: translateY(-1px);
}

.neo-scope .neo-button:active {
  box-shadow: var(--neo-shadow-inset-sm);
  transform: translateY(0);
}

.neo-scope .neo-button-orange {
  background: linear-gradient(145deg, var(--neo-accent-light), var(--neo-accent));
  color: #ffffff;
  border: none;
  border-radius: var(--neo-radius-sm);
  box-shadow: var(--neo-shadow-raised-sm);
  padding: 1rem 2rem;
  font-size: 1rem;
  font-weight: 500;
  transition: all 0.2s ease;
  cursor: pointer;
}

.neo-scope .neo-button-orange:hover {
  box-shadow: var(--neo-shadow-raised);
  transform: translateY(-1px);
}

.neo-scope .neo-button-orange:active {
  background: linear-gradient(145deg, var(--neo-accent-dark), var(--neo-accent-dark));
  box-shadow: var(--neo-shadow-inset-sm);
  transform: translateY(0);
}

/* Size modifier — compose with .neo-button / .neo-button-orange. */
.neo-scope .neo-button-sm {
  padding: 0.5rem 1rem;
  font-size: 0.875rem;
  border-radius: 0.625rem;
}

.neo-scope .neo-icon-button {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 2.25rem;
  height: 2.25rem;
  background: var(--neo-surface);
  color: var(--neo-text-muted);
  border: none;
  border-radius: 0.625rem;
  box-shadow: var(--neo-shadow-raised-sm);
  transition: all 0.2s ease;
  cursor: pointer;
}

.neo-scope .neo-icon-button:hover {
  color: var(--neo-accent);
  transform: translateY(-1px);
}

.neo-scope .neo-icon-button:active {
  box-shadow: var(--neo-shadow-inset-sm);
  transform: translateY(0);
}

/* Segmented control rail + pills — /graph mode grid and top-bar buttons. */
.neo-scope .neo-segmented {
  display: flex;
  gap: 0.125rem;
  background: var(--neo-well);
  border-radius: 0.5rem;
  padding: 0.125rem;
}

.neo-scope .neo-pill {
  flex: 1;
  background: transparent;
  color: var(--neo-text-muted);
  border: none;
  border-radius: 0.375rem;
  padding: 0.375rem 0.625rem;
  font-size: 0.75rem;
  font-weight: 500;
  text-align: center;
  transition: all 0.15s ease;
  cursor: pointer;
}

.neo-scope .neo-pill:hover {
  color: var(--neo-text);
}

.neo-scope .neo-pill-active {
  background: var(--neo-accent);
  color: #ffffff;
}

.neo-scope .neo-pill-active:hover {
  color: #ffffff;
}

/* ---------------------------------------------------------------- inputs */

.neo-scope .neo-input {
  background: var(--neo-surface);
  color: var(--neo-text);
  border: none;
  border-radius: var(--neo-radius-sm);
  box-shadow: var(--neo-shadow-inset-sm);
  padding: 0.75rem 1rem;
  font-size: 0.9375rem;
  transition: all 0.2s ease;
}

.neo-scope .neo-input::placeholder {
  color: var(--neo-text-muted);
}

.neo-scope .neo-input:focus {
  outline: none;
  box-shadow: var(--neo-shadow-inset-sm), 0 0 0 3px rgba(255, 107, 53, 0.2);
}

.neo-scope .neo-textarea {
  background: var(--neo-surface);
  color: var(--neo-text);
  border: none;
  border-radius: var(--neo-radius-sm);
  box-shadow: var(--neo-shadow-inset-sm);
  padding: 0.75rem 1rem;
  font-size: 0.9375rem;
  min-height: 5rem;
  resize: vertical;
  transition: all 0.2s ease;
}

.neo-scope .neo-textarea:focus {
  outline: none;
  box-shadow: var(--neo-shadow-inset-sm), 0 0 0 3px rgba(255, 107, 53, 0.2);
}

.neo-scope .neo-select {
  appearance: none;
  background: var(--neo-surface);
  color: var(--neo-text);
  border: none;
  border-radius: var(--neo-radius-sm);
  box-shadow: var(--neo-shadow-raised-sm);
  padding: 0.625rem 2.25rem 0.625rem 1rem;
  font-size: 0.875rem;
  cursor: pointer;
  background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%23718096' stroke-width='2'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E");
  background-repeat: no-repeat;
  background-position: right 0.875rem center;
}

.neo-scope .neo-checkbox {
  appearance: none;
  width: 1.25rem;
  height: 1.25rem;
  border-radius: 0.375rem;
  background: var(--neo-surface);
  box-shadow: var(--neo-shadow-inset-sm);
  cursor: pointer;
  transition: all 0.15s ease;
  flex-shrink: 0;
}

.neo-scope .neo-checkbox:checked {
  background: var(--neo-accent);
  box-shadow: none;
  background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='white' stroke-width='3.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M20 6 9 17l-5-5'/%3E%3C/svg%3E");
  background-size: 0.75rem;
  background-repeat: no-repeat;
  background-position: center;
}

.neo-scope .neo-radio {
  appearance: none;
  width: 1.25rem;
  height: 1.25rem;
  border-radius: 9999px;
  background: var(--neo-surface);
  box-shadow: var(--neo-shadow-inset-sm);
  cursor: pointer;
  transition: all 0.15s ease;
  flex-shrink: 0;
}

.neo-scope .neo-radio:checked {
  background: var(--neo-surface);
  box-shadow: var(--neo-shadow-inset-sm), inset 0 0 0 5px var(--neo-accent);
}

.neo-scope .neo-switch {
  appearance: none;
  position: relative;
  width: 2.75rem;
  height: 1.5rem;
  border-radius: 9999px;
  background: var(--neo-well);
  box-shadow: var(--neo-shadow-inset-sm);
  cursor: pointer;
  transition: background 0.2s ease;
  flex-shrink: 0;
}

.neo-scope .neo-switch::after {
  content: '';
  position: absolute;
  top: 0.1875rem;
  left: 0.1875rem;
  width: 1.125rem;
  height: 1.125rem;
  border-radius: 9999px;
  background: var(--neo-surface);
  box-shadow: 2px 2px 4px var(--neo-shadow-dark), -1px -1px 2px var(--neo-shadow-light);
  transition: transform 0.2s ease;
}

.neo-scope .neo-switch:checked {
  background: var(--neo-accent);
}

.neo-scope .neo-switch:checked::after {
  transform: translateX(1.25rem);
  background: #ffffff;
}

/* --------------------------------------------------------------- sliders */

/* NeoSlider (Radix) — chunky neomorphic slider used on light pages. */
.neo-scope .neo-slider-track {
  background: var(--neo-surface);
  box-shadow: inset 3px 3px 6px var(--neo-shadow-dark), inset -3px -3px 6px var(--neo-shadow-light);
}

.neo-scope .neo-slider-range {
  background: linear-gradient(90deg, var(--neo-accent-light), var(--neo-accent));
}

.neo-scope .neo-slider-thumb {
  background: var(--neo-surface);
  box-shadow: 4px 4px 8px var(--neo-shadow-dark), -4px -4px 8px var(--neo-shadow-light);
  transition: box-shadow 0.15s ease, transform 0.15s ease;
  cursor: grab;
}

.neo-scope .neo-slider-thumb:hover {
  box-shadow: 5px 5px 10px var(--neo-shadow-dark), -5px -5px 10px var(--neo-shadow-light);
}

.neo-scope .neo-slider-thumb:active {
  box-shadow: var(--neo-shadow-inset-sm);
  transform: scale(0.95);
  cursor: grabbing;
}

.neo-scope .neo-slider-thumb[data-disabled] {
  opacity: 0.5;
  pointer-events: none;
}

/* Slim slider — the /graph drawer idiom (flat track, small accent thumb). */
.neo-scope .neo-slider-slim-track {
  background: var(--neo-well);
  height: 0.375rem;
  border-radius: 9999px;
}

.neo-scope .neo-slider-slim-range {
  background: var(--neo-accent);
  border-radius: 9999px;
}

.neo-scope .neo-slider-slim-thumb {
  display: block;
  width: 0.875rem;
  height: 0.875rem;
  border-radius: 9999px;
  background: var(--neo-accent);
  box-shadow: 0 1px 3px rgba(0, 0, 0, 0.4);
  transition: transform 0.15s ease;
  cursor: grab;
}

.neo-scope .neo-slider-slim-thumb:hover {
  transform: scale(1.1);
}

/* ---------------------------------------------------- badges, chips, tags */

.neo-scope .neo-badge {
  display: inline-flex;
  align-items: center;
  gap: 0.375rem;
  background: var(--neo-surface);
  color: var(--neo-text-muted);
  border-radius: 9999px;
  box-shadow: var(--neo-shadow-raised-sm);
  padding: 0.25rem 0.875rem;
  font-size: 0.75rem;
  font-weight: 500;
}

.neo-scope .neo-badge-accent {
  display: inline-flex;
  align-items: center;
  gap: 0.375rem;
  background: linear-gradient(145deg, var(--neo-accent-light), var(--neo-accent));
  color: #ffffff;
  border-radius: 9999px;
  box-shadow: var(--neo-shadow-raised-sm);
  padding: 0.25rem 0.875rem;
  font-size: 0.75rem;
  font-weight: 500;
}

.neo-scope .neo-chip {
  display: inline-flex;
  align-items: center;
  gap: 0.375rem;
  background: var(--neo-well);
  color: var(--neo-text-muted);
  border-radius: 9999px;
  padding: 0.25rem 0.75rem;
  font-size: 0.75rem;
  font-weight: 500;
}

/* ---------------------------------------------------------------- alerts */

.neo-scope .neo-alert {
  display: flex;
  align-items: flex-start;
  gap: 0.625rem;
  border-radius: var(--neo-radius-sm);
  box-shadow: var(--neo-shadow-inset-sm);
  padding: 0.75rem 1rem;
  font-size: 0.875rem;
  background: var(--neo-surface);
  color: var(--neo-text);
}

.neo-scope .neo-alert-error {
  color: var(--neo-danger);
  box-shadow: var(--neo-shadow-inset-sm), inset 3px 0 0 var(--neo-danger);
}

.neo-scope .neo-alert-success {
  color: var(--neo-success);
  box-shadow: var(--neo-shadow-inset-sm), inset 3px 0 0 var(--neo-success);
}

.neo-scope .neo-alert-info {
  color: var(--neo-accent-2);
  box-shadow: var(--neo-shadow-inset-sm), inset 3px 0 0 var(--neo-accent-2);
}

/* ------------------------------------------------------- table, progress */

.neo-scope .neo-table {
  width: 100%;
  border-collapse: collapse;
  font-size: 0.875rem;
}

.neo-scope .neo-table th {
  text-align: left;
  font-weight: 600;
  color: var(--neo-text-muted);
  font-size: 0.75rem;
  text-transform: uppercase;
  letter-spacing: 0.05em;
  padding: 0.625rem 0.875rem;
  border-bottom: 1px solid var(--neo-border);
}

.neo-scope .neo-table td {
  padding: 0.625rem 0.875rem;
  border-bottom: 1px solid var(--neo-border);
  color: var(--neo-text);
}

.neo-scope .neo-table tr:last-child td {
  border-bottom: none;
}

.neo-scope .neo-progress {
  width: 100%;
  height: 0.625rem;
  border-radius: 9999px;
  background: var(--neo-surface);
  box-shadow: var(--neo-shadow-inset-sm);
  overflow: hidden;
}

.neo-scope .neo-progress-bar {
  height: 100%;
  border-radius: 9999px;
  background: linear-gradient(90deg, var(--neo-accent-light), var(--neo-accent));
  transition: width 0.3s ease;
}

/* -------------------------------------------------------- avatar, tabs */

.neo-scope .neo-avatar {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 2.5rem;
  height: 2.5rem;
  border-radius: 9999px;
  background: linear-gradient(145deg, var(--neo-accent-light), var(--neo-accent));
  color: #ffffff;
  font-weight: 600;
  font-size: 0.875rem;
  box-shadow: var(--neo-shadow-raised-sm);
  flex-shrink: 0;
}

.neo-scope .neo-tabs {
  display: flex;
  gap: 0.25rem;
  background: var(--neo-surface);
  border-radius: var(--neo-radius-sm);
  box-shadow: var(--neo-shadow-inset-sm);
  padding: 0.25rem;
}

.neo-scope .neo-tab {
  flex: 1;
  background: transparent;
  color: var(--neo-text-muted);
  border: none;
  border-radius: 0.625rem;
  padding: 0.5rem 1rem;
  font-size: 0.875rem;
  font-weight: 500;
  text-align: center;
  transition: all 0.2s ease;
  cursor: pointer;
}

.neo-scope .neo-tab-active {
  background: var(--neo-bg);
  color: var(--neo-accent);
  box-shadow: var(--neo-shadow-raised-sm);
}

/* ------------------------------------------------------------------ chat */

.neo-scope .neo-bubble-user {
  background: linear-gradient(145deg, var(--neo-accent-light), var(--neo-accent));
  color: #ffffff;
  border-radius: var(--neo-radius) var(--neo-radius) 0.25rem var(--neo-radius);
  box-shadow: var(--neo-shadow-raised-sm);
  padding: 0.75rem 1rem;
  font-size: 0.9375rem;
  max-width: 85%;
}

.neo-scope .neo-bubble-ai {
  background: var(--neo-surface);
  color: var(--neo-text);
  border-radius: var(--neo-radius) var(--neo-radius) var(--neo-radius) 0.25rem;
  box-shadow: var(--neo-shadow-raised-sm);
  padding: 0.75rem 1rem;
  font-size: 0.9375rem;
  max-width: 85%;
}

.neo-scope .neo-dot {
  width: 0.5rem;
  height: 0.5rem;
  border-radius: 9999px;
  background: var(--neo-accent);
  animation: neo-bounce 1s infinite;
}

/* -------------------------------------------------------- code, tooltip */

.neo-scope .neo-code {
  display: block;
  background: var(--neo-well);
  color: var(--neo-text);
  border-radius: var(--neo-radius-sm);
  box-shadow: var(--neo-shadow-inset-sm);
  padding: 0.875rem 1rem;
  font-family: ui-monospace, 'Cascadia Code', monospace;
  font-size: 0.8125rem;
  line-height: 1.6;
  overflow-x: auto;
  white-space: pre;
}

.neo-scope .neo-tooltip {
  display: inline-block;
  background: var(--neo-text);
  color: var(--neo-bg);
  border-radius: 0.5rem;
  padding: 0.375rem 0.625rem;
  font-size: 0.75rem;
  box-shadow: 0 4px 12px rgba(0, 0, 0, 0.25);
}

/* --------------------------------------------------------- modal, drawer */

.neo-scope .neo-modal-backdrop {
  position: fixed;
  inset: 0;
  background: rgba(15, 20, 26, 0.55);
  backdrop-filter: blur(4px);
  z-index: 50;
}

.neo-scope .neo-modal {
  background: var(--neo-bg);
  color: var(--neo-text);
  border: 1px solid var(--neo-border);
  border-radius: var(--neo-radius);
  box-shadow: 0 20px 60px rgba(0, 0, 0, 0.35);
  overflow: hidden;
}

.neo-scope .neo-drawer {
  display: flex;
  flex-direction: column;
  background: var(--neo-bg);
  color: var(--neo-text);
  border-left: 1px solid var(--neo-border);
}

.neo-scope .neo-drawer-grip {
  position: absolute;
  left: 0;
  top: 0;
  height: 100%;
  width: 0.375rem;
  cursor: col-resize;
  touch-action: none;
}

.neo-scope .neo-drawer-grip:hover {
  background: rgba(255, 107, 53, 0.5);
}

/* Hierarchy tree rows inside the inspector drawer. */
.neo-scope .neo-tree-row {
  display: flex;
  align-items: center;
  gap: 0.375rem;
  width: 100%;
  background: transparent;
  color: var(--neo-text-muted);
  border: none;
  border-radius: 0.5rem;
  padding: 0.3125rem 0.5rem;
  font-size: 0.8125rem;
  text-align: left;
  transition: all 0.15s ease;
  cursor: pointer;
}

.neo-scope .neo-tree-row:hover {
  color: var(--neo-text);
  background: var(--neo-well);
}

.neo-scope .neo-tree-row-active {
  background: var(--neo-accent);
  color: #ffffff;
}

.neo-scope .neo-tree-row-active:hover {
  background: var(--neo-accent);
  color: #ffffff;
}

/* ------------------------------------------------------------ typography */

.neo-scope .neo-h1 {
  font-size: 2.25rem;
  font-weight: 700;
  line-height: 1.2;
  color: var(--neo-text);
}

.neo-scope .neo-h2 {
  font-size: 1.5rem;
  font-weight: 600;
  line-height: 1.3;
  color: var(--neo-text);
}

.neo-scope .neo-h3 {
  font-size: 1.125rem;
  font-weight: 600;
  line-height: 1.4;
  color: var(--neo-text);
}

.neo-scope .neo-text-muted {
  color: var(--neo-text-muted);
}

.neo-scope .neo-mono {
  font-family: ui-monospace, 'Cascadia Code', monospace;
  font-size: 0.8125rem;
}

/* --------------------------------------------------------------- spinner */

.neo-scope .neo-spinner {
  width: 2.5rem;
  height: 2.5rem;
  border-radius: 9999px;
  border: 4px solid var(--neo-accent);
  border-top-color: transparent;
  animation: neo-spin 0.8s linear infinite;
}

@keyframes neo-spin {
  to {
    transform: rotate(360deg);
  }
}

@keyframes neo-bounce {
  0%, 80%, 100% {
    transform: translateY(0);
    opacity: 0.6;
  }
  40% {
    transform: translateY(-0.375rem);
    opacity: 1;
  }
}

/* ---------------------------------------------------------------------------
 * Maths-library bookmark capture (spec §10)
 * ------------------------------------------------------------------------- */

/* Hover affordance on capturable blocks: subtle inset highlight + copy cursor. */
.ml-capture-block {
  border-radius: 8px;
  padding: 0.125rem 0.375rem;
  margin: 0 -0.375rem;
  transition: background 0.15s ease, box-shadow 0.15s ease;
}
.ml-capture-block:hover {
  background: rgba(0, 0, 0, 0.03);
  box-shadow: inset 2px 2px 4px rgba(0, 0, 0, 0.06),
    inset -2px -2px 4px rgba(255, 255, 255, 0.5);
}
/* Persistent thin accent left border while a span is in the tray. */
.ml-capture-block--saved {
  border-left: 3px solid var(--neo-accent, #4f8cff);
  padding-left: 0.5rem;
}

/* Deep-link block flash on navigation to #blockId. */
@keyframes ml-block-flash {
  0% { background: rgba(79, 140, 255, 0.28); }
  100% { background: transparent; }
}
.ml-block-flash {
  animation: ml-block-flash 1.5s ease-out;
}

@media (prefers-reduced-motion: reduce) {
  .ml-block-flash { animation: none; }
  .ml-capture-block { transition: none; }
}

/* ---------------------------------------------------------------------------
 * Lab pages (public/labs) — neo-viz extension
 *
 * The 58 interactive labs under web/public/labs/<slug>/index.html are static
 * standalone HTML files (no build step) that used to load their own
 * common/palette.css (per-visualization accent tokens) + common/labs.css
 * (layout & components) instead of the app's design system. Both are folded
 * in below: palette.css's tokens survive as --viz-* custom properties, and
 * labs.css's selectors are unchanged (so no per-lab HTML/JS had to move) but
 * now read neo.css tokens for their base surfaces/text/radius, and the most
 * common containers (page/side/stage/badge/buttons/tabs/callouts) got the
 * neomorphic shadow treatment.
 *
 * Every lab's <body> carries class="neo-scope neo-dark neo-viz" — neo-viz
 * scopes this whole block so it never leaks into the rest of the app.
 * ------------------------------------------------------------------------- */

.neo-scope.neo-viz .neo-viz-back {
  position: fixed;
  top: 14px;
  left: 14px;
  z-index: 999;
  display: inline-flex;
  align-items: center;
  gap: 0.375rem;
  background: var(--neo-surface);
  color: var(--neo-text-muted);
  text-decoration: none;
  font-family: 'Space Grotesk', 'Inter', sans-serif;
  font-size: 0.75rem;
  letter-spacing: 0.02em;
  padding: 0.5rem 0.875rem;
  border-radius: 999px;
  box-shadow: var(--neo-shadow-raised-sm);
  transition: box-shadow 0.15s ease, color 0.15s ease, transform 0.15s ease;
}
.neo-scope.neo-viz .neo-viz-back:hover {
  color: var(--neo-accent);
  box-shadow: var(--neo-shadow-raised);
  transform: translateY(-1px);
}

.neo-scope.neo-viz {
  /* per-visualization accent tokens, from the old common/palette.css */
  --viz-force: #ff9d5c;
  --viz-speed: #5fd3c6;
  --viz-work: #c8a2ff;
  --viz-pcp: #8aa0ff;
  --viz-gd: #5ee3a1;
  --viz-bp: #c58bff;
  --viz-of: #f6c750;
  --viz-sin: #4be0d4;
  --viz-cos: #ff9f6e;
  --viz-tan: #c58bff;
  --viz-in: #5ee3a1;
  --viz-out: #3d4c60;
  --viz-rcol: #7c9cff;
  --viz-scol: #f5c04a;
  --viz-vcol: #8aa0ff;
  --viz-ecol: #4be0d4;
  --viz-fcol: #c58bff;
  --viz-flat: #f6c750;
  --viz-sph: #ff7a8a;
  --viz-hyp: #4be0d4;
  --viz-pow: #f6c750;
  --viz-pos: #4be0d4;
  --viz-bft: #c58bff;
  --viz-tok: #8aa0ff;
  --viz-emb: #5ee3a1;
  --viz-att: #c58bff;
  --viz-nxt: #f6c750;
  --viz-curve: #ff9f6e;
  --viz-fit: #5ee3a1;
  --viz-grid: #1a2138;
  --viz-osc: #4be0d4;
  --viz-env: #f6c750;
  --viz-filt: #c58bff;
  --viz-fx: #ff9f6e;
  --viz-fn: #8aa0ff;
  --viz-deriv: #f6c750;
  --viz-integ: #4be0d4;
  --viz-bs: #f6c750;
  --viz-pf: #4be0d4;
  --viz-var: #c58bff;
  --viz-pnp: #8aa0ff;
  --viz-rh: #4be0d4;
  --viz-ns: #5ad1ff;
  --viz-ym: #f6c750;
  --viz-bsd: #c58bff;
  --viz-hodge: #ff9dc4;
  --viz-poin: #5ee3a1;
  --viz-ball: #f5c04a;
  --viz-peg: #3a4a5c;
  --viz-binL: #4bd6b6;
  --viz-binR: #7c9cff;
  --viz-tp: #4bd6b6;
  --viz-fp: #ff7a8a;
  --viz-tn: #5a4a63;
  --viz-pyth: #f6c750;
  --viz-odds: #4be0d4;
  --viz-gauss: #8aa0ff;
  --viz-geo: #c58bff;
  --viz-amgm: #5ee3a1;
  --viz-brg: #f6c750;
  --viz-col: #4be0d4;
  --viz-four: #5ee3a1;
  --viz-time: #4be0d4;
  --viz-freq: #ff9f6e;
  --viz-win: #c58bff;
  --viz-lerp: #4be0d4;
  --viz-slerp: #f6c750;
  --viz-eased: #c58bff;
  --viz-pid: #f6c750;
  --viz-mpc: #4be0d4;
  --viz-nlc: #c58bff;
  --viz-traj: #5ee3a1;
  --viz-wbc: #8aa0ff;
}

/** labs.css — shared styles centralized from outbox/.../index.html. Per-file :root variables stay inline. */

.neo-scope.neo-viz *{ box-sizing:border-box; }
html.neo-scope.neo-viz, .neo-scope.neo-viz{ margin:0; font-family:'Inter',system-ui,sans-serif; }
.neo-scope.neo-viz .display{ font-family:'Space Grotesk','Inter',sans-serif; }
.neo-scope.neo-viz header{ max-width:1320px; margin:0 auto; padding:56px 24px 10px; }
.neo-scope.neo-viz header .chip{ display:inline-block; font-family:'Space Grotesk'; font-size:11px; letter-spacing:.18em; padding:5px 12px; border-radius:999px; background:var(--neo-well); color:var(--neo-accent); box-shadow:var(--neo-shadow-raised-sm); }
.neo-scope.neo-viz header h1{ font-size:34px; margin:14px 0 6px; letter-spacing:-.01em; }
.neo-scope.neo-viz header h1 span{ color:var(--neo-text-muted); text-shadow:0 0 24px rgba(75,224,212,.35); }
.neo-scope.neo-viz header p{ color:var(--neo-text-muted); max-width:1000px; line-height:1.6; margin:6px 0 0; }
.neo-scope.neo-viz .wrap{ max-width:1320px; margin:18px auto 60px; padding:0 24px; }
.neo-scope.neo-viz .page{ background:var(--neo-surface); border:none; border-radius:var(--neo-radius-lg); box-shadow:var(--neo-shadow-raised); padding:26px 26px 30px; margin-bottom:22px; }
.neo-scope.neo-viz .page .top{ display:flex; justify-content:space-between; align-items:flex-start; gap:16px; }
.neo-scope.neo-viz .page .bignum{ font-family:'Space Grotesk'; font-weight:700; font-size:19px; color:var(--neo-accent); line-height:1.15; }
.neo-scope.neo-viz .page h2{ font-size:24px; margin:8px 0 2px; }
.neo-scope.neo-viz .page .tagline{ color:var(--neo-text-muted); font-size:14px; }
.neo-scope.neo-viz .badge{ font-family:'Space Grotesk'; font-size:10px; letter-spacing:.16em; padding:5px 10px; border-radius:999px; border:none; box-shadow:var(--neo-shadow-raised-sm); color:var(--neo-text-muted); white-space:nowrap; }
.neo-scope.neo-viz .arm{ height:1px; margin:18px 0; background:linear-gradient(90deg,transparent,var(--neo-accent),transparent); opacity:.55; }
.neo-scope.neo-viz .grid2{ display:grid; grid-template-columns:1fr 372px; gap:22px; align-items:start; }
.neo-scope.neo-viz .lower{ display:grid; grid-template-columns:1fr 1fr; gap:20px; align-items:start; margin-top:22px; }
.neo-scope.neo-viz .stage{ position:relative; width:100%; background:radial-gradient(120% 120% at 50% 18%, #0f1426 0%, #060811 78%); border:none; border-radius:var(--neo-radius); box-shadow:var(--neo-shadow-inset); overflow:hidden; }
.neo-scope.neo-viz .stage canvas{ display:block; }
.neo-scope.neo-viz h3.lab{ font-family:'Space Grotesk'; font-size:11px; letter-spacing:.14em; color:var(--neo-text-muted); margin:0 0 10px; }
.neo-scope.neo-viz .side{ background:var(--neo-well); border:none; border-radius:var(--neo-radius); box-shadow:var(--neo-shadow-inset); padding:16px; }
.neo-scope.neo-viz .odo{ display:flex; align-items:baseline; gap:10px; padding:14px 16px; border-radius:var(--neo-radius); background:rgba(249,115,22,.06); border:1px solid rgba(249,115,22,.28); box-shadow:var(--neo-shadow-inset-sm); margin-bottom:4px; }
.neo-scope.neo-viz .odo .lab2{ font-family:'Space Grotesk'; font-size:10px; letter-spacing:.16em; color:var(--neo-accent); }
.neo-scope.neo-viz .odo .val{ font-family:'Space Grotesk'; font-weight:700; font-size:30px; color:var(--neo-accent); letter-spacing:.02em; margin-left:auto; }
.neo-scope.neo-viz .odo .tot{ font-family:ui-monospace,Menlo,monospace; font-size:12px; color:var(--neo-text-muted); }
.neo-scope.neo-viz .ctl{ margin:14px 0; }
.neo-scope.neo-viz .ctl label{ display:flex; justify-content:space-between; font-size:12px; color:var(--neo-text-muted); margin-bottom:6px; }
.neo-scope.neo-viz .ctl label b{ color:var(--neo-accent); font-weight:600; font-family:'Space Grotesk'; }
.neo-scope.neo-viz .ctl input[type=range]{ width:100%; accent-color:var(--neo-accent); height:3px; }
.neo-scope.neo-viz .btnrow{ display:flex; flex-wrap:wrap; gap:8px; margin-top:4px; }
.neo-scope.neo-viz .btnrow button{ background:var(--neo-well); border:1px solid var(--neo-border); color:var(--neo-text-muted); border-radius:var(--neo-radius-sm); padding:7px 11px; font-size:12px; cursor:pointer; font-family:inherit; box-shadow:var(--neo-shadow-raised-sm); transition:box-shadow .15s ease; }
.neo-scope.neo-viz .btnrow button:hover{ background:var(--neo-well); box-shadow:var(--neo-shadow-raised); }
.neo-scope.neo-viz .btnrow button.on{ background:rgba(249,115,22,.16); border-color:rgba(249,115,22,.5); color:var(--neo-accent); }
.neo-scope.neo-viz .toggles{ display:flex; flex-wrap:wrap; gap:7px; margin-top:10px; }
.neo-scope.neo-viz .toggles button{ background:var(--neo-well); border:none; color:var(--neo-text-muted); border-radius:var(--neo-radius-sm); padding:6px 10px; font-size:11.5px; cursor:pointer; font-family:'Space Grotesk'; letter-spacing:.02em; box-shadow:var(--neo-shadow-raised-sm); }
.neo-scope.neo-viz .toggles button.on{ color:var(--neo-text); border-color:var(--neo-border); background:var(--neo-well); }
.neo-scope.neo-viz .toggles button.on[data-key=integrand]{ border-color:var(--neo-border); color:var(--neo-text); }
.neo-scope.neo-viz .toggles button.on[data-key=chord]{ border-color:var(--neo-border); color:var(--neo-text); }
.neo-scope.neo-viz .toggles button.on[data-key=riemann]{ border-color:var(--neo-border); color:var(--neo-success); }
.neo-scope.neo-viz ol.walk{ margin:0; padding-left:0; list-style:none; counter-reset:s; }
.neo-scope.neo-viz ol.walk li{ counter-increment:s; position:relative; padding:0 0 12px 34px; color:var(--neo-text); font-size:13.5px; line-height:1.55; }
.neo-scope.neo-viz ol.walk li::before{ content:counter(s); position:absolute; left:0; top:-1px; width:23px; height:23px; border-radius:50%; background:rgba(249,115,22,.14); color:var(--neo-accent); font-family:'Space Grotesk'; font-weight:700; font-size:12px; display:flex; align-items:center; justify-content:center; border:1px solid rgba(249,115,22,.4); }
.neo-scope.neo-viz .aha{ padding:16px 18px; border-radius:var(--neo-radius); background:var(--neo-well); border:1px solid var(--neo-border); box-shadow:var(--neo-shadow-inset-sm); }
.neo-scope.neo-viz .aha .lab2{ font-family:'Space Grotesk'; font-size:10px; letter-spacing:.16em; color:var(--neo-text-muted); }
.neo-scope.neo-viz .aha .q{ font-style:italic; color:var(--neo-text); font-size:16.5px; margin-top:6px; line-height:1.55; }
.neo-scope.neo-viz .readout{ display:grid; grid-template-columns:1fr auto; gap:6px 10px; margin-top:6px; font-size:13px; }
.neo-scope.neo-viz .readout .k{ color:var(--neo-text-muted); }
.neo-scope.neo-viz .kx{ color:var(--neo-text); }
.neo-scope.neo-viz .legend{ display:flex; flex-wrap:wrap; gap:14px; margin-top:12px; font-size:12px; color:var(--neo-text-muted); }
.neo-scope.neo-viz .legend span{ display:inline-flex; align-items:center; gap:6px; }
.neo-scope.neo-viz .dot{ width:11px; height:11px; border-radius:50%; display:inline-block; }
.neo-scope.neo-viz .bar{ width:16px; height:3px; border-radius:2px; display:inline-block; }
.neo-scope.neo-viz .formula{ margin-top:10px; padding:12px 14px; border-radius:12px; background:var(--neo-well); border:1px solid var(--neo-border); font-size:14px; overflow-x:auto; }
.neo-scope.neo-viz .fnote{ color:var(--neo-text-muted); font-size:12px; line-height:1.6; margin-top:10px; }
.neo-scope.neo-viz .explain{ color:var(--neo-text); font-size:14px; line-height:1.65; max-width:940px; }
.neo-scope.neo-viz .explain p{ margin:10px 0; }
.neo-scope.neo-viz .explain b{ color:var(--neo-text); }
.neo-scope.neo-viz ::-webkit-scrollbar{ width:9px;height:9px }
.neo-scope.neo-viz ::-webkit-scrollbar-thumb{ background:var(--neo-border);border-radius:5px }
.neo-scope.neo-viz header p b{ color:var(--neo-text); font-weight:600; }
.neo-scope.neo-viz .chain{ display:flex; align-items:stretch; gap:0; flex-wrap:wrap; background:var(--neo-well); border:1px solid var(--neo-border); border-radius:14px; padding:14px 16px; margin:20px 0 6px; }
.neo-scope.neo-viz .chain .node{ display:flex; flex-direction:column; gap:2px; padding:6px 14px; }
.neo-scope.neo-viz .chain .node .nk{ font-family:'Space Grotesk'; font-size:9.5px; letter-spacing:.15em; color:var(--neo-text-muted); }
.neo-scope.neo-viz .chain .node .nv{ font-family:'Space Grotesk'; font-weight:700; font-size:15px; }
.neo-scope.neo-viz .chain .arrow{ align-self:center; color:#41507a; font-size:18px; padding:0 4px; }
.neo-scope.neo-viz .chain .n-osc .nv{ color:var(--viz-osc); }
.neo-scope.neo-viz .chain .n-env .nv{ color:var(--viz-env); }
.neo-scope.neo-viz .chain .n-filt .nv{ color:var(--viz-filt); }
.neo-scope.neo-viz .chain .n-fx .nv{ color:var(--viz-fx); }
.neo-scope.neo-viz .chain .n-out .nv{ color:var(--neo-success); }
.neo-scope.neo-viz .stage:last-child{ margin-bottom:0; }
.neo-scope.neo-viz .stage .cap2{ position:absolute; left:14px; top:11px; font-family:'Space Grotesk'; font-size:10px; letter-spacing:.14em; color:var(--neo-text-muted); pointer-events:none; }
.neo-scope.neo-viz .stage .cap2 b{ color:var(--neo-text); font-weight:600; }
.neo-scope.neo-viz .field{ margin-bottom:15px; }
.neo-scope.neo-viz .field > label{ display:block; font-family:'Space Grotesk'; font-size:10px; letter-spacing:.14em; color:var(--neo-text-muted); margin-bottom:8px; }
.neo-scope.neo-viz .sliderrow{ margin-bottom:14px; }
.neo-scope.neo-viz .sliderrow .lab2{ display:flex; justify-content:space-between; font-family:'Space Grotesk'; font-size:10px; letter-spacing:.13em; color:var(--neo-text-muted); margin-bottom:6px; }
.neo-scope.neo-viz .sliderrow .lab2 .v{ color:var(--neo-text-muted); font-family:ui-monospace,Menlo,monospace; letter-spacing:0; }
.neo-scope.neo-viz input[type=range]{ width:100%; accent-color:var(--neo-accent); }
.neo-scope.neo-viz .btn{ flex:1; min-width:90px; background:var(--neo-well); border:1px solid var(--neo-border); color:var(--neo-text); border-radius:10px; padding:10px 12px; font-size:12.5px; cursor:pointer; font-family:'Space Grotesk'; letter-spacing:.03em; transition:.15s; }
.neo-scope.neo-viz .btn:hover{ background:var(--neo-well); color:var(--neo-accent); border-color:var(--neo-border); }
.neo-scope.neo-viz .btn.on{ background:var(--neo-well); border-color:var(--neo-border); color:var(--neo-text); }
.neo-scope.neo-viz .btn.primary{ background:var(--neo-well); border-color:var(--neo-border); color:var(--neo-text-muted); }
.neo-scope.neo-viz .btn.primary:hover{ background:var(--neo-well); }
.neo-scope.neo-viz .seg{ display:flex; gap:0; border:none; border-radius:var(--neo-radius-sm); overflow:hidden; margin-top:2px; box-shadow:var(--neo-shadow-inset-sm); }
.neo-scope.neo-viz .seg button{ flex:1; background:var(--neo-well); border:none; border-right:1px solid var(--neo-border); color:var(--neo-text-muted); padding:9px 6px; font-size:11.5px; cursor:pointer; font-family:'Space Grotesk'; letter-spacing:.03em; }
.neo-scope.neo-viz .seg button:last-child{ border-right:none; }
.neo-scope.neo-viz .seg button.on{ background:var(--neo-well); color:var(--neo-accent); }
.neo-scope.neo-viz .seg.osc button.on{ background:var(--neo-well); color:var(--viz-osc); }
.neo-scope.neo-viz .seg.filt button.on{ background:var(--neo-well); color:var(--viz-filt); }
.neo-scope.neo-viz .readout .rk{ color:var(--neo-text-muted); }
.neo-scope.neo-viz .readout .rv{ text-align:right; font-family:ui-monospace,Menlo,monospace; color:var(--neo-text); }
.neo-scope.neo-viz .steps{ display:grid; gap:12px; }
.neo-scope.neo-viz .step{ display:flex; gap:14px; align-items:flex-start; }
.neo-scope.neo-viz .step .n{ flex:none; width:30px; height:30px; border-radius:50%; display:grid; place-items:center; font-family:'Space Grotesk'; font-weight:700; font-size:14px; color:var(--neo-accent); background:var(--neo-well); border:1px solid var(--neo-border); }
.neo-scope.neo-viz .step .t{ font-size:14.5px; line-height:1.55; color:var(--neo-text); }
.neo-scope.neo-viz .step .t b{ color:var(--neo-text); }
.neo-scope.neo-viz .prose{ color:var(--neo-text); font-size:14.5px; line-height:1.72; }
.neo-scope.neo-viz .prose p{ margin:0 0 13px; }
.neo-scope.neo-viz .prose b{ color:var(--neo-text); font-weight:600; }
.neo-scope.neo-viz .prose .em{ color:var(--neo-text-muted); }
.neo-scope.neo-viz .cols{ display:grid; grid-template-columns:1fr 1fr; gap:22px; }
.neo-scope.neo-viz .note{ background:var(--neo-well); border:none; border-radius:var(--neo-radius); box-shadow:var(--neo-shadow-inset); padding:16px 18px; }
.neo-scope.neo-viz .note .f{ background:var(--neo-well); border:1px solid var(--neo-border); border-radius:10px; padding:12px 14px; margin:10px 0; overflow-x:auto; }
.neo-scope.neo-viz .note .cap{ color:var(--neo-text-muted); font-size:12.5px; letter-spacing:.02em; }
.neo-scope.neo-viz .ref{ font-size:13px; color:var(--neo-text-muted); line-height:1.6; }
.neo-scope.neo-viz .ref b{ color:var(--neo-text); }
.neo-scope.neo-viz .pill{ display:inline-block; font-family:ui-monospace,Menlo,monospace; font-size:11.5px; padding:2px 7px; border-radius:6px; background:var(--neo-well); border:1px solid var(--neo-border); color:var(--neo-text-muted); }
.neo-scope.neo-viz .leg{ display:flex; gap:16px; flex-wrap:wrap; margin:6px 0 0; font-size:12.5px; color:var(--neo-text-muted); }
.neo-scope.neo-viz .leg span{ display:inline-flex; align-items:center; gap:6px; }
.neo-scope.neo-viz .leg i{ width:14px; height:3px; border-radius:2px; display:inline-block; }
.neo-scope.neo-viz .foot{ text-align:center; color:var(--neo-text-muted); font-size:12px; padding:8px 0 30px; }
.neo-scope.neo-viz .kbwrap{ margin-top:4px; }
.neo-scope.neo-viz .keyboard{ position:relative; width:100%; height:132px; user-select:none; -webkit-user-select:none; }
.neo-scope.neo-viz .wkey{ position:absolute; bottom:0; background:linear-gradient(#f2f5ff,#c9d2e6); border:1px solid #2a3352; border-radius:0 0 7px 7px; box-shadow:inset 0 -6px 10px rgba(120,130,160,.35); cursor:pointer; }
.neo-scope.neo-viz .wkey.down{ background:linear-gradient(#9fe9df,#4be0d4); box-shadow:inset 0 -3px 8px rgba(20,60,60,.4); }
.neo-scope.neo-viz .bkey{ position:absolute; top:0; background:linear-gradient(#2a3150,#0b0f1e); border:1px solid #05070f; border-radius:0 0 6px 6px; z-index:3; cursor:pointer; box-shadow:inset 0 -5px 8px rgba(0,0,0,.5); }
.neo-scope.neo-viz .bkey.down{ background:linear-gradient(#3aa79d,#1f6b64); }
.neo-scope.neo-viz .wkey .lbl{ position:absolute; bottom:8px; left:0; right:0; text-align:center; font-family:'Space Grotesk'; font-size:10px; color:#6b7591; pointer-events:none; }
.neo-scope.neo-viz .startgate{ position:absolute; inset:0; background:rgba(6,8,17,.86); backdrop-filter:blur(3px); display:grid; place-items:center; z-index:9; border-radius:16px; cursor:pointer; }
.neo-scope.neo-viz .startgate .inner{ text-align:center; }
.neo-scope.neo-viz .startgate .big{ font-family:'Space Grotesk'; font-weight:700; font-size:20px; color:var(--neo-text-muted); }
.neo-scope.neo-viz .startgate .sub{ color:var(--neo-text-muted); font-size:13px; margin-top:6px; }
.neo-scope.neo-viz .hintline{ font-size:12px; color:var(--neo-text-muted); margin-top:10px; text-align:center; }
.neo-scope.neo-viz .modebar{ display:flex; gap:8px; margin:2px 0 18px; flex-wrap:wrap; }
.neo-scope.neo-viz .modebar button{ background:var(--neo-well); border:none; color:var(--neo-text-muted); border-radius:var(--neo-radius-sm); padding:9px 16px; font-size:13px; cursor:pointer; font-family:'Space Grotesk'; letter-spacing:.03em; box-shadow:var(--neo-shadow-raised-sm); }
.neo-scope.neo-viz .modebar button.on{ background:var(--neo-well); border-color:var(--neo-border); color:var(--neo-accent); }
.neo-scope.neo-viz .stage svg{ display:block; width:100%; height:auto; touch-action:none; }
.neo-scope.neo-viz .clock{ display:flex; align-items:baseline; gap:10px; padding:14px 16px; border-radius:var(--neo-radius); background:var(--neo-well); border:1px solid var(--neo-border); box-shadow:var(--neo-shadow-inset-sm); margin-bottom:6px; }
.neo-scope.neo-viz .clock .lab2{ font-family:'Space Grotesk'; font-size:10px; letter-spacing:.16em; color:var(--neo-text-muted); }
.neo-scope.neo-viz .clock .val{ font-family:'Space Grotesk'; font-weight:700; font-size:26px; color:var(--neo-text-muted); letter-spacing:.02em; margin-left:auto; }
.neo-scope.neo-viz .clock .tot{ font-family:ui-monospace,Menlo,monospace; font-size:11.5px; color:var(--neo-text-muted); }
.neo-scope.neo-viz ol.walk li b{ color:var(--neo-text); }
.neo-scope.neo-viz .readout .kx{ color:var(--neo-text); }
.neo-scope.neo-viz .readout .row{ display:flex; justify-content:space-between; gap:12px; }
.neo-scope.neo-viz .fnote b{ color:#b9c6d6; }
.neo-scope.neo-viz .explain em{ color:var(--neo-text-muted); font-style:normal; }
/* The rail sits above the book (the .wrap side-rail grid never ships), so a
   sticky nav pins over the card and the page scrolls underneath it. Let the
   nav flow with the page. */
.neo-scope.neo-viz nav{ position:static; max-height:none; overflow:visible; padding-right:4px; }
.neo-scope.neo-viz .facepill{ font-family:'Space Grotesk'; font-size:10px; letter-spacing:.16em; color:#6b6b6b; margin:14px 6px 6px; }
.neo-scope.neo-viz .tab{ display:flex; gap:11px; align-items:center; width:100%; text-align:left; background:transparent; border:1px solid transparent; color:var(--neo-text-muted); padding:9px 11px; border-radius:12px; cursor:pointer; font-family:inherit; font-size:13px; transition:.15s; }
.neo-scope.neo-viz .tab:hover{ border-color:var(--neo-border); }
.neo-scope.neo-viz .tab.active{ background:var(--neo-surface); border-color:var(--neo-accent); color:var(--neo-text); }
.neo-scope.neo-viz .tab .n{ font-family:'Space Grotesk'; font-weight:700; color:var(--neo-accent); min-width:22px; }
.neo-scope.neo-viz .tab.active .n{ color:var(--neo-accent); }
.neo-scope.neo-viz .book{ min-width:0; }
.neo-scope.neo-viz .stagewrap{  }
.neo-scope.neo-viz .steps h3, .neo-scope.neo-viz .side h3{ font-family:'Space Grotesk'; font-size:11px; letter-spacing:.14em; color:var(--neo-text-muted); margin:0 0 8px; }
.neo-scope.neo-viz .controls{ margin-top:2px; }
.neo-scope.neo-viz .ctl.toggle button{ width:100%; background:var(--neo-well); border:1px solid var(--neo-border); color:var(--neo-text-muted); border-radius:9px; padding:8px; font-size:12px; cursor:pointer; font-family:inherit; letter-spacing:.03em; }
.neo-scope.neo-viz .ctl.toggle button.on{ background:rgba(249,115,22,.16); border-color:rgba(249,115,22,.5); color:var(--neo-accent); }
.neo-scope.neo-viz .aha .lab{ font-family:'Space Grotesk'; font-size:10px; letter-spacing:.16em; color:var(--neo-accent); }
.neo-scope.neo-viz .navbtns{ display:flex; justify-content:space-between; margin-top:22px; }
.neo-scope.neo-viz .navbtns button{ background:var(--neo-well); border:1px solid var(--neo-border); color:var(--neo-text); border-radius:11px; padding:9px 16px; cursor:pointer; font-family:inherit; font-size:13px; }
.neo-scope.neo-viz .navbtns button:hover{ border-color:var(--neo-accent); }
.neo-scope.neo-viz .navbtns button:disabled{ opacity:.35; cursor:default; }
.neo-scope.neo-viz .ctl input[type=number]{ width:100%; background:#0c131b; border:1px solid var(--neo-border); color:var(--neo-text); border-radius:9px; padding:8px 10px; font-family:ui-monospace,Menlo,monospace; font-size:13px; }
.neo-scope.neo-viz .actbtn{ width:100%; margin-top:12px; background:var(--neo-well); border:1px solid var(--neo-border); color:var(--neo-text-muted); border-radius:10px; padding:11px; font-size:13px; cursor:pointer; font-family:'Space Grotesk'; letter-spacing:.03em; }
.neo-scope.neo-viz .actbtn:hover{ background:var(--neo-well); }
.neo-scope.neo-viz .seqbox{ margin-top:12px; padding:12px 14px; border-radius:12px; background:var(--neo-well); border:1px solid var(--neo-border); font-family:ui-monospace,Menlo,monospace; font-size:12.5px; color:var(--neo-text); line-height:1.9; word-break:break-word; }
.neo-scope.neo-viz .seqbox b{ color:var(--neo-accent); }
.neo-scope.neo-viz .hovertag{ position:absolute; left:14px; top:14px; background:rgba(7,9,18,.82); border:1px solid var(--neo-border); border-radius:10px; padding:9px 12px; font-family:ui-monospace,Menlo,monospace; font-size:11.5px; color:#cfe0ea; line-height:1.65; pointer-events:none; backdrop-filter:blur(3px); }
.neo-scope.neo-viz .hovertag .k{ color:var(--neo-text-muted); }
.neo-scope.neo-viz .hovertag .z{ color:var(--neo-text-muted); }
.neo-scope.neo-viz .hovertag .w{ color:var(--neo-text-muted); }
.neo-scope.neo-viz .hovertag .cls{ color:var(--neo-text-muted); font-family:'Space Grotesk'; }
.neo-scope.neo-viz .field label{ display:block; font-family:'Space Grotesk'; font-size:10px; letter-spacing:.14em; color:var(--neo-text-muted); margin-bottom:7px; }
.neo-scope.neo-viz .fz{ display:flex; gap:8px; align-items:center; }
.neo-scope.neo-viz .fz .eq{ font-family:ui-monospace,Menlo,monospace; color:var(--neo-text-muted); font-size:15px; }
.neo-scope.neo-viz input#expr{ flex:1; background:var(--neo-well); border:1px solid var(--neo-border); color:var(--neo-text); border-radius:10px; padding:10px 12px; font-family:ui-monospace,Menlo,monospace; font-size:14px; }
.neo-scope.neo-viz input#expr:focus{ outline:none; border-color:var(--neo-border); }
.neo-scope.neo-viz input#expr.err{ border-color:var(--neo-danger); }
.neo-scope.neo-viz .errmsg{ color:var(--neo-danger); font-size:11.5px; margin-top:6px; min-height:14px; font-family:ui-monospace,Menlo,monospace; }
.neo-scope.neo-viz .presets{ display:flex; flex-wrap:wrap; gap:7px; }
.neo-scope.neo-viz .presets button{ background:var(--neo-well); border:1px solid var(--neo-border); color:var(--neo-text-muted); border-radius:8px; padding:6px 10px; font-size:11.5px; cursor:pointer; font-family:ui-monospace,Menlo,monospace; }
.neo-scope.neo-viz .presets button:hover{ background:var(--neo-well); color:var(--neo-accent); }
.neo-scope.neo-viz .togrow{ display:flex; flex-wrap:wrap; gap:8px; margin-top:4px; }
.neo-scope.neo-viz .tog{ display:flex; align-items:center; gap:7px; font-size:12.5px; color:var(--neo-text); background:var(--neo-well); border:1px solid var(--neo-border); border-radius:9px; padding:7px 10px; cursor:pointer; }
.neo-scope.neo-viz .tog input{ accent-color:var(--neo-text-muted); }
.neo-scope.neo-viz .btnrow button.play{ color:var(--neo-success); border-color:var(--neo-border); }
.neo-scope.neo-viz .tabs{ display:flex; gap:10px; flex-wrap:wrap; margin:22px 0 8px; }
.neo-scope.neo-viz .tab .tk{ font-family:'Space Grotesk'; font-size:10px; letter-spacing:.14em; color:var(--neo-text-muted); }
.neo-scope.neo-viz .tab .tt{ font-family:'Space Grotesk'; font-weight:700; font-size:15.5px; margin-top:4px; }
.neo-scope.neo-viz .tab .td{ font-size:11.5px; color:var(--neo-text-muted); margin-top:3px; line-height:1.4; }
.neo-scope.neo-viz .tab.on{ background:var(--neo-surface); }
.neo-scope.neo-viz .tab.pow.on{ border-color:var(--viz-pow); box-shadow:0 0 0 1px var(--viz-pow),0 8px 30px rgba(246,199,80,.12); }
.neo-scope.neo-viz .tab.pow.on .tt{ color:var(--viz-pow); }
.neo-scope.neo-viz .tab.pos.on{ border-color:var(--viz-pos); box-shadow:0 0 0 1px var(--viz-pos),0 8px 30px rgba(75,224,212,.12); }
.neo-scope.neo-viz .tab.pos.on .tt{ color:var(--viz-pos); }
.neo-scope.neo-viz .tab.bft.on{ border-color:var(--viz-bft); box-shadow:0 0 0 1px var(--viz-bft),0 8px 30px rgba(197,139,255,.12); }
.neo-scope.neo-viz .tab.bft.on .tt{ color:var(--viz-bft); }
.neo-scope.neo-viz .tabpanel{ display:none; }
.neo-scope.neo-viz .tabpanel.on{ display:block; }
.neo-scope.neo-viz .stage canvas, .neo-scope.neo-viz .stage svg{ display:block; width:100%; height:auto; touch-action:none; }
.neo-scope.neo-viz .ledger{ position:absolute; left:14px; bottom:14px; right:14px; background:rgba(7,9,18,.84); border:1px solid var(--neo-border); border-radius:10px; padding:11px 13px; font-size:13px; color:var(--neo-text); line-height:1.5; pointer-events:none; backdrop-filter:blur(3px); display:flex; align-items:center; justify-content:center; gap:9px; flex-wrap:wrap; font-family:'Space Grotesk'; text-align:center; }
.neo-scope.neo-viz .ledger .big{ font-size:16px; font-weight:700; }
.neo-scope.neo-viz .ledger .ok{ color:var(--neo-success); }
.neo-scope.neo-viz .ledger .warn{ color:var(--neo-text-muted); }
.neo-scope.neo-viz .ledger .no{ color:var(--neo-danger); }
.neo-scope.neo-viz .cards{ display:grid; grid-template-columns:repeat(3,1fr); gap:9px; margin-top:12px; }
.neo-scope.neo-viz .card{ background:var(--neo-well); border:none; border-radius:var(--neo-radius-sm); padding:11px 8px; text-align:center; box-shadow:var(--neo-shadow-raised-sm); }
.neo-scope.neo-viz .card .lab{ font-family:'Space Grotesk'; font-size:9.5px; letter-spacing:.13em; color:var(--neo-text-muted); }
.neo-scope.neo-viz .card .num{ font-family:'Space Grotesk'; font-weight:700; font-size:22px; line-height:1.1; margin-top:3px; }
.neo-scope.neo-viz .card .sub{ font-size:10px; color:var(--neo-text-muted); margin-top:2px; }
.neo-scope.neo-viz .eqbox{ margin-top:12px; padding:13px; border-radius:12px; background:var(--neo-well); border:1px solid var(--neo-border); text-align:center; font-size:15px; overflow-x:auto; }
.neo-scope.neo-viz .hint{ font-size:11.5px; color:var(--neo-text-muted); margin-top:10px; line-height:1.5; }
.neo-scope.neo-viz .roster{ display:grid; gap:7px; margin-top:6px; }
.neo-scope.neo-viz .rrow{ display:flex; align-items:center; gap:9px; background:var(--neo-well); border:1px solid var(--neo-border); border-radius:10px; padding:7px 10px; cursor:pointer; transition:.14s; }
.neo-scope.neo-viz .rrow:hover{ border-color:var(--neo-border); }
.neo-scope.neo-viz .rrow .dot{ width:11px; height:11px; border-radius:50%; flex:none; }
.neo-scope.neo-viz .rrow .nm{ font-family:'Space Grotesk'; font-size:12.5px; font-weight:600; flex:none; width:58px; }
.neo-scope.neo-viz .rrow .bar{ flex:1; height:9px; border-radius:6px; background:#161c30; overflow:hidden; }
.neo-scope.neo-viz .rrow .bar > i{ display:block; height:100%; border-radius:6px; }
.neo-scope.neo-viz .rrow .tag{ font-family:'Space Grotesk'; font-size:9.5px; letter-spacing:.1em; padding:2px 7px; border-radius:6px; border:1px solid var(--neo-border); color:var(--neo-text-muted); white-space:nowrap; }
.neo-scope.neo-viz .rrow .tag.bad{ color:var(--neo-danger); border-color:rgba(255,122,138,.4); background:rgba(255,122,138,.08); }
.neo-scope.neo-viz .rrow .tag.off{ color:var(--neo-text-muted); border-color:var(--neo-border); background:var(--neo-well); }
.neo-scope.neo-viz .chainrow{ display:flex; gap:6px; flex-wrap:wrap; margin-top:8px; }
.neo-scope.neo-viz .blk{ font-family:ui-monospace,Menlo,monospace; font-size:10.5px; padding:5px 8px; border-radius:8px; border:1px solid var(--neo-border); background:var(--neo-well); }
.neo-scope.neo-viz code.mono{ font-family:ui-monospace,Menlo,monospace; font-size:12px; color:var(--neo-text-muted); }
.neo-scope.neo-viz text{ font-family:'Space Grotesk','Inter',sans-serif; }
.neo-scope.neo-viz .numin{ display:flex; gap:8px; align-items:center; }
.neo-scope.neo-viz .numin input[type=text]{ flex:1; background:var(--neo-well); border:1px solid var(--neo-border); color:var(--neo-accent); border-radius:9px; padding:9px 11px; font-family:ui-monospace,Menlo,monospace; font-size:14px; }
.neo-scope.neo-viz .numin input[type=text]:focus{ outline:none; border-color:var(--neo-border); }
.neo-scope.neo-viz .toggles button.on[data-key=spiral]{ border-color:var(--neo-border); color:var(--neo-accent); }
.neo-scope.neo-viz .toggles button.on[data-key=labels]{ border-color:var(--neo-border); color:var(--neo-text); }
.neo-scope.neo-viz .toggles button.on[data-key=arcs]{ border-color:var(--neo-border); color:var(--neo-text); }
.neo-scope.neo-viz .cf{ margin-top:12px; padding:12px 14px; border-radius:12px; background:var(--neo-well); border:1px solid var(--neo-border); font-size:15px; overflow-x:auto; text-align:center; }
.neo-scope.neo-viz .tbl{ width:100%; border-collapse:collapse; margin-top:6px; font-family:ui-monospace,Menlo,monospace; font-size:12px; }
.neo-scope.neo-viz .tbl th{ color:var(--neo-text-muted); font-weight:500; text-align:right; padding:5px 8px; border-bottom:1px solid var(--neo-border); font-family:'Space Grotesk'; letter-spacing:.04em; }
.neo-scope.neo-viz .tbl td{ text-align:right; padding:4px 8px; border-bottom:1px solid #191919; color:var(--neo-text); }
.neo-scope.neo-viz .tbl td.frac{ color:var(--neo-accent); }
.neo-scope.neo-viz .tbl tr:last-child td{ background:var(--neo-well); }
.neo-scope.neo-viz .tab.pid.on{ border-color:var(--viz-pid); box-shadow:0 0 0 1px var(--viz-pid),0 8px 30px rgba(246,199,80,.12); }
.neo-scope.neo-viz .tab.pid.on .tt{ color:var(--viz-pid); }
.neo-scope.neo-viz .tab.mpc.on{ border-color:var(--viz-mpc); box-shadow:0 0 0 1px var(--viz-mpc),0 8px 30px rgba(75,224,212,.12); }
.neo-scope.neo-viz .tab.mpc.on .tt{ color:var(--viz-mpc); }
.neo-scope.neo-viz .tab.nlc.on{ border-color:var(--viz-nlc); box-shadow:0 0 0 1px var(--viz-nlc),0 8px 30px rgba(197,139,255,.12); }
.neo-scope.neo-viz .tab.nlc.on .tt{ color:var(--viz-nlc); }
.neo-scope.neo-viz .tab.traj.on{ border-color:var(--viz-traj); box-shadow:0 0 0 1px var(--viz-traj),0 8px 30px rgba(94,227,161,.12); }
.neo-scope.neo-viz .tab.traj.on .tt{ color:var(--viz-traj); }
.neo-scope.neo-viz .tab.wbc.on{ border-color:var(--viz-wbc); box-shadow:0 0 0 1px var(--viz-wbc),0 8px 30px rgba(138,160,255,.12); }
.neo-scope.neo-viz .tab.wbc.on .tt{ color:var(--viz-wbc); }
.neo-scope.neo-viz .sliderrow.dim{ opacity:.4; }
.neo-scope.neo-viz .seg .btn{ min-width:0; }
.neo-scope.neo-viz select{ width:100%; background:var(--neo-well); border:1px solid var(--neo-border); color:var(--neo-text); border-radius:10px; padding:9px 10px; font-family:'Space Grotesk'; font-size:13px; }
.neo-scope.neo-viz .rulebox{ display:grid; grid-template-columns:repeat(2,1fr); gap:9px; margin-top:6px; }
.neo-scope.neo-viz .rule{ background:var(--neo-well); border:1px solid var(--neo-border); border-radius:10px; padding:9px 11px; font-size:11.5px; line-height:1.45; color:#b9c4d6; }
.neo-scope.neo-viz .rule b{ color:var(--neo-text-muted); }
.neo-scope.neo-viz .hovertag .v{ color:var(--neo-text-muted); }
.neo-scope.neo-viz .hovertag .r{ color:var(--neo-text-muted); font-family:'Space Grotesk'; }
.neo-scope.neo-viz .statusbar{ position:absolute; left:14px; bottom:14px; right:14px; background:rgba(7,9,18,.82); border:1px solid var(--neo-border); border-radius:10px; padding:9px 13px; font-size:12.5px; color:var(--neo-text); line-height:1.5; pointer-events:none; backdrop-filter:blur(3px); }
.neo-scope.neo-viz .statusbar b{ color:var(--neo-text-muted); font-family:'Space Grotesk'; }
.neo-scope.neo-viz .matgrid{ display:grid; grid-template-columns:1fr 1fr; gap:12px; }
.neo-scope.neo-viz .chipbtn{ background:var(--neo-well); border:1px solid var(--neo-border); color:var(--neo-text); border-radius:999px; padding:6px 11px; font-size:11.5px; cursor:pointer; font-family:'Space Grotesk'; letter-spacing:.03em; transition:.15s; }
.neo-scope.neo-viz .chipbtn:hover{ background:var(--neo-well); color:var(--neo-text); border-color:var(--neo-border); }
.neo-scope.neo-viz .readout .rv.hot{ color:var(--neo-text-muted); }
.neo-scope.neo-viz .readout .rv.re{ color:var(--neo-text-muted); }
.neo-scope.neo-viz .warn{ margin-top:10px; padding:9px 11px; border-radius:10px; font-size:12.5px; line-height:1.5; background:var(--neo-well); border:1px solid var(--neo-border); color:var(--neo-text-muted); display:none; }
.neo-scope.neo-viz .warn.show{ display:block; }
.neo-scope.neo-viz .legend i{ width:16px; height:3px; border-radius:2px; display:inline-block; }
.neo-scope.neo-viz .plot{ position:relative; width:100%; margin-top:14px; background:var(--neo-well); border:1px solid var(--neo-border); border-radius:16px; padding:8px; }
.neo-scope.neo-viz .plot canvas{ display:block; width:100% !important; height:auto !important; border-radius:10px; }
.neo-scope.neo-viz .qlog{ font-family:ui-monospace,Menlo,monospace; font-size:12px; color:var(--neo-text); margin-top:12px; line-height:1.7; min-height:64px; }
.neo-scope.neo-viz .qlog .yes{ color:var(--neo-success); }
.neo-scope.neo-viz .qlog .no{ color:var(--neo-danger); }
.neo-scope.neo-viz .qlog .hit{ color:var(--neo-text-muted); }
.neo-scope.neo-viz .fnrow{ display:flex; flex-wrap:wrap; gap:7px; margin-top:4px; }
.neo-scope.neo-viz .fnrow button{ background:var(--neo-well); border:1px solid var(--neo-border); color:var(--neo-text-muted); border-radius:9px; padding:7px 10px; font-size:12px; cursor:pointer; font-family:inherit; }
.neo-scope.neo-viz .fnrow button.on{ background:rgba(249,115,22,.16); border-color:rgba(249,115,22,.5); color:var(--neo-accent); }
.neo-scope.neo-viz .verdict{ margin-top:12px; padding:12px 14px; border-radius:var(--neo-radius-sm); font-family:'Space Grotesk'; font-size:14px; border:1px solid var(--neo-border); box-shadow:var(--neo-shadow-inset-sm); }
.neo-scope.neo-viz .verdict.win{ background:rgba(74,222,128,.08); border-color:rgba(74,222,128,.4); color:var(--neo-success); }
.neo-scope.neo-viz .verdict.lose{ background:rgba(248,113,113,.08); border-color:rgba(248,113,113,.4); color:var(--neo-danger); }
.neo-scope.neo-viz .hovertag .nm{ color:var(--neo-text-muted); font-family:'Space Grotesk'; letter-spacing:.02em; }
.neo-scope.neo-viz .ledger .v{ color:var(--viz-vcol); font-weight:700; }
.neo-scope.neo-viz .ledger .e{ color:var(--viz-ecol); font-weight:700; }
.neo-scope.neo-viz .ledger .f{ color:var(--viz-fcol); font-weight:700; }
.neo-scope.neo-viz .ledger .op{ color:var(--neo-text-muted); }
.neo-scope.neo-viz .ledger .chi{ color:var(--neo-text-muted); font-weight:700; font-size:15px; }
.neo-scope.neo-viz .ledger .chi.zero{ color:var(--neo-danger); text-shadow:0 0 14px rgba(255,122,138,.5); }
.neo-scope.neo-viz .card.vc .num{ color:var(--viz-vcol); }
.neo-scope.neo-viz .card.ec .num{ color:var(--viz-ecol); }
.neo-scope.neo-viz .card.fc .num{ color:var(--viz-fcol); }
.neo-scope.neo-viz table.tbl{ width:100%; border-collapse:collapse; font-size:12.5px; margin-top:6px; }
.neo-scope.neo-viz table.tbl th, .neo-scope.neo-viz table.tbl td{ border:1px solid var(--neo-border); padding:6px 8px; text-align:center; }
.neo-scope.neo-viz table.tbl th{ font-family:'Space Grotesk'; color:var(--neo-text-muted); font-weight:600; letter-spacing:.04em; font-size:11px; }
.neo-scope.neo-viz table.tbl td.name{ text-align:left; color:#dbe4f0; }
.neo-scope.neo-viz .txtrow{ display:flex; gap:7px; margin-top:10px; }
.neo-scope.neo-viz .txtrow input[type=text]{ flex:1; background:var(--neo-well); border:1px solid var(--neo-border); color:var(--neo-text); border-radius:9px; padding:8px 10px; font-family:inherit; font-size:13px; }
.neo-scope.neo-viz .txtrow input[type=text]:focus{ outline:none; border-color:var(--neo-border); }
.neo-scope.neo-viz .txtrow button{ background:rgba(249,115,22,.16); border:1px solid rgba(249,115,22,.5); color:var(--neo-accent); border-radius:9px; padding:8px 12px; font-size:12px; cursor:pointer; font-family:inherit; }
.neo-scope.neo-viz .research{ margin-top:14px; padding:14px 16px; border-radius:12px; background:var(--neo-well); border:1px solid var(--neo-border); }
.neo-scope.neo-viz .research .lab2{ font-family:'Space Grotesk'; font-size:10px; letter-spacing:.16em; color:var(--neo-text-muted); }
.neo-scope.neo-viz .research .body{ color:#cfe6ef; font-size:13px; margin-top:8px; line-height:1.7; }
.neo-scope.neo-viz .chipbtn.on{ background:var(--neo-well); color:var(--neo-text); border-color:var(--neo-border); }
.neo-scope.neo-viz .meter{ margin-top:12px; }
.neo-scope.neo-viz .meter .track{ position:relative; height:26px; border-radius:8px; background:var(--neo-well); border:1px solid var(--neo-border); overflow:hidden; }
.neo-scope.neo-viz .meter .fill{ position:absolute; left:0; top:0; bottom:0; width:40%; background:linear-gradient(90deg,rgba(94,227,161,.5),rgba(75,224,212,.6)); }
.neo-scope.neo-viz .meter .bound{ position:absolute; top:-3px; bottom:-3px; width:2px; background:var(--neo-well); }
.neo-scope.neo-viz .meter .cap{ display:flex; justify-content:space-between; font-size:11px; color:var(--neo-text-muted); margin-top:6px; font-family:'Space Grotesk'; letter-spacing:.04em; }
.neo-scope.neo-viz .tab.pyth.on{ border-color:var(--viz-pyth); box-shadow:0 0 0 1px var(--viz-pyth),0 8px 30px rgba(246,199,80,.12); }
.neo-scope.neo-viz .tab.pyth.on .tt{ color:var(--viz-pyth); }
.neo-scope.neo-viz .tab.odds.on{ border-color:var(--viz-odds); box-shadow:0 0 0 1px var(--viz-odds),0 8px 30px rgba(75,224,212,.12); }
.neo-scope.neo-viz .tab.odds.on .tt{ color:var(--viz-odds); }
.neo-scope.neo-viz .tab.gauss.on{ border-color:var(--viz-gauss); box-shadow:0 0 0 1px var(--viz-gauss),0 8px 30px rgba(138,160,255,.12); }
.neo-scope.neo-viz .tab.gauss.on .tt{ color:var(--viz-gauss); }
.neo-scope.neo-viz .tab.geo.on{ border-color:var(--viz-geo); box-shadow:0 0 0 1px var(--viz-geo),0 8px 30px rgba(197,139,255,.12); }
.neo-scope.neo-viz .tab.geo.on .tt{ color:var(--viz-geo); }
.neo-scope.neo-viz .tab.amgm.on{ border-color:var(--viz-amgm); box-shadow:0 0 0 1px var(--viz-amgm),0 8px 30px rgba(94,227,161,.12); }
.neo-scope.neo-viz .tab.amgm.on .tt{ color:var(--viz-amgm); }
.neo-scope.neo-viz #stageCanvas{ display:block; width:100%; height:560px; touch-action:none; cursor:grab; }
.neo-scope.neo-viz .modetabs{ position:absolute; top:14px; left:14px; display:flex; gap:7px; }
.neo-scope.neo-viz .modetab{ background:rgba(8,6,4,.7); border:1px solid var(--neo-border); color:#c3b596; border-radius:999px; padding:7px 14px; font-size:12px; cursor:pointer; font-family:'Space Grotesk'; letter-spacing:.06em; transition:.15s; backdrop-filter:blur(3px); }
.neo-scope.neo-viz .modetab:hover{ color:var(--neo-accent); border-color:var(--neo-border); }
.neo-scope.neo-viz .modetab.on{ background:var(--neo-well); color:var(--neo-accent); border-color:var(--neo-border); }
.neo-scope.neo-viz .readout .rv.force{ color:var(--viz-force); }
.neo-scope.neo-viz .readout .rv.speed{ color:var(--viz-speed); }
.neo-scope.neo-viz .readout .rv.work{ color:var(--viz-work); }
.neo-scope.neo-viz .readout .rv.big{ font-size:15px; font-weight:600; }
.neo-scope.neo-viz .bar > i{ display:block; height:100%; }
.neo-scope.neo-viz .glow{ text-shadow:0 0 24px rgba(249,115,22,0.35); }
.neo-scope.neo-viz .card:hover{ transform:translateY(-4px); border-color:var(--neo-accent); box-shadow:0 24px 48px -24px rgba(249,115,22,0.4); }
.neo-scope.neo-viz .chip{ font-family:'Space Grotesk',sans-serif; }
.neo-scope.neo-viz .num{ font-family:'Space Grotesk',sans-serif; }
.neo-scope.neo-viz a.tag{ transition:color .15s }
.neo-scope.neo-viz a.tag:hover{ color:var(--neo-accent) }
.neo-scope.neo-viz .stage .tip{ position:absolute; pointer-events:none; z-index:5; background:rgba(15,15,15,.95); border:1px solid var(--neo-border); color:var(--neo-text); font-family:ui-monospace,SFMono-Regular,Menlo,monospace; font-size:12px; padding:3px 7px; border-radius:7px; white-space:nowrap; box-shadow:0 4px 14px rgba(0,0,0,.4); }
.neo-scope.neo-viz .statusbar b.good{ color:var(--neo-success); }
.neo-scope.neo-viz .statusbar b.bad{ color:var(--neo-danger); }
.neo-scope.neo-viz .segrow{ display:flex; gap:7px; margin-top:8px; }
.neo-scope.neo-viz .seg.on{ background:var(--neo-well); color:var(--neo-accent); border-color:var(--neo-border); }
.neo-scope.neo-viz .tab.brg.on{ border-color:var(--viz-brg); box-shadow:0 0 0 1px var(--viz-brg),0 8px 30px rgba(246,199,80,.12); }
.neo-scope.neo-viz .tab.brg.on .tt{ color:var(--viz-brg); }
.neo-scope.neo-viz .tab.col.on{ border-color:var(--viz-col); box-shadow:0 0 0 1px var(--viz-col),0 8px 30px rgba(75,224,212,.12); }
.neo-scope.neo-viz .tab.col.on .tt{ color:var(--viz-col); }
.neo-scope.neo-viz .tab.four.on{ border-color:var(--viz-four); box-shadow:0 0 0 1px var(--viz-four),0 8px 30px rgba(94,227,161,.12); }
.neo-scope.neo-viz .tab.four.on .tt{ color:var(--viz-four); }
.neo-scope.neo-viz .swatches{ display:flex; gap:8px; margin-top:6px; }
.neo-scope.neo-viz .sw{ flex:1; height:26px; border-radius:8px; border:1px solid var(--neo-border); opacity:.35; transition:.15s; }
.neo-scope.neo-viz .sw.live{ opacity:1; box-shadow:0 0 0 1px rgba(255,255,255,.15); }
.neo-scope.neo-viz .vtx{ cursor:pointer; }
.neo-scope.neo-viz .edge{ cursor:pointer; }
.neo-scope.neo-viz .region{ cursor:pointer; transition:fill .15s; }
.neo-scope.neo-viz .grouppick{ display:flex; gap:8px; margin:0 0 18px; flex-wrap:wrap; align-items:center; }
.neo-scope.neo-viz .grouppick .lbl{ font-family:'Space Grotesk'; font-size:11px; letter-spacing:.14em; color:var(--neo-text-muted); margin-right:4px; }
.neo-scope.neo-viz .grouppick button{ background:var(--neo-well); border:1px solid var(--neo-border); color:var(--neo-text-muted); border-radius:9px; padding:7px 14px; font-size:12.5px; cursor:pointer; font-family:'Space Grotesk'; }
.neo-scope.neo-viz .grouppick button.on{ background:var(--neo-well); border-color:var(--neo-border); color:var(--neo-text); }
.neo-scope.neo-viz .word{ font-family:'Space Grotesk'; font-size:15px; color:var(--neo-text); margin:12px 0 4px; min-height:22px; word-break:break-word; line-height:1.5; }
.neo-scope.neo-viz .word .g{ color:var(--viz-rcol); }
.neo-scope.neo-viz .word .h{ color:var(--viz-scol); }
.neo-scope.neo-viz .word .e{ color:var(--neo-text-muted); }
.neo-scope.neo-viz .genrow{ display:flex; flex-wrap:wrap; gap:7px; margin-top:10px; }
.neo-scope.neo-viz .genrow button{ border-radius:9px; padding:9px 13px; font-size:13px; cursor:pointer; font-family:'Space Grotesk'; letter-spacing:.02em; }
.neo-scope.neo-viz .gen-r{ background:rgba(124,156,255,.10); border:1px solid rgba(124,156,255,.4); color:var(--viz-rcol); }
.neo-scope.neo-viz .gen-r:hover{ background:var(--neo-well); }
.neo-scope.neo-viz .gen-s{ background:rgba(245,192,74,.10); border:1px solid rgba(245,192,74,.42); color:var(--viz-scol); }
.neo-scope.neo-viz .gen-s:hover{ background:var(--neo-well); }
.neo-scope.neo-viz .tablewrap{ overflow:auto; border-radius:12px; }
.neo-scope.neo-viz table.cayley{ border-collapse:collapse; font-family:ui-monospace,Menlo,monospace; font-size:12.5px; margin:0 auto; }
.neo-scope.neo-viz table.cayley th, .neo-scope.neo-viz table.cayley td{ width:40px; height:34px; text-align:center; border:1px solid #1b2534; color:var(--neo-text); }
.neo-scope.neo-viz table.cayley th{ color:var(--neo-text-muted); font-family:'Space Grotesk'; background:var(--neo-well); }
.neo-scope.neo-viz table.cayley th.corner{ color:var(--neo-text-muted); }
.neo-scope.neo-viz table.cayley td.cell{ cursor:pointer; transition:background .12s; }
.neo-scope.neo-viz table.cayley td.hidden{ color:#3a4658; }
.neo-scope.neo-viz table.cayley td.hl-row{ background:rgba(124,156,255,.10); }
.neo-scope.neo-viz table.cayley td.hl-col{ background:rgba(245,192,74,.10); }
.neo-scope.neo-viz table.cayley td.hl-prod{ background:rgba(94,227,161,.28) !important; color:var(--neo-text); font-weight:700; }
.neo-scope.neo-viz table.cayley th.hl{ color:var(--neo-text); background:rgba(124,156,255,.25); }
.neo-scope.neo-viz .tinytable{ margin-top:12px; }
.neo-scope.neo-viz .toggles button.on[data-key=modes]{ border-color:var(--neo-border); color:var(--neo-success); }
.neo-scope.neo-viz .toggles button.on[data-key=ghost]{ border-color:var(--neo-border); color:var(--neo-text); }
.neo-scope.neo-viz .toggles button.on[data-key=analytic]{ border-color:var(--neo-border); color:var(--neo-text); }
.neo-scope.neo-viz .toggles button.on[data-key=bar]{ border-color:rgba(249,115,22,.5); color:var(--neo-accent); }
.neo-scope.neo-viz .segrow button{ flex:1; background:var(--neo-well); border:1px solid var(--neo-border); color:var(--neo-text-muted); border-radius:8px; padding:7px 8px; font-size:11.5px; cursor:pointer; font-family:'Space Grotesk'; letter-spacing:.02em; }
.neo-scope.neo-viz .segrow button.on{ color:var(--neo-text); border-color:var(--neo-border); background:var(--neo-well); }
.neo-scope.neo-viz .spec{ width:100%; height:auto; display:block; border-radius:10px; background:var(--neo-well); border:1px solid var(--neo-border); margin-top:4px; }
.neo-scope.neo-viz .narrator{ position:fixed; top:14px; right:18px; z-index:50; display:flex; align-items:center; gap:9px; background:rgba(15,15,15,.85); backdrop-filter:blur(8px); border:1px solid var(--neo-border); border-radius:999px; padding:6px 16px 6px 6px; box-shadow:0 4px 20px rgba(0,0,0,.4); }
.neo-scope.neo-viz .narrator button{ width:30px; height:30px; flex:none; border-radius:50%; border:1px solid var(--neo-border); background:var(--neo-well); color:var(--neo-text-muted); font-size:14px; cursor:pointer; display:flex; align-items:center; justify-content:center; font-family:inherit; }
.neo-scope.neo-viz .narrator button.off{ border-color:rgba(248,113,113,.4); color:var(--neo-danger); background:rgba(248,113,113,.08); }
.neo-scope.neo-viz .narrator #narrStatus{ font-family:'Space Grotesk'; font-size:10.5px; letter-spacing:.06em; color:#9a9a9a; white-space:nowrap; }
.neo-scope.neo-viz ol.walk li.narrating{ background:var(--neo-well); border-radius:10px; margin:0 -8px; padding-left:42px; padding-right:8px; }
.neo-scope.neo-viz ol.walk li.narrating::before{ left:8px; background:var(--neo-well); border-color:var(--neo-border); color:var(--neo-text-muted); }
.neo-scope.neo-viz .picker{ display:flex; gap:14px; align-items:center; }
.neo-scope.neo-viz .picker canvas{ width:118px; height:118px; border-radius:50%; background:radial-gradient(circle at 38% 32%, #182142, #090d1c); border:1px solid var(--neo-border); cursor:crosshair; touch-action:none; }
.neo-scope.neo-viz .picker .pk{ font-size:12px; color:var(--neo-text-muted); line-height:1.6; }
.neo-scope.neo-viz .picker .pk b{ color:var(--neo-text-muted); font-family:ui-monospace,Menlo,monospace; font-weight:400; }
.neo-scope.neo-viz .trainbar{ position:sticky; top:0; z-index:50; max-width:1320px; margin:14px auto 0; padding:12px 16px; display:flex; align-items:center; gap:14px; flex-wrap:wrap; background:linear-gradient(90deg,rgba(17,21,39,.96),rgba(11,14,28,.96)); border:1px solid var(--neo-border); border-radius:16px; backdrop-filter:blur(8px); box-shadow:0 10px 30px rgba(0,0,0,.35); }
.neo-scope.neo-viz .trainbar .tblab{ font-family:'Space Grotesk'; font-size:10px; letter-spacing:.16em; color:var(--neo-text-muted); }
.neo-scope.neo-viz .trainbar .big{ font-family:'Space Grotesk'; font-weight:700; font-size:20px; color:var(--neo-text-muted); }
.neo-scope.neo-viz .trainbar .spacer{ flex:1; }
.neo-scope.neo-viz .bigbtn{ font-family:'Space Grotesk'; letter-spacing:.04em; font-weight:600; font-size:13px; cursor:pointer; border-radius:12px; padding:11px 18px; border:1px solid var(--neo-border); background:var(--neo-well); color:var(--neo-text); transition:.15s; }
.neo-scope.neo-viz .bigbtn:hover{ background:var(--neo-well); color:var(--neo-accent); border-color:var(--neo-border); }
.neo-scope.neo-viz .bigbtn.primary{ background:var(--neo-well); border-color:var(--neo-border); color:var(--neo-text-muted); }
.neo-scope.neo-viz .bigbtn.primary:hover{ background:var(--neo-well); }
.neo-scope.neo-viz .bigbtn.on{ background:var(--neo-well); border-color:var(--neo-border); color:var(--neo-text); }
.neo-scope.neo-viz .tab.tok.on{ border-color:var(--viz-tok); box-shadow:0 0 0 1px var(--viz-tok),0 8px 26px rgba(138,160,255,.12); }
.neo-scope.neo-viz .tab.tok.on .tt{ color:var(--viz-tok); }
.neo-scope.neo-viz .tab.emb.on{ border-color:var(--viz-emb); box-shadow:0 0 0 1px var(--viz-emb),0 8px 26px rgba(94,227,161,.12); }
.neo-scope.neo-viz .tab.emb.on .tt{ color:var(--viz-emb); }
.neo-scope.neo-viz .tab.att.on{ border-color:var(--viz-att); box-shadow:0 0 0 1px var(--viz-att),0 8px 26px rgba(197,139,255,.12); }
.neo-scope.neo-viz .tab.att.on .tt{ color:var(--viz-att); }
.neo-scope.neo-viz .tab.nxt.on{ border-color:var(--viz-nxt); box-shadow:0 0 0 1px var(--viz-nxt),0 8px 26px rgba(246,199,80,.12); }
.neo-scope.neo-viz .tab.nxt.on .tt{ color:var(--viz-nxt); }
.neo-scope.neo-viz .stage svg, .neo-scope.neo-viz .stage canvas{ display:block; width:100%; height:auto; touch-action:none; }
.neo-scope.neo-viz textarea, .neo-scope.neo-viz input[type=text]{ width:100%; background:var(--neo-well); border:1px solid var(--neo-border); color:var(--neo-text); border-radius:10px; padding:10px 12px; font-family:'Inter',sans-serif; font-size:14px; resize:vertical; }
.neo-scope.neo-viz textarea:focus, .neo-scope.neo-viz input[type=text]:focus{ outline:none; border-color:var(--neo-accent); }
.neo-scope.neo-viz .toks{ display:flex; flex-wrap:wrap; gap:6px; padding:16px; align-content:flex-start; }
.neo-scope.neo-viz .chip2{ font-family:ui-monospace,Menlo,monospace; font-size:14px; padding:6px 10px; border-radius:8px; border:1px solid var(--neo-border); background:var(--neo-well); white-space:pre; }
.neo-scope.neo-viz a.pill{ text-decoration:none; }
.neo-scope.neo-viz a.pill:hover{ border-color:var(--neo-border); }
.neo-scope.neo-viz .stage canvas.drag{ cursor:grabbing; }
.neo-scope.neo-viz code{ font-family:ui-monospace,Menlo,monospace; font-size:12.5px; color:var(--neo-text-muted); background:var(--neo-well); padding:1px 5px; border-radius:5px; }
.neo-scope.neo-viz #panels{ display:block; width:100%; height:640px; touch-action:none; cursor:crosshair; }
.neo-scope.neo-viz .readout .rv.f{ color:var(--viz-fn); }
.neo-scope.neo-viz .readout .rv.d{ color:var(--viz-deriv); }
.neo-scope.neo-viz .readout .rv.i{ color:var(--viz-integ); }
.neo-scope.neo-viz .chain .n-a .nv{ color:var(--viz-curve); }
.neo-scope.neo-viz .chain .n-b .nv{ color:var(--neo-accent); }
.neo-scope.neo-viz .chain .n-c .nv{ color:var(--neo-text-muted); }
.neo-scope.neo-viz .chain .n-d .nv{ color:var(--viz-fit); }
.neo-scope.neo-viz .verdict.straight{ color:var(--viz-fit); border-color:rgba(94,227,161,.5); background:rgba(94,227,161,.08); }
.neo-scope.neo-viz .verdict.curved{ color:var(--viz-curve); border-color:rgba(255,159,110,.5); background:rgba(255,159,110,.08); }
.neo-scope.neo-viz .seg.axis button.on{ background:var(--neo-well); color:var(--neo-accent); }
.neo-scope.neo-viz .seg.stack{ flex-wrap:wrap; }
.neo-scope.neo-viz .seg.stack button{ flex:1 1 45%; border-bottom:1px solid var(--neo-border); }
.neo-scope.neo-viz .modelbox{ background:var(--neo-well); border:1px solid var(--neo-border); border-radius:10px; padding:12px 14px; margin-top:6px; font-size:13px; overflow-x:auto; }
.neo-scope.neo-viz .modelbox .ml{ color:var(--neo-text-muted); font-size:10px; letter-spacing:.13em; font-family:'Space Grotesk'; margin-bottom:6px; }
.neo-scope.neo-viz .conv{ margin-top:12px; padding:12px 14px; border-radius:12px; font-family:'Space Grotesk'; font-size:13.5px; border:1px solid var(--neo-border); }
.neo-scope.neo-viz .conv.win{ background:rgba(74,222,128,.08); border-color:rgba(74,222,128,.4); color:var(--neo-success); }
.neo-scope.neo-viz .conv.warn{ background:var(--neo-well); border-color:var(--neo-border); color:var(--neo-text-muted); }
.neo-scope.neo-viz .conv.lose{ background:rgba(248,113,113,.08); border-color:rgba(248,113,113,.4); color:var(--neo-danger); }
.neo-scope.neo-viz .tab.pcp.on{ border-color:var(--viz-pcp); box-shadow:0 0 0 1px var(--viz-pcp),0 8px 26px rgba(138,160,255,.12); }
.neo-scope.neo-viz .tab.pcp.on .tt{ color:var(--viz-pcp); }
.neo-scope.neo-viz .tab.gd.on{ border-color:var(--viz-gd); box-shadow:0 0 0 1px var(--viz-gd),0 8px 26px rgba(94,227,161,.12); }
.neo-scope.neo-viz .tab.gd.on .tt{ color:var(--viz-gd); }
.neo-scope.neo-viz .tab.bp.on{ border-color:var(--viz-bp); box-shadow:0 0 0 1px var(--viz-bp),0 8px 26px rgba(197,139,255,.12); }
.neo-scope.neo-viz .tab.bp.on .tt{ color:var(--viz-bp); }
.neo-scope.neo-viz .tab.of.on{ border-color:var(--viz-of); box-shadow:0 0 0 1px var(--viz-of),0 8px 26px rgba(246,199,80,.12); }
.neo-scope.neo-viz .tab.of.on .tt{ color:var(--viz-of); }
.neo-scope.neo-viz .matgrid.m3{ grid-template-columns:1fr 1fr 1fr; gap:9px; }
.neo-scope.neo-viz .moderow{ display:flex; gap:8px; margin-bottom:14px; }
.neo-scope.neo-viz .modebtn{ flex:1; background:var(--neo-well); border:1px solid var(--neo-border); color:var(--neo-text-muted); border-radius:10px; padding:9px; font-size:12.5px; cursor:pointer; font-family:'Space Grotesk'; letter-spacing:.05em; }
.neo-scope.neo-viz .modebtn.on{ background:var(--neo-well); border-color:var(--neo-border); color:var(--neo-accent); }
.neo-scope.neo-viz .hide{ display:none !important; }
.neo-scope.neo-viz .tab.pnp.on{ border-color:var(--viz-pnp); box-shadow:0 0 0 1px var(--viz-pnp),0 8px 26px rgba(138,160,255,.12); }
.neo-scope.neo-viz .tab.pnp.on .tt{ color:var(--viz-pnp); }
.neo-scope.neo-viz .tab.rh.on{ border-color:var(--viz-rh); box-shadow:0 0 0 1px var(--viz-rh),0 8px 26px rgba(75,224,212,.12); }
.neo-scope.neo-viz .tab.rh.on .tt{ color:var(--viz-rh); }
.neo-scope.neo-viz .tab.ns.on{ border-color:var(--viz-ns); box-shadow:0 0 0 1px var(--viz-ns),0 8px 26px rgba(90,209,255,.12); }
.neo-scope.neo-viz .tab.ns.on .tt{ color:var(--viz-ns); }
.neo-scope.neo-viz .tab.ym.on{ border-color:var(--viz-ym); box-shadow:0 0 0 1px var(--viz-ym),0 8px 26px rgba(246,199,80,.12); }
.neo-scope.neo-viz .tab.ym.on .tt{ color:var(--viz-ym); }
.neo-scope.neo-viz .tab.bsd.on{ border-color:var(--viz-bsd); box-shadow:0 0 0 1px var(--viz-bsd),0 8px 26px rgba(197,139,255,.12); }
.neo-scope.neo-viz .tab.bsd.on .tt{ color:var(--viz-bsd); }
.neo-scope.neo-viz .tab.hodge.on{ border-color:var(--viz-hodge); box-shadow:0 0 0 1px var(--viz-hodge),0 8px 26px rgba(255,157,196,.12); }
.neo-scope.neo-viz .tab.hodge.on .tt{ color:var(--viz-hodge); }
.neo-scope.neo-viz .tab.poin.on{ border-color:var(--viz-poin); box-shadow:0 0 0 1px var(--viz-poin),0 8px 26px rgba(94,227,161,.12); }
.neo-scope.neo-viz .tab.poin.on .tt{ color:var(--viz-poin); }
.neo-scope.neo-viz .badge.hard{ color:var(--neo-danger); border-color:rgba(255,122,138,.4); background:rgba(255,122,138,.06); }
.neo-scope.neo-viz .badge.solved{ color:var(--neo-success); border-color:rgba(94,227,161,.4); background:rgba(94,227,161,.06); }
.neo-scope.neo-viz .whyhard{ margin-top:14px; padding:14px 16px; border-radius:12px; background:rgba(255,122,138,.06); border:1px solid rgba(255,122,138,.22); }
.neo-scope.neo-viz .whyhard .lab2{ font-family:'Space Grotesk'; font-size:10px; letter-spacing:.16em; color:var(--neo-danger); }
.neo-scope.neo-viz .whyhard .t{ color:#f3d7db; font-size:14px; margin-top:6px; line-height:1.6; }
.neo-scope.neo-viz .prize{ display:inline-block; font-family:'Space Grotesk'; font-size:10px; letter-spacing:.14em; color:var(--neo-text-muted); border:1px solid var(--neo-border); background:var(--neo-well); padding:4px 9px; border-radius:999px; margin-left:8px; }
.neo-scope.neo-viz .coin{ cursor:pointer; }
.neo-scope.neo-viz .toggle{ cursor:pointer; }
.neo-scope.neo-viz .hovertag .b{ color:var(--neo-danger); }
.neo-scope.neo-viz .hovertag .g{ color:var(--neo-success); }
.neo-scope.neo-viz .btn:disabled{ opacity:.4; cursor:not-allowed; }
.neo-scope.neo-viz .readout .rv.yes{ color:var(--neo-success); }
.neo-scope.neo-viz .readout .rv.no{ color:var(--neo-danger); }
.neo-scope.neo-viz .verdict.mob{ background:var(--neo-well); border:1px solid var(--neo-border); }
.neo-scope.neo-viz .verdict.cyl{ background:var(--neo-well); border:1px solid var(--neo-border); }
.neo-scope.neo-viz .verdict b{ font-family:'Space Grotesk'; }
.neo-scope.neo-viz .ctl select{ width:100%; background:var(--neo-well); color:var(--neo-text); border:1px solid var(--neo-border); border-radius:9px; padding:8px 10px; font-family:inherit; font-size:13px; }
.neo-scope.neo-viz .tab.sphere.on{ border-color:var(--viz-sph); box-shadow:0 0 0 1px var(--viz-sph), 0 8px 30px rgba(255,122,138,.12); }
.neo-scope.neo-viz .tab.sphere.on .tt{ color:var(--viz-sph); }
.neo-scope.neo-viz .tab.hyper.on{ border-color:var(--viz-hyp); box-shadow:0 0 0 1px var(--viz-hyp), 0 8px 30px rgba(75,224,212,.12); }
.neo-scope.neo-viz .tab.hyper.on .tt{ color:var(--viz-hyp); }
.neo-scope.neo-viz .tab.parallel.on{ border-color:var(--neo-accent); box-shadow:0 0 0 1px var(--neo-accent), 0 8px 30px rgba(138,160,255,.12); }
.neo-scope.neo-viz .tab.parallel.on .tt{ color:var(--neo-accent); }
.neo-scope.neo-viz .ledger .gt{ color:var(--viz-sph); }
.neo-scope.neo-viz .ledger .lt{ color:var(--viz-hyp); }
.neo-scope.neo-viz .ledger .eq{ color:var(--neo-text-muted); }
.neo-scope.neo-viz .three{ display:grid; grid-template-columns:repeat(3,1fr); gap:14px; }
.neo-scope.neo-viz .worldcard{ background:var(--neo-well); border:none; border-radius:var(--neo-radius); box-shadow:var(--neo-shadow-raised-sm); padding:12px; }
.neo-scope.neo-viz .worldcard h4{ font-family:'Space Grotesk'; margin:2px 0 8px; font-size:14px; letter-spacing:.02em; display:flex; align-items:center; gap:8px; }
.neo-scope.neo-viz .worldcard h4 .dot{ width:10px; height:10px; border-radius:50%; }
.neo-scope.neo-viz .worldcard canvas{ display:block; width:100%; height:260px; border-radius:10px; background:radial-gradient(120% 120% at 50% 30%, #0f1426 0%, #060811 80%); }
.neo-scope.neo-viz .worldcard .cnt{ margin-top:9px; text-align:center; font-family:'Space Grotesk'; }
.neo-scope.neo-viz .worldcard .cnt .big{ font-size:30px; font-weight:700; }
.neo-scope.neo-viz .worldcard .cnt .cap{ font-size:11px; color:var(--neo-text-muted); letter-spacing:.08em; }
.neo-scope.neo-viz .infobox{ margin-top:12px; padding:12px 14px; border-radius:12px; background:var(--neo-well); border:1px solid var(--neo-border); font-family:ui-monospace,Menlo,monospace; font-size:12.5px; color:var(--neo-text); line-height:1.85; word-break:break-word; }
.neo-scope.neo-viz .infobox b{ color:var(--neo-accent); }
.neo-scope.neo-viz .infobox .big{ font-family:'Space Grotesk'; font-size:15px; color:var(--neo-text); }
.neo-scope.neo-viz .marketbar{ display:flex; gap:18px; flex-wrap:wrap; align-items:center; background:var(--neo-well); border:1px solid var(--neo-border); border-radius:16px; padding:14px 18px; margin-top:20px; }
.neo-scope.neo-viz .marketbar .mk{ font-family:'Space Grotesk'; font-size:10px; letter-spacing:.16em; color:var(--neo-text-muted); }
.neo-scope.neo-viz .marketbar .grp{ display:flex; align-items:center; gap:10px; }
.neo-scope.neo-viz .marketbar input[type=range]{ width:150px; accent-color:var(--neo-text-muted); }
.neo-scope.neo-viz .marketbar .v{ font-family:ui-monospace,Menlo,monospace; font-size:12.5px; color:var(--neo-text-muted); min-width:34px; }
.neo-scope.neo-viz .marketbar select{ background:var(--neo-well); border:1px solid var(--neo-border); color:var(--neo-text); border-radius:9px; padding:7px 10px; font-family:'Space Grotesk'; font-size:12px; }
.neo-scope.neo-viz .marketbar .seedbtn{ background:var(--neo-well); border:1px solid var(--neo-border); color:var(--neo-text-muted); border-radius:9px; padding:7px 12px; font-size:12px; cursor:pointer; font-family:'Space Grotesk'; }
.neo-scope.neo-viz .marketbar .seedbtn:hover{ background:var(--neo-well); }
.neo-scope.neo-viz .marketbar .note{ font-size:11.5px; color:var(--neo-text-muted); }
.neo-scope.neo-viz .tab.bs.on{ border-color:var(--viz-bs); box-shadow:0 0 0 1px var(--viz-bs),0 8px 30px rgba(246,199,80,.12); }
.neo-scope.neo-viz .tab.bs.on .tt{ color:var(--viz-bs); }
.neo-scope.neo-viz .tab.pf.on{ border-color:var(--viz-pf); box-shadow:0 0 0 1px var(--viz-pf),0 8px 30px rgba(75,224,212,.12); }
.neo-scope.neo-viz .tab.pf.on .tt{ color:var(--viz-pf); }
.neo-scope.neo-viz .tab.var.on{ border-color:var(--viz-var); box-shadow:0 0 0 1px var(--viz-var),0 8px 30px rgba(197,139,255,.12); }
.neo-scope.neo-viz .tab.var.on .tt{ color:var(--viz-var); }
.neo-scope.neo-viz .toggle .btn.sel{ background:var(--neo-well); border-color:var(--neo-border); color:var(--neo-text); }
.neo-scope.neo-viz .dimrow{ display:flex; gap:7px; margin-top:6px; }
.neo-scope.neo-viz .dimrow button{ flex:1; background:var(--neo-well); border:none; color:var(--neo-text-muted); border-radius:var(--neo-radius-sm); padding:9px 0; font-size:13px; cursor:pointer; font-family:'Space Grotesk'; letter-spacing:.04em; box-shadow:var(--neo-shadow-raised-sm); }
.neo-scope.neo-viz .dimrow button.on{ background:var(--neo-well); border-color:var(--neo-border); color:var(--neo-text); }
.neo-scope.neo-viz .toggles button.on[data-key=reflect]{ border-color:var(--neo-border); color:var(--neo-text); background:var(--neo-well); }
.neo-scope.neo-viz .toggles button.on[data-key=refract]{ border-color:var(--neo-border); color:var(--neo-text); background:var(--neo-well); }
.neo-scope.neo-viz .toggles button.on[data-key=shadows]{ border-color:var(--neo-border); color:var(--neo-accent); background:var(--neo-well); }
.neo-scope.neo-viz .toggles button.on[data-key=fan]{ border-color:var(--neo-border); color:var(--neo-success); background:var(--neo-well); }
.neo-scope.neo-viz .clock .sub{ font-family:ui-monospace,Menlo,monospace; font-size:11px; color:var(--neo-text-muted); }
.neo-scope.neo-viz .explain .em{ color:var(--neo-text-muted); }
.neo-scope.neo-viz .explain p.eq{ text-align:center; }
.neo-scope.neo-viz .note .ncap{ color:var(--neo-text-muted); font-size:12.5px; }
.neo-scope.neo-viz .divlab{ font-family:'Space Grotesk'; font-size:10px; letter-spacing:.14em; color:var(--neo-text-muted); margin:14px 0 8px; border-top:1px solid var(--neo-border); padding-top:14px; }
.neo-scope.neo-viz .lead{ color:var(--neo-text); line-height:1.65; font-size:14.5px; margin:0 0 4px; }
.neo-scope.neo-viz .note .lab{ font-family:'Space Grotesk'; font-size:10px; letter-spacing:.16em; color:var(--neo-text-muted); }
.neo-scope.neo-viz .note p{ color:#c7d3d6; font-size:13px; line-height:1.6; margin:6px 0 0; }
.neo-scope.neo-viz .explain .lab{ font-family:'Space Grotesk'; font-size:10px; letter-spacing:.16em; color:var(--neo-text-muted); }
.neo-scope.neo-viz .explain .body{ color:#d6d0c4; font-size:13px; line-height:1.65; margin:6px 0 0; }
.neo-scope.neo-viz .explain .body p{ margin:8px 0 0; }
.neo-scope.neo-viz .explain .body p:first-child{ margin-top:6px; }
.neo-scope.neo-viz .related{ margin-top:24px; padding-top:18px; border-top:1px solid var(--neo-border); }
.neo-scope.neo-viz .related h3{ font-family:'Space Grotesk'; font-size:11px; letter-spacing:.14em; color:var(--neo-text-muted); margin:0 0 10px; }
.neo-scope.neo-viz .related .tags{ display:flex; flex-wrap:wrap; gap:8px; }
.neo-scope.neo-viz .related .tag{ font-family:'Space Grotesk'; font-size:12px; letter-spacing:.02em; color:var(--neo-text); background:var(--neo-well); border:1px solid var(--neo-border); border-radius:999px; padding:6px 13px; cursor:pointer; transition:.15s; }
.neo-scope.neo-viz .related .tag:hover{ border-color:var(--neo-accent); color:var(--neo-text); background:rgba(249,115,22,.1); }
.neo-scope.neo-viz .prose h3{ font-family:'Space Grotesk'; color:var(--neo-text); font-size:16px; margin:22px 0 8px; }
.neo-scope.neo-viz .prose a{ color:var(--neo-text-muted); text-decoration:none; border-bottom:1px solid rgba(56,189,248,.35); }
.neo-scope.neo-viz .prose a:hover{ border-color:var(--neo-border); }
.neo-scope.neo-viz .kcard{ background:var(--neo-well); border:none; border-radius:var(--neo-radius); box-shadow:var(--neo-shadow-raised-sm); padding:16px 18px; margin:14px 0; }
.neo-scope.neo-viz .kcard .kt{ font-family:'Space Grotesk'; font-size:11px; letter-spacing:.14em; color:var(--neo-text-muted); margin-bottom:8px; }
.neo-scope.neo-viz .eqbig{ text-align:center; margin:16px 0; font-size:19px; }
.neo-scope.neo-viz .sigbar{ display:flex; align-items:center; gap:14px; flex-wrap:wrap; background:var(--neo-well); border:1px solid var(--neo-border); border-radius:14px; padding:14px 18px; margin:20px 0 4px; }
.neo-scope.neo-viz .sigbar .lbl{ font-family:'Space Grotesk'; font-size:10px; letter-spacing:.15em; color:var(--neo-text-muted); }
.neo-scope.neo-viz .sigbar .presets{ display:flex; gap:8px; flex-wrap:wrap; }
.neo-scope.neo-viz .sigbar .hint{ font-size:12px; color:var(--neo-text-muted); flex:1; min-width:180px; text-align:right; }
.neo-scope.neo-viz .tab.on .tt{ color:var(--neo-text); }
.neo-scope.neo-viz .readout .rv.l{ color:var(--viz-lerp); }
.neo-scope.neo-viz .readout .rv.s{ color:var(--viz-slerp); }
.neo-scope.neo-viz .readout .rv.e{ color:var(--viz-eased); }
.neo-scope.neo-viz .easebox{ background:var(--neo-well); border:1px solid var(--neo-border); border-radius:10px; padding:8px; }
.neo-scope.neo-viz #easeCanvas{ display:block; width:100%; height:120px; border-radius:6px; }
.neo-scope.neo-viz .anglebar{ display:flex; align-items:center; gap:18px; flex-wrap:wrap; background:var(--neo-well); border:1px solid var(--neo-border); border-radius:14px; padding:14px 18px; margin:20px 0 4px; }
.neo-scope.neo-viz .anglebar .lbl{ font-family:'Space Grotesk'; font-size:10px; letter-spacing:.15em; color:var(--neo-text-muted); }
.neo-scope.neo-viz .anglebar input[type=range]{ flex:1; min-width:220px; accent-color:var(--neo-text-muted); }
.neo-scope.neo-viz .anglebar .val{ font-family:ui-monospace,Menlo,monospace; color:var(--neo-text-muted); font-size:14px; min-width:150px; text-align:right; }
.neo-scope.neo-viz .anglebar .hint{ font-size:12px; color:var(--neo-text-muted); }
.neo-scope.neo-viz .secttl{ font-family:'Space Grotesk'; font-size:11px; letter-spacing:.16em; color:var(--neo-text-muted); margin:2px 0 12px; }
.neo-scope.neo-viz .tip{ position:absolute; pointer-events:none; background:rgba(10,10,10,.94); border:1px solid var(--neo-border); border-radius:8px; padding:7px 10px; font-family:ui-monospace,Menlo,monospace; font-size:12px; color:var(--neo-text); white-space:nowrap; opacity:0; transition:opacity .08s; z-index:5; }
.neo-scope.neo-viz .toggles button.on[data-key=primes]{ border-color:rgba(249,115,22,.5); color:var(--neo-accent); }
.neo-scope.neo-viz .toggles button.on[data-key=diagonals]{ border-color:var(--neo-border); color:var(--neo-text); }
.neo-scope.neo-viz .toggles button.on[data-key=poly]{ border-color:var(--neo-border); color:var(--neo-success); }
.neo-scope.neo-viz .toggles button.on[data-key=numbers]{ border-color:var(--neo-border); color:var(--neo-text); }
.neo-scope.neo-viz .polyrow{ display:flex; align-items:center; gap:6px; font-family:ui-monospace,Menlo,monospace; font-size:12px; color:var(--neo-text-muted); margin:9px 0; }
.neo-scope.neo-viz .polyrow input{ width:46px; background:var(--neo-well); border:1px solid var(--neo-border); color:var(--neo-success); border-radius:7px; padding:5px 6px; font-family:inherit; font-size:12px; text-align:center; }
.neo-scope.neo-viz .eq{ margin:9px 0; }
.neo-scope.neo-viz .eq label{ display:block; font-size:12px; color:var(--neo-text-muted); margin-bottom:5px; }
.neo-scope.neo-viz .eq label b{ color:var(--neo-text-muted); font-family:'Space Grotesk'; }
.neo-scope.neo-viz .eq input[type=text]{ width:100%; background:var(--neo-well); border:1px solid var(--neo-border); border-radius:9px; color:var(--neo-text); font-family:ui-monospace,SFMono-Regular,Menlo,monospace; font-size:13px; padding:8px 10px; }
.neo-scope.neo-viz .eq input[type=text]:focus{ outline:none; border-color:var(--neo-border); }
.neo-scope.neo-viz .eq input.err{ border-color:rgba(248,113,113,.7); }
.neo-scope.neo-viz .toggles button.on[data-key=arrows]{ border-color:var(--neo-border); color:var(--neo-text); }
.neo-scope.neo-viz .toggles button.on[data-key=stream]{ border-color:var(--neo-border); color:var(--neo-text); }
.neo-scope.neo-viz .toggles button.on[data-key=nullx]{ border-color:rgba(249,115,22,.55); color:var(--neo-accent); }
.neo-scope.neo-viz .toggles button.on[data-key=nully]{ border-color:var(--neo-border); color:var(--neo-success); }
.neo-scope.neo-viz .toggles button.on[data-key=fixed]{ border-color:var(--neo-border); color:var(--neo-text); }
.neo-scope.neo-viz .fpbox{ margin-top:11px; padding:10px 12px; border-radius:12px; background:var(--neo-well); border:1px solid var(--neo-border); font-size:12px; line-height:1.55; color:var(--neo-text-muted); }
.neo-scope.neo-viz .fpbox .fprow{ font-family:ui-monospace,Menlo,monospace; color:var(--neo-text); }
.neo-scope.neo-viz .fpbox b{ font-family:'Space Grotesk'; }

@media(max-width:1000px){
  .neo-scope.neo-viz .grid2{ grid-template-columns:1fr; }
  .neo-scope.neo-viz .lower{ grid-template-columns:1fr; }
  .neo-scope.neo-viz .stage canvas{ height:440px; }
  .neo-scope.neo-viz #stageCanvas{ height:480px; }
  .neo-scope.neo-viz #panels{ height:560px; }
}
@media(max-width:820px){
  .neo-scope.neo-viz .cols{ grid-template-columns:1fr; }
}
@media(max-width:1080px){
  .neo-scope.neo-viz .wrap{ grid-template-columns:1fr; }
  .neo-scope.neo-viz .grid2{ grid-template-columns:1fr; }
  .neo-scope.neo-viz .lower{ grid-template-columns:1fr; }
  .neo-scope.neo-viz nav{ position:static; max-height:none; display:flex; flex-wrap:wrap; }
  .neo-scope.neo-viz .tab{ width:auto; }
  .neo-scope.neo-viz .tabs{ grid-template-columns:repeat(2,1fr); }
}
@media(max-width:560px){
  .neo-scope.neo-viz .tabs{ grid-template-columns:1fr; }
}
@media(max-width:900px){
  .neo-scope.neo-viz .three{ grid-template-columns:1fr; }
}
