/* "Request my free 3D model" form ([tc_pp_request_form]).
   Inputs, radios, checkboxes and the acceptance box use the theme's Contact Form 7 rules (.wpcf7 wrapper);
   this file adds the stepper, steps, upload slots, error summary, review list and buttons.
   Tokens come from the theme (theme.json via theme.css) with fallbacks. Loaded only on pages with the form. */

.tc-pp-intake {
	--pp-ink: var(--tc-charcoal, #242422);
	--pp-mid: var(--tc-ink-mid, #4a4842);
	--pp-muted: var(--tc-ink-muted, #6b675e);
	--pp-faint: var(--tc-ink-faint, #a8a397);
	--pp-line: var(--tc-line, #e4ddcc);
	--pp-cream: var(--tc-cream, #fdf9f0);
	--pp-cream-deep: var(--tc-cream-deep, #f6efe0);
	--pp-white: var(--tc-white, #fff);
	--pp-brass: var(--tc-brass, #7f6a44);
	--pp-alert: var(--tc-alert, #a1321f);
	--pp-radius: var(--tc-radius, 4px);
	--pp-touch: var(--tc-touch, 44px);
	--pp-fast: var(--tc-fast, 160ms);
	color: var(--pp-ink);
}
.tc-pp-intake > * + * { margin-block-start: 0; }

/* Honeypot: off screen for people, still in the form for bots. */
.tc-pp-intake .tc-pp-hp { position: absolute !important; left: -9999px !important; width: 1px; height: 1px; overflow: hidden; }

/* Stepper */
.tc-pp-stepper {
	display: grid;
	grid-template-columns: repeat(5, minmax(0, 1fr));
	margin: 0 0 2.5rem;
	padding: 0 0 1.75rem;
	list-style: none;
	border-bottom: 1px solid var(--pp-line);
}
.tc-pp-stepper > .tc-pp-stepper__item { position: relative; margin: 0; }
.tc-pp-stepper__item + .tc-pp-stepper__item::before {
	content: "";
	position: absolute;
	top: 1.125rem;
	right: calc(50% + 1.375rem);
	left: calc(-50% + 1.375rem);
	height: 1px;
	background: var(--pp-line);
}
.tc-pp-stepper a {
	display: flex;
	flex-direction: column;
	align-items: center;
	gap: 0.55rem;
	min-height: var(--pp-touch);
	color: var(--pp-muted);
	font-size: var(--wp--preset--font-size--xs, 0.8125rem);
	line-height: 1.3;
	text-align: center;
	text-decoration: none;
}
.tc-pp-stepper__num {
	display: grid;
	place-items: center;
	width: 2.25rem;
	height: 2.25rem;
	background: var(--pp-white);
	border: 1px solid var(--pp-faint);
	border-radius: 50%;
	color: var(--pp-ink);
	font-size: var(--wp--preset--font-size--sm, 0.9375rem);
	font-weight: 600;
	transition: background-color var(--pp-fast) ease, border-color var(--pp-fast) ease, color var(--pp-fast) ease;
}
.tc-pp-stepper a:hover .tc-pp-stepper__label { color: var(--pp-ink); text-decoration: underline; text-decoration-color: var(--pp-brass); text-underline-offset: 0.3em; }
.tc-pp-stepper__item.is-done .tc-pp-stepper__num { background: var(--pp-cream-deep); border-color: var(--pp-brass); color: var(--pp-brass); }
.tc-pp-stepper__item.is-current .tc-pp-stepper__num { background: var(--pp-ink); border-color: var(--pp-ink); color: var(--pp-cream); }
.tc-pp-stepper__item.is-current .tc-pp-stepper__label { color: var(--pp-ink); font-weight: 600; }
@media (min-width: 782px) {
	.tc-pp-stepper a { font-size: var(--wp--preset--font-size--sm, 0.9375rem); }
}
@media (max-width: 479px) {
	/* Phones: numbers only, the current step's name shows under the row. */
	.tc-pp-stepper { margin-bottom: 2rem; padding-bottom: 1.25rem; }
	.tc-pp-intake.is-enhanced .tc-pp-stepper__item:not(.is-current) .tc-pp-stepper__label { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }
	.tc-pp-intake.is-enhanced .tc-pp-stepper__item.is-current .tc-pp-stepper__label { white-space: nowrap; }
}

/* Steps */
.tc-pp-intake fieldset.tc-pp-step { min-width: 0; margin: 0; padding: 0; border: 0; scroll-margin-top: calc(var(--tc-header-h, 80px) + 1.5rem); }
.tc-pp-intake:not(.is-enhanced) .tc-pp-step + .tc-pp-step { margin-top: 2.75rem; padding-top: 2.75rem; border-top: 1px solid var(--pp-line); }
.tc-pp-step__legend { float: left; width: 100%; margin: 0 0 0.5rem; padding: 0; }
.tc-pp-step__legend + * { clear: both; }
.tc-pp-step__count {
	display: block;
	margin: 0 0 0.6rem;
	color: var(--pp-brass);
	font-size: var(--wp--preset--font-size--xs, 0.8125rem);
	font-weight: 600;
	letter-spacing: 0.16em;
	text-transform: uppercase;
}
.tc-pp-step__title {
	display: block;
	font-family: var(--wp--preset--font-family--display, Georgia, serif);
	font-size: var(--wp--preset--font-size--xl, 1.75rem);
	font-weight: 500;
	line-height: 1.15;
	color: var(--pp-ink);
}
.tc-pp-step__title:focus { outline: none; }
.tc-pp-step__title:focus-visible { outline: 2px solid var(--pp-ink); outline-offset: 4px; }
.wpcf7.tc-pp-intake .tc-step-intro { margin: 0 0 1.5rem; }
.tc-pp-intake .tc-pp-optional { font-weight: 400; color: var(--pp-muted); }
.tc-pp-grid { display: grid; grid-template-columns: minmax(0, 1fr); column-gap: 1.25rem; }
@media (min-width: 600px) {
	.tc-pp-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
.wpcf7.tc-pp-intake .tc-pp-field { margin: 0 0 1.25rem; }
.wpcf7.tc-pp-intake .tc-pp-field > .tc-hint { display: block; margin: 0 0 0.5rem; }
.wpcf7.tc-pp-intake fieldset.tc-group { min-width: 0; margin: 0 0 1.25rem; padding: 0; border: 0; }
.wpcf7.tc-pp-intake fieldset.tc-group > legend.tc-label { float: none; width: auto; margin-top: 0; padding: 0; }
.wpcf7.tc-pp-intake fieldset.tc-group > .tc-hint { display: block; margin: 0 0 0.6rem; }
.tc-pp-intake .tc-pp-field--plain { margin: 0 !important; }

/* Errors: inline message, red edge on the field, summary at the top of the step. */
.tc-pp-error { display: block; }
.tc-pp-error:not(:empty) { margin-top: 0.45rem; color: var(--pp-alert); font-size: var(--wp--preset--font-size--sm, 0.9375rem); font-weight: 600; }
.tc-pp-field.has-error :is(input[type="text"], input[type="email"], textarea) { border-color: var(--pp-alert) !important; }
.tc-pp-field.has-error { padding-left: 0.9rem; border-left: 3px solid var(--pp-alert); }
.tc-pp-errors {
	margin: 0 0 1.75rem;
	padding: 1.1rem 1.25rem 1.2rem;
	background: var(--pp-white);
	border: 2px solid var(--pp-alert);
	border-radius: var(--pp-radius);
}
.tc-pp-errors:focus { outline: 3px solid color-mix(in srgb, var(--pp-alert) 35%, transparent); outline-offset: 2px; }
.tc-pp-errors__title { margin: 0 0 0.5rem; font-family: var(--wp--preset--font-family--body, sans-serif); font-size: var(--wp--preset--font-size--md, 1.0625rem); font-weight: 700; color: var(--pp-ink); }
.tc-pp-errors ul { margin: 0; padding-left: 1.1rem; }
.tc-pp-errors li { margin: 0.2rem 0; }
.tc-pp-errors a { color: var(--pp-alert); font-weight: 600; text-decoration: underline; text-underline-offset: 0.2em; }
.tc-pp-notice { margin: 0 0 1.25rem; padding: 0.9rem 1.1rem; background: var(--pp-cream); border-left: 3px solid var(--pp-brass); font-size: var(--wp--preset--font-size--sm, 0.9375rem); }

/* Upload slots */
.tc-pp-slot { margin: 0 0 1.5rem; }
.wpcf7.tc-pp-intake .tc-pp-slot > .tc-label { margin-top: 0; margin-bottom: 0.25rem; }
.tc-pp-drop {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 0.5rem 0.85rem;
	padding: 1.1rem 1.25rem;
	background: var(--pp-cream);
	border: 1.5px dashed var(--pp-faint);
	border-radius: var(--pp-radius);
	transition: border-color var(--pp-fast) ease, background-color var(--pp-fast) ease;
}
.tc-pp-drop:hover,
.tc-pp-drop:focus-within,
.tc-pp-drop.is-over { border-color: var(--pp-brass); background: var(--pp-cream-deep); }
.tc-pp-drop__text { color: var(--pp-mid); font-size: var(--wp--preset--font-size--sm, 0.9375rem); }
.tc-pp-intake:not(.is-enhanced) .tc-pp-drop__text { display: none; }
.tc-pp-drop input[type="file"] { min-width: 0; }
.tc-pp-files { margin: 0.6rem 0 0; padding: 0; list-style: none; }
.tc-pp-files:empty { display: none; }
.tc-pp-file {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 0.25rem 0.75rem;
	margin: 0 0 0.4rem;
	padding: 0.6rem 0.85rem;
	background: var(--pp-white);
	border: 1px solid var(--pp-line);
	border-radius: var(--pp-radius);
	font-size: var(--wp--preset--font-size--sm, 0.9375rem);
	line-height: 1.4;
}
.tc-pp-file__name { flex: 1 1 12rem; min-width: 0; overflow-wrap: anywhere; font-weight: 600; color: var(--pp-ink); }
.tc-pp-file__meta { color: var(--pp-muted); white-space: nowrap; }
.tc-pp-file__status { color: var(--pp-muted); }
.tc-pp-file.is-done .tc-pp-file__status { color: var(--pp-brass); font-weight: 600; }
.tc-pp-file.is-done .tc-pp-file__status::before { content: "\2713\00a0"; content: "\2713\00a0" / ""; }
.tc-pp-file.is-error { border-color: var(--pp-alert); }
.tc-pp-file.is-error .tc-pp-file__status { flex-basis: 100%; order: 3; color: var(--pp-alert); font-weight: 600; }
.tc-pp-file.is-error .tc-pp-file__meta { display: none; }
.tc-pp-file__bar { flex: 1 1 100%; order: 4; width: 100%; height: 6px; appearance: none; border: 0; border-radius: 3px; background: var(--pp-cream-deep); overflow: hidden; }
.tc-pp-file__bar::-webkit-progress-bar { background: var(--pp-cream-deep); }
.tc-pp-file__bar::-webkit-progress-value { background: var(--pp-brass); transition: width 120ms linear; }
.tc-pp-file__bar::-moz-progress-bar { background: var(--pp-brass); }
.tc-pp-intake button.tc-pp-file__remove,
.tc-pp-intake button.tc-pp-change {
	min-height: 2.25rem;
	margin: 0 0 0 auto;
	padding: 0 0.75rem;
	background: none;
	border: 1px solid var(--pp-line);
	border-radius: var(--pp-radius);
	color: var(--pp-ink);
	font: 600 var(--wp--preset--font-size--xs, 0.8125rem) / 1 var(--wp--preset--font-family--body, sans-serif);
	cursor: pointer;
}
.tc-pp-intake button.tc-pp-file__remove:hover,
.tc-pp-intake button.tc-pp-change:hover { border-color: var(--pp-ink); }
.tc-pp-file__keep { display: inline-flex; align-items: center; gap: 0.4rem; margin-left: auto; color: var(--pp-mid); }
.wpcf7.tc-pp-intake .tc-pp-limits { margin: 0 0 1rem; }

/* Review */
.tc-pp-summary { display: grid; gap: 0; margin: 0 0 1.25rem; border-top: 1px solid var(--pp-line); }
.tc-pp-summary > div { display: grid; grid-template-columns: minmax(0, 9rem) minmax(0, 1fr); gap: 1rem; padding: 0.85rem 0; border-bottom: 1px solid var(--pp-line); }
.tc-pp-summary dt { font-size: var(--wp--preset--font-size--sm, 0.9375rem); font-weight: 600; color: var(--pp-ink); }
.tc-pp-summary dd { display: flex; align-items: flex-start; gap: 0.75rem; margin: 0; font-size: var(--wp--preset--font-size--sm, 0.9375rem); color: var(--pp-mid); overflow-wrap: anywhere; }
.tc-pp-summary dd > span { flex: 1 1 auto; min-width: 0; }
.tc-pp-summary dd > .tc-pp-change { flex: 0 0 auto; white-space: nowrap; }
@media (max-width: 479px) {
	.tc-pp-summary > div { grid-template-columns: minmax(0, 1fr); gap: 0.25rem; }
}

/* Buttons */
.tc-pp-nav,
.tc-pp-actions { display: flex; flex-wrap: wrap; align-items: center; gap: 0.75rem; margin: 1.75rem 0 0; }
.tc-pp-nav[hidden],
.tc-pp-intake [hidden] { display: none !important; }
.tc-pp-intake button.tc-pp-btn {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	min-height: 52px;
	margin: 0;
	padding: 0 1.75rem;
	background: var(--pp-brass);
	border: 1px solid var(--pp-brass);
	border-radius: var(--pp-radius);
	color: var(--pp-white);
	font: 600 var(--wp--preset--font-size--sm, 0.9375rem) / 1 var(--wp--preset--font-family--body, sans-serif);
	letter-spacing: 0.02em;
	cursor: pointer;
	transition: background-color var(--pp-fast) ease, color var(--pp-fast) ease, border-color var(--pp-fast) ease;
}
.tc-pp-intake button.tc-pp-btn:hover { background: var(--pp-ink); border-color: var(--pp-ink); color: var(--pp-cream); }
.tc-pp-intake button.tc-pp-back { background: var(--pp-white); border-color: var(--pp-line); color: var(--pp-ink); }
.tc-pp-intake button.tc-pp-back:hover { background: var(--pp-white); border-color: var(--pp-ink); color: var(--pp-ink); }
.tc-pp-intake button.tc-pp-send[aria-disabled="true"] { opacity: 0.6; cursor: progress; }
.tc-pp-intake button:focus-visible { outline: 2px solid var(--pp-ink); outline-offset: 3px; }
.wpcf7.tc-pp-intake .tc-pp-offer { margin: 1.25rem 0 0.35rem; font-size: var(--wp--preset--font-size--sm, 0.9375rem); font-weight: 600; color: var(--pp-ink); }
.wpcf7.tc-pp-intake .tc-pp-offer + .tc-hint { margin-top: 0; }
@media (max-width: 479px) {
	.tc-pp-nav,
	.tc-pp-actions { flex-direction: column-reverse; align-items: stretch; }
	.tc-pp-intake button.tc-pp-btn { width: 100%; }
}

/* Sent */
.tc-pp-sent { padding: 0.5rem 0; }
.tc-pp-sent:focus { outline: none; }
.tc-pp-sent__eyebrow { margin: 0 0 0.6rem; color: var(--pp-brass); font-size: var(--wp--preset--font-size--xs, 0.8125rem); font-weight: 600; letter-spacing: 0.16em; text-transform: uppercase; }
.tc-pp-sent__title { margin: 0 0 0.85rem; font-size: var(--wp--preset--font-size--xl, 1.75rem); }
.tc-pp-sent > p { max-width: 38rem; }
.tc-pp-sent__note { font-weight: 600; }

@media (prefers-reduced-motion: reduce) {
	.tc-pp-intake *, .tc-pp-intake *::before { transition: none !important; }
}

/* Receipt on the confirmation (submission ID, files received, status). */
.tc-pp-receipt { display: grid; gap: 0; margin: 0 0 1.25rem; max-width: 38rem; border-top: 1px solid var(--pp-line, rgba(36, 36, 34, 0.16)); }
.tc-pp-receipt > div { display: grid; grid-template-columns: minmax(8rem, 11rem) 1fr; gap: 0.75rem; padding: 0.6rem 0; border-bottom: 1px solid var(--pp-line, rgba(36, 36, 34, 0.16)); }
.tc-pp-receipt dt { margin: 0; font-weight: 600; }
.tc-pp-receipt dd { margin: 0; overflow-wrap: anywhere; }
.tc-pp-receipt__id { font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace; font-size: 0.9em; letter-spacing: 0.02em; }
@media (max-width: 480px) { .tc-pp-receipt > div { grid-template-columns: 1fr; gap: 0.15rem; } }
