.system-numerology {
  --nr-gold: #d9ae61;
  --nr-gold-2: #f3da9b;
}
.nr-hero {
  width: min(calc(100% - 32px), 1280px);
  margin: 0 auto;
  padding: clamp(48px, 7vw, 84px) 0 36px;
  text-align: center;
}
.nr-hero .system-eyebrow {
  color: var(--nr-gold-2);
}
.nr-hero .system-title {
  max-width: none;
  margin: 14px auto 0;
  color: var(--text);
  background: none;
  font: 800 clamp(46px, 6.8vw, 84px) / 1 var(--font-b);
  letter-spacing: -0.05em;
  text-transform: none;
  -webkit-text-fill-color: var(--text);
}
.nr-hero .system-lead {
  width: min(930px, 100%);
  margin: 24px auto 0;
  line-height: 1.75;
}
.nr-profile-badge {
  width: fit-content;
  margin: 23px auto 0;
  padding: 10px 17px;
  border: 1px solid rgba(167, 140, 219, 0.27);
  border-radius: 999px;
  color: #ede4f7;
  background: rgba(167, 140, 219, 0.07);
  font-size: 14px;
  font-weight: 750;
}
.nr-profile-badge::before {
  display: inline-block;
  width: 7px;
  height: 7px;
  margin-right: 10px;
  border-radius: 50%;
  background: var(--nr-gold-2);
  box-shadow: 0 0 12px var(--nr-gold);
  content: "";
}
.numerology-reactor {
  display: grid;
  width: min(calc(100% - 32px), 1420px);
  margin: 0 auto clamp(80px, 9vw, 120px);
  grid-template-columns: minmax(0, 1.5fr) minmax(350px, 0.74fr);
  gap: 24px;
  align-items: start;
}
.nr-card,
.nr-panel {
  border: 1px solid rgba(243, 218, 155, 0.11);
  background: linear-gradient(
    155deg,
    rgba(17, 13, 29, 0.96),
    rgba(7, 5, 13, 0.98)
  );
  box-shadow: 0 25px 85px rgba(0, 0, 0, 0.48);
  backdrop-filter: blur(15px);
}
.nr-card {
  position: relative;
  min-width: 0;
  padding: 16px;
  overflow: hidden;
  border-radius: 30px;
}
.nr-card::before,
.nr-card::after {
  position: absolute;
  border-radius: 50%;
  filter: blur(90px);
  content: "";
  pointer-events: none;
}
.nr-card::before {
  top: -110px;
  left: -110px;
  width: 280px;
  height: 280px;
  background: rgba(127, 199, 213, 0.08);
}
.nr-card::after {
  right: -100px;
  bottom: -110px;
  width: 270px;
  height: 270px;
  background: rgba(167, 140, 219, 0.1);
}
.nr-viz {
  position: relative;
  width: min(100%, 930px);
  margin: auto;
  aspect-ratio: 1.13;
}
.nr-viz svg {
  display: block;
  width: 100%;
  height: 100%;
  overflow: visible;
  filter: drop-shadow(0 25px 45px rgba(0, 0, 0, 0.42));
}
.numerology-reactor .frame {
  fill: rgba(7, 5, 12, 0.27);
  stroke: rgba(243, 218, 155, 0.14);
  stroke-width: 1.1;
}
.numerology-reactor .orbit {
  fill: none;
  stroke: rgba(255, 255, 255, 0.035);
  stroke-width: 1;
}
.numerology-reactor .crossline {
  stroke: rgba(255, 255, 255, 0.025);
  stroke-width: 1;
}
.numerology-reactor .source-halo {
  fill: rgba(255, 255, 255, 0.02);
  stroke: rgba(255, 255, 255, 0.09);
  stroke-width: 1.2;
}
.numerology-reactor .source-halo--date {
  stroke: rgba(127, 199, 213, 0.28);
}
.numerology-reactor .source-halo--name {
  stroke: rgba(167, 140, 219, 0.28);
}
.numerology-reactor .source-ring {
  fill: none;
  stroke-width: 2;
  stroke-dasharray: 5 10;
  opacity: 0.55;
  transform-box: fill-box;
  transform-origin: center;
  animation: nr-spin 28s linear infinite;
}
.numerology-reactor .source-ring--date {
  stroke: rgba(127, 199, 213, 0.45);
}
.numerology-reactor .source-ring--name {
  stroke: rgba(167, 140, 219, 0.45);
  animation-direction: reverse;
}
.numerology-reactor .source-kicker {
  fill: #87808e;
  font: 900 8.7px var(--font-h);
  letter-spacing: 0.14em;
  text-anchor: middle;
  dominant-baseline: middle;
}
.numerology-reactor .source-value {
  fill: #f0ebf4;
  font: 900 16px var(--font-h);
  text-anchor: middle;
  dominant-baseline: middle;
}
.numerology-reactor .source-sub {
  fill: #756e7d;
  font: 800 7.5px var(--font-h);
  text-anchor: middle;
  dominant-baseline: middle;
}
.numerology-reactor .sat-shell {
  fill: rgba(255, 255, 255, 0.018);
  stroke: rgba(255, 255, 255, 0.085);
  stroke-width: 1.1;
  transition:
    fill 0.25s,
    stroke 0.25s,
    filter 0.25s,
    transform 0.3s;
  transform-box: fill-box;
  transform-origin: center;
}
.numerology-reactor .satellite.is-active .sat-shell {
  fill: rgba(243, 218, 155, 0.06);
  stroke: rgba(243, 218, 155, 0.5);
  transform: scale(1.06);
  filter: drop-shadow(0 0 12px rgba(217, 174, 97, 0.22));
}
.numerology-reactor .sat-label {
  fill: #77707f;
  font: 900 7.7px var(--font-h);
  letter-spacing: 0.1em;
  text-anchor: middle;
  dominant-baseline: middle;
}
.numerology-reactor .sat-value {
  fill: #e0dae5;
  font: 900 12.5px var(--font-h);
  text-anchor: middle;
  dominant-baseline: middle;
}
.numerology-reactor .stream {
  fill: #817a89;
  font: 800 7.4px var(--font-h);
  text-anchor: middle;
  dominant-baseline: middle;
  pointer-events: none;
}
.numerology-reactor .stream.is-active {
  fill: #ebd9a7;
  filter: drop-shadow(0 0 5px rgba(217, 174, 97, 0.4));
}
.numerology-reactor .flow {
  fill: none;
  stroke: rgba(255, 255, 255, 0.055);
  stroke-width: 1.6;
  stroke-linecap: round;
  pointer-events: none;
}
.numerology-reactor .flow.is-active {
  stroke: url(#nrFlowGradient);
  stroke-width: 3.2;
  stroke-dasharray: 380;
  stroke-dashoffset: 380;
  filter: drop-shadow(0 0 4px rgba(255, 255, 255, 0.35))
    drop-shadow(0 0 12px rgba(217, 174, 97, 0.46));
  animation:
    nr-draw 0.9s ease forwards,
    nr-flow 2.7s ease-in-out 0.9s infinite;
}
.numerology-reactor .particle {
  fill: #fff0bd;
  filter: drop-shadow(0 0 5px rgba(255, 255, 255, 0.55))
    drop-shadow(0 0 9px rgba(217, 174, 97, 0.65));
}
.numerology-reactor .reactor-halo {
  fill: rgba(243, 218, 155, 0.07);
  animation: nr-halo 2.9s ease-in-out infinite;
}
.numerology-reactor .reactor-ring {
  fill: none;
  stroke: rgba(243, 218, 155, 0.18);
  stroke-width: 1.2;
  stroke-dasharray: 7 11;
  transform-box: fill-box;
  transform-origin: center;
  animation: nr-spin 22s linear infinite;
}
.numerology-reactor .reactor-ring--2 {
  stroke: rgba(167, 140, 219, 0.17);
  stroke-dasharray: 3 8;
  animation-duration: 16s;
  animation-direction: reverse;
}
.numerology-reactor .reactor-hex {
  fill: url(#nrCoreGradient);
  stroke: rgba(255, 238, 184, 0.72);
  stroke-width: 1.5;
  filter: drop-shadow(0 0 10px rgba(255, 255, 255, 0.2))
    drop-shadow(0 0 26px rgba(217, 174, 97, 0.34));
}
.numerology-reactor .reactor-kicker {
  fill: #563716;
  font: 900 8.7px var(--font-h);
  letter-spacing: 0.18em;
  text-anchor: middle;
  dominant-baseline: middle;
}
.numerology-reactor .reactor-number {
  fill: #351f0d;
  font: 900 59px var(--font-h);
  text-anchor: middle;
  dominant-baseline: middle;
  filter: drop-shadow(0 1px 0 rgba(255, 248, 216, 0.42));
}
.numerology-reactor .reactor-name {
  fill: #301b0a;
  font: 900 14px var(--font-h);
  letter-spacing: 0.04em;
  text-anchor: middle;
  dominant-baseline: middle;
}
.numerology-reactor .reactor-sub {
  fill: #68431d;
  font: 900 9px var(--font-h);
  text-anchor: middle;
  dominant-baseline: middle;
}
.numerology-reactor .digit-orb circle {
  fill: rgba(255, 255, 255, 0.025);
  stroke: rgba(255, 255, 255, 0.08);
  stroke-width: 1;
  transition: 0.25s;
  transform-box: fill-box;
  transform-origin: center;
}
.numerology-reactor .digit-orb text {
  fill: #696272;
  font: 900 8px var(--font-h);
  text-anchor: middle;
  dominant-baseline: middle;
}
.numerology-reactor .digit-orb.is-base circle {
  fill: rgba(217, 174, 97, 0.12);
  stroke: rgba(243, 218, 155, 0.65);
  transform: scale(1.18);
  filter: drop-shadow(0 0 9px rgba(217, 174, 97, 0.45));
}
.numerology-reactor .digit-orb.is-base text {
  fill: #fff0bd;
}
.numerology-reactor .master-badge,
.numerology-reactor .master-badge-text {
  opacity: 0;
  transition: opacity 0.25s;
}
.numerology-reactor .master-badge {
  fill: #f0d797;
  stroke: #6c451d;
  stroke-width: 1;
}
.numerology-reactor .master-badge-text {
  fill: #100b16;
  font: 900 8px var(--font-h);
  text-anchor: middle;
  dominant-baseline: middle;
}
.numerology-reactor .master-badge.is-visible,
.numerology-reactor .master-badge-text.is-visible {
  opacity: 1;
}
.numerology-reactor .result {
  outline: none;
  cursor: pointer;
}
.numerology-reactor .result-shell {
  fill: rgba(255, 255, 255, 0.02);
  stroke: rgba(255, 255, 255, 0.09);
  stroke-width: 1.2;
  transition: 0.25s;
  transform-box: fill-box;
  transform-origin: center;
}
.numerology-reactor .result:hover .result-shell,
.numerology-reactor .result:focus-visible .result-shell {
  fill: rgba(243, 218, 155, 0.04);
  stroke: rgba(243, 218, 155, 0.35);
}
.numerology-reactor .result.is-active .result-shell {
  fill: rgba(217, 174, 97, 0.11);
  stroke: rgba(243, 218, 155, 0.8);
  transform: scale(1.09);
  filter: drop-shadow(0 0 18px rgba(217, 174, 97, 0.43));
  animation: nr-result 2.9s ease-in-out infinite;
}
.numerology-reactor .result.is-disabled {
  opacity: 0.25;
  cursor: not-allowed;
}
.numerology-reactor .result-num {
  fill: #f2edf5;
  font: 900 26px var(--font-h);
  text-anchor: middle;
  dominant-baseline: middle;
  pointer-events: none;
}
.numerology-reactor .result.is-active .result-num {
  fill: #fff0bd;
  filter: drop-shadow(0 0 8px rgba(217, 174, 97, 0.5));
}
.numerology-reactor .result-name {
  fill: #bdb6c5;
  font: 900 7.9px var(--font-h);
  letter-spacing: 0.05em;
  text-anchor: middle;
  dominant-baseline: middle;
  pointer-events: none;
}
.numerology-reactor .result-src {
  fill: #726b79;
  font: 800 6.9px var(--font-h);
  text-anchor: middle;
  dominant-baseline: middle;
  pointer-events: none;
}
.numerology-reactor .bottom-text {
  fill: #817a88;
  font: 900 8.6px var(--font-h);
  letter-spacing: 0.14em;
  text-anchor: middle;
  dominant-baseline: middle;
}
.nr-tape {
  position: relative;
  z-index: 2;
  margin: 14px 18px 8px;
  padding: 14px;
  border: 1px solid rgba(255, 255, 255, 0.07);
  border-radius: 15px;
  background: rgba(255, 255, 255, 0.02);
}
.nr-tape-head {
  display: flex;
  justify-content: space-between;
  gap: 10px;
  align-items: center;
  margin-bottom: 10px;
}
.nr-tape-head strong {
  color: #eee9f1;
  font-size: 0.82rem;
}
.nr-tape-head span {
  color: #8b8493;
  font-size: 0.69rem;
  font-weight: 850;
  letter-spacing: 0.08em;
  text-transform: uppercase;
}
.nr-calc-strip {
  display: flex;
  flex-wrap: wrap;
  gap: 7px;
  align-items: center;
}
.nr-calc-chip {
  padding: 7px 9px;
  border: 1px solid rgba(255, 255, 255, 0.07);
  border-radius: 10px;
  color: #d8d2dc;
  background: rgba(255, 255, 255, 0.025);
  font-size: 0.73rem;
  font-weight: 850;
}
.nr-calc-chip.accent {
  border-color: rgba(243, 218, 155, 0.25);
  color: #f0dda9;
  background: rgba(217, 174, 97, 0.06);
}
.nr-calc-arrow {
  color: #6f6878;
  font-weight: 900;
}
.nr-controls {
  position: relative;
  z-index: 2;
  padding: 17px 18px 8px;
  border-top: 1px solid rgba(255, 255, 255, 0.07);
}
.nr-input-box {
  padding: 16px;
  border: 1px solid rgba(167, 140, 219, 0.17);
  border-radius: 18px;
  background: linear-gradient(
    135deg,
    rgba(127, 199, 213, 0.04),
    rgba(167, 140, 219, 0.055)
  );
}
.nr-input-box h2 {
  color: #f1edf5;
  font: 800 18px var(--font-b);
}
.nr-input-box > p {
  margin-top: 7px;
  color: #9d96a6;
  font-size: 0.78rem;
  line-height: 1.5;
}
.nr-form {
  display: grid;
  margin-top: 14px;
  grid-template-columns: minmax(0, 0.72fr) minmax(0, 1.28fr) auto;
  gap: 8px;
}
.nr-field {
  min-width: 0;
  width: 100%;
  padding: 11px 12px;
  border: 1px solid rgba(255, 255, 255, 0.11);
  border-radius: 11px;
  outline: none;
  color: #f4eff7;
  color-scheme: dark;
  background: #0a0810;
}
.nr-field:focus {
  border-color: rgba(167, 140, 219, 0.58);
  box-shadow: 0 0 0 3px rgba(167, 140, 219, 0.09);
}
.nr-button {
  min-height: 44px;
  padding: 10px 15px;
  border: 1px solid rgba(243, 218, 155, 0.17);
  border-radius: 12px;
  color: #efe9f3;
  background: rgba(255, 255, 255, 0.03);
  cursor: pointer;
  font-weight: 800;
}
.nr-button:hover,
.nr-button:focus-visible {
  border-color: rgba(243, 218, 155, 0.42);
  background: rgba(243, 218, 155, 0.07);
}
.nr-button.primary {
  border-color: transparent;
  color: #0b0810;
  background: linear-gradient(135deg, #d4b9ed, #f1d7ff);
  box-shadow: 0 7px 24px rgba(167, 140, 219, 0.2);
}
.nr-quick-row {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  margin-top: 11px;
}
.nr-quick {
  padding: 7px 10px;
  border: 1px solid rgba(255, 255, 255, 0.08);
  border-radius: 999px;
  color: #aba4b4;
  background: rgba(255, 255, 255, 0.02);
  cursor: pointer;
  font-size: 0.72rem;
  font-weight: 800;
}
.nr-validation {
  min-height: 1.2em;
  margin-top: 8px;
  color: #e7a6bc;
  font-size: 0.76rem;
  font-weight: 800;
}
.nr-panel {
  position: sticky;
  top: 88px;
  padding: 27px;
  border-radius: 30px;
}
.nr-panel-kicker {
  color: var(--nr-gold-2);
  font: 900 11px var(--font-h);
  letter-spacing: 0.15em;
  text-transform: uppercase;
}
.nr-panel h2 {
  margin-top: 11px;
  color: #fff;
  font: 800 clamp(31px, 3vw, 43px) / 1 var(--font-b);
}
.nr-panel-sub {
  margin-top: 8px;
  color: #cab9e5;
  font-weight: 800;
}
.nr-status-grid {
  display: grid;
  margin-top: 19px;
  grid-template-columns: 1fr 1fr;
  gap: 9px;
}
.nr-status {
  padding: 13px;
  border: 1px solid rgba(255, 255, 255, 0.07);
  border-radius: 14px;
  background: rgba(255, 255, 255, 0.025);
}
.nr-status span {
  display: block;
  color: #817a88;
  font: 900 8px var(--font-h);
  letter-spacing: 0.12em;
  text-transform: uppercase;
}
.nr-status strong {
  display: block;
  margin-top: 7px;
  color: #f0edf3;
  font-size: 13px;
}
.nr-status.is-off {
  opacity: 0.4;
}
.nr-explain {
  margin-top: 20px;
  color: #bdb6c2;
  line-height: 1.68;
}
.nr-meaning {
  margin-top: 17px;
  padding: 15px;
  border: 1px solid rgba(167, 140, 219, 0.14);
  border-radius: 14px;
  background: rgba(167, 140, 219, 0.045);
}
.nr-meaning h3 {
  color: #e9d7fa;
  font: 800 17px var(--font-b);
}
.nr-meaning p {
  margin-top: 7px;
  color: #a9a1af;
  font-size: 12px;
  line-height: 1.55;
}
.nr-traits {
  display: grid;
  gap: 9px;
  margin-top: 12px;
}
.nr-traits section {
  padding: 12px;
  border: 1px solid rgba(127, 199, 213, 0.12);
  border-radius: 12px;
  background: rgba(127, 199, 213, 0.035);
}
.nr-traits section:last-child {
  border-color: rgba(213, 146, 176, 0.13);
  background: rgba(213, 146, 176, 0.035);
}
.nr-traits h4 {
  color: #91d4df;
  font: 900 8px var(--font-h);
  letter-spacing: 0.1em;
  text-transform: uppercase;
}
.nr-traits section:last-child h4 {
  color: #dda3bd;
}
.nr-traits ul {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
  margin-top: 8px;
  padding: 0;
  list-style: none;
}
.nr-traits li {
  padding: 6px 8px;
  border-radius: 7px;
  color: #cbd0d6;
  background: rgba(255, 255, 255, 0.055);
  font-size: 10px;
}
.nr-detail {
  margin-top: 16px;
  padding: 14px;
  border: 1px solid rgba(255, 255, 255, 0.065);
  border-radius: 14px;
  background: rgba(255, 255, 255, 0.02);
}
.nr-detail strong {
  display: block;
  margin-bottom: 7px;
  color: #ece6ef;
  font-size: 0.8rem;
}
.nr-detail code {
  display: block;
  color: #d5c5e7;
  font:
    12px/1.58 ui-monospace,
    SFMono-Regular,
    Menlo,
    Consolas,
    monospace;
  white-space: normal;
  word-break: break-word;
}
.nr-context {
  margin-top: 17px;
  padding: 15px;
  border-left: 3px solid var(--nr-gold);
  border-radius: 0 12px 12px 0;
  color: #aaa3af;
  background: rgba(217, 174, 97, 0.055);
  font-size: 13px;
  line-height: 1.6;
}
.nr-context strong {
  color: #f1d899;
}
.nr-source {
  margin-top: 15px;
  color: #716a77;
  font-size: 10px;
  line-height: 1.5;
}
@keyframes nr-spin {
  to {
    transform: rotate(360deg);
  }
}
@keyframes nr-draw {
  to {
    stroke-dashoffset: 0;
  }
}
@keyframes nr-flow {
  0%,
  100% {
    opacity: 0.52;
  }
  50% {
    opacity: 1;
  }
}
@keyframes nr-halo {
  0%,
  100% {
    transform: scale(1);
    opacity: 0.1;
  }
  50% {
    transform: scale(1.18);
    opacity: 0.22;
  }
}
@keyframes nr-result {
  0%,
  100% {
    opacity: 0.82;
  }
  50% {
    opacity: 1;
  }
}
@media (max-width: 980px) {
  .numerology-reactor {
    grid-template-columns: 1fr;
  }
  .nr-panel {
    position: static;
  }
}
@media (max-width: 680px) {
  .nr-hero {
    padding-top: 44px;
  }
  .nr-hero .system-title {
    font-size: clamp(42px, 13vw, 58px);
  }
  .numerology-reactor {
    width: min(calc(100% - 20px), 1420px);
  }
  .nr-card {
    padding: 5px;
    border-radius: 22px;
  }
  .nr-panel {
    padding: 20px;
    border-radius: 22px;
  }
  .nr-form {
    grid-template-columns: 1fr;
  }
  .nr-controls {
    padding: 15px 9px 7px;
  }
  .nr-tape {
    margin: 12px 9px 8px;
  }
  .nr-status-grid {
    grid-template-columns: 1fr;
  }
}
@media (prefers-reduced-motion: reduce) {
  .numerology-reactor * {
    animation-duration: 0.001ms !important;
    animation-iteration-count: 1 !important;
    transition: none !important;
  }
}
