/* ==============================
  AQUO Base
============================== */

* {
  box-sizing: border-box;
}

body {
  margin: 0;
  color: #222;
  background: #fff;
  font-family: "Hiragino Sans", "Yu Gothic", "YuGothic", sans-serif;
}

a {
  color: inherit;
  text-decoration: none;
}

/* ==============================
  01. Header
============================== */

.aq-header {
  width: 100%;
  height: 64px;
  background: #fff;
  color: #ff3340;
  overflow: hidden;
}

.aq-header__inner {
  max-width: 1400px;
  height: 64px;
  margin: 0 auto;
  padding-left: 26px;
  display: grid;
  grid-template-columns: 1fr auto auto;
  align-items: center;
}

/* 左側ロゴ */
.aq-header__brand {
  display: flex;
  align-items: center;
  gap: 16px;
  min-width: 0;
}

.aq-header__logo {
  color: #ff3340;
  font-family: "Helvetica Neue", Arial, sans-serif;
  font-size: 38px;
  font-weight: 300;
  line-height: 1;
  letter-spacing: 0.08em;
}

.aq-header__tagline {
  margin: 0;
  color: #ff3340;
  font-size: 15px;
  font-weight: 600;
  line-height: 1;
  letter-spacing: 0.04em;
  white-space: nowrap;
}

/* 中央の赤いバッジ */
.aq-header__center {
  padding: 0 28px;
}

.aq-header__badge {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 220px;
  height: 34px;
  padding: 0 26px;
  border-radius: 999px;
  background: #ff3340;
  color: #fff;
  font-size: 19px;
  font-weight: 700;
  line-height: 1;
  letter-spacing: 0.08em;
}

