Getting things ready for you... 0%

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?

  • support_why support ctsfw_bruss call day

    Your support for CTSFW is invaluable and ensures that the Gospel continues to be proclaimed in all its truth and purity and that our congregations are led and cared for by faithful servants.

    Dr. Jon S. Bruss, CTSFW President

Give Now

/* Overrides an inline radius the embed script writes; see print_assets(). */ .ctsfw-giving iframe { border-radius: 0 !important; } .giving-form-center { display: flex; justify-content: center; } .giving-form-center > * { width: 100%; max-width: 1024px; margin-inline: auto; } /* The recurring-donation nudge tray is the one piece of the embed still rendered as a custom element with a shadow root, so it is the one piece page script can still style. 1.0.x patched it from a MutationObserver on document.documentElement with subtree:true — but subtree does NOT pierce shadow DOM, so if the shadow root attached after the last light-DOM mutation the patch never fired. Measured: on one live page the tray kept its 8px radius and no injected style was present, while the identical injection run by hand a moment later worked. A race, not a selector fault. This version polls for the shadow root instead of waiting for a mutation that may never come, bounded so it cannot run forever, and re-arms from the observer when a new tray is added to the light DOM (that insertion IS observable). Injection is idempotent. */ (function () { var SEL = 'cl-nudge-tray'; var CSS = '.nudge-tray,.nudge-tray .nudge-tray--cta,.nudge-tray--close{border-radius:0 !important}'; var WINDOW_MS = 30000; var STEP_MS = 250; var timer = null; var deadline = 0; function inject( el ) { var root = el.shadowRoot; if ( ! root ) { return false; } if ( root.querySelector( 'style[data-ctsfw-nudge]' ) ) { return true; } var style = document.createElement( 'style' ); style.setAttribute( 'data-ctsfw-nudge', '1' ); style.textContent = CSS; root.appendChild( style ); return true; } function sweep() { var nodes = document.querySelectorAll( SEL ); var pending = 0; for ( var i = 0; i deadline ) && timer ) { clearInterval( timer ); timer = null; } } function arm() { deadline = Date.now() + WINDOW_MS; if ( ! timer ) { timer = setInterval( sweep, STEP_MS ); } sweep(); } function watch( records ) { for ( var i = 0; i < records.length; i++ ) { var added = records[ i ].addedNodes; for ( var j = 0; j < added.length; j++ ) { var node = added[ j ]; if ( ! node || node.nodeType !== 1 ) { continue; } if ( ( node.matches && node.matches( SEL ) ) || ( node.querySelector && node.querySelector( SEL ) ) ) { arm(); return; } } } } arm(); if ( window.MutationObserver ) { new MutationObserver( watch ).observe( document.documentElement, { childList: true, subtree: true } ); } })();

Skip to anchored section