.programs-index .calculator-breadcrumb {
  margin-bottom: 16px;
}

.programs-index .calculator-heading {
  margin-bottom: 18px;
}

.programs-index .calculator-heading p {
  margin-top: 8px;
}

.programs-index .calculator-grid {
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 12px;
}

.programs-index .calculator-card {
  padding: 14px;
}

.programs-index .calculator-card > div {
  gap: 8px;
}

.programs-index .calculator-card h2,
.programs-index .calculator-card > p {
  display: -webkit-box;
  -webkit-box-orient: vertical;
  overflow: hidden;
  overflow-wrap: anywhere;
}

.programs-index .calculator-card h2 {
  height: 2.5em;
  font-size: 18px;
  line-height: 1.25;
  -webkit-line-clamp: 2;
}

.programs-index .calculator-card > p {
  height: 4.5em;
  line-height: 1.5;
  margin: 6px 0 12px;
  -webkit-line-clamp: 3;
}

.program-cover {
  display: block;
  width: 100%;
  aspect-ratio: 16 / 9;
  margin-bottom: 10px;
  overflow: hidden;
  border: 1px solid var(--line);
  border-radius: 5px;
  background: var(--soft);
}

.program-thumbnail {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: contain;
}

@media (max-width: 900px) {
  .programs-index .calculator-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
}

@media (max-width: 500px) {
  .programs-index .calculator-grid {
    grid-template-columns: minmax(0, 1fr);
  }
}

.program-detail .calculator-breadcrumb {
  margin-bottom: 20px;
}

.program-detail .calculator-detail-heading {
  margin-bottom: 16px;
}

.program-detail .calculator-detail-heading > p:last-child {
  margin-top: 8px;
}

.program-detail .calculator-method {
  padding-block: 16px;
}

.program-guide {
  max-width: 58rem;
  margin-top: 12px;
}

.program-guide > p {
  margin-top: .75rem;
  color: var(--muted);
}

.program-guide > p a,
.program-guide-original {
  color: var(--purple-ink);
  text-decoration: underline;
}

.program-guide-original {
  display: inline-block;
  margin-top: .75rem;
  font-size: .875rem;
}

.program-guide-steps {
  display: grid;
  gap: 1.5rem;
  padding: 0;
  margin: 1.25rem 0;
  list-style: none;
}

.program-guide-step {
  padding: clamp(.75rem, 2.5vw, 1.5rem);
  border: 1px solid var(--line);
  border-radius: 5px;
  background: var(--surface);
}

.program-guide-figure {
  margin: .75rem 0 0;
}

.program-guide-image {
  position: relative;
  width: fit-content;
  max-width: 100%;
  border: 1px solid var(--line);
}

.program-guide-image img {
  display: block;
  max-width: 100%;
  height: auto;
}

.program-guide-image svg {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  pointer-events: none;
}

.program-guide-image line {
  stroke: #b91b34;
  stroke-width: 7;
  filter: drop-shadow(0 0 2px #fff);
}

.program-guide-image circle {
  fill: #b91b34;
  stroke: #fff;
  stroke-width: 3;
}

.program-guide-image text {
  fill: #fff;
  font-weight: 700;
  text-anchor: middle;
  dominant-baseline: central;
}

.program-guide-actions {
  display: grid;
  gap: .4rem;
  padding-left: 1.5rem;
  margin: .75rem 0 0;
}

.program-guide-actions li::marker {
  color: var(--purple-ink);
  font-weight: 700;
}
