:root {
	--gfnf-color-primary: var(--gf-color-primary, #204ce5);
	--gfnf-color-primary-contrast: var(--gf-color-primary-contrast, #fff);
	--gfnf-color-danger: #b91c1c;
	--gfnf-color-border: var(--gf-ctrl-border-color, #d1d5db);
	--gfnf-color-surface: #fff;
	--gfnf-color-text: var(--gf-ctrl-label-color-primary, #111827);
	--gfnf-radius: var(--gf-radius, 0.375rem);
	--gfnf-shadow: 0 1.25rem 3rem rgb(0 0 0 / 25%);
	--gfnf-header-color: var(--gfnf-color-primary);
}

.gfnf-field {
	--gfnf-color-primary: var(--gf-color-primary, #204ce5);
	--gfnf-color-primary-contrast: var(--gf-color-primary-contrast, #fff);
	--gfnf-color-border: var(--gf-ctrl-border-color, #d1d5db);
	--gfnf-color-text: var(--gf-ctrl-label-color-primary, #111827);
	--gfnf-radius: var(--gf-radius, 0.375rem);
	--gfnf-header-color: var(--gfnf-color-primary);
}

/* Nested Form fields are self-describing; hide the GF field label on the frontend. */
.gform_wrapper .gfield--type-nested_form > .gfield_label,
.gform_wrapper .gfield--type-nested_form > legend.gfield_label {
	border: 0 !important;
	clip: rect(0, 0, 0, 0) !important;
	height: 1px !important;
	margin: -1px !important;
	overflow: hidden !important;
	padding: 0 !important;
	position: absolute !important;
	white-space: nowrap !important;
	width: 1px !important;
}

.gform_wrapper .gfield--type-nested_form {
	margin-block-start: 0.5rem;
}

.gfnf-table-wrap {
	margin-block-end: 1rem;
	max-width: 100%;
	overflow-x: auto;
}

.gfnf-table-wrap[hidden],
.gfnf-empty[hidden],
.gfnf-button[hidden] {
	display: none !important;
}

.gfnf-table {
	border-collapse: collapse;
	inline-size: 100%;
	min-inline-size: 30rem;
}

.gfnf-table th,
.gfnf-table td {
	border-block-end: 1px solid var(--gfnf-color-border);
	color: var(--gfnf-color-text);
	padding: 0.75rem;
	text-align: start;
	vertical-align: top;
}

.gfnf-table__actions {
	display: flex;
	flex-wrap: wrap;
	gap: 0.5rem;
}

.gfnf-button,
.gfnf-dialog__close,
.gfnf-link-button {
	align-items: center;
	cursor: pointer;
	display: inline-flex;
	justify-content: center;
	min-block-size: 2.75rem;
	min-inline-size: 2.75rem;
}

.gfnf-button {
	background: var(--gfnf-color-primary);
	border: 1px solid var(--gfnf-color-primary);
	border-radius: var(--gfnf-radius);
	color: var(--gfnf-color-primary-contrast);
	padding: 0.625rem 1rem;
}

.gfnf-button:disabled {
	cursor: not-allowed;
	opacity: 0.55;
}

.gfnf-link-button {
	background: transparent;
	border: 0;
	color: var(--gfnf-color-primary);
	padding: 0.25rem;
	text-decoration: underline;
}

.gfnf-link-button[data-gfnf-delete] {
	color: var(--gfnf-color-danger);
}

.gfnf-button:focus-visible,
.gfnf-dialog__close:focus-visible,
.gfnf-link-button:focus-visible {
	outline: 3px solid currentcolor;
	outline-offset: 2px;
}

.gfnf-empty {
	margin: 0 0 1rem;
	padding-block: 0.75rem;
}

.gfnf-dialog {
	background: transparent;
	border: 0;
	color: var(--gfnf-color-text);
	inline-size: min(48rem, calc(100% - 2rem));
	max-block-size: calc(100dvh - 2rem);
	max-inline-size: none;
	padding: 0;
}

.gfnf-dialog::backdrop {
	background: rgb(17 24 39 / 72%);
}

.gfnf-dialog__surface {
	background: var(--gfnf-color-surface);
	border-radius: var(--gfnf-radius);
	box-shadow: var(--gfnf-shadow);
	max-block-size: calc(100dvh - 2rem);
	overflow: auto;
}

.gfnf-dialog__header {
	align-items: center;
	background: var(--gfnf-header-color, var(--gfnf-color-primary));
	color: var(--gfnf-color-primary-contrast);
	display: flex;
	gap: 1rem;
	justify-content: space-between;
	padding: 1rem 1.25rem;
}

.gfnf-dialog__title {
	color: inherit;
	font-size: 1.25rem;
	line-height: 1.3;
	margin: 0;
}

.gfnf-dialog__close {
	background: transparent;
	border: 0;
	color: inherit;
	font-size: 1.75rem;
	line-height: 1;
	padding: 0;
}

.gfnf-dialog__body {
	padding: 1.25rem;
}

/* WP block library sets border-style:solid on [style*=border-color]; keep child wrappers clean. */
.gfnf-dialog .gform_wrapper {
	border: 0;
}

/*
 * Child forms set their own Orbital defaults on .gform_wrapper. Force the
 * parent block primary color onto nested submit/footer buttons.
 */
.gfnf-dialog .gform_wrapper .gform_button,
.gfnf-dialog .gform_wrapper .gform-theme-button.button-primary,
.gfnf-dialog .gform_wrapper input[type="submit"].gform_button,
.gfnf-dialog .gform_wrapper button.gform_button {
	background-color: var(--gfnf-color-primary, var(--gf-color-primary, #204ce5));
	border-color: var(--gfnf-color-primary, var(--gf-color-primary, #204ce5));
	color: var(--gfnf-color-primary-contrast, var(--gf-color-primary-contrast, #fff));
}

.gfnf-dialog .gform_wrapper .gform_button:hover,
.gfnf-dialog .gform_wrapper .gform_button:focus-visible,
.gfnf-dialog .gform_wrapper input[type="submit"].gform_button:hover,
.gfnf-dialog .gform_wrapper input[type="submit"].gform_button:focus-visible,
.gfnf-dialog .gform_wrapper button.gform_button:hover,
.gfnf-dialog .gform_wrapper button.gform_button:focus-visible {
	background-color: var(--gf-color-primary-darker, var(--gfnf-color-primary, var(--gf-color-primary, #204ce5)));
	border-color: var(--gf-color-primary-darker, var(--gfnf-color-primary, var(--gf-color-primary, #204ce5)));
	color: var(--gfnf-color-primary-contrast, var(--gf-color-primary-contrast, #fff));
}

.gfnf-admin-warning,
.gfnf-error {
	background: #fff7ed;
	border-inline-start: 0.25rem solid #c2410c;
	color: #7c2d12;
	margin: 1rem;
	padding: 1rem;
}

@media (min-width: 48rem) {
	.gfnf-dialog__body {
		padding: 2rem;
	}
}

@media (prefers-reduced-motion: no-preference) {
	.gfnf-dialog[open] .gfnf-dialog__surface {
		animation: gfnf-dialog-in 160ms ease-out;
	}
}

@keyframes gfnf-dialog-in {
	from {
		opacity: 0;
		transform: translateY(0.5rem);
	}
}
