/* =========================================================
   Thames Christian School — master theme stylesheet.
   Edit this file. bump_version.sh copies it to the
   cache-busted theme-NNN.css that's actually served.
   ========================================================= */

:root {
	--section: #182c54;          /* per-section colour, overridden on body */
	--section-contrast: #ffffff;
	--brand:   #182c54;   /* TCS navy */
	--brand-dark: #101e3c;
	--btn:      #002e5d;   /* button dark blue (client spec R0 G46 B93) */
	--btn-dark: #00224a;
	--cream:   #f6f6f6;
	--ink:     #2a2a2a;
	--muted:   #6b6b6b;
	--white:   #ffffff;

	--serif:   'adobe-caslon-pro', Georgia, serif;
	--sans:    'avenir-lt-pro', 'Avenir', 'Avenir Next', Helvetica, Arial, sans-serif;

	--gutter:  clamp(16px, 3vw, 40px);
	--max:     1400px;
	--nav-h:   96px;
}

/* Resets */
*, *::before, *::after { box-sizing: border-box; }
html, body { margin: 0; padding: 0; }
body { font-family: var(--sans); font-size: 16px; font-weight: 200; line-height: 1.65; color: var(--ink); background: var(--white); -webkit-font-smoothing: antialiased; }
img { max-width: 100%; height: auto; display: block; }
a { color: var(--brand); }

h1, h2, h3, h4 { font-family: var(--sans); color: var(--brand); line-height: 1.2; margin: 0 0 .5em; }
h1 { font-weight: 800; font-size: clamp(32px, 5vw, 48px); }
h2 { font-weight: 500; font-size: clamp(24px, 3.4vw, 30px); }
h3 { font-weight: 500; font-size: clamp(24px, 3vw, 31px); }
h4 { font-weight: 500; font-size: 22px; }
.section-title { text-align: left; }
.strapline { font-family: var(--serif); font-style: italic; }

.skip-link { position: absolute; left: -9999px; top: 0; background: var(--white); padding: 8px 16px; z-index: 200; }
.skip-link:focus { left: 0; }

.btn { display: inline-block; background: var(--btn); color: var(--white); font-family: var(--sans); font-weight: 500; font-size: 17px; text-decoration: none; padding: 12px 28px; border: 1px solid var(--btn); border-radius: 0; transition: background .2s, color .2s, border-color .2s; }
.btn:hover { background: var(--white); color: var(--btn); border-color: var(--btn); }
.btn--light { background: var(--white); color: var(--brand); }
.btn--light:hover { background: var(--cream); }

/* Generic section wrapper inside main */
.site-main > section,
.site-main article > section { padding: clamp(40px, 6vw, 80px) var(--gutter); }
.site-main section > .section-title { max-width: var(--max); margin-left: auto; margin-right: auto; }

/* =========================================================
   Header
   ========================================================= */
.site-header { background: var(--white); border-bottom: 1px solid rgba(24,44,84,.08); position: relative; z-index: 1100; }
.site-header__inner { width: 100%; display: flex; align-items: center; justify-content: space-between; gap: 24px; padding: 18px 3vw; }
.brand { display: flex; align-items: center; gap: 18px; text-decoration: none; min-width: 0; }
.brand__logo { height: 80px; width: auto; }
.header-strap { font-family: var(--serif); font-style: italic; font-size: 26px; color: var(--ink); white-space: nowrap; }

.site-nav__list { list-style: none; display: flex; align-items: center; gap: clamp(18px, 2.8vw, 44px); margin: 0; padding: 0; }
.site-nav__list a { color: var(--ink); font-family: var(--sans); font-weight: 400; font-size: 17px; text-decoration: none; padding: 10px 0; display: inline-block; }
.site-nav__list > li { position: relative; }
.site-nav__list > li > a:hover,
.site-nav__list > li.current-menu-item > a,
.site-nav__list > li.current-menu-parent > a,
.site-nav__list > li.current-menu-ancestor > a,
.site-nav__list > li.current-page-ancestor > a { text-decoration: underline; text-underline-offset: 6px; }
.site-nav .sub-menu { list-style: none; margin: 0; padding: 12px 0; position: absolute; top: 100%; left: 50%; transform: translateX(-50%); background: var(--white); min-width: 240px; box-shadow: 0 8px 24px rgba(0,0,0,.18); opacity: 0; visibility: hidden; transition: opacity .15s; z-index: 110; text-align: left; }
.site-nav li:hover > .sub-menu,
.site-nav li:focus-within > .sub-menu { opacity: 1; visibility: visible; }
.site-nav .sub-menu a { color: var(--brand); display: block; padding: 8px 22px; font-weight: 400; }
.site-nav .sub-menu a:hover { background: var(--cream); }

/* Mobile toggle + overlay */
.menu-toggle { display: none; background: none; border: 0; cursor: pointer; padding: 10px; }
.menu-toggle__bars, .menu-toggle__bars::before, .menu-toggle__bars::after { display: block; width: 26px; height: 2px; background: var(--brand); position: relative; content: ''; }
.menu-toggle__bars::before { position: absolute; top: -8px; }
.menu-toggle__bars::after { position: absolute; top: 8px; }

