@charset "UTF-8";

/* ========================================
  Foundation
======================================== */
:root {
  --c-form-font-family: var(--font-family-primary, "Zen Kaku Gothic New", "Noto Sans JP", "Hiragino Kaku Gothic ProN", "Yu Gothic", Meiryo, sans-serif);
  --c-form-color-text: var(--color-text, #212121);
  --c-form-color-white: var(--color-white, #ffffff);
  --c-form-color-primary: var(--color-primary, #313c95);
  --c-form-color-secondary: var(--color-secondary, #fed804);
  --c-form-color-border: var(--color-gray-4, #d9d9d9);
  --c-form-color-gray-1: var(--color-gray-1, #f8fafb);
  --c-form-color-gray-2: var(--color-gray-2, #edf1f4);
  --c-form-color-gray-5: var(--color-gray-5, #8b8b8b);
  --c-form-color-gray-6: var(--color-gray-6, #636363);
  --c-form-color-green-1: var(--color-green-1, #f0f8f8);
  --c-form-color-green-5: var(--color-green-5, #1ab2b1);
  --c-form-color-green-6: var(--color-green-6, #028391);
  --c-form-color-error: var(--color-red-2, #df1111);
  --c-form-color-error-bg: var(--color-light-red, #fff2f3);
  --c-form-radius: 4px;
  --c-form-width: 872px;
  --c-form-item-width: 1280px;
  --c-form-item-head-width: 304px;
  --c-form-control-width: 424px;
  --c-form-select-width: 316px;
  --c-form-button-width: 528px;
  --c-form-button-back-width: 310px;
  --c-form-sp-width: 335px;
}

button,
input,
select,
textarea {
  font: inherit;
  letter-spacing: 0;
}

*,
*::before,
*::after {
  box-sizing: border-box;
}

[hidden] {
  display: none !important;
}

/* ========================================
  Layout
======================================== */
.l-component-catalog {
  min-height: 100vh;
}

.l-component-catalog__inner {
  width: min(1280px, calc(100% - 64px));
  margin: 0 auto;
  padding: 48px 0 88px;
}

/* ========================================
  Object - Component
======================================== */
.c-form-tag {
  display: inline-flex;
  min-width: 60px;
  height: 31px;
  align-items: center;
  justify-content: center;
  padding: 8px 15px;
  border-radius: var(--c-form-radius);
  color: var(--c-form-color-text);
  font-size: 15px;
  font-weight: 700;
  line-height: 1;
  white-space: nowrap;
}

.c-form-tag--optional {
  background: var(--c-form-color-border);
}

.c-form-tag--required {
  background: var(--c-form-color-error);
  color: var(--c-form-color-white);
}

.c-form-flow {
  display: flex;
  gap: 100px;
  align-items: flex-start;
  width: max-content;
  max-width: 100%;
  margin: 0;
  padding: 0;
  list-style: none;
}

.c-form-flow__item {
  position: relative;
  display: flex;
  width: 44px;
  min-height: 0;
  flex: 0 0 44px;
  flex-direction: column;
  align-items: center;
  justify-content: flex-start;
  gap: 8px;
  padding: 0;
  color: var(--c-form-color-gray-6);
  text-align: center;
  counter-increment: none;
}

/* assets/css/component/form.css の旧フロー描画をリセット */
.c-form-flow__item:not(:last-child)::before {
  content: none;
}

.c-form-flow__item::after {
  display: none;
  content: none;
  transform: none;
}

.c-form-flow__item:not(:last-child)::after {
  position: absolute;
  top: 22px;
  left: 54px;
  display: block;
  width: 80px;
  height: 1px;
  border-radius: 0;
  background: var(--c-form-color-border);
  color: transparent;
  font-size: 0;
  line-height: 0;
  transform: none;
  content: "";
}

.c-form-flow__item.is-current:not(:last-child)::after,
.c-form-flow__item.is-complete:not(:last-child)::after {
  background: var(--c-form-color-primary);
}

.c-form-flow__num {
  display: grid;
  width: 44px;
  height: 44px;
  place-items: center;
  border-radius: 50%;
  background: var(--c-form-color-gray-5);
  color: var(--c-form-color-white);
  font-size: 20px;
  font-weight: 900;
  line-height: 1;
}

.c-form-flow__item.is-current .c-form-flow__num,
.c-form-flow__item.is-complete .c-form-flow__num {
  background: var(--c-form-color-primary);
}

.c-form-flow__label {
  color: var(--c-form-color-gray-6);
  font-size: 16px;
  font-weight: 700;
  line-height: 1.8;
  white-space: nowrap;
}

.c-form-flow__label::after {
  content: none;
}

.c-form-flow__item.is-current .c-form-flow__label,
.c-form-flow__item.is-complete .c-form-flow__label {
  color: var(--c-form-color-primary);
}

.c-form-field {
  display: flex;
  width: min(var(--c-form-width), 100%);
  min-width: 0;
  flex-direction: column;
  align-items: flex-start;
  gap: 8px;
  margin: 0;
  padding: 0;
  border: 0;
}

.c-form-item {
  display: grid;
  grid-template-columns: var(--c-form-item-head-width) minmax(0, var(--c-form-width));
  gap: 40px;
  align-items: start;
  padding: 0 32px 32px;
  border-top: 0;
  border-bottom: 1px solid var(--c-form-color-border);
}

.c-form-item + .c-form-item {
  padding-top: 32px;
}

.c-form-item__head {
  display: flex;
  flex-wrap: nowrap;
  gap: 20px;
  align-items: flex-start;
  min-height: 50px;
  min-width: 0;
}

.c-form-item__title {
  width: 224px;
  margin: 0;
  padding: 9px 0;
  color: var(--c-form-color-text);
  font-size: 18px;
  font-weight: 700;
  line-height: 1.8;
}

.c-form-item__head .c-form-tag {
  flex: 0 0 60px;
  margin-top: 9px;
}

.c-form-item__body {
  display: grid;
  gap: 8px;
  min-width: 0;
}

.c-form-subfield,
.c-form-inline-group {
  display: flex;
  flex-wrap: wrap;
  gap: 8px 12px;
  align-items: center;
  min-width: 0;
}

.c-form-subfield__label {
  color: var(--c-form-color-text);
  font-size: 16px;
  font-weight: 400;
  line-height: 1.8;
  white-space: nowrap;
}

.c-form-separator {
  color: var(--c-form-color-text);
  font-size: 16px;
  line-height: 1;
}

.c-form-field__label,
.c-form-field__legend {
  display: block;
  width: 100%;
  margin: 0;
  padding: 0;
  color: var(--c-form-color-text);
  font-size: 16px;
  font-weight: 400;
  line-height: 1.8;
  text-align: left;
}

.c-form-control-wrap {
  position: relative;
  width: var(--c-form-control-width);
  max-width: 100%;
}

.c-form-control-wrap--select {
  width: var(--c-form-select-width);
}

.c-form-control-wrap--year {
  width: 150px;
}

.c-form-control-wrap--short {
  width: 120px;
}

.c-form-control-wrap--month,
.c-form-control-wrap--day {
  width: 140px;
}
.c-form-control-wrap--name {
  width: 240px;
}

.c-form-control-wrap--zip-short {
  width: 88px;
}

.c-form-control-wrap--zip-long {
  width: 104px;
}

.c-form-control-wrap--zip-short .c-form-control,
.c-form-control-wrap--zip-long .c-form-control {
  padding-right: 8px;
  padding-left: 8px;
}

.c-form-control-wrap--zip-short.is-valid .c-form-control.p-postal-code,
.c-form-control-wrap--zip-short.is-error .c-form-control.p-postal-code,
.c-form-control-wrap--zip-long.is-valid .c-form-control.p-postal-code,
.c-form-control-wrap--zip-long.is-error .c-form-control.p-postal-code {
  padding-right: 8px;
}

.c-form-control-wrap--zip-short > .c-form-status-icon,
.c-form-control-wrap--zip-long > .c-form-status-icon {
  display: none;
}

.c-form-control-wrap--phone {
  width: 100%;
  max-width: 108px;
}

.c-form-control-wrap--branch {
  width: 100%;
  max-width: 316px;
}

.c-form-control-wrap--account {
  width: 100%;
  max-width: 240px;
}

.c-form-control-wrap--email {
  width: 100%;
  max-width: 424px;
}

.c-form-control-wrap--full {
  width: 100%;
}

.c-form-control-wrap--select::after {
  position: absolute;
  top: 50%;
  right: 20px;
  width: 0;
  height: 0;
  border-top: 5px solid var(--c-form-color-primary);
  border-right: 5px solid transparent;
  border-left: 5px solid transparent;
  pointer-events: none;
  transform: translateY(-50%);
  content: "";
}

.c-form-control {
  display: block;
  width: 100%;
  height: 50px;
  padding: 11px 16px;
  border: 1px solid var(--c-form-color-border);
  border-radius: var(--c-form-radius);
  appearance: none;
  background: var(--c-form-color-white);
  color: var(--c-form-color-text);
  font-size: 16px;
  font-weight: 400;
  line-height: 1.8;
}

.c-form-control--select {
  padding-right: 44px;
  cursor: pointer;
}

.c-form-control--textarea {
  height: 128px;
  min-height: 128px;
  resize: vertical;
}

.c-form-control::placeholder {
  color: #a7a7a7;
  opacity: 1;
}

.c-form-control:focus,
.c-form-control-wrap.is-focus .c-form-control {
  border-color: var(--c-form-color-green-5);
  outline: 0;
  box-shadow: 0 0 5px rgb(26 178 177 / 20%);
}

.c-form-control-wrap.is-valid .c-form-control {
  border-color: var(--c-form-color-green-5);
  background: var(--c-form-color-green-1);
}

/* Chrome / Edge の自動入力色より正常入力時の背景色を優先する。 */
.c-form-control-wrap.is-valid .c-form-control:-webkit-autofill,
.c-form-control-wrap.is-valid .c-form-control:-webkit-autofill:hover,
.c-form-control-wrap.is-valid .c-form-control:-webkit-autofill:focus {
  -webkit-text-fill-color: var(--c-form-color-text);
  -webkit-box-shadow: 0 0 0 1000px var(--c-form-color-green-1) inset;
  box-shadow: 0 0 0 1000px var(--c-form-color-green-1) inset;
  caret-color: var(--c-form-color-text);
}

.c-form-control-wrap.is-error .c-form-control,
.c-form-field.is-error .c-form-control[aria-invalid="true"] {
  border-color: #df1111;
  border-color: var(--c-form-color-error);
  background-color: #fff2f3;
  background-color: var(--c-form-color-error-bg);
}

/* Chrome / Edge / Safari などの自動入力色よりエラー時の背景色を優先する。 */
.c-form-control-wrap.is-error .c-form-control:-webkit-autofill,
.c-form-control-wrap.is-error .c-form-control:-webkit-autofill:hover,
.c-form-control-wrap.is-error .c-form-control:-webkit-autofill:focus,
.c-form-field.is-error .c-form-control[aria-invalid="true"]:-webkit-autofill,
.c-form-field.is-error .c-form-control[aria-invalid="true"]:-webkit-autofill:hover,
.c-form-field.is-error .c-form-control[aria-invalid="true"]:-webkit-autofill:focus {
  -webkit-text-fill-color: #212121;
  -webkit-text-fill-color: var(--c-form-color-text);
  -webkit-box-shadow: 0 0 0 1000px #fff2f3 inset !important;
  -webkit-box-shadow: 0 0 0 1000px var(--c-form-color-error-bg) inset !important;
  box-shadow: 0 0 0 1000px #fff2f3 inset !important;
  box-shadow: 0 0 0 1000px var(--c-form-color-error-bg) inset !important;
  caret-color: #212121;
  caret-color: var(--c-form-color-text);
}

/* 標準の :autofill を使用するブラウザにも同じエラー背景を適用する。 */
.c-form-control-wrap.is-error .c-form-control:autofill,
.c-form-field.is-error .c-form-control[aria-invalid="true"]:autofill {
  box-shadow: 0 0 0 1000px #fff2f3 inset !important;
  box-shadow: 0 0 0 1000px var(--c-form-color-error-bg) inset !important;
}

.c-form-control-wrap.is-valid .c-form-control {
  padding-right: 48px;
}

.c-form-control-wrap--select.is-valid .c-form-control {
  padding-right: 30px;
}

/* エラー時は×アイコンを表示しない（下の .c-form-control-wrap > .c-form-status-icon--ng で非表示）ため、
   アイコン用のpaddingも確保しない。padding分で入力済みの内容が隠れるのを防ぐ。 */
.c-form-control-wrap.is-error .c-form-control {
  padding-right: 16px;
}

.c-form-control-wrap--select.is-error .c-form-control {
  padding-right: 44px;
}

/* 電話番号欄（幅108px）は48pxのアイコン用paddingを確保すると入力済みの数字が途切れるため、
   専用に狭いpaddingとアイコン位置を設定する。 */
.c-form-control-wrap--phone.is-valid .c-form-control {
  padding-right: 30px;
}

.c-form-control-wrap--phone > .c-form-status-icon {
  right: 6px;
  width: 16px;
  height: 16px;
  flex: 0 0 16px;
}

.c-form-field__example {
  width: 100%;
  margin: 4px 0 10px;
  color: var(--c-form-color-gray-6);
  font-size: 16px;
  font-weight: 400;
  line-height: 1.8;
}

.c-form-note {
  display: flex;
  gap: 4px;
  width: 100%;
  margin: 0;
  color: var(--c-form-color-gray-6);
  font-size: 14px;
  line-height: 1.4;
}

.c-form-error {
  display: inline-flex;
  gap: 2px;
  align-items: center;
  margin: 0;
  color: var(--c-form-color-error);
  font-size: 14px;
  font-weight: 700;
  line-height: 1.4;
  text-align: left;
}

/* assets/css/component/form.css が追加する旧エラーアイコンとの二重表示を防止 */
.c-form-error::before {
  display: none;
  content: none;
}

.c-form-status-icon {
  position: relative;
  display: inline-block;
  width: 20px;
  height: 20px;
  flex: 0 0 20px;
}

.c-form-control-wrap > .c-form-status-icon {
  position: absolute;
  top: 50%;
  right: 16px;
  transform: translateY(-50%);
}

/* 入力欄に重なる×アイコンはエラー時に表示しない（エラーメッセージ側の×はそのまま表示する） */
.c-form-control-wrap > .c-form-status-icon--ng {
  display: none;
}

.c-form-control-wrap--select > .c-form-status-icon {
  right: 40px;
}

.c-form-status-icon--ng::before,
.c-form-status-icon--ng::after {
  position: absolute;
  top: 50%;
  left: 50%;
  width: 15px;
  height: 3px;
  border-radius: 2px;
  background: var(--c-form-color-error);
  content: "";
}

.c-form-status-icon--ng::before {
  transform: translate(-50%, -50%) rotate(45deg);
}

.c-form-status-icon--ng::after {
  transform: translate(-50%, -50%) rotate(-45deg);
}

/* チェックマークのサイズ・形状はFigmaデザインに合わせる: PC 幅14px/高さ10px、SP 幅11px/高さ8px */
.c-form-status-icon--ok::before {
  position: absolute;
  top: 50%;
  left: 50%;
  width: 14px;
  height: 10px;
  background-color: var(--c-form-color-green-5);
  mask-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 14 10' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M1.2 5.2 5.2 9 12.8 1.2' fill='none' stroke='black' stroke-width='2.4' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");
  mask-repeat: no-repeat;
  mask-position: center;
  mask-size: contain;
  -webkit-mask-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 14 10' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M1.2 5.2 5.2 9 12.8 1.2' fill='none' stroke='black' stroke-width='2.4' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");
  -webkit-mask-repeat: no-repeat;
  -webkit-mask-position: center;
  -webkit-mask-size: contain;
  transform: translate(-50%, -50%);
  content: "";
}

.c-form-choice-group {
  display: flex;
  width: 100%;
  flex-wrap: wrap;
  align-items: center;
  gap: 16px;
  min-height: 50px;
  padding: 0 10px;
  border-radius: var(--c-form-radius);
}

.c-form-choice-group.is-error {
  background-color: #fff2f3;
  background-color: var(--c-form-color-error-bg);
}

.c-form-choice-group--stacked {
  flex-direction: column;
  align-items: stretch;
  gap: 4px;
  padding-top: 8px;
  padding-bottom: 8px;
}

.c-form-choice-group--stacked .c-form-choice {
  width: 100%;
}

.c-form-choice-section {
  width: 100%;
  margin: 12px 0 4px;
  color: var(--c-form-color-text);
  font-size: 15px;
  font-weight: 700;
  line-height: 1.6;
}

.c-form-choice-section:first-child {
  margin-top: 0;
}

.c-form-choice.c-form-choice--detailed {
  height: auto;
  min-height: 50px;
  align-items: flex-start;
  padding: 8px 0;
}

.c-form-choice--detailed > .c-form-choice__input {
  margin-top: 1px;
}

.c-form-choice--detailed .c-form-choice__text {
  display: flex;
  min-width: 0;
  flex-direction: column;
  gap: 4px;
}

.c-form-choice__label {
  font-weight: 500;
}

.c-form-choice__description {
  color: var(--color-dark-gray, #56565c);
  font-size: 14px;
  line-height: 1.6;
}

.c-form-choice {
  display: inline-flex;
  min-width: 0;
  height: 50px;
  align-items: center;
  gap: 6px;
  padding: 4px 0;
  color: var(--c-form-color-text);
  cursor: pointer;
  font-size: 16px;
  font-weight: 400;
  line-height: 1.4;
}

.c-form-choice__input {
  position: relative;
  width: 26px;
  height: 26px;
  flex: 0 0 26px;
  margin: 0;
  border: 1px solid var(--c-form-color-border);
  appearance: none;
  background: var(--c-form-color-white);
  cursor: pointer;
}

.c-form-low-check:has(.c-form-choice__input:disabled),
.c-form-choice__input:disabled {
  cursor: not-allowed;
}

/* assets/css/component/form.css の旧非表示指定を新コンポーネント内だけ解除 */
.c-form-choice > input.c-form-choice__input {
  position: relative;
  inset: auto;
  opacity: 1;
}

.c-form-choice__input[type="checkbox"] {
  border-radius: 3px;
}

.c-form-choice__input[type="radio"] {
  border-radius: 50%;
}

/* Figma: PC hover is a preview of the selection mark, not a blue border. */
@media screen and (min-width: 768px) {
  .c-form-choice:hover .c-form-choice__input[type="checkbox"]:not(:disabled):not(:checked):not([aria-invalid="true"]),
  .c-form-choice.is-hover .c-form-choice__input[type="checkbox"]:not(:disabled):not(:checked):not([aria-invalid="true"]),
  .c-form-choice__input[type="checkbox"]:not(:disabled):not(:checked):not([aria-invalid="true"]):hover {
    border-color: var(--c-form-color-border);
    background: var(--c-form-color-white);
  }

  .c-form-choice:hover .c-form-choice__input[type="checkbox"]:not(:disabled):not(:checked):not([aria-invalid="true"])::after,
  .c-form-choice.is-hover .c-form-choice__input[type="checkbox"]:not(:disabled):not(:checked):not([aria-invalid="true"])::after,
  .c-form-choice__input[type="checkbox"]:not(:disabled):not(:checked):not([aria-invalid="true"]):hover::after {
    position: absolute;
    top: 4px;
    left: 8px;
    width: 8px;
    height: 13px;
    border: solid var(--c-form-color-primary);
    border-width: 0 3px 3px 0;
    transform: rotate(45deg);
    content: "";
  }

  .c-form-choice:hover .c-form-choice__input[type="radio"]:not(:checked):not([aria-invalid="true"]),
  .c-form-choice.is-hover .c-form-choice__input[type="radio"]:not(:checked):not([aria-invalid="true"]),
  .c-form-choice__input[type="radio"]:not(:checked):not([aria-invalid="true"]):hover {
    border-color: var(--c-form-color-border);
    background: var(--c-form-color-gray-1);
  }

  .c-form-choice:hover .c-form-choice__input[type="radio"]:not(:checked):not([aria-invalid="true"])::after,
  .c-form-choice.is-hover .c-form-choice__input[type="radio"]:not(:checked):not([aria-invalid="true"])::after,
  .c-form-choice__input[type="radio"]:not(:checked):not([aria-invalid="true"]):hover::after {
    position: absolute;
    top: 5px;
    left: 5px;
    width: 14px;
    height: 14px;
    border-radius: 50%;
    background: var(--c-form-color-primary);
    content: "";
  }
}

.c-form-choice__input:focus-visible {
  outline: 2px solid var(--c-form-color-primary);
  outline-offset: 2px;
}

.c-form-choice__input[type="checkbox"]:checked {
  border-color: var(--c-form-color-primary);
  background: var(--c-form-color-primary);
}

.c-form-choice__input[type="checkbox"]:checked::after {
  position: absolute;
  top: 4px;
  left: 8px;
  width: 8px;
  height: 13px;
  border: solid var(--c-form-color-white);
  border-width: 0 3px 3px 0;
  transform: rotate(45deg);
  content: "";
}

.c-form-choice__input[type="radio"]:checked {
  border-color: var(--c-form-color-primary);
  background: var(--c-form-color-gray-1);
}

.c-form-choice__input[type="radio"]:checked::after {
  position: absolute;
  top: 5px;
  left: 5px;
  width: 14px;
  height: 14px;
  border-radius: 50%;
  background: var(--c-form-color-primary);
  content: "";
}

.c-form-choice-group.is-error .c-form-choice__input[aria-invalid="true"],
.c-form-low-check.is-error .c-form-choice__input {
  border-color: var(--c-form-color-error);
}

.c-form-low-check {
  display: flex;
  width: 100%;
  min-height: 82px;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 4px;
  padding: 16px;
  background: var(--c-form-color-gray-2);
  color: var(--c-form-color-text);
  cursor: pointer;
}

.c-form-low-check.is-valid {
  background: var(--c-form-color-green-1);
}

.c-form-low-check.is-error {
  background-color: #fff2f3;
  background-color: var(--c-form-color-error-bg);
}

.c-form-low-check__body {
  display: inline-flex;
  min-height: 50px;
  align-items: center;
  gap: 6px;
  padding: 4px 12px;
}

.c-form-low-check__text {
  font-size: 16px;
  font-weight: 700;
  line-height: 1.4;
}

.c-form-button {
  display: inline-flex;
  width: min(100%, var(--c-form-button-back-width));
  min-height: 72px;
  align-items: center;
  justify-content: center;
  gap: 6px;
  padding: 14px 40px 14px 20px;
  border: 1px solid var(--c-form-color-border);
  border-radius: 96px;
  background: var(--c-form-color-white);
  box-shadow: 0 4px 10px rgba(34, 46, 127, 0.08);
  color: var(--c-form-color-primary);
  cursor: pointer;
  font-size: 20px;
  font-weight: 700;
  line-height: 1.4;
  text-align: center;
  text-decoration: none;
}

.c-form-button--wide {
  width: min(100%, var(--c-form-button-width));
}

.c-form-complete .c-form-button--back {
  margin-top: 40px;
}

.c-form-button--confirm,
.c-form-button--next {
  padding-right: 20px;
  padding-left: 56px;
  border-color: transparent;
}

.c-form-button--confirm {
  background: var(--c-form-color-secondary);
  color: var(--c-form-color-primary);
}

.c-form-button--next {
  background: var(--c-form-color-primary);
  color: var(--c-form-color-white);
}

.c-form-button--disabled,
.c-form-button:disabled {
  /* padding-right/leftは指定しない。--confirm/--nextの非対称padding(アイコン分の視覚調整)を
     活性時と揃えるため、上書きしない。 */
  border-color: transparent;
  background: var(--c-form-color-border);
  color: var(--c-form-color-gray-6);
  cursor: not-allowed;
}

.c-form-button__text {
  flex: 1 1 auto;
  min-width: 0;
}

.c-form-button__icon {
  position: relative;
  display: grid;
  width: 30px;
  height: 30px;
  flex: 0 0 30px;
  place-items: center;
  border-radius: 50%;
}

.c-form-button:disabled .c-form-button__icon{
  background: var(--c-form-color-gray-5);
}

.c-form-button--back .c-form-button__icon {
  background: var(--c-form-color-gray-2);
}

.c-form-button--confirm .c-form-button__icon {
  background: var(--c-form-color-primary);
}

.c-form-button--next .c-form-button__icon {
  background: var(--c-form-color-white);
}

.c-form-button__icon::before {
  display: block;
  width: 8px;
  height: 8px;
  border-top: 3px solid currentColor;
  border-right: 3px solid currentColor;
  content: "";
}

.c-form-button__icon--right::before {
  transform: translateX(-1px) rotate(45deg);
}

.c-form-button__icon--left::before {
  transform: translateX(1px) rotate(-135deg);
}

.c-form-button--confirm .c-form-button__icon {
  color: var(--c-form-color-white);
}

.c-form-button--next .c-form-button__icon,
.c-form-button--back .c-form-button__icon {
  color: var(--c-form-color-primary);
}

/* ========================================
  Object - Project
======================================== */
.p-component-catalog__header {
  margin-bottom: 40px;
}

.p-component-catalog__eyebrow {
  margin: 0 0 8px;
  color: var(--c-form-color-green-6);
  font-size: 13px;
  font-weight: 700;
  line-height: 1.4;
}

.p-component-catalog__title {
  margin: 0;
  color: var(--c-form-color-text);
  font-size: 32px;
  font-weight: 700;
  line-height: 1.45;
}

.p-component-section {
  margin-top: 44px;
}

.p-component-section__head {
  display: flex;
  flex-wrap: wrap;
  gap: 8px 16px;
  align-items: baseline;
  justify-content: space-between;
  margin-bottom: 12px;
}

.p-component-section__title {
  margin: 0;
  color: var(--c-form-color-text);
  font-size: 22px;
  font-weight: 700;
  line-height: 1.45;
}

.p-component-section__meta {
  margin: 0;
  color: var(--c-form-color-gray-6);
  font-size: 13px;
  line-height: 1.6;
}

.p-component-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(min(100%, 424px), 1fr));
  gap: 20px;
}

.p-component-grid--wide {
  grid-template-columns: repeat(auto-fit, minmax(min(100%, 560px), 1fr));
}

.p-component-button-grid {
  display: grid;
  gap: 20px;
}

.p-component-demo-form {
  display: grid;
  gap: 20px;
}

.p-component-demo-form__actions {
  display: flex;
  flex-wrap: wrap;
  gap: 24px;
  align-items: center;
  justify-content: center;
}

.p-component-stack {
  display: grid;
  gap: 16px;
}

.p-component-sample {
  overflow: auto;
  padding: 24px;
  border: 1px solid #e6e6e6;
  border-radius: 8px;
  background: var(--c-form-color-white);
}

.p-component-sample--inline,
.p-component-choice-list {
  display: flex;
  flex-wrap: wrap;
  gap: 12px 24px;
  align-items: center;
}

.p-component-sample--flow {
  display: flex;
  justify-content: center;
}

.p-component-sample--button {
  display: flex;
  justify-content: center;
}

.p-component-sample--form-items {
  display: flex;
  overflow: visible;
  justify-content: center;
  padding: 0;
  border: 0;
  background: transparent;
}

.p-component-sample--wide {
  grid-column: 1 / -1;
}

.none-item{
  display: none;
}

.p-locality,
.p-street-address{
  position: absolute;
  width: 1px;
  height: 1px;
  overflow: hidden;
  clip: rect(0 0 0 0);
  white-space: nowrap;
}

/* ========================================
  Object - Utility
======================================== */
.u-visually-hidden {
  position: absolute;
  overflow: hidden;
  width: 1px;
  height: 1px;
  clip: rect(0 0 0 0);
  clip-path: inset(50%);
  white-space: nowrap;
}

@media screen and (max-width: 767px) {
  body {
    font-size: 14px;
  }

  .l-component-catalog__inner {
    width: min(var(--c-form-sp-width), calc(100% - 32px));
    padding: 32px 0 64px;
  }

  .c-form-tag {
    min-width: 40px;
    height: 24px;
    padding: 5px 6px;
    font-size: 14px;
  }

  .c-form-flow {
    width: min(var(--c-form-sp-width), 100%);
    flex-wrap: wrap;
    justify-content: center;
    gap: 12px 24px;
  }

  .c-form-flow__item {
    gap: 4px;
  }

  .c-form-flow__item:not(:last-child)::after {
    top: 16px;
    left: 44px;
    width: 24px;
  }

  .c-form-flow__item:nth-child(5)::after,
  .c-form-flow__item:last-child::after {
    content: none;
  }

  .c-form-flow__item:nth-child(6) {
    margin-left: 24px;
  }

  .c-form-flow__item:nth-child(6)::before {
    position: absolute;
    top: 16px;
    left: -24px;
    width: 24px;
    height: 1px;
    background: var(--c-form-color-border);
    content: "";
  }

  .c-form-flow__item:nth-child(6).is-current::before,
  .c-form-flow__item:nth-child(6).is-complete::before {
    background: #66c7cf;
  }

  .c-form-flow__num {
    width: 32px;
    height: 32px;
    font-size: 18px;
  }

  .c-form-flow__label {
    color: var(--c-form-color-gray-5);
    font-size: 0;
  }

  .c-form-flow__label::before {
    content: attr(data-step-label);
    font-size: 14px;
  }

  .c-form-field {
    width: min(var(--c-form-sp-width), 100%);
    gap: 6px;
  }

  .c-form-item {
    grid-template-columns: 1fr;
    gap: 16px;
    padding: 0 0 24px;
  }

  .c-form-item + .c-form-item {
    padding-top: 24px;
  }

  .c-form-item__title,
  .c-form-subfield__label,
  .c-form-separator {
    font-size: 13px;
  }

  .c-form-item__head {
    flex-wrap: wrap;
    gap: 8px;
    align-items: center;
    min-height: 0;
  }

  .c-form-item__title {
    width: auto;
    padding: 0;
  }

  .c-form-item__head .c-form-tag {
    flex-basis: auto;
    margin-top: 0;
  }

  .c-form-item__body {
    gap: 12px;
  }
  
  .c-form-inline-group{
    gap: 4px;
  }

  .c-form-field__label,
  .c-form-field__legend,
  .c-form-field__example {
    font-size: 14px;
  }

  /* 16px未満だとiOS Safariがフォーカス時に自動拡大するため、
     入力欄自体は14pxへ縮小せず16pxを維持する。 */
  .c-form-control {
    font-size: 13px;
  }
  
  .c-form-control--select{
    padding: 10px 24px 10px 10px;
  }
  
  .c-form-control-wrap--select.is-error .c-form-control{
    padding-right: 20px;
  }

  .c-form-control-wrap,
  .c-form-control-wrap--select {
    width: 100%;
  }
  
  .c-form-control-wrap--select::after{
    right: 10px;
  }

  .c-form-subfield .c-form-control-wrap {
    flex: 1 1 0;
    min-width: 0;
  }

  .c-form-control-wrap--zip-short {
    width: 104px;
    flex-basis: 104px;
  }

  .c-form-control-wrap--zip-long {
    width: 120px;
    flex-basis: 120px;
  }

  .c-form-inline-group:has(.c-form-control-wrap--phone) {
    flex-wrap: nowrap;
  }

  .c-form-control-wrap--phone {
    width: auto;
    min-width: 0;
    flex: 1 1 0;
  }

  /* 生年月日（元号＋年＋月＋日）はスマホ幅でも1行に収める。 */
  .c-form-inline-group:has(.c-form-control-wrap--era) {
    flex-wrap: nowrap;
    gap: 4px;
  }

  .c-form-note,
  .c-form-error {
    font-size: 12px;
  }
  
  .c-form-control-wrap > .c-form-status-icon{
    right: 10px;
  }

  .c-form-status-icon {
    width: 16px;
    height: 16px;
    flex-basis: 16px;
  }

  .c-form-status-icon--ng::before,
  .c-form-status-icon--ng::after {
    width: 12px;
    height: 2px;
  }

  .c-form-status-icon--ok::before {
    width: 11px;
    height: 8px;
    left: auto;
    right: 0;
    transform: translate(0, -50%);
  }

  .c-form-control-wrap--select > .c-form-status-icon {
    display: none;
  }

  .c-form-choice-group {
    gap: 8px 16px;
    min-height: 32px;
    padding: 0;
  }

  .c-form-choice {
    height: 32px;
    gap: 4px;
    padding: 0;
    font-size: 14px;
  }

  /* 説明文付きの選択肢は複数行になるため、SPでも固定高にしない。 */
  .c-form-choice--detailed {
    height: auto;
    min-height: 48px;
    align-items: flex-start;
    padding: 8px 0;
  }

  .c-form-choice__input {
    width: 24px;
    height: 24px;
    flex-basis: 24px;
  }

  .c-form-choice__input[type="checkbox"]:checked::after {
    top: 3px;
    left: 7px;
    width: 8px;
    height: 12px;
  }

  .c-form-choice__input[type="radio"]:checked::after {
    top: 5px;
    left: 5px;
    width: 12px;
    height: 12px;
  }

  .c-form-low-check {
    min-height: 64px;
    padding: 16px 20px;
  }

  .c-form-low-check__body {
    min-height: 32px;
    gap: 4px;
    padding: 0 12px;
  }

  .c-form-low-check__text {
    font-size: 14px;
  }

  .c-form-button,
  .c-form-button--wide {
    width: 100%;
    min-height: 64px;
    font-size: 18px;
  }

  .c-form-button--confirm,
  .c-form-button--next {
    padding-left: 48px;
  }

  .p-component-demo-form__actions {
    gap: 16px;
  }

  .p-component-catalog__header {
    margin-bottom: 32px;
  }

  .p-component-catalog__title {
    font-size: 24px;
  }

  .p-component-section {
    margin-top: 36px;
  }

  .p-component-grid,
  .p-component-grid--wide {
    grid-template-columns: 1fr;
  }

  .p-component-sample {
    padding: 20px;
  }

  .p-component-sample--flow {
    overflow: visible;
    padding: 0;
    border: 0;
    background: transparent;
  }

  .p-component-sample--form-items {
    overflow: visible;
    padding: 0;
    border: 0;
    background: transparent;
  }
}

@media screen and (max-width: 767px) {
  .c-form-control-wrap--year {
    width: 130px;
  }

  .c-form-control-wrap--month,
  .c-form-control-wrap--day {
    width: 62px;
    flex: 0 1 62px;
    min-width: 40px;
  }
  
  .c-form-control-wrap.is-valid .c-form-control {
    padding-right: 20px;
  }
}
