/* =====================================================================
 * pickles 埋め込みフォームの見た目をテンプレートに合わせる
 * （高木さん指示 2026-08-14「フォームだけ極端に品質が低い」）
 *
 * ── なぜ CSS を自分で書いているのか ──
 * ふだんは購入テンプレートの markup をそのまま貼るのが原則（.claude/rules/design.md）。
 * ただしこのフォームの DOM は **pickles 側の embed.js が実行時に組み立てる**ので、
 * 貼れる markup が存在しない。そこで
 * **「値はすべてテンプレートかブランドファイルから転記し、自分では決めない」**
 * という形で原則を守っている。転記元は各ブロックのコメントに書いた。
 * 主な転記元は購入テンプレート `ai-software/contact.html` の contact form
 * （2433〜2553行）＝ /contact の器と同じページのフォーム。
 *
 * ── 詳細度について（重要）──
 * pickles の embed.js は自前の CSS を **実行時に `<head>` の末尾へ足す**ので、
 * この静的な <link> より必ず後に来る。同じ詳細度では負けるため、
 * すべてのセレクタを **`.pickles-form-embed` の子孫として書いて詳細度を1つ上げている**
 * （0-2-0 対 0-1-0）。`!important` は使わない。
 * `.pickles-form-embed` は PicklesForm.astro が出す器の class。
 *
 * ── 読み込み方 ──
 * フォームを置く4ページ（/contact・/demo・/documents・/partners）が
 * `stylesheets={['/assets/pickles-form.css']}` で読む。全ページ共通にはしない
 * （フォームの無いページで1リクエスト増やさない）。
 * ===================================================================== */

/* ---------------------------------------------------------------------
 * フォーム全体
 * 転記元: <form class="space-y-8">（項目間 32px）／器の白カードは
 * ページ側が持っているので、ここでは幅の制限を外すだけ。
 * embed 既定の max-width:560px は 847px のカードの中で左に寄って見える。
 * ------------------------------------------------------------------- */
.pickles-form-embed .pickles-form {
  max-width: none;
  gap: calc(var(--spacing) * 8); /* space-y-8 = 32px */
  font-size: var(--text-tagline-2);
  line-height: 150%;
  color: var(--color-secondary);
}

/* 転記元: <div class="space-y-2">（ラベル → 入力 8px） */
.pickles-form-embed .pickles-form__field {
  gap: calc(var(--spacing) * 2);
}

/* ---------------------------------------------------------------------
 * ラベルと補足
 * 転記元: <label class="text-tagline-2 text-secondary block font-medium">
 * 補足文は流用元に相当物が無いので、同じフォームの規約文
 * （text-tagline-3 text-secondary/60）の値を使う。
 * ------------------------------------------------------------------- */
.pickles-form-embed .pickles-form__label {
  font-size: var(--text-tagline-2);
  line-height: 150%;
  font-weight: 500;
  color: var(--color-secondary);
}

.pickles-form-embed .pickles-form__desc {
  margin: 0;
  font-size: var(--text-tagline-3);
  line-height: 150%;
  font-weight: 400;
  color: color-mix(in oklab, var(--color-secondary) 60%, transparent);
  white-space: pre-line;
}

/* ---------------------------------------------------------------------
 * 必須マーク
 * embed 既定は赤い「*」。19問中5問しか必須が無いフォームなので、
 * **どれが必須かが一目で分かる形にした**（和文の申込フォームの通例）。
 * ここはテンプレートに相当物が無く、こちらで決めた数少ない箇所。
 * 色はブランドパレットのアプリコット（面に使う色）＋インク文字＝実測 8.4:1。
 * 余白はテンプレートの spacing ステップ（4px 刻み）だけを使う。
 * ------------------------------------------------------------------- */
.pickles-form-embed .pickles-form__req {
  font-size: 0;
  line-height: 0;
  vertical-align: middle;
}

.pickles-form-embed .pickles-form__req::after {
  content: '必須';
  display: inline-block;
  margin-left: calc(var(--spacing) * 2);
  padding: calc(var(--spacing) * 0.5) calc(var(--spacing) * 2);
  border-radius: 3.40282e38px;
  background-color: var(--brand-apricot);
  color: var(--brand-ink);
  font-size: var(--text-tagline-3);
  line-height: 150%;
  font-weight: 500;
}

/* ---------------------------------------------------------------------
 * 入力欄
 * 転記元: <input class="border-stroke-3 bg-background-1 text-tagline-2
 *   placeholder:text-secondary/60 focus:border-secondary h-[48px] w-full
 *   rounded-full border px-[18px] py-3 font-normal focus:outline-none xl:h-[41px]">
 *
 * **`xl:h-[41px]` は採らず 48px で通している。** 流用元は英文3項目の
 * 短いフォームで、41px だと 14px / 行間150%（＝21px）＋上下 padding 12px が
 * 収まらない（41 - 24 - 2 = 15px）。和文19問のこのフォームでは字が窮屈になる。
 * 値そのものはテンプレートが持っている2つ（48 / 41）のうちの一方。
 * ------------------------------------------------------------------- */
