:root {
  --hel-cyan: #66ccff;
  --hel-blue: #287fbd;
  --hel-orange: #ffad5a;
  --hel-rose: #ff7897;
  --hel-green: #75ddb8;
  --hel-violet: #b59cff;
  --hel-panel: #07131b;
  --hel-panel-2: #0b1d28;
  --hel-border: #314b5b;
  --hel-muted: #b8c7d1;
}

/* Таблица сложения проекций в электронном захвате */
.reveal .spin-projection-slide table {
  width: 64%;
  margin: 0.55rem auto 0.7rem;
  font-size: 1.12em;
}

.reveal .spin-projection-slide table th,
.reveal .spin-projection-slide table td {
  padding: 0.34rem 0.8rem;
  text-align: center !important;
}

.reveal .spin-projection-slide table tbody tr:nth-child(2),
.reveal .spin-projection-slide table tbody tr:nth-child(4) {
  background: linear-gradient(90deg, rgb(117 221 184 / 12%), rgb(117 221 184 / 28%), rgb(117 221 184 / 12%));
  color: #eafff7;
  box-shadow: inset 0.18rem 0 0 var(--hel-green);
}

.reveal .spin-projection-slide table tbody tr:nth-child(2) td,
.reveal .spin-projection-slide table tbody tr:nth-child(4) td {
  border-color: rgb(117 221 184 / 55%);
}

.reveal .photo-caption {
  margin-top: 0.28rem;
  color: var(--hel-muted);
  font-size: 0.58em;
  text-align: center;
}

/* Две спиральности */
.reveal .helicity-pair {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 1rem;
  margin-top: 0.7rem;
}

