/* ==========================================================================
   Private assessment (Figma 474:55 desktop / 478:2 mobile, Spec 06 fields)
   docs/figma/assessment.md
   ========================================================================== */

/* Header + title (474:56) */
.elementor .ts-ahead { padding: 116px var(--side) 72px; overflow: hidden; background: var(--navy); }
.elementor .ts-ahead > .ts-wrap { position: static; }
.ts-ahead .ts-ahead__img { position: absolute !important; inset: 0; margin: 0; overflow: hidden; }
.ts-ahead .ts-ahead__img img { width: 100%; height: 174.55%; max-width: none; object-fit: cover; position: absolute; top: -37.27%; left: 0; }
.ts-ahead .ts-ahead__img::after { content: ""; position: absolute; inset: 0; background: linear-gradient(to right, rgba(0,35,69,.97), rgba(0,35,69,.84)); }
.elementor .ts-ahead__copy { position: relative; z-index: 2; width: 820px; max-width: 100%; gap: 20px; padding-top: 0; }
.elementor .ts-ahead.ts-sec .ts-ahead__eyebrow .elementor-heading-title { display: inline-flex; align-items: center; gap: 14px; font: 600 12px/16px var(--font-display); letter-spacing: 3px; text-transform: uppercase; color: var(--peach); }
.ts-ahead .ts-ahead__eyebrow .elementor-heading-title::before { content: ""; width: 32px; height: 1px; background: var(--peach); }
.elementor .ts-ahead.ts-sec .ts-ahead__title .elementor-heading-title { font-size: 48px; line-height: 56px; letter-spacing: 0; color: var(--white); }
.ts-ahead__lede { color: rgba(255,255,255,.7); }
.ts-ahead__lede p { margin: 0; }

/* Legal pages reuse the assessment header without the photo */
.elementor .ts-ahead--plain { padding-bottom: 64px; }
.elementor .ts-legal { padding-top: 72px; }
.ts-prose { max-width: 760px; }
.ts-prose h2 { margin: 40px 0 12px; font: 300 28px/34px var(--font-display); color: var(--navy); }
.ts-prose p { margin: 0 0 16px; }
.ts-table { width: 100%; border-collapse: collapse; font-size: 15px; }
.ts-table th, .ts-table td { text-align: left; padding: 12px 16px 12px 0; border-bottom: 1px solid var(--line); }
.ts-table th { font-weight: 700; color: var(--navy); }

/* Body (474:75): form card + side column */
.elementor .ts-aform { padding: 72px var(--side) 120px; }
.elementor .ts-aform > .ts-wrap { display: flex; flex-direction: row; gap: 48px; align-items: flex-start; }
.elementor .ts-aform__card { flex: 1 1 0; min-width: 0; background: var(--white); border-radius: 20px; box-shadow: inset 0 0 0 1px var(--line); padding: 48px; }
.elementor .ts-aform__side { width: 400px; flex: none; gap: 24px; }

/* --- PRO Elements form, restyled ------------------------------------------ */
.ts-form .elementor-field-group > .elementor-field-label { display: block; width: 100%; padding-bottom: 8px; font: 600 13px/18px var(--font-body); color: var(--navy); }
.ts-form .elementor-field-group-part2, .ts-form .elementor-field-group-part3 { margin-top: 18px; }
.ts-part { margin: 0; display: flex; align-items: center; gap: 14px; font-weight: 400; }
.ts-part__num { font: 300 28px/34px var(--font-display); color: var(--teal); }
.ts-part__title { font: 400 22px/28px var(--font-display); color: var(--navy); }

