/* The SELF Centre: live booking blocks + contact form */

.tsc-btn {
	display: inline-flex; align-items: center; gap: 0.35rem;
	font-weight: 600; font-size: 1rem; letter-spacing: 0.02em;
	color: var(--wp--preset--color--forest);
	text-decoration: none;
	border-bottom: 2px solid var(--wp--preset--color--terracotta);
	padding: 0.2rem 0;
	white-space: nowrap;
}
.tsc-btn:hover { color: var(--wp--preset--color--terracotta); }
.tsc-btn:focus-visible { outline: 2px solid var(--wp--preset--color--terracotta-deep); outline-offset: 3px; }
.tsc-product.is-featured .tsc-btn:focus-visible { outline-color: var(--wp--preset--color--cream); }
.tsc-btn-solid {
	border: 0; cursor: pointer; font-family: inherit;
	background: var(--wp--preset--color--forest); color: var(--wp--preset--color--cream);
	border-radius: 999px; padding: 0.85rem 1.7rem; font-size: 1.0625rem; min-height: 48px;
}
.tsc-btn-solid:hover { background: var(--wp--preset--color--forest-deep); color: var(--wp--preset--color--cream); }
.tsc-feed-fallback, .tsc-events-empty {
	background: var(--wp--preset--color--cream-soft); border: 1px dashed rgba(61, 79, 46, 0.3);
	border-radius: 16px; padding: 1.25rem 1.5rem; margin: 0;
}

/* ---------- Events ---------- */
.tsc-events-grid {
	display: grid; gap: clamp(1rem, 2.5vw, 1.75rem);
	grid-template-columns: repeat(auto-fill, minmax(min(100%, 19rem), 1fr));
}
.tsc-event {
	display: flex; flex-direction: column;
	background: var(--wp--preset--color--cream-soft);
	border: 1px solid rgba(61, 79, 46, 0.14);
	border-radius: 22px; overflow: hidden;
}
.tsc-event-media { position: relative; aspect-ratio: 4 / 3; background: var(--wp--preset--color--sage); overflow: hidden; }
.tsc-event-media img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; object-position: center 30%; display: block; }
.tsc-event:not(.has-image) .tsc-event-media { aspect-ratio: auto; height: 5.5rem; background: var(--wp--preset--color--sage); }
.tsc-datestamp {
	position: absolute; left: 1rem; top: 1rem;
	background: var(--wp--preset--color--cream); color: var(--wp--preset--color--forest);
	border-radius: 14px; padding: 0.4rem 0.7rem 0.5rem; text-align: center; line-height: 1;
	box-shadow: 0 6px 18px rgba(34, 48, 26, 0.18);
}
.tsc-datestamp .d { display: block; font-family: var(--wp--preset--font-family--display); font-size: 1.9rem; }
.tsc-datestamp .m { display: block; font-size: 0.75rem; font-weight: 600; letter-spacing: 0.16em; text-transform: uppercase; margin-top: 0.15rem; }
.tsc-event-body { display: flex; flex-direction: column; gap: 0.5rem; padding: 1.25rem 1.4rem 1.4rem; flex: 1; }
.tsc-event-when { margin: 0; font-size: 0.8125rem; font-weight: 600; letter-spacing: 0.14em; text-transform: uppercase; color: var(--wp--preset--color--terracotta-deep); }
.tsc-event-title { margin: 0; font-size: var(--wp--preset--font-size--large); line-height: 1.15; }
.tsc-event-desc { color: var(--wp--preset--color--ink-soft); font-size: 1.0625rem; }
.tsc-event-desc p { margin: 0; }
.tsc-event-count { margin: 0; color: var(--wp--preset--color--ink-soft); }
.tsc-event-also { margin: 0.25rem 0 0; font-size: 0.95rem; font-weight: 500; color: var(--wp--preset--color--forest); }
.tsc-event-sessions { border-top: 1px solid rgba(61, 79, 46, 0.14); padding-top: 0.5rem; }
.tsc-event-sessions summary { cursor: pointer; font-weight: 600; color: var(--wp--preset--color--forest); padding: 0.4rem 0; }
.tsc-event-sessions summary:focus-visible { outline: 2px solid var(--wp--preset--color--terracotta); outline-offset: 2px; }
.tsc-event-sessions h4 { font-family: var(--wp--preset--font-family--body); font-size: 0.8125rem; font-weight: 600; letter-spacing: 0.14em; text-transform: uppercase; color: var(--wp--preset--color--terracotta-deep); margin: 0.9rem 0 0.3rem; }
.tsc-event-sessions ul { list-style: none; margin: 0; padding: 0; display: grid; gap: 0.35rem; }
.tsc-event-sessions li { display: grid; grid-template-columns: 4.2rem 1fr; column-gap: 0.5rem; font-size: 1rem; line-height: 1.3; }
.tsc-event-sessions li .t { font-weight: 600; color: var(--wp--preset--color--forest); }
.tsc-event-sessions li .p { grid-column: 2; font-size: 0.875rem; color: var(--wp--preset--color--ink-soft); }
.tsc-event-sessions li a { color: var(--wp--preset--color--ink); text-decoration-color: rgba(180, 87, 58, 0.5); text-underline-offset: 3px; }
.tsc-event-foot { margin-top: auto; padding-top: 0.75rem; display: flex; align-items: center; justify-content: space-between; gap: 1rem; flex-wrap: wrap; }
.tsc-event-price { font-family: var(--wp--preset--font-family--display); font-size: 1.6rem; color: var(--wp--preset--color--forest); line-height: 1; }
.tsc-spaces { font-family: var(--wp--preset--font-family--body); font-style: normal; font-size: 0.875rem; font-weight: 600; color: var(--wp--preset--color--terracotta-deep); margin-left: 0.4rem; }

