Give Now
Make a Lasting Impact
Your support of CTSFW makes a difference in the lives of our students today and in the lives of your family and friends for generations to come. CTSFW has assembled some of the finest faculty in the world to form servants committed to the Holy Scriptures, the Lutheran Confessions, and the liturgical life of the Church, ensuring that your congregation will have faithful pastors who will teach the faithful, reach the lost, and care for all.
Why Support CTSFW?
Give Now
/* Brand variables applied to the host; these cascade into the component */
cl-donation-form {
--classy-custom-background-color: rgba(255, 255, 255, 0);
--classy-custom-border-radius: 0px;
--classy-custom-grid-radius: 0px;
--classy-custom-cta-radius: 0px;
--classy-custom-primary-color: rgb(0, 24, 70);
--classy-custom-secondary-color: #F6F4EE;
--classy-custom-cta-button-color: #7B1824;
--classy-custom-drop-shadow: none;
--classy-font__font-family--base: "Source Sans 3", system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
}
/* Utility: center any giving form when you wrap it in this container */
.giving-form-center { display:flex; justify-content:center; }
.giving-form-center cl-donation-form { display:block; max-width:1024px; width:100%; margin-inline:auto; }
/* Top-level donation form container tweaks */
.donation-form-container {
all: initial !important;
display: flex !important;
flex-direction: column !important;
max-width: 1024px !important;
/* width: 100% !important; */
background: var(--classy-custom-background-color, #fff) !important;
border-radius: var(--classy-custom-border-radius, 0) !important;
box-shadow: var(--classy-custom-drop-shadow, none) !important;
font-family: var(--classy-font__font-family--base) !important;
box-sizing: border-box !important;
padding: 24px !important;
}
/* Force 4 preset-amount buttons in one row */
fieldset.buttons-4 {
display: grid !important;
grid-template-columns: repeat(4, 1fr) !important;
gap: 0.75rem !important;
}
cl-donation-form { display:block; max-width:1024px; width:100%; margin-inline:auto; }
(() => {
const HOST_SELECTOR = 'cl-donation-form';
const AMOUNT_SELECTOR = 'cl-amount-selector';
const FIELDSET_SELECTOR = 'fieldset.buttons-4';
const CSS_SOURCE = '#classy-shadow-styles';
const TARGET_COLUMNS = 4;
const NUDGE_SELECTOR = 'cl-nudge-tray';
const NUDGE_CSS = `
.nudge-tray { border-radius: 0 !important; }
.nudge-tray .nudge-tray--cta { border-radius: 0 !important; }
.nudge-tray--close { border-radius: 0 !important; }
`;
function injectCSS(shadowRoot, cssText, key) {
if (!shadowRoot || !cssText) return false;
const attr = key ? `data-${key}` : 'data-injected';
let style = shadowRoot.querySelector(`style[${attr}]`);
if (!style) {
style = document.createElement('style');
style.setAttribute(attr, 'true');
const firstStyle = shadowRoot.querySelector('style');
if (firstStyle && firstStyle.parentNode) firstStyle.parentNode.insertBefore(style, firstStyle.nextSibling);
else shadowRoot.appendChild(style);
}
if (style.textContent !== cssText) style.textContent = cssText;
return true;
}
function forceGridInline(fieldset, cols=4) {
if (!fieldset) return false;
const desired = `repeat(${cols}, 1fr)`;
fieldset.style.display = 'grid';
fieldset.style.gridTemplateColumns = desired;
if (!fieldset.style.gap) fieldset.style.gap = '0.75rem';
fieldset.dataset.classyGridPatched = 'true';
return true;
}
function findFieldset(host) {
const sr1 = host && host.shadowRoot;
if (!sr1) return null;
const amountEl = sr1.querySelector(AMOUNT_SELECTOR);
const sr2 = amountEl && amountEl.shadowRoot;
if (!sr2) return null;
return sr2.querySelector(FIELDSET_SELECTOR) || sr2.querySelector('fieldset[class*="buttons-"]');
}
function patchDonationForm(host, cssText) {
if (!host) return;
if (cssText && host.shadowRoot) injectCSS(host.shadowRoot, cssText, 'classy-top');
const fs = findFieldset(host);
if (fs) {
const nestedSR = host.shadowRoot && host.shadowRoot.querySelector(AMOUNT_SELECTOR) && host.shadowRoot.querySelector(AMOUNT_SELECTOR).shadowRoot;
if (cssText && nestedSR) injectCSS(nestedSR, cssText, 'classy-nested');
forceGridInline(fs, TARGET_COLUMNS);
}
}
function patchNudges() {
document.querySelectorAll(NUDGE_SELECTOR).forEach(el => {
if (el.shadowRoot) injectCSS(el.shadowRoot, NUDGE_CSS, 'nudge-injected');
});
}
function applyAll() {
const cssText = (document.querySelector(CSS_SOURCE)?.textContent || '').trim();
document.querySelectorAll(HOST_SELECTOR).forEach(host => patchDonationForm(host, cssText));
patchNudges();
}
let scheduled = false;
const observer = new MutationObserver(() => {
if (scheduled) return;
scheduled = true;
requestAnimationFrame(() => { scheduled = false; applyAll(); });
});
function start() {
observer.observe(document.documentElement, {subtree: true, childList: true});
applyAll();
}
if (document.readyState === 'loading') { document.addEventListener('DOMContentLoaded', start, {once: true}); }
else { start(); }
// Optional rescan (only if not legacy mode)
})();