.menu-overlay { position: fixed; inset: 0; background: var(--brand); color: var(--white); z-index: 1200; padding: 80px var(--gutter) 40px; overflow-y: auto; opacity: 0; visibility: hidden; transition: opacity .2s; }
.menu-overlay.is-open { opacity: 1; visibility: visible; }
.menu-close { position: absolute; top: 18px; right: 18px; background: none; border: 0; color: var(--white); font-size: 40px; line-height: 1; cursor: pointer; }
.overlay-menu__list { list-style: none; margin: 0; padding: 0; }
.overlay-menu__list a { color: var(--white); text-decoration: none; font-size: 20px; font-weight: 500; display: block; padding: 10px 0; }
.overlay-menu__list .sub-menu { list-style: none; padding-left: 20px; display: none; }
.overlay-menu__list li.is-open > .sub-menu { display: block; }
.overlay-menu__list .sub-menu a { font-size: 17px; font-weight: 300; }
.overlay-menu__list > li.menu-item-has-children > a::after { content: ' +'; }
.overlay-menu__list > li.menu-item-has-children.is-open > a::after { content: ' \2013'; }

@media (max-width: 1040px) {
	.site-nav { display: none; }
	.menu-toggle { display: block; }
	.header-strap { display: none; }
	.brand__logo { height: 56px; }
}

/* =========================================================
   Block: hero-home
   ========================================================= */
.hero-home { position: relative; min-height: min(78vh, 760px); background-size: cover; background-position: center top; display: flex; align-items: flex-end; padding: 0 !important; }
.hero-home__scrim { display: none; }
.hero-home__quote { position: relative; background: rgba(153, 214, 234, 0.8); max-width: 680px; margin: 0 var(--gutter) clamp(40px, 6vw, 72px) max(var(--gutter), calc((100% - var(--max)) / 2)); padding: clamp(24px, 3.5vw, 40px); }
.hero-home__quote p { color: var(--brand); font-family: var(--serif); font-style: italic; font-weight: 700; font-size: clamp(22px, 3.4vw, 34px); line-height: 1.35; margin: 0 0 14px; }
.hero-home__quote cite { color: var(--brand); display: block; font-style: normal; font-weight: 500; font-size: 16px; letter-spacing: .04em; }

/* =========================================================
   Block: content-cards
   ========================================================= */
.content-cards { background: var(--white); }
.content-cards__inner { max-width: var(--max); margin: 0 auto; display: grid; grid-template-columns: 1.4fr 1fr; gap: clamp(32px, 5vw, 64px); }
.content-cards__heading { font-size: 24px; font-weight: 300; line-height: 1.5; }
/* Generic intro style — add class="intro" to a paragraph in any rich-text field */
.prose .intro, p.intro { font-size: 24px; font-weight: 300; line-height: 1.5; color: var(--brand); }
.content-cards__body { font-size: 17px; }
.content-cards__quick { list-style: none; margin: 28px 0 0; padding: 0; }
.content-cards__quick a { display: flex; justify-content: space-between; align-items: center; gap: 16px; padding: 14px 0; border-bottom: 1px solid rgba(24,44,84,.25); text-decoration: none; font-weight: 500; font-size: 18px; }
.content-cards__quick a:hover .arrow { transform: translateX(6px); }
.content-cards__quick .arrow { transition: transform .2s; }
.content-cards__cards { display: flex; flex-direction: column; gap: 32px; }

.tcs-card { display: flex; flex-direction: column; gap: 8px; }
.tcs-card__media { display: block; overflow: hidden; }
.tcs-card__media img { width: 100%; aspect-ratio: 4 / 3; object-fit: cover; transition: transform .3s; }
.tcs-card:hover .tcs-card__media img { transform: scale(1.04); }
.tcs-card--img .tcs-card__media img { aspect-ratio: 3 / 4; }
.tcs-card h3 { margin: 0; font-size: 20px; font-weight: 500; }
.tcs-card h3 a { text-decoration: none; color: var(--brand); }
.tcs-card__date { font-family: var(--serif); font-style: italic; color: var(--muted); margin: 0; font-size: 15px; }
.tcs-card__link { font-weight: 500; text-decoration: none; }

@media (max-width: 860px) {
	.content-cards { background: var(--white); }
.content-cards__inner { grid-template-columns: 1fr; }
}

/* =========================================================
   Blocks: video-embed & video-gallery
   ========================================================= */
.video-embed { background: var(--brand); }
body.is-inner .video-embed { background: var(--white); }
body.is-inner .video-embed__caption { color: var(--brand); }
.video-embed__frame { position: relative; aspect-ratio: 16 / 9; max-width: var(--max); margin: 0 auto; }
.video-embed__frame iframe { position: absolute; inset: 0; width: 100%; height: 100%; border: 0; }
.video-embed__caption { text-align: center; color: var(--white); margin: 16px 0 0; }
.video-gallery { background: var(--white); }
.video-gallery .section-title { text-align: center; margin-bottom: 44px; }
.video-gallery__intro { max-width: var(--max); margin: 0 auto 28px; text-align: center; }
.video-gallery__grid { max-width: var(--max); margin: 0 auto; display: grid; gap: 28px; }
.video-gallery__grid.cols-2, .video-gallery__grid.cols-3 { grid-template-columns: repeat(2, 1fr); }
.video-gallery__item { margin: 0; }
.video-gallery__item figcaption { font-weight: 500; margin-top: 12px; color: var(--brand); text-align: center; }
@media (max-width: 860px) {
	.video-gallery__grid.cols-2, .video-gallery__grid.cols-3 { grid-template-columns: 1fr; }
}