/* 右側電話番号 */
.aq-header__tel {
  height: 64px;
  padding: 0 28px 0 22px;
  display: flex;
  align-items: center;
  gap: 10px;
  background: linear-gradient(90deg, #ff6d8c 0%, #ff7394 100%);
  color: #fff;
  white-space: nowrap;
}

.aq-header__tel-icon {
  width: 30px;
  height: 30px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
}

.aq-header__tel-icon svg {
  width: 30px;
  height: 30px;
  fill: currentColor;
}

.aq-header__tel-number {
  font-family: "Helvetica Neue", Arial, sans-serif;
  font-size: 32px;
  font-weight: 300;
  line-height: 1;
  letter-spacing: 0.08em;
}

.aq-header__time {
  margin-left: 2px;
  font-size: 15px;
  font-weight: 700;
  line-height: 1;
  letter-spacing: 0.08em;
}

@media (max-width: 900px) {
  .aq-header {
    height: auto;
  }

  .aq-header__inner {
    height: auto;
    padding: 12px 14px;
    display: flex;
    flex-wrap: wrap;
    gap: 10px;
  }

  .aq-header__brand {
    width: 100%;
    gap: 8px;
  }

  .aq-header__logo {
    font-size: 32px;
  }

  .aq-header__tagline {
    font-size: 12px;
    white-space: normal;
  }

  .aq-header__center {
    padding: 0;
  }

  .aq-header__badge {
    min-width: auto;
    height: 30px;
    padding: 0 18px;
    font-size: 15px;
  }

  .aq-header__tel {
    height: 42px;
    padding: 0 14px;
    gap: 6px;
    border-radius: 4px;
  }

  .aq-header__tel-icon,
  .aq-header__tel-icon svg {
    width: 22px;
    height: 22px;
  }

  .aq-header__tel-number {
    font-size: 22px;
  }

  .aq-header__time {
    font-size: 11px;
  }
}

@media (max-width: 480px) {
  .aq-header__inner {
    display: grid;
    grid-template-columns: 1fr;
  }

  .aq-header__brand {
    display: block;
  }

  .aq-header__tagline {
    margin-top: 6px;
  }

  .aq-header__tel {
    justify-content: center;
  }
}

/* ==============================
  02. First View
============================== */

.aq-hero {
  width: 100%;
  height: 584px;
  background: #f2f7f8;
  overflow: hidden;
}

.aq-hero__image {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: contain;
  object-position: center top;
}

@media (max-width: 767px) {
  .aq-hero {
    height: auto;
  }

  .aq-hero__image {
    width: 100%;
    height: auto;
  }
}

/* ==============================
  03. Concept
============================== */

.aq-concept-section {
  position: relative;
  padding: 86px 20px 110px;
  background: #fff2ef;
  overflow: hidden;
  color: #222;
}

.aq-concept__inner {
  max-width: 960px;
  margin: 0 auto;
}

/* セクションタイトル（画像） */
.aq-section-title {
  margin: 0 auto;
  text-align: center;
  line-height: 0;
}

.aq-section-title img {
  display: block;
  width: auto;
  max-width: 100%;
  height: auto;
  margin: 0 auto;
}

.aq-section-title--concept {
  margin-bottom: 42px;
}

.aq-section-title--members {
  margin-bottom: 42px;
}

.aq-section-title--flow {
  margin-bottom: 38px;
}

.aq-section-title--faq {
  margin-bottom: 62px;
}

@media (max-width: 900px) {
  .aq-section-title img {
    max-width: min(82vw, 430px);
  }

  .aq-section-title--members,
  .aq-section-title--flow {
    margin-bottom: 34px;
  }

  .aq-section-title--faq {
    margin-bottom: 42px;
  }
}

@media (max-width: 520px) {
  .aq-section-title img {
    max-width: 76vw;
  }
}

/* リード文 */
.aq-concept__lead {
  margin-bottom: 38px;
  text-align: center;
}

.aq-concept__lead p {
  margin: 0;
  font-size: 16px;
  line-height: 1.9;
  letter-spacing: 0.05em;
}

/* 各ポイント */
.aq-concept-point {
  position: relative;
  display: grid;
  align-items: center;
  gap: 36px;
}

.aq-concept-point--01 {
  grid-template-columns: 250px 1fr;
}

.aq-concept-point--02 {
  grid-template-columns: 1fr 250px;
  margin-top: 20px;
}

.aq-concept-point--03 {
  grid-template-columns: 250px 1fr;
  margin-top: 18px;
}

.aq-concept-point__image {
  display: flex;
  justify-content: center;
  align-items: flex-end;
}

.aq-concept-point__image img {
  display: block;
  width: 230px;
  height: auto;
}

.aq-concept-point__image--large img {
  width: 260px;
}

.aq-concept-point__content {
  display: grid;
  grid-template-columns: 76px 1fr;
  align-items: center;
  gap: 28px;
}

/* POINT丸 */
.aq-point-label {
  width: 76px;
  height: 76px;
  border-radius: 50%;
  background: #ff6d8c;
  color: #fff;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  line-height: 1;
  flex-shrink: 0;
}

.aq-point-label span {
  margin-bottom: 6px;
  font-size: 13px;
  font-weight: 700;
  letter-spacing: 0.05em;
}

.aq-point-label strong {
  font-family: "Helvetica Neue", Arial, sans-serif;
  font-size: 32px;
  font-weight: 300;
}

/* テキスト */
.aq-concept-point__text h3 {
  margin: 0 0 20px;
  color: #111;
  font-family: "Hiragino Mincho ProN", "Yu Mincho", "YuMincho", serif;
  font-size: 31px;
  font-weight: 400;
  line-height: 1.5;
  letter-spacing: 0.12em;
}

.aq-concept-point__text p {
  margin: 0;
  color: #222;
  font-size: 14px;
  line-height: 2.15;
  letter-spacing: 0.04em;
}

/* ガーランド装飾 */
.aq-garland {
  margin: 6px 0 4px;
  text-align: center;
  line-height: 0;
}

.aq-garland img {
  display: block;
  width: 100%;
  max-width: 640px;
  height: auto;
  margin: 0 auto;
}

.aq-garland--01 {
  margin-top: 8px;
}

.aq-garland--02 {
  margin-top: 14px;
}

@media (max-width: 900px) {
  .aq-concept-section {
    padding: 70px 18px 90px;
  }

  .aq-section-title--concept {
    margin-bottom: 34px;
  }

  .aq-concept-point,
  .aq-concept-point--01,
  .aq-concept-point--02,
  .aq-concept-point--03 {
    grid-template-columns: 1fr;
    gap: 22px;
    margin-top: 34px;
  }

  .aq-concept-point--02 .aq-concept-point__image {
    order: 1;
  }

  .aq-concept-point--02 .aq-concept-point__content {
    order: 2;
  }

  .aq-concept-point__image img {
    width: 190px;
  }

  .aq-concept-point__image--large img {
    width: 220px;
  }

  .aq-concept-point__content {
    grid-template-columns: 68px 1fr;
    gap: 18px;
  }

  .aq-point-label {
    width: 68px;
    height: 68px;
  }

  .aq-point-label strong {
    font-size: 28px;
  }

  .aq-concept-point__text h3 {
    font-size: 23px;
    letter-spacing: 0.08em;
  }

  .aq-garland {
    margin: 10px 0;
  }
}

@media (max-width: 520px) {
  .aq-concept-section {
    padding: 58px 14px 76px;
  }

  .aq-section-title--concept {
    margin-bottom: 28px;
  }

  .aq-concept__lead p {
    font-size: 14px;
  }

  .aq-concept-point__content {
    grid-template-columns: 1fr;
    text-align: center;
  }

  .aq-point-label {
    margin: 0 auto;
  }

  .aq-concept-point__text h3 {
    font-size: 20px;
    line-height: 1.7;
  }

  .aq-concept-point__text p {
    text-align: left;
    font-size: 13px;
    line-height: 2;
  }
}

/* ==============================
  04. Members
============================== */

.aq-members-section {
  position: relative;
  padding: 86px 20px 110px;
  background: #fff;
  overflow: hidden;
  color: #222;
}

.aq-members__inner {
  max-width: 960px;
  margin: 0 auto;
}

/* リード文 */
.aq-members__lead {
  margin-bottom: 46px;
  text-align: center;
}

.aq-members__lead p {
  margin: 0;
  font-size: 15px;
  line-height: 2;
  letter-spacing: 0.04em;
}

/* 3列グリッド */
.aq-members-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 54px 30px;
}

