.terms {
  padding-top: 120px;
  padding-bottom: 180px;
  font-size: 15px;
}
h2 {
  font-size: 30px;
  font-weight: 500;
  margin-bottom: 2rem;
}
h3 {
  text-align: left;
  margin: 1.5rem 0;
  font-weight: 500;
  font-size: 22px;
}
h4 {
  margin-left: 1rem;
  font-size: 19px;
  font-weight: 500;
}
.terms p {
  font-weight: 300;
  line-height: 2;
}

.terms ul li {
  list-style: disc;
}
.terms ol {
  margin-bottom: 1.5rem;
  list-style: none;
  padding-left: 0;
}
.terms ol li {
  margin: 0.7rem 0;
  font-weight: 300;
}

/* ① 最上位の番号を「自前カウンター」にする (1. 2. 3. …) */
.terms ol.num {
  counter-reset: section;
  padding-left: 1rem;
}
.terms ol.num > li {
  counter-increment: section;
  position: relative;
  padding-left: 1rem;
}
.terms ol.num > li::before {
  content: counter(section) ". ";
  position: absolute;
  left: 0;
}

/* ② (a)(b)(c)… のサブリスト */
.terms ol.num > li ol.alpha {
  padding-left: 2rem;
  counter-reset: subalpha;
}
.terms ol.num > li ol.alpha > li {
  list-style: none;
  counter-increment: subalpha;
  position: relative;
  padding-left: 0;
}
.terms ol.num > li ol.alpha > li:before {
  content: "( " counter(subalpha, lower-alpha) " )";
  position: absolute;
  left: -2.2rem;
}

/* ③ (1)(2)(3)… のサブリストが必要なとき */
.terms ol.num > li ol.num {
  padding-left: 2rem;
  counter-reset: subnum;
}
.terms ol.num > li ol.num > li {
  list-style: none;
  counter-increment: subnum;
  position: relative;
  padding-left: 0;
}
.terms ol.num > li ol.num > li:before {
  content: "( " counter(subnum, decimal) " )";
  position: absolute;
  left: -2.2rem;
}

/* --- 例外: ps-3 がついた num リストは番号を非表示にする --- */
.terms ol.num.ps-3 > li::before {
  content: none !important;
}
.terms ol.num.ps-3 > li {
  counter-increment: none !important;
  padding-left: 0 !important;
}

@media (max-width: 590px) {
  .terms {
    padding-top: 80px;
    padding-bottom: 80px;
  }
}