/* Tinder Click Studio: front-end components (booking, quote, packages, classes, reviews, contact). */

:root {
	--tcs-rose: #b54b4d;
	--tcs-rose-deep: #963a3c;
	--tcs-rose-soft: #f7e6e2;
	--tcs-ink: #261e1f;
	--tcs-ink-2: #4b3f40;
	--tcs-muted: #7d6f70;
	--tcs-cream: #fbf7f3;
	--tcs-sand: #f5ece5;
	--tcs-line: #eadfd6;
	--tcs-peach: #f4bf93;
	--tcs-terracotta: #d98f6f;
	--tcs-orange: #e1603f;
	--tcs-coral: #fea078;
	--tcs-amber: #fcbd5a;
	--tcs-ok: #3f7d57;
	--tcs-wa: #1fa855;
	--tcs-radius: 14px;
	--tcs-shadow: 0 12px 34px rgba(38, 30, 31, .08);
	--tcs-font-head: 'Cormorant Garamond', Georgia, 'Times New Roman', serif;
}

.tcs-booking, .tcs-quote, .tcs-packages-grid, .tcs-classes, .tcs-reviews, .tcs-review-form, .tcs-contact-card, .tcs-cta, .tcs-pay-box {
	color: var(--tcs-ink);
	box-sizing: border-box;
}
.tcs-booking *, .tcs-quote *, .tcs-packages-grid *, .tcs-classes *, .tcs-reviews *, .tcs-review-form *, .tcs-contact-card *, .tcs-cta *, .tcs-pay-box * {
	box-sizing: border-box;
}
.tcs-hp { position: absolute !important; left: -9999px !important; width: 1px; height: 1px; overflow: hidden; }
.tcs-muted { color: var(--tcs-muted); }
.tcs-hidden-field { display: none !important; }