/* Text inputs, select, textarea (Spec 06 states) */
.elementor .ts-form .elementor-field-group .elementor-field-textual {
	box-sizing: border-box; min-height: 52px; padding: 15px 16px; border: 1px solid var(--line); border-radius: var(--r-field);
	background: rgba(248,248,245,.5); font: 400 15px/20px var(--font-body); color: var(--navy);
	transition: box-shadow 150ms ease-out, border-color 150ms ease-out;
}
.ts-form .elementor-field-textual::placeholder { color: var(--muted-text); opacity: 1; }
.ts-form .elementor-field-textual:focus,
.ts-form .elementor-select-wrapper select:focus { outline: none; border-color: var(--teal); box-shadow: 0 0 0 1px var(--teal); }
.ts-form .elementor-field-textual[aria-invalid="true"] { border-color: var(--red); box-shadow: 0 0 0 1px var(--red); }
.elementor .ts-form .elementor-field-group textarea.elementor-field-textual { min-height: 120px; height: 120px; border-radius: 20px; padding: 16px; line-height: 24px; resize: vertical; }
.ts-form .elementor-select-wrapper select { appearance: none; padding-right: 44px; }
.ts-form .elementor-select-wrapper .select-caret-down-wrapper { display: none; }
.ts-form .elementor-select-wrapper::after {
	content: ""; position: absolute; right: 16px; top: 50%; width: 16px; height: 16px; margin-top: -8px; pointer-events: none;
	background: url(../img/assessment/icon-chevron-down.svg) center / contain no-repeat;
}
.ts-form .elementor-field-group-companions .elementor-select-wrapper::after { background-image: url(../img/assessment/icon-users.svg); }
.ts-form .elementor-select-wrapper { position: relative; }
/* Trailing icons on text fields */
.ts-form .elementor-field-group-phone, .ts-form .elementor-field-group-email, .ts-form .elementor-field-group-travel_window { position: relative; }
.ts-form .elementor-field-group-phone::after, .ts-form .elementor-field-group-email::after, .ts-form .elementor-field-group-travel_window::after {
	content: ""; position: absolute; right: 26px; bottom: 18px; width: 16px; height: 16px; pointer-events: none;
	background: center / contain no-repeat;
}
.ts-form .elementor-field-group-phone::after { background-image: url(../img/assessment/icon-phone.svg); }
.ts-form .elementor-field-group-email::after { background-image: url(../img/assessment/icon-mail.svg); }
.ts-form .elementor-field-group-travel_window::after { background-image: url(../img/assessment/icon-calendar.svg); }
.ts-form .elementor-field-group-phone input, .ts-form .elementor-field-group-email input, .ts-form .elementor-field-group-travel_window input { padding-right: 44px; }

/* Chips: radio/checkbox options rendered as pills (Spec 06 chips) */
.ts-form .elementor-field-group-language > .elementor-field-label,
.ts-form .elementor-field-group-help_with > .elementor-field-label,
.ts-form .elementor-field-group-first_step > .elementor-field-label,
.ts-form .elementor-field-group-services > .elementor-field-label { padding-bottom: 10px; }
.ts-form .elementor-field-group-language .elementor-field-subgroup,
.ts-form .elementor-field-group-help_with .elementor-field-subgroup,
.ts-form .elementor-field-group-first_step .elementor-field-subgroup,
.ts-form .elementor-field-group-services .elementor-field-subgroup { display: flex; flex-wrap: wrap; gap: 10px; }
.ts-form .elementor-field-subgroup .elementor-field-option { display: flex; }
.elementor .ts-form :is(.elementor-field-group-language, .elementor-field-group-help_with, .elementor-field-group-first_step, .elementor-field-group-services) .elementor-field-option { position: relative; margin: 0 !important; padding: 0 !important; }
.elementor .ts-form :is(.elementor-field-group-language, .elementor-field-group-help_with, .elementor-field-group-first_step, .elementor-field-group-services) .elementor-field-option input { position: absolute; opacity: 0; width: 1px; height: 1px; margin: 0; }
.elementor .ts-form :is(.elementor-field-group-language, .elementor-field-group-help_with, .elementor-field-group-first_step, .elementor-field-group-services) .elementor-field-option label {
	display: inline-flex; align-items: center; gap: 8px; margin: 0; padding: 11px 18px; border-radius: var(--r-pill);
	border: 1px solid var(--line); background: transparent; cursor: pointer;
	font: 500 14px/19px var(--font-body); color: var(--navy);
	transition: background-color 150ms ease-out, border-color 150ms ease-out, color 150ms ease-out;
}
.elementor .ts-form :is(.elementor-field-group-language, .elementor-field-group-help_with, .elementor-field-group-first_step, .elementor-field-group-services) .elementor-field-option label:hover { border-color: rgba(0,35,69,.4); }
.ts-chip__tick { display: none; width: 14px; height: 14px; }
.ts-chip__tick .ts-icon { width: 14px; height: 14px; display: block; }
.elementor .ts-form :is(.elementor-field-group-language, .elementor-field-group-help_with, .elementor-field-group-first_step, .elementor-field-group-services) .elementor-field-option input:checked + label { background: var(--navy); border-color: var(--navy); color: var(--white); }
.elementor .ts-form :is(.elementor-field-group-language, .elementor-field-group-help_with, .elementor-field-group-first_step, .elementor-field-group-services) .elementor-field-option input:checked + label .ts-chip__tick { display: inline-block; }
.elementor .ts-form :is(.elementor-field-group-language, .elementor-field-group-help_with, .elementor-field-group-first_step, .elementor-field-group-services) .elementor-field-option input:focus-visible + label { outline: 2px solid var(--teal); outline-offset: 2px; }

