:root {
      --bg: #f8f3eb;
      --paper: #fffdf9;
      --ink: #2d241e;
      --muted: #74675c;
      --line: #e8dbcd;
      --brand: #b45b64;
      --brand-dark: #964851;
      --accent: #dbbf67;
      --green: #7caf7a;
      --shadow: 0 12px 30px rgba(49, 31, 21, 0.08);
      --radius: 22px;
    }
    * { box-sizing: border-box; }
    html, body {
      margin: 0;
      background: linear-gradient(180deg, #f8f3eb 0%, #f4eee4 100%);
      color: var(--ink);
      font-family: -apple-system, BlinkMacSystemFont, "Hiragino Sans", "Noto Sans JP", "Yu Gothic", sans-serif;
    }
    .title {
      text-align: center;
    }
    .title span {
      display: block;
    }
    body {
      display: flex;
      justify-content: center;
    }
    .page {
      width: 100%;
      max-width: 430px;
      min-height: 100dvh;
      padding: 16px 16px 40px;
    }
    .hero {
      background: radial-gradient(circle at top, #fffaf4 0%, #fff9f0 35%, #fcf2e8 100%);
      border: 1px solid var(--line);
      border-radius: 28px;
      padding: 18px;
      box-shadow: var(--shadow);
      overflow: hidden;
      position: relative;
    }
    .hero::after {
      content: "";
      position: absolute;
      inset: auto -40px -70px auto;
      width: 180px;
      height: 180px;
      background: rgba(180,91,100,0.07);
      border-radius: 999px;
      filter: blur(2px);
    }
    .brand-chip {
      display: inline-flex;
      align-items: center;
      gap: 8px;
      background: #fff;
      border: 1px solid var(--line);
      color: var(--muted);
      border-radius: 999px;
      padding: 7px 12px;
      font-size: 12px;
      font-weight: 700;
      letter-spacing: 0.02em;
    }
    .brand-chip .dot {
      width: 8px; height: 8px; border-radius: 50%; background: var(--green);
    }
    .hero-image-wrap {
      margin-top: 16px;
      display: flex;
      justify-content: center;
    }
    .hero-image {
      width: 76%;
      max-width: 290px;
      aspect-ratio: 1 / 1;
      object-fit: cover;
      border-radius: 999px;
      border: 6px solid #fff;
      background: #fff;
      box-shadow: 0 10px 25px rgba(0,0,0,0.08);
    }
    h1 {
      font-size: 31px;
      line-height: 1.16;
      margin: 18px 0 8px;
      letter-spacing: -0.03em;
    }
    .lead {
      color: var(--muted);
      font-size: 14px;
      line-height: 1.8;
      margin: 0;
    }
    .badges {
      display: flex;
      gap: 8px;
      flex-wrap: wrap;
      margin-top: 14px;
    }
    .badge {
      padding: 8px 10px;
      border-radius: 999px;
      background: #fff;
      border: 1px solid var(--line);
      font-size: 12px;
      font-weight: 700;
      color: #5f544b;
    }
    .section {
      margin-top: 16px;
      background: var(--paper);
      border: 1px solid var(--line);
      border-radius: var(--radius);
      padding: 18px;
      box-shadow: var(--shadow);
    }
    .section h2 {
      font-size: 18px;
      margin: 0 0 8px;
      letter-spacing: -0.02em;
    }
    .section p {
      margin: 0;
      color: var(--muted);
      font-size: 14px;
      line-height: 1.8;
    }
    .plan-list {
      display: grid;
      gap: 12px;
      margin-top: 14px;
    }
    .plan {
      border: 1px solid var(--line);
      border-radius: 18px;
      padding: 14px;
      background: #fff;
      transition: 0.2s ease;
      cursor: pointer;
      text-align: left;
      width: 100%;
    }
    .plan.active {
      border-color: var(--brand);
      box-shadow: 0 0 0 3px rgba(180,91,100,0.12);
    }
    .plan-top {
      display: flex;
      justify-content: space-between;
      align-items: start;
      gap: 12px;
    }
    .plan-name {
      font-size: 16px;
      font-weight: 800;
      margin-bottom: 4px;
    }
    .plan-note {
      font-size: 12px;
      color: var(--muted);
    }
    .price {
      text-align: right;
      white-space: nowrap;
    }
    .price strong {
      display: block;
      font-size: 24px;
      letter-spacing: -0.04em;
    }
    .price span {
      color: var(--muted);
      font-size: 12px;
    }
    .plan-bottom {
      display: flex;
      justify-content: space-between;
      align-items: center;
      margin-top: 12px;
      gap: 8px;
    }
    .pill {
      display: inline-flex;
      padding: 7px 10px;
      border-radius: 999px;
      background: #f9f3ea;
      color: #6f5a40;
      font-size: 12px;
      font-weight: 700;
    }
    .radio {
      width: 20px; height: 20px;
      border-radius: 999px;
      border: 2px solid #c9b7a8;
      position: relative;
      flex: none;
    }
    .plan.active .radio {
      border-color: var(--brand);
    }
    .plan.active .radio::after {
      content: "";
      position: absolute;
      inset: 3px;
      border-radius: 50%;
      background: var(--brand);
    }
    .summary {
      margin-top: 14px;
      border-radius: 18px;
      background: linear-gradient(180deg, #fff5f6 0%, #fff 100%);
      border: 1px solid #f0d7da;
      padding: 14px;
    }
    .summary-row {
      display: flex;
      justify-content: space-between;
      gap: 12px;
      margin-bottom: 8px;
      font-size: 14px;
    }
    .summary-row:last-child {
      margin-bottom: 0;
      padding-top: 10px;
      border-top: 1px dashed #ead0d4;
      font-weight: 800;
      color: var(--brand-dark);
    }
    .cta {
      position: sticky;
      bottom: 12px;
      margin-top: 18px;
      background: rgba(248,243,235,0.88);
      backdrop-filter: blur(10px);
      border-radius: 24px;
      padding: 10px;
      border: 1px solid rgba(232,219,205,0.9);
    }
    .cta-button {
      appearance: none;
      display: block;
      width: 100%;
      border: none;
      text-decoration: none;
      background: linear-gradient(180deg, var(--brand) 0%, var(--brand-dark) 100%);
      color: #fff;
      text-align: center;
      padding: 16px 18px;
      border-radius: 16px;
      font-size: 16px;
      font-weight: 800;
      box-shadow: 0 10px 20px rgba(150,72,81,0.24);
      transition: 0.2s ease;
    }
    .cta-button.disabled {
      background: #cdbfbc;
      color: #fff;
      box-shadow: none;
      pointer-events: none;
      opacity: 0.65;
      cursor: not-allowed;
    }
    .cta-sub {
      margin-top: 8px;
      text-align: center;
      color: var(--muted);
      font-size: 12px;
      line-height: 1.6;
    }
    .cta-sub {
      margin-top: 8px;
      text-align: center;
      color: var(--muted);
      font-size: 12px;
      line-height: 1.6;
    }
    .list {
      display: grid;
      gap: 10px;
      margin-top: 12px;
    }
    .list-item {
      display: flex;
      gap: 10px;
      align-items: flex-start;
      color: var(--muted);
      font-size: 14px;
      line-height: 1.7;
    }
    .check {
      width: 22px; height: 22px; border-radius: 999px;
      background: #edf6ed; color: #4f8b4f; display: inline-flex;
      align-items: center; justify-content: center; font-size: 13px; flex: none;
      margin-top: 1px;
    }
    .faq {
      display: grid;
      gap: 10px;
      margin-top: 12px;
    }
    details {
      border: 1px solid var(--line);
      border-radius: 16px;
      background: #fff;
      padding: 14px;
    }
    summary {
      list-style: none;
      cursor: pointer;
      font-weight: 800;
      font-size: 14px;
    }
    summary::-webkit-details-marker { display: none; }
    details p {
      margin-top: 10px;
    }
    .footer {
      text-align: center;
      color: var(--muted);
      font-size: 12px;
      margin-top: 20px;
      line-height: 1.7;
      padding-bottom: 10px;
    }
    @media (min-width: 431px) {
      body {
        background:
          linear-gradient(180deg, #f8f3eb 0%, #f4eee4 100%);
      }
    }