/* ---------- Timetable ---------- */
.tsc-tt { margin: 0; display: grid; }
.tsc-tt-day { display: grid; grid-template-columns: 9.5rem 1fr; column-gap: 1.5rem; padding: 0.95rem 0; border-bottom: 1px solid rgba(61, 79, 46, 0.16); }
.tsc-tt-day:first-child { border-top: 1px solid rgba(61, 79, 46, 0.16); }
.tsc-tt dt { grid-row: 1 / span 10; font-family: var(--wp--preset--font-family--display); font-size: 1.35rem; color: var(--wp--preset--color--forest); line-height: 1.2; }
.tsc-tt dd { margin: 0; display: flex; flex-wrap: wrap; align-items: baseline; column-gap: 0.75rem; row-gap: 0.1rem; padding: 0.15rem 0; }
.tsc-tt-name { font-weight: 600; }
.tsc-tt-name a { color: var(--wp--preset--color--ink); text-decoration: none; }
.tsc-tt-name a:hover { color: var(--wp--preset--color--terracotta); text-decoration: underline; }
.tsc-tt-times { color: var(--wp--preset--color--ink-soft); }
.tsc-tt-price { margin-left: auto; font-weight: 600; color: var(--wp--preset--color--forest); }
.tsc-tt-closed { color: var(--wp--preset--color--ink-soft); font-style: italic; }
.tsc-tt-day.is-closed dt { color: var(--wp--preset--color--ink-soft); }
.tsc-today { display: inline-block; margin-left: 0.4rem; vertical-align: middle; font-family: var(--wp--preset--font-family--body); font-size: 0.7rem; font-weight: 600; letter-spacing: 0.14em; text-transform: uppercase; background: var(--wp--preset--color--terracotta); color: var(--wp--preset--color--cream); border-radius: 999px; padding: 0.2rem 0.55rem; }
.tsc-tt-day.is-today { background: linear-gradient(90deg, rgba(180, 87, 58, 0.07), transparent 70%); }
.tsc-tt-note { margin: 1rem 0 0; font-size: 0.95rem; color: var(--wp--preset--color--ink-soft); }
.wp-block-details .tsc-timetable { margin-top: 1rem; }
.wp-block-details .tsc-tt dt { font-size: 1.1rem; }
@media (max-width: 600px) {
	.tsc-tt-day { grid-template-columns: 1fr; }
	.tsc-tt dt { grid-row: auto; margin-bottom: 0.3rem; }
}

