.rswf-form-wrap {
	max-width: 720px;
	--rswf-radius: 10px;
	--rswf-spacing: 18px;
	--rswf-font-size: 15px;
	--rswf-button-bg: #2b3447;
	--rswf-button-fg: #ffffff;
	--rswf-button-accent: #c9a25f;
	--rswf-input-bg: #fbf5e1;
	--rswf-input-fg: #2b3447;
	--rswf-input-border: transparent;
	--rswf-label-fg: #2b3447;
	--rswf-required: #c44b22;
	--rswf-help-fg: #6b6258;
	font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
	font-size: var(--rswf-font-size);
	color: var(--rswf-input-fg);
	line-height: 1.45;
}

/* Dark-mode flag (independent of theme) */
.rswf-form-wrap.rswf-mode-dark {
	--rswf-input-bg: #1d2435;
	--rswf-input-fg: #e8ecf1;
	--rswf-input-border: #2b3447;
	--rswf-label-fg: #e8ecf1;
	--rswf-required: #fb7185;
	--rswf-help-fg: #94a3b8;
}

/* Theme: Elegant Cream (default) */
.rswf-form-wrap.rswf-theme-elegant {
	--rswf-input-bg: #fbf5e1;
	--rswf-input-border: transparent;
	--rswf-button-bg: #2b3447;
	--rswf-button-fg: #ffffff;
	--rswf-button-accent: #c9a25f;
	--rswf-required: #c44b22;
	--rswf-label-fg: #2b3447;
}

/* Theme: Midnight — dark, edgy, teal accent */
.rswf-form-wrap.rswf-theme-midnight {
	--rswf-input-bg: #1d2435;
	--rswf-input-fg: #e2e8f0;
	--rswf-input-border: #2b3447;
	--rswf-button-bg: #14b8a6;
	--rswf-button-fg: #0a0f1c;
	--rswf-button-accent: #fbbf24;
	--rswf-required: #fb7185;
	--rswf-label-fg: #e2e8f0;
	--rswf-help-fg: #94a3b8;
}

/* Theme: Classic Blue — the original look */
.rswf-form-wrap.rswf-theme-default {
	--rswf-input-bg: #ffffff;
	--rswf-input-border: #c8d0d8;
	--rswf-button-bg: #155eef;
	--rswf-button-accent: transparent;
	--rswf-required: #b42318;
	--rswf-label-fg: #1f2933;
}

.rswf-form-wrap.rswf-theme-minimal {
	--rswf-input-bg: #ffffff;
	--rswf-input-border: #d0d5dd;
	--rswf-button-bg: #111827;
	--rswf-button-accent: transparent;
	--rswf-label-fg: #111827;
}

.rswf-form-wrap.rswf-theme-rounded {
	--rswf-input-bg: #f5f3ff;
	--rswf-input-border: transparent;
	--rswf-button-bg: #7c3aed;
	--rswf-button-accent: transparent;
	--rswf-label-fg: #1f1538;
}

.rswf-form-wrap.rswf-theme-forest {
	--rswf-input-bg: #f0fdf4;
	--rswf-input-border: transparent;
	--rswf-button-bg: #059669;
	--rswf-button-accent: transparent;
	--rswf-label-fg: #064e3b;
}

.rswf-form {
	display: grid;
	grid-template-columns: repeat(12, minmax(0, 1fr));
	gap: var(--rswf-spacing);
}

.rswf-title {
	margin: 0 0 4px;
	grid-column: 1 / -1;
	color: var(--rswf-label-fg);
	font-weight: 700;
	font-size: 1.4em;
}

.rswf-form > .rswf-submit,
.rswf-form > .rswf-notice {
	grid-column: 1 / -1;
}

.rswf-field {
	display: grid;
	gap: 7px;
	min-width: 0;
	grid-column: span 12;
}

.rswf-w-full { grid-column: span 12; }
.rswf-w-two-thirds { grid-column: span 8; }
.rswf-w-half { grid-column: span 6; }
.rswf-w-third { grid-column: span 4; }

@media (max-width: 540px) {
	.rswf-w-two-thirds, .rswf-w-half, .rswf-w-third {
		grid-column: span 12;
	}
}

.rswf-field label,
.rswf-field legend {
	font-weight: 700;
	color: var(--rswf-label-fg);
	font-size: 0.95em;
	letter-spacing: 0.005em;
	margin: 0;
}

