/* Pricing / FAQ / final contact. All presentation is scoped to these sections. */
.pricing-section,
.faq-section,
.contact-section,
.site-footer {
  color: var(--ink, #1f1b17);
  background: var(--cream, #faf7f2);
}

.pricing-section .section-kicker,
.faq-section .section-kicker {
  margin: 0 0 28px;
  color: #a04830;
  font-size: 11px;
  font-weight: 400;
  letter-spacing: .16em;
  line-height: 1.8;
}

.pricing-section .section-title,
.faq-section .section-title {
  margin: 0;
  color: var(--ink, #1f1b17);
  font-family: 'Shippori Mincho B1', 'Hiragino Mincho ProN', serif;
  font-size: clamp(38px, 4.3vw, 62px);
  font-weight: 400;
  line-height: 1.55;
  letter-spacing: .025em;
  font-feature-settings: 'palt';
  text-wrap: pretty;
}

.pricing-section .accent,
.contact-section .accent { color: var(--accent, #c45a3e); }
.pricing-section .accent { display: inline-block; white-space: nowrap; }

.pricing-section { padding-block: clamp(96px, 10vw, 152px); }
.pricing-section .pricing-intro { max-width: 840px; }
.pricing-section .pricing-lead {
  max-width: 680px;
  margin: 28px 0 0;
  font-size: 16px;
  line-height: 1.95;
  letter-spacing: .045em;
  color: #6b6158;
  text-wrap: pretty;
}
.pricing-section .pricing-plans {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 30px;
  margin-top: 64px;
}
.pricing-section .pricing-plan {
  display: flex;
  flex-direction: column;
  padding: 36px 42px 42px;
  border-top: 1px solid #ac9986;
  border-bottom: 1px solid #d8cabb;
  background: #f1ece3;
}
.pricing-section .pricing-plan-pro {
  border-top-color: var(--accent, #c45a3e);
  background: #efe5da;
}
.pricing-section .pricing-plan-top {
  display: flex;
  align-items: center;
  gap: 22px;
  margin-bottom: 29px;
}
.pricing-section .pricing-plan-tag {
  font-size: 12px;
  letter-spacing: .19em;
  color: #745844;
}
.pricing-section .pricing-plan-pro .pricing-plan-tag { color: #a3472f; }
.pricing-section .pricing-plan-line { width: 36px; height: 1px; background: currentColor; opacity: .25; }
.pricing-section .pricing-plan-name {
  margin: 0;
  font-family: 'Shippori Mincho B1', 'Hiragino Mincho ProN', serif;
  font-size: clamp(24px, 2.2vw, 31px);
  font-weight: 400;
  line-height: 1.5;
  letter-spacing: .025em;
}
.pricing-section .pricing-plan-amount {
  margin: 33px 0 28px;
  min-height: 120px;
  font-family: 'Shippori Mincho B1', 'Hiragino Mincho ProN', serif;
  font-weight: 400;
  line-height: 1.1;
  font-feature-settings: 'palt';
  font-variant-numeric: lining-nums tabular-nums;
  letter-spacing: -.015em;
}
.pricing-section .pricing-price-value { display: block; font-size: clamp(40px, 4.2vw, 60px); white-space: nowrap; }
.pricing-section .pricing-price-range { display: flex; align-items: baseline; gap: 4px; margin-top: 14px; font-size: clamp(29px, 2.6vw, 39px); white-space: nowrap; }
.pricing-section .pricing-price-unit { font-family: Arial, 'Hiragino Kaku Gothic ProN', sans-serif; font-size: 14px; letter-spacing: .035em; }
.pricing-section .pricing-plan-description {
  flex-grow: 1;
  margin: 0;
  min-height: 6em;
  font-size: 16px;
  line-height: 1.9;
  letter-spacing: .035em;
  color: #62594f;
  text-wrap: pretty;
}
.pricing-section .pricing-plan-features {
  padding: 26px 0 0;
  margin: 28px 0 0;
  border-top: 1px solid #cfbfac;
  list-style: none;
}
.pricing-section .pricing-plan-features li {
  position: relative;
  margin: 0;
  padding-left: 24px;
  font-size: 16px;
  line-height: 1.85;
  letter-spacing: .025em;
  text-wrap: pretty;
}
.pricing-section .pricing-plan-features li + li { margin-top: 16px; }
.pricing-section .pricing-plan-features li::before {
  content: '';
  position: absolute;
  left: 0;
  top: .88em;
  width: 10px;
  height: 1px;
  background: #ac7754;
}

.faq-section { padding-block: clamp(92px, 9vw, 140px); border-top: 1px solid #e5dace; }
.faq-section .faq-intro { max-width: 1050px; }
.faq-section .section-title { font-size: clamp(32px, 3.9vw, 56px); }
.faq-section .faq-list { max-width: 960px; margin: 58px 0 0 auto; border-top: 1px solid #b8a48e; }
.faq-section .faq-item { margin: 0; border-bottom: 1px solid #d8cbbb; }
.faq-section .faq-question {
  display: grid;
  grid-template-columns: 30px minmax(0, 1fr) 26px;
  gap: 20px;
  align-items: start;
  padding: 29px 8px 29px 0;
  list-style: none;
  cursor: pointer;
  font-size: 17px;
  font-weight: 400;
  line-height: 1.8;
  letter-spacing: .035em;
  -webkit-tap-highlight-color: transparent;
}
.faq-section .faq-question::-webkit-details-marker { display: none; }
.faq-section .faq-question::marker { content: ''; }
.faq-section .faq-question:focus-visible { outline: 2px solid var(--accent, #c45a3e); outline-offset: 5px; }
.faq-section .faq-question-mark {
  font-family: 'Shippori Mincho B1', 'Hiragino Mincho ProN', serif;
  font-size: 21px;
  line-height: 1.45;
  color: #a04830;
}
.faq-section .faq-toggle { position: relative; width: 24px; height: 28px; }
.faq-section .faq-toggle::before,
.faq-section .faq-toggle::after {
  content: '';
  position: absolute;
  top: 13px;
  left: 4px;
  width: 16px;
  height: 1px;
  background: #9b7354;
}
.faq-section .faq-toggle::after { transform: rotate(90deg); transition: transform .18s ease; }
.faq-section .faq-item[open] .faq-toggle::after { transform: rotate(0); }
.faq-section .faq-item[open] .faq-question-text { color: #9e4a32; }
.faq-section .faq-answer { padding: 0 63px 30px 50px; }
.faq-section .faq-answer p { margin: 0; color: #6b6157; font-size: 16px; line-height: 1.95; letter-spacing: .04em; text-wrap: pretty; }

.contact-section { position: relative; isolation: isolate; overflow: hidden; border-top: 1px solid #e5dace; }
.contact-section .section-shell { position: relative; padding-block: clamp(100px, 10vw, 150px); }
.contact-section .contact-threads { position: absolute; z-index: -1; width: min(58vw, 800px); height: 100%; right: -140px; top: 0; color: #b4714f; opacity: .3; pointer-events: none; }
.contact-section .contact-content { position: relative; z-index: 1; max-width: 900px; }
.contact-section h2 {
  margin: 0;
  font-family: 'Shippori Mincho B1', 'Hiragino Mincho ProN', serif;
  font-size: clamp(48px, 6.4vw, 92px);
  font-weight: 400;
  line-height: 1.4;
  letter-spacing: .02em;
  font-feature-settings: 'palt';
}
.contact-section .contact-body { margin: 46px 0 32px; color: #6b6054; font-size: 16px; line-height: 1.95; letter-spacing: .045em; text-wrap: pretty; }
.contact-section .contact-cta {
  display: inline-grid;
  grid-template-columns: minmax(0, 1fr) 26px;
  align-items: center;
  gap: 36px;
  max-width: 100%;
  min-height: 66px;
  padding: 19px 29px;
  border: 1px solid #a54a32;
  background: #a54a32;
  color: var(--cream, #faf7f2);
  font-size: 14px;
  line-height: 1.8;
  letter-spacing: .04em;
  text-decoration: none;
  cursor: default;
}
.contact-section .contact-cta-label { text-wrap: pretty; }
.contact-section .contact-cta-arrow { font-size: 25px; line-height: 1; text-align: right; }
.contact-section .contact-cta:focus-visible { outline: 2px solid #8a3925; outline-offset: 5px; }

.site-footer { padding-block: 60px 56px; border-top: 1px solid #d9ccbc; }
.site-footer .footer-grid { display: grid; grid-template-columns: .85fr 1.15fr; gap: 80px; }
.site-footer .footer-name { margin: 0 0 7px; font-size: 18px; font-weight: 400; letter-spacing: .035em; line-height: 1.7; }
.site-footer .footer-role { font-size: 11px; letter-spacing: .04em; line-height: 1.9; color: #7a6b5d; }
.site-footer .footer-copy { margin-top: 37px; font-size: 10px; line-height: 1.8; letter-spacing: .025em; color: #756653; }
.site-footer .footer-claim-label { margin-bottom: 15px; color: #a24c34; font-size: 11px; line-height: 1.8; letter-spacing: .08em; }
.site-footer .footer-claim-title { margin: 0; font-size: 14px; line-height: 1.95; letter-spacing: .035em; color: #61564b; text-wrap: pretty; }
.site-footer .footer-stats { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); margin-top: 28px; }
.site-footer .footer-stat + .footer-stat { border-left: 1px solid #dbcbb7; padding-left: 25px; }
.site-footer .footer-stat-number { display: block; font-family: 'Shippori Mincho B1', 'Hiragino Mincho ProN', serif; font-size: 33px; line-height: 1.4; letter-spacing: -.025em; }
.site-footer .footer-stat-unit { display: inline-block; margin-left: 4px; font-size: 16px; letter-spacing: 0; }
.site-footer .footer-stat-label { display: block; margin-top: 6px; font-size: 10px; line-height: 1.7; letter-spacing: .06em; color: #786b5d; }

@media (min-width: 1500px) {
  .contact-section .contact-threads { right: -220px; }
}
@media (max-width: 1100px) {

.pricing-section .pricing-plan { padding: 30px 28px 34px; }
  .pricing-section .pricing-plans { gap: 22px; }
  .pricing-section .pricing-plan-amount { min-height: 108px; }
  .pricing-section .pricing-price-value { font-size: 47px; }
  .pricing-section .pricing-price-range { font-size: 32px; }
  .pricing-section .pricing-plan-description { min-height: 8em; }
  .site-footer .footer-grid { gap: 45px; }
}
@media (max-width: 800px) {

.pricing-section .pricing-plans { grid-template-columns: 1fr; gap: 24px; margin-top: 42px; }
  .pricing-section .pricing-plan { padding: 32px; }
  .pricing-section .pricing-plan-name { font-size: 30px; }
  .pricing-section .pricing-plan-amount { min-height: 0; margin-block: 28px; }
  .pricing-section .pricing-price-value { font-size: 56px; }
  .pricing-section .pricing-price-range { font-size: 36px; }
  .pricing-section .pricing-plan-description { min-height: 0; }
  .faq-section .faq-list { margin-top: 39px; }
  .faq-section .faq-question { font-size: 16px; grid-template-columns: 28px minmax(0, 1fr) 22px; gap: 13px; }
  .faq-section .faq-answer { padding-left: 41px; padding-right: 35px; }
  .contact-section h2 { font-size: clamp(44px, 8.3vw, 65px); }
  .contact-section .contact-threads { width: 80vw; right: -190px; opacity: .21; }
  .site-footer .footer-grid { grid-template-columns: 1fr; gap: 44px; }
  .site-footer .footer-copy { margin-top: 21px; }
  .site-footer .footer-claim { padding-top: 37px; border-top: 1px solid #dfd3c4; }
}
@media (max-width: 480px) {

.pricing-section,
  .faq-section { padding-block: 79px; }
  .pricing-section .section-kicker,
  .faq-section .section-kicker { font-size: 10px; margin-bottom: 21px; }
  .pricing-section .section-title { font-size: clamp(29px, 8.4vw, 38px); line-height: 1.55; }
  .pricing-section .pricing-lead { margin-top: 22px; }
  .pricing-section .pricing-plan { padding: 26px 24px 30px; }
  .pricing-section .pricing-plan-top { margin-bottom: 21px; }
  .pricing-section .pricing-plan-name { font-size: 25px; }
  .pricing-section .pricing-price-value { font-size: clamp(39px, 12vw, 50px); }
  .pricing-section .pricing-price-range { font-size: clamp(29px, 8.1vw, 35px); margin-top: 12px; }
  .pricing-section .pricing-price-unit { font-size: 13px; }
  .pricing-section .pricing-plan-description,
  .pricing-section .pricing-plan-features li { font-size: 16px; letter-spacing: .015em; }
  .pricing-section .pricing-plan-features { margin-top: 24px; padding-top: 24px; }
  .pricing-section .pricing-plan-features li { padding-left: 19px; }
  .pricing-section .pricing-plan-features li::before { width: 8px; }
  .faq-section .section-title { font-size: clamp(29px, 7.75vw, 36px); line-height: 1.6; }
  .faq-section .faq-question { grid-template-columns: 23px minmax(0, 1fr) 20px; gap: 9px; padding-block: 23px; padding-right: 0; font-size: 16px; letter-spacing: .02em; }
  .faq-section .faq-question-mark { font-size: 19px; }
  .faq-section .faq-toggle { width: 20px; }
  .faq-section .faq-toggle::before,
  .faq-section .faq-toggle::after { left: 3px; width: 14px; }
  .faq-section .faq-answer { padding: 0 0 25px 32px; }
  .faq-section .faq-answer p { font-size: 16px; letter-spacing: .02em; }
  .contact-section .section-shell { padding-block: 87px 93px; }
  .contact-section h2 { font-size: clamp(31px, 10.4vw, 48px); line-height: 1.55; }
  .contact-section .contact-threads { width: 104vw; right: -235px; opacity: .19; }
  .contact-section .contact-body { margin: 30px 0 28px; max-width: 330px; }
  .contact-section .contact-break { display: none; }
  .contact-section .contact-cta { width: 100%; gap: 17px; padding: 17px 20px; min-height: 66px; font-size: 14px; letter-spacing: .02em; }
  .site-footer { padding-block: 43px 40px; }
  .site-footer .footer-name { font-size: 16px; }
  .site-footer .footer-role { font-size: 10px; letter-spacing: .025em; }
  .site-footer .footer-copy { font-size: 9px; }
  .site-footer .footer-claim-title { font-size: 14px; }
  .site-footer .footer-stats { gap: 14px; }
  .site-footer .footer-stat + .footer-stat { padding-left: 14px; }
  .site-footer .footer-stat-number { font-size: 30px; }
  .site-footer .footer-stat-unit { font-size: 14px; }
}
@media (max-width: 350px) {
  .pricing-section .pricing-plan { padding-inline: 20px; }
  .pricing-section .pricing-price-value { font-size: 40px; }
  .pricing-section .pricing-price-range { font-size: 29px; }
  .pricing-section .pricing-price-unit { font-size: 12px; }
  .pricing-section .pricing-plan-name { font-size: 24px; }
  .contact-section .contact-cta { padding-inline: 16px; gap: 12px; }
}
@media (prefers-reduced-motion: reduce) {
  .faq-section .faq-toggle::after { transition: none; }
}