/* =========================================================
   Block: quote-strip
   ========================================================= */
.quote-strip { background: var(--white); text-align: center; }
body.is-inner .quote-strip { background: var(--section); }
body.is-inner .quote-strip p { color: var(--section-contrast); font-weight: 700; }
body.is-inner .quote-strip cite { color: var(--section-contrast); }
body.is-inner .btn:not(.btn--white):not(.btn--light) { background: var(--btn); color: var(--white); border-color: var(--btn); }
body.is-inner .btn:not(.btn--white):not(.btn--light):hover { background: var(--white); color: var(--btn); border-color: var(--btn); filter: none; }
.btn--block { display: flex; align-items: center; justify-content: space-between; gap: 16px; text-align: left; border-radius: 0; padding: 20px 26px; }
.btn--block > span { text-decoration: underline; text-underline-offset: 3px; }
.btn--block::after { content: ''; flex: 0 0 auto; width: 11px; height: 11px; border-right: 3px solid currentColor; border-bottom: 3px solid currentColor; transform: rotate(-45deg); }
.content-cards__btns { display: flex; flex-direction: column; gap: 12px; margin-top: 20px; }
.quote-strip blockquote { max-width: 860px; margin: 0 auto; }
.quote-strip p { font-family: var(--serif); font-style: italic; font-weight: 500; font-size: clamp(20px, 3vw, 28px); line-height: 1.45; color: var(--brand); margin: 0 0 14px; }
.quote-strip cite { font-style: normal; font-weight: 500; color: var(--brand); }

/* =========================================================
   Block: school-aims
   ========================================================= */