/* ---------- Sessions ---------- */
.tsc-sessions.is-layout-cards { display: grid; gap: clamp(1rem, 2.5vw, 1.75rem); grid-template-columns: repeat(auto-fill, minmax(min(100%, 19rem), 1fr)); }
.tsc-session { display: flex; flex-direction: column; background: var(--wp--preset--color--cream-soft); border: 1px solid rgba(61, 79, 46, 0.14); border-radius: 22px; overflow: hidden; }
.tsc-session-media { position: relative; aspect-ratio: 4 / 3; background: var(--wp--preset--color--sage); overflow: hidden; }
.tsc-session-media img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; object-position: center 30%; display: block; }
.tsc-session-body { display: flex; flex-direction: column; gap: 0.5rem; padding: 1.25rem 1.4rem 1.4rem; flex: 1; }
.tsc-session-meta { margin: 0; font-size: 0.8125rem; font-weight: 600; letter-spacing: 0.14em; text-transform: uppercase; color: var(--wp--preset--color--terracotta-deep); }
.tsc-session-title { margin: 0; font-size: var(--wp--preset--font-size--large); line-height: 1.15; }
.tsc-session-desc { color: var(--wp--preset--color--ink-soft); font-size: 1.0625rem; }
.tsc-session-desc p { margin: 0 0 0.5rem; }
.tsc-session-extras { margin: 0; font-size: 0.95rem; font-weight: 500; color: var(--wp--preset--color--forest); }
.tsc-session-foot { margin-top: auto; padding-top: 0.75rem; display: flex; align-items: center; flex-wrap: wrap; gap: 0.4rem 1rem; }
.tsc-session-price { font-family: var(--wp--preset--font-family--display); font-size: 1.8rem; color: var(--wp--preset--color--forest); line-height: 1; }
.tsc-session-next { font-size: 0.9rem; color: var(--wp--preset--color--ink-soft); flex: 1; }
.tsc-sessions.is-layout-list { display: grid; gap: 1rem; }
.tsc-sessions.is-layout-list .tsc-session { flex-direction: row; }
.tsc-sessions.is-layout-list .tsc-session-media { width: 34%; flex: none; aspect-ratio: auto; }
@media (max-width: 600px) { .tsc-sessions.is-layout-list .tsc-session { flex-direction: column; } .tsc-sessions.is-layout-list .tsc-session-media { width: 100%; aspect-ratio: 4/3; } }

/* ---------- Memberships & gifts ---------- */
.tsc-products { display: grid; gap: clamp(1rem, 2.5vw, 1.75rem); grid-template-columns: repeat(auto-fit, minmax(min(100%, 17rem), 1fr)); align-items: stretch; }
.tsc-products[data-count="1"] { max-width: 26rem; }
.tsc-product { position: relative; display: flex; flex-direction: column; gap: 0.5rem; background: var(--wp--preset--color--cream); border-radius: 22px; padding: 1.75rem 1.6rem 1.6rem; border: 1px solid rgba(61, 79, 46, 0.16); }
.tsc-product.is-featured { background: var(--wp--preset--color--forest); color: var(--wp--preset--color--cream); border-color: var(--wp--preset--color--forest); }
.tsc-product.is-featured .tsc-product-name, .tsc-product.is-featured .tsc-product-price span { color: var(--wp--preset--color--cream); }
.tsc-product.is-featured .tsc-product-desc, .tsc-product.is-featured .tsc-product-tag { color: rgba(239, 230, 210, 0.82); }
.tsc-product.is-featured .tsc-btn { color: var(--wp--preset--color--cream); border-color: var(--wp--preset--color--terracotta-soft); }
.tsc-product-flag { position: absolute; top: -0.8rem; left: 1.4rem; margin: 0; background: var(--wp--preset--color--terracotta); color: var(--wp--preset--color--cream); font-size: 0.75rem; font-weight: 600; letter-spacing: 0.14em; text-transform: uppercase; border-radius: 999px; padding: 0.3rem 0.8rem; }
.tsc-product-name { margin: 0; font-size: var(--wp--preset--font-size--x-large); }
.tsc-product-tag { margin: 0; color: var(--wp--preset--color--ink-soft); }
.tsc-product-price { margin: 0.3rem 0 0.4rem; color: inherit; opacity: 0.9; }
.tsc-product-price span { font-family: var(--wp--preset--font-family--display); font-size: 2.6rem; color: var(--wp--preset--color--forest); line-height: 1; margin-right: 0.2rem; }
.tsc-product-desc { font-size: 1.0625rem; color: var(--wp--preset--color--ink-soft); flex: 1; }
.tsc-product-desc p { margin: 0 0 0.6rem; }
.tsc-product .tsc-btn { align-self: flex-start; margin-top: 0.5rem; }

