/* PubForms: clean, modern field styling that still works in any theme. Fonts and page colours come
   from the theme; this file gives the inputs and buttons a soft, contemporary finish. Override the
   accent by redefining --pubforms-accent (and optionally --pubforms-bg / --pubforms-text) in your own CSS. */
.pubforms {
	--pubforms-text: #1f2937;
	--pubforms-muted: #6b7280;
	--pubforms-border: #d9dee5;
	--pubforms-gap: 1.35em;
	--pubforms-pad: .7em .9em;
	--pubforms-card-pad: 2em;
	--pubforms-font: 1em;
	--pubforms-radius: 14px;
	--pubforms-control-radius: 9px;
	box-sizing: border-box; max-width: var(--pubforms-maxw, 640px); margin: 0 auto 1.5em; padding: var(--pubforms-card-pad) var(--pubforms-card-pad) calc(var(--pubforms-card-pad) * .8); font-size: var(--pubforms-font);
	background: var(--pubforms-bg, #fff); color: var(--pubforms-text);
	border: 1px solid #e5e7eb; border-top: 4px solid var(--pubforms-accent, #2563eb); border-radius: var(--pubforms-radius);
	box-shadow: 0 1px 2px rgba(16, 24, 40, .05), 0 12px 32px -12px rgba(16, 24, 40, .18);
}
.pubforms *, .pubforms *::before, .pubforms *::after { box-sizing: border-box; }
.pubforms-form { display: flex; flex-wrap: wrap; }
.pubforms-field { flex: 0 0 100%; max-width: 100%; box-sizing: border-box; margin: 0 0 var(--pubforms-gap); padding: 0; border: 0; }
.pubforms-width-half { flex-basis: calc(50% - 6px); max-width: calc(50% - 6px); margin-right: 12px; }
.pubforms-width-half:nth-child(even) { margin-right: 0; }
.pubforms-width-third { flex-basis: calc(33.333% - 8px); max-width: calc(33.333% - 8px); margin-right: 12px; }
.pubforms-width-third:nth-child(3n) { margin-right: 0; }
.pubforms-actions { flex: 0 0 100%; }

.pubforms-field > .pubforms-label, .pubforms-field > label { display: block; margin: 0 0 .45em; font-size: .92em; font-weight: 600; letter-spacing: .01em; color: var(--pubforms-text); }
.pubforms-choice { display: block; margin: 0 0 .4em; padding: .55em .75em; border: 1px solid var(--pubforms-border); border-radius: min(var(--pubforms-control-radius), 12px); font-weight: 400; cursor: pointer; transition: border-color .15s ease, background .15s ease; }
.pubforms-choice:hover { border-color: var(--pubforms-accent, #2563eb); }
.pubforms-choice:has( input:checked ) { border-color: var(--pubforms-accent, #2563eb); background: rgba(37, 99, 235, .06); background: color-mix(in srgb, var(--pubforms-accent, #2563eb) 7%, #fff); }
.pubforms-required { color: #b32d2e; }

/* Controls: airy, soft-bordered, with a subtle focus ring. */
.pubforms input[type="text"], .pubforms input[type="email"], .pubforms input[type="tel"],
.pubforms input[type="url"], .pubforms input[type="number"], .pubforms input[type="date"],
.pubforms input[type="time"], .pubforms input[type="week"], .pubforms input[type="month"],
.pubforms select, .pubforms textarea {
	width: 100%; max-width: 100%; box-sizing: border-box;
	padding: var(--pubforms-pad); border: 1px solid var(--pubforms-border); border-radius: var(--pubforms-control-radius);
	background: #fafbfc; color: var(--pubforms-text); font: inherit; line-height: 1.5;
	transition: border-color .15s ease, box-shadow .15s ease, background .15s ease;
}
.pubforms input::placeholder, .pubforms textarea::placeholder { color: #9ca3af; }
.pubforms input[type="text"]:focus, .pubforms input[type="email"]:focus, .pubforms input[type="tel"]:focus,
.pubforms input[type="url"]:focus, .pubforms input[type="number"]:focus, .pubforms input[type="date"]:focus,
.pubforms input[type="time"]:focus, .pubforms input[type="week"]:focus, .pubforms input[type="month"]:focus,
.pubforms select:focus, .pubforms textarea:focus {
	border-color: var(--pubforms-accent, #2563eb);
	background: #fff;
	outline: none;
	box-shadow: 0 0 0 3px rgba(37, 99, 235, .15);
	box-shadow: 0 0 0 3px color-mix(in srgb, var(--pubforms-accent, #2563eb) 15%, transparent);
}
.pubforms select { cursor: pointer; }
.pubforms textarea { min-height: 8em; resize: vertical; }
.pubforms input[type="checkbox"], .pubforms input[type="radio"] { width: 1.05em; height: 1.05em; accent-color: var(--pubforms-accent, #2563eb); margin-right: .45em; vertical-align: -2px; }
.pubforms-choice input[type="checkbox"], .pubforms-choice input[type="radio"] { margin-right: .45em; }

.pubforms-has-error input, .pubforms-has-error select, .pubforms-has-error textarea { border-color: #b32d2e; background: #fff8f8; }

/* Buttons: a filled primary and quiet secondary. */
.pubforms-submit {
	border: 0; border-radius: var(--pubforms-control-radius); background: var(--pubforms-accent, #2563eb); color: #fff;
	padding: .8em 1.8em; font: inherit; font-weight: 600; letter-spacing: .01em; cursor: pointer; line-height: 1.4;
	box-shadow: 0 1px 2px rgba(16, 24, 40, .12), 0 6px 14px -6px rgba(37, 99, 235, .55);
	box-shadow: 0 1px 2px rgba(16, 24, 40, .12), 0 6px 14px -6px color-mix(in srgb, var(--pubforms-accent, #2563eb) 70%, transparent);
	transition: background .15s ease, transform .04s ease, box-shadow .15s ease;
}
.pubforms-submit:hover {
	background: #1d4ed8;
	background: color-mix(in srgb, var(--pubforms-accent, #2563eb) 85%, #000);
}
.pubforms-submit:active { transform: translateY(1px); }
.pubforms-submit:focus-visible, .pubforms-prev:focus-visible, .pubforms-next:focus-visible { outline: 2px solid var(--pubforms-accent, #2563eb); outline-offset: 2px; }
.pubforms-actions { margin: .4em 0 0; padding-top: 1.1em; border-top: 1px solid #eef0f3; display: flex; gap: .6em; justify-content: flex-end; }
.pubforms-prev, .pubforms-next {
	border: 1px solid var(--pubforms-border); border-radius: var(--pubforms-control-radius); background: #fff; color: var(--pubforms-text);
	padding: .7em 1.3em; font: inherit; cursor: pointer; line-height: 1.4;
}
.pubforms-prev:hover, .pubforms-next:hover { background: #f5f6f8; }

.pubforms-help, .pubforms-error { display: block; margin: .35em 0 0; font-size: .9em; }
.pubforms-help { color: var(--pubforms-muted); }
.pubforms-error { color: #b32d2e; }
.pubforms-section { margin: 1.4em 0 .6em; padding-bottom: .4em; border-bottom: 2px solid #eef0f3; font-size: 1.15em; }
.pubforms-html { margin: 0 0 1em; }
.pubforms-hidden { display: none; }
.pubforms-page[hidden] { display: none; }
.pubforms-progress { margin: 0 0 1.4em; font-size: .85em; font-weight: 600; color: var(--pubforms-muted); }

.pubforms-signature-wrap { border: 1px solid #d4d9e0; border-radius: 7px; background: #fff; }
.pubforms-signature { display: block; width: 100%; height: 150px; cursor: crosshair; touch-action: none; }
.pubforms-signature-clear { margin: .35em .5em .5em; }
.pubforms-width-half .pubforms-signature-wrap { max-width: 100%; }
.pubforms-calculation { padding: .6em .75em; border: 1px solid #d4d9e0; border-radius: 7px; background: #f6f7f9; font-weight: 600; min-height: 1.4em; }

.pubforms-summary { margin: 0 0 1.4em; padding: .8em 1em; border-left: 4px solid #b32d2e; border-radius: 8px; background: #fcf0f1; color: #7a1d1e; }
.pubforms-success { padding: 1.1em 1.3em; border-left: 4px solid #1e8a3d; border-radius: 8px; background: #edfaef; color: #14532d; font-weight: 500; }

/* Hidden spam trap: off-screen rather than display:none so bots still see it. */
.pubforms-trap { position: absolute; left: -9999px; width: 1px; height: 1px; overflow: hidden; }
@media (max-width: 600px) {
	.pubforms { padding: 1.4em 1.1em 1.2em; border-radius: 10px; }
	.pubforms-width-half, .pubforms-width-third { flex-basis: 100%; max-width: 100%; margin-right: 0; }
	.pubforms-actions { justify-content: stretch; }
	.pubforms-submit, .pubforms-next, .pubforms-prev { flex: 1; }
}
@media (prefers-reduced-motion: reduce) {
	.pubforms *, .pubforms *::before, .pubforms *::after { transition: none !important; }
}

/* ---- Per-embed style options (set in the block sidebar or shortcode attributes) ---- */

/* Presets: card (default), outlined, minimal, soft. */
.pubforms-preset-outlined { box-shadow: none; border: 2px solid var(--pubforms-accent, #2563eb); border-top-width: 2px; }
.pubforms-preset-minimal { padding: 0; background: transparent; border: 0; box-shadow: none; border-radius: 0; }
.pubforms-preset-minimal input[type="text"], .pubforms-preset-minimal input[type="email"], .pubforms-preset-minimal input[type="tel"],
.pubforms-preset-minimal input[type="url"], .pubforms-preset-minimal input[type="number"], .pubforms-preset-minimal input[type="date"],
.pubforms-preset-minimal input[type="time"], .pubforms-preset-minimal input[type="week"], .pubforms-preset-minimal input[type="month"],
.pubforms-preset-minimal select, .pubforms-preset-minimal textarea { background: #fff; }
.pubforms-preset-soft { border: 0; background: var(--pubforms-bg, #f4f6fb); background: var(--pubforms-bg, color-mix(in srgb, var(--pubforms-accent, #2563eb) 6%, #fff)); box-shadow: none; }
.pubforms-preset-soft input[type="text"], .pubforms-preset-soft input[type="email"], .pubforms-preset-soft input[type="tel"],
.pubforms-preset-soft input[type="url"], .pubforms-preset-soft input[type="number"], .pubforms-preset-soft input[type="date"],
.pubforms-preset-soft input[type="time"], .pubforms-preset-soft input[type="week"], .pubforms-preset-soft input[type="month"],
.pubforms-preset-soft select, .pubforms-preset-soft textarea { background: #fff; border-color: transparent; }

/* Corners. */
.pubforms-corners-square { --pubforms-radius: 0; --pubforms-control-radius: 0; }
.pubforms-corners-pill { --pubforms-radius: 28px; --pubforms-control-radius: 999px; }
.pubforms-corners-pill textarea, .pubforms-corners-pill .pubforms-signature-wrap, .pubforms-corners-pill .pubforms-calculation { border-radius: 18px; }
.pubforms-no-shadow, .pubforms-no-shadow .pubforms-submit { box-shadow: none; }

/* Button alignment. */
.pubforms-buttonAlign-left .pubforms-actions { justify-content: flex-start; }
.pubforms-buttonAlign-center .pubforms-actions { justify-content: center; }
.pubforms-buttonAlign-full .pubforms-actions { justify-content: stretch; }
.pubforms-buttonAlign-full .pubforms-submit, .pubforms-buttonAlign-full .pubforms-next, .pubforms-buttonAlign-full .pubforms-prev { flex: 1; }

/* ---- Layout: stacked (default, above), grid (two even columns), flow (fields share rows by size) ---- */
.pubforms-layout-grid .pubforms-form, .pubforms-layout-grid .pubforms-page:not([hidden]) {
	display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); column-gap: 1.2em;
}
.pubforms-layout-flow .pubforms-form, .pubforms-layout-flow .pubforms-page:not([hidden]) { display: flex; flex-wrap: wrap; column-gap: 1.2em; }
.pubforms-page { grid-column: 1 / -1; flex: 0 0 100%; min-width: 0; margin: 0; padding: 0; border: 0; }
.pubforms-layout-grid .pubforms-field, .pubforms-layout-flow .pubforms-field { max-width: none; margin-right: 0; }
.pubforms-layout-flow .pubforms-field { flex: 1 1 14em; }
.pubforms-layout-grid .pubforms-field.pubforms-type-textarea, .pubforms-layout-grid .pubforms-field.pubforms-type-radio,
.pubforms-layout-grid .pubforms-field.pubforms-type-quiz, .pubforms-layout-grid .pubforms-field.pubforms-type-checkbox_multi,
.pubforms-layout-grid .pubforms-field.pubforms-type-signature, .pubforms-layout-grid .pubforms-section, .pubforms-layout-grid .pubforms-html, .pubforms-layout-grid .pubforms-actions,
.pubforms-layout-grid .pubforms-summary, .pubforms-layout-grid .pubforms-progress { grid-column: 1 / -1; }
.pubforms-layout-flow .pubforms-field.pubforms-type-textarea, .pubforms-layout-flow .pubforms-field.pubforms-type-radio,
.pubforms-layout-flow .pubforms-field.pubforms-type-quiz, .pubforms-layout-flow .pubforms-field.pubforms-type-checkbox_multi,
.pubforms-layout-flow .pubforms-field.pubforms-type-signature, .pubforms-layout-flow .pubforms-section, .pubforms-layout-flow .pubforms-html { flex-basis: 100%; }

/* Density. */
.pubforms-density-compact { --pubforms-gap: .85em; --pubforms-pad: .45em .7em; --pubforms-card-pad: 1.2em; --pubforms-font: .94em; }
.pubforms-density-compact textarea { min-height: 5.5em; }
.pubforms-density-spacious { --pubforms-gap: 1.9em; --pubforms-pad: .9em 1.1em; --pubforms-card-pad: 2.6em; --pubforms-font: 1.05em; }
.pubforms-density-spacious textarea { min-height: 10em; }

/* Labels beside the controls (wide screens only; on phones they stay above). */
@media (min-width: 601px) {
	.pubforms-labelPosition-left .pubforms-field { display: grid; grid-template-columns: minmax(7em, 30%) minmax(0, 1fr); column-gap: 1em; align-items: center; }
	.pubforms-labelPosition-left .pubforms-field > .pubforms-label, .pubforms-labelPosition-left .pubforms-field > label:first-child:not(.pubforms-choice) { grid-column: 1; grid-row: 1; margin: 0; }
	.pubforms-labelPosition-left .pubforms-field > .pubforms-label { align-self: start; padding-top: .3em; }
	.pubforms-labelPosition-left .pubforms-field > :not(.pubforms-label):not(label:first-child), .pubforms-labelPosition-left .pubforms-field > label.pubforms-choice:first-child { grid-column: 2; }
	.pubforms-labelPosition-left .pubforms-field.pubforms-type-textarea > label:first-child { align-self: start; padding-top: .6em; }
	/* Half and third-width fields are too narrow for a side label, so they keep it above. */
	.pubforms-labelPosition-left .pubforms-width-half, .pubforms-labelPosition-left .pubforms-width-third,
	.pubforms-labelPosition-left.pubforms-layout-grid .pubforms-field, .pubforms-labelPosition-left.pubforms-layout-flow .pubforms-field { display: block; }
	.pubforms-labelPosition-left .pubforms-width-half > label:first-child, .pubforms-labelPosition-left .pubforms-width-third > label:first-child,
	.pubforms-labelPosition-left.pubforms-layout-grid .pubforms-field > label:first-child, .pubforms-labelPosition-left.pubforms-layout-flow .pubforms-field > label:first-child { margin-bottom: .45em; }
}
