/* Contact 464:258 / form states 480:259 / Thanks 465:285 / Privacy 467:285. */
.cp-section { padding: 120px 40px; }
.cp-layout, .cp-policy-layout { display: grid; max-width: 1360px; margin: 0 auto; gap: 80px; align-items: start; }
.cp-layout { grid-template-columns: minmax(0, 400fr) minmax(0, 880fr); }
.cp-introduction h2 { font-size: 36px; font-weight: 700; line-height: 1.5; }
.cp-introduction > p { margin-top: 24px; font-size: 16px; line-height: 2.1; color: rgb(0 7 31 / 85%); }
.cp-introduction .cp-preview-note { margin-top: 32px; font-size: 13px; }
.cp-form { display: flex; flex-direction: column; gap: 36px; }
.cp-honeypot { position: absolute; left: -10000px; width: 1px; height: 1px; overflow: hidden; }
.cp-field { display: flex; flex-direction: column; gap: 14px; }
.cp-field > label { font-size: 20px; font-weight: 700; line-height: 1.5; }
.cp-field label > span { margin-left: .45em; }
.cp-required { color: var(--orange); }
.cp-field :is(input, select, textarea) { width: 100%; min-width: 0; border: 1px solid rgb(0 7 31 / 22%); border-radius: 8px; padding: 18px 24px; color: var(--ink); background: #fff; font: 400 16px/26px var(--font-ja); }
.cp-field :is(input, select) { min-height: 64px; }
.cp-field select { cursor: pointer; padding-right: 20px; }
.cp-field select:has(option:checked[value=""]) { color: rgb(0 7 31 / 55%); }
.cp-field select option { color: var(--ink); background: #fff; }
.cp-field select option:checked { color: var(--orange); background: #fff1eb; }
.cp-field textarea { min-height: 220px; resize: vertical; }
.cp-field ::placeholder { color: rgb(0 7 31 / 55%); opacity: 1; }
.cp-field :is(input, select, textarea):focus { border-color: var(--orange); outline: 1px solid var(--orange); outline-offset: 0; }
.cp-field [aria-invalid="true"], .cp-checkbox input[aria-invalid="true"] { border-color: #a6291a; outline: 1px solid #a6291a; outline-offset: 0; }
.cp-field-help { font-size: 14px; line-height: 1.8; color: rgb(0 7 31 / 85%); }
.cp-field-error { font-size: 16px; line-height: 1.7; color: #a6291a; }
.cp-consent { display: flex; flex-direction: column; gap: 20px; border-top: 1px solid rgb(0 7 31 / 15%); padding-top: 36px; }
.cp-checkbox { display: flex; align-items: flex-start; gap: 16px; cursor: pointer; font-size: 16px; line-height: 1.8; }
.cp-checkbox input { appearance: none; flex: 0 0 24px; width: 24px; height: 24px; margin: 3px 0 0; border: 1px solid rgb(0 7 31 / 50%); border-radius: 4px; background: white; cursor: pointer; }
.cp-checkbox input:checked { border-color: var(--orange); background: var(--orange); }
.cp-checkbox input:checked::after { display: block; content: ""; width: 6px; height: 12px; border: solid white; border-width: 0 2px 2px 0; transform: translate(7px, 2px) rotate(45deg); }
.cp-checkbox input:focus-visible { outline: 3px solid var(--orange); outline-offset: 4px; }
.cp-purpose { font-size: 14px; line-height: 1.9; color: rgb(0 7 31 / 85%); }
.cp-button { display: inline-flex; align-items: center; justify-content: space-between; gap: 24px; width: 360px; max-width: 100%; min-height: 66px; border: 1px solid var(--ink); border-radius: 33px; padding: 18px 32px; background: var(--ink); color: #fff; text-align: left; font: 700 16px/1.6 var(--font-ja); }
.cp-button > span { display: inline-block; font: 500 20px/1 var(--font-en); transition: transform .24s cubic-bezier(.22,1,.36,1); }
.cp-button:is(:hover, :focus-visible):not(:disabled) > span { transform: translateX(6px); }
.cp-button:disabled { opacity: .6; cursor: not-allowed; }
.cp-text-link { align-self: flex-start; border: 0; padding: 0; background: transparent; color: var(--ink); text-align: left; font: 700 16px/1.8 var(--font-ja); }
.cp-text-link:hover { text-decoration: underline; text-underline-offset: .25em; }
.cp-text-link:disabled { opacity: .6; cursor: not-allowed; }
.cp-preview-note { border-left: 2px solid var(--orange); padding-left: 14px; color: rgb(0 7 31 / 75%); font-size: 13px; line-height: 1.9; }
.cp-error-summary { border: 1px solid #a6291a; border-radius: 8px; background: #fff1eb; padding: 20px 24px; color: #a6291a; font-size: 16px; line-height: 1.8; }
.cp-error-summary > p { font-weight: 700; }
.cp-error-summary ul { margin: 12px 0 0; padding-left: 20px; }
.cp-error-summary a { text-decoration: underline; text-underline-offset: .2em; }
.cp-confirmation { display: flex; flex-direction: column; gap: 28px; }
.cp-confirmation h2 { font-size: 28px; line-height: 1.6; }
.cp-review-fields { margin: 0; }
.cp-review-fields > div { border-bottom: 1px solid rgb(0 7 31 / 15%); padding-block: 24px; }
.cp-review-fields dt { margin-bottom: 12px; font-size: 18px; font-weight: 700; }
.cp-review-fields dd { margin: 0; white-space: pre-wrap; overflow-wrap: anywhere; font-size: 16px; line-height: 2; }
.cp-confirm-actions { display: flex; flex-wrap: wrap; align-items: center; gap: 28px; }
.cp-confirm-actions .cp-text-link { align-self: center; }
.cp-preview-link { margin-top: 12px; font-size: 14px; }
.cp-thanks { padding: 120px 40px 0; display: flex; flex-direction: column; align-items: center; gap: 48px; }
.cp-thanks-copy { max-width: 1120px; font-size: 22px; line-height: 1.9; text-align: center; }
.cp-thanks-notice { max-width: 800px; }
.cp-thanks-receipt { overflow-wrap: anywhere; }
.cp-thanks-navigation { display: flex; align-items: center; justify-content: center; gap: 40px; width: 800px; max-width: 100%; }
.cp-thanks-navigation .cp-button { width: 336px; }
.cp-thanks-navigation .cp-text-link { align-self: center; width: 220px; }
.cp-thanks-art { position: relative; width: 100%; height: 235px; margin-top: -13px; flex: 0 0 auto; }
.cp-thanks-mascot { position: absolute; left: 50%; bottom: 0; display: block; width: 222px; height: 222px; transform: translateX(-50%); object-fit: contain; }
.cp-thanks-bubble { position: absolute; top: 0; left: calc(50% + 111px); width: 156px; height: 72px; border-radius: 8px; background: #fff; color: var(--ink); }
.cp-thanks-bubble p { position: absolute; left: 29px; top: 24px; margin: 0; white-space: nowrap; font: 700 15.84px/22.176px var(--font-ja); }
.cp-thanks-bubble-tail { position: absolute; left: 52.43px; top: 70.12px; display: block; }
.thanks-page[data-thanks-mascot-visible='true'] .floating-chat { opacity: 0; visibility: hidden; pointer-events: none; }
.cp-policy-layout { grid-template-columns: minmax(0, 320fr) minmax(0, 960fr); }
.cp-policy-toc { display: flex; flex-direction: column; align-items: start; gap: 24px; position: sticky; top: 130px; font-size: 18px; font-weight: 700; line-height: 1.6; }
.cp-policy-toc a { color: rgb(0 7 31 / 85%); }
.cp-policy-toc a[aria-current] { color: var(--orange); }
.cp-policy-toc a:hover { color: var(--orange); }
.cp-policy-copy { display: flex; flex-direction: column; gap: 40px; min-width: 0; }
.cp-policy-copy p:not(.cp-preview-note) { font-size: 16px; line-height: 2.2; }
.cp-policy-copy section { display: flex; flex-direction: column; gap: 24px; padding-top: 24px; border-top: 1px solid rgb(0 7 31 / 15%); scroll-margin-top: 140px; }
.cp-policy-copy h2 { font-size: 28px; font-weight: 700; line-height: 1.6; }
.cp-policy-copy .cp-button { width: 336px; }
.cp-sr-only { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip-path: inset(50%); white-space: nowrap; border: 0; }
.cp-form[hidden], .cp-confirmation[hidden], .cp-field-error[hidden], .cp-error-summary[hidden] { display: none; }
@media (min-width: 768px) and (max-width: 1199px) {
  .cp-layout { grid-template-columns: minmax(0, 1fr) minmax(0, 2fr); gap: 40px; }
  .cp-policy-layout { grid-template-columns: minmax(0, 1fr) minmax(0, 3fr); gap: 40px; }
  .cp-introduction h2 { font-size: 28px; }
  .cp-policy-toc { font-size: 16px; }
}
@media (max-width: 767px) {
  .cp-section { padding: 88px 24px; }
  .cp-layout, .cp-policy-layout { grid-template-columns: 1fr; gap: 48px; }
  .cp-introduction h2 { font-size: 28px; }
  .cp-introduction > p { margin-top: 16px; font-size: 14px; }
  .cp-introduction .cp-preview-note { margin-top: 24px; }
  .cp-form { gap: 28px; }
  .cp-field { gap: 12px; }
  .cp-field > label { font-size: 17px; }
  .cp-field :is(input, select, textarea) { padding: 16px; }
  .cp-field :is(input, select) { min-height: 58px; }
  .cp-field textarea { min-height: 240px; }
  .cp-consent { padding-top: 28px; }
  .cp-checkbox { gap: 12px; font-size: 14px; }
  .cp-field-help, .cp-purpose { font-size: 13px; }
  .cp-button { width: 100%; padding-inline: 24px; font-size: 15px; }
  .cp-text-link { font-size: 14px; }
  .cp-confirmation h2 { font-size: 24px; }
  .cp-confirm-actions { flex-direction: column; align-items: stretch; }
  .cp-thanks { padding: 88px 24px 0; gap: 32px; }
  .cp-thanks-copy { font-size: 17px; line-height: 2; text-align: left; }
  .cp-thanks-navigation { flex-direction: column; gap: 28px; }
  .cp-thanks-navigation .cp-button { width: 100%; }
  .cp-thanks-navigation .cp-text-link { width: auto; }
  .cp-thanks-art { height: 280px; margin-top: 0; }
  .cp-thanks-mascot { width: 200px; height: 200px; }
  .cp-thanks-bubble { left: auto; right: 0; }
  .cp-thanks-bubble-tail { left: 30px; }
  .cp-policy-toc { position: static; display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px; font-size: 14px; }
  .cp-policy-toc a { padding: 10px 12px; border: 1px solid rgb(0 7 31 / 18%); border-radius: 6px; }
  .cp-policy-copy { gap: 32px; }
  .cp-policy-copy section { gap: 20px; scroll-margin-top: 106px; }
  .cp-policy-copy h2 { font-size: 22px; }
  .cp-policy-copy p:not(.cp-preview-note) { font-size: 14px; line-height: 2.1; }
}
@media (prefers-reduced-motion: reduce) { .cp-button > span { transition: none; } }