/* ---------- Contact form ---------- */
.tsc-contact { background: var(--wp--preset--color--cream-soft); border: 1px solid rgba(61, 79, 46, 0.16); border-radius: 22px; padding: clamp(1.25rem, 3vw, 2rem); }
.tsc-form { display: grid; gap: 1.1rem; }
.tsc-form .tsc-row { display: grid; grid-template-columns: 1fr 1fr; gap: 1.1rem; }
.tsc-form .tsc-field { display: grid; gap: 0.35rem; margin: 0; min-width: 0; }
.tsc-form label { font-size: 0.8125rem; font-weight: 600; letter-spacing: 0.14em; text-transform: uppercase; color: var(--wp--preset--color--forest); }
.tsc-form label .opt { text-transform: none; letter-spacing: 0; font-weight: 400; color: var(--wp--preset--color--ink-soft); }
.tsc-form input, .tsc-form select, .tsc-form textarea {
	width: 100%; font: inherit; font-size: 1.0625rem; color: var(--wp--preset--color--ink);
	background: var(--wp--preset--color--cream); border: 1px solid rgba(61, 79, 46, 0.32); border-radius: 12px;
	padding: 0.75rem 0.9rem; min-height: 48px; box-sizing: border-box;
}
.tsc-form textarea { resize: vertical; min-height: 9rem; line-height: 1.5; }
.tsc-form select { appearance: none; padding-right: 2.5rem; background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%233D4F2E' stroke-width='2'%3E%3Cpath d='M6 9l6 6 6-6'/%3E%3C/svg%3E"); background-repeat: no-repeat; background-position: right 0.8rem center; background-size: 1.1rem; }
.tsc-form input:focus-visible, .tsc-form select:focus-visible, .tsc-form textarea:focus-visible { outline: 2px solid var(--wp--preset--color--forest); outline-offset: 1px; border-color: var(--wp--preset--color--forest); }
.tsc-form-foot { display: flex; align-items: center; flex-wrap: wrap; gap: 1rem 1.25rem; }
.tsc-privacy { margin: 0; font-size: 0.95rem; color: var(--wp--preset--color--ink-soft); }
.tsc-hp { position: absolute !important; left: -9999px !important; width: 1px; height: 1px; overflow: hidden; }
.tsc-notice { border-radius: 12px; padding: 1rem 1.1rem; margin-bottom: 1rem; }
.tsc-notice p { margin: 0; }
.tsc-notice p + p { margin-top: 0.6rem; }
.tsc-notice.is-error { background: rgba(180, 87, 58, 0.12); color: #7a3622; border: 1px solid rgba(180, 87, 58, 0.35); }
.tsc-notice.is-success { margin: 0; padding: 0.25rem; }
.tsc-notice.is-success h3 { margin: 0 0 0.6rem; }
.tsc-notice:focus { outline: none; }
@media (max-width: 600px) {
	.tsc-form .tsc-row { grid-template-columns: 1fr; }
	.tsc-form-foot .tsc-btn-solid { width: 100%; justify-content: center; }
}

/* ---------- Event programme ---------- */
.tsc-programme-dates { margin: 0 0 1rem; font-size: 0.8125rem; font-weight: 600; letter-spacing: 0.14em; text-transform: uppercase; color: var(--wp--preset--color--terracotta-deep); }
.tsc-programme-days { display: grid; gap: clamp(1rem, 3vw, 2rem); grid-template-columns: repeat(auto-fit, minmax(min(100%, 24rem), 1fr)); }
.tsc-programme-day { background: var(--wp--preset--color--cream-soft); border: 1px solid rgba(61, 79, 46, 0.14); border-radius: 22px; padding: clamp(1.25rem, 3vw, 1.75rem); }
.tsc-programme-day h3 { margin: 0 0 0.5rem; font-size: var(--wp--preset--font-size--x-large); }
.tsc-programme-day h4 { margin: 1.25rem 0 0.4rem; font-family: var(--wp--preset--font-family--body); font-size: 0.8125rem; font-weight: 600; letter-spacing: 0.14em; text-transform: uppercase; color: var(--wp--preset--color--terracotta-deep); }
.tsc-programme-list { list-style: none; margin: 0; padding: 0; }
.tsc-programme-list li { display: grid; grid-template-columns: 5.6rem 1fr auto; gap: 0.25rem 0.9rem; align-items: center; padding: 0.7rem 0; border-top: 1px solid rgba(61, 79, 46, 0.12); }
.tsc-programme-list li:first-child { border-top: 0; }
.tsc-programme-list .t { font-weight: 600; color: var(--wp--preset--color--forest); font-variant-numeric: tabular-nums; }
.tsc-programme-list .n { line-height: 1.3; }
.tsc-programme-list .m { display: block; font-size: 0.875rem; color: var(--wp--preset--color--ink-soft); }
.tsc-programme-list li.is-full .n, .tsc-programme-list li.is-full .t { color: var(--wp--preset--color--ink-soft); }
.tsc-programme-list li.is-full .m { color: var(--wp--preset--color--terracotta-deep); font-weight: 600; }
.tsc-btn.is-disabled { color: var(--wp--preset--color--ink-soft); border-bottom-color: rgba(61, 79, 46, 0.25); cursor: default; }
.tsc-programme-note { margin: 1.25rem 0 0; color: var(--wp--preset--color--ink-soft); font-size: 1rem; }
.tsc-programme-extra { margin-top: var(--wp--preset--spacing--50); padding-top: var(--wp--preset--spacing--40); border-top: 1px solid rgba(61, 79, 46, 0.16); max-width: 760px; }
.tsc-programme-extra h3 { margin: 1.5rem 0 0.4rem; font-size: var(--wp--preset--font-size--large); }
.tsc-programme-extra h3:first-child { margin-top: 0; }
.tsc-programme-extra ul { padding-left: 1.2rem; }
.tsc-programme-extra li { margin: 0.35rem 0; }
@media (max-width: 480px) {
	.tsc-programme-list li { grid-template-columns: 1fr auto; }
	.tsc-programme-list .t { grid-column: 1 / -1; }
}
.tsc-event-sessions .tsc-programme { margin-top: 0.5rem; }
.tsc-event-sessions .tsc-programme-days { grid-template-columns: 1fr; }
.tsc-event-sessions .tsc-programme-day { padding: 0; background: none; border: 0; }
.tsc-event-sessions .tsc-programme-day h3 { font-size: var(--wp--preset--font-size--large); margin-top: 1rem; }
.tsc-event-sessions .tsc-programme-list li { grid-template-columns: 4.6rem 1fr auto; font-size: 0.95rem; }
.tsc-event-sessions .tsc-programme-dates, .tsc-event-sessions .tsc-programme-extra { display: none; }

/* ---------- Event banner ---------- */
.tsc-banner { background: var(--wp--preset--color--terracotta-deep); }
.tsc-banner a { display: flex; flex-wrap: wrap; justify-content: center; align-items: baseline; gap: 0.25rem 0.9rem; padding: 0.6rem 1rem; color: var(--wp--preset--color--cream); text-decoration: none; font-size: 1rem; text-align: center; }
.tsc-banner strong { font-family: var(--wp--preset--font-family--display); font-weight: 400; font-size: 1.15rem; }
.tsc-banner .tsc-banner-cta { text-decoration: underline; text-underline-offset: 3px; font-weight: 600; }
.tsc-banner a:hover .tsc-banner-cta { text-decoration-thickness: 2px; }
.tsc-banner a:focus-visible { outline: 2px solid var(--wp--preset--color--cream); outline-offset: -4px; }