.rswf-help-text {
	margin: 2px 0 0;
	font-size: 0.85em;
	color: var(--rswf-help-fg);
}

.rswf-field input[type="text"],
.rswf-field input[type="email"],
.rswf-field input[type="tel"],
.rswf-field input[type="number"],
.rswf-field input[type="date"],
.rswf-field input[type="url"],
.rswf-field input[type="file"],
.rswf-field select,
.rswf-field textarea {
	box-sizing: border-box;
	width: 100%;
	min-height: 46px;
	padding: 12px 16px;
	border: 1px solid var(--rswf-input-border);
	border-radius: var(--rswf-radius);
	background: var(--rswf-input-bg);
	color: var(--rswf-input-fg);
	font: inherit;
	transition: box-shadow 0.15s ease, border-color 0.15s ease;
}

.rswf-field input:focus,
.rswf-field select:focus,
.rswf-field textarea:focus {
	outline: none;
	box-shadow: 0 0 0 3px rgba(43, 52, 71, 0.14);
	border-color: var(--rswf-button-bg);
}

.rswf-field input[type="file"] {
	padding: 10px 14px;
}

.rswf-field textarea {
	min-height: 120px;
	resize: vertical;
}

.rswf-field fieldset {
	display: grid;
	gap: 9px;
	margin: 0;
	padding: 0;
	border: 0;
}

.rswf-choice {
	display: flex;
	gap: 10px;
	align-items: flex-start;
	font-weight: 400;
	color: var(--rswf-label-fg);
}

.rswf-choice input {
	margin-top: 0.25em;
	accent-color: var(--rswf-button-bg);
}

.rswf-required {
	color: var(--rswf-required);
	font-weight: 700;
	margin-left: 3px;
}

/* Submit button — solid color with gold drop-shadow accent for Elegant.
   Other themes opt out via the cascade below. */
.rswf-submit {
	width: fit-content;
	min-height: 44px;
	padding: 10px 30px;
	border: 0;
	border-radius: var(--rswf-radius);
	background: var(--rswf-button-bg);
	color: var(--rswf-button-fg);
	font: inherit;
	font-weight: 700;
	font-size: 0.95em;
	letter-spacing: 0.01em;
	cursor: pointer;
	box-shadow: 3px 3px 0 var(--rswf-button-accent);
	transition: transform 0.12s ease, box-shadow 0.12s ease;
}

.rswf-submit:hover,
.rswf-submit:focus {
	transform: translate(1.5px, 1.5px);
	box-shadow: 1.5px 1.5px 0 var(--rswf-button-accent);
	outline: none;
}

.rswf-submit:active {
	transform: translate(3px, 3px);
	box-shadow: 0 0 0 var(--rswf-button-accent);
}

/* Midnight gets the gold drop-shadow trick too (with its own accent). */
.rswf-theme-midnight .rswf-submit {
	box-shadow: 3px 3px 0 var(--rswf-button-accent);
}

/* Themes without an accent collapse the shadow and use hover-darken instead. */
.rswf-theme-default .rswf-submit,
.rswf-theme-minimal .rswf-submit,
.rswf-theme-rounded .rswf-submit,
.rswf-theme-forest .rswf-submit {
	box-shadow: none;
}

.rswf-theme-default .rswf-submit:hover,
.rswf-theme-minimal .rswf-submit:hover,
.rswf-theme-rounded .rswf-submit:hover,
.rswf-theme-forest .rswf-submit:hover {
	transform: none;
	filter: brightness(0.92);
}

.rswf-notice {
	margin: 0 0 16px;
	padding: 12px 14px;
	border-left: 4px solid;
	border-radius: calc(var(--rswf-radius) / 2);
	background: var(--rswf-input-bg);
	color: var(--rswf-input-fg);
}

.rswf-notice-success { border-color: #12b76a; }
.rswf-notice-error   { border-color: #f04438; }

.rswf-hp {
	position: absolute;
	left: -10000px;
	width: 1px;
	height: 1px;
	overflow: hidden;
}

.rswf-file-status {
	margin: 4px 0 0;
	font-size: 0.85em;
	color: var(--rswf-help-fg);
}

.rswf-file-status-ok    { color: #027a48; }
.rswf-file-status-error { color: var(--rswf-required); }
