:root {
      --green: #007a53;
      --green-dark: #005f40;
      --green-deep: #004c34;
      --green-soft: #edf5f0;
      --green-pale: #f5faf7;
      --line: #cddbd5;
      --line-light: #e3ebe7;
      --text: #1f2a32;
      --muted: #5c6870;
      --bg: #eef3f0;
      --white: #fff;
      --red: #c62828;
    }

    * { box-sizing: border-box; }

    html {
      scroll-behavior: smooth;
      overflow-x: hidden;
    }

    body {
      margin: 0;
      background: var(--bg);
      color: var(--text);
      font-family: -apple-system, BlinkMacSystemFont, "Hiragino Kaku Gothic ProN", "Yu Gothic", "YuGothic", "Noto Sans JP", sans-serif;
      line-height: 1.7;
      overflow-x: hidden;
      -webkit-text-size-adjust: 100%;
    }

    a { color: inherit; text-decoration: none; }
    img { display: block; max-width: 100%; }
    button { font-family: inherit; cursor: pointer; }

    .app {
      width: 100%;
      max-width: 480px;
      min-height: 100vh;
      margin: 0 auto;
      background: #fff;
      padding-top: 63px;
      padding-bottom: 86px;
      position: relative;
    }

    /* ===== Header ===== */
    .header {
      position: fixed;
      top: 0;
      left: 50%;
      transform: translateX(-50%);
      width: 100%;
      max-width: 480px;
      z-index: 100;
      background: #fff;
      border-bottom: 3px solid var(--green);
    }

    .header__inner {
      height: 60px;
      padding: 0 14px;
      display: flex;
      align-items: center;
      justify-content: space-between;
    }

    .brand {
      display: flex;
      align-items: center;
      gap: 10px;
      min-width: 0;
    }

    .brand__mark {
      width: 34px;
      height: 34px;
      border: 1px solid var(--green);
      display: grid;
      place-items: center;
      background: #fff;
      flex: 0 0 auto;
    }

    .brand__mark img {
      width: 24px;
      height: 24px;
      object-fit: contain;
    }

    .brand__name {
      color: var(--green-deep);
      font-size: 15.5px;
      font-weight: 800;
      letter-spacing: 0.04em;
      white-space: nowrap;
    }

    .hamburger {
      width: 38px;
      height: 38px;
      border: 1px solid var(--line);
      background: #fff;
      display: grid;
      place-items: center;
      padding: 0;
    }

    .hamburger__lines {
      width: 20px;
      display: grid;
      gap: 5px;
    }

    .hamburger__lines span {
      height: 2px;
      background: var(--green-deep);
      display: block;
      transition: transform .25s, opacity .2s;
    }

    .hamburger[aria-expanded="true"] .hamburger__lines span:nth-child(1) {
      transform: translateY(7px) rotate(45deg);
    }
    .hamburger[aria-expanded="true"] .hamburger__lines span:nth-child(2) {
      opacity: 0;
    }
    .hamburger[aria-expanded="true"] .hamburger__lines span:nth-child(3) {
      transform: translateY(-7px) rotate(-45deg);
    }

    /* ===== Drawer Menu ===== */
    .menu {
      position: fixed;
      left: 50%;
      top: 0;
      transform: translateX(-50%);
      z-index: 99;
      width: 100%;
      max-width: 480px;
      background: #fff;
      border-bottom: 3px solid var(--green);
      box-shadow: 0 6px 18px rgba(0,0,0,0.10);
      padding-top: 60px;
      max-height: 0;
      overflow: hidden;
      transition: max-height .3s ease;
      pointer-events: none;
    }

    .menu[data-open="true"] {
      max-height: 100vh;
      pointer-events: auto;
    }

    .menu__list {
      list-style: none;
      margin: 0;
      padding: 0;
    }

    .menu__list a {
      display: flex;
      align-items: center;
      justify-content: space-between;
      padding: 16px 18px;
      border-bottom: 1px solid var(--line-light);
      color: var(--green-deep);
      font-size: 14.5px;
      font-weight: 800;
      letter-spacing: 0.04em;
    }

    .menu__list a::after {
      content: "›";
      color: var(--green);
      font-size: 20px;
      line-height: 1;
      font-weight: 300;
    }

    .menu__overlay {
      position: fixed;
      inset: 0;
      background: rgba(0,0,0,0.32);
      z-index: 90;
      opacity: 0;
      pointer-events: none;
      transition: opacity .25s;
    }

    .menu__overlay[data-open="true"] {
      opacity: 1;
      pointer-events: auto;
    }

    /* ===== Modal ===== */
    .modal {
      position: fixed;
      inset: 0;
      z-index: 200;
      display: none;
      align-items: center;
      justify-content: center;
      padding: 24px 18px;
    }

    .modal[data-open="true"] {
      display: flex;
    }

    .modal__backdrop {
      position: absolute;
      inset: 0;
      background: rgba(15, 30, 25, 0.55);
    }

    .modal__panel {
      position: relative;
      width: 100%;
      max-width: 380px;
      background: #fff;
      border-top: 4px solid var(--green);
      padding: 22px 18px 20px;
    }

    .modal__close {
      position: absolute;
      top: 6px;
      right: 6px;
      width: 36px;
      height: 36px;
      border: 0;
      background: transparent;
      color: var(--muted);
      font-size: 22px;
      line-height: 1;
      cursor: pointer;
    }

    .modal__title {
      margin: 0 0 12px;
      color: var(--green-deep);
      font-size: 17px;
      font-weight: 900;
      line-height: 1.5;
      text-align: center;
      letter-spacing: 0.04em;
    }

    .modal__body {
      margin: 0 0 14px;
      color: var(--text);
      font-size: 13px;
      line-height: 1.85;
      font-weight: 600;
    }

    .modal__body strong {
      color: var(--green-deep);
      font-weight: 900;
    }

    .modal__cta {
      position: relative;
      display: block;
      padding: 13px 36px 13px 16px;
      background: var(--green-deep);
      color: #fff;
      text-align: center;
      font-size: 14.5px;
      font-weight: 900;
      letter-spacing: 0.04em;
      border: 1px solid var(--green-deep);
    }

    .modal__cta-arrow {
      position: absolute;
      right: 14px;
      top: 50%;
      transform: translateY(-50%);
      font-size: 24px;
      font-weight: 300;
      line-height: 1;
    }

    .modal__note {
      margin: 10px 0 0;
      color: var(--muted);
      font-size: 11.5px;
      line-height: 1.6;
      text-align: center;
    }

    /* ===== Common ===== */
    .section {
      padding: 26px 16px;
      border-bottom: 1px solid var(--line-light);
    }

    .section--pale {
      background: var(--green-pale);
    }

    .section-title--plain {
      margin: 0 0 14px;
      padding: 0 0 9px;
      border-bottom: 2px solid var(--green);
      color: var(--green-deep);
      font-size: 18px;
      font-weight: 900;
      letter-spacing: 0.04em;
      text-align: center;
    }

    /* ===== FV ===== */
    .fv {
      padding: 24px 16px 24px;
      background: linear-gradient(180deg, #ffffff 0%, #f3f9f5 100%);
      border-bottom: 1px solid var(--line);
    }

    .fv__title {
      margin: 0;
      text-align: center;
      color: var(--green-deep);
      font-size: 24px;
      line-height: 1.4;
      letter-spacing: 0.08em;
      font-weight: 900;
    }

    .fv__subline {
      width: 56px;
      height: 3px;
      margin: 12px auto 16px;
      background: var(--green);
    }

    .fv__icon {
      width: 88px;
      height: 88px;
      margin: 0 auto 18px;
      display: grid;
      place-items: center;
    }

    .fv__icon img {
      width: 88px;
      height: 88px;
      object-fit: contain;
    }

    .notice-box {
      background: #fff;
      border: 1px solid var(--line);
    }

    .notice-box__head {
      background: var(--green-soft);
      border-bottom: 1px solid var(--line);
      padding: 16px 14px 14px;
      text-align: center;
    }

    .notice-box__lead {
      margin: 0;
      font-size: 19px;
      line-height: 1.6;
      font-weight: 900;
      color: var(--text);
      letter-spacing: 0.03em;
    }

    .notice-box__lead em {
      font-style: normal;
      color: var(--green-deep);
      background: linear-gradient(transparent 62%, rgba(0,122,83,0.18) 62%);
      padding: 0 2px;
    }

    .notice-box__body {
      padding: 16px 14px 16px;
    }

    .notice-box__desc {
      margin: 0 0 16px;
      color: var(--muted);
      font-size: 13px;
      line-height: 1.85;
      text-align: center;
      font-weight: 600;
    }

    .main-btn {
      position: relative;
      display: block;
      background: var(--green-deep);
      color: #fff;
      text-align: center;
      padding: 14px 44px 15px 18px;
      font-weight: 900;
      border: 1px solid var(--green-deep);
      transition: background .15s;
    }

    .main-btn:active { background: var(--green); }

    .main-btn__sub {
      display: block;
      font-size: 12px;
      line-height: 1.3;
      opacity: 0.92;
      margin-bottom: 3px;
      letter-spacing: 0.04em;
    }

    .main-btn__main {
      display: block;
      font-size: 18.5px;
      line-height: 1.35;
      letter-spacing: 0.03em;
    }

    .main-btn__arrow {
      position: absolute;
      right: 16px;
      top: 50%;
      transform: translateY(-50%);
      font-size: 30px;
      font-weight: 300;
      line-height: 1;
    }

    .sub-actions {
      display: grid;
      grid-template-columns: 1fr 1fr;
      gap: 8px;
      margin-top: 10px;
    }

    .sub-actions button {
      min-height: 46px;
      border: 1px solid var(--green);
      background: #fff;
      color: var(--green-deep);
      font-size: 13px;
      font-weight: 800;
      letter-spacing: 0.03em;
    }

    /* ===== 3 STEP ===== */
    .step-strip {
      border: 1px solid var(--line);
      background: #fff;
    }

    .step-strip__title {
      margin: 0;
      padding: 10px 10px;
      text-align: center;
      background: var(--green-soft);
      border-bottom: 1px solid var(--line);
      color: var(--green-deep);
      font-size: 16px;
      font-weight: 900;
      letter-spacing: 0.04em;
    }

    .step-strip__list {
      display: grid;
      grid-template-columns: 1fr 1fr 1fr;
    }

    .step-strip__item {
      position: relative;
      min-width: 0;
      padding: 12px 4px 11px;
      text-align: center;
      border-right: 1px solid var(--line-light);
    }

    .step-strip__item:last-child {
      border-right: 0;
    }

    .step-strip__num {
      display: inline-grid;
      place-items: center;
      width: 22px;
      height: 22px;
      margin-bottom: 6px;
      background: var(--green);
      color: #fff;
      border-radius: 50%;
      font-size: 12px;
      font-weight: 900;
      line-height: 1;
    }

    .step-strip__icon {
      width: 34px;
      height: 34px;
      object-fit: contain;
      margin: 0 auto 6px;
    }

    .step-strip__label {
      display: block;
      color: var(--text);
      font-size: 13px;
      line-height: 1.35;
      font-weight: 900;
      letter-spacing: 0.02em;
      white-space: nowrap;
    }

    .step-strip__desc {
      display: block;
      margin-top: 2px;
      color: var(--muted);
      font-size: 10.5px;
      line-height: 1.35;
      font-weight: 600;
    }

    .step-strip__item:not(:last-child)::after {
      content: "›";
      position: absolute;
      right: -7px;
      top: 50%;
      transform: translateY(-50%);
      color: var(--green);
      background: #fff;
      font-size: 18px;
      line-height: 1;
      z-index: 1;
      padding: 0 1px;
    }

    /* ===== Phone Box ===== */
    .phone-box {
      border: 1px solid var(--line);
      background: #fff;
    }

    .phone-box__head {
      background: var(--green-soft);
      border-bottom: 1px solid var(--line);
      padding: 10px 12px;
      color: var(--green-deep);
      font-size: 16px;
      font-weight: 900;
      letter-spacing: 0.04em;
      text-align: center;
    }

    .phone-box__body {
      padding: 16px 14px 18px;
      text-align: center;
    }

    .phone-box__free {
      display: inline-block;
      margin: 0 0 10px;
      padding: 2px 10px;
      border: 1px solid var(--green);
      color: var(--green-deep);
      font-size: 11.5px;
      font-weight: 900;
      letter-spacing: 0.05em;
    }

    .phone-box__number {
      display: flex;
      align-items: center;
      justify-content: center;
      gap: 9px;
      width: 100%;
      max-width: 360px;
      min-height: 58px;
      margin: 0 auto;
      border: 2px solid var(--green-deep);
      background: #fff;
      color: var(--green-deep);
      font-size: 28px;
      line-height: 1.1;
      font-family: "Helvetica Neue", Arial, sans-serif;
      font-weight: 900;
      letter-spacing: 0.06em;
      box-shadow: 0 3px 0 rgba(0, 95, 64, 0.18);
      transition: transform .08s, box-shadow .08s;
    }

    .phone-box__number img {
      width: 26px;
      height: 26px;
      object-fit: contain;
      flex: 0 0 auto;
    }

    .phone-box__number:active {
      transform: translateY(2px);
      box-shadow: 0 1px 0 rgba(0, 95, 64, 0.18);
    }

    .phone-box__hours {
      margin: 12px 0 0;
      color: var(--muted);
      font-size: 12.5px;
      line-height: 1.6;
      font-weight: 600;
    }

    /* ===== Lifeline ===== */
    .lifeline-section {
      border: 1px solid var(--line);
      background: #fff;
    }

    .lifeline-section__head {
      padding: 12px 14px;
      background: var(--green-soft);
      border-bottom: 1px solid var(--line);
    }

    .lifeline-section__title {
      margin: 0;
      color: var(--green-deep);
      font-size: 16.5px;
      line-height: 1.55;
      font-weight: 900;
      letter-spacing: 0.03em;
      text-align: center;
    }

    .lifeline-section__body {
      padding: 14px 14px 14px;
    }

    .lifeline-section__icon {
      width: 158px;
      max-width: 56%;
      margin: 0 auto 10px;
      object-fit: contain;
    }

    .lifeline-section__text {
      margin: 0;
      color: var(--text);
      font-size: 13px;
      line-height: 1.85;
      font-weight: 600;
      text-align: center;
    }

    .lifeline-section__cta {
      position: relative;
      display: block;
      margin-top: 14px;
      padding: 13px 38px 13px 14px;
      background: #fff;
      border: 1.5px solid var(--green-deep);
      color: var(--green-deep);
      text-align: center;
      font-size: 14px;
      font-weight: 900;
      letter-spacing: 0.04em;
      transition: background .15s, color .15s;
    }

    .lifeline-section__cta:active {
      background: var(--green-deep);
      color: #fff;
    }

    .lifeline-section__cta-arrow {
      position: absolute;
      right: 14px;
      top: 50%;
      transform: translateY(-50%);
      font-size: 22px;
      font-weight: 300;
      line-height: 1;
    }

    /* ===== Form ===== */
    .form-box {
      border: 1px solid var(--line);
      background: #fff;
    }

    .form-box__head {
      padding: 13px 14px;
      background: var(--green-soft);
      border-bottom: 1px solid var(--line);
      display: flex;
      align-items: center;
      justify-content: center;
      gap: 9px;
    }

    .form-box__head img {
      width: 26px;
      height: 26px;
      object-fit: contain;
    }

    .form-box__title {
      margin: 0;
      color: var(--green-deep);
      font-size: 17.5px;
      font-weight: 900;
      line-height: 1.35;
      text-align: center;
      letter-spacing: 0.03em;
    }

    .form-box__body {
      padding: 15px 14px 16px;
    }

    .form-intro {
      margin: 0 0 14px;
      text-align: center;
      color: var(--muted);
      font-size: 12.5px;
      line-height: 1.75;
      font-weight: 600;
    }

    .field {
      padding: 12px 0;
      border-top: 1px solid var(--line-light);
    }

    .field:first-of-type { border-top: 0; }

    .field__head {
      display: flex;
      align-items: center;
      gap: 8px;
      margin-bottom: 5px;
    }

    .badge {
      display: inline-flex;
      align-items: center;
      justify-content: center;
      height: 20px;
      padding: 0 7px;
      background: var(--red);
      color: #fff;
      font-size: 11px;
      font-weight: 900;
      letter-spacing: 0.05em;
    }

    .badge--optional {
      background: #e5e7eb;
      color: #4b5563;
    }

    label {
      color: var(--text);
      font-size: 14.5px;
      font-weight: 900;
    }

    .field__help {
      display: block;
      margin-bottom: 8px;
      color: var(--muted);
      font-size: 12px;
      line-height: 1.6;
    }

    input {
      width: 100%;
      height: 46px;
      border: 1px solid #c9d4cf;
      background: #fff;
      color: var(--text);
      padding: 0 11px;
      font-size: 16px;
      border-radius: 0;
      font-family: inherit;
      -webkit-appearance: none;
      appearance: none;
    }

    /* iOS Safari の date 入力崩れ対策 */
    input[type="date"] {
      min-height: 46px;
      max-height: 46px;
      line-height: 1.2;
      display: block;
      -webkit-appearance: none;
      appearance: none;
      background-clip: padding-box;
      text-align: left;
    }

    input[type="date"]::-webkit-date-and-time-value {
      text-align: left;
      line-height: 46px;
      min-height: 46px;
    }

    input[type="date"]::-webkit-calendar-picker-indicator {
      opacity: 0.65;
    }

    input:focus {
      outline: 2px solid rgba(0, 122, 83, 0.18);
      border-color: var(--green);
    }

    .submit {
      width: 100%;
      height: 56px;
      margin-top: 16px;
      border: 1px solid var(--green-deep);
      background: var(--green-deep);
      color: #fff;
      font-size: 16px;
      font-weight: 900;
      letter-spacing: 0.03em;
      transition: background .15s;
    }

    .submit:active { background: var(--green); }

    .privacy {
      margin: 11px 0 0;
      text-align: center;
      color: var(--muted);
      font-size: 11.5px;
      line-height: 1.6;
    }

    .privacy a {
      color: var(--green-deep);
      text-decoration: underline;
      font-weight: 800;
    }

    /* ===== FAQ ===== */
    .faq-list {
      border: 1px solid var(--line);
      background: #fff;
    }

    details {
      border-bottom: 1px solid var(--line-light);
    }

    details:last-child { border-bottom: 0; }

    summary {
      list-style: none;
      cursor: pointer;
      display: flex;
      gap: 8px;
      align-items: flex-start;
      padding: 14px 12px;
      font-size: 13.5px;
      line-height: 1.55;
      font-weight: 800;
    }

    summary::-webkit-details-marker { display: none; }

    .q {
      color: var(--green-deep);
      font-weight: 900;
      flex: 0 0 auto;
    }

    .q-text { flex: 1; }

    .plus {
      margin-left: auto;
      color: var(--green-deep);
      font-size: 19px;
      line-height: 1;
      flex: 0 0 auto;
      transition: transform .2s;
    }

    details[open] .plus {
      transform: rotate(45deg);
    }

    .answer {
      padding: 0 12px 14px 32px;
      color: var(--muted);
      font-size: 12.5px;
      line-height: 1.85;
      font-weight: 500;
    }

    /* ===== Security ===== */
    .security {
      border: 1px solid var(--line);
      background: #fff;
    }

    .security__head {
      padding: 14px 14px;
      background: var(--green-soft);
      border-bottom: 1px solid var(--line);
    }

    .security__title {
      margin: 0 0 6px;
      color: var(--green-deep);
      font-size: 16px;
      font-weight: 900;
      letter-spacing: 0.04em;
    }

    .security__text {
      margin: 0;
      color: var(--text);
      font-size: 12.5px;
      line-height: 1.85;
      font-weight: 600;
    }

    .trust-link {
      display: flex;
      align-items: center;
      justify-content: space-between;
      padding: 13px 14px;
      border-bottom: 1px solid var(--line-light);
      color: var(--green-deep);
      font-size: 14px;
      font-weight: 900;
    }

    .trust-link:last-child { border-bottom: 0; }

    .trust-link__arrow {
      color: var(--green);
      font-size: 18px;
      line-height: 1;
    }

    /* ===== Footnote ===== */
    .footnote {
      margin: 18px 16px 0;
      padding-bottom: 8px;
      color: var(--muted);
      font-size: 11px;
      line-height: 1.7;
      text-align: center;
    }

    /* ===== Bottom CTA ===== */
    .bottom-cta {
      position: fixed;
      left: 50%;
      bottom: 0;
      transform: translateX(-50%);
      z-index: 80;
      width: 100%;
      max-width: 480px;
      background: #fff;
      border-top: 1px solid var(--line);
      padding: 9px 10px calc(9px + env(safe-area-inset-bottom));
      display: grid;
      grid-template-columns: 1fr 1.16fr;
      gap: 8px;
      box-shadow: 0 -4px 14px rgba(0,0,0,0.08);
    }

    .bottom-cta a {
      min-height: 56px;
      display: flex;
      align-items: center;
      justify-content: center;
      gap: 7px;
      text-align: center;
      font-size: 14.5px;
      font-weight: 900;
      line-height: 1.25;
      letter-spacing: 0.03em;
      border: 1px solid var(--green-deep);
    }

    .bottom-cta img {
      width: 24px;
      height: 24px;
      object-fit: contain;
      flex: 0 0 auto;
    }

    .bottom-cta__web {
      background: #fff;
      color: var(--green-deep);
    }

    .bottom-cta__tel {
      background: var(--green-deep);
      color: #fff;
    }

    .bottom-cta small {
      display: block;
      margin-top: 2px;
      font-size: 10.5px;
      font-weight: 700;
      letter-spacing: 0.02em;
      opacity: 0.88;
    }

    /* ===== Responsive ===== */
    @media (max-width: 380px) {
      .step-strip__item { padding-left: 3px; padding-right: 3px; }
      .step-strip__icon { width: 30px; height: 30px; }
      .step-strip__label { font-size: 12.3px; letter-spacing: 0; }
      .step-strip__desc { font-size: 9.5px; }
      .phone-box__number { font-size: 26px; gap: 7px; }
      .phone-box__number img { width: 24px; height: 24px; }
      .brand__name { font-size: 14.5px; }
    }

    @media (max-width: 360px) {
      .brand__name { font-size: 13.5px; letter-spacing: 0.02em; }
      .fv__title { font-size: 22px; }
      .notice-box__lead { font-size: 17.5px; }
      .main-btn__main { font-size: 17px; }
      .step-strip__label { font-size: 11.5px; }
      .step-strip__desc { display: none; }
      .phone-box__number { font-size: 23px; min-height: 54px; }
      .bottom-cta a { font-size: 13px; gap: 5px; }
      .bottom-cta img { width: 21px; height: 21px; }
    }