/* 会員カード */
.aq-member-card {
  position: relative;
  min-height: 300px;
  padding: 0 18px 20px;
  background: #fff1ef;
  overflow: hidden;
}

.aq-member-card__deco {
  position: absolute;
  left: -10px;
  bottom: 22px;
  width: 120px;
  height: auto;
  pointer-events: none;
  z-index: 0;
}

.aq-member-card__photo {
  position: relative;
  width: 250px;
  margin: -2px auto 0;
  z-index: 1;
}

.aq-member-card__photo img {
  display: block;
  width: 100%;
  height: auto;
}

/* AGE */
.aq-member-card__age {
  position: absolute;
  right: 16px;
  top: 164px;
  z-index: 2;
  display: flex;
  align-items: flex-end;
  gap: 6px;
  line-height: 1;
  text-shadow:
    2px 2px 0 #fff,
    -2px 2px 0 #fff,
    2px -2px 0 #fff,
    -2px -2px 0 #fff;
}

.aq-member-card__age span {
  margin-bottom: 9px;
  color: #ff3340;
  font-family: "Arial Black", "Helvetica Neue", Arial, sans-serif;
  font-size: 24px;
  font-weight: 900;
  letter-spacing: -0.04em;
}

.aq-member-card__age strong {
  font-family: "Arial Black", "Helvetica Neue", Arial, sans-serif;
  font-size: 70px;
  font-weight: 900;
  letter-spacing: -0.08em;
}

.aq-member-card__age--blue strong {
  color: #36b9f5;
}

.aq-member-card__age--green strong {
  color: #72c837;
}

.aq-member-card__age--orange strong {
  color: #ef9a33;
}

.aq-member-card__age--red strong {
  color: #ff3340;
}

.aq-member-card p {
  position: relative;
  z-index: 2;
  margin: 12px 0 0;
  font-size: 13px;
  line-height: 1.7;
  letter-spacing: 0.03em;
}

/* 下段 */
.aq-members-bottom {
  margin-top: 54px;
  display: grid;
  grid-template-columns: 300px 1fr;
  gap: 52px;
  align-items: center;
}

.aq-member-card--large {
  min-height: 310px;
}

.aq-members-message h3 {
  margin: 0 0 24px;
  color: #ff3340;
  font-family: "Hiragino Mincho ProN", "Yu Mincho", "YuMincho", serif;
  font-size: 27px;
  font-weight: 400;
  line-height: 1.5;
  letter-spacing: 0.14em;
}

.aq-members-message p {
  margin: 0 0 12px;
  font-size: 15px;
  line-height: 2;
  letter-spacing: 0.04em;
}