/* Upload dropzone (built around the file input by form-controls.js) */
.ts-form .elementor-field-type-upload > .elementor-field-label { padding: 0; }
.ts-drop {
	width: 100%; box-sizing: border-box;
	position: relative; display: flex; flex-direction: column; align-items: center; gap: 10px; text-align: center;
	padding: 28px 24px; border-radius: 20px; border: 1px dashed rgba(64,120,129,.8); background: rgba(242,241,236,.4);
	transition: background-color 150ms ease-out;
}
.ts-drop.is-over, .ts-drop:hover { background: rgba(64,120,129,.08); }
.ts-drop:focus-within { outline: 2px solid var(--teal); outline-offset: 2px; }
.ts-drop__icon .ts-icon { width: 28px; height: 28px; display: block; }
.ts-drop__title .elementor-field-label { padding: 0 !important; font: 600 15px/20px var(--font-body) !important; color: var(--navy); }
.ts-drop__hint { font: 400 13px/18px var(--font-body); color: var(--muted-text); }
.ts-drop__files { font: 600 13px/18px var(--font-body); color: var(--teal-text-sand); }
.ts-drop input[type=file] { position: absolute; inset: 0; width: 100%; height: 100%; opacity: 0; cursor: pointer; padding: 0; border: 0; }

/* Consent (Spec 06: required, never pre-ticked) */
.ts-form .elementor-field-type-acceptance > .elementor-field-label { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); }
.ts-form .elementor-field-group-consent { border-top: 1px solid var(--line); padding-top: 24px; margin-top: 18px; }
.ts-form .elementor-field-group-updates { margin-top: -8px; }
.ts-form .elementor-field-type-acceptance .elementor-field-option { display: flex; align-items: flex-start; gap: 12px; }
/* Figma: 20×20, 1px rgba(0,35,69,.5), radius 12 (circle) desktop / 6 mobile. Checked = chip style (navy + peach tick). */
.elementor .ts-form .elementor-field-type-acceptance input[type=checkbox].elementor-field {
	appearance: none; -webkit-appearance: none; flex: none; box-sizing: border-box;
	width: 20px; height: 20px; min-height: 0; padding: 0; margin: 1px 0 0;
	border: 1px solid rgba(0,35,69,.5); border-radius: 12px;
	background: var(--white) center / 12px 12px no-repeat; cursor: pointer;
	transition: background-color 150ms ease-out, border-color 150ms ease-out;
}
.elementor .ts-form .elementor-field-type-acceptance input[type=checkbox].elementor-field:hover { border-color: var(--navy); }
.elementor .ts-form .elementor-field-type-acceptance input[type=checkbox].elementor-field:checked {
	background-color: var(--navy); border-color: var(--navy);
	background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 14 14' fill='none'%3E%3Cpath d='M11.6667 3.5L5.25 9.91667L2.33333 7' stroke='%23FFCD8B' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");
}
.elementor .ts-form .elementor-field-type-acceptance input[type=checkbox].elementor-field:focus-visible { outline: 2px solid var(--teal); outline-offset: 2px; }
.ts-form .elementor-field-type-acceptance label:not(.elementor-field-label) { margin: 0; font: 400 14px/22px var(--font-body); color: var(--muted-text); cursor: pointer; }
.ts-form .elementor-field-type-acceptance a { color: var(--teal); text-decoration: underline; }