.pickles-form-embed .pickles-form__input,
.pickles-form-embed .pickles-form__select,
.pickles-form-embed .pickles-form__textarea {
  width: 100%;
  box-sizing: border-box;
  border: 1px solid var(--color-stroke-3);
  background-color: var(--color-background-1);
  padding: calc(var(--spacing) * 3) 18px; /* py-3 / px-[18px] */
  font-size: var(--text-tagline-2);
  line-height: 150%;
  font-weight: 400;
  color: var(--color-secondary);
  transition: border-color 0.2s var(--ease-in-out);
}

.pickles-form-embed .pickles-form__input,
.pickles-form-embed .pickles-form__select {
  height: 48px;
  border-radius: 3.40282e38px; /* rounded-full */
}

/* 転記元: <textarea class="… rounded-xl border px-[18px] py-3" rows="7"> */
.pickles-form-embed .pickles-form__textarea {
  border-radius: var(--radius-xl);
  min-height: 120px;
  resize: vertical;
}

/* 流用元の「Write message」と同じ 7行分を、いちばん厚く書いてほしい設問にだけ与える。
 * 21px（行間）× 7 ＋ padding 24px ＋ 枠 2px = 173px。
 * `#pf_vision` はフォーム項目のキー（embed.js が `pf_<name>` で id を振る）。
 * 項目名が変わったら単に既定の 120px に戻るだけで、崩れはしない。 */
.pickles-form-embed .pickles-form__textarea#pf_vision {
  min-height: 173px;
}

.pickles-form-embed .pickles-form__input::placeholder,
.pickles-form-embed .pickles-form__textarea::placeholder {
  color: color-mix(in oklab, var(--color-secondary) 60%, transparent);
  font-weight: 400;
}

/* 転記元: focus:border-secondary / focus:outline-none */
.pickles-form-embed .pickles-form__input:focus,
.pickles-form-embed .pickles-form__select:focus,
.pickles-form-embed .pickles-form__textarea:focus {
  outline: none;
  border-color: var(--color-secondary);
  box-shadow: none;
}

/* キーボード操作の人には枠だけだと弱いので、フォーカスリングは :focus-visible に残す。
 * 色はインク（--color-secondary）で、ホバー・クリック時には出ない。 */
.pickles-form-embed .pickles-form__input:focus-visible,
.pickles-form-embed .pickles-form__select:focus-visible,
.pickles-form-embed .pickles-form__textarea:focus-visible {
  outline: 2px solid var(--color-secondary);
  outline-offset: 2px;
}

/* プルダウンの矢印。素の select は OS 既定の見た目になり、丸い枠から浮く。
 * 矢印の形はヘッダーのナビが使っているものと同じパス（TemplateHeader.astro の
 * nav-arrow）。テンプレートも CSS に data URI で SVG を持つ書き方をしている
 * （template-utilities.css の .btn-white:before）。 */
.pickles-form-embed .pickles-form__select {
  appearance: none;
  padding-right: 44px;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 24 24' stroke='%231e1e16' stroke-width='1.5'%3E%3Cpath stroke-linecap='round' stroke-linejoin='round' d='m19.5 8.25-7.5 7.5-7.5-7.5'/%3E%3C/svg%3E");
  background-repeat: no-repeat;
  background-position: right 18px center;
  background-size: 16px 16px;
}

/* ---------------------------------------------------------------------
 * チェックボックス・ラジオ
 * 転記元: 同フォームの規約チェック（2526〜2540行）。
 *   枠  = size-4 rounded-full border border-stroke-3
 *   中身 = after:size-2.5 rounded-full bg-primary-500
 *   選択時 = peer-checked:border-primary-500
 *
 * **色だけ `--brand-ink-green` に差し替えている。** ブランド刷新で
 * `--color-primary-500` はピクルグリーン（白地 1.8:1）になり、
 * 10px の点と 1px の枠では選択状態が見えない。brand-2026.css が
 * `.text-primary-500` に対して同じ差し替えをしているのと同じ理由・同じ値
 * （白地 8.2:1）。
 * ------------------------------------------------------------------- */
.pickles-form-embed .pickles-form__check {
  display: flex;
  align-items: flex-start;
  gap: calc(var(--spacing) * 3); /* gap-x-3 = 12px */
  font-size: var(--text-tagline-2);
  line-height: 150%;
  font-weight: 400;
  color: var(--color-secondary);
  cursor: pointer;
}