@media (max-width: 1000px) {
  .aq-members__inner {
    max-width: 720px;
  }

  .aq-members-grid {
    grid-template-columns: repeat(2, 1fr);
  }

  .aq-members-bottom {
    grid-template-columns: 1fr;
  }

  .aq-member-card--large {
    max-width: 300px;
    margin: 0 auto;
  }
}

@media (max-width: 640px) {
  .aq-members-section {
    padding: 64px 16px 80px;
  }

  .aq-members-grid {
    grid-template-columns: 1fr;
    gap: 42px;
  }

  .aq-member-card {
    max-width: 300px;
    margin: 0 auto;
  }

  .aq-member-card__photo {
    width: 230px;
  }

  .aq-member-card__age {
    top: 150px;
  }

  .aq-member-card__age strong {
    font-size: 62px;
  }

  .aq-member-card__age span {
    font-size: 21px;
  }

  .aq-members-message h3 {
    font-size: 22px;
    letter-spacing: 0.08em;
  }

  .aq-members-message p {
    font-size: 14px;
  }
}

/* ==============================
  05. Flow + FAQ
============================== */

.aq-flow-faq-section {
  position: relative;
  overflow: hidden;
}

/* ==============================
  Date Flow
============================== */

.aq-date-flow-section {
  position: relative;
  padding: 120px 20px 115px;
  background: #fff4df;
  overflow: hidden;
}

/* 上部の白い波 */
.aq-date-flow-section::before {
  content: "";
  position: absolute;
  left: -8%;
  right: -8%;
  top: -125px;
  height: 220px;
  background: #fff;
  border-radius: 0 0 50% 50% / 0 0 80% 80%;
  z-index: 1;
}

/* 下部の白い波（上部を上下反転） */
.aq-date-flow-section::after {
  content: "";
  position: absolute;
  left: -8%;
  right: -8%;
  bottom: -125px;
  height: 220px;
  background: #fff;
  border-radius: 50% 50% 0 0 / 80% 80% 0 0;
  z-index: 1;
}

.aq-date-flow__inner {
  position: relative;
  z-index: 2;
  max-width: 960px;
  margin: 0 auto;
}

.aq-date-flow__lead {
  margin: 0 0 58px;
  text-align: center;
  font-size: 15px;
  line-height: 1.8;
  letter-spacing: 0.04em;
}

/* 3カード */
.aq-flow-cards {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 30px;
}

.aq-flow-card {
  position: relative;
  min-height: 220px;
  padding: 28px 30px 30px;
  border-radius: 8px;
  color: #fff;
  overflow: hidden;
}

.aq-flow-card--01 {
  background: #efb34a;
}

.aq-flow-card--02 {
  background: #d89124;
}

.aq-flow-card--03 {
  background: #b8740e;
}

/* 葉っぱ装飾 */
.aq-flow-card::before {
  content: "";
  position: absolute;
  left: -10px;
  right: -10px;
  top: -8px;
  height: 150px;
  background: url("../images/content04_illast.png") no-repeat center top / auto 100%;
  pointer-events: none;
  opacity: 0.35;
}

.aq-flow-card__num {
  position: relative;
  z-index: 1;
  margin-bottom: 18px;
  color: #fff;
  text-align: center;
  font-family: "Helvetica Neue", Arial, sans-serif;
  font-size: 54px;
  font-weight: 700;
  line-height: 1;
}

.aq-flow-card h3 {
  position: relative;
  z-index: 1;
  margin: 0 0 20px;
  color: #fff;
  text-align: center;
  font-size: 18px;
  font-weight: 700;
  line-height: 1.5;
  letter-spacing: 0.04em;
}

.aq-flow-card p {
  position: relative;
  z-index: 1;
  margin: 0;
  color: #fff;
  font-size: 14px;
  line-height: 2;
  letter-spacing: 0.04em;
}

/* ==============================
  Normal FAQ
============================== */

.aq-normal-faq-section {
  position: relative;
  padding: 112px 20px 120px;
  background: #fff;
}

.aq-normal-faq__inner {
  position: relative;
  z-index: 2;
  max-width: 960px;
  margin: 0 auto;
}

.aq-normal-faq-list {
  display: grid;
  gap: 0;
}

.aq-normal-faq-item {
  display: grid;
  grid-template-columns: 86px 1fr;
  gap: 24px;
  padding: 0 0 22px;
  margin-bottom: 22px;
  border-bottom: 1px solid #ff8aa2;
}