/* Submit row */
.elementor .ts-form .e-form__buttons { display: flex; flex-direction: row; align-items: center; justify-content: space-between; gap: 16px; flex-wrap: nowrap; margin-top: 18px; }
.elementor .ts-form .e-form__buttons .elementor-button { width: auto; flex: 0 0 auto; padding: 17px 30px; font-size: 14px; color: var(--navy); background-color: var(--peach); }
.elementor .ts-form .elementor-button:hover, .elementor .ts-form .elementor-button:focus-visible { background-color: #F5BE73; color: var(--navy); }
.ts-trust { margin: 0; display: inline-flex; align-items: center; gap: 8px; font: 400 13px/18px var(--font-body); color: var(--muted-text); }
.ts-trust .ts-icon { width: 16px; height: 16px; }

/* Messages */
.ts-form .elementor-message { font: 400 12px/18px var(--font-body); margin-top: 6px; }
.ts-form .elementor-message-danger { color: var(--red); }
.ts-form .elementor-message-success { display: none; }
.ts-aform__card.is-sent .ts-form { display: none; }
.ts-thanks { display: flex; flex-direction: column; gap: 16px; padding: 24px 0; outline: none; }
.ts-thanks__eyebrow { margin: 0; font: 700 12px/16px var(--font-body); letter-spacing: 2.4px; text-transform: uppercase; color: var(--teal); }
.ts-thanks__title { margin: 0; font: 300 34px/42px var(--font-display); letter-spacing: -0.5px; color: var(--navy); }
.ts-thanks__text { margin: 0; font: 400 16px/28px var(--font-body); color: var(--muted-text); }

/* Flatpickr in the site's colours */
.flatpickr-calendar { font-family: var(--font-body); border-radius: 16px; box-shadow: 0 12px 40px rgba(0,35,69,.18); }
.flatpickr-day.selected, .flatpickr-day.startRange, .flatpickr-day.endRange { background: var(--navy); border-color: var(--navy); }
.flatpickr-day.inRange { background: rgba(64,120,129,.15); border-color: transparent; box-shadow: -5px 0 0 rgba(64,120,129,.15), 5px 0 0 rgba(64,120,129,.15); }
.flatpickr-day.today { border-color: var(--teal); }

/* --- Side column ------------------------------------------------------------ */
.ts-next { background: var(--navy); color: var(--white); border-radius: 20px; padding: 36px; display: flex; flex-direction: column; gap: 22px; }
.ts-next .ts-next__title { margin: 0; font: 600 11px/14px var(--font-display); letter-spacing: 3px; text-transform: uppercase; color: var(--peach); }
.ts-next__list { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 22px; }
.ts-next__list li { display: flex; gap: 16px; align-items: flex-start; }
.ts-next__num { width: 32px; height: 32px; flex: none; border-radius: 50%; box-shadow: inset 0 0 0 1px var(--teal); display: grid; place-items: center; font: 400 14px/1 var(--font-display); color: var(--teal); }
.ts-next__body { display: flex; flex-direction: column; gap: 4px; }
.ts-next__step { font: 600 15px/20px var(--font-body); color: var(--white); }
.ts-next__text { font: 400 14px/22px var(--font-body); color: rgba(255,255,255,.7); }
.ts-surgeon { display: flex; align-items: center; gap: 16px; padding: 24px; border-radius: 20px; background: var(--white); box-shadow: inset 0 0 0 1px var(--line); }
.ts-surgeon__ph { position: relative; width: 64px; height: 64px; flex: none; border-radius: 50%; overflow: hidden; }
.ts-surgeon__ph img { position: absolute; max-width: none; width: 179.22%; height: auto; left: -44.55%; top: -29.16%; }
.ts-surgeon__text { margin: 0; display: flex; flex-direction: column; gap: 4px; }
.ts-surgeon__label, .ts-surgeon__role { font: 400 12px/16px var(--font-body); color: var(--muted-text); }
.ts-surgeon__name { font: 400 18px/23px var(--font-display); color: var(--navy); }
.ts-urgent { margin: 0; display: flex; gap: 12px; align-items: flex-start; padding: 20px; border-radius: 20px; background: var(--sand); font: 400 13px/21px var(--font-body); color: var(--navy); }
.ts-urgent .ts-icon { width: 18px; height: 18px; flex: none; margin-top: 1px; }

@media (max-width: 1024px) {
	.elementor .ts-aform > .ts-wrap { flex-direction: column; }
	.elementor .ts-aform__side { width: 100%; }
}

/* --- Mobile (478:3 / 478:18) --------------------------------------------------- */
@media (max-width: 767px) {
	.elementor .ts-ahead { padding: 108px var(--side) 40px; }
	.ts-ahead .ts-ahead__img img { width: 160.26%; height: 100%; top: 0; left: -30.13%; }
	.ts-ahead .ts-ahead__img::after { background: linear-gradient(to bottom, rgba(0,35,69,.97), rgba(0,35,69,.86)); }
	.elementor .ts-ahead__copy { gap: 14px; }
	.elementor .ts-ahead.ts-sec .ts-ahead__eyebrow .elementor-heading-title { font: 700 11px/15px var(--font-body); letter-spacing: 2px; }
	.ts-ahead .ts-ahead__eyebrow .elementor-heading-title::before { display: none; }
	.elementor .ts-ahead.ts-sec .ts-ahead__title .elementor-heading-title { font-size: 28px; line-height: 34px; letter-spacing: -0.3px; }
	.ts-ahead__lede { font-size: 15px; line-height: 24px; color: rgba(255,255,255,.75); }

	.elementor .ts-aform { padding: 28px var(--side) 64px; }
	.elementor .ts-aform > .ts-wrap { gap: 24px; }
	.elementor .ts-aform__card { padding: 28px 20px; }
	.ts-form .elementor-field-group-part2, .ts-form .elementor-field-group-part3 { margin-top: 14px; }
	.ts-part { gap: 12px; }
	.ts-part__num { font-size: 24px; line-height: 28px; }
	.ts-part__title { font-size: 19px; line-height: 24px; }
	.elementor .ts-form .elementor-field-group .elementor-field-textual { min-height: 50px; padding: 14px; background: var(--cream); }
	.elementor .ts-form .elementor-field-group textarea.elementor-field-textual { border-radius: 12px; padding: 14px; font-size: 14px; line-height: 22px; }
	.ts-form .elementor-field-group-language .elementor-field-subgroup,
	.ts-form .elementor-field-group-help_with .elementor-field-subgroup,
	.ts-form .elementor-field-group-first_step .elementor-field-subgroup,
	.ts-form .elementor-field-group-services .elementor-field-subgroup { gap: 8px; }
	.elementor .ts-form :is(.elementor-field-group-language, .elementor-field-group-help_with, .elementor-field-group-first_step, .elementor-field-group-services) .elementor-field-option label { padding: 10px 14px; gap: 6px; font-size: 13px; background: var(--white); }
	.ts-chip__tick, .ts-chip__tick .ts-icon { width: 13px; height: 13px; }
	.ts-drop { padding: 22px 16px; gap: 8px; border-radius: 14px; background: rgba(64,120,129,.05); }
	.ts-drop__icon .ts-icon { width: 26px; height: 26px; }
	.ts-drop__title .elementor-field-label { font-size: 14px !important; }
	.ts-drop__hint { font-size: 12px; }
	.ts-form .elementor-field-group-consent { border-top: 0; padding-top: 0; margin-top: 14px; }
	.elementor .ts-form .elementor-field-type-acceptance input[type=checkbox].elementor-field { border-radius: 6px; }
	.ts-form .elementor-field-type-acceptance label:not(.elementor-field-label) { font-size: 13px; line-height: 20px; }
	.elementor .ts-form .e-form__buttons { flex-direction: column; align-items: stretch; gap: 32px; }
	.elementor .ts-form .e-form__buttons .elementor-button { width: 100%; padding: 16px 20px; font-size: 15px; white-space: nowrap; }
	.elementor .ts-form .e-form__buttons .elementor-button-text { white-space: nowrap; flex-grow: 0; }
	.ts-trust { font-size: 12px; }
	.ts-trust .ts-icon { width: 15px; height: 15px; }

	.ts-next { padding: 24px 20px; gap: 18px; }
	.ts-next .ts-next__title { font: 700 11px/15px var(--font-body); letter-spacing: 2px; }
	.ts-next__list { gap: 18px; }
	.ts-next__list li { gap: 14px; }
	.ts-next__num { width: 30px; height: 30px; box-shadow: inset 0 0 0 1px var(--peach); color: var(--peach); font: 600 13px/1 var(--font-body); }
	.ts-next__body { gap: 3px; }
	.ts-next__step { font-size: 14px; }
	.ts-next__text { font-size: 13px; line-height: 20px; }
	.ts-surgeon { padding: 18px; gap: 14px; }
	.ts-surgeon__ph { width: 56px; height: 56px; }
	.ts-surgeon__ph img { width: 260%; left: -90.4%; top: -36.9%; }
	.ts-surgeon__text { gap: 3px; }
	.ts-surgeon__name { font-size: 17px; line-height: 22px; }
	.ts-urgent { border-radius: 16px; padding: 16px; gap: 10px; line-height: 20px; }
}
