/**
 * 無料体験フォーム（.kef コンポーネント）
 * ---------------------------------------------------------------------------
 * 出典: karun-os `projects/フォーム改修/無料体験ページ.html` / `教室ページ埋め込み版.html`
 * 配色・仕様の正は同ディレクトリの DESIGN.md（§2 配色トークン / §5 構造）。
 * 色を変えるときは :root トークンだけを書き換える（個別要素は var() 参照）。
 *
 * CF7（Contact Form 7）が出力するDOMに合わせた差分は「CF7対応」コメントを付けている。
 */

:root{
  --c-accent:#E77C50;      /* メインアクセント（オレンジ主 系） */
  --c-accent2:#004AAD;     /* 二次アクセント（紺） */
  --c-cta:#FBC03C;         /* CTAボタン（黄） */
  --c-ink:#353231;         /* 本文 */
  --c-ok:#1A8F4C;          /* 機能色: 受付中 */
  --c-err:#D64545;         /* 機能色: エラー */
  --c-accent-ring:rgba(231,124,80,.18);
}

.kef, .kef *{box-sizing:border-box}
  .kef{max-width:640px;margin:8px auto 0;font-family:"Noto Sans JP",sans-serif;color:var(--c-ink);line-height:1.8;font-size:16px;text-align:left}
  .kef .kef-heading{display:flex;align-items:center;justify-content:center;gap:12px;font-size:1.3rem;font-weight:700;margin:0 0 8px;text-align:center;flex-wrap:wrap;color:var(--c-ink)}
  .kef .kef-heading__icon{display:flex;align-items:center;justify-content:center;width:50px;height:50px;background:var(--c-accent);border-radius:50%;color:#fff;font-size:1.3rem;flex:none}
  .kef .kef-school{text-align:center;font-size:1.05rem;font-weight:700;color:var(--c-accent);margin:0 0 6px}
  .kef .kef-assure{display:flex;gap:8px;justify-content:center;flex-wrap:wrap;margin:0 0 18px}
  .kef .kef-assure span{background:#fff7d7;color:var(--c-ink);font-size:.82rem;font-weight:500;padding:6px 14px;border-radius:999px;display:inline-flex;align-items:center;gap:5px}
  .kef .kef-assure span::before{content:"\2713";color:var(--c-accent);font-weight:700}
  .kef .kef-card{background:#fff;border-radius:10px;padding:24px 20px;box-shadow:3px 3px 10px rgba(0,0,0,.10)}
  .kef .kef-call{background:#e5f5ff;border-radius:10px;padding:16px;text-align:center;margin-bottom:8px;transition:box-shadow .2s, filter .2s, opacity .2s}
  .kef.is-open .kef-call{box-shadow:0 0 0 3px rgba(26,143,76,.25)}
  .kef.is-closed .kef-call{background:#f0f0f1;filter:grayscale(1);opacity:.6}
  .kef.is-closed .kef-call a{color:#8a8a8a;box-shadow:none;pointer-events:none}
  .kef .kef-status{display:inline-flex;flex-direction:column;align-items:center;font-size:.86rem;font-weight:700;padding:6px 16px;border-radius:999px;margin-bottom:10px}
  .kef .kef-status.is-open{background:#e6f6ec;color:var(--c-ok)}
  .kef .kef-status.is-closed{background:#f0f0f1;color:#777}
  .kef .kef-status .dot{display:inline-flex;align-items:center;gap:7px}
  .kef .kef-status.is-open .dot::before{content:"";width:9px;height:9px;border-radius:50%;background:var(--c-ok)}
  .kef .kef-status__sub{font-size:.76rem;font-weight:500;margin-top:2px;opacity:.85}
  .kef .kef-call p{margin:0 0 8px;font-size:.95rem;font-weight:700}
  .kef .kef-call a{display:flex;align-items:center;justify-content:center;gap:8px;text-decoration:none;background:#fff;border-radius:999px;min-height:58px;color:var(--c-accent);font-size:1.5rem;font-weight:700;letter-spacing:.02em;box-shadow:3px 3px 10px rgba(0,0,0,.12)}
  .kef .kef-call small{display:block;margin-top:8px;color:var(--c-ink);font-size:.8rem}
  .kef .kef-or{display:flex;align-items:center;gap:12px;margin:18px 2px 8px;color:var(--c-ink);font-weight:500;font-size:.9rem}
  .kef .kef-or::before,.kef .kef-or::after{content:"";flex:1;height:1px;background:#d9d9d9}
  .kef .kef-steps{text-align:center;color:var(--c-ink);font-size:.9rem;font-weight:500;margin:0 0 18px}
  .kef .kef-steps b{color:var(--c-accent)}
  .kef .kef-field{margin-bottom:20px}
  .kef .kef-label{display:flex;align-items:center;font-weight:700;font-size:1.05rem;margin-bottom:9px;color:var(--c-ink);cursor:default}
  .kef .no{width:45px;height:45px;background:var(--c-accent);color:#fff;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:1.2rem;font-weight:700;flex-shrink:0;margin-right:10px}
  .kef .req{color:#fff;background:var(--c-accent);font-size:.72rem;font-weight:700;padding:3px 10px;border-radius:999px;margin-left:auto}
  .kef .opt{color:var(--c-ink);background:#f0f0f1;font-size:.72rem;font-weight:500;padding:3px 10px;border-radius:999px;margin-left:auto}
  .kef .hint{color:#666;font-size:.82rem;margin:7px 0 0;line-height:1.7}
  .kef input[type=text],.kef input[type=tel],.kef input[type=email]{width:100%;height:60px;border:1px solid #707070;border-radius:.3125rem;padding:.5rem .75rem;font-size:1.2rem;color:var(--c-ink);background:#fff;margin:0;font-family:"Noto Sans JP",sans-serif;transition:border-color .15s, box-shadow .15s}
  .kef textarea{width:100%;min-height:96px;border:1px solid #707070;border-radius:.3125rem;padding:.6rem .75rem;font-size:1.05rem;color:var(--c-ink);background:#fff;margin:0;font-family:"Noto Sans JP",sans-serif;resize:vertical;transition:border-color .15s, box-shadow .15s}
  .kef input::placeholder,.kef textarea::placeholder{color:#cbcbcb}
  .kef input:focus,.kef textarea:focus{outline:none;border-color:var(--c-accent);box-shadow:0 0 0 3px var(--c-accent-ring)}
  .kef input.invalid{border-color:var(--c-err);background:#fff6f6}
  .kef .err-msg{color:var(--c-err);font-size:.88rem;font-weight:700;margin:8px 0 0;display:none}
  .kef .err-msg::before{content:"\26A0 "}
  /* CF7対応: CF7は input を span.wpcf7-form-control-wrap で包むため、
     モックの「input.invalid ~ .err-msg」（兄弟セレクタ）が効かない。
     エラー状態は .kef-field 側に .is-invalid を付けて表示を制御する。 */
  .kef .kef-field.is-invalid > .err-msg,
  .kef .kef-consent.is-invalid > .err-msg{display:block}
  /* CF7が自前の入力不備メッセージ（.wpcf7-not-valid-tip）を出している間は、
     同じ内容が二重に出ないよう独自メッセージを隠す。 */
  .kef .kef-field.has-cf7-tip > .err-msg,
  .kef .kef-consent.has-cf7-tip > .err-msg{display:none}
  .kef .kef-select{position:relative}
  .kef .kef-select::after{content:"";position:absolute;right:18px;top:44%;width:9px;height:9px;border-right:2px solid var(--c-accent);border-bottom:2px solid var(--c-accent);transform:translateY(-50%) rotate(45deg);pointer-events:none}
  .kef select{width:100%;height:60px;border:1px solid #707070;border-radius:.3125rem;padding:.5rem 2.6rem .5rem .75rem;font-size:1.12rem;color:var(--c-ink);background:#fff;margin:0;font-family:"Noto Sans JP",sans-serif;-webkit-appearance:none;-moz-appearance:none;appearance:none;transition:border-color .15s, box-shadow .15s}
  .kef select:focus{outline:none;border-color:var(--c-accent);box-shadow:0 0 0 3px var(--c-accent-ring)}
  .kef .kef-select.invalid select{border-color:var(--c-err);background:#fff6f6}
  .kef .kef-select[hidden]{display:none}
  .kef .kef-school2{margin-top:10px}
  .kef .kef-school2.show{animation:kefFade .3s ease}
  @keyframes kefFade{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}
  @media (prefers-reduced-motion:reduce){.kef .kef-school2.show{animation:none}}
  .kef .kef-school-fixed{display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap;border:1px solid #d7dbe0;background:#faf8f4;border-radius:.3125rem;padding:12px 14px}
  .kef .kef-school-fixed[hidden]{display:none}
  .kef .kef-school-fixed__name{font-size:1.12rem;font-weight:700;color:var(--c-ink);display:flex;align-items:center;gap:8px}
  .kef .kef-school-fixed__name::before{content:"\2713";color:var(--c-ok);font-weight:900}
  .kef .kef-school-change{border:1px solid var(--c-accent);background:#fff;color:var(--c-accent);font-size:.8rem;font-weight:700;padding:8px 14px;border-radius:999px;cursor:pointer;font-family:"Noto Sans JP",sans-serif;white-space:nowrap}
  .kef .kef-school-change:hover{background:#FFF2EA}
  .kef .kef-find-methods{display:grid;grid-template-columns:1fr 1fr;gap:10px}
  .kef .kef-method-btn{display:flex;align-items:center;justify-content:center;gap:8px;min-height:60px;border:2px solid var(--c-accent);background:#fff;color:var(--c-accent);border-radius:12px;font-size:1.05rem;font-weight:700;cursor:pointer;font-family:"Noto Sans JP",sans-serif;transition:all .2s;box-shadow:2px 2px 8px rgba(0,0,0,.06);padding:8px 6px;text-align:center;line-height:1.3}
  .kef .kef-method-btn i{font-size:1.15rem;flex:none}
  .kef .kef-method-btn .btn-suffix{display:none}
  .kef .kef-method-btn .btn-label{display:inline}
  @media(min-width:600px){.kef .kef-method-btn .btn-suffix{display:inline}}
  .kef .kef-method-btn:hover{background:#FFF2EA}
  .kef .kef-method-btn.active{background:var(--c-accent);color:#fff}
  .kef .kef-method-btn.is-loading{pointer-events:none;opacity:.75}
  .kef .kef-loc-wrap{margin-top:12px}
  .kef .kef-loc-wrap[hidden]{display:none}
  .kef #kef-school-loc{width:100%;height:60px;border:1px solid #707070;border-radius:.3125rem;padding:.5rem .9rem;font-size:1.15rem;color:var(--c-ink);background:#fff;font-family:"Noto Sans JP",sans-serif;transition:border-color .15s, box-shadow .15s}
  .kef #kef-school-loc:focus{outline:none;border-color:var(--c-accent);box-shadow:0 0 0 3px var(--c-accent-ring)}
  .kef #kef-school-loc::placeholder{color:#cbcbcb}
  .kef .kef-area-note{margin:12px 0 4px;font-size:.95rem;font-weight:700;color:var(--c-ink);display:flex;align-items:center;gap:7px}
  .kef .kef-area-note[hidden]{display:none}
  .kef .kef-area-note i{color:var(--c-accent)}
  .kef .kef-school-cands{display:grid;gap:10px;margin:10px 0 4px}
  .kef .kef-school-cands[hidden]{display:none}
  .kef button.kef-school-cand{display:block;width:100%;text-align:left;border:1.5px solid var(--c-accent);background:#fff;border-radius:12px;padding:15px 16px;cursor:pointer;font-family:"Noto Sans JP",sans-serif;transition:all .2s}
  .kef button.kef-school-cand:hover{background:#FFF2EA}
  .kef button.kef-school-cand.selected{background:var(--c-accent);border-color:var(--c-accent);color:#fff;box-shadow:2px 2px 10px rgba(231,124,80,.3)}
  .kef button.kef-school-cand .cand-row{display:flex;align-items:center;gap:8px}
  .kef button.kef-school-cand .cand-name{font-weight:700;font-size:1.15rem}
  .kef button.kef-school-cand.selected .cand-name::before{content:"\2713";margin-right:5px}
  .kef button.kef-school-cand .cand-dist{margin-left:auto;font-size:.82rem;font-weight:700;opacity:.85;white-space:nowrap;background:#fff2ea;color:var(--c-accent);padding:3px 10px;border-radius:999px}
  .kef button.kef-school-cand.selected .cand-dist{background:rgba(255,255,255,.25);color:#fff}
  .kef button.kef-school-cand .cand-addr{font-size:.82rem;color:#666;margin-top:5px;line-height:1.5}
  .kef button.kef-school-cand.selected .cand-addr{color:#fff;opacity:.92}
  .kef .kef-school-manual-toggle{display:block;width:100%;text-align:center;background:none;border:none;color:#888;font-size:.9rem;font-weight:700;text-decoration:underline;cursor:pointer;padding:8px 0;margin:6px 0 10px;font-family:"Noto Sans JP",sans-serif}
  .kef .kef-school-manual-toggle:hover{color:var(--c-accent)}
  .kef .kef-school-manual-toggle i{text-decoration:none}
  .kef .kef-more[hidden]{display:none}
  .kef .kef-more-toggle{display:flex;align-items:center;justify-content:center;gap:8px;width:100%;min-height:52px;background:#fff;border:2px dashed #cbd0d8;border-radius:10px;color:#666;font-size:.95rem;font-weight:700;cursor:pointer;font-family:"Noto Sans JP",sans-serif;margin-bottom:20px}
  .kef .kef-more-toggle:hover{border-color:var(--c-accent);color:var(--c-accent)}
  .kef .kef-more-toggle i{color:var(--c-accent)}
  .kef .cta{display:inline-flex;align-items:center;justify-content:center;gap:8px;width:100%;min-height:68px;border:none;cursor:pointer;background:var(--c-cta);color:var(--c-ink);padding:16px 74px 16px 40px;border-radius:999px;font-size:1.1rem;font-weight:500;font-family:"Noto Sans JP",sans-serif;transition:all .3s;position:relative;margin-top:20px;box-shadow:3px 3px 10px rgba(0,0,0,.16)}
  .kef .cta::after{content:"";position:absolute;top:50%;transform:translateY(-50%);right:.3125rem;width:4.4375rem;height:calc(100% - .625rem);background-repeat:no-repeat;background-position:center right;background-size:contain;background-image:url(../images/common/red-arrow.png)}
  .kef .cta:hover{opacity:.8;transform:translateY(-2px)}
  .kef .cta:disabled{background:#e7e7e7;color:#a8a8a8;box-shadow:none;cursor:not-allowed}
  .kef .cta:disabled::after{filter:grayscale(1);opacity:.35}
  .kef .cta:disabled:hover{opacity:1;transform:none}
  .kef .flow{display:flex;justify-content:center;gap:6px;margin:20px 0 0;flex-wrap:wrap;color:#666;font-size:.82rem;font-weight:500}
  .kef .flow b{color:var(--c-ink)} .kef .flow .ar{color:var(--c-accent);font-weight:700}
  .kef .kef-privacy{text-align:center;color:#666;font-size:.78rem;margin:12px 0 0}
  .kef .kef-privacy a{color:#666}
  .kef .kef-done{display:none;text-align:center;padding:8px 4px 6px}
  .kef .kef-done.show{display:block}
  .kef .kef-done .ic{width:76px;height:76px;border-radius:50%;background:#fff7d7;color:var(--c-accent);font-size:40px;display:flex;align-items:center;justify-content:center;margin:4px auto 14px;font-weight:700}
  .kef .kef-done h3{font-size:1.25rem;margin:.2em 0;color:var(--c-ink);border:0;font-weight:700}
  .kef .kef-done p{color:#666;margin:.5em 0;font-size:.95rem}
  .kef .kef-tel-school{margin:2px 0 8px;font-size:.9rem;font-weight:700;color:var(--c-accent)}
  .kef .kef-tel-school i{margin-right:4px}
  .kef .kef-formlead{text-align:center;color:#555;font-size:.86rem;margin:0 0 14px;line-height:1.7}
  .kf-hero{max-width:640px;margin:0 auto 16px}
  .kf-hero img{width:100%;height:auto;display:block;border-radius:12px;box-shadow:3px 3px 10px rgba(0,0,0,.08)}
  .kf-intro{max-width:640px;margin:0 auto 4px;text-align:center}
  .kf-intro h1{font-size:1.5rem;font-weight:700;margin:0 0 6px;color:var(--c-ink)}
  .kf-intro .lead{color:#555;font-size:.95rem;margin:0 auto 18px;max-width:32em}
  .kf-promise{max-width:640px;margin:0 auto 18px;background:#fff;border:1px solid #FFE0CC;border-radius:12px;padding:16px 18px;box-shadow:3px 3px 10px rgba(0,0,0,.06);font-family:"Noto Sans JP",sans-serif}
  .kf-promise h2{font-size:1.05rem;font-weight:700;text-align:center;margin:0 0 12px;color:var(--c-accent)}
  .kf-promise ul{list-style:none;margin:0;padding:0;display:grid;gap:11px}
  .kf-promise li{display:flex;align-items:flex-start;gap:10px;font-size:.9rem;color:var(--c-ink);line-height:1.7}
  .kf-promise li i{color:var(--c-ok);margin-top:4px;flex:none}
  .kf-promise li b{color:var(--c-accent)}
  /* /guarantee 訴求セクション */
  .kf-guarantee{max-width:640px;margin:0 auto 20px;background:linear-gradient(180deg,#fff7d7,#fff);border:2px solid var(--c-accent);border-radius:14px;padding:22px 18px;text-align:center;font-family:"Noto Sans JP",sans-serif}
  .kf-guarantee .g-badge{display:inline-block;background:var(--c-accent);color:#fff;font-weight:700;font-size:.8rem;padding:5px 16px;border-radius:999px;margin-bottom:10px}
  .kf-guarantee h2{font-size:1.25rem;font-weight:700;margin:0 0 10px;color:var(--c-ink);line-height:1.5}
  .kf-guarantee h2 b{color:var(--c-accent)}
  .kf-guarantee p{font-size:.9rem;color:#555;margin:.5em 0;line-height:1.85}
  .kf-sec-h{display:flex;align-items:center;justify-content:center;gap:10px;font-size:1.15rem;font-weight:700;color:var(--c-ink);margin:26px auto 14px;max-width:640px;font-family:"Noto Sans JP",sans-serif}
  .kf-sec-h .ic{width:42px;height:42px;background:var(--c-accent);border-radius:50%;color:#fff;display:flex;align-items:center;justify-content:center;font-size:1rem;flex:none}
  .kf-lead-sec{max-width:640px;margin:0 auto 14px;text-align:center;color:#555;font-size:.92rem;line-height:1.85;font-family:"Noto Sans JP",sans-serif}
  .kf-qa{max-width:640px;margin:0 auto 12px;background:#fff;border-radius:12px;box-shadow:3px 3px 10px rgba(0,0,0,.06);overflow:hidden;font-family:"Noto Sans JP",sans-serif}
  .kf-qa__q{display:flex;gap:10px;align-items:flex-start;background:#e5f5ff;padding:14px 16px;font-weight:700;font-size:.93rem;color:var(--c-ink);line-height:1.7}
  .kf-qa__q .mark{color:var(--c-accent2);font-weight:700;flex:none}
  .kf-qa__a{padding:14px 16px}
  .kf-qa__a .a-ttl{color:var(--c-accent);font-weight:700;font-size:1rem;margin:0 0 6px;display:flex;gap:8px;align-items:flex-start}
  .kf-qa__a .a-ttl .mark{flex:none}
  .kf-qa__a p{font-size:.87rem;color:#555;line-height:1.85;margin:0}
  .kf-flow{max-width:640px;margin:0 auto;font-family:"Noto Sans JP",sans-serif}
  .kf-flow .step{display:flex;gap:14px;align-items:flex-start;background:#fff;border-radius:12px;padding:14px 16px;margin-bottom:12px;box-shadow:3px 3px 10px rgba(0,0,0,.05)}
  .kf-flow .num{width:42px;height:42px;background:var(--c-accent);color:#fff;border-radius:50%;display:flex;align-items:center;justify-content:center;font-weight:700;font-size:1.1rem;flex:none}
  .kf-flow h3{margin:.1em 0 .3em;font-size:1rem;color:var(--c-ink)}
  .kf-flow p{margin:0;font-size:.85rem;color:#666;line-height:1.75}
  .kf-voice{max-width:640px;margin:0 auto 8px;background:#fff;border-radius:12px;padding:18px;box-shadow:3px 3px 10px rgba(0,0,0,.05);display:flex;gap:14px;align-items:flex-start;font-family:"Noto Sans JP",sans-serif}
  .kf-voice .av{width:50px;height:50px;border-radius:50%;background:#e5f5ff;flex:none;display:flex;align-items:center;justify-content:center;color:var(--c-accent);font-size:22px}
  .kf-voice .txt{font-size:.87rem;color:#444;line-height:1.85}
  .kf-voice .who{font-size:.8rem;color:#888;font-weight:700;margin-top:8px}
  .kef-sticky{position:fixed;left:0;right:0;bottom:0;z-index:9999;background:rgba(255,255,255,.96);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);box-shadow:0 -3px 14px rgba(0,0,0,.12);padding:9px 12px;display:none;gap:9px;font-family:"Noto Sans JP",sans-serif}
  .kef-sticky.show{display:flex}
  .kef-sticky a,.kef-sticky button{flex:1;min-height:54px;border:none;border-radius:999px;font-size:15px;font-weight:700;cursor:pointer;display:flex;align-items:center;justify-content:center;gap:7px;text-decoration:none;font-family:"Noto Sans JP",sans-serif}
  .kef-sticky .s-call{background:#fff;border:2px solid var(--c-accent);color:var(--c-accent)}
  .kef-sticky .s-form{background:var(--c-cta);color:var(--c-ink)}
  .kef-sticky.is-open .s-call{background:var(--c-accent);color:#fff}
  .kef-sticky.is-open .s-form{background:#fff;border:2px solid var(--c-accent);color:var(--c-accent)}
  /* 受付時間外は電話ボタンを隠し、無料体験を横幅いっぱい＋訴求を追加 */
  .kef-sticky.is-closed .s-call{display:none}
  .kef-sticky .s-form .s-form-full{display:none}
  .kef-sticky.is-closed .s-form .s-form-full{display:inline}
  .kef-sticky .s-call .s-call-txt{display:inline-flex;flex-direction:column;align-items:center;line-height:1.15}
  .kef-sticky .s-call .s-call-note{display:none;font-size:10px;font-weight:700}
  .kef-sticky.is-closed .s-call .s-call-note{display:block}
  @media(min-width:600px){.kef-sticky.show{display:none}}
  /* サイト側「トップへ戻る」ボタンが追従バーと重ならないよう、バー表示中だけ上へ逃がす */
  @media(max-width:599px){html.kef-sticky-on #page_top,html.kef-sticky-on .page_top_btn{bottom:84px!important;transition:bottom .2s}}

/* ===========================================================================
   設置面のレイアウト（テーマ側セクション）
   =========================================================================== */

  /* 教室ページ（single-school.php）に差し込む無料体験フォームのセクション。
     .kef 自身が margin-top:8px を持つので、ここで打ち消して上下の余白を padding だけで揃える。 */
  .p-school-trial{padding:64px 0;background:#f7f6f2}
  .p-school-trial .kef{margin-top:0}
  .p-school-trial__inner{padding-left:16px;padding-right:16px}

  /* #freeTrialForm への着地位置。.p-header は position:fixed で 66px / ≥768 80px / ≥1920 150px あり、
     逃がさないとセクション上部がヘッダーの下に潜る。
     教室検索カードの「無料体験を予約」やページ内CTAがこのアンカーを叩く。
     ※ /guarantee 側は guarantee.css が同じ値を指定済み（あちらは is_page('guarantee') 限定で読まれる）。
        このファイルは /guarantee と教室ページの両方で読まれるので、値を変えるときは2箇所を揃えること。 */
  #freeTrialForm{scroll-margin-top:66px}
  @media screen and (min-width:768px){#freeTrialForm{scroll-margin-top:80px}}
  @media screen and (min-width:1920px){#freeTrialForm{scroll-margin-top:150px}}

  /* /guarantee ページ全体（page-guarantee.php）。モックの body 相当 */
  .p-guarantee-lp{background:#f3f2ee;padding:18px 12px 40px}
  .p-guarantee-lp .kf-formsec{max-width:640px;margin:0 auto}
  .p-guarantee-lp .kf-formsec .kf-sec-h{margin-left:0;margin-right:0}

  /* 返金条件の折りたたみ（モックには無い。公開ページから条件が消えないよう残した分） */
  .kf-terms{margin:14px auto 0;max-width:560px;text-align:left}
  .kf-terms > summary{cursor:pointer;list-style:none;text-align:center;font-size:.85rem;font-weight:700;
    color:var(--c-accent);padding:8px 0;text-decoration:underline}
  .kf-terms > summary::-webkit-details-marker{display:none}
  .kf-terms > summary::after{content:" ▼";font-size:.7em;text-decoration:none}
  .kf-terms[open] > summary::after{content:" ▲"}
  .kf-terms ul{margin:6px 0 0;padding:0 0 0 1.2em;display:grid;gap:8px}
  .kf-terms li{font-size:.8rem;color:#666;line-height:1.75}

/* ===========================================================================
   CF7対応: Contact Form 7 が出力するDOMをモックの見た目に合わせる
   （モックは独自フォームだったため、以下はテーマ移植時の追加分）
   =========================================================================== */

  /* CF7は各フィールドを span.wpcf7-form-control-wrap（inline）で包む。
     ブロック化しないと width:100% と .kef-select の▽疑似要素が破綻する。 */
  .kef .wpcf7-form-control-wrap{display:block;position:relative}
  .kef form.wpcf7-form{margin:0}
  /* CF7が wpautop で挿入する裸の <p> の余白を消す。
     ただしクラスを持つ <p>（.kef-privacy / .kef-steps / .hint / .err-msg など）は
     こちらで意図的に余白を設計しているので対象から外す。
     （:not([class]) を付けないと .kef-privacy の margin-top が詳細度で負けて 0 になる） */
  .kef form.wpcf7-form p:not([class]){margin:0}

  /* 親テーマの .p-form 系スタイルが当たらないよう、CF7既定の装飾を打ち消す */
  .kef .wpcf7-form-control{box-shadow:none}

  /* サーバー側（CF7）の入力不備メッセージ。独自の .err-msg と同じ見た目に揃える */
  .kef .wpcf7-not-valid-tip{color:var(--c-err);font-size:.88rem;font-weight:700;margin:8px 0 0;display:block}
  .kef .wpcf7-not-valid-tip::before{content:"\26A0 "}
  .kef .wpcf7-form-control.wpcf7-not-valid{border-color:var(--c-err);background:#fff6f6}

  /* フォーム全体のレスポンス（送信エラー・スパム・メール失敗）。
     成功時は .kef-done を出すのでCF7の成功メッセージ自体は非表示にする。 */
  .kef .wpcf7-response-output{margin:16px 0 0;padding:12px 14px;border-radius:8px;font-size:.9rem;font-weight:700;line-height:1.7;border:2px solid var(--c-err);color:var(--c-err);background:#fff6f6}
  .kef form.wpcf7-form.sent .wpcf7-response-output{display:none}

  /* 送信中インジケータ。
     CF7のスピナーは待機中も visibility:hidden で残るだけなので、display:block にすると
     見えないまま 高さ24px＋上マージン12px＝36px の余白をボタンの下に作ってしまう。
     送信中（CF7がフォームに .submitting を付ける）だけ場所を取らせる。 */
  .kef .wpcf7-spinner{display:none}
  .kef form.submitting .wpcf7-spinner{display:block;margin:16px auto 0}

  /* 送信ボタン。CF7の [submit] は <input> を出すため ::after（矢印）が使えない。
     モックと同じ見た目にするため、矢印は背景画像として要素自身に描く。
     ※ red-arrow.png は 144x144 の正方形。幅基準（4.4375rem = 68.16px）で指定すると
        描画高さも 68.16px になり、ボタン高さ 68px を超えて円がボタンからはみ出して見える。
        モックの ::after は height:calc(100% - .625rem) と上下5pxの余裕を持っていたので、
        **高さ基準**で指定して同じクリアランスを再現する。 */
  .kef input.cta[type=submit]{width:100%;display:block;
    background-image:url(../images/common/red-arrow.png);
    background-repeat:no-repeat;
    background-position:right .3125rem center;
    background-size:auto calc(100% - .625rem)}
  .kef input.cta[type=submit]::after{content:none}
  /* 無効時は矢印を出さない。padding-right(74px) は矢印の場所を空けるためのものなので、
     そのままだとラベルが 17px 左に寄って見える。左右を揃えて中央に戻す。
     （有効時にラベルが左へ寄るのは、矢印に場所を譲るモック本来の意図どおり） */
  .kef input.cta[type=submit]:disabled{background-color:#e7e7e7;background-image:none;
    padding-left:40px;padding-right:40px}

  /* acceptance（プライバシーポリシー同意）はチェックボックスなので個別に整える。
     素の input[type=checkbox] はテーマが display:none にし、隣接 span の
     ::before / ::after で描画している。そのテーマ既定が SP 12px → PC 21px と
     跳ねるため、.kef 内では前後の文言と同じ .86rem に統一し、
     チェックボックスの箱と✓も font-size に依存しない自前の値で描き直す。 */
  .kef .kef-consent{margin:14px 0 0;text-align:center;font-size:.86rem;color:#555}
  .kef .kef-consent .wpcf7-form-control-wrap{display:inline-block}
  .kef .kef-consent .wpcf7-list-item{margin:0}
  .kef .kef-consent .wpcf7-list-item-label{font-size:inherit;line-height:1.6;padding-left:26px}
  .kef .kef-consent .wpcf7-list-item-label::before{
    top:50%;bottom:auto;transform:translateY(-50%);
    width:18px;height:18px;border-radius:4px;border-color:#9a9a9a}
  .kef .kef-consent input[type=checkbox]:checked + .wpcf7-list-item-label::after{
    left:6px;top:50%;bottom:auto;width:6px;height:11px;
    transform:translateY(-55%) rotateZ(45deg);
    border-bottom:2px solid var(--c-accent);border-right:2px solid var(--c-accent)}
  .kef .kef-consent.is-invalid{color:var(--c-err)}
  .kef .kef-consent.is-invalid .wpcf7-list-item-label::before{
    border-color:var(--c-err);box-shadow:0 0 0 2px rgba(214,69,69,.25)}