.pickles-form-embed .pickles-form__check input[type='checkbox'],
.pickles-form-embed .pickles-form__check input[type='radio'] {
  appearance: none;
  flex: none;
  width: calc(var(--spacing) * 4); /* size-4 = 16px */
  height: calc(var(--spacing) * 4);
  margin: 3px 0 0; /* 21px の行の中で1行目の中心に来る位置 */
  border: 1px solid var(--color-stroke-3);
  border-radius: 3.40282e38px;
  background-color: var(--color-background-1);
  display: grid;
  place-content: center;
  cursor: pointer;
  transition: border-color 0.2s var(--ease-in-out);
}

.pickles-form-embed .pickles-form__check input:checked {
  border-color: var(--brand-ink-green);
}

.pickles-form-embed .pickles-form__check input:checked::before {
  content: '';
  width: calc(var(--spacing) * 2.5); /* size-2.5 = 10px */
  height: calc(var(--spacing) * 2.5);
  border-radius: 3.40282e38px;
  background-color: var(--brand-ink-green);
}

.pickles-form-embed .pickles-form__check input:focus-visible {
  outline: 2px solid var(--color-secondary);
  outline-offset: 2px;
}

/* 複数選択・ラジオの並び。
 * **ここもテンプレートに前例が無い。** 選択肢が最大12個ある設問があり、
 * 1列に積むとフォームが縦に伸びすぎるので、器が広いときだけ2列にしている。
 * 折り返しの基準（40rem）は Tailwind の sm と同じ値。 */
.pickles-form-embed .pickles-form__checks,
.pickles-form-embed .pickles-form__radios {
  display: grid;
  grid-template-columns: 1fr;
  gap: calc(var(--spacing) * 2);
}

@media (width >= 40rem) {
  .pickles-form-embed .pickles-form__checks,
  .pickles-form-embed .pickles-form__radios {
    grid-template-columns: repeat(2, minmax(0, 1fr));
    column-gap: calc(var(--spacing) * 6);
  }
}

/* ---------------------------------------------------------------------
 * プライバシー同意
 * 転記元: 規約行（text-tagline-3 text-secondary/60・リンクは下線）。
 * リンクの色は brand-2026.css の `.text-primary-500` と同じ差し替え。
 * ------------------------------------------------------------------- */
.pickles-form-embed .pickles-form__privacy .pickles-form__check {
  font-size: var(--text-tagline-3);
  color: color-mix(in oklab, var(--color-secondary) 60%, transparent);
}

.pickles-form-embed .pickles-form__privacy a {
  color: var(--brand-ink-green);
  text-decoration: underline;
}

/* ---------------------------------------------------------------------
 * 送信ボタン
 * 転記元: <button class="btn btn-md btn-secondary hover:btn-primary w-full">
 *   .btn      … rounded-full / border 1px / text-align center / nowrap / 0.5s
 *   .btn-md   … min-width 90px / padding 10px 20px / text-tagline-2
 *   .btn-secondary … bg secondary / color white / border black / 影
 *
 * **ホバーだけ流用元と変えている。** `hover:btn-primary` は
 * 「primary-500 の地に白文字」で、ブランド刷新後は白 on ピクルグリーン＝1.8:1 になり
 * 文字が消える。代わりに brand-2026.css がヘッダー CTA 用に定めている
 * 「ピクルグリーンの地にインク文字」（実測 約9:1）を使う。**新しい色は作っていない。**
 * ------------------------------------------------------------------- */
.pickles-form-embed .pickles-form__submit {
  align-self: stretch;
  width: 100%;
  min-width: 90px;
  padding: calc(var(--spacing) * 2.5) calc(var(--spacing) * 5); /* 10px 20px */
  border: 1px solid var(--color-black);
  border-radius: 3.40282e38px;
  background-color: var(--color-secondary);
  color: var(--color-white);
  box-shadow: 0px 1px 2px 0px #1018280d;
  font-size: var(--text-tagline-2);
  line-height: 150%;
  font-weight: 400;
  text-align: center;
  text-wrap: nowrap;
  cursor: pointer;
  transition: all 0.5s var(--ease-in-out);
}

.pickles-form-embed .pickles-form__submit:hover:not(:disabled) {
  border-color: var(--brand-pickle-green);
  background-color: var(--brand-pickle-green);
  color: var(--brand-ink);
}

.pickles-form-embed .pickles-form__submit:disabled {
  opacity: 0.5;
  cursor: default;
}

/* ---------------------------------------------------------------------
 * エラー・完了メッセージ
 * 角丸だけ入力欄と揃える。赤はエラー表示の慣習で、ブランドに該当色が無いので
 * embed 既定のままにしている。
 * ------------------------------------------------------------------- */
.pickles-form-embed .pickles-form__error,
.pickles-form-embed .pickles-form__success {
  border-radius: var(--radius-xl);
  padding: calc(var(--spacing) * 3) 18px;
  font-size: var(--text-tagline-2);
  line-height: 150%;
}
