/* テーマの文字設定を引き継ぎ、色はこの3変数で調整できます */
.ssf-form {
	--ssf-accent: #1f5f8b;
	--ssf-line: #c9cfd6;
	--ssf-error: #b3261e;
	--ssf-width: 760px;
	box-sizing: border-box;
	width: 100%;
	max-width: calc(var(--ssf-width) + 32px);
	margin: 0 auto 2em !important;
	padding: 0 16px;
	text-align: left;
}
.ssf-form *, .ssf-form *::before, .ssf-form *::after { box-sizing: border-box; }
.ssf-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 1.25em 1.5em; }
.ssf-full { grid-column: 1 / -1; }
.ssf-half { grid-column: span 1; }

.ssf-section { padding-top: .75em; border-top: 2px solid var(--ssf-accent); }
.ssf-grid > .ssf-section:first-child { border-top: 0; padding-top: 0; }
.ssf-section-title { margin: 0 0 .25em; font-size: 1.15em; }
.ssf-section-text { margin: 0; }
.ssf-form [hidden] { display: none !important; }
.ssf-form a { color: var(--ssf-accent); text-decoration: underline; }

.ssf-field { margin: 0; min-width: 0; }
.ssf-set { border: 0; margin: 0; padding: 0; min-width: 0; }
.ssf-label { display: flex; align-items: center; gap: .5em; font-weight: 700; margin-bottom: .4em; padding: 0; }
.ssf-req, .ssf-opt { font-size: .72em; font-weight: 700; padding: .1em .55em; border-radius: 2px; line-height: 1.6; flex: none; }
.ssf-req { background: var(--ssf-error); color: #fff; }
.ssf-opt { background: #e8ebee; color: #444; }

.ssf-form input[type="text"], .ssf-form input[type="email"], .ssf-form input[type="tel"],
.ssf-form input[type="number"], .ssf-form input[type="date"], .ssf-form select, .ssf-form textarea {
	width: 100%; max-width: 100%; font: inherit; font-size: max(16px, 1em);
	padding: .65em .75em; border: 1px solid var(--ssf-line); border-radius: 4px; background: #fff; color: inherit;
}
.ssf-form input[type="file"] { font: inherit; max-width: 100%; padding: .5em 0; }
.ssf-form :is(input, select, textarea):focus-visible { outline: 3px solid color-mix(in srgb, var(--ssf-accent) 35%, transparent); outline-offset: 1px; border-color: var(--ssf-accent); }

.ssf-choices { display: flex; flex-wrap: wrap; gap: .4em 1.25em; }
.ssf-choice { display: inline-flex; align-items: flex-start; gap: .45em; cursor: pointer; padding: .2em 0; }
.ssf-choice input { margin-top: .3em; width: 1.1em; height: 1.1em; accent-color: var(--ssf-accent); flex: none; }
.ssf-consent { padding: .9em 1em; border: 1px solid var(--ssf-line); border-radius: 4px; width: 100%; }
.ssf-consent .ssf-req { margin-left: auto; }

.ssf-filelist { list-style: none; margin: .25em 0 0; padding: 0; }
.ssf-filelist li { display: flex; align-items: center; justify-content: space-between; gap: 1em; padding: .45em .75em; border: 1px solid var(--ssf-line); border-radius: 4px; margin-top: .35em; word-break: break-all; }
.ssf-filedel { font: inherit; font-size: .85em; background: none; border: 1px solid var(--ssf-line); border-radius: 3px; padding: .25em .7em; cursor: pointer; color: inherit; flex: none; }
.ssf-filedel:hover { border-color: var(--ssf-error); color: var(--ssf-error); }
.ssf-help { margin: .35em 0 0; font-size: .85em; color: #5b6168; }
.ssf-error { margin: .35em 0 0; font-size: .875em; font-weight: 700; color: var(--ssf-error); }
.ssf-field.has-error :is(input, select, textarea) { border-color: var(--ssf-error); background: #fff7f6; }
.ssf-field.has-error .ssf-consent { border-color: var(--ssf-error); }

.ssf-hp { position: absolute !important; left: -9999px !important; width: 1px; height: 1px; overflow: hidden; }

.ssf-message:empty { display: none; }
.ssf-message { margin: 1.5em 0 0; padding: .85em 1em; border-radius: 4px; border-left: 4px solid; }
.ssf-message.is-info { border-color: var(--ssf-accent); background: #eef4f8; }
.ssf-message.is-error { border-color: var(--ssf-error); background: #fdf0ef; color: var(--ssf-error); font-weight: 700; }

.ssf-actions { margin-top: 1.5em; }
.ssf-submit {
	font: inherit; font-weight: 700; font-size: 1.05em; min-width: 14em; padding: .85em 2em;
	background: var(--ssf-accent); color: #fff; border: 0; border-radius: 4px; cursor: pointer;
}
.ssf-submit:hover { filter: brightness(1.1); }
.ssf-submit:focus-visible { outline: 3px solid color-mix(in srgb, var(--ssf-accent) 40%, transparent); outline-offset: 2px; }
.ssf-submit:disabled { opacity: .6; cursor: wait; }
.ssf-secure { margin: .6em 0 0; font-size: .8em; color: #5b6168; }
.ssf-alert { padding: .75em 1em; background: #fdf0ef; color: var(--ssf-error); border-radius: 4px; }

.ssf-done {
	box-sizing: border-box; max-width: 760px; margin: 0 auto 2em; text-align: left; padding: 1.5em; border: 2px solid #2e7d4f; border-radius: 4px; background: #f1f8f3;
	white-space: pre-line; font-weight: 700;
}

@media (max-width: 640px) {
	.ssf-grid { grid-template-columns: 1fr; }
	.ssf-half { grid-column: 1 / -1; }
	.ssf-submit { width: 100%; }
}
@media (prefers-reduced-motion: reduce) { .ssf-form * { scroll-behavior: auto !important; } }

/* 説明文：テーマ側の段落・リンク設定に影響されず、文中リンクを1行に収める */
.ssf-form .ssf-rich { display: block !important; white-space: normal; }
.ssf-form .ssf-rich a, .ssf-form .ssf-rich strong, .ssf-form .ssf-rich span { display: inline !important; float: none !important; width: auto !important; margin: 0 !important; padding: 0 !important; }
.ssf-form .ssf-help.ssf-rich { margin: .35em 0 0 !important; font-size: .85em; color: #5b6168; }

/* リンクボタン */
.ssf-links { display: flex; flex-wrap: wrap; gap: .5em; margin-top: .75em; }
.ssf-form a.ssf-linkbtn {
	display: inline-flex !important; align-items: center; min-height: 2.6em; padding: .45em 1.1em !important;
	border: 1.5px solid var(--ssf-accent); border-radius: 999px; background: #fff; color: var(--ssf-accent);
	font-weight: 700; font-size: .92em; line-height: 1.3; text-decoration: none !important;
}
.ssf-form a.ssf-linkbtn:hover { background: var(--ssf-accent); color: #fff; }
.ssf-form a.ssf-linkbtn:focus-visible { outline: 3px solid color-mix(in srgb, var(--ssf-accent) 35%, transparent); outline-offset: 2px; }

/* お知らせ */
.ssf-note { padding: 1em 1.2em; border-left: 4px solid var(--ssf-accent); background: #eef4f8; border-radius: 0 4px 4px 0; }
.ssf-note-title { font-weight: 700; margin-bottom: .35em; }
.ssf-note-text { line-height: 1.8; }

@media (max-width: 640px) {
	.ssf-links { display: grid; grid-template-columns: 1fr 1fr; }
	.ssf-form a.ssf-linkbtn { justify-content: center; text-align: center; }
}

/* ---- 同意欄（個人情報の取扱い等）を分かりやすく：控えめな青系 ---- */
.ssf-consent {
	background: #f2f6f9;
	background: color-mix(in srgb, var(--ssf-accent) 6%, #fff);
	border: 1px solid #bfd0dd;
	border-color: color-mix(in srgb, var(--ssf-accent) 30%, #fff);
	border-left: 4px solid var(--ssf-accent);
	border-radius: 6px;
	padding: 1em 1.1em;
}
.ssf-consent label { font-weight: 600; cursor: pointer; }
.ssf-consent input[type="checkbox"] { width: 1.3em; height: 1.3em; cursor: pointer; }
.ssf-consent:has(input:checked) { background: #e9f1f6; background: color-mix(in srgb, var(--ssf-accent) 11%, #fff); }
.ssf-consent:has([aria-invalid="true"]) {
	border-color: #e6b8b5;
	border-left-color: var(--ssf-error);
	background: #fcf3f2;
}