.reveal .helicity-card {
  position: relative;
  min-height: 390px;
  padding: 0.8rem;
  overflow: hidden;
  border: 1px solid var(--hel-border);
  border-radius: 0.45rem;
  background: radial-gradient(circle at 50% 42%, #102a39 0, var(--hel-panel) 58%);
  text-align: center;
}

.reveal .helicity-card > p {
  margin: 0.2rem 0 0;
}

.reveal .helicity-card .math.display {
  margin: 0.05rem 0;
}

.reveal .helicity-particle {
  position: absolute;
  top: 115px;
  left: calc(50% - 42px);
  display: grid;
  width: 84px;
  height: 84px;
  place-items: center;
  border: 2px solid var(--hel-rose);
  border-radius: 50%;
  background: #40192a;
  box-shadow: 0 0 28px rgb(255 120 151 / 18%);
  font: italic 600 1.05em Georgia, serif;
}

.reveal .helicity-arrow {
  position: absolute;
  z-index: 3;
  top: 157px;
  height: 0;
}

.reveal .helicity-arrow::after {
  position: absolute;
  top: 50%;
  width: 0;
  height: 0;
  content: "";
  transform: translateY(-50%);
  border-style: solid;
}

.reveal .helicity-arrow span {
  position: absolute;
  top: -48px;
  color: inherit;
  font-size: 0.56em;
  white-space: nowrap;
}

.reveal .helicity-spin-arrow {
  left: calc(50% + 42px);
  width: 155px;
  height: 12px;
  border-top: 0;
  background: var(--hel-cyan);
  color: var(--hel-cyan);
  transform: translateY(-50%);
}

.reveal .helicity-spin-arrow::after {
  right: -3px;
  border-width: 18px 0 18px 27px;
  border-color: transparent transparent transparent var(--hel-cyan);
}

.reveal .helicity-spin-arrow span {
  left: 43px;
}

.reveal .helicity-momentum-arrow {
  width: 250px;
  height: 3px;
  border-top: 0;
  background: var(--hel-orange);
  color: var(--hel-orange);
  transform: translateY(-50%);
}

.reveal .helicity-momentum-arrow::after {
  border-width: 9px 0 9px 15px;
  border-color: transparent transparent transparent var(--hel-orange);
}

.reveal .helicity-card-right .helicity-momentum-arrow {
  left: calc(50% + 42px);
}

.reveal .helicity-card-right .helicity-momentum-arrow::after {
  right: -3px;
}

.reveal .helicity-card-right .helicity-momentum-arrow span {
  right: 42px;
}

.reveal .helicity-card-left .helicity-momentum-arrow {
  right: calc(50% + 42px);
}

.reveal .helicity-card-left .helicity-momentum-arrow::after {
  left: -3px;
  transform: translateY(-50%) rotate(180deg);
}

.reveal .helicity-card-left .helicity-momentum-arrow span {
  left: 42px;
}

.reveal .helicity-card > p:nth-last-of-type(1) {
  position: absolute;
  right: 0;
  bottom: 76px;
  left: 0;
  font-size: 0.82em;
}

.reveal .helicity-card > .math.display:last-child {
  position: absolute;
  right: 0;
  bottom: 10px;
  left: 0;
  color: var(--hel-green);
}

/* Сравнение понятий */
.reveal .comparison-grid,
.reveal .weak-handedness {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 1.1rem;
  margin: 0.8rem 0;
}

.reveal .comparison-card,
.reveal .weak-card {
  min-height: 310px;
  padding: 0.7rem 1rem;
  border: 1px solid var(--hel-border);
  border-radius: 0.4rem;
  background: var(--hel-panel);
  text-align: center;
}

.reveal .comparison-heading {
  margin: 0.15rem 0 0.65rem;
  color: var(--hel-cyan);
  font-size: 0.86em;
  font-weight: 750;
}

.reveal .comparison-card:nth-child(2) .comparison-heading {
  color: var(--hel-orange);
}

.reveal .chirality-overview {
  margin: 0.52rem 0 0.42rem;
}

.reveal .chirality-overview .comparison-card {
  min-height: 255px;
  padding-top: 0.50rem;
  padding-bottom: 0.48rem;
}

/* Подробный расчёт: один смысловой шаг на вкладку */
.reveal .chirality-tabs {
  margin-top: 0.38rem;
}

.reveal .chirality-tabs > .nav-tabs,
.reveal .chirality-tabs > .panel-tabset-tabby {
  gap: 0.16rem;
  margin-bottom: 0;
  font-size: 0.76em;
}

.reveal .chirality-tabs > .nav-tabs .nav-link,
.reveal .chirality-tabs > .panel-tabset-tabby a {
  padding: 0.34rem 0.82rem;
  font-weight: 720;
}

.reveal .chirality-tabs > .tab-content {
  min-height: 555px;
  padding: 0.62rem 0.82rem 0.55rem;
  border: 1px solid var(--hel-border);
  border-top: 0;
  border-radius: 0 0 0.42rem 0.42rem;
  background: linear-gradient(135deg, #091923, #07131b 72%);
}

.reveal .chirality-tabs .tab-pane {
  min-height: 520px;
}

.reveal .chirality-tabs .chirality-overview {
  margin-top: 0.18rem;
}

.reveal .chirality-tabs .chirality-overview .comparison-card {
  min-height: 310px;
  padding: 0.72rem 1rem;
  font-size: 1.04em;
}

.reveal .chirality-tab-lead {
  margin: 0.10rem 0 0.55rem;
  color: #e8f1f5;
  font-size: 0.86em;
  text-align: center;
}

.reveal .chirality-tab-lead p {
  margin: 0;
}

.reveal .chirality-tab-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 0.86rem;
  align-items: stretch;
}

.reveal .chirality-tab-panel {
  min-width: 0;
  min-height: 330px;
  padding: 0.82rem 0.92rem 0.55rem;
  border-left: 0.13rem solid var(--hel-cyan);
  border-radius: 0.25rem;
  background: rgb(102 204 255 / 5%);
  font-size: 0.88em;
  text-align: center;
}

.reveal .chirality-tab-panel:nth-child(2) {
  border-left-color: var(--hel-orange);
  background: rgb(255 173 90 / 5%);
}

.reveal .chirality-tab-panel p {
  margin: 0.12rem 0 0.35rem;
  line-height: 1.25;
}

.reveal .chirality-tab-panel .math.display {
  margin: 0.36rem 0;
  font-size: 1.16em;
}

.reveal .chirality-spinor-grid .chirality-tab-panel {
  padding-top: 1.05rem;
}

.reveal .chirality-tab-takeaway {
  margin-top: 0.48rem;
  padding: 0.42rem 0.72rem;
  border-left: 0.14rem solid var(--hel-green);
  background: rgb(117 221 184 / 8%);
  color: #edf7f3;
  font-size: 0.78em;
  line-height: 1.25;
  text-align: center;
}

.reveal .chirality-tab-takeaway p {
  margin: 0;
}

.reveal .chirality-tabs .chirality-tab-grid + .math.display {
  margin: 0.48rem 0 0;
  color: var(--hel-green);
  font-size: 1.10em;
}

.reveal .chirality-prob-row {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 0.9rem;
}

.reveal .chirality-prob-card {
  min-width: 0;
  min-height: 315px;
  padding: 0.72rem 0.90rem;
  border-left: 0.13rem solid var(--hel-cyan);
  border-radius: 0.25rem;
  background: rgb(102 204 255 / 5%);
  font-size: 0.78em;
  line-height: 1.28;
}

.reveal .chirality-prob-card:nth-child(2) {
  border-left-color: var(--hel-orange);
  background: rgb(255 173 90 / 5%);
}

.reveal .chirality-prob-card p {
  margin: 0.30rem 0;
}

.reveal .chirality-prob-card .math.display {
  margin: 0.34rem 0;
  font-size: 1.16em;
}

.reveal .chirality-prob-label {
  margin-bottom: 0.38rem;
  color: #f3f7f9;
  font-size: 1.02em;
  font-weight: 760;
}

.reveal .chirality-neutrino-result {
  margin-top: 0.48rem;
  padding: 0.38rem 0.70rem 0.32rem;
  border: 1px solid rgb(117 221 184 / 42%);
  border-radius: 0.30rem;
  background: rgb(117 221 184 / 8%);
  font-size: 0.75em;
  line-height: 1.22;
  text-align: center;
}

.reveal .chirality-neutrino-result p {
  margin: 0.12rem 0;
}

.reveal .chirality-neutrino-result .math.display {
  margin: 0.20rem 0;
  color: var(--hel-green);
  font-size: 1.12em;
}

/* Последовательные объяснения в остальных разделах лекции */
.reveal .helicity-story-tabs {
  margin-top: 0.42rem;
}

.reveal .helicity-story-tabs > .panel-tabset-tabby {
  gap: 0.18rem;
  margin-bottom: 0;
  font-size: 0.78em;
}

.reveal .helicity-story-tabs > .panel-tabset-tabby a {
  padding: 0.36rem 0.90rem;
  font-weight: 720;
}

.reveal .helicity-story-tabs > .tab-content {
  min-height: 570px;
  padding: 0.82rem 1.12rem 0.72rem;
  border: 1px solid var(--hel-border);
  border-top: 0;
  border-radius: 0 0 0.42rem 0.42rem;
  background: linear-gradient(135deg, #091923, #07131b 72%);
}

.reveal .helicity-story-tabs > .tab-content > div {
  min-height: 525px;
}

.reveal .helicity-story-tabs p,
.reveal .helicity-story-tabs li {
  font-size: 0.92em;
  line-height: 1.28;
}

.reveal .helicity-story-tabs ul {
  margin-top: 0.35rem;
}

.reveal .helicity-story-tabs .math.display {
  margin: 0.68rem 0;
  font-size: 1.22em;
}

.reveal .helicity-tab-summary {
  margin-top: 0.72rem;
  padding: 0.50rem 0.78rem;
  border-left: 0.15rem solid var(--hel-green);
  border-radius: 0.12rem;
  background: rgb(117 221 184 / 9%);
  color: #f0f8f5;
  font-size: 0.90em;
  line-height: 1.26;
  text-align: center;
}

.reveal .helicity-tab-summary p {
  margin: 0;
}

/* B* -> B + gamma: the photon carries the spin tag */
.reveal .photon-tag-tabs > .tab-content {
  padding-top: 0.55rem;
}

.reveal .photon-tag-equation {
  margin: 0.05rem auto 0.15rem;
  color: #fff;
  font-size: 1.42em;
  text-align: center;
}

.reveal .photon-tag-equation .math.display {
  margin: 0;
  font-size: 1em;
}

.reveal .photon-tag-transfer {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 1.25rem;
  min-height: 310px;
  margin: 0.05rem auto 0.42rem;
}

.reveal .photon-tag-object {
  position: relative;
  display: inline-flex;
  flex: 0 0 auto;
  align-items: center;
  justify-content: center;
  width: 112px;
  height: 112px;
  border: 3px solid currentColor;
  border-radius: 50%;
  box-shadow: 0 0 22px rgb(255 255 255 / 9%);
  color: #fff;
}

.reveal .photon-tag-nucleus.excited {
  border-color: var(--hel-rose);
  background: #641d32;
}

.reveal .photon-tag-nucleus.ground {
  border-color: #ff986d;
  background: #451923;
}

.reveal .photon-tag-photon {
  border-color: #ffd85a;
  background: #7d5b00;
}

.reveal .photon-tag-neutrino {
  border-color: var(--hel-cyan);
  background: #123f55;
}

.reveal .photon-tag-symbol {
  font-size: 1.35em;
  font-weight: 760;
}

.reveal .photon-tag-caption {
  position: absolute;
  bottom: 0.30rem;
  left: 50%;
  transform: translateX(-50%);
  color: #e9f0f4;
  font-size: 0.55em;
  white-space: nowrap;
}

.reveal .photon-tag-decay,
.reveal .photon-tag-plus {
  color: var(--hel-muted);
  font-size: 1.35em;
  font-weight: 700;
}

.reveal .photon-tag-transfer .photon-tag-decay {
  transform: none;
}

.reveal .photon-tag-products {
  display: flex;
  align-items: center;
  gap: 0.72rem;
}

.reveal .photon-tag-vector {
  position: absolute;
  z-index: 3;
  display: block;
  width: 145px;
  height: 34px;
  color: var(--hel-cyan);
}

.reveal .photon-tag-vector b {
  position: absolute;
  top: -0.78rem;
  left: 50%;
  transform: translateX(-50%);
  font-size: 0.52em;
  font-weight: 760;
  white-space: nowrap;
}

.reveal .photon-tag-vector i {
  position: absolute;
  top: 15px;
  width: 100%;
  height: 9px;
  border-radius: 999px;
  background: currentColor;
}

.reveal .photon-tag-vector.right {
  top: 2px;
  left: calc(100% - 2px);
}

.reveal .photon-tag-vector.left {
  top: 2px;
  right: calc(100% - 2px);
}

.reveal .photon-tag-vector.up {
  bottom: calc(100% - 2px);
  left: calc(50% - 17px);
  width: 34px;
  height: 76px;
}

.reveal .photon-tag-vector.up b {
  top: -0.16rem;
  left: calc(100% + 0.24rem);
  transform: none;
}

.reveal .photon-tag-vector.up i {
  top: 0;
  left: 11px;
  width: 12px;
  height: 100%;
}

.reveal .photon-tag-vector.up i::after {
  position: absolute;
  top: -2px;
  left: 50%;
  width: 0;
  height: 0;
  border-right: 14px solid transparent;
  border-bottom: 21px solid currentColor;
  border-left: 14px solid transparent;
  content: "";
  transform: translate(-50%, -1px);
}

.reveal .photon-tag-transfer .photon-tag-vector {
  top: calc(50% - 17px);
  width: 76px;
}

.reveal .photon-tag-transfer .photon-tag-vector.up {
  top: auto;
  bottom: calc(100% - 2px);
  left: calc(50% - 17px);
  width: 34px;
  height: 76px;
}

.reveal .photon-tag-transfer .photon-tag-vector i {
  height: 12px;
}

.reveal .photon-tag-transfer .photon-tag-vector.up i {
  top: 0;
  left: 11px;
  width: 12px;
  height: 100%;
}

.reveal .photon-tag-transfer .photon-tag-vector.right i::after {
  border-top-width: 14px;
  border-bottom-width: 14px;
  border-left-width: 21px;
}

.reveal .photon-tag-transfer .photon-tag-vector.left i::after {
  border-top-width: 14px;
  border-right-width: 21px;
  border-bottom-width: 14px;
}

.reveal .photon-tag-vector.right i::after,
.reveal .photon-tag-vector.left i::after {
  position: absolute;
  top: 50%;
  width: 0;
  height: 0;
  border-top: 12px solid transparent;
  border-bottom: 12px solid transparent;
  content: "";
  transform: translateY(-50%);
}

.reveal .photon-tag-vector.right i::after {
  right: -2px;
  border-left: 20px solid currentColor;
}

.reveal .photon-tag-vector.left i::after {
  left: -2px;
  border-right: 20px solid currentColor;
}

.reveal .photon-tag-photon .photon-tag-vector,
.reveal .photon-tag-chain-item.photon .photon-tag-vector {
  color: #ffd85a;
}

.reveal .photon-tag-nucleus .photon-tag-vector,
.reveal .photon-tag-chain-item.nucleus .photon-tag-vector {
  color: #ff675e;
}

.reveal .photon-tag-axis,
.reveal .photon-problem-axis {
  position: relative;
  height: 38px;
  margin: 0.05rem 1.5rem 0.15rem;
  color: var(--hel-muted);
  font-size: 0.62em;
  font-weight: 720;
  text-align: center;
}

.reveal .photon-tag-axis i,
.reveal .photon-problem-axis i {
  position: absolute;
  right: 0;
  bottom: 2px;
  left: 0;
  height: 2px;
  background: #6f8997;
}

.reveal .photon-tag-axis i::after,
.reveal .photon-problem-axis i::after {
  position: absolute;
  right: -1px;
  bottom: -6px;
  width: 0;
  height: 0;
  border-top: 7px solid transparent;
  border-bottom: 7px solid transparent;
  border-left: 13px solid #6f8997;
  content: "";
}

.reveal .photon-tag-chain {
  display: grid;
  grid-template-columns: 1fr 0.68fr 1fr 0.68fr 1fr;
  align-items: center;
  gap: 0.35rem;
  min-height: 205px;
  padding: 0 1rem;
}

.reveal .photon-tag-chain-item {
  position: relative;
  display: flex;
  align-items: center;
  justify-content: center;
}

.reveal .photon-tag-chain-item .photon-tag-object {
  width: 92px;
  height: 92px;
}

.reveal .photon-tag-chain-item .photon-tag-vector.right {
  top: -44px;
  left: calc(50% + 46px);
}

.reveal .photon-tag-chain-item .photon-tag-vector.left {
  top: -44px;
  right: calc(50% + 46px);
}

.reveal .photon-tag-link {
  display: flex;
  flex-direction: column;
  align-items: center;
  color: var(--hel-muted);
  font-size: 0.52em;
  font-weight: 700;
  text-align: center;
}

.reveal .photon-tag-link i {
  position: relative;
  display: block;
  width: 100%;
  height: 3px;
  margin-top: 0.22rem;
  background: currentColor;
}

.reveal .photon-tag-link i::after {
  position: absolute;
  top: -6px;
  right: -1px;
  width: 0;
  height: 0;
  border-top: 7px solid transparent;
  border-bottom: 7px solid transparent;
  border-left: 12px solid currentColor;
  content: "";
}

.reveal .photon-tag-relations {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 0.45rem;
  margin: 0.12rem 0 0.48rem;
}

.reveal .photon-tag-relations > div {
  padding: 0.42rem 0.52rem;
  border: 1px solid var(--hel-border);
  border-radius: 0.30rem;
  background: rgb(10 29 40 / 72%);
  font-size: 0.82em;
  text-align: center;
}

.reveal .photon-tag-relations > .result {
  border-color: rgb(117 221 184 / 58%);
  background: rgb(117 221 184 / 10%);
  color: var(--hel-green);
  font-weight: 760;
}

.reveal .photon-direction-problem {
  display: grid;
  grid-template-rows: 34px repeat(2, minmax(0, 1fr));
  gap: 0.32rem;
  min-height: 405px;
}

.reveal .photon-problem-axis {
  margin: 0 1rem;
}

.reveal .photon-problem-case {
  display: grid;
  grid-template-columns: 42px 1fr 0.42fr 0.72fr 0.42fr 1fr 1.75fr 1.15fr;
  align-items: center;
  gap: 0.18rem;
  min-height: 175px;
  padding: 0.22rem 0.48rem;
  border: 1px solid var(--hel-border);
  border-radius: 0.38rem;
  background: rgb(8 24 34 / 76%);
}

.reveal .photon-problem-number {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 34px;
  height: 34px;
  border: 2px solid #dce8ee;
  border-radius: 50%;
  color: #fff;
  font-size: 0.64em;
  font-weight: 800;
}

.reveal .photon-problem-node {
  position: relative;
  display: flex;
  align-items: center;
  justify-content: center;
  min-width: 78px;
  min-height: 82px;
}

.reveal .photon-problem-particle {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 72px;
  height: 72px;
  border: 2px solid currentColor;
  border-radius: 50%;
  color: #fff;
  font-size: 0.92em;
  font-weight: 760;
}

.reveal .photon-problem-particle.neutrino {
  border-color: var(--hel-cyan);
  background: #124c68;
}

.reveal .photon-problem-particle.source,
.reveal .photon-problem-particle.excited,
.reveal .photon-problem-particle.ground {
  border-color: #ff675e;
  background: #681e2b;
}

.reveal .photon-problem-particle.photon {
  border-color: #ffd85a;
  background: #856000;
}

.reveal .photon-problem-flow,
.reveal .photon-problem-branch {
  color: #8da1ac;
  font-size: 0.78em;
  text-align: center;
}

.reveal .photon-problem-products {
  display: grid;
  grid-template-rows: repeat(2, minmax(0, 1fr));
  gap: 0.08rem;
  min-width: 205px;
}

.reveal .photon-problem-product {
  display: grid;
  grid-template-columns: 42px 1fr;
  align-items: center;
  gap: 0.10rem;
}

.reveal .photon-problem-product.ground-product .photon-problem-particle {
  width: 54px;
  height: 54px;
}

.reveal .reversed-products .photon-problem-product {
  grid-template-columns: 1fr 42px;
}

.reveal .photon-problem-arrow {
  position: absolute;
  z-index: 4;
  top: -31px;
  display: block;
  width: 76px;
  height: 28px;
  color: var(--hel-cyan);
}

.reveal .photon-problem-arrow.momentum {
  top: 72px;
}

.reveal .photon-problem-arrow span {
  position: absolute;
  top: -0.62rem;
  left: 50%;
  transform: translateX(-50%);
  font-size: 0.44em;
  font-weight: 760;
  white-space: nowrap;
}

.reveal .photon-problem-arrow i {
  position: absolute;
  top: 12px;
  width: 100%;
  height: 8px;
  border-radius: 999px;
  background: currentColor;
}

.reveal .photon-problem-arrow.momentum i {
  height: 3px;
}

.reveal .photon-problem-arrow.right {
  left: calc(50% + 36px);
}

.reveal .photon-problem-arrow.left {
  right: calc(50% + 36px);
}

.reveal .photon-problem-arrow.right i::after,
.reveal .photon-problem-arrow.left i::after {
  position: absolute;
  top: 50%;
  width: 0;
  height: 0;
  border-top: 9px solid transparent;
  border-bottom: 9px solid transparent;
  content: "";
  transform: translateY(-50%);
}

.reveal .photon-problem-arrow.right i::after {
  right: -1px;
  border-left: 15px solid currentColor;
}

.reveal .photon-problem-arrow.left i::after {
  left: -1px;
  border-right: 15px solid currentColor;
}

.reveal .photon-problem-products .photon-problem-arrow {
  width: 58px;
}

.reveal .photon-problem-products .photon-problem-node {
  min-width: 72px;
  min-height: 72px;
}

.reveal .photon-problem-products .photon-problem-particle.photon {
  width: 58px;
  height: 58px;
}

.reveal .photon-problem-products .photon-problem-arrow.right {
  left: calc(50% + 29px);
}

.reveal .photon-problem-products .photon-problem-arrow.left {
  right: calc(50% + 29px);
}

.reveal .photon-problem-case .neutrino + .photon-problem-arrow,
.reveal .photon-problem-case .photon + .photon-problem-arrow {
  color: inherit;
}

.reveal .photon-problem-products .photon-problem-arrow {
  color: #ffd85a;
}

.reveal .photon-problem-case.mirrored .photon-problem-node:last-of-type .photon-problem-arrow {
  color: var(--hel-cyan);
}

.reveal .photon-problem-result {
  padding: 0.38rem 0.45rem;
  border: 1px solid rgb(117 221 184 / 44%);
  border-radius: 0.28rem;
  background: rgb(117 221 184 / 8%);
  color: var(--hel-green);
  font-size: 0.68em;
  font-weight: 760;
  text-align: center;
}

.reveal .helicity-tab-summary .math.display {
  margin: 0.50rem 0;
  color: var(--hel-green);
  font-size: 1.18em;
}

.reveal .helicity-quantum-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 0.70rem;
  margin-top: 0.32rem;
}

.reveal .helicity-quantum-card {
  min-width: 0;
  min-height: 185px;
  padding: 0.44rem 0.72rem;
  border: 1px solid var(--hel-border);
  border-radius: 0.32rem;
  background: rgb(102 204 255 / 5%);
  text-align: center;
}

.reveal .helicity-quantum-card:nth-child(even) {
  border-color: rgb(255 173 90 / 35%);
  background: rgb(255 173 90 / 5%);
}

.reveal .helicity-quantum-card p {
  margin: 0.10rem 0;
}

.reveal .helicity-quantum-card .math.display {
  margin: 0.18rem 0;
  color: var(--hel-cyan);
  font-size: 1.15em;
}

.reveal .chirality-calculation {
  margin-top: 0.35rem;
  padding: 0.42rem 0.58rem 0.48rem;
  border: 1px solid #416274;
  border-radius: 0.38rem;
  background: linear-gradient(135deg, #091923, #07131b 72%);
}

.reveal .chirality-calc-title {
  margin-bottom: 0.40rem;
  color: #f2f6f8;
  font-size: 0.72em;
  font-weight: 750;
  text-align: left;
}

.reveal .chirality-calc-title span {
  margin-left: 0.45rem;
  color: var(--hel-muted);
  font-size: 0.82em;
  font-weight: 500;
}

.reveal .chirality-calc-grid {
  display: grid;
  grid-template-columns: 1fr 1.18fr 1fr;
  gap: 0.58rem;
}

.reveal .chirality-calc-step {
  min-width: 0;
  min-height: 205px;
  padding: 0.30rem 0.54rem 0.22rem;
  border-left: 0.12rem solid var(--hel-cyan);
  background: rgb(102 204 255 / 5%);
}

.reveal .chirality-calc-step:nth-child(2) {
  border-left-color: var(--hel-orange);
  background: rgb(255 173 90 / 5%);
}

.reveal .chirality-calc-step:nth-child(3) {
  border-left-color: var(--hel-green);
  background: rgb(117 221 184 / 5%);
}

.reveal .chirality-calc-label {
  color: var(--hel-muted);
  font-size: 0.62em;
  font-weight: 750;
  letter-spacing: 0.02em;
  text-transform: uppercase;
}

.reveal .chirality-calc-step p {
  margin: 0.20rem 0 0;
  font-size: 0.62em;
  line-height: 1.18;
}

.reveal .chirality-calc-step .math.display {
  margin: 0.10rem 0;
  font-size: 1em;
}

.reveal .chirality-calc-limit {
  margin-top: 0.24rem;
  padding-top: 0.24rem;
  border-top: 1px solid #294654;
  color: #eef4f6;
  font-size: 0.67em;
  line-height: 1.25;
  text-align: center;
}

.reveal .chirality-calc-limit mjx-container {
  color: var(--hel-green);
}

.reveal .chirality-calc-limit p {
  margin: 0;
}

.reveal .chirality-prob-grid {
  display: grid;
  grid-template-columns: 1.12fr 0.88fr;
  gap: 0.65rem;
  text-align: left;
}

.reveal .chirality-prob-block {
  min-width: 0;
  padding: 0.02rem 0.42rem 0.05rem;
}

.reveal .chirality-prob-block:nth-child(2) {
  border-left: 1px solid #34515f;
}

.reveal .chirality-prob-label {
  margin-bottom: 0.05rem;
  color: var(--hel-muted);
  font-size: 0.86em;
  font-weight: 750;
  letter-spacing: 0.02em;
  text-transform: uppercase;
}

.reveal .chirality-prob-block .math.display {
  margin: 0.04rem 0 0;
  font-size: 0.96em;
  text-align: center;
}

/* Анимация смены системы отсчёта */
.reveal .frame-change {
  display: grid;
  grid-template-rows: 1fr 155px;
  gap: 0.6rem;
  height: 590px;
  margin-top: 0.25rem;
}

.reveal .frame-main,
.reveal .frame-massless {
  position: relative;
  overflow: hidden;
  border: 1px solid var(--hel-border);
  border-radius: 0.45rem;
  background: var(--hel-panel);
}

.reveal .frame-title {
  position: relative;
  height: 64px;
  color: var(--hel-muted);
  font-size: 0.7em;
  font-weight: 650;
  text-align: center;
}

.reveal .frame-title span {
  position: absolute;
  top: 15px;
  right: 0;
  left: 0;
}

.reveal .frame-title-fast {
  opacity: 0;
}

.reveal .frame-track {
  position: relative;
  height: 265px;
  border-top: 1px solid #203746;
  border-bottom: 1px solid #203746;
  background: linear-gradient(180deg, transparent 49.5%, #78909c 49.5%, #78909c 50.5%, transparent 50.5%);
}

.reveal .frame-neutrino,
.reveal .light-particle {
  position: absolute;
  z-index: 4;
  display: grid;
  width: 86px;
  height: 86px;
  place-items: center;
  border: 2px solid var(--hel-rose);
  border-radius: 50%;
  background: #3d1727;
  box-shadow: 0 0 25px rgb(255 120 151 / 20%);
  font: italic 600 0.9em Georgia, serif;
}

.reveal .frame-neutrino {
  top: 88px;
  left: calc(50% - 43px);
}

.reveal .frame-observer {
  position: absolute;
  z-index: 3;
  top: 166px;
  left: 7%;
  width: 96px;
  height: 42px;
  border: 2px solid var(--hel-violet);
  border-radius: 18px 28px 9px 9px;
  background: #221c40;
}

.reveal .frame-observer::before,
.reveal .frame-observer::after {
  position: absolute;
  bottom: -10px;
  width: 18px;
  height: 18px;
  content: "";
  border-radius: 50%;
  background: #d8d4ff;
}

.reveal .frame-observer::before { left: 12px; }
.reveal .frame-observer::after { right: 12px; }

.reveal .frame-observer span {
  position: absolute;
  top: 48px;
  left: -18px;
  color: var(--hel-violet);
  font-size: 0.46em;
  white-space: nowrap;
}

.reveal .frame-vector,
.reveal .res-vector {
  position: absolute;
  z-index: 2;
  height: 0;
}

.reveal .frame-vector::after,
.reveal .res-vector::after {
  position: absolute;
  top: 50%;
  width: 0;
  height: 0;
  content: "";
  transform: translateY(-50%);
  border-style: solid;
}

.reveal .frame-vector span,
.reveal .res-vector span {
  position: absolute;
  font-size: 0.56em;
  white-space: nowrap;
}

.reveal .frame-spin {
  top: 131px;
  left: calc(50% + 43px);
  width: 155px;
  height: 12px;
  border-top: 0;
  background: var(--hel-cyan);
  color: var(--hel-cyan);
  transform: translateY(-50%);
}

.reveal .frame-spin::after {
  right: -2px;
  border-width: 18px 0 18px 27px;
  border-color: transparent transparent transparent var(--hel-cyan);
}

.reveal .frame-spin span { top: -52px; left: 43px; }

.reveal .frame-momentum-right,
.reveal .frame-momentum-left {
  top: 131px;
  width: 275px;
  height: 3px;
  border-top: 0;
  background: var(--hel-orange);
  color: var(--hel-orange);
  transform: translateY(-50%);
}

.reveal .frame-momentum-right { left: calc(50% + 43px); }
.reveal .frame-momentum-left { right: calc(50% + 43px); opacity: 0; }

.reveal .frame-momentum-right::after {
  right: -2px;
  border-width: 9px 0 9px 15px;
  border-color: transparent transparent transparent var(--hel-orange);
}

.reveal .frame-momentum-left::after {
  left: -2px;
  transform: translateY(-50%) rotate(180deg);
  border-width: 9px 0 9px 15px;
  border-color: transparent transparent transparent var(--hel-orange);
}

.reveal .frame-momentum-right span { top: 10px; right: 48px; }
.reveal .frame-momentum-left span { top: 10px; left: 48px; }

.reveal .frame-helicity {
  position: relative;
  height: 70px;
  color: var(--hel-green);
  font-size: 0.9em;
  font-weight: 700;
  text-align: center;
}

.reveal .frame-helicity span {
  position: absolute;
  top: 14px;
  right: 0;
  left: 0;
}

.reveal .frame-h-minus { opacity: 0; color: var(--hel-rose); }

.reveal .frame-massless {
  display: grid;
  grid-template-columns: 255px 1fr 260px;
  align-items: center;
  padding: 0 0.7rem;
}

.reveal .massless-label,
.reveal .massless-note {
  font-size: 0.58em;
}

.reveal .massless-label { color: var(--hel-cyan); font-weight: 650; }
.reveal .massless-note { color: var(--hel-muted); text-align: right; }

.reveal .massless-track {
  position: relative;
  height: 100%;
  overflow: hidden;
}

.reveal .light-particle {
  top: 47px;
  left: 68%;
  width: 62px;
  height: 62px;
  border-color: var(--hel-cyan);
  background: #10334a;
  font-size: 0.65em;
}

.reveal .light-front {
  position: absolute;
  top: 77px;
  left: calc(68% + 62px);
  width: 150px;
  height: 3px;
  background: linear-gradient(90deg, var(--hel-cyan), transparent);
}

.reveal .light-front::after {
  position: absolute;
  top: 50%;
  right: -2px;
  width: 0;
  height: 0;
  content: "";
  transform: translateY(-50%);
  border-width: 8px 0 8px 14px;
  border-style: solid;
  border-color: transparent transparent transparent rgb(102 204 255 / 45%);
}

.reveal .light-front span {
  position: absolute;
  top: -34px;
  left: 28px;
  color: var(--hel-cyan);
  font-size: 0.52em;
  white-space: nowrap;
}

.reveal .light-observer {
  position: absolute;
  z-index: 3;
  top: 56px;
  left: 8%;
  width: 96px;
  height: 42px;
  border: 2px solid var(--hel-violet);
  border-radius: 18px 28px 9px 9px;
  background: #221c40;
  color: var(--hel-violet);
}

.reveal .light-observer::before,
.reveal .light-observer::after {
  position: absolute;
  bottom: -10px;
  width: 18px;
  height: 18px;
  content: "";
  border-radius: 50%;
  background: #d8d4ff;
}

.reveal .light-observer::before { left: 12px; }
.reveal .light-observer::after { right: 12px; }

.reveal .light-observer span {
  position: absolute;
  top: 48px;
  left: -18px;
  font-size: 0.46em;
  white-space: nowrap;
}

.reveal .light-observer b {
  position: absolute;
  top: -34px;
  left: -2px;
  color: var(--hel-violet);
  font-size: 0.48em;
  font-weight: 650;
  white-space: nowrap;
}

.reveal .frame-change.is-active .frame-observer {
  animation: hel-observer-pass 6.8s ease-in-out infinite;
}

.reveal .frame-change.is-active .frame-title-lab,
.reveal .frame-change.is-active .frame-h-plus,
.reveal .frame-change.is-active .frame-momentum-right {
  animation: hel-before-pass 6.8s ease-in-out infinite;
}

.reveal .frame-change.is-active .frame-title-fast,
.reveal .frame-change.is-active .frame-h-minus,
.reveal .frame-change.is-active .frame-momentum-left {
  animation: hel-after-pass 6.8s ease-in-out infinite;
}

@keyframes hel-observer-pass {
  0%, 12% { left: 7%; }
  56%, 88% { left: 84%; }
  100% { left: 7%; }
}

@keyframes hel-before-pass {
  0%, 44% { opacity: 1; }
  52%, 94% { opacity: 0; }
  100% { opacity: 1; }
}

@keyframes hel-after-pass {
  0%, 44% { opacity: 0; }
  52%, 94% { opacity: 1; }
  100% { opacity: 0; }
}

/* Команда эксперимента */
.reveal .experiment-team {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 0.9rem;
  margin: 1rem 0;
}

.reveal .team-card {
  padding: 0.42rem;
  border: 1px solid var(--hel-border);
  border-radius: 0.4rem;
  background: var(--hel-panel);
  text-align: center;
}

.reveal .team-card p { margin: 0.22rem 0 0; }

.reveal .team-photo {
  display: block;
  width: 100%;
  height: 235px;
  margin: 0 auto;
  border-radius: 0.25rem;
  object-fit: cover;
  object-position: center 30%;
}

.reveal .team-card strong {
  font-size: 0.72em;
}

.reveal .team-sources {
  margin: -0.45rem 0 0.45rem;
  color: var(--hel-muted);
  font-size: 0.38em;
  text-align: right;
}

.reveal .team-initials {
  display: grid;
  width: 92px;
  height: 92px;
  margin: 0 auto 0.4rem;
  place-items: center;
  border: 2px solid var(--hel-cyan);
  border-radius: 50%;
  background: #102b3b;
  color: var(--hel-cyan);
  font-size: 0.72em;
  font-weight: 750;
}

/* Передача проекции спина */
.reveal .spin-tagging {
  position: relative;
  height: 585px;
  margin-top: 0.25rem;
  overflow: hidden;
  border: 1px solid var(--hel-border);
  border-radius: 0.45rem;
  background: radial-gradient(circle at 30% 50%, #0d2937 0, var(--hel-panel) 55%);
}

.reveal .tag-axis {
  position: absolute;
  top: 49%;
  right: 4%;
  left: 4%;
  height: 2px;
  background: #a7b9c4;
}

.reveal .tag-axis::after {
  position: absolute;
  top: -7px;
  right: -2px;
  width: 0;
  height: 0;
  content: "";
  border-width: 8px 0 8px 14px;
  border-style: solid;
  border-color: transparent transparent transparent #a7b9c4;
}

.reveal .tag-axis span {
  position: absolute;
  top: 10px;
  right: 0;
  font-size: 0.55em;
}

.reveal .tag-nucleus,
.reveal .tag-daughter,
.reveal .tag-ground {
  position: absolute;
  z-index: 3;
  display: grid;
  width: 116px;
  height: 116px;
  place-items: center;
  border: 2px solid var(--hel-orange);
  border-radius: 50%;
  background: #41260e;
  font: italic 600 0.78em Georgia, serif;
  text-align: center;
}

.reveal .tag-nucleus small,
.reveal .tag-daughter small,
.reveal .tag-ground small {
  display: block;
  margin-top: -24px;
  color: var(--hel-muted);
  font: 400 0.5em system-ui, sans-serif;
}

.reveal .tag-a { top: 225px; left: 17%; }

.reveal .tag-electron {
  position: absolute;
  z-index: 4;
  top: 250px;
  left: 5%;
  color: var(--hel-cyan);
  font-size: 0.72em;
}

.reveal .tag-electron-spin {
  position: absolute;
  top: -45px;
  left: -10px;
  font-size: 0.7em;
}

.reveal .tag-capture-flash,
.reveal .resonance-flash {
  position: absolute;
  z-index: 6;
  width: 20px;
  height: 20px;
  border-radius: 50%;
  background: #fff8c5;
  box-shadow: 0 0 0 0 rgb(255 230 120 / 80%);
  opacity: 0;
}

.reveal .tag-capture-flash { top: 273px; left: calc(17% + 48px); }

.reveal .tag-products,
.reveal .tag-photon-stage { opacity: 0; }

.reveal .tag-daughter { top: 225px; left: 35%; }
.reveal .tag-neutrino,
.reveal .tag-photon {
  position: absolute;
  z-index: 4;
  display: grid;
  width: 70px;
  height: 70px;
  place-items: center;
  border: 2px solid var(--hel-rose);
  border-radius: 50%;
  background: #3d1727;
  font: italic 600 0.56em Georgia, serif;
}

.reveal .tag-neutrino { top: 248px; right: 10%; }
.reveal .tag-ground { top: 225px; left: 35%; border-color: var(--hel-green); background: #12352b; }
.reveal .tag-photon { top: 248px; left: 9%; border-color: var(--hel-cyan); background: #102f43; }

.reveal .tag-vector {
  position: absolute;
  z-index: 2;
  height: 0;
}

.reveal .tag-vector::after {
  position: absolute;
  top: 50%;
  width: 0;
  height: 0;
  content: "";
  transform: translateY(-50%);
  border-style: solid;
}

.reveal .tag-vector span { position: absolute; font-size: 0.5em; white-space: nowrap; }

.reveal .tag-recoil,
.reveal .tag-gamma-momentum {
  top: 309px;
  right: 65%;
  width: 180px;
  border-top: 4px solid var(--hel-orange);
  color: var(--hel-orange);
}

.reveal .tag-recoil::after,
.reveal .tag-gamma-momentum::after {
  left: -2px;
  transform: translateY(-50%) rotate(180deg);
  border-width: 9px 0 9px 15px;
  border-color: transparent transparent transparent var(--hel-orange);
}

.reveal .tag-recoil span,
.reveal .tag-gamma-momentum span { top: 12px; left: 35px; }

.reveal .tag-nu-momentum {
  top: 309px;
  left: 39%;
  width: 390px;
  border-top: 4px solid var(--hel-orange);
  color: var(--hel-orange);
}

.reveal .tag-nu-momentum::after {
  right: -2px;
  border-width: 9px 0 9px 15px;
  border-color: transparent transparent transparent var(--hel-orange);
}

.reveal .tag-nu-momentum span { top: 12px; right: 75px; }

.reveal .tag-nu-spin,
.reveal .tag-gamma-spin {
  top: 270px;
  right: calc(10% + 68px);
  width: 120px;
  border-top: 9px solid var(--hel-cyan);
  color: var(--hel-cyan);
}

.reveal .tag-nu-spin::after,
.reveal .tag-gamma-spin::after {
  left: -2px;
  transform: translateY(-50%) rotate(180deg);
  border-width: 14px 0 14px 20px;
  border-color: transparent transparent transparent var(--hel-cyan);
}

.reveal .tag-nu-spin span,
.reveal .tag-gamma-spin span { top: -48px; left: 22px; }

.reveal .tag-gamma-spin { right: auto; left: 9%; }

.reveal .tag-equation {
  position: absolute;
  right: 0;
  bottom: 35px;
  left: 0;
  color: var(--hel-green);
  font-size: 0.72em;
  font-weight: 650;
  text-align: center;
}

.reveal .tag-equation span { position: absolute; right: 0; bottom: 0; left: 0; opacity: 0; }

.reveal .spin-tagging.is-active .tag-electron { animation: tag-electron-in 7.5s ease-in-out infinite; }
.reveal .spin-tagging.is-active .tag-source { animation: tag-source-out 7.5s ease-in-out infinite; }
.reveal .spin-tagging.is-active .tag-capture-flash { animation: tag-flash 7.5s ease-in-out infinite; }
.reveal .spin-tagging.is-active .tag-products { animation: tag-products-show 7.5s ease-in-out infinite; }
.reveal .spin-tagging.is-active .tag-photon-stage { animation: tag-photon-show 7.5s ease-in-out infinite; }
.reveal .spin-tagging.is-active .tag-eq-one { animation: tag-eq-one 7.5s ease-in-out infinite; }
.reveal .spin-tagging.is-active .tag-eq-two { animation: tag-eq-two 7.5s ease-in-out infinite; }

@keyframes tag-electron-in {
  0%, 8% { transform: translateX(0); opacity: 1; }
  24% { transform: translateX(180px); opacity: 1; }
  28%, 100% { transform: translateX(180px); opacity: 0; }
}

@keyframes tag-source-out {
  0%, 25% { opacity: 1; }
  31%, 88% { opacity: 0; }
  100% { opacity: 1; }
}

@keyframes tag-flash {
  0%, 23%, 31%, 100% { opacity: 0; box-shadow: 0 0 0 0 rgb(255 230 120 / 70%); }
  27% { opacity: 1; box-shadow: 0 0 0 90px rgb(255 230 120 / 0%); }
}

@keyframes tag-products-show {
  0%, 27% { opacity: 0; }
  34%, 61% { opacity: 1; }
  68%, 100% { opacity: 0; }
}

@keyframes tag-photon-show {
  0%, 60% { opacity: 0; }
  68%, 91% { opacity: 1; }
  100% { opacity: 0; }
}

@keyframes tag-eq-one {
  0%, 32% { opacity: 0; }
  39%, 60% { opacity: 1; }
  67%, 100% { opacity: 0; }
}

@keyframes tag-eq-two {
  0%, 63% { opacity: 0; }
  71%, 92% { opacity: 1; }
  100% { opacity: 0; }
}

/* Медленный двухсценный разбор электронного захвата */
.reveal .spin-tagging {
  height: 600px;
  background:
    radial-gradient(circle at 33% 55%, rgb(22 65 86 / 55%), transparent 36%),
    linear-gradient(135deg, #091923, #07131b 72%);
}

.reveal .tag-scene-steps {
  position: absolute;
  z-index: 20;
  top: 0;
  right: 0;
  left: 0;
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr)) 190px;
  height: 72px;
  border-bottom: 1px solid var(--hel-border);
  background: rgb(5 15 22 / 92%);
}

.reveal .tag-scene-step {
  display: flex;
  gap: 0.58rem;
  align-items: center;
  padding: 0 1rem;
  color: var(--hel-muted);
  font-size: 0.63em;
  font-weight: 720;
  opacity: 0.42;
}

.reveal .tag-scene-step + .tag-scene-step {
  border-left: 1px solid var(--hel-border);
}

.reveal .tag-step-capture {
  color: #f5f8fa;
  background: rgb(102 204 255 / 9%);
  opacity: 1;
}

.reveal .tag-scene-step b {
  display: grid;
  width: 37px;
  height: 37px;
  flex: 0 0 auto;
  place-items: center;
  border: 1px solid rgb(102 204 255 / 55%);
  border-radius: 50%;
  background: rgb(102 204 255 / 10%);
  color: var(--hel-cyan);
  font-size: 0.92em;
}

.reveal .tag-play-button {
  display: flex;
  gap: 0.38rem;
  align-items: center;
  align-self: center;
  justify-content: center;
  height: 46px;
  margin: 0 15px;
  padding: 0 0.66rem;
  border: 1px solid rgb(117 221 184 / 62%);
  border-radius: 999px;
  background: rgb(117 221 184 / 10%);
  color: #eafbf5;
  font: 700 0.47em/1 system-ui, sans-serif;
  cursor: pointer;
}

.reveal .tag-play-button:hover,
.reveal .tag-play-button:focus-visible {
  background: rgb(117 221 184 / 20%);
  box-shadow: 0 0 0 3px rgb(117 221 184 / 14%);
  outline: none;
}

.reveal .tag-play-icon {
  color: var(--hel-green);
  font-size: 0.92em;
}

.reveal .tag-scene-window {
  position: absolute;
  top: 72px;
  right: 0;
  bottom: 0;
  left: 0;
}

.reveal .tag-scene {
  position: absolute;
  inset: 0;
  padding: 0.58rem 0.92rem 0.50rem;
  opacity: 0;
}

.reveal .tag-capture-scene {
  opacity: 1;
}

.reveal .tag-scene-kicker {
  position: absolute;
  top: 16px;
  right: 0;
  left: 0;
  color: var(--hel-muted);
  font-size: 0.57em;
  font-weight: 680;
  letter-spacing: 0.025em;
  text-align: center;
  text-transform: uppercase;
}

.reveal .tag-capture-layout,
.reveal .tag-excited-layout {
  position: absolute;
  top: 55px;
  right: 46px;
  bottom: 62px;
  left: 46px;
  display: grid;
  grid-template-columns: 1.28fr 0.72fr;
  gap: 1.05rem;
  align-items: center;
}

.reveal .tag-capture-layout {
  bottom: 28px;
}

.reveal .tag-excited-layout {
  bottom: 28px;
}

.reveal .tag-atom-model,
.reveal .tag-excited-model {
  position: relative;
  height: 100%;
  min-width: 0;
}

.reveal .tag-orbit-ring {
  position: absolute;
  z-index: 1;
  top: 50%;
  left: 50%;
  width: 420px;
  height: 420px;
  border: 2px solid rgb(102 204 255 / 52%);
  border-radius: 50%;
  box-shadow: inset 0 0 35px rgb(102 204 255 / 5%);
  transform: translate(-50%, -50%);
}

.reveal .tag-a-core,
.reveal .tag-b-star-core {
  position: absolute;
  z-index: 6;
  top: 50%;
  left: 50%;
  display: grid;
  width: 170px;
  height: 170px;
  place-items: center;
  border: 3px solid var(--hel-orange);
  border-radius: 50%;
  background: radial-gradient(circle at 35% 28%, #755019, #3f250d 68%);
  box-shadow: 0 0 35px rgb(255 173 90 / 24%);
  color: #fff5e4;
  font: italic 650 1.05em Georgia, serif;
  text-align: center;
  transform: translate(-50%, -50%);
}

.reveal .tag-a-core small,
.reveal .tag-b-star-core small {
  display: block;
  margin-top: -35px;
  color: #f0d9b8;
  font: 500 0.44em/1.15 system-ui, sans-serif;
}

.reveal .tag-orbit-rotor {
  position: absolute;
  z-index: 9;
  top: 50%;
  left: 50%;
  width: 0;
  height: 0;
  transform-origin: 0 0;
}

.reveal .tag-orbit-arm {
  position: absolute;
  width: 0;
  height: 0;
  transform: translateX(210px);
}

.reveal .tag-orbit-electron {
  position: absolute;
  top: -35px;
  left: -35px;
  display: grid;
  width: 70px;
  height: 70px;
  place-items: center;
  border: 2px solid var(--hel-cyan);
  border-radius: 50%;
  background: #10344a;
  box-shadow: 0 0 24px rgb(102 204 255 / 28%);
  color: #e6f7ff;
  font: italic 650 0.58em Georgia, serif;
  text-align: center;
}

.reveal .tag-orbit-electron small {
  position: absolute;
  top: 76px;
  left: 50%;
  color: var(--hel-cyan);
  font: 500 0.38em/1.1 system-ui, sans-serif;
  white-space: nowrap;
  transform: translateX(-50%);
}

.reveal .tag-electron-spin-arrow {
  position: absolute;
  z-index: 12;
  top: 31px;
  left: 70px;
  width: 118px;
  height: 9px;
  color: var(--hel-green);
  background: var(--hel-green);
  box-shadow: 0 0 8px rgb(117 221 184 / 32%);
}

.reveal .tag-electron-spin-arrow::after {
  position: absolute;
  top: -8px;
  right: -1px;
  width: 0;
  height: 0;
  content: "";
  border-width: 12px 0 12px 18px;
  border-style: solid;
  border-color: transparent transparent transparent var(--hel-green);
}

.reveal .tag-electron-spin-arrow span {
  position: absolute;
  top: -36px;
  left: 4px;
  color: var(--hel-green);
  font: 600 0.88em/1 system-ui, sans-serif;
  white-space: nowrap;
}

.reveal .tag-capture-flash {
  top: 50%;
  left: 50%;
  width: 24px;
  height: 24px;
  transform: translate(-50%, -50%);
}

.reveal .tag-scene-card,
.reveal .tag-excited-info {
  min-width: 0;
  padding: 0.72rem 0.82rem;
  border-left: 0.14rem solid var(--hel-cyan);
  border-radius: 0.25rem;
  background: rgb(102 204 255 / 6%);
  font-size: 0.68em;
  line-height: 1.28;
}

.reveal .tag-scene-card p,
.reveal .tag-excited-info p {
  margin: 0.48rem 0;
}

.reveal .tag-scene-formula {
  margin-bottom: 0.62rem;
  color: #f5f8fa;
  font-size: 1.28em;
  font-weight: 650;
  text-align: center;
}

.reveal .tag-scene-caption {
  position: absolute;
  right: 42px;
  bottom: 16px;
  left: 42px;
  padding: 0.24rem 0.55rem;
  border-left: 0.12rem solid var(--hel-green);
  background: rgb(117 221 184 / 8%);
  color: #e9f8f2;
  font-size: 0.54em;
  font-weight: 650;
  text-align: center;
}

.reveal .tag-excited-layout {
  grid-template-columns: 0.92fr 1.08fr;
}

.reveal .tag-b-star-core {
  width: 220px;
  height: 220px;
  border-width: 4px;
  background: radial-gradient(circle at 35% 28%, #8b5f1d, #492a0e 68%);
  box-shadow: 0 0 55px rgb(255 173 90 / 32%);
  font-size: 1.28em;
}

.reveal .tag-b-spin-arrow {
  position: absolute;
  z-index: 12;
  top: 50%;
  left: calc(50% + 110px);
  width: 180px;
  height: 9px;
  color: var(--hel-cyan);
  background: var(--hel-cyan);
  box-shadow: 0 0 12px rgb(102 204 255 / 36%);
  transform: translateY(-50%);
}

.reveal .tag-b-spin-arrow::after {
  position: absolute;
  top: -9px;
  right: -1px;
  width: 0;
  height: 0;
  content: "";
  border-width: 13px 0 13px 19px;
  border-style: solid;
  border-color: transparent transparent transparent var(--hel-cyan);
}

.reveal .tag-b-spin-arrow span {
  position: absolute;
  top: -40px;
  left: 8px;
  color: var(--hel-cyan);
  font-size: 0.53em;
  font-weight: 650;
  white-space: nowrap;
}

.reveal .tag-b-recoil-arrow {
  position: absolute;
  z-index: 12;
  top: calc(50% - 1px);
  right: calc(50% + 110px);
  width: 108px;
  height: 3px;
  background: var(--hel-orange);
}

.reveal .tag-b-recoil-arrow::before {
  position: absolute;
  top: -6px;
  left: -1px;
  width: 0;
  height: 0;
  content: "";
  border-width: 7px 12px 7px 0;
  border-style: solid;
  border-color: transparent var(--hel-orange) transparent transparent;
}

.reveal .tag-b-recoil-arrow span {
  position: absolute;
  top: 13px;
  right: 28px;
  color: var(--hel-orange);
  font-size: 0.65em;
  font-weight: 650;
  white-space: nowrap;
}

.reveal .tag-excited-info {
  border-left-color: var(--hel-orange);
  background: rgb(255 173 90 / 6%);
}

.reveal .tag-static-neutrino {
  display: grid;
  width: 94px;
  height: 94px;
  margin: 0;
  place-items: center;
  border: 2px solid var(--hel-rose);
  border-radius: 50%;
  background: #3d1727;
  color: #ffeaf0;
  font: italic 650 0.65em Georgia, serif;
}

.reveal .tag-neutrino-state {
  position: relative;
  display: grid;
  width: 430px;
  height: 108px;
  margin: 0.34rem auto 0.42rem;
  place-items: center;
}

.reveal .tag-neutrino-spin-arrow {
  position: absolute;
  top: calc(50% - 4px);
  right: calc(50% + 47px);
  width: 138px;
  height: 9px;
  color: var(--hel-green);
  background: var(--hel-green);
  box-shadow: 0 0 8px rgb(117 221 184 / 28%);
}

.reveal .tag-neutrino-spin-arrow::before {
  position: absolute;
  top: -8px;
  left: -1px;
  width: 0;
  height: 0;
  content: "";
  border-width: 12px 18px 12px 0;
  border-style: solid;
  border-color: transparent var(--hel-green) transparent transparent;
}

.reveal .tag-neutrino-spin-arrow span {
  position: absolute;
  top: -36px;
  right: 6px;
  color: var(--hel-green);
  font-size: 0.75em;
  font-weight: 650;
  white-space: nowrap;
}

.reveal .tag-neutrino-momentum-arrow {
  position: absolute;
  top: calc(50% - 1px);
  left: calc(50% + 47px);
  width: 150px;
  height: 3px;
  background: var(--hel-orange);
}

.reveal .tag-neutrino-momentum-arrow::after {
  position: absolute;
  top: -6px;
  right: -1px;
  width: 0;
  height: 0;
  content: "";
  border-width: 7px 0 7px 12px;
  border-style: solid;
  border-color: transparent transparent transparent var(--hel-orange);
}

.reveal .tag-neutrino-momentum-arrow span {
  position: absolute;
  top: 13px;
  left: 48px;
  color: var(--hel-orange);
  font-size: 0.75em;
  font-weight: 650;
  white-space: nowrap;
}

.reveal .tag-spin-balance {
  padding: 0.26rem 0.42rem;
  border-radius: 0.22rem;
  background: rgb(117 221 184 / 8%);
  color: #eaf8f3;
  text-align: center;
}

.reveal .spin-tagging.is-playing .tag-capture-scene {
  animation: tag-slow-capture-scene 20s ease-in-out 1 both;
}

.reveal .spin-tagging.is-playing .tag-excited-scene {
  animation: tag-slow-excited-scene 20s ease-in-out 1 both;
}

.reveal .spin-tagging.is-playing .tag-step-capture {
  animation: tag-slow-step-one 20s ease-in-out 1 both;
}

.reveal .spin-tagging.is-playing .tag-step-excited {
  animation: tag-slow-step-two 20s ease-in-out 1 both;
}

.reveal .spin-tagging.is-playing .tag-orbit-rotor {
  animation: tag-slow-orbit 20s linear 1 both;
}

.reveal .spin-tagging.is-playing .tag-orbit-arm {
  animation: tag-slow-radius 20s ease-in 1 both;
}

.reveal .spin-tagging.is-playing .tag-orbit-electron {
  animation: tag-slow-electron 20s linear 1 both;
}

.reveal .spin-tagging.is-playing .tag-capture-flash {
  animation: tag-slow-flash 20s ease-out 1 both;
}

.reveal .spin-tagging.is-playing .tag-neutrino-state {
  animation: tag-neutrino-departure 20s ease-out 1 both;
}

.reveal .spin-tagging.is-playing .tag-excited-model {
  animation: tag-nuclear-recoil 20s ease-out 1 both;
}

@keyframes tag-slow-capture-scene {
  0%, 56% { opacity: 1; }
  62%, 100% { opacity: 0; }
}

@keyframes tag-slow-excited-scene {
  0%, 58% { opacity: 0; }
  64%, 100% { opacity: 1; }
}

@keyframes tag-slow-step-one {
  0%, 56% { color: #f5f8fa; opacity: 1; background: rgb(102 204 255 / 9%); }
  62%, 100% { color: var(--hel-muted); opacity: 0.42; background: transparent; }
}

@keyframes tag-slow-step-two {
  0%, 58% { color: var(--hel-muted); opacity: 0.42; background: transparent; }
  64%, 100% { color: #f5f8fa; opacity: 1; background: rgb(255 173 90 / 9%); }
}

@keyframes tag-slow-orbit {
  0%, 8% { transform: rotate(0deg); }
  46% { transform: rotate(720deg); }
  55%, 100% { transform: rotate(720deg); }
}

@keyframes tag-slow-radius {
  0%, 46% { transform: translateX(210px); }
  55%, 100% { transform: translateX(0); }
}

@keyframes tag-slow-electron {
  0%, 8% { opacity: 1; transform: rotate(0deg); }
  46% { opacity: 1; transform: rotate(-720deg); }
  54% { opacity: 1; transform: rotate(-720deg); }
  56%, 100% { opacity: 0; transform: rotate(-720deg); }
}

@keyframes tag-slow-flash {
  0%, 52%, 60%, 100% {
    opacity: 0;
    box-shadow: 0 0 0 0 rgb(255 230 120 / 72%);
  }
  55% {
    opacity: 1;
    box-shadow: 0 0 0 125px rgb(255 230 120 / 0%);
  }
}

@keyframes tag-neutrino-departure {
  0%, 61% {
    opacity: 0;
    transform: translateX(-150px);
  }
  66% {
    opacity: 1;
    transform: translateX(-150px);
  }
  84%, 100% {
    opacity: 1;
    transform: translateX(0);
  }
}

@keyframes tag-nuclear-recoil {
  0%, 66% {
    transform: translateX(0);
  }
  84%, 100% {
    transform: translateX(-34px);
  }
}

/* Анализатор круговой поляризации */
.reveal .photon-analyzer {
  position: relative;
  height: 485px;
  margin-top: 0.3rem;
  overflow: hidden;
  border: 1px solid var(--hel-border);
  border-radius: 0.45rem;
  background: var(--hel-panel);
}

.reveal .analyzer-beam {
  color: var(--hel-cyan);
}

.reveal .analyzer-source {
  position: absolute;
  top: 185px;
  left: 5%;
  display: grid;
  width: 70px;
  height: 70px;
  place-items: center;
  border: 2px solid var(--hel-cyan);
  border-radius: 50%;
  background: #102f43;
  color: var(--hel-cyan);
  font: italic 650 0.65em Georgia, serif;
}

.reveal .analyzer-wave {
  position: absolute;
  top: 220px;
  left: calc(5% + 70px);
  width: 30%;
  height: 4px;
  background: repeating-linear-gradient(90deg, var(--hel-cyan) 0 14px, transparent 14px 26px);
}

.reveal .analyzer-photon-spin {
  position: absolute;
  top: 157px;
  left: calc(5% + 9px);
  width: 108px;
  height: 10px;
  color: var(--hel-cyan);
}

.reveal .analyzer-photon-spin i {
  position: absolute;
  top: 0;
  left: 0;
  width: 88px;
  height: 10px;
  background: currentColor;
}

.reveal .analyzer-photon-spin i::after {
  position: absolute;
  top: -9px;
  right: -22px;
  width: 0;
  height: 0;
  content: "";
  border-top: 14px solid transparent;
  border-bottom: 14px solid transparent;
  border-left: 23px solid currentColor;
}

.reveal .analyzer-photon-spin b {
  position: absolute;
  top: -32px;
  left: 40px;
  font-size: 0.55em;
  white-space: nowrap;
}

.reveal .iron-block {
  position: absolute;
  top: 65px;
  left: 39%;
  width: 260px;
  height: 320px;
  border: 2px solid #8fa4b1;
  border-radius: 0.35rem;
  background: linear-gradient(135deg, #31404a, #101c24);
  box-shadow: inset 0 0 30px rgb(255 255 255 / 5%);
}

.reveal .iron-label {
  position: absolute;
  top: -46px;
  right: -80px;
  left: -80px;
  color: var(--hel-muted);
  font-size: 0.55em;
  text-align: center;
}

.reveal .iron-field {
  position: absolute;
  top: 151px;
  left: 46px;
  width: 166px;
  height: 9px;
  background: var(--hel-orange);
  transform-origin: 50% 50%;
}

.reveal .iron-field::after {
  position: absolute;
  top: -9px;
  right: -20px;
  width: 0;
  height: 0;
  content: "";
  border-top: 14px solid transparent;
  border-bottom: 14px solid transparent;
  border-left: 22px solid var(--hel-orange);
}

.reveal .iron-field span {
  position: absolute;
  top: -39px;
  left: 72px;
  color: var(--hel-orange);
  font-size: 0.7em;
}

.reveal .iron-electrons {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 45px 42px;
  padding: 70px 32px;
  transform-origin: 50% 50%;
}

.reveal .iron-electrons i {
  position: relative;
  width: 22px;
  height: 22px;
  border-radius: 50%;
  background: var(--hel-rose);
}

.reveal .iron-electrons i::after {
  position: absolute;
  top: 7px;
  left: 18px;
  width: 35px;
  height: 8px;
  content: "";
  background: var(--hel-cyan);
}

.reveal .iron-electrons i::before {
  position: absolute;
  top: 0;
  left: 51px;
  width: 0;
  height: 0;
  content: "";
  border-top: 11px solid transparent;
  border-bottom: 11px solid transparent;
  border-left: 15px solid var(--hel-cyan);
}

.reveal .analyzer-detector {
  position: absolute;
  top: 135px;
  right: 7%;
  width: 105px;
  height: 190px;
  border: 2px solid var(--hel-green);
  border-radius: 0.35rem;
  background: #12352b;
}

.reveal .detector-face {
  position: absolute;
  top: 14px;
  bottom: 14px;
  left: 15px;
  width: 8px;
  background: var(--hel-green);
}

.reveal .detector-label {
  position: absolute;
  right: -12px;
  bottom: -42px;
  left: -12px;
  color: var(--hel-green);
  font-size: 0.52em;
  text-align: center;
}

.reveal .analyzer-histogram {
  position: absolute;
  right: 17.5%;
  bottom: 13px;
  width: 225px;
  height: 184px;
  border-bottom: 3px solid var(--hel-muted);
  border-left: 3px solid var(--hel-muted);
}

.reveal .histogram-title {
  position: absolute;
  top: -32px;
  right: -20px;
  left: -20px;
  color: var(--hel-muted);
  font-size: 0.48em;
  font-weight: 700;
  text-align: center;
}

.reveal .histogram-axis span {
  position: absolute;
  top: 58px;
  left: -67px;
  color: var(--hel-muted);
  font-size: 0.42em;
  transform: rotate(-90deg);
}

.reveal .analyzer-counts {
  position: absolute;
  inset: 0 9px 0 17px;
  display: flex;
  gap: 30px;
  align-items: end;
  justify-content: center;
}

.reveal .count-row {
  position: relative;
  display: flex;
  width: 66px;
  height: 100%;
  align-items: end;
  justify-content: center;
  font-size: 0.5em;
}

.reveal .count-row strong {
  position: absolute;
  top: -2px;
  left: 50%;
  transform: translateX(-50%);
}

.reveal .count-row span {
  position: absolute;
  bottom: -34px;
  left: 50%;
  white-space: nowrap;
  transform: translateX(-50%);
}

.reveal .count-bar {
  width: 58px;
  height: 100%;
  border-radius: 7px 7px 0 0;
  background: var(--hel-cyan);
  transform: scaleY(0);
  transform-origin: 50% 100%;
}

.reveal .count-minus { background: var(--hel-orange); }

.reveal .photon-analyzer.is-active .analyzer-wave {
  animation: analyzer-wave 12s linear 1 both;
}

.reveal .photon-analyzer.is-active .iron-field {
  animation: analyzer-field 12s ease-in-out 1 both;
}

.reveal .photon-analyzer.is-active .iron-field span {
  animation: analyzer-field-label 12s ease-in-out 1 both;
}

.reveal .photon-analyzer.is-active .iron-electrons {
  animation: analyzer-electrons 12s ease-in-out 1 both;
}

.reveal .photon-analyzer.is-active .count-plus {
  animation: analyzer-count-plus 12s ease-in-out 1 both;
}

.reveal .photon-analyzer.is-active .count-minus {
  animation: analyzer-count-minus 12s ease-in-out 1 both;
}

@keyframes analyzer-wave {
  to { background-position: 572px 0; }
}

@keyframes analyzer-field {
  0%, 48% { transform: rotate(0); }
  58%, 100% { transform: rotate(180deg); }
}

@keyframes analyzer-field-label {
  0%, 48% { transform: rotate(0); }
  58%, 100% { transform: rotate(-180deg); }
}

@keyframes analyzer-electrons {
  0%, 48% { transform: rotate(0); }
  58%, 100% { transform: rotate(180deg); }
}

@keyframes analyzer-count-plus {
  0%, 8% { transform: scaleY(0); }
  38%, 100% { transform: scaleY(0.82); }
}

@keyframes analyzer-count-minus {
  0%, 62% { transform: scaleY(0); }
  92%, 100% { transform: scaleY(0.36); }
}

/* Почему поляризованное железо анализирует спин фотона */
.reveal .photon-analyzer-principle {
  display: grid;
  grid-template-columns: minmax(0, 1.62fr) minmax(400px, 0.74fr);
  gap: 0.7rem;
  margin: 0.12rem 0 0.42rem;
}

.reveal .analyzer-spin-cases {
  display: grid;
  gap: 0.42rem;
}

.reveal .analyzer-spin-case {
  display: grid;
  grid-template-columns: minmax(540px, 1.45fr) minmax(300px, 0.85fr);
  gap: 0.45rem;
  align-items: center;
  min-height: 146px;
  padding: 0.34rem 0.62rem;
  border: 1px solid var(--hel-border);
  border-left: 5px solid var(--hel-green);
  border-radius: 0.35rem;
  background: var(--hel-panel);
}

.reveal .analyzer-spin-case.suppressed {
  border-left-color: var(--hel-orange);
}

.reveal .analyzer-spin-sketch {
  display: flex;
  gap: 0.63rem;
  align-items: center;
  justify-content: center;
}

.reveal .analyzer-spin-particle {
  position: relative;
  display: grid;
  width: 78px;
  height: 78px;
  place-items: center;
  border: 2px solid var(--hel-cyan);
  border-radius: 50%;
  background: #10354b;
  color: #fff;
  font: italic 650 0.68em Georgia, serif;
}

.reveal .analyzer-spin-particle small {
  position: absolute;
  right: -46px;
  bottom: -30px;
  left: -46px;
  color: #fff;
  font: 600 0.5em/1.05 Arial, sans-serif;
  text-align: center;
  white-space: nowrap;
}

.reveal .analyzer-spin-particle.electron {
  border-color: var(--hel-rose);
  background: #43192b;
}

.reveal .analyzer-spin-particle.final {
  border-color: var(--hel-green);
  background: #10382f;
}

.reveal .analyzer-spin-particle.muted {
  border-color: var(--hel-muted);
  background: #1d2830;
  opacity: 0.52;
}

.reveal .analyzer-spin-particle.hypothetical::after {
  position: absolute;
  top: 50%;
  left: 50%;
  width: 90px;
  height: 5px;
  content: "";
  background: var(--hel-orange);
  transform: translate(-50%, -50%) rotate(-35deg);
}

.reveal .analyzer-spin-arrow {
  position: absolute;
  top: -18px;
  left: 50%;
  width: 42px;
  height: 10px;
  background: currentColor;
}

.reveal .analyzer-spin-particle.photon .analyzer-spin-arrow {
  width: 84px;
}

.reveal .analyzer-spin-arrow.right {
  transform: translateX(-7px);
}

.reveal .analyzer-spin-arrow.left {
  transform: translateX(-35px);
}

.reveal .analyzer-spin-particle.photon .analyzer-spin-arrow.left {
  transform: translateX(-77px);
}

.reveal .analyzer-spin-arrow::after {
  position: absolute;
  top: -8px;
  width: 0;
  height: 0;
  content: "";
  border-top: 13px solid transparent;
  border-bottom: 13px solid transparent;
}

.reveal .analyzer-spin-arrow.right::after {
  right: -18px;
  border-left: 20px solid currentColor;
}

.reveal .analyzer-spin-arrow.left::after {
  left: -18px;
  border-right: 20px solid currentColor;
}

.reveal .analyzer-spin-operator {
  color: var(--hel-muted);
  font-size: 0.62em;
}

.reveal .analyzer-spin-meaning {
  display: grid;
  gap: 0.04rem;
  font-size: 0.67em;
  line-height: 1.16;
}

.reveal .analyzer-spin-meaning b {
  font-size: 1.08em;
}

.reveal .analyzer-spin-meaning span {
  font-size: 1.12em;
}

.reveal .analyzer-spin-case.favored .analyzer-spin-meaning strong {
  color: var(--hel-green);
}

.reveal .analyzer-spin-case.suppressed .analyzer-spin-meaning strong {
  color: var(--hel-orange);
}

.reveal .analyzer-refinement {
  display: grid;
  align-content: center;
  padding: 0.4rem 0.55rem;
  border: 1px solid var(--hel-orange);
  border-radius: 0.35rem;
  background: linear-gradient(135deg, rgb(255 173 84 / 12%), var(--hel-panel));
  font-size: 0.65em;
  line-height: 1.2;
}

.reveal .analyzer-refinement > b {
  color: var(--hel-orange);
  font-size: 1.22em;
}

.reveal .analyzer-refinement p {
  margin: 0.18rem 0;
}

.reveal .analyzer-refinement strong {
  color: var(--hel-green);
}

.reveal .analyzer-cross-section {
  font-size: 1.28em;
}

.reveal .analyzer-cross-section .katex-display {
  margin: 0.15rem 0 0.2rem;
}

.reveal .photon-analyzer.analyzer-compact {
  height: 375px;
  margin-top: 0;
}

.reveal .animation-controls {
  position: absolute;
  z-index: 30;
  top: 12px;
  right: 16px;
  display: flex;
  gap: 10px;
}

.reveal .animation-control {
  display: inline-flex;
  gap: 0.34rem;
  align-items: center;
  justify-content: center;
  min-width: 142px;
  height: 43px;
  padding: 0 0.58rem;
  border: 1px solid rgb(102 204 255 / 68%);
  border-radius: 999px;
  background: rgb(102 204 255 / 11%);
  color: #edf9ff;
  font: 720 0.47em/1 system-ui, sans-serif;
  cursor: pointer;
}

.reveal .animation-control span {
  color: var(--hel-cyan);
  font-size: 0.95em;
}

.reveal .animation-pause {
  border-color: rgb(255 173 90 / 68%);
  background: rgb(255 173 90 / 10%);
}

.reveal .animation-pause span {
  color: var(--hel-orange);
}

.reveal .animation-control:hover:not(:disabled),
.reveal .animation-control:focus-visible {
  box-shadow: 0 0 0 3px rgb(102 204 255 / 13%);
  filter: brightness(1.18);
  outline: none;
}

.reveal .animation-control:disabled {
  cursor: default;
  opacity: 0.34;
}

.reveal [data-manual-animation].is-paused *,
.reveal [data-manual-animation].is-paused *::before,
.reveal [data-manual-animation].is-paused *::after {
  animation-play-state: paused !important;
}

.reveal .analyzer-compact .analyzer-source {
  top: 142px;
  width: 74px;
  height: 74px;
}

.reveal .analyzer-compact .analyzer-wave {
  top: 179px;
  left: calc(5% + 74px);
  width: 22%;
}

.reveal .analyzer-compact .analyzer-photon-spin {
  top: 111px;
  left: calc(5% + 11px);
}

.reveal .analyzer-compact .iron-block {
  top: 58px;
  left: 34%;
  width: 330px;
  height: 254px;
}

.reveal .analyzer-compact .iron-label {
  top: -33px;
}

.reveal .analyzer-compact .iron-field {
  top: 123px;
  left: 64px;
  width: 190px;
  height: 9px;
}

.reveal .analyzer-compact .iron-field span {
  top: -37px;
  left: 86px;
}

.reveal .analyzer-compact .iron-electrons {
  grid-template-columns: repeat(3, 1fr);
  gap: 54px 61px;
  padding: 63px 40px;
}

.reveal .analyzer-compact .iron-electrons i {
  width: 17px;
  height: 17px;
}

.reveal .analyzer-compact .iron-electrons i::after {
  top: 5px;
  left: 15px;
  width: 37px;
  height: 7px;
}

.reveal .analyzer-compact .iron-electrons i::before {
  top: -1px;
  left: 49px;
}

.reveal .analyzer-compact .analyzer-detector {
  top: 105px;
  right: 5%;
  width: 94px;
  height: 170px;
}

.reveal .analyzer-compact .analyzer-histogram {
  right: 15.5%;
  bottom: 42px;
  width: 244px;
  height: 210px;
}

.reveal .analyzer-compact .count-row {
  width: 66px;
}

/* Интерактивная настройка ядерного резонанса */
.reveal .resonance-explorer {
  --res-energy-position: 34%;
  --res-window-width: 0.8%;
  --res-angle: 90deg;
  display: grid;
  grid-template-rows: 112px 265px 118px 66px;
  gap: 9px;
  height: 588px;
  margin-top: 0.18rem;
  font-size: 0.72em;
}

.reveal .resonance-controls,
.reveal .resonance-stage,
.reveal .resonance-readout,
.reveal .resonance-outcome {
  border: 1px solid var(--hel-border);
  border-radius: 0.42rem;
  background: var(--hel-panel);
}

.reveal .resonance-controls {
  padding: 12px 20px 8px;
}

.reveal .resonance-control-heading,
.reveal .resonance-slider-row,
.reveal .resonance-slider-scale {
  display: grid;
  align-items: center;
}

.reveal .resonance-control-heading {
  grid-template-columns: 1fr auto;
  gap: 24px;
  margin-bottom: 7px;
}

.reveal .resonance-control-heading strong {
  font-size: 1.02em;
}

.reveal .resonance-control-heading output {
  min-width: 425px;
  color: var(--hel-cyan);
  font-size: 0.78em;
  font-weight: 700;
  text-align: right;
}

.reveal .resonance-slider-row {
  grid-template-columns: 180px minmax(0, 1fr) 190px 245px;
  gap: 15px;
  color: var(--hel-muted);
  font-size: 0.65em;
  font-weight: 700;
}

.reveal .resonance-slider-row > span:first-child { text-align: right; }

.reveal .resonance-slider-row input[type="range"] {
  width: 100%;
  margin: 0;
  accent-color: var(--hel-orange);
  cursor: ew-resize;
}

.reveal .resonance-fire-button {
  padding: 8px 15px;
  border: 1px solid rgb(99 194 232 / 70%);
  border-radius: 999px;
  background: #102b3a;
  color: #edf7fb;
  font: 750 0.92em/1 system-ui, sans-serif;
  cursor: pointer;
}

.reveal .resonance-fire-button:hover { background: #16394b; }
.reveal .resonance-fire-button:disabled { cursor: wait; opacity: 0.6; }

.reveal .resonance-slider-scale {
  grid-template-columns: 1fr 1fr 1fr;
  margin: 1px 444px 0 195px;
  color: var(--hel-muted);
  font-size: 0.52em;
  text-align: center;
}

.reveal .resonance-slider-scale span:first-child { text-align: left; }
.reveal .resonance-slider-scale span:last-child { text-align: right; }

.reveal .resonance-stage {
  position: relative;
  overflow: hidden;
}

.reveal .resonance-flight-line {
  position: absolute;
  top: 139px;
  right: 5%;
  left: 4%;
  border-top: 2px solid #78909d;
}

.reveal .resonance-flight-line::before {
  position: absolute;
  top: -6px;
  left: -2px;
  content: "";
  border-width: 5px 10px 5px 0;
  border-style: solid;
  border-color: transparent #78909d transparent transparent;
}

.reveal .resonance-source,
.reveal .resonance-absorber,
.reveal .resonance-test-photon {
  position: absolute;
  z-index: 4;
  display: grid;
  place-items: center;
  border-radius: 50%;
}

.reveal .resonance-source,
.reveal .resonance-absorber {
  top: 79px;
  transform: translateX(-50%);
}

.reveal .resonance-source {
  left: 70%;
  width: 122px;
  height: 122px;
  border: 3px solid var(--hel-orange);
  background: #42260d;
  color: #fff3df;
  font: italic 650 0.98em Georgia, serif;
}

.reveal .resonance-absorber {
  left: 15%;
  width: 142px;
  height: 142px;
  border: 4px double var(--hel-green);
  background: #12352b;
  color: #f1fff8;
  font: italic 650 1.04em Georgia, serif;
}

.reveal .resonance-source small,
.reveal .resonance-absorber small {
  position: absolute;
  right: -85px;
  left: -85px;
  color: var(--hel-muted);
  font: 650 0.4em system-ui, sans-serif;
  text-align: center;
}

.reveal .resonance-source small { top: -30px; }
.reveal .resonance-absorber small { bottom: -31px; }

.reveal .resonance-nucleus-label {
  grid-area: 1 / 1;
  transition: opacity 130ms ease, transform 180ms ease;
}

.reveal .resonance-source .resonance-ground-label,
.reveal .resonance-absorber .resonance-excited-label {
  opacity: 0;
  transform: scale(0.72);
}

.reveal .resonance-explorer.source-decayed .resonance-source {
  border-color: #ffc77f;
  background: #332719;
}

.reveal .resonance-explorer.source-decayed .resonance-source .resonance-excited-label,
.reveal .resonance-explorer.absorber-excited .resonance-absorber .resonance-ground-label {
  opacity: 0;
  transform: scale(0.72);
}

.reveal .resonance-explorer.source-decayed .resonance-source .resonance-ground-label,
.reveal .resonance-explorer.absorber-excited .resonance-absorber .resonance-excited-label {
  opacity: 1;
  transform: scale(1);
}

.reveal .resonance-explorer.absorber-excited .resonance-absorber {
  border-color: #b5ffdc;
  background: #17483a;
  box-shadow: 0 0 34px rgb(117 221 184 / 60%);
}

.reveal .resonance-source-momentum {
  position: absolute;
  z-index: 5;
  top: 140px;
  left: 70%;
  width: 0;
  height: 0;
  transform: rotate(var(--res-angle));
  transform-origin: center;
  color: var(--hel-orange);
  opacity: 1;
  transition: transform 120ms linear;
}

.reveal .resonance-source-momentum i {
  position: absolute;
  top: -3px;
  right: 61px;
  width: 145px;
  height: 6px;
  display: block;
  background: currentColor;
}

.reveal .resonance-source-momentum i::before {
  position: absolute;
  top: 50%;
  left: -17px;
  content: "";
  transform: translateY(-50%);
  border-width: 10px 18px 10px 0;
  border-style: solid;
  border-color: transparent currentColor transparent transparent;
}

.reveal .resonance-momentum-label {
  position: absolute;
  z-index: 5;
  top: 220px;
  left: 70%;
  transform: translateX(-50%);
  color: var(--hel-orange);
  font-size: 0.55em;
  font-weight: 750;
  white-space: nowrap;
}

.reveal .resonance-test-photon {
  top: 105px;
  left: calc(70% - 113px);
  width: 66px;
  height: 66px;
  border: 3px solid #ffd84f;
  background: #6e5100;
  color: #fff7c9;
  font: italic 650 0.68em Georgia, serif;
  opacity: 0;
}

.reveal .resonance-absorption-flash {
  position: absolute;
  z-index: 7;
  top: 139px;
  left: 15%;
  width: 22px;
  height: 22px;
  transform: translate(-50%, -50%);
  border-radius: 50%;
  background: #fff7bd;
  opacity: 0;
}

.reveal .resonance-explorer.has-absorbed .resonance-absorber {
  border-color: #b5ffdc;
  box-shadow: 0 0 34px rgb(117 221 184 / 60%);
}

.reveal .resonance-direction-note {
  position: absolute;
  top: 22px;
  right: 18%;
  color: var(--hel-muted);
  font-size: 0.62em;
  font-weight: 700;
}

.reveal .resonance-direction-note span {
  margin-left: 10px;
  color: #ffd84f;
  font-size: 1.5em;
}

.reveal .resonance-readout {
  padding: 12px 25px 9px;
}

.reveal .resonance-energy-heading {
  display: grid;
  grid-template-columns: 1fr auto;
  gap: 24px;
  align-items: baseline;
}

.reveal .resonance-energy-heading strong { font-size: 0.82em; }

.reveal .resonance-energy-heading span {
  color: var(--hel-cyan);
  font-size: 0.68em;
  font-weight: 750;
}

.reveal .resonance-energy-scale {
  position: relative;
  height: 25px;
  margin: 13px 16px 0;
  border-radius: 999px;
  background: linear-gradient(90deg, #224154, #386273 48%, #6a4a21);
  box-shadow: inset 0 0 0 2px rgb(255 255 255 / 12%);
}

.reveal .resonance-energy-window {
  position: absolute;
  top: -8px;
  bottom: -8px;
  left: 50%;
  width: var(--res-window-width);
  transform: translateX(-50%);
  border: 3px solid var(--hel-green);
  border-radius: 7px;
  background: rgb(117 221 184 / 18%);
}

.reveal .resonance-energy-window span {
  position: absolute;
  top: -31px;
  left: 50%;
  transform: translateX(-50%);
  color: var(--hel-green);
  font-size: 0.52em;
  font-weight: 800;
  white-space: nowrap;
}

.reveal .resonance-energy-marker {
  position: absolute;
  z-index: 3;
  top: 50%;
  left: var(--res-energy-position);
  width: 20px;
  height: 20px;
  transform: translate(-50%, -50%);
  border: 4px solid #fff;
  border-radius: 50%;
  background: var(--hel-cyan);
  box-shadow: 0 0 16px rgb(99 194 232 / 50%);
  transition: left 120ms linear, background 120ms linear;
}

.reveal .resonance-energy-marker span {
  position: absolute;
  top: 31px;
  left: 50%;
  transform: translateX(-50%);
  color: #fff;
  font-size: 0.56em;
  font-weight: 750;
  white-space: nowrap;
}

.reveal .resonance-explorer.is-resonant .resonance-energy-marker {
  background: var(--hel-green);
  box-shadow: 0 0 22px rgb(117 221 184 / 80%);
}

.reveal .resonance-explorer.is-resonant .resonance-energy-marker span {
  opacity: 0;
}

.reveal .resonance-explorer.is-high .resonance-energy-marker {
  background: var(--hel-orange);
}

.reveal .resonance-energy-labels {
  display: grid;
  grid-template-columns: 1fr 1fr 1fr;
  margin: 5px 13px 0;
  color: var(--hel-muted);
  font-size: 0.56em;
  text-align: center;
}

.reveal .resonance-energy-labels span:first-child { text-align: left; }
.reveal .resonance-energy-labels span:last-child { text-align: right; }

.reveal .resonance-outcome {
  display: flex;
  align-items: center;
  justify-content: center;
  flex-wrap: wrap;
  padding: 7px 22px;
  border-left: 5px solid var(--hel-cyan);
  font-size: 0.76em;
  font-weight: 750;
  text-align: center;
}

.reveal .resonance-explorer.is-resonant .resonance-outcome {
  border-color: var(--hel-green);
  background: linear-gradient(90deg, rgb(117 221 184 / 14%), var(--hel-panel));
  color: #dcfff0;
}

.reveal .resonance-explorer.is-high .resonance-outcome {
  border-color: var(--hel-orange);
}

/* Материалы */
.reveal .material-pair {
  display: grid;
  grid-template-columns: minmax(0, 1fr) 310px minmax(0, 1fr);
  gap: 0.9rem;
  align-items: center;
  margin-top: 0.6rem;
}

.reveal .material-card {
  padding: 0.5rem;
  border: 1px solid var(--hel-border);
  border-radius: 0.42rem;
  background: var(--hel-panel);
  text-align: center;
}

.reveal .material-card img {
  width: 100%;
  height: 360px;
  object-fit: cover;
  border-radius: 0.25rem;
}

.reveal .material-card p { margin: 0.35rem 0 0; font-size: 0.72em; }
.reveal .material-arrow { color: var(--hel-orange); text-align: center; }

/* Опыт Голдхабера в компоновке исходного Keynote-слайда. */
.reveal .experiment-build {
  --experiment-detector-shift: 72px;
  position: relative;
  height: 820px;
  margin-top: 0.02rem;
  overflow: hidden;
  font-size: 0.88em;
}

.reveal .experiment-scene-player {
  position: absolute;
  z-index: 40;
  top: 248px;
  left: 50%;
  display: grid;
  grid-template-columns: auto minmax(260px, auto) auto;
  gap: 16px;
  align-items: center;
  min-height: 62px;
  padding: 8px 10px 8px 14px;
  border: 1px solid rgb(102 204 255 / 42%);
  border-radius: 32px;
  background: rgb(5 18 27 / 94%);
  box-shadow: 0 10px 28px rgb(0 0 0 / 32%);
  translate: -50% 0;
}

.reveal .experiment-scene-progress {
  display: flex;
  gap: 7px;
  align-items: center;
}

.reveal .experiment-scene-dot {
  display: grid;
  width: 30px;
  height: 30px;
  place-items: center;
  border: 2px solid #52636d;
  border-radius: 50%;
  color: #8ca0ac;
  font: 800 0.42em/1 system-ui, sans-serif;
}

.reveal .experiment-scene-dot.is-current {
  border-color: var(--hel-cyan);
  color: #fff;
  box-shadow: 0 0 12px rgb(102 204 255 / 28%);
}

.reveal .experiment-scene-dot.is-complete {
  border-color: var(--hel-green);
  background: rgb(117 221 184 / 18%);
  color: var(--hel-green);
}

.reveal .experiment-scene-label {
  color: #e6f3f8;
  font: 760 0.54em/1.1 system-ui, sans-serif;
  text-align: center;
  white-space: nowrap;
}

.reveal .experiment-scene-next {
  min-width: 188px;
  height: 44px;
  padding: 0 18px;
  border: 1px solid rgb(102 204 255 / 68%);
  border-radius: 24px;
  background: rgb(102 204 255 / 13%);
  color: #e9f8ff;
  font: 760 0.46em/1 system-ui, sans-serif;
  cursor: pointer;
}

.reveal .experiment-scene-next:hover:not(:disabled) {
  background: rgb(102 204 255 / 24%);
}

.reveal .experiment-scene-next:disabled {
  border-color: #45545d;
  color: #83929a;
  cursor: default;
}

.reveal .experiment-reactions,
.reveal .experiment-apparatus {
  position: absolute;
  inset: 0;
}

.reveal .experiment-case {
  position: absolute;
  top: 4px;
  width: 47%;
  height: 235px;
  opacity: 0;
}

.reveal .experiment-case-one { left: 1%; }
.reveal .experiment-case-two { right: 0; }

.reveal .experiment-case-badge,
.reveal .experiment-marker {
  position: absolute;
  z-index: 18;
  display: grid;
  place-items: center;
  border: 5px solid #fff;
  border-radius: 50%;
  color: #fff;
  font: 800 0.68em/1 system-ui, sans-serif;
}

.reveal .experiment-case-badge {
  top: 86px;
  left: 0;
  width: 58px;
  height: 58px;
}

.reveal .experiment-case-two .experiment-case-badge {
  border-style: dashed;
}

.reveal .experiment-node {
  position: absolute;
  z-index: 8;
  display: grid;
  width: 78px;
  height: 78px;
  translate: -50% -50%;
  place-items: center;
  border-radius: 50%;
  background: #f2331f;
  color: #fff;
  font: italic 750 0.66em/1 Georgia, serif;
}

.reveal .experiment-node-photon {
  background: #ffc20a;
  color: #fff9da;
}

.reveal .case-one-neutrino,
.reveal .case-two-neutrino {
  background: #139ee8;
  color: #eaf9ff;
}

.reveal .case-one-neutrino { top: 115px; left: 16%; }
.reveal .case-one-source { top: 115px; left: 40%; }
.reveal .case-one-excited { top: 115px; left: 66%; }
.reveal .case-one-photon { top: 60px; left: 91%; }
.reveal .case-one-daughter { top: 170px; left: 91%; }

.reveal .case-two-daughter { top: 115px; left: 15%; }
.reveal .case-two-excited { top: 115px; left: 40%; }
.reveal .case-two-source { top: 115px; left: 66%; }
.reveal .case-two-neutrino { top: 115px; left: 92%; }
.reveal .case-two-photon { top: 184px; left: 63%; }

.reveal .experiment-reaction-arrow {
  position: absolute;
  z-index: 5;
  width: 108px;
  height: 7px;
  background: #8d8f92;
  transform-origin: 0 50%;
}

.reveal .experiment-reaction-arrow::after {
  position: absolute;
  top: -8px;
  right: -19px;
  content: "";
  border-width: 12px 0 12px 21px;
  border-style: solid;
  border-color: transparent transparent transparent #8d8f92;
}

.reveal .case-one-arrow-neutrino { top: 112px; left: 34%; transform: rotate(180deg); }
.reveal .case-one-arrow-recoil { top: 112px; left: 47%; }
.reveal .case-one-arrow-photon { top: 101px; left: 72%; transform: rotate(-23deg); }
.reveal .case-one-arrow-daughter { top: 128px; left: 72%; transform: rotate(23deg); }
.reveal .case-two-arrow-daughter { top: 112px; left: 34%; transform: rotate(180deg); }
.reveal .case-two-arrow-recoil { top: 112px; left: 60%; transform: rotate(180deg); }
.reveal .case-two-arrow-neutrino { top: 112px; left: 73%; }
.reveal .case-two-arrow-photon { top: 134px; left: 46%; transform: rotate(29deg); }

.reveal .experiment-flight-paths {
  position: absolute;
  z-index: 12;
  inset: 0;
  width: 100%;
  height: 100%;
  pointer-events: none;
}

.reveal .experiment-path {
  fill: none;
  stroke: #fff;
  stroke-width: 6;
  stroke-linecap: round;
  stroke-linejoin: round;
  stroke-dasharray: 1;
  stroke-dashoffset: 1;
  opacity: 0;
}

.reveal .experiment-path-neutrino-two,
.reveal .experiment-path-photon-two {
  stroke-dasharray: 0.022 0.015;
  stroke-dashoffset: 1;
}

.reveal .experiment-iron {
  position: absolute;
  z-index: 3;
  top: 448px;
  left: 13%;
  width: 360px;
  height: 310px;
  background: #ff9200;
  clip-path: polygon(0 0, 100% 0, 100% 100%, 0 100%, 0 70%, 30% 70%, 30% 40%, 0 40%);
}

.reveal .experiment-iron strong {
  position: absolute;
  top: 18px;
  right: 16px;
  left: 16px;
  color: #fff;
  font: 800 0.72em/1.1 Georgia, serif;
  text-align: center;
}

.reveal .experiment-apparatus-particle {
  position: absolute;
  z-index: 16;
  display: grid;
  width: 76px;
  height: 76px;
  translate: -50% -50%;
  place-items: center;
  border-radius: 50%;
  background: #f2331f;
  color: #fff;
  font: italic 750 0.66em/1 Georgia, serif;
}

.reveal .experiment-source-nucleus {
  top: 619px;
  left: 16%;
  width: 88px;
  height: 88px;
}

.reveal .experiment-electron {
  top: 592px;
  left: calc(16% + 54px);
  width: 31px;
  height: 31px;
  border: 2px solid #b8f1dc;
  background: #235c50;
  color: #f2fffb;
  font-size: 0.34em;
}

.reveal .experiment-recoil {
  top: 619px;
  left: 16%;
  width: 72px;
  height: 72px;
  opacity: 0;
}

.reveal .experiment-neutrino-one,
.reveal .experiment-neutrino-two {
  top: 619px;
  left: 16%;
  width: 70px;
  height: 70px;
  background: #139ee8;
  color: #eaf9ff;
  opacity: 0;
}

.reveal .experiment-photon-one,
.reveal .experiment-photon-two {
  top: 619px;
  left: 16%;
  width: 64px;
  height: 64px;
  background: #ffc20a;
  color: #fff9da;
  opacity: 0;
}

.reveal .experiment-spin-arrow {
  position: absolute;
  z-index: 3;
  left: 53px;
  top: 28px;
  display: block;
  width: 106px;
  height: 15px;
  background: var(--hel-cyan);
  transform: rotate(-14deg);
  transform-origin: 0 50%;
}

.reveal .experiment-spin-arrow::after {
  position: absolute;
  top: -12px;
  right: -25px;
  content: "";
  border-width: 20px 0 20px 28px;
  border-style: solid;
  border-color: transparent transparent transparent var(--hel-cyan);
}

.reveal .experiment-spin-arrow b {
  position: absolute;
  top: -38px;
  left: 36px;
  color: var(--hel-cyan);
  font: 760 0.38em/1 system-ui, sans-serif;
  white-space: nowrap;
}

.reveal .experiment-recoil-spin {
  background: var(--hel-orange);
}

.reveal .experiment-recoil-spin::after {
  border-left-color: var(--hel-orange);
}

.reveal .experiment-recoil-spin b {
  color: var(--hel-orange);
}

.reveal .experiment-capture-flash {
  position: absolute;
  z-index: 19;
  top: 607px;
  left: 15.35%;
  width: 25px;
  height: 25px;
  border-radius: 50%;
  background: #fff2a0;
  opacity: 0;
}

.reveal .experiment-lead-shield {
  position: absolute;
  z-index: 7;
  top: 520px;
  left: calc(13% + 360px);
  display: grid;
  width: 310px;
  height: 210px;
  place-items: center;
  background: #9b9b9b;
  clip-path: polygon(0 50%, 100% 0, 100% 100%);
  color: #fff;
  font: 800 0.66em/1.1 Georgia, serif;
  text-align: center;
}

.reveal .experiment-lead-shield span {
  margin-left: 70px;
}

.reveal .experiment-scintillator {
  position: absolute;
  z-index: 6;
  top: 485px;
  left: calc(50.6% - var(--experiment-detector-shift));
  width: 230px;
  height: 240px;
  background: #9a9a9a;
  clip-path: polygon(0 18%, 100% 0, 100% 100%, 0 82%);
}

.reveal .experiment-scintillator::before {
  position: absolute;
  content: "";
  inset: 7px;
  background: #050505;
  clip-path: polygon(0 18%, 100% 0, 100% 100%, 0 82%);
}

.reveal .experiment-scintillator span {
  position: absolute;
  z-index: 2;
  inset: 0;
  display: grid;
  place-items: center;
  color: #fff;
  font: 800 0.64em/1 Georgia, serif;
}

.reveal .experiment-pmt {
  position: absolute;
  z-index: 6;
  top: 485px;
  left: calc(62.6% - var(--experiment-detector-shift));
  display: grid;
  width: 92px;
  height: 240px;
  place-items: center;
  background: #e956a7;
  color: #fff;
  font: 850 0.74em/1 system-ui, sans-serif;
}

.reveal .experiment-absorber {
  position: absolute;
  z-index: 8;
  left: calc(50.5% - var(--experiment-detector-shift));
  width: 230px;
  height: 105px;
  background: #fff;
  clip-path: polygon(0 25%, 100% 0, 100% 78%, 0 100%);
}

.reveal .experiment-absorber::before {
  position: absolute;
  content: "";
  inset: 5px;
  background: #050505;
  clip-path: polygon(0 25%, 100% 0, 100% 78%, 0 100%);
}

.reveal .experiment-absorber-top { top: 385px; }

.reveal .experiment-absorber-bottom {
  top: 719px;
  transform: scaleY(-1);
}

.reveal .experiment-absorber-nucleus {
  position: absolute;
  z-index: 2;
  top: 52%;
  left: 66%;
  display: grid;
  width: 68px;
  height: 68px;
  translate: -50% -50%;
  place-items: center;
  border-radius: 50%;
  background: #f2331f;
  color: #fff;
  font: italic 750 0.60em/1 Georgia, serif;
}

.reveal .experiment-absorber-bottom .experiment-absorber-nucleus {
  transform: scaleY(-1);
}

.reveal .experiment-marker {
  width: 54px;
  height: 54px;
  opacity: 0;
}

.reveal .experiment-marker-one {
  top: 385px;
  left: 40.5%;
}

.reveal .experiment-marker-two {
  top: 735px;
  left: 40.5%;
}

.reveal .experiment-marker-two,
.reveal .experiment-graph-marker-two {
  border-style: dashed;
}

.reveal .experiment-graph-marker-one,
.reveal .experiment-graph-marker-two {
  right: 20%;
}

.reveal .experiment-graph-marker-one { top: 385px; }
.reveal .experiment-graph-marker-two { top: 735px; }

.reveal .experiment-scope {
  position: absolute;
  z-index: 10;
  right: 2.3%;
  width: 315px;
  height: 180px;
  opacity: 0;
}

.reveal .experiment-scope-one { top: 440px; }
.reveal .experiment-scope-two { top: 642px; }

.reveal .experiment-scope svg {
  width: 210px;
  height: 112px;
}

.reveal .experiment-scope path {
  fill: none;
  stroke: var(--hel-cyan);
  stroke-linecap: round;
  stroke-linejoin: round;
}

.reveal .experiment-scope-axis { stroke-width: 5; }

.reveal .experiment-scope-wave {
  stroke-width: 6;
  stroke-dasharray: 1;
  stroke-dashoffset: 1;
}

.reveal .experiment-scope-flat {
  stroke-width: 4;
  stroke-dasharray: 10 9;
}

.reveal .experiment-scope strong {
  position: absolute;
  top: 120px;
  left: 0;
  width: 220px;
  color: #fff;
  font: 800 0.56em/1.18 Georgia, serif;
  text-align: center;
}

.reveal .experiment-scene-sentinel {
  position: absolute;
  width: 1px;
  height: 1px;
  opacity: 0;
  pointer-events: none;
}

.reveal .experiment-build .experiment-iron,
.reveal .experiment-build .experiment-source-nucleus,
.reveal .experiment-build .experiment-electron,
.reveal .experiment-build .experiment-absorber,
.reveal .experiment-build .experiment-scintillator,
.reveal .experiment-build .experiment-pmt,
.reveal .experiment-build .experiment-lead-shield {
  opacity: 0;
}

.reveal .experiment-build.scene-assembly .experiment-iron {
  animation: experiment-assemble-part 0.58s ease-out 0s both;
}

.reveal .experiment-build.scene-assembly .experiment-source-nucleus,
.reveal .experiment-build.scene-assembly .experiment-electron {
  animation: experiment-assemble-part 0.58s ease-out 0.68s both;
}

.reveal .experiment-build.scene-assembly .experiment-absorber {
  animation: experiment-assemble-part 0.58s ease-out 1.36s both;
}

.reveal .experiment-build.scene-assembly .experiment-scintillator {
  animation: experiment-assemble-part 0.58s ease-out 2.04s both;
}

.reveal .experiment-build.scene-assembly .experiment-pmt {
  animation: experiment-assemble-part 0.58s ease-out 2.72s both;
}

.reveal .experiment-build.scene-assembly .experiment-lead-shield {
  animation: experiment-assemble-part 0.58s ease-out 3.40s both;
}

.reveal .experiment-build.scene-assembly .experiment-assembly-finish {
  animation: experiment-assembly-finish 4.05s both;
}

.reveal .experiment-build.scene-one .experiment-case-one { animation: experiment-case-one-show 6.4s ease-out both; }
.reveal .experiment-build.scene-one .experiment-source-nucleus { animation: experiment-source-to-excited 6.4s ease-out both; }
.reveal .experiment-build.scene-one .experiment-electron { animation: experiment-electron-small-capture 6.4s ease-in-out both; }
.reveal .experiment-build.scene-one .experiment-capture-flash { animation: experiment-capture-small-flash 6.4s ease-out both; }
.reveal .experiment-build.scene-one .experiment-recoil { animation: experiment-short-recoil 6.4s ease-in-out both; }
.reveal .experiment-build.scene-one .experiment-neutrino-one { animation: experiment-neutrino-one-flight 6.4s ease-in-out both; }
.reveal .experiment-build.scene-one .experiment-photon-one { animation: experiment-photon-one-flight 6.4s linear both; }
.reveal .experiment-build.scene-one .experiment-path-neutrino-one { animation: experiment-path-one-neutrino 6.4s ease-in-out both; }
.reveal .experiment-build.scene-one .experiment-path-photon-one { animation: experiment-path-one-photon 6.4s ease-in-out both; }
.reveal .experiment-build.scene-one .experiment-marker-one,
.reveal .experiment-build.scene-one .experiment-graph-marker-one { animation: experiment-marker-one-show 6.4s ease-out both; }
.reveal .experiment-build.scene-one .experiment-scope-one { animation: experiment-scope-one-show 6.4s ease-out both; }
.reveal .experiment-build.scene-one .experiment-scope-one .experiment-scope-wave { animation: experiment-scope-one-draw 6.4s ease-in-out both; }
.reveal .experiment-build.scene-one .experiment-absorber-top .experiment-absorber-nucleus { animation: experiment-absorber-one-pulse 6.4s ease-out both; }
.reveal .experiment-build.scene-one .experiment-one-finish { animation: experiment-scene-one-finish 6.45s both; }

.reveal .experiment-build.scene-two .experiment-case-two { animation: experiment-case-two-show 6.0s ease-out both; }
.reveal .experiment-build.scene-two .experiment-neutrino-two { animation: experiment-neutrino-two-flight 6.0s ease-in-out both; }
.reveal .experiment-build.scene-two .experiment-photon-two { animation: experiment-photon-two-flight 6.0s linear both; }
.reveal .experiment-build.scene-two .experiment-path-neutrino-two { animation: experiment-path-two-neutrino 6.0s ease-in-out both; }
.reveal .experiment-build.scene-two .experiment-path-photon-two { animation: experiment-path-two-photon 6.0s ease-in-out both; }
.reveal .experiment-build.scene-two .experiment-marker-two,
.reveal .experiment-build.scene-two .experiment-graph-marker-two { animation: experiment-marker-two-show 6.0s ease-out both; }
.reveal .experiment-build.scene-two .experiment-scope-two { animation: experiment-scope-two-show 6.0s ease-out both; }
.reveal .experiment-build.scene-two .experiment-two-finish { animation: experiment-scene-two-finish 6.05s both; }

@keyframes experiment-assemble-part {
  0% { opacity: 0; }
  100% { opacity: 1; }
}

@keyframes experiment-assembly-finish {
  0%, 99% { opacity: 0; }
  100% { opacity: 0.001; }
}

@keyframes experiment-scene-one-finish {
  0%, 99% { opacity: 0; }
  100% { opacity: 0.001; }
}

@keyframes experiment-scene-two-finish {
  0%, 99% { opacity: 0; }
  100% { opacity: 0.001; }
}

@keyframes experiment-case-one-show {
  0%, 3% { opacity: 0; }
  8%, 100% { opacity: 1; }
}

@keyframes experiment-case-two-show {
  0%, 5% { opacity: 0; }
  11%, 100% { opacity: 1; }
}

@keyframes experiment-source-to-excited {
  0%, 14% { opacity: 1; }
  19%, 100% { opacity: 0; }
}

@keyframes experiment-electron-small-capture {
  0%, 5% { opacity: 1; transform: translate(0, 0); }
  16% { opacity: 1; transform: translate(-54px, 27px); }
  20%, 100% { opacity: 0; transform: translate(-54px, 27px); }
}

@keyframes experiment-capture-small-flash {
  0%, 14%, 23%, 100% { opacity: 0; box-shadow: 0 0 0 0 rgb(255 242 160 / 65%); }
  18% { opacity: 1; box-shadow: 0 0 0 70px rgb(255 242 160 / 0%); }
}

@keyframes experiment-short-recoil {
  0%, 16% { opacity: 0; transform: translate(0, 0); }
  20%, 100% { opacity: 1; transform: translate(0, 0); }
}

@keyframes experiment-neutrino-one-flight {
  0%, 16% { opacity: 0; transform: translate(0, 0); }
  20% { opacity: 1; transform: translate(0, 0); }
  39%, 100% { opacity: 1; transform: translate(-259px, 63px); }
}

@keyframes experiment-photon-one-flight {
  0%, 38% { opacity: 0; transform: translate(0, 0); }
  42% { opacity: 1; transform: translate(0, 0); }
  68% { opacity: 1; transform: translate(743px, -180px); }
  73%, 100% { opacity: 0; transform: translate(743px, -180px); }
}

@keyframes experiment-path-one-neutrino {
  0%, 16% { opacity: 0; stroke-dashoffset: 1; }
  20% { opacity: 1; stroke-dashoffset: 1; }
  39%, 100% { opacity: 1; stroke-dashoffset: 0; }
}

@keyframes experiment-path-one-photon {
  0%, 38% { opacity: 0; stroke-dashoffset: 1; }
  42% { opacity: 1; stroke-dashoffset: 1; }
  68%, 100% { opacity: 1; stroke-dashoffset: 0; }
}

@keyframes experiment-marker-one-show {
  0%, 38% { opacity: 0; }
  45%, 100% { opacity: 1; }
}

@keyframes experiment-scope-one-show {
  0%, 64% { opacity: 0; }
  71%, 100% { opacity: 1; }
}

@keyframes experiment-scope-one-draw {
  0%, 68% { stroke-dashoffset: 1; }
  84%, 100% { stroke-dashoffset: 0; }
}

@keyframes experiment-absorber-one-pulse {
  0%, 64%, 76%, 100% { filter: none; transform: scale(1); }
  70% { filter: drop-shadow(0 0 22px #fff); transform: scale(1.12); }
}

@keyframes experiment-neutrino-two-flight {
  0%, 12% { opacity: 0; transform: translate(0, 0); }
  16% { opacity: 1; transform: translate(0, 0); }
  44%, 100% { opacity: 1; transform: translate(383px, 150px); }
}

@keyframes experiment-photon-two-flight {
  0%, 26% { opacity: 0; transform: translate(0, 0); }
  30% { opacity: 1; transform: translate(0, 0); }
  62% { opacity: 1; transform: translate(743px, 155px); }
  79%, 100% { opacity: 1; transform: translate(813px, 170px); }
}

@keyframes experiment-path-two-neutrino {
  0%, 12% { opacity: 0; stroke-dashoffset: 1; }
  16% { opacity: 1; stroke-dashoffset: 1; }
  44%, 100% { opacity: 1; stroke-dashoffset: 0; }
}

@keyframes experiment-path-two-photon {
  0%, 26% { opacity: 0; stroke-dashoffset: 1; }
  30% { opacity: 1; stroke-dashoffset: 1; }
  79%, 100% { opacity: 1; stroke-dashoffset: 0; }
}

@keyframes experiment-marker-two-show {
  0%, 24% { opacity: 0; }
  31%, 100% { opacity: 1; }
}

@keyframes experiment-scope-two-show {
  0%, 70% { opacity: 0; }
  78%, 100% { opacity: 1; }
}

/* Вторая глава общей анимации: фиксируем резонансную геометрию и меняем B. */
.reveal .experiment-scene-dot.experiment-scene-phase-two {
  margin-left: 12px;
}

.reveal .experiment-scene-dot.experiment-scene-phase-two::before {
  position: absolute;
  width: 1px;
  height: 24px;
  margin-left: -44px;
  background: rgb(102 204 255 / 32%);
  content: "";
}

.reveal .experiment-field-indicator {
  position: absolute;
  z-index: 5;
  inset: 0;
  opacity: 0;
}

.reveal .experiment-field-label {
  position: absolute;
  top: 62px;
  left: 232px;
  color: #eaf9ff;
  font: 850 0.62em/1 Georgia, serif;
  translate: -50% 0;
}

.reveal .experiment-field-label-minus {
  opacity: 0;
}

.reveal .experiment-field-vector {
  position: absolute;
  top: 114px;
  left: 166px;
  width: 130px;
  height: 12px;
  background: var(--hel-cyan);
  box-shadow: 0 0 12px rgb(102 204 255 / 55%);
  transform-origin: 50% 50%;
}

.reveal .experiment-field-vector::after {
  position: absolute;
  top: -11px;
  right: -25px;
  border-width: 17px 0 17px 27px;
  border-style: solid;
  border-color: transparent transparent transparent var(--hel-cyan);
  content: "";
}

.reveal .experiment-electron-spin-label {
  position: absolute;
  top: 218px;
  left: 230px;
  color: #fff4de;
  font: 760 0.42em/1 system-ui, sans-serif;
  translate: -50% 0;
  white-space: nowrap;
}

.reveal .experiment-electron-spin-vectors {
  position: absolute;
  top: 255px;
  left: 170px;
  display: flex;
  gap: 18px;
  transform-origin: 50% 50%;
}

.reveal .experiment-electron-spin-vectors i {
  position: relative;
  display: block;
  width: 28px;
  height: 6px;
  background: #fff4de;
}

.reveal .experiment-electron-spin-vectors i::after {
  position: absolute;
  top: -5px;
  right: -10px;
  border-width: 8px 0 8px 11px;
  border-style: solid;
  border-color: transparent transparent transparent #fff4de;
  content: "";
}

.reveal .experiment-field-phase-caption {
  position: absolute;
  z-index: 22;
  top: 46px;
  left: 50%;
  display: grid;
  width: 920px;
  gap: 12px;
  padding: 20px 28px;
  border: 1px solid rgb(102 204 255 / 42%);
  border-radius: 18px;
  background: rgb(5 18 27 / 92%);
  opacity: 0;
  translate: -50% 0;
  text-align: center;
}

.reveal .experiment-field-phase-caption strong {
  color: #f5fbff;
  font: 820 0.78em/1.05 system-ui, sans-serif;
}

.reveal .experiment-field-phase-caption span {
  color: var(--hel-cyan);
  font: 730 0.54em/1.1 system-ui, sans-serif;
}

.reveal .experiment-analysis-photon {
  position: absolute;
  z-index: 18;
  top: 619px;
  left: 16%;
  display: grid;
  width: 52px;
  height: 52px;
  translate: -50% -50%;
  place-items: center;
  border-radius: 50%;
  background: #ffc20a;
  color: #fff9da;
  font: italic 760 0.50em/1 Georgia, serif;
  opacity: 0;
}

.reveal .experiment-count-panel {
  position: absolute;
  z-index: 21;
  top: 434px;
  right: 1.2%;
  display: grid;
  width: 330px;
  min-height: 294px;
  gap: 18px;
  align-content: start;
  padding: 20px 22px;
  border: 1px solid rgb(102 204 255 / 42%);
  border-radius: 18px;
  background: rgb(5 18 27 / 94%);
  box-shadow: 0 12px 30px rgb(0 0 0 / 30%);
  opacity: 0;
}

.reveal .experiment-count-title {
  color: #eaf8ff;
  font: 780 0.48em/1.15 system-ui, sans-serif;
  text-align: center;
}

.reveal .experiment-count-row {
  display: grid;
  grid-template-columns: 108px 1fr;
  gap: 12px;
  align-items: center;
  color: #fff;
  font: 760 0.48em/1 Georgia, serif;
}

.reveal .experiment-count-row > i {
  position: relative;
  display: block;
  height: 22px;
  overflow: hidden;
  border: 1px solid rgb(102 204 255 / 55%);
  border-radius: 11px;
  background: rgb(102 204 255 / 8%);
}

.reveal .experiment-count-row > i > b {
  position: absolute;
  inset: 0 auto 0 0;
  width: 0;
  border-radius: 10px;
  background: var(--hel-cyan);
  box-shadow: 0 0 16px rgb(102 204 255 / 55%);
}

.reveal .experiment-count-row-minus {
  opacity: 0.28;
}

.reveal .experiment-count-asymmetry {
  padding-top: 13px;
  border-top: 1px solid rgb(102 204 255 / 24%);
  color: var(--hel-green);
  font-size: 0.54em;
  opacity: 0;
  text-align: center;
}

.reveal .experiment-build.scene-field-plus .experiment-case,
.reveal .experiment-build.scene-field-plus .experiment-marker,
.reveal .experiment-build.scene-field-plus .experiment-scope,
.reveal .experiment-build.scene-field-plus .experiment-path-neutrino-one,
.reveal .experiment-build.scene-field-plus .experiment-path-neutrino-two,
.reveal .experiment-build.scene-field-plus .experiment-path-photon-two,
.reveal .experiment-build.scene-field-plus .experiment-neutrino-one,
.reveal .experiment-build.scene-field-plus .experiment-neutrino-two,
.reveal .experiment-build.scene-field-plus .experiment-photon-two {
  animation: experiment-field-clear-old 0.48s ease-out both;
}

.reveal .experiment-build.scene-field-plus .experiment-field-phase-caption {
  animation: experiment-field-caption-show 0.65s ease-out 0.20s both;
}

.reveal .experiment-build.scene-field-plus .experiment-field-indicator {
  animation: experiment-field-indicator-show 0.55s ease-out 0.45s both;
}

.reveal .experiment-build.scene-field-plus .experiment-analysis-photon-plus {
  animation: experiment-analysis-photon-flight 1.15s linear 0.90s 3 both;
}

.reveal .experiment-build.scene-field-plus .experiment-count-panel {
  animation: experiment-count-panel-show 0.55s ease-out 0.55s both;
}

.reveal .experiment-build.scene-field-plus .experiment-count-row-plus > i > b {
  animation: experiment-count-plus-fill 3.75s ease-out 0.95s both;
}

.reveal .experiment-build.scene-field-plus .experiment-field-plus-finish {
  animation: experiment-scene-field-plus-finish 5.30s both;
}

.reveal .experiment-build.scene-field-minus .experiment-field-vector {
  animation: experiment-field-vector-flip 0.82s ease-in-out 0.18s both;
}

.reveal .experiment-build.scene-field-minus .experiment-electron-spin-vectors {
  animation: experiment-electron-spins-flip 0.82s ease-in-out 0.18s both;
}

.reveal .experiment-build.scene-field-minus .experiment-field-label-plus {
  animation: experiment-field-label-hide 0.30s ease-out 0.18s both;
}

.reveal .experiment-build.scene-field-minus .experiment-field-label-minus {
  animation: experiment-field-label-show 0.38s ease-out 0.56s both;
}

.reveal .experiment-build.scene-field-minus .experiment-analysis-photon-minus {
  animation: experiment-analysis-photon-flight 0.88s linear 1.05s 5 both;
}

.reveal .experiment-build.scene-field-minus .experiment-count-row-minus {
  animation: experiment-count-minus-row-show 0.45s ease-out 0.72s both;
}

.reveal .experiment-build.scene-field-minus .experiment-count-row-minus > i > b {
  animation: experiment-count-minus-fill 4.35s ease-out 1.05s both;
}

.reveal .experiment-build.scene-field-minus .experiment-count-asymmetry {
  animation: experiment-count-asymmetry-show 0.60s ease-out 5.45s both;
}

.reveal .experiment-build.scene-field-minus .experiment-field-minus-finish {
  animation: experiment-scene-field-minus-finish 6.35s both;
}

@keyframes experiment-field-clear-old {
  from { opacity: 1; }
  to { opacity: 0; }
}

@keyframes experiment-field-caption-show {
  from { opacity: 0; transform: translateY(-10px); }
  to { opacity: 1; transform: translateY(0); }
}

@keyframes experiment-field-indicator-show {
  from { opacity: 0; }
  to { opacity: 1; }
}

@keyframes experiment-analysis-photon-flight {
  0%, 7% { opacity: 0; transform: translate(0, 0); }
  12% { opacity: 1; transform: translate(0, 0); }
  82% { opacity: 1; transform: translate(743px, -180px); }
  88%, 100% { opacity: 0; transform: translate(743px, -180px); }
}

@keyframes experiment-count-panel-show {
  from { opacity: 0; transform: translateX(16px); }
  to { opacity: 1; transform: translateX(0); }
}

@keyframes experiment-count-plus-fill {
  from { width: 0; }
  to { width: 52%; }
}

@keyframes experiment-scene-field-plus-finish {
  0%, 99% { opacity: 0; }
  100% { opacity: 0.001; }
}

@keyframes experiment-field-vector-flip {
  from { transform: rotate(0deg); }
  to { transform: rotate(180deg); }
}

@keyframes experiment-electron-spins-flip {
  from { transform: scaleX(1); }
  to { transform: scaleX(-1); }
}

@keyframes experiment-field-label-hide {
  from { opacity: 1; }
  to { opacity: 0; }
}

@keyframes experiment-field-label-show {
  from { opacity: 0; }
  to { opacity: 1; }
}

@keyframes experiment-count-minus-row-show {
  from { opacity: 0.28; }
  to { opacity: 1; }
}

@keyframes experiment-count-minus-fill {
  from { width: 0; }
  to { width: 78%; }
}

@keyframes experiment-count-asymmetry-show {
  from { opacity: 0; transform: translateY(8px); }
  to { opacity: 1; transform: translateY(0); }
}

@keyframes experiment-scene-field-minus-finish {
  0%, 99% { opacity: 0; }
  100% { opacity: 0.001; }
}

/* Результаты */
.reveal .goldhaber-portrait {
  display: block;
  width: auto;
  max-width: 100%;
  height: 430px;
  margin: 0 auto;
  border: 1px solid #52636d;
  border-radius: 0.35rem;
  object-fit: contain;
}

.reveal .weak-handedness {
  margin-top: 1rem;
}

.reveal .weak-card {
  min-height: 260px;
  border-top: 0.18rem solid var(--hel-cyan);
}

.reveal .weak-antineutrino { border-top-color: var(--hel-orange); }
.reveal .weak-card p { margin: 0.4rem 0; }

.reveal .final-chain {
  display: grid;
  grid-template-columns: 1fr 70px 1fr 70px 1fr 70px 1fr;
  align-items: center;
  margin-top: 1.2rem;
}

.reveal .final-step {
  min-height: 230px;
  padding: 0.7rem 0.45rem;
  border: 1px solid var(--hel-border);
  border-top: 0.18rem solid var(--hel-cyan);
  border-radius: 0.4rem;
  background: var(--hel-panel);
  text-align: center;
}

.reveal .final-step:nth-of-type(3) { border-top-color: var(--hel-orange); }
.reveal .final-step:nth-of-type(5) { border-top-color: var(--hel-green); }
.reveal .final-step:nth-of-type(7) { border-top-color: var(--hel-rose); }
.reveal .final-step p { margin: 0.32rem 0; }

.reveal .final-link {
  position: relative;
  height: 4px;
  background: var(--hel-orange);
}

.reveal .final-link::after {
  position: absolute;
  top: -8px;
  right: -2px;
  width: 0;
  height: 0;
  content: "";
  border-width: 10px 0 10px 17px;
  border-style: solid;
  border-color: transparent transparent transparent var(--hel-orange);
}

/*
 * Единый силуэт вектора спина во всей лекции:
 * толстый прямоугольный стержень + крупный треугольный наконечник.
 * Импульсные и служебные стрелки этим правилом не затрагиваются.
 */
.reveal .helicity-spin-arrow,
.reveal .frame-spin,
.reveal .tag-electron-spin-arrow,
.reveal .tag-b-spin-arrow,
.reveal .tag-neutrino-spin-arrow,
.reveal .photon-tag-vector.spin:not(.up) i,
.reveal .photon-problem-arrow.spin i {
  height: 14px;
  border: 0;
  border-radius: 0;
  background: currentColor;
}

.reveal .helicity-spin-arrow::after,
.reveal .frame-spin::after,
.reveal .tag-electron-spin-arrow::after,
.reveal .tag-b-spin-arrow::after,
.reveal .photon-tag-vector.spin.right i::after,
.reveal .photon-problem-arrow.spin.right i::after {
  top: 50%;
  right: -2px;
  left: auto;
  border-width: 24px 0 24px 36px;
  border-style: solid;
  border-color: transparent transparent transparent currentColor;
  transform: translateY(-50%);
}

.reveal .tag-neutrino-spin-arrow::before,
.reveal .photon-tag-vector.spin.left i::after,
.reveal .photon-problem-arrow.spin.left i::after {
  top: 50%;
  right: auto;
  left: -2px;
  border-width: 24px 36px 24px 0;
  border-style: solid;
  border-color: transparent currentColor transparent transparent;
  transform: translateY(-50%);
}

.reveal .photon-tag-vector.spin.up i {
  width: 14px;
  border-radius: 0;
}

.reveal .photon-tag-vector.spin.up i::after {
  top: -2px;
  left: 50%;
  border-width: 0 24px 36px;
  border-style: solid;
  border-color: transparent transparent currentColor;
  transform: translate(-50%, -1px);
}

/* История опыта Голдхабера: одна и та же цепочка в двух геометриях. */
.reveal .photon-story-axis {
  position: relative;
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  height: 32px;
  margin: 0.08rem 0.65rem 0.18rem;
  color: var(--hel-muted);
  font-size: 0.58em;
  font-weight: 720;
  text-align: right;
}

.reveal .photon-story-axis b {
  color: #dce8ee;
  font-weight: 680;
}

.reveal .photon-story-axis i {
  position: absolute;
  right: 0;
  bottom: 2px;
  left: 0;
  height: 2px;
  background: #78909c;
}

.reveal .photon-story-axis i::after {
  position: absolute;
  right: -1px;
  bottom: -6px;
  width: 0;
  height: 0;
  border-top: 7px solid transparent;
  border-bottom: 7px solid transparent;
  border-left: 13px solid #78909c;
  content: "";
}

.reveal .photon-story-single {
  display: grid;
  grid-template-columns: 1.12fr 0.30fr 0.82fr 0.30fr 1.12fr 1.56fr;
  align-items: center;
  gap: 0.30rem;
  min-height: 235px;
  padding: 0 1.15rem;
}

.reveal .photon-story-space {
  display: block;
  min-width: 24px;
}

.reveal .photon-story-node {
  position: relative;
  display: flex;
  align-items: center;
  justify-content: center;
  min-width: 100px;
  min-height: 126px;
}

.reveal .photon-story-ball {
  display: inline-flex;
  flex: 0 0 auto;
  align-items: center;
  justify-content: center;
  width: 96px;
  height: 96px;
  border: 3px solid currentColor;
  border-radius: 50%;
  color: #fff;
  font-size: 1.18em;
  font-weight: 760;
}

.reveal .photon-story-ball.neutrino {
  border-color: var(--hel-cyan);
  background: #124c68;
}

.reveal .photon-story-ball.nucleus {
  border-color: #ff675e;
  background: #681e2b;
}

.reveal .photon-story-ball.excited {
  border-color: var(--hel-rose);
  background: #641d32;
}

.reveal .photon-story-ball.photon {
  border-color: #ffd85a;
  background: #856000;
}

.reveal .photon-story-ball.ground {
  width: 70px;
  height: 70px;
  font-size: 0.92em;
}

.reveal .photon-story-caption {
  position: absolute;
  top: calc(50% + 60px);
  bottom: auto;
  left: 50%;
  transform: translateX(-50%);
  color: #fff;
  font-size: 0.82em;
  font-weight: 760;
  white-space: nowrap;
}

/* Тонкие векторы импульса стоят снаружи шариков и не смешиваются со спином. */
.reveal .photon-story-momentum {
  position: absolute;
  z-index: 3;
  top: 50%;
  display: block;
  width: 100px;
  height: 30px;
  color: #dce8ee;
  transform: translateY(-50%);
}

.reveal .photon-story-momentum.right { left: calc(50% + 48px); }
.reveal .photon-story-momentum.left { right: calc(50% + 48px); }

.reveal .photon-story-momentum i {
  position: absolute;
  top: 14px;
  width: 100%;
  height: 3px;
  background: currentColor;
}

.reveal .photon-story-momentum.right i::after,
.reveal .photon-story-momentum.left i::after {
  position: absolute;
  top: 50%;
  width: 0;
  height: 0;
  border-top: 8px solid transparent;
  border-bottom: 8px solid transparent;
  content: "";
  transform: translateY(-50%);
}

.reveal .photon-story-momentum.right i::after {
  right: -1px;
  border-left: 14px solid currentColor;
}

.reveal .photon-story-momentum.left i::after {
  left: -1px;
  border-right: 14px solid currentColor;
}

.reveal .photon-story-momentum b {
  position: absolute;
  top: -0.52rem;
  left: 50%;
  padding: 0 0.14rem;
  border-radius: 0.12rem;
  background: rgb(5 17 24 / 88%);
  transform: translateX(-50%);
  font-size: 0.56em;
  font-weight: 760;
  line-height: 1.05;
  white-space: nowrap;
}

/* Если импульс и спин сонаправлены, разводим их, не меняя направления. */
.reveal .photon-story-momentum.separate-from-spin {
  top: calc(50% + 28px);
}

.reveal .photon-story-momentum.separate-from-spin b {
  top: 0.58rem;
}

.reveal .photon-story-flow {
  position: relative;
  display: block;
  width: 100%;
  height: 30px;
  color: #91a4ae;
}

.reveal .photon-story-flow i {
  position: absolute;
  top: 14px;
  width: 100%;
  height: 3px;
  background: currentColor;
}

.reveal .photon-story-flow.right i::after,
.reveal .photon-story-flow.left i::after {
  position: absolute;
  top: 50%;
  width: 0;
  height: 0;
  border-top: 8px solid transparent;
  border-bottom: 8px solid transparent;
  content: "";
  transform: translateY(-50%);
}

.reveal .photon-story-flow.right i::after {
  right: -1px;
  border-left: 14px solid currentColor;
}

.reveal .photon-story-flow.left i::after {
  left: -1px;
  border-right: 14px solid currentColor;
}

.reveal .photon-story-spin {
  position: absolute;
  z-index: 4;
  top: 50%;
  display: block;
  width: 92px;
  height: 48px;
  color: var(--hel-cyan);
  transform: translateY(-50%);
}

.reveal .photon-story-spin.nucleus { color: #ff675e; }
.reveal .photon-story-spin.photon { color: #ffd85a; }

.reveal .photon-story-spin.right { left: calc(50% + 48px); }
.reveal .photon-story-spin.left { right: calc(50% + 48px); }

.reveal .photon-story-spin i {
  position: absolute;
  top: 17px;
  width: 100%;
  height: 14px;
  background: currentColor;
}

.reveal .photon-story-spin.right i::after,
.reveal .photon-story-spin.left i::after {
  position: absolute;
  top: 50%;
  width: 0;
  height: 0;
  border-top: 24px solid transparent;
  border-bottom: 24px solid transparent;
  content: "";
  transform: translateY(-50%);
}

.reveal .photon-story-spin.right i::after {
  right: -2px;
  border-left: 36px solid currentColor;
}

.reveal .photon-story-spin.left i::after {
  left: -2px;
  border-right: 36px solid currentColor;
}

.reveal .photon-story-spin b {
  position: absolute;
  top: -0.48rem;
  left: 50%;
  transform: translateX(-50%);
  font-size: 0.46em;
  font-weight: 760;
  white-space: nowrap;
}

.reveal .photon-story-products {
  display: grid;
  grid-template-rows: repeat(2, minmax(0, 1fr));
  gap: 0.16rem;
  min-width: 255px;
}

.reveal .photon-story-products.aligned-products .photon-story-product {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 0;
}

.reveal .photon-story-product {
  display: grid;
  grid-template-columns: 54px 1fr;
  align-items: center;
  gap: 0.18rem;
}

.reveal .photon-story-products.reversed .photon-story-product {
  grid-template-columns: 1fr 54px;
}

.reveal .photon-story-product .photon-story-node {
  min-height: 102px;
}

.reveal .photon-story-product .photon-story-ball.photon {
  width: 78px;
  height: 78px;
}

.reveal .photon-story-product .photon-story-spin {
  width: 76px;
}

.reveal .photon-story-product .photon-story-spin.right {
  left: calc(50% + 39px);
}

.reveal .photon-story-product .photon-story-spin.left {
  right: calc(50% + 39px);
}

.reveal .photon-story-product .photon-story-momentum.right {
  left: calc(50% + 39px);
}

.reveal .photon-story-branch {
  color: #91a4ae;
  font-size: 0.92em;
  text-align: center;
}

.reveal .photon-story-cases {
  display: grid;
  grid-template-rows: repeat(2, minmax(0, 1fr));
  gap: 0.28rem;
  min-height: 345px;
}

.reveal .photon-story-case {
  display: grid;
  grid-template-columns: 40px 1.12fr 0.24fr 0.82fr 0.24fr 1.12fr 1.52fr 1.10fr;
  align-items: center;
  gap: 0.16rem;
  min-height: 160px;
  padding: 0.16rem 0.42rem;
  border: 1px solid var(--hel-border);
  border-radius: 0.34rem;
  background: rgb(8 24 34 / 76%);
}

.reveal .photon-story-number {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 34px;
  height: 34px;
  border: 2px solid #dce8ee;
  border-radius: 50%;
  color: #fff;
  font-size: 0.62em;
  font-weight: 800;
}

.reveal .photon-story-case .photon-story-node {
  min-height: 105px;
}

.reveal .photon-story-case .photon-story-ball {
  width: 78px;
  height: 78px;
  font-size: 0.98em;
}

.reveal .photon-story-case .photon-story-ball.ground {
  width: 58px;
  height: 58px;
  font-size: 0.80em;
}

.reveal .photon-story-case .photon-story-spin {
  width: 76px;
}

.reveal .photon-story-case .photon-story-spin.right {
  left: calc(50% + 39px);
}

.reveal .photon-story-case .photon-story-spin.left {
  right: calc(50% + 39px);
}

.reveal .photon-story-case .photon-story-momentum.right {
  left: calc(50% + 39px);
}

.reveal .photon-story-case .photon-story-momentum.left {
  right: calc(50% + 39px);
}

.reveal .photon-story-case .photon-story-caption {
  top: calc(50% + 48px);
  font-size: 0.68em;
}

.reveal .photon-story-case .photon-story-products {
  min-width: 220px;
}

.reveal .photon-story-result {
  padding: 0.35rem 0.42rem;
  border: 1px solid rgb(117 221 184 / 44%);
  border-radius: 0.28rem;
  background: rgb(117 221 184 / 8%);
  color: var(--hel-green);
  font-size: 0.60em;
  font-weight: 760;
  line-height: 1.35;
  text-align: center;
}

/* Crystal-scattering sketch: collisions erase the recoil/spin direction. */
.reveal .crystal-scattering {
  position: relative;
  height: 500px;
  overflow: hidden;
  border: 1px solid rgb(102 204 255 / 34%);
  border-radius: 0.36rem;
  background:
    radial-gradient(circle at 20% 45%, rgb(102 204 255 / 9%), transparent 42%),
    #071620;
  color: #edf7fb;
}

.reveal .thermalization-tab {
  display: grid !important;
  grid-template-columns: minmax(0, 42fr) minmax(0, 58fr);
  gap: 0.72rem;
  align-items: start;
}

.reveal .thermalization-tab > .column {
  width: auto !important;
  min-width: 0;
}

.reveal .thermalization-tab > .column:first-child {
  padding-right: 0.35rem;
  font-size: 0.84em;
}

.reveal .thermalization-tab > .column:first-child p {
  margin: 0.24rem 0;
  line-height: 1.22;
}

.reveal .helicity-story-tabs .thermalization-tab > .column:first-child .math.display {
  margin: 0.42rem 0;
  font-size: 1.08em;
}

.reveal .thermalization-tab .crystal-scattering {
  height: 438px;
}

.reveal .thermalization-tab .crystal-scattering-stage {
  height: 308px;
}

.reveal .thermalization-tab .thermalization-summary {
  margin-top: 0.38rem;
  padding: 0.38rem 0.55rem;
  font-size: 0.76em;
}

.reveal .crystal-scattering-head {
  position: relative;
  min-height: 60px;
  padding: 0.48rem 0.58rem;
  border-bottom: 1px solid rgb(102 204 255 / 22%);
  font-size: 0.70em;
  text-align: left;
}

.reveal .crystal-scattering-head strong {
  color: #cbd8df;
}

.reveal .crystal-scattering-head .animation-controls {
  top: 8px;
  right: 10px;
}

.reveal .crystal-scattering-head .animation-control {
  min-width: 126px;
  height: 38px;
  font-size: 0.42em;
}

.reveal .crystal-scattering-stage {
  position: relative;
  height: 370px;
  overflow: hidden;
}

.reveal .crystal-lattice,
.reveal .crystal-scattering-track {
  position: absolute;
  inset: 0;
}

.reveal .crystal-site {
  position: absolute;
  left: var(--x);
  top: var(--y);
  display: grid;
  width: 54px;
  height: 54px;
  translate: -50% -50%;
  place-items: center;
  border: 2px solid rgb(117 221 184 / 55%);
  border-radius: 50%;
  background: rgb(20 75 63 / 72%);
  box-shadow: 0 0 17px rgb(117 221 184 / 10%);
  color: #d9fff1;
  font: italic 700 0.67em/1 Georgia, serif;
}

.reveal .crystal-scattering-track {
  width: 100%;
  height: 100%;
  pointer-events: none;
}

.reveal .crystal-scattering-track polyline {
  fill: none;
  stroke: rgb(255 173 90 / 40%);
  stroke-width: 3;
  stroke-linecap: round;
  stroke-linejoin: round;
  stroke-dasharray: 10 10;
}

.reveal .crystal-projectile {
  position: absolute;
  z-index: 8;
  left: 3.5%;
  top: 50%;
  width: 72px;
  height: 72px;
  translate: -50% -50%;
}

.reveal .crystal-projectile-ball {
  position: absolute;
  inset: 0;
  display: grid;
  place-items: center;
  border: 3px solid #ffad5a;
  border-radius: 50%;
  background: #54310d;
  box-shadow: 0 0 22px rgb(255 173 90 / 28%);
  color: #fff3df;
  font: italic 700 0.87em/1 Georgia, serif;
}

.reveal .crystal-projectile-symbol {
  display: inline-block;
  line-height: 1;
  white-space: nowrap;
}

.reveal .crystal-projectile-symbol sup {
  position: relative;
  top: -0.56em;
  margin-left: -0.12em;
  font-size: 0.55em;
  vertical-align: baseline;
}

.reveal .crystal-projectile-spin {
  position: absolute;
  z-index: 2;
  left: calc(100% - 3px);
  top: 50%;
  width: 84px;
  height: 30px;
  translate: 0 -50%;
  transform-origin: 0 50%;
  background: #66ccff;
  clip-path: polygon(0 31%, 62% 31%, 62% 0, 100% 50%, 62% 100%, 62% 69%, 0 69%);
  filter: drop-shadow(0 0 5px rgb(102 204 255 / 35%));
}

.reveal .crystal-collision {
  position: absolute;
  z-index: 12;
  translate: -50% -50%;
  opacity: 0;
  color: #fff2a8;
  font-size: 1.28em;
  text-shadow: 0 0 18px #ffad5a;
}

.reveal .collision-one { left: 29%; top: 50%; }
.reveal .collision-two { left: 50%; top: 25%; }
.reveal .collision-three { left: 70%; top: 72%; }

.reveal .crystal-label {
  position: absolute;
  z-index: 4;
  bottom: 12px;
  padding: 0.20rem 0.38rem;
  border-radius: 999px;
  background: rgb(4 17 25 / 83%);
  font-size: 0.46em;
  font-weight: 750;
}

.reveal .crystal-label-start {
  left: 18px;
  color: var(--hel-cyan);
}

.reveal .crystal-label-end {
  right: 18px;
  color: var(--hel-orange);
  opacity: 0.25;
}

.reveal .crystal-scattering-caption {
  min-height: 54px;
  padding: 0.35rem 0.55rem;
  border-top: 1px solid rgb(117 221 184 / 30%);
  background: rgb(117 221 184 / 7%);
  font-size: 0.55em;
  font-weight: 700;
  line-height: 1.28;
  text-align: center;
}

.reveal .crystal-scattering-sentinel {
  position: absolute;
  width: 1px;
  height: 1px;
}

.reveal .crystal-scattering.is-active .crystal-projectile {
  animation: crystal-projectile-path 9s cubic-bezier(.45, 0, .42, 1) both;
}

.reveal .crystal-scattering.is-active .crystal-projectile-spin {
  animation: crystal-spin-reorientation 9s steps(1, end) both;
}

.reveal .crystal-scattering.is-active .collision-one {
  animation: crystal-collision-flash 0.9s 2.35s both;
}

.reveal .crystal-scattering.is-active .collision-two {
  animation: crystal-collision-flash 0.9s 4.10s both;
}

.reveal .crystal-scattering.is-active .collision-three {
  animation: crystal-collision-flash 0.9s 5.85s both;
}

.reveal .crystal-scattering.is-active .crystal-label-start {
  animation: crystal-start-label 9s both;
}

.reveal .crystal-scattering.is-active .crystal-label-end {
  animation: crystal-end-label 9s both;
}

.reveal .crystal-scattering.is-active .crystal-scattering-sentinel {
  animation: crystal-scatter-finish 9s both;
}

@keyframes crystal-projectile-path {
  0%, 10% { left: 3.5%; top: 50%; }
  30% { left: 29%; top: 50%; }
  50% { left: 50%; top: 25%; }
  70% { left: 70%; top: 72%; }
  92%, 100% { left: 93%; top: 46%; }
}

@keyframes crystal-spin-reorientation {
  0%, 29% { transform: rotate(0deg); }
  30%, 49% { transform: rotate(-42deg); }
  50%, 69% { transform: rotate(48deg); }
  70%, 100% { transform: rotate(-24deg); }
}

@keyframes crystal-collision-flash {
  0% { opacity: 0; scale: 0.35; }
  28%, 56% { opacity: 1; scale: 1.35; }
  100% { opacity: 0; scale: 0.55; }
}

@keyframes crystal-start-label {
  0%, 25% { opacity: 1; }
  38%, 100% { opacity: 0.22; }
}

@keyframes crystal-end-label {
  0%, 70% { opacity: 0.20; }
  86%, 100% { opacity: 1; }
}

@keyframes crystal-scatter-finish {
  0%, 99% { opacity: 0; }
  100% { opacity: 1; }
}

@media (prefers-reduced-motion: reduce) {
  .reveal .helicity-animated *,
  .reveal .helicity-animated *::before,
  .reveal .helicity-animated *::after {
    animation-duration: 1ms !important;
    animation-iteration-count: 1 !important;
  }
}