.aq-normal-faq-item__icon {
  width: 76px;
  flex-shrink: 0;
}

.aq-normal-faq-item__icon img {
  display: block;
  width: 100%;
  height: auto;
}

.aq-normal-faq-item__body h3 {
  display: inline-block;
  margin: 0 0 10px;
  padding-bottom: 3px;
  border-bottom: 1px solid #2d9bd8;
  color: #1f8bd0;
  font-size: 18px;
  font-weight: 700;
  line-height: 1.5;
  letter-spacing: 0.04em;
}

.aq-normal-faq-item__body p {
  margin: 0;
  color: #111;
  font-size: 15px;
  line-height: 2;
  letter-spacing: 0.04em;
}

@media (max-width: 900px) {
  .aq-date-flow-section {
    padding: 72px 18px 68px;
  }

  .aq-date-flow-section::before {
    top: -80px;
    height: 150px;
  }

  .aq-date-flow-section::after {
    bottom: -80px;
    height: 150px;
  }

  .aq-flow-cards {
    grid-template-columns: 1fr;
    max-width: 420px;
    margin: 0 auto;
  }

  .aq-flow-card {
    min-height: auto;
  }

  .aq-normal-faq-section {
    padding: 60px 18px 92px;
  }

  .aq-normal-faq-list {
    max-width: 640px;
    margin: 0 auto;
  }

  .aq-normal-faq-item {
    grid-template-columns: 72px 1fr;
    gap: 18px;
  }

  .aq-normal-faq-item__icon {
    width: 66px;
  }

  .aq-normal-faq-item__body h3 {
    font-size: 16px;
  }

  .aq-normal-faq-item__body p {
    font-size: 14px;
  }
}

@media (max-width: 520px) {
  .aq-date-flow-section {
    padding: 52px 14px 48px;
  }

  .aq-date-flow-section::before {
    top: -55px;
    height: 110px;
    border-radius: 0 0 50% 50% / 0 0 70% 70%;
  }

  .aq-date-flow-section::after {
    bottom: -55px;
    height: 110px;
    border-radius: 50% 50% 0 0 / 70% 70% 0 0;
  }

  .aq-flow-card__num {
    font-size: 46px;
  }

  .aq-flow-card h3 {
    font-size: 16px;
  }

  .aq-flow-card p {
    font-size: 13px;
  }

  .aq-normal-faq-section {
    padding: 44px 14px 82px;
  }

  .aq-normal-faq-item {
    grid-template-columns: 1fr;
    gap: 10px;
    text-align: left;
  }

  .aq-normal-faq-item__icon {
    margin: 0 auto;
  }

  .aq-normal-faq-item__body h3 {
    display: block;
    font-size: 15px;
  }

  .aq-normal-faq-item__body p {
    font-size: 13px;
  }
}

/* ==============================
  06. Contact Form
============================== */

.aq-contact-section {
  position: relative;
  padding: 70px 20px 95px;
  background: #ff6b8b;
  overflow: hidden;
  color: #fff;
}

.aq-contact__inner {
  position: relative;
  z-index: 2;
  max-width: 960px;
  margin: 0 auto;
  text-align: center;
}

/* 白リボン */
.aq-contact-ribbon {
  position: relative;
  width: 470px;
  height: 96px;
  margin: 0 auto 48px;
  display: flex;
  align-items: center;
  justify-content: center;
  background: #fff;
  color: #111;
}

.aq-contact-ribbon::before,
.aq-contact-ribbon::after {
  content: "";
  position: absolute;
  top: 20px;
  width: 70px;
  height: 58px;
  background: #fff;
  z-index: 0;
}

.aq-contact-ribbon::before {
  left: -48px;
  clip-path: polygon(0 0, 100% 12%, 100% 88%, 0 100%, 24% 50%);
}

.aq-contact-ribbon::after {
  right: -48px;
  clip-path: polygon(0 12%, 100% 0, 76% 50%, 100% 100%, 0 88%);
}

.aq-contact-ribbon__crown {
  position: absolute;
  left: 50%;
  top: -38px;
  transform: translateX(-50%);
  color: #fff;
  font-size: 40px;
  line-height: 1;
}

.aq-contact-ribbon h2 {
  position: relative;
  z-index: 1;
  margin: 0;
  color: #111;
  font-size: 24px;
  font-weight: 700;
  letter-spacing: 0.08em;
}

