.cgrid { display: grid; grid-template-columns: minmax(0, 4fr) minmax(0, 7fr); gap: clamp(40px, 6vw, 96px); align-items: start; }
  .cgrid h2 { margin: 0; font-size: 21px; font-weight: 600; }
  .topics { list-style: none; margin: 20px 0 0; padding: 0; }
  .topics li { padding: 14px 0; border-top: 1px solid var(--line); font-size: 16px; line-height: 1.7; color: var(--text-2); }
  .topics li b { color: var(--text); font-weight: 600; margin-right: 8px; }
  .form { background: var(--surface); border: 1px solid var(--line); padding: clamp(24px, 4vw, 48px); }
  .f { display: grid; gap: 8px; margin-top: 26px; }
  .form > :first-child, .two .f { margin-top: 0; }
  .two { margin-top: 26px; row-gap: 26px; } .two .f + .f { margin-top: 0; }
  .f label, .f legend { font-size: 16px; font-weight: 600; color: var(--text); padding: 0; }
  .f .req, .f .opt { margin-left: 8px; font-size: 13px; font-weight: 500; padding: 2px 8px; border: 1px solid var(--line); color: var(--text-2); vertical-align: 2px; }
  .f .req { border-color: var(--signal); color: var(--signal-ink); }
  .f input, .f select, .f textarea { font: inherit; font-size: 17px; color: var(--text); background: #fff; border: 1px solid #c9cdd4; border-radius: 0; padding: 12px 14px; min-height: 48px; width: 100%; box-sizing: border-box; }
  .f textarea { min-height: 180px; resize: vertical; line-height: 1.8; }
  .f input:focus, .f select:focus, .f textarea:focus { outline: 2px solid var(--signal); outline-offset: -1px; border-color: var(--signal); }
  /* 赤枠はテーマで判定したエラー（.f.bad）だけ。Contact Form 7 は同意チェック時などに未入力の項目すべてへ aria-invalid を付けるため使わない */
  .f.bad input, .f.bad select, .f.bad textarea { border-color: #b3261e; }
  .f .err { display: none; font-size: 15px; color: #b3261e; }
  .f.bad .err { display: block; }
  .two { display: grid; grid-template-columns: 1fr 1fr; gap: 0 20px; }
  .warn { margin: 28px 0 0; padding: 18px 20px; background: #f1f9ff; border-left: 2px solid var(--signal); font-size: 15px; line-height: 1.85; color: var(--text); }
  .agree { display: flex; gap: 12px; align-items: center; margin-top: 24px; font-size: 16px; line-height: 1.7; cursor: pointer; }
  .agree input { width: 22px; height: 22px; margin: 0; accent-color: var(--signal); flex: none; }
  .agree a:focus-visible { outline: 2px solid var(--signal); outline-offset: 2px; border-radius: 2px; }
  .agree a { color: var(--text); }
  .send { margin-top: 32px; font: inherit; font-size: 17px; font-weight: 600; color: #0d0c0b; background: var(--signal); border: 0; min-height: 56px; padding: 0 36px; cursor: pointer; display: inline-flex; align-items: center; gap: 14px; }
  .send:hover { background: #559aff; }
  .send:focus-visible { outline: 2px dashed var(--text); outline-offset: 4px; }
  .shin { margin-top: 26px; padding: 18px 20px; border: 1px solid rgba(44,122,255,.55); background: #fff; }
  .shin b { font-size: 17px; } .shin p { margin: 8px 0 0; font-size: 15px; line-height: 1.85; color: var(--text-2); }
  .proto { display: none; margin-top: 20px; padding: 16px 18px; border: 1px dashed var(--text-3); font-size: 15px; color: var(--text-2); }
  .proto.on { display: block; }

  /* Contact Form 7 が出力する要素（プラグインの CSS は読み込まない） */
  .wpcf7 .screen-reader-response { position: absolute; overflow: hidden; clip: rect(1px, 1px, 1px, 1px); clip-path: inset(50%); width: 1px; height: 1px; margin: -1px; padding: 0; border: 0; }
  .wpcf7 .hidden-fields-container { display: none; }
  .form .hidden-fields-container + .two { margin-top: 0; }
  .wpcf7-form-control-wrap { display: block; position: relative; }
  .wpcf7-not-valid-tip { display: none; }
  #agreef .wpcf7-list-item { display: block; margin: 0; }
  #agreef label { display: flex; gap: 12px; align-items: center; margin-top: 24px; font-size: 16px; font-weight: 400; line-height: 1.7; cursor: pointer; }
  #agreef input { width: 22px; height: 22px; min-height: 0; margin: 0; padding: 0; accent-color: var(--signal); flex: none; }
  #agreef a { color: var(--text); }
  #agreef a:focus-visible { outline: 2px solid var(--signal); outline-offset: 2px; border-radius: 2px; }
  .send:disabled, .send:disabled:hover { opacity: .6; cursor: not-allowed; background: var(--signal); }
  .wpcf7-turnstile { margin-top: 32px; max-width: 400px; }
  .wpcf7-turnstile + .send { margin-top: 24px; }
  .wpcf7-spinner { display: inline-block; visibility: hidden; width: 20px; height: 20px; margin-left: 16px; vertical-align: middle; border: 2px solid var(--line); border-top-color: var(--signal); border-radius: 50%; animation: cform-spin .8s linear infinite; }
  .form.submitting .wpcf7-spinner { visibility: visible; }
  @keyframes cform-spin { to { transform: rotate(360deg); } }
  .form .wpcf7-response-output { margin-top: 20px; padding: 16px 18px; border: 1px dashed var(--text-3); font-size: 15px; line-height: 1.8; color: var(--text-2); }
  .form .wpcf7-response-output:empty, .form.init .wpcf7-response-output, .form.submitting .wpcf7-response-output, .form.resetting .wpcf7-response-output, .form.sent .wpcf7-response-output { display: none; }
  .form.failed .wpcf7-response-output, .form.aborted .wpcf7-response-output, .form.spam .wpcf7-response-output { border-color: #b3261e; color: #b3261e; }

  @media (max-width: 1000px) { .cgrid { grid-template-columns: 1fr; } .cgrid .cform { order: -1; } }
  @media (max-width: 560px) { .two { grid-template-columns: 1fr; } }