/* ---------- Buttons ---------- */
.tcs-btn, a.tcs-btn, button.tcs-btn {
	display: inline-flex; align-items: center; justify-content: center; gap: .5em;
	min-height: 48px; padding: .75em 1.6em; border-radius: 999px;
	border: 1.5px solid var(--tcs-rose); background: transparent; color: var(--tcs-rose);
	font: inherit; font-size: 15px; font-weight: 500; letter-spacing: .02em; line-height: 1.2;
	text-decoration: none !important; cursor: pointer; transition: background .2s, color .2s, border-color .2s, transform .2s;
}
.tcs-btn:hover, .tcs-btn:focus-visible { background: var(--tcs-rose); color: #fff; }
.tcs-btn--solid, a.tcs-btn--solid, button.tcs-btn--solid { background: var(--tcs-rose); color: #fff; }
.tcs-btn--solid:hover, .tcs-btn--solid:focus-visible { background: var(--tcs-rose-deep); border-color: var(--tcs-rose-deep); }
.tcs-btn--ghost { border-color: var(--tcs-line); color: var(--tcs-ink); }
.tcs-btn--ghost:hover, .tcs-btn--ghost:focus-visible { background: var(--tcs-ink); border-color: var(--tcs-ink); color: #fff; }
.tcs-btn--wa, a.tcs-btn--wa { border-color: var(--tcs-wa); color: var(--tcs-wa); }
.tcs-btn--wa.tcs-btn--solid { background: var(--tcs-wa); color: #fff; }
.tcs-btn--wa:hover, .tcs-btn--wa:focus-visible { background: var(--tcs-wa); border-color: var(--tcs-wa); color: #fff; }
.tcs-btn:disabled, .tcs-btn[disabled] { opacity: .45; cursor: not-allowed; }
.tcs-btn.is-busy { opacity: .7; pointer-events: none; }
.tcs-wa-icon { width: 20px; height: 20px; fill: currentColor; flex: none; }
.tcs-link, button.tcs-link { background: none; border: 0; padding: 0; color: var(--tcs-rose); font: inherit; font-size: 15px; text-decoration: underline; text-underline-offset: 3px; cursor: pointer; }
.tcs-btn:focus-visible, .tcs-link:focus-visible, .tcs-pk:focus-visible, .tcs-day:focus-visible, .tcs-slot:focus-visible, .tcs-q-card:focus-visible, .tcs-q-row:focus-visible {
	outline: 3px solid var(--tcs-amber); outline-offset: 2px;
}

/* ---------- Form fields ---------- */
.tcs-fields { display: grid; grid-template-columns: 1fr 1fr; gap: 6px 22px; }
.tcs-fields p { margin: 0 0 12px; }
.tcs-fields .tcs-wide { grid-column: 1 / -1; }
.tcs-fields label, .tcs-review-form legend { display: block; font-size: 14px; font-weight: 500; margin-bottom: 6px; color: var(--tcs-ink-2); }
.tcs-fields abbr { color: var(--tcs-rose); text-decoration: none; border: 0; }
.tcs-booking input[type=text], .tcs-booking input[type=tel], .tcs-booking input[type=email], .tcs-booking input[type=number], .tcs-booking textarea,
.tcs-quote input[type=text], .tcs-quote input[type=tel], .tcs-quote input[type=email], .tcs-quote input[type=number], .tcs-quote input[type=date], .tcs-quote textarea,
.tcs-review-form input[type=text], .tcs-review-form input[type=email], .tcs-review-form input[type=month], .tcs-review-form select, .tcs-review-form textarea, .tcs-review-form input[type=file],
.tcs-enrol select, .tcs-enrol input {
	width: 100%; min-height: 48px; padding: 11px 14px; border: 1.5px solid var(--tcs-line); border-radius: 10px;
	background: #fff; color: var(--tcs-ink); font: inherit; font-size: 16px; line-height: 1.4; box-shadow: none; transition: border-color .2s;
}
.tcs-booking textarea, .tcs-quote textarea, .tcs-review-form textarea { min-height: 110px; resize: vertical; }
.tcs-booking input:focus, .tcs-booking textarea:focus, .tcs-quote input:focus, .tcs-quote textarea:focus, .tcs-review-form input:focus, .tcs-review-form select:focus, .tcs-review-form textarea:focus {
	border-color: var(--tcs-rose); outline: none; box-shadow: 0 0 0 3px var(--tcs-rose-soft);
}
.tcs-booking .is-invalid { border-color: var(--tcs-orange) !important; background: #fff6f2 !important; }

/* ---------- Booking wizard ---------- */
.tcs-booking { max-width: 1080px; margin: 0 auto; }
.tcs-steps { display: flex; gap: 8px; list-style: none; margin: 0 0 34px; padding: 0; counter-reset: s; }
.tcs-steps li {
	flex: 1; display: flex; align-items: center; gap: 10px; padding: 12px 14px; margin: 0;
	border-bottom: 2px solid var(--tcs-line); color: var(--tcs-muted); font-size: 14px; letter-spacing: .03em;
}
.tcs-steps li span { display: inline-grid; place-items: center; width: 28px; height: 28px; border-radius: 50%; border: 1.5px solid currentColor; font-size: 13px; flex: none; }
.tcs-steps li.is-active { color: var(--tcs-rose); border-color: var(--tcs-rose); font-weight: 600; }
.tcs-steps li.is-done { color: var(--tcs-ink); border-color: var(--tcs-ink); cursor: pointer; }
.tcs-steps li.is-done span { background: var(--tcs-ink); color: #fff; border-color: var(--tcs-ink); }
.tcs-panel { display: none; animation: tcsFade .35s ease; }
.tcs-panel.is-active { display: block; }
@keyframes tcsFade { from { opacity: 0; transform: translateY(8px); } to { opacity: 1; transform: none; } }
.tcs-panel-title, .tcs-q-title { font-family: var(--tcs-font-head); font-weight: 500; font-size: clamp(26px, 3.2vw, 36px); line-height: 1.15; margin: 0 0 22px; color: var(--tcs-ink); outline: none; }
.tcs-help { margin-top: 26px; color: var(--tcs-muted); font-size: 15px; }
.tcs-help a { color: var(--tcs-rose); }

.tcs-filter { display: flex; flex-wrap: wrap; gap: 8px; margin-bottom: 22px; }
.tcs-filter button {
	border: 1.5px solid var(--tcs-line); background: #fff; color: var(--tcs-ink-2); border-radius: 999px;
	padding: 8px 16px; font: inherit; font-size: 14px; cursor: pointer; transition: all .2s;
}
.tcs-filter button:hover { border-color: var(--tcs-rose); color: var(--tcs-rose); }
.tcs-filter button.is-active { background: var(--tcs-ink); border-color: var(--tcs-ink); color: #fff; }

.tcs-packages { display: grid; grid-template-columns: repeat(auto-fill, minmax(250px, 1fr)); gap: 18px; }
.tcs-packages.is-categories { grid-template-columns: repeat(auto-fill, minmax(220px, 1fr)); gap: 16px; }
.tcs-cat-tile {
	display: flex; flex-direction: column; padding: 0; overflow: hidden; text-align: left; cursor: pointer;
	background: #fff; border: 1.5px solid var(--tcs-line); border-radius: var(--tcs-radius); font: inherit; color: inherit;
	transition: transform .25s, box-shadow .25s, border-color .25s;
}
.tcs-cat-tile:hover, .tcs-cat-tile:focus-visible { transform: translateY(-3px); box-shadow: var(--tcs-shadow); border-color: var(--tcs-peach); }
.tcs-cat-tile:focus-visible { outline: 3px solid var(--tcs-amber); outline-offset: 2px; }
.tcs-cat-img { display: block; aspect-ratio: 4 / 3; background: var(--tcs-sand) center / cover no-repeat; }
.tcs-cat-img.is-empty { background: linear-gradient(135deg, var(--tcs-sand), #f6d3bd 60%, var(--tcs-peach)); }
.tcs-cat-body { display: flex; flex-direction: column; gap: 4px; padding: 14px 16px 16px; }
.tcs-cat-body strong { font-family: var(--tcs-font-head); font-size: 22px; font-weight: 600; line-height: 1.15; color: var(--tcs-ink); }
.tcs-cat-body span { font-size: 13px; color: var(--tcs-muted); }
.tcs-filter .tcs-filter-all { border-style: dashed; }
.tcs-pk {
	display: flex; flex-direction: column; text-align: left; padding: 0; overflow: hidden; cursor: pointer;
	background: #fff; border: 1.5px solid var(--tcs-line); border-radius: var(--tcs-radius); font: inherit; color: inherit;
	transition: transform .25s, box-shadow .25s, border-color .25s;
}
.tcs-pk:hover { transform: translateY(-3px); box-shadow: var(--tcs-shadow); border-color: var(--tcs-peach); }
.tcs-pk.is-selected { border-color: var(--tcs-rose); box-shadow: 0 0 0 3px var(--tcs-rose-soft); }
.tcs-pk-img { display: block; aspect-ratio: 16 / 10; background: var(--tcs-sand) center / cover no-repeat; }
.tcs-pk-body { display: flex; flex-direction: column; gap: 6px; padding: 16px 18px 18px; flex: 1; }
.tcs-pk-cat { font-size: 12px; text-transform: uppercase; letter-spacing: .12em; color: var(--tcs-terracotta); }
.tcs-pk-name { font-family: var(--tcs-font-head); font-size: 22px; line-height: 1.2; font-weight: 600; }
.tcs-pk-meta { font-size: 13px; color: var(--tcs-muted); }
.tcs-pk ul { margin: 4px 0 0; padding: 0 0 0 18px; font-size: 14px; color: var(--tcs-ink-2); }
.tcs-pk ul li { margin: 2px 0; }
.tcs-pk-price { margin-top: auto; padding-top: 10px; font-size: 20px; font-weight: 600; color: var(--tcs-rose); }

.tcs-chosen {
	display: flex; align-items: center; justify-content: space-between; gap: 14px; flex-wrap: wrap;
	padding: 14px 18px; margin-bottom: 22px; background: var(--tcs-sand); border-radius: var(--tcs-radius);
}
.tcs-chosen div { display: flex; flex-direction: column; gap: 2px; }
.tcs-chosen-label { font-size: 12px; text-transform: uppercase; letter-spacing: .12em; color: var(--tcs-terracotta); }
.tcs-chosen strong { font-size: 18px; }
.tcs-chosen span:last-child { color: var(--tcs-ink-2); font-size: 14px; }

.tcs-cal-area { display: grid; grid-template-columns: minmax(0, 1.25fr) minmax(0, 1fr); gap: 26px; align-items: start; }
.tcs-calendar, .tcs-times { background: #fff; border: 1.5px solid var(--tcs-line); border-radius: var(--tcs-radius); padding: 18px; }
.tcs-cal-head { display: flex; align-items: center; justify-content: space-between; margin-bottom: 12px; }
.tcs-cal-head strong { font-family: var(--tcs-font-head); font-size: 24px; font-weight: 600; }
.tcs-cal-head button { width: 40px; height: 40px; border-radius: 50%; border: 1.5px solid var(--tcs-line); background: #fff; font-size: 22px; line-height: 1; cursor: pointer; color: var(--tcs-ink); }
.tcs-cal-head button:hover:not(:disabled) { border-color: var(--tcs-rose); color: var(--tcs-rose); }
.tcs-cal-head button:disabled { opacity: .3; cursor: default; }
.tcs-cal-grid { display: grid; grid-template-columns: repeat(7, 1fr); gap: 5px; }
.tcs-dow { text-align: center; font-size: 12px; text-transform: uppercase; letter-spacing: .08em; color: var(--tcs-muted); padding: 4px 0 8px; }
.tcs-day {
	aspect-ratio: 1; min-height: 40px; border-radius: 10px; border: 1.5px solid transparent; background: transparent;
	font: inherit; font-size: 15px; color: var(--tcs-ink); cursor: pointer; position: relative; transition: all .15s;
}
.tcs-day.is-blank { visibility: hidden; }
.tcs-day.is-available { background: #fff; border-color: var(--tcs-line); }
.tcs-day.is-available:hover { border-color: var(--tcs-rose); color: var(--tcs-rose); }
.tcs-day.is-limited { background: #fff8ec; border-color: #f5d9a6; }
.tcs-day.is-limited::after { content: ''; position: absolute; left: 50%; bottom: 5px; width: 5px; height: 5px; margin-left: -2.5px; border-radius: 50%; background: var(--tcs-amber); }
.tcs-day.is-full, .tcs-day.is-blocked { color: #b9adad; text-decoration: line-through; cursor: not-allowed; background: #f7f3f1; }
.tcs-day.is-past, .tcs-day.is-closed { color: #cfc5c5; cursor: not-allowed; }
.tcs-day.is-selected, .tcs-day.is-selected:hover { background: var(--tcs-rose) !important; border-color: var(--tcs-rose) !important; color: #fff !important; }
.tcs-times h4 { margin: 0 0 14px; font-size: 15px; font-weight: 600; letter-spacing: .04em; text-transform: uppercase; color: var(--tcs-ink-2); }
.tcs-slot-list { display: grid; grid-template-columns: repeat(auto-fill, minmax(104px, 1fr)); gap: 8px; }
.tcs-slot-list p { grid-column: 1 / -1; margin: 0; }
.tcs-slot {
	min-height: 46px; border-radius: 10px; border: 1.5px solid var(--tcs-line); background: #fff; font: inherit; font-size: 15px;
	color: var(--tcs-ink); cursor: pointer; transition: all .15s;
}
.tcs-slot:hover { border-color: var(--tcs-rose); color: var(--tcs-rose); }
.tcs-slot.is-selected { background: var(--tcs-rose); border-color: var(--tcs-rose); color: #fff; }
.tcs-event-ok { margin: 0; padding: 14px; border-radius: 10px; background: #eef6f0; color: var(--tcs-ok); }
.tcs-intakes { display: grid; gap: 10px; }
.tcs-intake {
	display: flex; justify-content: space-between; align-items: center; gap: 12px; padding: 16px 18px; text-align: left;
	border: 1.5px solid var(--tcs-line); border-radius: 12px; background: #fff; font: inherit; cursor: pointer;
}
.tcs-intake span { color: var(--tcs-muted); font-size: 14px; }
.tcs-intake.is-selected { border-color: var(--tcs-rose); box-shadow: 0 0 0 3px var(--tcs-rose-soft); }
.tcs-intake:disabled { opacity: .5; cursor: not-allowed; }
.tcs-cal-key { display: flex; flex-wrap: wrap; gap: 18px; list-style: none; margin: 16px 0 0; padding: 0; font-size: 13px; color: var(--tcs-muted); }
.tcs-cal-key li { margin: 0; display: flex; align-items: center; gap: 7px; }
.tcs-cal-key i { width: 14px; height: 14px; border-radius: 4px; border: 1.5px solid var(--tcs-line); display: inline-block; }
.tcs-cal-key .k-limited { background: #fff8ec; border-color: #f5d9a6; }
.tcs-cal-key .k-full { background: #f7f3f1; }
.tcs-nav { display: flex; justify-content: space-between; gap: 12px; margin-top: 28px; padding-top: 22px; border-top: 1px solid var(--tcs-line); }
.tcs-summary dl { display: grid; grid-template-columns: max-content 1fr; gap: 10px 26px; margin: 0 0 18px; padding: 20px 22px; background: #fff; border: 1.5px solid var(--tcs-line); border-radius: var(--tcs-radius); }
.tcs-summary dt { color: var(--tcs-muted); font-size: 14px; }
.tcs-summary dd { margin: 0; font-weight: 500; }
.tcs-summary-total { display: flex; justify-content: space-between; align-items: baseline; padding: 16px 22px; border-radius: var(--tcs-radius); background: var(--tcs-ink); color: #fff; }
.tcs-summary-total strong { font-size: 26px; font-family: var(--tcs-font-head); }
.tcs-deposit-note { margin: 12px 0 0; padding: 12px 16px; border-left: 3px solid var(--tcs-amber); background: #fff8ec; font-size: 14px; }
.tcs-terms { margin: 22px 0 10px; padding-left: 20px; color: var(--tcs-ink-2); font-size: 14px; }
.tcs-terms li { margin: 4px 0; }
.tcs-error { color: var(--tcs-orange); }

/* ---------- Quote wizard ---------- */
.tcs-quote { max-width: 900px; margin: 0 auto; background: #fff; border: 1.5px solid var(--tcs-line); border-radius: 20px; padding: clamp(20px, 4vw, 44px); box-shadow: var(--tcs-shadow); }
.tcs-q-progress { height: 4px; border-radius: 4px; background: var(--tcs-sand); overflow: hidden; }
.tcs-q-progress span { display: block; height: 100%; background: linear-gradient(90deg, var(--tcs-peach), var(--tcs-rose)); transition: width .4s ease; }
.tcs-q-count { margin: 12px 0 18px; font-size: 13px; text-transform: uppercase; letter-spacing: .12em; color: var(--tcs-muted); }
.tcs-q-screen { animation: tcsFade .35s ease; min-height: 240px; }
.tcs-q-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(190px, 1fr)); gap: 12px; }
.tcs-q-grid--3 { grid-template-columns: repeat(auto-fill, minmax(200px, 1fr)); }
.tcs-q-card {
	display: flex; flex-direction: column; gap: 6px; align-items: flex-start; text-align: left; padding: 18px; min-height: 112px;
	border: 1.5px solid var(--tcs-line); border-radius: var(--tcs-radius); background: #fff; font: inherit; color: var(--tcs-ink); cursor: pointer; transition: all .2s;
}
.tcs-q-card strong { font-family: var(--tcs-font-head); font-size: 21px; font-weight: 600; line-height: 1.15; }
.tcs-q-card span { font-size: 13px; color: var(--tcs-muted); line-height: 1.4; }
.tcs-q-card em { margin-top: auto; font-style: normal; font-size: 14px; color: var(--tcs-rose); font-weight: 500; }
.tcs-q-card:hover { border-color: var(--tcs-peach); transform: translateY(-2px); box-shadow: var(--tcs-shadow); }
.tcs-q-card.is-selected { border-color: var(--tcs-rose); box-shadow: 0 0 0 3px var(--tcs-rose-soft); }
.tcs-q-list { display: grid; gap: 10px; }
.tcs-q-row {
	display: flex; align-items: center; justify-content: space-between; gap: 16px; width: 100%; padding: 15px 18px; text-align: left;
	border: 1.5px solid var(--tcs-line); border-radius: 12px; background: #fff; font: inherit; color: var(--tcs-ink); cursor: pointer; transition: all .15s;
}
.tcs-q-row:hover { border-color: var(--tcs-peach); }
.tcs-q-row.is-selected { border-color: var(--tcs-rose); background: #fffafa; box-shadow: 0 0 0 3px var(--tcs-rose-soft); }
.tcs-q-row strong { white-space: nowrap; color: var(--tcs-rose); font-weight: 600; }
.tcs-q-row small { color: var(--tcs-muted); font-weight: 400; }
.tcs-q-addon label { display: flex; align-items: center; gap: 12px; flex: 1; cursor: pointer; margin: 0; }
.tcs-q-addon input[type=checkbox] { width: 20px; height: 20px; accent-color: var(--tcs-rose); flex: none; }
.tcs-q-addon input[type=number] { width: 76px; min-height: 40px; }
.tcs-q-qty { display: flex; flex-wrap: wrap; align-items: center; gap: 10px; margin-top: 18px; font-weight: 500; }
.tcs-q-qty input { width: 110px !important; }
.tcs-q-qty small { color: var(--tcs-muted); font-weight: 400; }
.tcs-q-when { display: flex; flex-wrap: wrap; align-items: flex-end; gap: 18px; margin-bottom: 22px; }
.tcs-q-when label { display: flex; flex-direction: column; gap: 6px; font-weight: 500; font-size: 14px; }
.tcs-q-when input[type=date] { width: 220px; }
.tcs-q-check { flex-direction: row !important; align-items: center; gap: 8px !important; padding-bottom: 12px; cursor: pointer; }
.tcs-q-check input { width: 18px; height: 18px; accent-color: var(--tcs-rose); }
.tcs-q-sub { margin: 0 0 10px; font-weight: 600; font-size: 14px; letter-spacing: .04em; text-transform: uppercase; color: var(--tcs-ink-2); }
.tcs-q-hint { margin-top: 14px; font-size: 14px; color: var(--tcs-muted); }
.tcs-q-err { margin: 10px 0 0; color: var(--tcs-orange); font-weight: 500; }
.tcs-q-bar {
	position: sticky; bottom: 0; z-index: 5; display: grid; grid-template-columns: auto 1fr auto; align-items: center; gap: 14px;
	margin: 28px calc(-1 * clamp(20px, 4vw, 44px)) calc(-1 * clamp(20px, 4vw, 44px)); padding: 16px clamp(20px, 4vw, 44px);
	background: rgba(255, 255, 255, .96); backdrop-filter: blur(6px); border-top: 1px solid var(--tcs-line); border-radius: 0 0 20px 20px;
}
.tcs-q-total { text-align: center; }
.tcs-q-total small { display: block; font-size: 12px; text-transform: uppercase; letter-spacing: .1em; color: var(--tcs-muted); }
.tcs-q-total strong { font-family: var(--tcs-font-head); font-size: 28px; color: var(--tcs-rose); }
.tcs-q-result { text-align: left; }
.tcs-q-ref { margin: 0 0 6px; font-size: 13px; letter-spacing: .1em; text-transform: uppercase; color: var(--tcs-muted); }
.tcs-q-ref strong { color: var(--tcs-ink); }
.tcs-q-lines { width: 100%; border-collapse: collapse; margin: 0 0 16px; }
.tcs-q-lines td { padding: 12px 0; border-bottom: 1px solid var(--tcs-line); vertical-align: top; }
.tcs-q-lines td:last-child { text-align: right; white-space: nowrap; padding-left: 16px; }
.tcs-q-grand td { border: 0; padding-top: 16px; font-weight: 600; }
.tcs-q-grand td:last-child { font-family: var(--tcs-font-head); font-size: 30px; color: var(--tcs-rose); }
.tcs-q-note { padding: 12px 16px; background: var(--tcs-sand); border-radius: 10px; font-size: 14px; color: var(--tcs-ink-2); }
.tcs-q-actions { display: flex; flex-wrap: wrap; gap: 10px; margin: 20px 0 16px; }

/* ---------- Packages ---------- */
.tcs-packages-grid { display: grid; gap: 22px; grid-template-columns: repeat(3, minmax(0, 1fr)); margin: 10px 0 20px; }
.tcs-packages-grid.tcs-cols-2 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.tcs-packages-grid.tcs-cols-4 { grid-template-columns: repeat(4, minmax(0, 1fr)); }
.tcs-packages-grid.tcs-cols-1 { grid-template-columns: 1fr; }
.tcs-package {
	position: relative; display: flex; flex-direction: column; padding: 30px 26px 26px; background: #fff;
	border: 1.5px solid var(--tcs-line); border-radius: 18px; transition: transform .3s, box-shadow .3s, border-color .3s;
}
.tcs-package:hover { transform: translateY(-4px); box-shadow: var(--tcs-shadow); border-color: var(--tcs-peach); }
.tcs-package.is-featured { border-color: var(--tcs-rose); box-shadow: 0 16px 40px rgba(181, 75, 77, .12); }
.tcs-package-badge {
	position: absolute; top: -13px; left: 26px; padding: 5px 14px; border-radius: 999px; background: var(--tcs-rose); color: #fff;
	font-size: 12px; letter-spacing: .08em; text-transform: uppercase;
}
.tcs-classes .tcs-package-badge { position: static; display: inline-block; margin-bottom: 10px; }
.tcs-admin-flag {
	position: absolute; top: 12px; right: 12px; padding: 3px 8px; border-radius: 6px; background: #fff3cd; color: #7a5a00;
	font-size: 11px; font-weight: 600; border: 1px dashed #d9b440;
}
.tcs-classes .tcs-admin-flag { position: static; display: inline-block; margin: 0 0 8px 8px; }
.tcs-package-name { margin: 4px 0 6px !important; font-family: var(--tcs-font-head); font-size: 26px !important; font-weight: 600 !important; line-height: 1.15 !important; }
.tcs-package-price { font-size: 32px; font-weight: 600; color: var(--tcs-rose); line-height: 1.1; font-family: var(--tcs-font-head); }
.tcs-package-price small { font-family: inherit; display: inline-block; margin-left: 6px; font-size: 14px; color: var(--tcs-muted); font-weight: 400; }
.tcs-package-meta { margin: 6px 0 0; font-size: 13px; color: var(--tcs-muted); letter-spacing: .02em; }
.tcs-package-intro { margin: 14px 0 0; font-size: 15px; color: var(--tcs-ink-2); line-height: 1.55; }
.tcs-package-features { list-style: none; margin: 16px 0 0 !important; padding: 16px 0 0 !important; border-top: 1px solid var(--tcs-line); }
.tcs-package-features li { position: relative; margin: 0 0 9px !important; padding-left: 26px; font-size: 15px; line-height: 1.45; color: var(--tcs-ink-2); }
.tcs-package-features li::before {
	content: ''; position: absolute; left: 0; top: .28em; width: 16px; height: 16px; border-radius: 50%; background: var(--tcs-rose-soft);
	-webkit-mask: none; box-shadow: inset 0 0 0 5px var(--tcs-rose-soft);
}
.tcs-package-features li::after { content: ''; position: absolute; left: 5px; top: calc(.28em + 4px); width: 6px; height: 3.5px; border: 2px solid var(--tcs-rose); border-top: 0; border-right: 0; transform: rotate(-45deg); }
.tcs-package-actions { display: flex; flex-wrap: wrap; align-items: center; gap: 14px; margin-top: auto; padding-top: 22px; }

.tcs-package-nav { position: sticky; top: 90px; z-index: 20; margin: 0 0 30px; padding: 10px 0; background: rgba(251, 247, 243, .94); backdrop-filter: blur(6px); }
.tcs-package-nav ul { display: flex; flex-wrap: wrap; justify-content: center; gap: 8px; list-style: none; margin: 0; padding: 0 2px; }
@media (max-width: 782px) {
	.tcs-package-nav ul { flex-wrap: nowrap; justify-content: flex-start; overflow-x: auto; scrollbar-width: none; }
}
.tcs-package-nav ul::-webkit-scrollbar { display: none; }
.tcs-package-nav li { margin: 0; flex: none; }
.tcs-package-nav a { display: block; padding: 8px 16px; border-radius: 999px; border: 1.5px solid var(--tcs-line); background: #fff; color: var(--tcs-ink-2); font-size: 14px; text-decoration: none; white-space: nowrap; transition: all .2s; }
.tcs-package-nav a:hover, .tcs-package-nav a:focus-visible { border-color: var(--tcs-rose); color: var(--tcs-rose); }

.tcs-addons { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 0 34px; list-style: none; margin: 0 !important; padding: 0 !important; }
.tcs-addons li { display: flex; justify-content: space-between; gap: 18px; margin: 0 !important; padding: 14px 0; border-bottom: 1px dashed var(--tcs-line); font-size: 15px; }
.tcs-addons strong { color: var(--tcs-rose); white-space: nowrap; font-weight: 600; }
.tcs-eyebrow { margin: 0 0 8px; font-size: 13px; letter-spacing: .18em; text-transform: uppercase; color: var(--tcs-terracotta); }
.tcs-reviews-head { text-align: center; margin-bottom: 26px; }
.tcs-reviews-head h2 { margin: 0 !important; font-family: var(--tcs-font-head); font-weight: 500 !important; font-size: clamp(32px, 4vw, 48px) !important; }
@media (max-width: 640px) { .tcs-addons { grid-template-columns: 1fr; } }

/* ---------- Masterclasses ---------- */
.tcs-classes { display: grid; gap: 26px; }
.tcs-class { display: grid; grid-template-columns: minmax(0, 5fr) minmax(0, 7fr); background: #fff; border: 1.5px solid var(--tcs-line); border-radius: 20px; overflow: hidden; scroll-margin-top: 120px; }
.tcs-class-img img { width: 100%; height: 100%; object-fit: cover; display: block; min-height: 260px; }
.tcs-class-body { padding: clamp(22px, 3vw, 38px); display: flex; flex-direction: column; }
.tcs-class-body h3 { margin: 4px 0 10px !important; font-family: var(--tcs-font-head); font-size: clamp(26px, 2.6vw, 34px) !important; font-weight: 600 !important; line-height: 1.12 !important; }
.tcs-class-level { margin: 0; font-size: 13px; letter-spacing: .12em; text-transform: uppercase; color: var(--tcs-terracotta); }
.tcs-class-foot { display: flex; flex-wrap: wrap; align-items: flex-end; justify-content: space-between; gap: 16px; margin-top: auto; padding-top: 22px; }
.tcs-enrol { display: flex; flex-wrap: wrap; align-items: flex-end; gap: 10px; }
.tcs-enrol label { display: flex; flex-direction: column; gap: 4px; margin: 0; font-size: 12px; text-transform: uppercase; letter-spacing: .08em; color: var(--tcs-muted); }
.tcs-enrol select { min-width: 210px; }
.tcs-enrol .tcs-seats input { width: 84px; }

/* ---------- Reviews ---------- */
.tcs-stars { display: inline-flex; gap: 2px; font-size: 18px; line-height: 1; letter-spacing: 0; }
.tcs-stars span { color: #e2d7d0; }
.tcs-stars span.on { color: var(--tcs-amber); }
.tcs-stars span.half { background: linear-gradient(90deg, var(--tcs-amber) 50%, #e2d7d0 50%); -webkit-background-clip: text; background-clip: text; color: transparent; }
.tcs-reviews-summary { display: flex; align-items: center; justify-content: center; gap: 10px; margin: 0 0 30px; font-size: 16px; }
.tcs-reviews-summary strong { font-size: 22px; }
.tcs-reviews-summary .tcs-reviews-count { color: var(--tcs-muted); }
.tcs-reviews--grid { columns: 3 300px; column-gap: 22px; }
.tcs-reviews--grid .tcs-review { break-inside: avoid; margin: 0 0 22px; }
.tcs-reviews--carousel { display: grid; grid-auto-flow: column; grid-auto-columns: minmax(290px, 32%); gap: 22px; overflow-x: auto; scroll-snap-type: x mandatory; padding-bottom: 12px; }
.tcs-reviews--carousel .tcs-review { scroll-snap-align: start; margin: 0; }
.tcs-review { background: #fff; border: 1.5px solid var(--tcs-line); border-radius: 18px; overflow: hidden; }
.tcs-review-photo img { display: block; width: 100%; height: auto; max-height: 320px; object-fit: cover; }
.tcs-review-body { padding: 22px 24px 24px; }
.tcs-review blockquote { margin: 12px 0 16px !important; padding: 0 !important; border: 0 !important; font-family: var(--tcs-font-head); font-size: 20px; line-height: 1.5; font-style: italic; color: var(--tcs-ink); background: none !important; }
.tcs-review blockquote p { margin: 0 0 .6em; font: inherit; }
.tcs-review figcaption { display: flex; flex-direction: column; gap: 2px; font-size: 14px; }
.tcs-review figcaption strong { font-size: 15px; letter-spacing: .03em; }
.tcs-review figcaption span { color: var(--tcs-muted); }
.tcs-reviews-empty { text-align: center; padding: 26px; border: 1.5px dashed var(--tcs-line); border-radius: 18px; color: var(--tcs-ink-2); }

.tcs-review-form { max-width: 760px; margin: 0 auto; padding: clamp(22px, 4vw, 40px); background: #fff; border: 1.5px solid var(--tcs-line); border-radius: 20px; }
.tcs-stars-fieldset { margin: 0 0 20px; padding: 0; border: 0; }
.tcs-stars-fieldset legend { padding: 0; margin-bottom: 6px; }
.tcs-stars-input { display: inline-flex; flex-direction: row-reverse; justify-content: flex-end; gap: 4px; }
.tcs-review blockquote::before, .tcs-review blockquote::after { content: none !important; display: none !important; }
.tcs-stars span { font-style: normal; text-shadow: none; }
.tcs-stars-input input { position: absolute; opacity: 0; width: 1px; height: 1px; }
.tcs-stars-input label { font-size: 0; cursor: pointer; }
.tcs-stars-input label::before { content: '★'; font-size: 36px; line-height: 1; color: #e2d7d0; transition: color .15s, transform .15s; display: inline-block; }
.tcs-stars-input input:checked ~ label::before, .tcs-stars-input label:hover::before, .tcs-stars-input label:hover ~ label::before { color: var(--tcs-amber); }
.tcs-stars-input input:focus-visible + label::before { outline: 3px solid var(--tcs-amber); outline-offset: 2px; border-radius: 4px; }
.tcs-consent label { display: flex !important; gap: 10px; align-items: flex-start; font-weight: 400 !important; font-size: 14px !important; }
.tcs-consent input { width: 18px; height: 18px; margin-top: 2px; accent-color: var(--tcs-rose); flex: none; }
.tcs-alert { max-width: 760px; margin: 0 auto 18px; padding: 14px 18px; border-radius: 12px; font-size: 15px; }
.tcs-alert--ok { background: #eef6f0; color: #245235; border: 1px solid #cfe5d6; }
.tcs-alert--error { background: #fff1ec; color: #8c2f16; border: 1px solid #f6cdbd; }

/* ---------- Contact ---------- */
.tcs-contact-card { display: grid; gap: 22px; padding: clamp(22px, 3vw, 36px); background: #fff; border: 1.5px solid var(--tcs-line); border-radius: 20px; }
.tcs-cc-row { display: flex; gap: 16px; align-items: flex-start; line-height: 1.6; }
.tcs-cc-row a { color: var(--tcs-rose); }
.tcs-cc-icon { display: grid; place-items: center; flex: none; width: 44px; height: 44px; border-radius: 50%; background: var(--tcs-rose-soft); }
.tcs-cc-icon svg { width: 20px; height: 20px; fill: var(--tcs-rose); }
.tcs-cc-actions { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 14px; padding-top: 18px; border-top: 1px solid var(--tcs-line); }
.tcs-social { display: flex; gap: 8px; list-style: none; margin: 0; padding: 0; }
.tcs-social li { margin: 0; }
.tcs-social a { display: grid; place-items: center; width: 42px; height: 42px; border-radius: 50%; border: 1.5px solid var(--tcs-line); transition: all .2s; }
.tcs-social svg { width: 18px; height: 18px; fill: var(--tcs-ink); transition: fill .2s; }
.tcs-social a:hover { border-color: var(--tcs-rose); background: var(--tcs-rose); }
.tcs-social a:hover svg { fill: #fff; }
.tcs-map iframe { display: block; border-radius: 20px; filter: saturate(.85) contrast(1.02); }

/* ---------- CTA band ---------- */
.tcs-cta { text-align: center; padding: clamp(36px, 6vw, 70px) 20px; }
.tcs-cta h2 { margin: 0 0 12px !important; font-family: var(--tcs-font-head); font-size: clamp(32px, 4.4vw, 54px) !important; font-weight: 500 !important; line-height: 1.1 !important; }
.tcs-cta p { max-width: 560px; margin: 0 auto 26px; font-size: 17px; color: var(--tcs-ink-2); }
.tcs-cta-actions { display: flex; flex-wrap: wrap; justify-content: center; gap: 12px; }

/* ---------- Floating WhatsApp ---------- */
.tcs-wa-float {
	position: fixed; right: 20px; bottom: 20px; z-index: 9990; display: flex; align-items: center; gap: 10px; height: 56px; padding: 0 18px 0 16px;
	border-radius: 999px; background: var(--tcs-wa); color: #fff !important; text-decoration: none !important; box-shadow: 0 10px 28px rgba(0, 0, 0, .22); transition: transform .2s, box-shadow .2s;
}
.tcs-wa-float:hover { transform: translateY(-2px); box-shadow: 0 14px 34px rgba(0, 0, 0, .28); }
.tcs-wa-float .tcs-wa-icon { width: 26px; height: 26px; }
.tcs-wa-float-label { font-size: 15px; font-weight: 500; }

/* ---------- Checkout / thank-you / account ---------- */
.tcs-checkout-note { margin: 0 0 14px; padding: 12px 14px; border-radius: 10px; background: var(--tcs-sand); font-size: 14px; color: var(--tcs-ink-2); }
.tcs-pay-box { margin: 26px 0; padding: clamp(20px, 3vw, 32px); border: 1.5px solid var(--tcs-line); border-radius: 18px; background: #fff; }
.tcs-pay-box h2 { margin-top: 0 !important; font-family: var(--tcs-font-head); font-weight: 600 !important; }
.tcs-pay-lead { font-size: 16px; line-height: 1.6; }
.tcs-receipt-ok { padding: 10px 14px; border-radius: 10px; background: #eef6f0; color: #245235; }
.tcs-receipt-form { display: grid; gap: 10px; max-width: 520px; margin-top: 16px; padding: 18px; border-radius: 14px; background: var(--tcs-sand); }
.tcs-receipt-form label { font-weight: 600; }
.tcs-receipt-form input[type=file] { padding: 10px; background: #fff; border-radius: 10px; border: 1.5px dashed var(--tcs-terracotta); }
.tcs-receipt-form small { color: var(--tcs-muted); }
.tcs-duitnow { display: flex; flex-wrap: wrap; align-items: center; gap: 22px; margin: 16px 0; }
.tcs-duitnow ul { list-style: none; margin: 0; padding: 0; }
.tcs-badge { display: inline-block; padding: 3px 10px; border-radius: 999px; font-size: 12px; font-weight: 600; letter-spacing: .03em; }
.tcs-badge--pending { background: #fff3cd; color: #7a5a00; }
.tcs-badge--confirmed { background: #e3f1e7; color: #245235; }
.tcs-badge--completed { background: #e7ecf6; color: #2c3e66; }
.tcs-badge--cancelled { background: #f3e5e5; color: #7c2d2d; }
.tcs-single-book { display: flex; flex-wrap: wrap; align-items: center; gap: 18px; margin: 22px 0; }

/* ---------- Responsive ---------- */
@media (max-width: 1024px) {
	.tcs-packages-grid, .tcs-packages-grid.tcs-cols-4 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
	.tcs-class { grid-template-columns: 1fr; }
	.tcs-class-img img { max-height: 340px; }
}
@media (max-width: 782px) {
	.tcs-filter { flex-wrap: nowrap; overflow-x: auto; margin-left: -4px; margin-right: -4px; padding: 2px 4px 8px; scrollbar-width: none; }
	.tcs-filter::-webkit-scrollbar { display: none; }
	.tcs-filter button { flex: none; white-space: nowrap; }
	.tcs-packages.is-categories { grid-template-columns: 1fr 1fr; gap: 12px; }
	.tcs-cat-body { padding: 10px 12px 12px; }
	.tcs-cat-body strong { font-size: 18px; }
	.tcs-cal-area { grid-template-columns: 1fr; }
	.tcs-steps li { font-size: 0; justify-content: center; padding: 10px 4px; }
	.tcs-steps li span { font-size: 13px; }
	.tcs-fields { grid-template-columns: 1fr; }
	.tcs-package-nav { top: 60px; }
}
@media (max-width: 640px) {
	.tcs-packages-grid, .tcs-packages-grid.tcs-cols-2, .tcs-packages-grid.tcs-cols-3, .tcs-packages-grid.tcs-cols-4 { grid-template-columns: 1fr; }
	.tcs-q-bar { grid-template-columns: 1fr 1fr; }
	.tcs-q-total { grid-column: 1 / -1; order: -1; }
	.tcs-q-bar .tcs-btn { width: 100%; }
	.tcs-q-grid { grid-template-columns: 1fr 1fr; }
	.tcs-q-card { min-height: 96px; padding: 14px; }
	.tcs-q-card strong { font-size: 18px; }
	.tcs-wa-float { width: 56px; padding: 0; justify-content: center; right: 14px; bottom: 14px; }
	.tcs-wa-float-label { display: none; }
	.tcs-summary dl { grid-template-columns: 1fr; gap: 2px; }
	.tcs-summary dd { margin-bottom: 10px; }
	.tcs-reviews--carousel { grid-auto-columns: 86%; }
	.tcs-nav .tcs-btn { flex: 1; }
	.tcs-enrol, .tcs-enrol select { width: 100%; }
}

/* ---------- Print (quotation) ---------- */
@media print {
	body * { visibility: hidden; }
	.tcs-quote, .tcs-quote * { visibility: visible; }
	.tcs-quote { position: absolute; left: 0; top: 0; width: 100%; border: 0; box-shadow: none; }
	.tcs-q-actions, [data-restart], .tcs-wa-float { display: none !important; }
}