.aq-contact__lead {
  margin: 0 0 56px;
  color: #fff;
  font-size: 16px;
  line-height: 1.8;
  letter-spacing: 0.06em;
}

/* フォーム */
.aq-contact-form {
  width: 520px;
  margin: 0 auto;
}

.aq-form-row {
  min-height: 48px;
  margin-bottom: 12px;
  display: grid;
  grid-template-columns: 175px 1fr;
  align-items: center;
  background: rgba(255, 255, 255, 0.42);
  border-radius: 6px;
  overflow: hidden;
}

.aq-form-row--textarea {
  align-items: stretch;
  min-height: 150px;
}

.aq-form-label {
  height: 100%;
  padding: 13px 18px;
  display: flex;
  align-items: center;
  gap: 10px;
  color: #111;
  font-size: 16px;
  font-weight: 700;
  text-align: left;
  line-height: 1.4;
}

.aq-form-label span {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 44px;
  height: 23px;
  padding: 0 8px;
  border-radius: 4px;
  background: #ff5d86;
  color: #fff;
  font-size: 13px;
  font-weight: 700;
}

.aq-form-field {
  padding: 8px 16px;
  text-align: left;
}

.aq-form-field input,
.aq-form-field select,
.aq-form-field textarea {
  width: 100%;
  border: none;
  outline: none;
  background: #fff;
  color: #222;
  font-size: 15px;
  font-family: inherit;
}

.aq-form-field input,
.aq-form-field select {
  height: 30px;
  padding: 0 10px;
}