.school-aims { background: #99d6ea; }
.school-aims .section-title { margin-bottom: 56px; text-align: center; }
.school-aims__grid { list-style: none; margin: 0 auto; padding: 0; max-width: var(--max); display: grid; grid-template-columns: repeat(auto-fit, minmax(190px, 1fr)); gap: 32px; }
.school-aims__item { text-align: center; }
.school-aims__item h3 { font-size: 20px; margin: 14px 0 6px; }
.school-aims__item p { margin: 0; font-size: 15px; color: var(--ink); }
.school-aims__icon { height: 84px; width: auto; margin: 0 auto; }
/* Imagify serves WebP by wrapping the <img> in a <picture> and moving the
   .school-aims__icon class onto the <picture>, which drops the img height
   constraint (icons then render full-size). Keep the inner img sized too. */
.school-aims__icon img { height: 84px; width: auto; display: block; margin: 0 auto; }

/* =========================================================
   Block: news-feed
   ========================================================= */
.news-feed__head { max-width: var(--max); margin: 0 auto 28px; text-align: center; }
.news-feed__head .section-title { margin: 0 0 12px; text-align: center; }
.news-feed__nav { display: flex; align-items: center; justify-content: flex-end; gap: 14px; }
.news-feed__all { font-weight: 500; text-decoration: underline; text-underline-offset: 3px; }
.news-feed__arrow { background: none; border: 0; cursor: pointer; padding: 10px 6px; }
.news-feed__arrow::before { content: ''; display: block; width: 12px; height: 12px; border-right: 3px solid var(--brand); border-bottom: 3px solid var(--brand); }
.news-feed__arrow--prev::before { transform: rotate(135deg); }
.news-feed__arrow--next::before { transform: rotate(-45deg); }
.news-feed__track { max-width: var(--max); margin: 0 auto; display: flex; gap: 28px; overflow-x: auto; scroll-snap-type: x mandatory; scroll-behavior: smooth; scrollbar-width: none; }
.news-feed__track::-webkit-scrollbar { display: none; }
.news-feed__track .tcs-card { flex: 0 0 calc((100% - 84px) / 4); scroll-snap-align: start; }
.news-feed__track .tcs-card h3 { font-size: 18px; }
.news-feed__empty { max-width: var(--max); margin: 0 auto; color: var(--muted); }
@media (max-width: 1040px) { .news-feed__track .tcs-card { flex-basis: calc((100% - 28px) / 2); } }
@media (max-width: 640px) { .news-feed__track .tcs-card { flex-basis: 100%; } }

/* =========================================================
   Block: inner-hero
   ========================================================= */
.inner-hero { position: relative; min-height: 650px; background-size: cover; background-position: center; background-color: var(--brand); display: flex; align-items: flex-end; padding: 0 !important; }
.inner-hero__box { position: relative; background: color-mix(in srgb, var(--section) 80%, transparent); color: var(--section-contrast); max-width: 680px; margin: 0 var(--gutter) clamp(40px, 6vw, 72px) max(var(--gutter), calc((100% - var(--max)) / 2)); padding: clamp(24px, 3.5vw, 40px); }
.inner-hero__box p { font-family: var(--serif); font-style: italic; font-weight: 700; font-size: clamp(20px, 2.8vw, 30px); line-height: 1.35; margin: 0 0 14px; color: inherit; }
.inner-hero__box cite { display: block; font-style: normal; font-weight: 500; font-size: 16px; letter-spacing: .04em; color: inherit; }
.inner-hero__strip { background: var(--section); min-height: 60px; display: flex; align-items: center; padding: 8px var(--gutter); }

.inner-hero__strip h1 { color: var(--section-contrast); font-weight: 500; font-size: clamp(22px, 2.6vw, 30px); margin: 0 0 0 max(0px, calc((100% - var(--max)) / 2)); }
@media (max-width: 768px) { .inner-hero { min-height: 420px !important; } }
.inner-hero--empty { display: none; }

/* =========================================================
   Block: sidebar-prose
   ========================================================= */
.sidebar-prose__inner { max-width: var(--max); margin: 0 auto; }
.sidebar-prose__inner.has-sidebar { display: grid; grid-template-columns: minmax(0, 2.2fr) minmax(220px, 1fr); gap: clamp(32px, 5vw, 72px); }
.sidebar-prose__aside { border-left: 1px solid rgba(24,44,84,.2); padding-left: 28px; }
@media (min-width: 961px) { .sidebar-prose__aside { position: sticky; top: 24px; align-self: start; } }
.sidebar-prose__aside h2 { font-size: 20px; }
.sidebar-prose__aside ul { list-style: none; margin: 0; padding: 0; }
.sidebar-prose__aside a { display: block; padding: 8px 0; text-decoration: none; font-weight: 400; }
.sidebar-prose__aside li.is-active a { font-weight: 700; }
.sidebar-prose__ctas { margin-top: 28px; display: flex; flex-wrap: wrap; gap: 12px; }
.breadcrumbs { font-size: 14px; color: var(--muted); margin-bottom: 18px; }
.breadcrumbs a { color: var(--muted); }
.prose h2, .prose h3 { margin-top: 1.4em; }
.prose img { margin: 1em 0; }
.prose table { width: 100%; background: transparent; border-collapse: collapse; text-align: left; margin: 0 0 1.6em; }
.sidebar-prose--tint { background: #f1f3ed; }
.prose table td, .prose table th { border: 1px solid #aaaaaa; padding: 10px 20px; }
@media (max-width: 960px) { .sidebar-prose__inner.has-sidebar { grid-template-columns: 1fr; } .sidebar-prose__aside { border-left: 0; padding-left: 0; border-top: 1px solid rgba(24,44,84,.2); padding-top: 24px; } }

/* =========================================================
   Block: accordion-block
   ========================================================= */
.accordion-block { background: var(--white); }
.accordion-block__intro { background: var(--brand); color: var(--white); padding: clamp(20px, 3vw, 32px); margin-bottom: 28px; }
.accordion-block__intro p { margin: 0 0 1em; }
.accordion-block__intro p:last-child { margin-bottom: 0; }
.accordion-block__inner { max-width: var(--max); margin: 0 auto; }
.accordion-block__inner.has-image { display: grid; grid-template-columns: 1fr 1.4fr; gap: clamp(28px, 5vw, 64px); align-items: start; }
.accordion-block--img-right .accordion-block__inner.has-image { grid-template-columns: 1.4fr 1fr; }
.accordion-block--img-right .accordion-block__media { order: 2; }
.accordion-block__media img { width: 100%; object-fit: cover; }
@media (max-width: 860px) { .accordion-block__inner.has-image, .accordion-block--img-right .accordion-block__inner.has-image { grid-template-columns: 1fr; } .accordion-block--img-right .accordion-block__media { order: 0; } }
.accordion { max-width: var(--max); margin: 0 auto; }
.accordion__item { border-bottom: 1px solid rgba(24,44,84,.25); }
.accordion__toggle { width: 100%; display: flex; align-items: center; gap: 16px; background: none; border: 0; padding: 18px 4px; cursor: pointer; font-family: var(--sans); font-size: 19px; font-weight: 500; color: var(--brand); text-align: left; }
.accordion__toggle img { height: 40px; width: 40px; object-fit: contain; }
.accordion__chevron { margin-left: auto; width: 10px; height: 10px; border-right: 2px solid var(--brand); border-bottom: 2px solid var(--brand); transform: rotate(45deg); transition: transform .2s; }
.accordion__toggle[aria-expanded="true"] .accordion__chevron { transform: rotate(-135deg); }
.accordion__panel { padding: 0 4px; overflow: hidden; max-height: 0; transition: max-height .38s ease, padding-bottom .38s ease; }
.accordion__panel.is-open { padding-bottom: 22px; }

/* =========================================================
   Block: split-feature
   ========================================================= */
.split-feature__inner { max-width: var(--max); margin: 0 auto; display: grid; grid-template-columns: 1fr 1fr; gap: clamp(28px, 5vw, 64px); align-items: center; }
.split-feature.img-right .split-feature__media { order: 2; }
.split-feature__media img { width: 100%; aspect-ratio: 4 / 3; object-fit: cover; }
@media (max-width: 860px) { .split-feature__inner { grid-template-columns: 1fr; } .split-feature.img-right .split-feature__media { order: 0; } }

/* =========================================================
   Footer
   ========================================================= */
.tour-band { background: #f1f3ed; padding: clamp(40px, 6vw, 72px) var(--gutter); }
.tour-band__inner { max-width: var(--max); margin: 0 auto; display: grid; grid-template-columns: 1fr 1fr; gap: clamp(28px, 5vw, 64px); align-items: center; }
.tour-band__media img { width: 100%; aspect-ratio: 4 / 3; min-height: 500px; object-fit: cover; }
.tour-band p { margin: 0 0 16px; }
body .tour-band .btn { background: var(--btn); color: var(--white); border: 1px solid var(--btn); padding: 12px 28px; margin-top: 40px; }
body .tour-band .btn:hover { background: var(--white); color: var(--btn); border-color: var(--btn); }
@media (max-width: 860px) { .tour-band__media img { min-height: 0; } }
@media (max-width: 860px) { .tour-band__inner { grid-template-columns: 1fr; } }

.footer { background: var(--white); color: var(--ink); border-top: 1px solid rgba(24,44,84,.12); }
.footer a { color: var(--brand); text-decoration: none; }
.footer a:hover { text-decoration: underline; }
.footer__inner { width: 100%; padding: clamp(40px, 5vw, 64px) 3vw; display: grid; grid-template-columns: 1.4fr 1fr 1fr 1.2fr; gap: 32px; }
.footer__col h3 { color: var(--brand); font-size: 18px; margin-bottom: 14px; }
.footer__logo { height: 40px; width: auto; margin-bottom: 18px; }
.footer__col ul { list-style: none; margin: 0; padding: 0; }
.footer__col li { padding: 4px 0; }
.footer__col p { margin: 0 0 8px; font-size: 15px; }
.footer__social { display: flex; gap: 16px; margin-top: 36px; }
.footer__social a { color: var(--brand); }
.footer__social a:hover { opacity: .7; }
.footer__logos { display: flex; gap: 20px; align-items: center; margin-top: 22px; }
.footer__logos img { height: 64px; width: auto; }
.footer__bar { border-top: 1px solid rgba(24,44,84,.12); padding: 16px 3vw; display: flex; justify-content: space-between; align-items: center; font-size: 14px; }
.footer__bar p { margin: 0; }
.footer__top-btn { background: none; border: 1px solid rgba(24,44,84,.4); color: var(--brand); width: 40px; height: 40px; border-radius: 50%; cursor: pointer; font-size: 18px; }
.footer__top-btn:hover { background: rgba(24,44,84,.08); }
@media (max-width: 960px) { .footer__inner { grid-template-columns: 1fr 1fr; } }
@media (max-width: 600px) { .footer__inner { grid-template-columns: 1fr; } }


/* =========================================================
   Single news post
   ========================================================= */
.tcs-article { max-width: 980px; margin: 0 auto; padding: clamp(40px, 6vw, 72px) var(--gutter); }
.tcs-article__head { text-align: center; margin-bottom: 32px; }
.tcs-article__title { font-size: clamp(26px, 3.6vw, 36px); font-weight: 500; margin-bottom: 10px; }
.tcs-article__meta { font-family: var(--serif); font-style: italic; color: var(--muted); margin: 0; }
.tcs-article__image { margin: 0 0 32px; }
.tcs-article__image img { width: 100%; height: auto; }
.tcs-article__body { font-size: 17px; }
.tcs-article__pagination { display: flex; justify-content: space-between; gap: 24px; border-top: 1px solid rgba(24,44,84,.2); margin-top: 48px; padding-top: 28px; }
.tcs-article__pag { display: flex; align-items: center; gap: 14px; text-decoration: none; font-weight: 500; font-size: 18px; color: var(--brand); max-width: 45%; }
.tcs-article__pag:hover .tcs-article__pag-title { text-decoration: underline; text-underline-offset: 3px; }
.tcs-article__pag-arrow { flex: 0 0 auto; width: 11px; height: 11px; border-right: 3px solid var(--brand); border-bottom: 3px solid var(--brand); }
.tcs-article__pag--prev .tcs-article__pag-arrow { transform: rotate(135deg); }
.tcs-article__pag--next .tcs-article__pag-arrow { transform: rotate(-45deg); }


/* =========================================================
   Blocks: map-banner & contact-columns
   ========================================================= */
.map-banner { padding: 0 !important; }
.map-banner__frame { display: block; width: 100%; height: 650px; border: 0; }
@media (max-width: 768px) { .map-banner__frame { height: 420px; } }

.contact-columns__inner { max-width: var(--max); margin: 0 auto; display: grid; grid-template-columns: 1fr 1fr; gap: clamp(28px, 5vw, 64px); align-items: start; }
.contact-box { background: #99d6ea; color: var(--brand); padding: clamp(24px, 3.5vw, 40px); }
.contact-box h2, .contact-box h3 { font-family: var(--serif); font-style: italic; color: var(--brand); }
.contact-box a { color: var(--brand); }
.contact-columns__media { margin-top: 28px; }
.contact-columns__media:first-child { margin-top: 0; margin-bottom: 28px; }
.contact-plain { color: var(--ink); }
.contact-plain a { color: var(--brand); }
.contact-columns__media img { width: 100%; }
.contact-columns__form { margin-bottom: 28px; }
.contact-columns__form .wpforms-submit, .wpforms-form button[type="submit"] { background: var(--brand) !important; color: var(--white) !important; border: 0 !important; border-radius: 0 !important; padding: 20px 32px !important; font-weight: 500 !important; height: auto !important; line-height: 1.2 !important; }
.wpforms-form .wpforms-field { padding: 8px 0 !important; }
.wpforms-form .wpforms-field-label { margin-bottom: 4px !important; }
.wpforms-form .wpforms-submit-container { padding-top: 14px !important; overflow: visible !important; }
.wpforms-form .wpforms-field-label, .wpforms-form .wpforms-field-sublabel, .wpforms-form label { font-weight: 400 !important; }
.wpforms-form input[type="text"], .wpforms-form input[type="email"], .wpforms-form input[type="tel"], .wpforms-form input[type="number"], .wpforms-form input[type="url"], .wpforms-form select, .wpforms-form textarea { background-color: #fafafa !important; border-radius: 0 !important; border: 1px solid rgba(24,44,84,.25) !important; }
@media (max-width: 860px) { .contact-columns__inner { grid-template-columns: 1fr; } }


/* =========================================================
   News archive (posts page)
   ========================================================= */
.news-archive { padding: clamp(40px, 6vw, 80px) var(--gutter); }
.news-archive__grid { max-width: var(--max); margin: 0 auto; display: grid; grid-template-columns: repeat(3, 1fr); gap: 36px 28px; }
.news-archive__grid h3 { font-size: 20px; margin: 0; }
.tcs-card__excerpt { margin: 4px 0 0; font-size: 15px; color: var(--muted); }
.news-archive__pagination { max-width: var(--max); margin: 48px auto 0; display: flex; justify-content: space-between; }
.news-archive__pagination a { font-weight: 500; text-decoration: underline; text-underline-offset: 3px; }
.news-archive__older { margin-left: auto; }
@media (max-width: 960px) { .news-archive__grid { grid-template-columns: repeat(2, 1fr); } }
@media (max-width: 600px) { .news-archive__grid { grid-template-columns: 1fr; } }


/* =========================================================
   Block: gallery-carousel
   ========================================================= */
.gallery-carousel { background: var(--white); }
.gallery-carousel__head { max-width: var(--max); margin: 0 auto 24px; display: flex; align-items: center; justify-content: space-between; }
.gallery-carousel__head .section-title { margin: 0; }
.gallery-carousel__nav { display: flex; gap: 14px; margin-left: auto; }
.gallery-carousel__track { max-width: var(--max); margin: 0 auto; display: flex; gap: 20px; overflow-x: auto; scroll-snap-type: x mandatory; scroll-behavior: smooth; scrollbar-width: none; }
.gallery-carousel__track::-webkit-scrollbar { display: none; }
.gallery-carousel__item { flex: 0 0 calc((100% - 40px) / 3); margin: 0; scroll-snap-align: start; }
.gallery-carousel__item img { width: 100%; aspect-ratio: 4 / 3; object-fit: cover; }
@media (max-width: 860px) { .gallery-carousel__item { flex-basis: calc((100% - 20px) / 2); } }
@media (max-width: 600px) { .gallery-carousel__item { flex-basis: 100%; } }


/* =========================================================
   Block: image-text-grid
   ========================================================= */
.image-text-grid { background: var(--white); }
.image-text-grid .section-title { margin-bottom: 36px; }
.image-text-grid__grid { max-width: var(--max); margin: 0 auto; display: grid; grid-template-columns: 1fr 1fr; gap: clamp(32px, 5vw, 56px); }
.image-text-grid__item img { width: 100%; aspect-ratio: 4 / 3; object-fit: cover; object-position: top; margin-bottom: 18px; }
.image-text-grid__item h3 { margin-bottom: 14px; }
@media (max-width: 700px) { .image-text-grid__grid { grid-template-columns: 1fr; } }


/* Calendar embed */
.tcs-calendar-embed { max-width: var(--max); margin: 0 auto; padding: clamp(40px, 6vw, 80px) var(--gutter); }
.tcs-calendar-embed iframe { display: block; width: 100%; }


/* =========================================================
   Block: home-intro
   ========================================================= */
.home-intro { background-color: #f1f3ed; position: relative; overflow: hidden; }
.home-intro::before { content: ''; position: absolute; inset: 0; background-image: var(--hi-bg); background-size: cover; background-position: center; clip-path: polygon(50% 0, 100% 0, 100% 100%, 0 100%, 0 72%, 50% 72%); pointer-events: none; }
.home-intro__river { position: absolute; right: 0; bottom: 0; width: min(72%, 1000px); height: auto; pointer-events: none; z-index: 0; }
.home-intro__inner { max-width: var(--max); margin: 0 auto; display: grid; grid-template-columns: 1fr 1fr; gap: clamp(32px, 5vw, 72px); align-items: start; position: relative; z-index: 1; }
.home-intro__col > * + * { margin-top: 28px; }
.home-intro__img { width: 100%; }
.home-intro__text h1, .home-intro__text h2, .home-intro__text h3, .home-intro__text h4 { font-size: clamp(20px, 2.6vw, 26px); font-weight: 500; }
.home-intro__inner .home-intro__col:nth-child(2) .home-intro__img { aspect-ratio: 6 / 7; object-fit: cover; }
.home-intro__box { background: var(--brand); color: var(--white); padding: clamp(40px, 5vw, 64px); }
.home-intro__box p { font-family: var(--serif); font-style: italic; font-weight: 700; font-size: clamp(19px, 2.4vw, 26px); line-height: 1.4; }
.home-intro__box p:has(a), .home-intro__box p a { font-family: var(--sans); font-style: normal; font-weight: 500; font-size: 16px; }
.home-intro__box h2, .home-intro__box h3, .home-intro__box h4, .home-intro__box p { color: var(--white); }
.home-intro__box a { color: var(--white); }
.home-intro__btns { display: flex; flex-direction: column; gap: 14px; }
.home-intro__btns .btn { font-size: 17px; }
.home-intro .btn--white, .btn--white { background: var(--white); color: var(--brand); border: 1px solid rgba(24, 44, 84, 0.15); box-shadow: 0 2px 10px rgba(24, 44, 84, 0.06); }
.home-intro .btn--white:hover, .btn--white:hover { background: var(--cream); }
@media (max-width: 860px) { .home-intro__inner { grid-template-columns: 1fr; } }
/* --- InnerMedia updates v1.0.81 --- */
.content-cards__body-btns { display: flex; flex-wrap: wrap; gap: 12px; margin-top: 28px; }
body .content-cards__body-btns .btn { background: var(--btn); color: var(--white); font-size: 17px; padding: 14px 34px; }
body .content-cards__body-btns .btn:hover { background: var(--white); color: var(--btn); border-color: var(--btn); }
/* Biography grid (house profiles): 2 per row, theme heading on top, portrait beside bio; image side alternates R,L,L,R to match live */
.image-text-grid--biog { background: #f1f3ed; }
.image-text-grid--biog .image-text-grid__grid { grid-template-columns: repeat(2, 1fr); column-gap: clamp(40px, 4vw, 72px); row-gap: clamp(40px, 5vw, 64px); }
.image-text-grid--biog .image-text-grid__item { display: grid; grid-template-columns: 1fr 210px; grid-template-areas: "title title" "body image"; column-gap: clamp(20px, 2vw, 32px); align-items: start; }
.image-text-grid--biog .image-text-grid__item h3 { grid-area: title; margin-bottom: 18px; }
.image-text-grid--biog .image-text-grid__item .prose { grid-area: body; }
.image-text-grid--biog .image-text-grid__item img { grid-area: image; width: 210px; aspect-ratio: 2 / 3; object-fit: cover; object-position: top; margin: 0; align-self: start; }
.image-text-grid--biog .image-text-grid__item:nth-child(2), .image-text-grid--biog .image-text-grid__item:nth-child(3) { grid-template-columns: 210px 1fr; grid-template-areas: "title title" "image body"; }
@media (max-width: 900px) { .image-text-grid--biog .image-text-grid__grid { grid-template-columns: 1fr; } }
@media (max-width: 520px) { .image-text-grid--biog .image-text-grid__item, .image-text-grid--biog .image-text-grid__item:nth-child(2), .image-text-grid--biog .image-text-grid__item:nth-child(3) { grid-template-columns: 1fr; grid-template-areas: "title" "image" "body"; } .image-text-grid--biog .image-text-grid__item img { width: 100%; aspect-ratio: 4 / 3; } }
/* No black buttons: force WP core buttons to brand dark blue */
.wp-block-button__link, .wp-block-button .wp-block-button__link, .wp-block-file__button { background-color: var(--btn) !important; color: #ffffff !important; }
/* Home page: 'A message from the Head' text sits in a white box with L/R padding */
.home-intro__inner .home-intro__col:nth-child(2) .home-intro__text { background: #ffffff; padding: clamp(22px, 3vw, 34px) clamp(24px, 3.5vw, 40px); }
/* Home page: intro text in a sage box with generous padding (matches live) */
.home-intro__inner .home-intro__col:nth-child(1) .home-intro__text { background: #f1f3ed; padding: clamp(48px, 7vw, 92px) clamp(28px, 4vw, 40px); }
/* Home: left-column image ~40px taller + blue box extra bottom padding */
.home-intro__inner .home-intro__col:nth-child(1) .home-intro__img { aspect-ratio: 664 / 484; object-fit: cover; }
.home-intro__box { padding-bottom: calc(clamp(40px, 5vw, 64px) + 30px); }
/* Alternating content bands (white / sage) across split-feature, accordion, content-cards, news-feed, video-gallery */
:is(.content-cards, .accordion-block, .split-feature, .news-feed, .video-gallery) { background: #ffffff; }
:is(.content-cards, .accordion-block, .split-feature, .news-feed, .video-gallery):nth-child(even of .content-cards, .accordion-block, .split-feature, .news-feed, .video-gallery) { background: #f1f3ed; }

/* =========================================================
   404, search results & archive intro — keep content within
   the standard --max container (matches inner-page layout).
   ========================================================= */
.error-404 { padding: clamp(40px, 6vw, 80px) var(--gutter); }
.error-404__inner { max-width: var(--max); margin: 0 auto; }
.error-404__inner p { font-size: 18px; margin: 0 0 24px; }

.search-listing { padding: clamp(40px, 6vw, 80px) var(--gutter); }
.search-listing__inner { max-width: var(--max); margin: 0 auto; }
.search-listing__count { color: var(--muted); margin: 0 0 32px; }
.search-listing__none { font-size: 18px; margin: 0 0 24px; }
.search-listing__list { display: flex; flex-direction: column; gap: 32px; }
.search-result { border-bottom: 1px solid rgba(24,44,84,.15); padding-bottom: 32px; }
.search-result:last-child { border-bottom: 0; padding-bottom: 0; }
.search-result__title { margin: 0 0 8px; font-size: 24px; }
.search-result__title a { text-decoration: none; }
.search-result__title a:hover { text-decoration: underline; text-underline-offset: 4px; }
.search-result__excerpt { margin: 0 0 12px; color: var(--ink); }
.search-result__link { font-weight: 500; text-decoration: none; }
.search-result__link:hover .arrow { padding-left: 4px; }
.search-result__link .arrow { transition: padding .2s; }
.search-listing__pagination { display: flex; justify-content: space-between; margin-top: 48px; }
.search-listing__pagination a { font-weight: 500; text-decoration: underline; text-underline-offset: 3px; }
.search-listing__older { margin-left: auto; }

/* Archive intro/description and empty state share the --max container */
.news-archive__intro { max-width: var(--max); margin: 0 auto clamp(32px, 4vw, 48px); }
.news-archive__empty { max-width: var(--max); margin: 0 auto; color: var(--muted); }

/* =========================================================
   Scroll reveal (fade + rise) — echoes the live site's
   scroll-in animation. Fail-safe by design: the hidden state
   lives on .tcs-reveal, which is added ONLY by JS (assets/js)
   and only to elements that start below the fold. If the JS is
   blocked, delayed or errors, nothing is ever hidden, so all
   content renders normally. Reveal always wins on specificity.
   ========================================================= */
.tcs-reveal { opacity: 0; transform: translateY(42px); transition: opacity .7s ease, transform .85s cubic-bezier(0.19, 1, 0.22, 1); will-change: opacity, transform; }
.tcs-reveal.is-visible { opacity: 1; transform: none; }
@media (prefers-reduced-motion: reduce) { .tcs-reveal { opacity: 1; transform: none; transition: none; } }

/* =========================================================
   On-load entrance — logo, main menu and banner text slide
   up on every page load (echoes the live site). Pure CSS
   keyframes: the element always animates TO its visible state
   and stays there, so it can never be left hidden. Skipped
   entirely for prefers-reduced-motion.
   ========================================================= */
@keyframes tcsRiseIn { from { opacity: 0; transform: translateY(32px); } to { opacity: 1; transform: none; } }
@media (prefers-reduced-motion: no-preference) {
	.brand           { animation: tcsRiseIn .7s cubic-bezier(0.19, 1, 0.22, 1) both; }
	.header-strap    { animation: tcsRiseIn .7s cubic-bezier(0.19, 1, 0.22, 1) .30s both; }
	.site-nav__list > li { animation: tcsRiseIn .7s cubic-bezier(0.19, 1, 0.22, 1) both; }
	.site-nav__list > li:nth-child(1) { animation-delay: .06s; }
	.site-nav__list > li:nth-child(2) { animation-delay: .12s; }
	.site-nav__list > li:nth-child(3) { animation-delay: .18s; }
	.site-nav__list > li:nth-child(4) { animation-delay: .24s; }
	.site-nav__list > li:nth-child(5) { animation-delay: .30s; }
	.site-nav__list > li:nth-child(6) { animation-delay: .36s; }
	.site-nav__list > li:nth-child(7) { animation-delay: .42s; }
	.hero-home__quote    { animation: tcsRiseIn .9s cubic-bezier(0.19, 1, 0.22, 1) .15s both; }
	.inner-hero__strip h1 { animation: tcsRiseIn .8s cubic-bezier(0.19, 1, 0.22, 1) both; }
	.inner-hero__box     { animation: tcsRiseIn .9s cubic-bezier(0.19, 1, 0.22, 1) .10s both; }
}

/* Footer subscribe "Sign Up" button — match the Book-a-tour "Contact us"
   button hover (fill to white, dark-blue text/border, .2s ease). Scoped to
   the footer so the contact-page form button is unaffected. */
.footer__newsletter .wpforms-form button[type="submit"] { border: 1px solid var(--brand) !important; transition: background .2s, color .2s, border-color .2s !important; }
.footer__newsletter .wpforms-form button[type="submit"]:hover { background: var(--white) !important; color: var(--btn) !important; border-color: var(--btn) !important; }

/* Footer subscribe — privacy line under the form */
.footer__privacy { font-size: 14px; margin: 14px 0 0; opacity: .85; }
.footer__privacy a { color: inherit; text-decoration: underline; text-underline-offset: 3px; }

/* Prose tables (privacy / cookie policy) — clear header row, zebra rows,
   horizontal scroll on small screens. Matches the live site's layout. */
.prose table { width: 100%; border-collapse: collapse; margin: 0 0 1.8em; font-size: 15px; }
.prose table th, .prose table td { border: 1px solid #d9d9d9; padding: 12px 18px; text-align: left; vertical-align: top; }
.prose table thead th, .prose table tr:first-child th { background: var(--brand); color: var(--white); font-weight: 500; }
.prose table tbody tr:nth-child(even) { background: #f4f6f4; }
@media (max-width: 640px) { .prose table { display: block; overflow-x: auto; -webkit-overflow-scrolling: touch; } }
