.approach.balance-section {
  background: #f7f7f8;
  color: var(--ink);
  border-top: 1px solid var(--line);
  border-bottom: 1px solid var(--line);
}
.balance-layout {
  max-width: 1340px;
  margin: auto;
  padding: 82px 48px;
  display: grid;
  grid-template-columns: 1fr 1.08fr;
  gap: 100px;
  align-items: center;
}
.balance-figure { margin: 0; min-width: 0; }
.balance-visual {
  position: relative;
  display: grid;
  place-items: center;
  min-height: 360px;
}
.balance-animation { width: 100%; aspect-ratio: 4 / 3; }
.balance-animation svg { width: 100%; height: 100%; overflow: visible; }
.balance-fallback {
  position: absolute;
  height: 330px;
  width: auto;
  max-width: 75%;
  object-fit: contain;
}
.balance-figure.animation-ready .balance-fallback { display: none; }
.balance-caption {
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 18px;
  margin-top: 12px;
  padding: 0 18px;
}
.balance-caption > a {
  color: #74747b;
  font-size: 11px;
  text-underline-offset: 4px;
}
.balance-caption > a:hover { text-decoration: underline; color: var(--ink); }
.balance-motion {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
  min-height: 44px;
  padding: 6px 0 6px 10px;
  border: 0;
  background: transparent;
  font-size: 12px;
  color: #55555e;
  white-space: nowrap;
}
.balance-motion[hidden] { display: none; }
.balance-motion:hover { color: var(--red); }
.balance-motion svg { width: 14px; height: 14px; fill: none; stroke: currentColor; stroke-width: 1.5; stroke-linecap: round; stroke-linejoin: round; }
.balance-motion .balance-play-icon { display: none; }
.balance-motion[aria-pressed="true"] .balance-pause-icon { display: none; }
.balance-motion[aria-pressed="true"] .balance-play-icon { display: block; }
.balance-copy { max-width: 540px; }
.balance-copy h2 {
  font-size: clamp(36px, 3.75vw, 52px);
  line-height: 1.14;
  font-weight: 700;
  letter-spacing: -.035em;
}
.balance-intro {
  max-width: 440px;
  margin-top: 22px;
  font-size: 16px;
  line-height: 1.8;
  color: #64646d;
}
.preparation-list { margin-top: 27px; }
.preparation-list details { border-bottom: 1px solid #dddddf; }
.preparation-list details:first-child { border-top: 1px solid #dddddf; }
.preparation-list summary {
  padding: 19px 0;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 20px;
  list-style: none;
  cursor: pointer;
  font-size: 15px;
  font-weight: 700;
  line-height: 1.6;
}
.preparation-list summary::-webkit-details-marker { display: none; }
.preparation-list summary svg {
  flex-shrink: 0;
  width: 18px;
  height: 18px;
  fill: none;
  stroke: #777780;
  stroke-width: 1.5;
  transition: rotate 180ms ease-out, stroke 180ms ease-out;
}
.preparation-list details[open] summary svg { rotate: 45deg; stroke: var(--red); }
.preparation-list details[open] summary { color: var(--red-dark); }
.preparation-list p {
  max-width: 440px;
  padding: 0 22px 22px 0;
  font-size: 14px;
  line-height: 1.85;
  color: #64646d;
}
.balance-copy > .button { margin-top: 27px; min-height: 48px; font-size: 13px; }
@media (max-width: 1100px) {
  .balance-layout { padding: 65px 5%; gap: 45px; }
  .balance-visual { min-height: 300px; }
  .balance-caption { padding: 0; gap: 10px; }
  .balance-caption > a { font-size: 11px; }
  .balance-motion { font-size: 11px; }
  .balance-copy h2 { font-size: 39px; }
}
@media (max-width: 800px) {
  .balance-layout { padding: 60px 6%; grid-template-columns: 1fr; gap: 20px; }
  .balance-copy { grid-row: 1; max-width: 100%; }
  .balance-copy h2 { font-size: 38px; }
  .balance-intro { max-width: 540px; }
  .balance-figure { width: 100%; max-width: 540px; justify-self: center; }
  .balance-visual { min-height: 0; }
  .balance-caption { margin-top: 0; }
  .preparation-list { margin-top: 24px; }
  .preparation-list p { max-width: 540px; }
}
@media (max-width: 480px) {
  .balance-layout { padding: 48px 6% 33px; gap: 17px; }
  .balance-copy h2 { font-size: 34px; }
  .balance-intro { font-size: 15px; margin-top: 18px; }
  .preparation-list summary { font-size: 14px; padding: 18px 0; }
  .preparation-list p { font-size: 14px; padding-right: 15px; }
  .balance-copy > .button { width: 100%; font-size: 13px; margin-top: 24px; }
  .balance-fallback { height: 240px; }
  .balance-caption > a { font-size: 11px; }
  .balance-motion { font-size: 11px; }
}
@media (prefers-reduced-motion: reduce) {
  .preparation-list summary svg { transition: none; }
}