.aq-form-field select {
  appearance: none;
  background:
    linear-gradient(45deg, transparent 50%, #fff 50%) right 15px center / 9px 9px no-repeat,
    linear-gradient(135deg, #fff 50%, transparent 50%) right 6px center / 9px 9px no-repeat,
    #ff6b8b;
  color: #fff;
  padding-right: 34px;
}

.aq-form-field textarea {
  height: 132px;
  padding: 10px;
  resize: vertical;
}

.aq-form-radio {
  display: flex;
  align-items: center;
  gap: 24px;
  color: #111;
  font-size: 16px;
}

.aq-form-radio label {
  display: inline-flex;
  align-items: center;
  gap: 8px;
}

.aq-form-radio input {
  width: 16px;
  height: 16px;
  accent-color: #ff5d86;
}

/* 送信ボタン */
.aq-form-submit {
  margin-top: 72px;
  text-align: center;
}

.aq-form-submit button {
  width: 320px;
  height: 62px;
  border: 3px solid #fff;
  border-radius: 8px;
  background: #32aeea;
  color: #fff;
  font-size: 20px;
  font-weight: 700;
  font-family: inherit;
  letter-spacing: 0.06em;
  cursor: pointer;
  box-shadow: 0 4px 0 rgba(0, 0, 0, 0.14);
}

.aq-form-submit button span {
  margin-left: 24px;
  font-size: 18px;
}

/* 背景ハート */
.aq-contact-heart {
  position: absolute;
  z-index: 1;
  pointer-events: none;
  opacity: 0.34;
}

.aq-contact-heart::before,
.aq-contact-heart::after {
  content: "";
  position: absolute;
  width: 50%;
  height: 78%;
  border-radius: 50% 50% 0 0;
  background: transparent;
  border: 7px solid rgba(255,255,255,0.42);
  border-bottom: 0;
}

.aq-contact-heart::before {
  left: 50%;
  transform: rotate(-45deg);
  transform-origin: 0 100%;
}

.aq-contact-heart::after {
  left: 0;
  transform: rotate(45deg);
  transform-origin: 100% 100%;
}

.aq-contact-heart--01 {
  width: 270px;
  height: 235px;
  left: -35px;
  top: 80px;
  transform: rotate(-12deg);
}

.aq-contact-heart--02 {
  width: 210px;
  height: 185px;
  right: -20px;
  top: 70px;
  transform: rotate(13deg);
}

.aq-contact-heart--03 {
  width: 190px;
  height: 165px;
  left: 260px;
  top: 365px;
  transform: rotate(-20deg);
}

.aq-contact-heart--04 {
  width: 180px;
  height: 155px;
  right: 250px;
  top: 490px;
  transform: rotate(8deg);
}

.aq-contact-heart--05 {
  width: 130px;
  height: 110px;
  left: 230px;
  bottom: 145px;
  transform: rotate(-12deg);
}

/* 右下の塗りハート */
.aq-contact-section::after {
  content: "";
  position: absolute;
  right: 95px;
  bottom: 125px;
  width: 145px;
  height: 125px;
  opacity: 0.35;
  background: #ffd3dc;
  clip-path: path("M72 120 C30 88 0 65 0 34 C0 14 15 0 34 0 C50 0 63 9 72 23 C81 9 94 0 110 0 C129 0 145 14 145 34 C145 65 114 88 72 120 Z");
}

@media (max-width: 900px) {
  .aq-contact-section {
    padding: 62px 18px 82px;
  }

  .aq-contact-ribbon {
    width: min(78vw, 430px);
    height: 84px;
  }

  .aq-contact-ribbon::before,
  .aq-contact-ribbon::after {
    width: 54px;
  }

  .aq-contact-ribbon::before {
    left: -36px;
  }

  .aq-contact-ribbon::after {
    right: -36px;
  }

  .aq-contact-ribbon h2 {
    font-size: 20px;
  }

  .aq-contact-form {
    width: min(100%, 520px);
  }

  .aq-contact-heart--01 {
    left: -120px;
  }

  .aq-contact-heart--02 {
    right: -120px;
  }

  .aq-contact-heart--03,
  .aq-contact-heart--04,
  .aq-contact-heart--05 {
    display: none;
  }
}

@media (max-width: 560px) {
  .aq-contact-section {
    padding: 54px 14px 72px;
  }

  .aq-contact-ribbon {
    width: 72vw;
    height: 72px;
    margin-bottom: 36px;
  }

  .aq-contact-ribbon h2 {
    font-size: 17px;
  }

  .aq-contact-ribbon__crown {
    top: -30px;
    font-size: 30px;
  }

  .aq-contact__lead {
    margin-bottom: 34px;
    font-size: 14px;
  }

  .aq-form-row {
    grid-template-columns: 1fr;
  }

  .aq-form-label {
    padding: 10px 14px 4px;
  }

  .aq-form-field {
    padding: 6px 14px 12px;
  }

  .aq-form-row--textarea {
    min-height: auto;
  }

  .aq-form-field textarea {
    height: 120px;
  }

  .aq-form-submit {
    margin-top: 42px;
  }

  .aq-form-submit button {
    width: 100%;
    max-width: 300px;
    height: 56px;
    font-size: 17px;
  }
}

/* ==============================
  07. Terms
============================== */

.aq-terms-section {
  background: #fff;
  padding: 82px 20px 110px;
  color: #111;
  font-family: "Hiragino Sans", "Yu Gothic", "YuGothic", sans-serif;
}

.aq-terms__inner {
  max-width: 960px;
  margin: 0 auto;
}

/* 赤い見出し帯 */
.aq-terms-header {
  position: relative;
  height: 48px;
  display: flex;
  align-items: center;
  justify-content: center;
  background: #ff3338;
  border-radius: 4px;
  color: #fff;
}

.aq-terms-section.is-open .aq-terms-header {
  border-radius: 4px 4px 0 0;
}

.aq-terms-header__open {
  width: 100%;
  height: 100%;
  padding: 0;
  border: none;
  background: transparent;
  cursor: pointer;
  font: inherit;
}

.aq-terms-header__open h2 {
  margin: 0;
  color: #fff;
  font-size: 19px;
  font-weight: 700;
  line-height: 1;
  letter-spacing: 0.08em;
  pointer-events: none;
}

/* 右側の閉じる */
.aq-terms-header__close {
  position: absolute;
  right: 22px;
  top: 50%;
  transform: translateY(-50%);
  display: inline-flex;
  align-items: center;
  gap: 14px;
  padding: 0;
  border: none;
  background: transparent;
  color: #fff;
  font-size: 13px;
  line-height: 1;
  letter-spacing: 0.06em;
  cursor: pointer;
  font-family: inherit;
}

.aq-terms-header__arrow {
  width: 22px;
  height: 22px;
  border-top: 3px solid #fff;
  border-left: 3px solid #fff;
  transform: rotate(45deg) translateY(6px);
}

/* 本文 */
.aq-terms-body {
  padding: 44px 0 0;
  font-size: 15px;
  line-height: 2.05;
  letter-spacing: 0.03em;
}

.aq-terms-body[hidden] {
  display: none;
}

.aq-terms-body > p {
  margin: 0 0 58px;
}

.aq-terms-body__end {
  margin: 48px 0 0;
  text-align: right;
}

/* 条文 */
.aq-terms-article {
  margin-top: 0;
}

.aq-terms-article + .aq-terms-article {
  margin-top: 42px;
}

.aq-terms-article h3 {
  display: inline-block;
  margin: 0 0 18px;
  padding: 4px 12px;
  background: #ff3338;
  color: #111;
  font-size: 16px;
  font-weight: 700;
  line-height: 1.4;
}

.aq-terms-article ol {
  margin: 0;
  padding: 0;
  list-style: none;
  counter-reset: aq-terms-counter;
}

.aq-terms-article li {
  counter-increment: aq-terms-counter;
  margin: 0;
  line-height: 2;
}

.aq-terms-article li::before {
  content: counter(aq-terms-counter) ".";
}

.aq-terms-article ul {
  margin: 8px 0 0;
  padding-left: 1.4em;
  list-style: disc;
}

.aq-terms-article ul li {
  counter-increment: none;
  margin-bottom: 4px;
}

.aq-terms-article ul li::before {
  content: none;
}

@media (max-width: 900px) {
  .aq-terms-section {
    padding: 64px 18px 88px;
  }

  .aq-terms-body {
    font-size: 14px;
    line-height: 2;
  }

  .aq-terms-body > p {
    margin-bottom: 42px;
  }
}

@media (max-width: 520px) {
  .aq-terms-section {
    padding: 52px 14px 72px;
  }

  .aq-terms-header {
    height: 46px;
  }

  .aq-terms-header__open h2 {
    font-size: 17px;
  }

  .aq-terms-header__close {
    right: 14px;
    gap: 8px;
    font-size: 12px;
  }

  .aq-terms-header__arrow {
    width: 18px;
    height: 18px;
    border-width: 2px;
  }

  .aq-terms-body {
    padding-top: 34px;
    font-size: 13px;
  }

  .aq-terms-article h3 {
    font-size: 14px;
  }
}

/* ==============================
  08. Footer
============================== */

.aq-footer {
  background: #ff6b8b;
  color: #111;
  font-family: "Hiragino Sans", "Yu Gothic", "YuGothic", sans-serif;
}

.aq-footer__inner {
  max-width: 760px;
  min-height: 230px;
  margin: 0 auto;
  padding: 42px 20px 30px;
}

.aq-footer__info {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 80px;
  margin-bottom: 72px;
}

.aq-footer__list {
  margin: 0;
  display: grid;
  gap: 8px;
}

.aq-footer__row {
  display: grid;
  grid-template-columns: 92px 1fr;
  align-items: center;
  gap: 16px;
}

.aq-footer dt,
.aq-footer dd {
  margin: 0;
  color: #111;
  font-size: 14px;
  font-weight: 400;
  line-height: 1.6;
  letter-spacing: 0.03em;
}

.aq-footer dt {
  position: relative;
  padding-left: 20px;
  white-space: nowrap;
}

.aq-footer dt::before {
  content: "";
  position: absolute;
  left: 0;
  top: 50%;
  width: 12px;
  height: 12px;
  transform: translateY(-50%);
  border-radius: 50%;
  background: #fff;
}

.aq-footer__copy {
  margin: 0;
  color: #fff;
  text-align: center;
  font-size: 13px;
  line-height: 1.6;
  letter-spacing: 0.03em;
}

@media (max-width: 767px) {
  .aq-footer__inner {
    min-height: auto;
    padding: 38px 24px 28px;
  }

  .aq-footer__info {
    grid-template-columns: 1fr;
    gap: 22px;
    margin-bottom: 48px;
  }

  .aq-footer__row {
    grid-template-columns: 90px 1fr;
    gap: 12px;
  }

  .aq-footer dt,
  .aq-footer dd {
    font-size: 13px;
  }

  .aq-footer__copy {
    font-size: 12px;
  }
}

@media (max-width: 420px) {
  .aq-footer__row {
    grid-template-columns: 1fr;
    gap: 2px;
  }

  .aq-footer dt {
    padding-left: 18px;
  }

  .aq-footer dd {
    padding-left: 18px;
  }
}
