PageSourceSearch

https://trinitylonglake.org/contact

html trinitylonglake.org collected 2026-10-02 20:03:29 UTC 45,642 bytes, 210 lines download raw bytes

1<!DOCTYPE html><html lang="en" data-astro-cid-37fxchfa> <head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1"><title>Contact Us | Trinity Lutheran Church and Trinity Preschool</title><meta name="description" content="Get in touch with Trinity Lutheran Long Lake: address, phone, office hours, and a message form."><link rel="canonical" href="https://trinitylonglake.org/contact/"><link rel="icon" href="/favicon.ico" sizes="any"><link rel="icon" type="image/png" href="/favicon.png"><link rel="apple-touch-icon" sizes="180x180" href="/apple-touch-icon.png"><link rel="manifest" href="/site.webmanifest"><meta property="og:type" content="website"><meta property="og:site_name" content="Trinity Lutheran Church and Trinity Preschool"><meta property="og:title" content="Contact Us | Trinity Lutheran Church and Trinity Preschool"><meta property="og:description" content="Get in touch with Trinity Lutheran Long Lake: address, phone, office hours, and a message form."><meta property="og:url" content="https://trinitylonglake.org/contact/"><meta property="og:image" content="https://trinitylonglake.org/og.png"><meta name="twitter:card" content="summary_large_image"><meta name="twitter:title" content="Contact Us | Trinity Lutheran Church and Trinity Preschool"><meta name="twitter:description" content="Get in touch with Trinity Lutheran Long Lake: address, phone, office hours, and a message form."><meta name="twitter:image" content="https://trinitylonglake.org/og.png">
1<script type="application/ld+json">{"@context":"https://schema.org","@graph":[{"@type":"LocalBusiness","@id":"https://trinitylonglake.org/#business","name":"Trinity Lutheran Church and Trinity Preschool","url":"https://trinitylonglake.org","telephone":"952.473.8577","image":"https://ktunuekthpaqbvijarql.supabase.co/storage/v1/object/public/scraped-images/trinitylonglake.org/wp-uploads/2023/04/TrinityLongLakelogo.png","logo":"https://ktunuekthpaqbvijarql.supabase.co/storage/v1/object/public/scraped-images/trinitylonglake.org/wp-uploads/2023/04/TrinityLongLakelogo.png","address":{"@type":"PostalAddress","streetAddress":"2060 County Road 6","addressLocality":"Long Lake","addressRegion":"MN","postalCode":"55356","addressCountry":"US"},"areaServed":[{"@type":"City","name":"Long Lake, MN"}],"openingHours":["Worship: Sundays 9am; Wednesdays 6pm"],"sameAs":["https://trinitylonglake.org"]},{"@type":"WebSite","@id":"https://trinitylonglake.org/#website","url":"https://trinitylonglake.org","name":"Trinity Lutheran Church and Trinity Preschool","publisher":{"@id":"https://trinitylonglake.org/#business"},"potentialAction":{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https://trinitylonglake.org/?s={search_term_string}"},"query-input":"required name=search_term_string"}},{"@type":"Person","@id":"https://trinitylonglake.org/#owner","name":"Pastor Adam Butler","url":"https://trinitylonglake.org/about/","worksFor":{"@id":"https://trinitylonglake.org/#business"}}]}</script>
1<!-- SPA-style transitions — no full-page flash between routes --><meta name="astro-view-transitions-enabled" content="true"><meta name="astro-view-transitions-fallback" content="animate">
1<script type="module" src="/_astro/ClientRouter.astro_astro_type_script_index_0_lang.CDGfc0hd.js"></script>
1<!-- DNS prefetch for faster first-paint on the canonical origin --><link rel="dns-prefetch" href="https://trinitylonglake.org"><link rel="preconnect" href="https://fonts.googleapis.com"><link rel="preconnect" href="https://fonts.gstatic.com" crossorigin><link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800;900&family=Source+Serif+Pro:wght@400;600;900&family=Caveat:wght@400;500;600;700&display=swap">
1<script src="https://cc.oxsome.com/oxsome-lead-webhook.js" async></script>
1<script>
2      (function () {
3        try {
4          if (!window.matchMedia || !window.matchMedia('(prefers-reduced-motion: reduce)').matches) {
5            document.documentElement.classList.add('reveal-ready');
6          }
7        } catch (e) { /* leave content visible on any failure */ }
8      })();
9    </script>
9<script type="module">(function(){function n(){window.parent!==window&&window.parent.postMessage({type:"editor-nav",pathname:location.pathname},"*")}n(),["astro:page-load","astro:after-swap"].forEach(function(t){document.addEventListener(t,n)}),window.addEventListener("popstate",n)})();</script>
9<link rel="stylesheet" href="/_astro/bbq-dudes.DLz0EJ9m.css"></head> <body class="has-hero-overlay" data-astro-cid-37fxchfa> <!-- Pre-navbar info bar — creative agent customizes colors, chips, and hours logic --> <div id="prebar" data-astro-cid-37fxchfa data-astro-transition-persist="astro-sz4yxxhd-1"> <div class="prebar-inner" data-astro-cid-37fxchfa> <span class="prebar-chip prebar-status-chip" data-astro-cid-37fxchfa> <span id="prebar-dot" aria-hidden="true" data-astro-cid-37fxchfa></span> <span id="prebar-status" data-astro-cid-37fxchfa>Worship Sundays 9am</span> </span> <span class="prebar-chip" data-astro-cid-37fxchfa> <svg xmlns="http://www.w3.org/2000/svg" width="13" height="13" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" data-astro-cid-37fxchfa><path d="M20 10c0 6-8 12-8 12s-8-6-8-12a8 8 0 0 1 16 0Z" data-astro-cid-37fxchfa></path><circle cx="12" cy="10" r="3" data-astro-cid-37fxchfa></circle></svg> Long Lake </span> <a href="tel:9524738577" class="prebar-chip prebar-phone" data-astro-cid-37fxchfa> <svg xmlns="http://www.w3.org/2000/svg" width="13" height="13" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" data-astro-cid-37fxchfa><path d="M22 16.92v3a2 2 0 0 1-2.18 2 19.79 19.79 0 0 1-8.63-3.07A19.5 19.5 0 0 1 4.15 12a19.79 19.79 0 0 1-3.07-8.67A2 2 0 0 1 3.06 2h3a2 2 0 0 1 2 1.72c.127.96.361 1.903.7 2.81a2 2 0 0 1-.45 2.11L7.09 9.91a16 16 0 0 0 6 6l1.27-1.27a2 2 0 0 1 2.11-.45c.907.339 1.85.573 2.81.7A2 2 0 0 1 21 17z" data-astro-cid-37fxchfa></path></svg> 952.473.8577 </a> </div> </div> <header id="site-header" class="sticky top-0 z-40 transition-shadow duration-300 data-[scrolled=true]:shadow-[0_4px_20px_-6px_rgba(0,0,0,0.12)]">  <div class="hero-blur-band" aria-hidden="true"></div> <div id="header-inner" class="relative z-10 container flex items-center justify-between h-16"> <a href="/" class="flex items-center gap-2.5"> <img src="https://ktunuekthpaqbvijarql.supabase.co/storage/v1/object/public/client-site-images/trinity-lutheran-church-and-trinity-preschool/trinitylogo-bw-3c874acd97.webp" alt="TrinityLogo bw" class="h-[90px] w-auto site-logo" width="192" height="90"> </a> <div class="flex items-center gap-3"> <nav class="hidden lg:flex items-center gap-6 text-sm font-medium"> <div class="group relative"> <button type="button" class="inline-flex items-center gap-1 hover:text-accent transition-colors whitespace-nowrap"> about us <svg width="10" height="10" viewBox="0 0 20 20" fill="currentColor" aria-hidden="true"> <path fill-rule="evenodd" d="M5.23 7.21a.75.75 0 011.06.02L10 11.06l3.71-3.83a.75.75 0 111.08 1.04l-4.24 4.38a.75.75 0 01-1.08 0L5.21 8.27a.75.75 0 01.02-1.06z" clip-rule="evenodd"></path> </svg> </button> <div class="invisible opacity-0 group-hover:visible group-hover:opacity-100 transition-opacity absolute right-0 top-full pt-2 min-w-[160px] z-50"> <div class="rounded-xl border border-border bg-card shadow-lg py-2 text-[#1C3C68]"> <a href="/im-new/" class="block px-4 py-2 text-sm text-[#1C3C68] hover:bg-muted hover:text-accent transition-colors">i&#39;m new</a><a href="/our-team/" class="block px-4 py-2 text-sm text-[#1C3C68] hover:bg-muted hover:text-accent transition-colors">our team</a><a href="/life-events/" class="block px-4 py-2 text-sm text-[#1C3C68] hover:bg-muted hover:text-accent transition-colors">life events</a><a href="/memorial-garden/" class="block px-4 py-2 text-sm text-[#1C3C68] hover:bg-muted hover:text-accent transition-colors">memorial garden</a><a href="/trinity-foundation/" class="block px-4 py-2 text-sm text-[#1C3C68] hover:bg-muted hover:text-accent transition-colors">trinity foundation</a><a href="/vision/" class="block px-4 py-2 text-sm text-[#1C3C68] hover:bg-muted hover:text-accent transition-colors">trinity vision</a><a href="/blog/" class="block px-4 py-2 text-sm text-[#1C3C68] hover:bg-muted hover:text-accent transition-colors">trinity stories</a><a href="/contact/" class="block px-4 py-2 text-sm text-[#1C3C68] hover:bg-muted hover:text-accent transition-colors">contact us</a> </div> </div> </div><a href="/worship/" class="hover:text-accent transition-colors whitespace-nowrap">worship + music</a><div class="group relative"> <button type="button" class="inline-flex items-center gap-1 hover:text-accent transition-colors whitespace-nowrap">
9 our ministries <svg width="10" height="10" viewBox="0 0 20 20" fill="currentColor" aria-hidden="true"> <path fill-rule="evenodd" d="M5.23 7.21a.75.75 0 011.06.02L10 11.06l3.71-3.83a.75.75 0 111.08 1.04l-4.24 4.38a.75.75 0 01-1.08 0L5.21 8.27a.75.75 0 01.02-1.06z" clip-rule="evenodd"></path> </svg> </button> <div class="invisible opacity-0 group-hover:visible group-hover:opacity-100 transition-opacity absolute right-0 top-full pt-2 min-w-[160px] z-50"> <div class="rounded-xl border border-border bg-card shadow-lg py-2 text-[#1C3C68]"> <a href="/children-and-family/" class="block px-4 py-2 text-sm text-[#1C3C68] hover:bg-muted hover:text-accent transition-colors">children and family</a><a href="/middle-school/" class="block px-4 py-2 text-sm text-[#1C3C68] hover:bg-muted hover:text-accent transition-colors">middle school</a><a href="/high-school/" class="block px-4 py-2 text-sm text-[#1C3C68] hover:bg-muted hover:text-accent transition-colors">high school</a><a href="/adult/" class="block px-4 py-2 text-sm text-[#1C3C68] hover:bg-muted hover:text-accent transition-colors">adult</a><a href="/outreach/" class="block px-4 py-2 text-sm text-[#1C3C68] hover:bg-muted hover:text-accent transition-colors">outreach</a><a href="/caring/" class="block px-4 py-2 text-sm text-[#1C3C68] hover:bg-muted hover:text-accent transition-colors">caring</a><a href="/brick-oven-ministry/" class="block px-4 py-2 text-sm text-[#1C3C68] hover:bg-muted hover:text-accent transition-colors">brick oven ministry</a><a href="/summer-nights/" class="block px-4 py-2 text-sm text-[#1C3C68] hover:bg-muted hover:text-accent transition-colors">summer nights</a> </div> </div> </div><a href="/agapegiftmarket/" class="hover:text-accent transition-colors whitespace-nowrap">agape gift market</a><a href="/preschool/" class="hover:text-accent transition-colors whitespace-nowrap">preschool</a><div class="group relative"> <button type="button" class="inline-flex items-center gap-1 hover:text-accent transition-colors whitespace-nowrap"> give <svg width="10" height="10" viewBox="0 0 20 20" fill="currentColor" aria-hidden="true"> <path fill-rule="evenodd" d="M5.23 7.21a.75.75 0 011.06.02L10 11.06l3.71-3.83a.75.75 0 111.08 1.04l-4.24 4.38a.75.75 0 01-1.08 0L5.21 8.27a.75.75 0 01.02-1.06z" clip-rule="evenodd"></path> </svg> </button> <div class="invisible opacity-0 group-hover:visible group-hover:opacity-100 transition-opacity absolute right-0 top-full pt-2 min-w-[160px] z-50"> <div class="rounded-xl border border-border bg-card shadow-lg py-2 text-[#1C3C68]"> <a href="/give/" class="block px-4 py-2 text-sm text-[#1C3C68] hover:bg-muted hover:text-accent transition-colors">ministry fund</a><a href="/together/" class="block px-4 py-2 text-sm text-[#1C3C68] hover:bg-muted hover:text-accent transition-colors">stewardship 2026</a><a href="/one/" class="block px-4 py-2 text-sm text-[#1C3C68] hover:bg-muted hover:text-accent transition-colors">capital campaign 24-27</a> </div> </div> </div><div class="group relative"> <button type="button" class="inline-flex items-center gap-1 hover:text-accent transition-colors whitespace-nowrap"> resources <svg width="10" height="10" viewBox="0 0 20 20" fill="currentColor" aria-hidden="true"> <path fill-rule="evenodd" d="M5.23 7.21a.75.75 0 011.06.02L10 11.06l3.71-3.83a.75.75 0 111.08 1.04l-4.24 4.38a.75.75 0 01-1.08 0L5.21 8.27a.75.75 0 01.02-1.06z" clip-rule="evenodd"></path> </svg> </button> <div class="invisible opacity-0 group-hover:visible group-hover:opacity-100 transition-opacity absolute right-0 top-full pt-2 min-w-[160px] z-50"> <div class="rounded-xl border border-border bg-card shadow-lg py-2 text-[#1C3C68]"> <a href="/members/" class="block px-4 py-2 text-sm text-[#1C3C68] hover:bg-muted hover:text-accent transition-colors">members</a><a href="/resources/" class="block px-4 py-2 text-sm text-[#1C3C68] hover:bg-muted hover:text-accent transition-colors">support</a><a href="/newsletter/" class="block px-4 py-2 text-sm text-[#1C3C68] hover:bg-muted hover:text-accent transition-colors">newsletter</a><a href="/calendar/" class="block px-4 py-2 text-sm text-[#1C3C68] hover:bg-muted hover:text-accent transition-colors">calendar</a> </div> </div> </div> <a href="tel:+19524738577" class="btn-primary text-sm whitespace-nowrap" style="border-radius: 9999px;"> 952.473.8577 </a> </nav> <style>astro-island,astro-slot,astro-static-slot{display:contents}</style>
9<script>(()=>{var e=async t=>{await(await t())()};(self.Astro||(self.Astro={})).load=e;window.dispatchEvent(new Event("astro:load"));})();</script>
9<script>(()=>{var A=Object.defineProperty;var g=(i,o,a)=>o in i?A(i,o,{enumerable:!0,configurable:!0,writable:!0,value:a}):i[o]=a;var d=(i,o,a)=>g(i,typeof o!="symbol"?o+"":o,a);{let i={0:t=>m(t),1:t=>a(t),2:t=>new RegExp(t),3:t=>new Date(t),4:t=>new Map(a(t)),5:t=>new Set(a(t)),6:t=>BigInt(t),7:t=>new URL(t),8:t=>new Uint8Array(t),9:t=>new Uint16Array(t),10:t=>new Uint32Array(t),11:t=>1/0*t},o=t=>{let[l,e]=t;return l in i?i[l](e):void 0},a=t=>t.map(o),m=t=>typeof t!="object"||t===null?t:Object.fromEntries(Object.entries(t).map(([l,e])=>[l,o(e)]));class y extends HTMLElement{constructor(){super(...arguments);d(this,"Component");d(this,"hydrator");d(this,"hydrate",async()=>{var b;if(!this.hydrator||!this.isConnected)return;let e=(b=this.parentElement)==null?void 0:b.closest("astro-island[ssr]");if(e){e.addEventListener("astro:hydrate",this.hydrate,{once:!0});return}let c=this.querySelectorAll("astro-slot"),n={},h=this.querySelectorAll("template[data-astro-template]");for(let r of h){let s=r.closest(this.tagName);s!=null&&s.isSameNode(this)&&(n[r.getAttribute("data-astro-template")||"default"]=r.innerHTML,r.remove())}for(let r of c){let s=r.closest(this.tagName);s!=null&&s.isSameNode(this)&&(n[r.getAttribute("name")||"default"]=r.innerHTML)}let p;try{p=this.hasAttribute("props")?m(JSON.parse(this.getAttribute("props"))):{}}catch(r){let s=this.getAttribute("component-url")||"<unknown>",v=this.getAttribute("component-export");throw v&&(s+=` (export ${v})`),console.error(`[hydrate] Error parsing props for component ${s}`,this.getAttribute("props"),r),r}let u;await this.hydrator(this)(this.Component,p,n,{client:this.getAttribute("client")}),this.removeAttribute("ssr"),this.dispatchEvent(new CustomEvent("astro:hydrate"))});d(this,"unmount",()=>{this.isConnected||this.dispatchEvent(new CustomEvent("astro:unmount"))})}disconnectedCallback(){document.removeEventListener("astro:after-swap",this.unmount),document.addEventListener("astro:after-swap",this.unmount,{once:!0})}connectedCallback(){if(!this.hasAttribute("await-children")||document.readyState==="interactive"||document.readyState==="complete")this.childrenConnectedCallback();else{let e=()=>{document.removeEventListener("DOMContentLoaded",e),c.disconnect(),this.childrenConnectedCallback()},c=new MutationObserver(()=>{var n;((n=this.lastChild)==null?void 0:n.nodeType)===Node.COMMENT_NODE&&this.lastChild.nodeValue==="astro:end"&&(this.lastChild.remove(),e())});c.observe(this,{childList:!0}),document.addEventListener("DOMContentLoaded",e)}}async childrenConnectedCallback(){let e=this.getAttribute("before-hydration-url");e&&await import(e),this.start()}async start(){let e=JSON.parse(this.getAttribute("opts")),c=this.getAttribute("client");if(Astro[c]===void 0){window.addEventListener(`astro:${c}`,()=>this.start(),{once:!0});return}try{await Astro[c](async()=>{let n=this.getAttribute("renderer-url"),[h,{default:p}]=await Promise.all([import(this.getAttribute("component-url")),n?import(n):()=>()=>{}]),u=this.getAttribute("component-export")||"default";if(!u.includes("."))this.Component=h[u];else{this.Component=h;for(let f of u.split("."))this.Component=this.Component[f]}return this.hydrator=p,this.hydrate},e,this)}catch(n){console.error(`[astro-island] Error hydrating ${this.getAttribute("component-url")}`,n)}}attributeChangedCallback(){this.hydrate()}}d(y,"observedAttributes",["props"]),customElements.get("astro-island")||customElements.define("astro-island",y)}})();</script>
9<astro-island uid="ZSIgpp" prefix="r1" component-url="/_astro/MobileMenu.Lb_vCGRk.js" component-export="default" renderer-url="/_astro/client.DPSb9UvF.js" props="{&quot;pages&quot;:[1,[[0,{&quot;url&quot;:[0,&quot;/?page_id=758&quot;],&quot;label&quot;:[0,&quot;about us&quot;],&quot;children&quot;:[1,[[0,{&quot;label&quot;:[0,&quot;i&#39;m new&quot;],&quot;url&quot;:[0,&quot;/im-new/&quot;]}],[0,{&quot;label&quot;:[0,&quot;our team&quot;],&quot;url&quot;:[0,&quot;/our-team/&quot;]}],[0,{&quot;label&quot;:[0,&quot;life events&quot;],&quot;url&quot;:[0,&quot;/life-events/&quot;]}],[0,{&quot;label&quot;:[0,&quot;memorial garden&quot;],&quot;url&quot;:[0,&quot;/memorial-garden/&quot;]}],[0,{&quot;label&quot;:[0,&quot;trinity foundation&quot;],&quot;url&quot;:[0,&quot;/trinity-foundation/&quot;]}],[0,{&quot;label&quot;:[0,&quot;trinity vision&quot;],&quot;url&quot;:[0,&quot;/vision/&quot;]}],[0,{&quot;label&quot;:[0,&quot;trinity stories&quot;],&quot;url&quot;:[0,&quot;/blog/&quot;]}],[0,{&quot;label&quot;:[0,&quot;contact us&quot;],&quot;url&quot;:[0,&quot;/contact/&quot;]}]]]}],[0,{&quot;url&quot;:[0,&quot;/worship/&quot;],&quot;label&quot;:[0,&quot;worship + music&quot;],&quot;children&quot;:[0]}],[0,{&quot;url&quot;:[0,&quot;#&quot;],&quot;label&quot;:[0,&quot;our ministries&quot;],&quot;children&quot;:[1,[[0,{&quot;label&quot;:[0,&quot;children and family&quot;],&quot;url&quot;:[0,&quot;/children-and-family/&quot;]}],[0,{&quot;label&quot;:[0,&quot;middle school&quot;],&quot;url&quot;:[0,&quot;/middle-school/&quot;]}],[0,{&quot;label&quot;:[0,&quot;high school&quot;],&quot;url&quot;:[0,&quot;/high-school/&quot;]}],[0,{&quot;label&quot;:[0,&quot;adult&quot;],&quot;url&quot;:[0,&quot;/adult/&quot;]}],[0,{&quot;label&quot;:[0,&quot;outreach&quot;],&quot;url&quot;:[0,&quot;/outreach/&quot;]}],[0,{&quot;label&quot;:[0,&quot;caring&quot;],&quot;url&quot;:[0,&quot;/caring/&quot;]}],[0,{&quot;label&quot;:[0,&quot;brick oven ministry&quot;],&quot;url&quot;:[0,&quot;/brick-oven-ministry/&quot;]}],[0,{&quot;label&quot;:[0,&quot;summer nights&quot;],&quot;url&quot;:[0,&quot;/summer-nights/&quot;]}]]]}],[0,{&quot;url&quot;:[0,&quot;/agapegiftmarket/&quot;],&quot;label&quot;:[0,&quot;agape gift market&quot;],&quot;children&quot;:[0]}],[0,{&quot;url&quot;:[0,&quot;/preschool/&quot;],&quot;label&quot;:[0,&quot;preschool&quot;],&quot;children&quot;:[0]}],[0,{&quot;url&quot;:[0,&quot;/give/&quot;],&quot;label&quot;:[0,&quot;give&quot;],&quot;children&quot;:[1,[[0,{&quot;label&quot;:[0,&quot;ministry fund&quot;],&quot;url&quot;:[0,&quot;/give/&quot;]}],[0,{&quot;label&quot;:[0,&quot;stewardship 2026&quot;],&quot;url&quot;:[0,&quot;/together/&quot;]}],[0,{&quot;label&quot;:[0,&quot;capital campaign 24-27&quot;],&quot;url&quot;:[0,&quot;/one/&quot;]}]]]}],[0,{&quot;url&quot;:[0,&quot;/resources/&quot;],&quot;label&quot;:[0,&quot;resources&quot;],&quot;children&quot;:[1,[[0,{&quot;label&quot;:[0,&quot;members&quot;],&quot;url&quot;:[0,&quot;/members/&quot;]}],[0,{&quot;label&quot;:[0,&quot;support&quot;],&quot;url&quot;:[0,&quot;/resources/&quot;]}],[0,{&quot;label&quot;:[0,&quot;newsletter&quot;],&quot;url&quot;:[0,&quot;/newsletter/&quot;]}],[0,{&quot;label&quot;:[0,&quot;calendar&quot;],&quot;url&quot;:[0,&quot;/calendar/&quot;]}]]]}]]],&quot;phone&quot;:[0,&quot;952.473.8577&quot;]}" ssr client="load" opts="{&quot;name&quot;:&quot;MobileMenu&quot;,&quot;value&quot;:true}" await-children><div class="lg:hidden"><button aria-label="Open menu" aria-expanded="false" class="p-2 rounded-lg hover:bg-muted"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-menu h-6 w-6"><line x1="4" x2="20" y1="12" y2="12"></line><line x1="4" x2="20" y1="6" y2="6"></line><line x1="4" x2="20" y1="18" y2="18"></line></svg></button></div><!--astro:end--></astro-island> </div> </div> </header>    <main class="-mt-[120px]" data-astro-cid-37fxchfa>   <section class="relative w-full min-h-[447px] md:min-h-[475px] lg:min-h-[555px] overflow-hidden"> <img src="https://ktunuekthpaqbvijarql.supabase.co/storage/v1/object/public/scraped-images/trinitylonglake.org/wp-uploads/2024/06/view-at-dusk-from-the-west-1.png" alt="Trinity Lutheran Church" class="absolute inset-0 w-full h-full object-cover object-center"> <div class="absolute inset-0 flex items-end"> <div class="container mx-auto px-6 pb-10"> <h1 class="font-display text-white font-black leading-none" style="font-size: clamp(2.8rem, 7vw, 5rem); text-shadow: 0 2px 12px rgba(0,0,0,0.4);">
10contact us
11</h1> </div> </div> </section>  <section class="w-full bg-white py-12"> <div class="container mx-auto px-6 max-w-6xl"> <div class="grid grid-cols-1 md:grid-cols-2 gap-12"> <!-- Left Column: Address, Phone, Social Icons, Form --> <div> <!-- Address & Phone --> <div class="text-sm text-foreground mb-4 leading-relaxed"> <p> <strong> <a href="https://goo.gl/maps/CMfagNBcUVdVatoq8" target="_blank" rel="noopener" class="hover:underline">
12trinity lutheran church and trinity preschool
13</a> </strong> </p> <p>2060 county road 6, long lake, mn 55356</p> <p class="mt-3">
14main &amp; text-to number: <a href="tel:+19524738577" class="text-foreground hover:underline">952.473.8577</a> </p> <p>
15preschool: <a href="tel:+19524738577" class="text-foreground hover:underline">952.473.8577 ext 120</a> </p> </div> <hr class="border-gray-300 my-4"> <!-- Social Icons --> <div class="flex gap-3 my-4"> <a href="https://www.facebook.com/TrinityLongLake" target="_blank" rel="noopener noreferrer" class="bg-foreground text-white w-9 h-9 flex items-center justify-center rounded"> <svg xmlns="http://www.w3.org/2000/svg" class="w-5 h-5" fill="currentColor" viewBox="0 0 24 24"> <path d="M18 2h-3a5 5 0 00-5 5v3H7v4h3v8h4v-8h3l1-4h-4V7a1 1 0 011-1h3z"></path> </svg> </a> <a href="https://www.instagram.com/trinitylonglake/" target="_blank" rel="noopener noreferrer" class="bg-foreground text-white w-9 h-9 flex items-center justify-center rounded"> <svg xmlns="http://www.w3.org/2000/svg" class="w-5 h-5" fill="none" stroke="currentColor" stroke-width="2" viewBox="0 0 24 24"> <rect x="2" y="2" width="20" height="20" rx="5" ry="5"></rect> <path d="M16 11.37A4 4 0 1112.63 8 4 4 0 0116 11.37z"></path> <line x1="17.5" y1="6.5" x2="17.51" y2="6.5"></line> </svg> </a> <a href="https://www.youtube.com/@TrinityLongLake" target="_blank" rel="noopener noreferrer" class="bg-foreground text-white w-9 h-9 flex items-center justify-center rounded"> <svg xmlns="http://www.w3.org/2000/svg" class="w-5 h-5" fill="currentColor" viewBox="0 0 24 24"> <path d="M22.54 6.42a2.78 2.78 0 00-1.95-1.96C18.88 4 12 4 12 4s-6.88 0-8.59.46a2.78 2.78 0 00-1.95 1.96A29 29 0 001 12a29 29 0 00.46 5.58A2.78 2.78 0 003.41 19.6C5.12 20 12 20 12 20s6.88 0 8.59-.46a2.78 2.78 0 001.95-1.95A29 29 0 0023 12a29 29 0 00-.46-5.58z"></path> <polygon points="9.75 15.02 15.5 12 9.75 8.98 9.75 15.02" fill="white"></polygon> </svg> </a> <a href="/contact-team/administration/" target="_blank" rel="noopener" class="bg-foreground text-white w-9 h-9 flex items-center justify-center rounded"> <svg xmlns="http://www.w3.org/2000/svg" class="w-5 h-5" fill="none" stroke="currentColor" stroke-width="2" viewBox="0 0 24 24"> <path d="M4 4h16c1.1 0 2 .9 2 2v12c0 1.1-.9 2-2 2H4c-1.1 0-2-.9-2-2V6c0-1.1.9-2 2-2z"></path> <polyline points="22,6 12,13 2,6"></polyline> </svg> </a> </div> <hr class="border-gray-300 my-4"> <!-- Contact form. Native to the site (no third-party embed): the
16               Command Center lead connector loaded in BaseLayout reads this
17               submission and delivers it to whoever is listed for this site
18               under Leads in the Command Center, so staff can change who gets
19               notified without a code change. --> <div class="mt-6"> <h2 class="font-display text-xl font-bold text-foreground mb-1">send us a message</h2> <p class="text-sm text-muted-foreground mb-4">
20We would love to hear from you. Fill out the form and someone from our team will get back to you.
21</p> <form id="contact-form" data-oxsome-form="Contact Us" class="space-y-4"> <div> <label for="cf-name" class="block text-sm font-semibold text-foreground mb-1">
22name <span class="text-red-600" aria-hidden="true">*</span> </label> <input id="cf-name" name="name" type="text" required autocomplete="name" class="w-full rounded border border-gray-300 bg-white px-3 py-2 text-sm text-foreground focus:border-gray-500 focus:outline-none focus:ring-1 focus:ring-gray-500"> </div> <div> <label for="cf-email" class="block text-sm font-semibold text-foreground mb-1">
23email <span class="text-red-600" aria-hidden="true">*</span> </label> <input id="cf-email" name="email" type="email" required autocomplete="email" class="w-full rounded border border-gray-300 bg-white px-3 py-2 text-sm text-foreground focus:border-gray-500 focus:outline-none focus:ring-1 focus:ring-gray-500"> </div> <div> <label for="cf-phone" class="block text-sm font-semibold text-foreground mb-1">
24phone <span class="font-normal text-muted-foreground">(optional)</span> </label> <input id="cf-phone" name="phone" type="tel" autocomplete="tel" class="w-full rounded border border-gray-300 bg-white px-3 py-2 text-sm text-foreground focus:border-gray-500 focus:outline-none focus:ring-1 focus:ring-gray-500"> </div> <div> <label for="cf-subject" class="block text-sm font-semibold text-foreground mb-1">
25subject <span class="text-red-600" aria-hidden="true">*</span> </label> <input id="cf-subject" name="subject" type="text" required class="w-full rounded border border-gray-300 bg-white px-3 py-2 text-sm text-foreground focus:border-gray-500 focus:outline-none focus:ring-1 focus:ring-gray-500"> </div> <div> <label for="cf-message" class="block text-sm font-semibold text-foreground mb-1">
26message <span class="text-red-600" aria-hidden="true">*</span> </label> <textarea id="cf-message" name="message" rows="5" required class="w-full rounded border border-gray-300 bg-white px-3 py-2 text-sm text-foreground focus:border-gray-500 focus:outline-none focus:ring-1 focus:ring-gray-500"></textarea> </div> <p class="text-xs leading-relaxed text-muted-foreground">
27Enter your mobile phone to opt in for occasional text messages
28                (frequency may vary). Reply STOP to opt-out of future messaging.
29                Reply HELP for more information. Message &amp; Data rates may
30                apply.
31<a href="https://trinitylonglake.org/privacy-policy/" target="_blank" rel="noopener nofollow noreferrer" class="underline hover:no-underline">Privacy Policy</a> </p> <button type="submit" class="inline-flex items-center justify-center rounded bg-foreground px-6 py-2.5 text-sm font-bold uppercase tracking-wide text-white transition-opacity hover:opacity-90 disabled:cursor-not-allowed disabled:opacity-60">
32send message
33</button> <p id="contact-form-status" class="text-sm" role="status" aria-l
33ive="polite"></p> </form> </div> 
33<script>
34            (function () {
35              var form = document.getElementById('contact-form');
36              if (!form) return;
37
38              var status = document.getElementById('contact-form-status');
39              var button = form.querySelector('button[type="submit"]');
40              var ENDPOINT =
41                'https://ktunuekthpaqbvijarql.supabase.co/functions/v1/lead-intake';
42
43              function say(text, tone) {
44                status.textContent = text;
45                status.className =
46                  'text-sm ' +
47                  (tone === 'error'
48                    ? 'text-red-600'
49                    : tone === 'success'
50                      ? 'text-green-700 font-semibold'
51                      : 'text-muted-foreground');
52              }
53
54              function succeed() {
55                form.reset();
56                button.disabled = false;
57                button.textContent = 'send message';
58                say(
59                  'We appreciate your message and will get back to you soon.',
60                  'success'
61                );
62              }
63
64              form.addEventListener('submit', function (event) {
65                // The browser has already enforced the required fields by the
66                // time submit fires, and the Command Center connector has
67                // already read this submission (it listens in the capture
68                // phase, which runs before this handler). Stopping the default
69                // only prevents the page from navigating away.
70                event.preventDefault();
71
72                button.disabled = true;
73                button.textContent = 'sending...';
74                say('Sending your message...', 'info');
75
76                // Normal path: the connector is loaded and has sent the lead,
77                // including its own retry. Anything that blocked that script
78                // from loading falls through to sending the same payload here,
79                // so a message is never silently dropped.
80                if (window.__oxsomeWebhookLoaded) {
81                  succeed();
82                  return;
83                }
84
85                var data = new FormData(form);
86                fetch(ENDPOINT, {
87                  method: 'POST',
88                  headers: { 'Content-Type': 'application/json' },
89                  body: JSON.stringify({
90                    name: data.get('name') || '',
91                    email: data.get('email') || '',
92                    phone: data.get('phone') || '',
93                    message: data.get('message') || '',
94                    form_name: 'Contact Us',
95                    source_url: window.location.href
96                  })
97                })
98                  .then(function (res) {
99                    if (!res.ok) throw new Error('bad status');
100                    succeed();
101                  })
102                  .catch(function () {
103                    button.disabled = false;
104                    button.textContent = 'send message';
105                    say(
106                      'Sorry, something went wrong sending your message. Please call us at 952.473.8577 or email [email protected].',
107                      'error'
108                    );
109                  });
110              });
111            })();
112          </script>
112 </div> <!-- Right Column: Community for You image + Map --> <div> <!-- Community for You image --> <div class="mb-6"> <img src="https://ktunuekthpaqbvijarql.supabase.co/storage/v1/object/public/scraped-images/trinitylonglake.org/wp-uploads/2023/11/Community-for-you-blue.png" alt="Community for You" class="max-w-[200px] mx-auto md:mx-0"> </div> <!-- Google Map embed --> <div style="margin:1.5rem 0"> <iframe src="https://www.google.com/maps?q=Trinity%20Long%20Lake%2C%202060%20County%20Road%206%2C%20Long%20Lake%2C%20MN%2055356&z=13&output=embed" width="100%" height="450" frameborder="0" style="border:0;border-radius:8px" allowfullscreen loading="lazy"></iframe> </div> </div> </div> </div> </section>  </main> <footer class="text-background" style="background-color:#344B68;"> <div class="container py-14 "> <div class="w-full flex flex-col md:flex-row md:items-start md:justify-between gap-8">  <div class="flex flex-col min-w-0 items-center md:items-start">  <div class="text-center md:text-left"> <h3 class="font-display font-bold text-xl leading-snug">Trinity Lutheran Church<br class="md:hidden"> and Trinity Preschool</h3> </div>  <div class="flex flex-col sm:flex-row gap-8 sm:gap-[100px] items-center sm:items-start" style="margin-top:30px;">  <div class="text-center md:text-left"> <address class="not-italic text-sm text-background/75 leading-relaxed lowercase"> 2060 County Road 6<br> Long Lake, MN 55356 </address> <div class="mt-4 text-sm space-y-1"> <p> <span class="text-background/60 text-xs uppercase tracking-wide">Main &amp; Text-To</span><br> <a href="tel:+19524738577" class="text-background hover:text-accent transition-colors font-medium"> 952.473.8577 </a> </p> <p> <span class="text-background/60 text-xs uppercase tracking-wide">Preschool</span><br> <a href="tel:+19524738577" class="text-background hover:text-accent transition-colors font-medium">
113952.473.8577 ext 120
114</a> </p> </div>  <div class="hidden md:flex gap-5 mt-6 justify-center md:justify-start"> <a href="https://www.facebook.com/trinitylonglake/" aria-label="Facebook" class="text-background/75 hover:text-accent transition-colors" target="_blank" rel="noopener noreferrer"> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="currentColor" class="w-6 h-6"> <path d="M22 12c0-5.523-4.477-10-10-10S2 6.477 2 12c0 4.991 3.657 9.128 8.438 9.878V14.89h-2.54V12h2.54V9.797c0-2.506 1.492-3.89 3.777-3.89 1.094 0 2.238.195 2.238.195v2.46h-1.26c-1.243 0-1.63.771-1.63 1.562V12h2.773l-.443 2.89h-2.33v6.988C18.343 21.128 22 16.991 22 12z"></path> </svg> </a> <a href="https://www.instagram.com/trinitylonglake/" aria-label="Instagram" class="text-background/75 hover:text-accent transition-colors" target="_blank" rel="noopener noreferrer"> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="currentColor" class="w-6 h-6"> <path d="M12 2.163c3.204 0 3.584.012 4.85.07 3.252.148 4.771 1.691 4.919 4.919.058 1.265.069 1.645.069 4.849 0 3.205-.012 3.584-.069 4.849-.149 3.225-1.664 4.771-4.919 4.919-1.266.058-1.644.07-4.85.07-3.204 0-3.584-.012-4.849-.07-3.26-.149-4.771-1.699-4.919-4.92-.058-1.265-.07-1.644-.07-4.849 0-3.204.013-3.583.07-4.849.149-3.227 1.664-4.771 4.919-4.919 1.266-.057 1.645-.069 4.849-.069zM12 0C8.741 0 8.333.014 7.053.072 2.695.272.273 2.69.073 7.052.014 8.333 0 8.741 0 12c0 3.259.014 3.668.072 4.948.2 4.358 2.618 6.78 6.98 6.98C8.333 23.986 8.741 24 12 24c3.259 0 3.668-.014 4.948-.072 4.354-.2 6.782-2.618 6.979-6.98.059-1.28.073-1.689.073-4.948 0-3.259-.014-3.667-.072-4.947-.196-4.354-2.617-6.78-6.979-6.98C15.668.014 15.259 0 12 0zm0 5.838a6.162 6.162 0 100 12.324 6.162 6.162 0 000-12.324zM12 16a4 4 0 110-8 4 4 0 010 8zm6.406-11.845a1.44 1.44 0 100 2.881 1.44 1.44 0 000-2.881z"></path> </svg> </a> <a href="https://www.youtube.com/@trinitylonglakelive2317" aria-label="YouTube" class="text-background/75 hover:text-accent transition-colors" target="_blank" rel="noopener noreferrer"> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="currentColor" class="w-6 h-6"> <path d="M23.498 6.186a3.016 3.016 0 00-2.122-2.136C19.505 3.545 12 3.545 12 3.545s-7.505 0-9.377.505A3.017 3.017 0 00.502 6.186C0 8.07 0 12 0 12s0 3.93.502 5.814a3.016 3.016 0 002.122 2.136c1.871.505 9.376.505 9.376.505s7.505 0 9.377-.505a3.015 3.015 0 002.122-2.136C24 15.93 24 12 24 12s0-3.93-.502-5.814zM9.545 15.568V8.432L15.818 12l-6.273 3.568z"></path> </svg> </a> <a href="/contact-team/administration/" target="_blank" rel="noopener" aria-label="Contact us" class="text-background/75 hover:text-accent transition-colors"> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="currentColor" class="w-6 h-6"> <path d="M1.5 8.67v8.58a3 3 0 003 3h15a3 3 0 003-3V8.67l-8.928 5.493a3 3 0 01-3.144 0L1.5 8.67z"></path> <path d="M22.5 6.908V6.75a3 3 0 00-3-3h-15a3 3 0 00-3 3v.158l9.714 5.978a1.5 1.5 0 001.572 0L22.5 6.908z"></path> </svg> </a> </div> </div>  <div class="text-center md:text-left"> <h4 class="font-semibold mb-4 uppercase text-xs tracking-widest text-background/60">Links</h4> <ul class="space-y-2 text-sm mb-8"> <li><a href="/contact/" class="text-background/85 hover:text-accent transition-colors lowercase">Contact Us</a></li><li><a href="/sign-up-for-emails/" class="text-background/85 hover:text-accent transition-colors lowercase">Sign Up for Emails</a></li><li><a href="/calendar/" class="text-background/85 hover:text-accent transition-colors lowercase">Calendar</a></li><li><a href="/work-at-trinity/" class="text-background/85 hover:text-accent transition-colors lowercase">Work At Trinity</a></li> </ul>  <div class="flex md:hidden gap-5 mt-2 justify-center"> <a href="https://www.facebook.com/trinitylonglake/" aria-label="Facebook" class="text-background/75 hover:text-accent transition-colors" target="_blank" rel="noopener noreferrer"> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="currentColor" class="w-6 h-6"> <path d="M22 12c0-5.523-4.477-10-10-10S2 6.477 2 12c0 4.991 3.657 9.128 8.438 9.878V14.89h-2.54V12h2.54V9.797c0-2.506 1.492-3.89 3.777-3.89 1.094 0 2.238.195 2.238.195v2.46h-1.26c-1.243 0-1.63.771-1.
11463 1.562V12h2.773l-.443 2.89h-2.33v6.988C18.343 21.128 22 16.991 22 12z"></path> </svg> </a> <a href="https://www.instagram.com/trinitylonglake/" aria-label="Instagram" class="text-background/75 hover:text-accent transition-colors" target="_blank" rel="noopener noreferrer"> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="currentColor" class="w-6 h-6"> <path d="M12 2.163c3.204 0 3.584.012 4.85.07 3.252.148 4.771 1.691 4.919 4.919.058 1.265.069 1.645.069 4.849 0 3.205-.012 3.584-.069 4.849-.149 3.225-1.664 4.771-4.919 4.919-1.266.058-1.644.07-4.85.07-3.204 0-3.584-.012-4.849-.07-3.26-.149-4.771-1.699-4.919-4.92-.058-1.265-.07-1.644-.07-4.849 0-3.204.013-3.583.07-4.849.149-3.227 1.664-4.771 4.919-4.919 1.266-.057 1.645-.069 4.849-.069zM12 0C8.741 0 8.333.014 7.053.072 2.695.272.273 2.69.073 7.052.014 8.333 0 8.741 0 12c0 3.259.014 3.668.072 4.948.2 4.358 2.618 6.78 6.98 6.98C8.333 23.986 8.741 24 12 24c3.259 0 3.668-.014 4.948-.072 4.354-.2 6.782-2.618 6.979-6.98.059-1.28.073-1.689.073-4.948 0-3.259-.014-3.667-.072-4.947-.196-4.354-2.617-6.78-6.979-6.98C15.668.014 15.259 0 12 0zm0 5.838a6.162 6.162 0 100 12.324 6.162 6.162 0 000-12.324zM12 16a4 4 0 110-8 4 4 0 010 8zm6.406-11.845a1.44 1.44 0 100 2.881 1.44 1.44 0 000-2.881z"></path> </svg> </a> <a href="https://www.youtube.com/@trinitylonglakelive2317" aria-label="YouTube" class="text-background/75 hover:text-accent transition-colors" target="_blank" rel="noopener noreferrer"> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="currentColor" class="w-6 h-6"> <path d="M23.498 6.186a3.016 3.016 0 00-2.122-2.136C19.505 3.545 12 3.545 12 3.545s-7.505 0-9.377.505A3.017 3.017 0 00.502 6.186C0 8.07 0 12 0 12s0 3.93.502 5.814a3.016 3.016 0 002.122 2.136c1.871.505 9.376.505 9.376.505s7.505 0 9.377-.505a3.015 3.015 0 002.122-2.136C24 15.93 24 12 24 12s0-3.93-.502-5.814zM9.545 15.568V8.432L15.818 12l-6.273 3.568z"></path> </svg> </a> <a href="/contact-team/administration/" target="_blank" rel="noopener" aria-label="Contact us" class="text-background/75 hover:text-accent transition-colors"> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="currentColor" class="w-6 h-6"> <path d="M1.5 8.67v8.58a3 3 0 003 3h15a3 3 0 003-3V8.67l-8.928 5.493a3 3 0 01-3.144 0L1.5 8.67z"></path> <path d="M22.5 6.908V6.75a3 3 0 00-3-3h-15a3 3 0 00-3 3v.158l9.714 5.978a1.5 1.5 0 001.572 0L22.5 6.908z"></path> </svg> </a> </div> </div> </div> </div>  <div class="flex-shrink-0 w-full md:w-auto flex justify-center md:block"> <img src="https://ktunuekthpaqbvijarql.supabase.co/storage/v1/object/public/client-site-images/trinity-lutheran-church-and-trinity-preschool/community-for-you-white-2048x1603-99fc2645fb.webp" alt="Community for you white 2048x1603" class="object-contain w-[250px] md:w-[189px] lg:w-[225px]"> </div> </div> </div>  <div class="border-t border-background/10 py-8"> <div class="container flex flex-wrap items-center justify-center gap-8"> <img src="https://ktunuekthpaqbvijarql.supabase.co/storage/v1/object/public/client-site-images/trinity-lutheran-church-and-trinity-preschool/elca-white-4682492d05.webp" alt="ELCA white" class="h-16 w-auto object-contain"> </div> </div> <div class="border-t border-background/10"> <div class="container py-5 text-xs text-background/60 flex justify-center items-center"> <span class="text-center">&copy; 2026 Trinity Lutheran Church and Trinity Preschool.<br class="sm:hidden"><span class="hidden sm:inline"></span>All rights reserved.</span>  </div> </div> </footer>  
114<script>
115      (function () {
116        if (window.__hdrScrollBound) return;
117        window.__hdrScrollBound = true;
118        var ticking = false;
119        function update() {
120          var h = document.getElementById('site-header');
121          if (h) h.setAttribute('data-scrolled', window.scrollY > 12 ? 'true' : 'false');
122          ticking = false;
123        }
124        window.addEventListener('scroll', function () {
125          if (!ticking) { window.requestAnimationFrame(update); ticking = true; }
126        }, { passive: true });
127        update();
128      })();
129    </script>
129  
129<script>
130      (function () {
131        function revealHashTarget() {
132          // Deep-link into a page (e.g. /page/#some-section) can race the
133          // scroll-reveal IntersectionObserver: later image loads (galleries,
134          // slideshows that append cloned nodes) shift layout after the
135          // initial scan, so the anchored section's .reveal elements never
136          // cross the visibility threshold and stay stuck at opacity:0.
137          // Anything inside (or the anchor target itself) is force-revealed
138          // immediately, no animation, so anchor links always show content.
139          if (!location.hash) return;
140          var target;
141          try { target = document.querySelector(location.hash); } catch (e) { return; }
142          if (!target) return;
143          var els = target.classList.contains('reveal') ? [target] : [];
144          els = els.concat(Array.prototype.slice.call(target.querySelectorAll('.reveal')));
145          els.forEach(function (el) { el.classList.add('is-visible'); });
146        }
147        function initReveals() {
148          revealHashTarget();
149          if (!document.documentElement.classList.contains('reveal-ready')) return;
150          var els = document.querySelectorAll('.reveal:not(.is-visible)');
151          if (!els.length) return;
152          if (!('IntersectionObserver' in window)) {
153            els.forEach(function (el) { el.classList.add('is-visible'); });
154            return;
155          }
156          var io = new IntersectionObserver(function (entries, obs) {
157            entries.forEach(function (entry) {
158              if (entry.isIntersecting) {
159                entry.target.classList.add('is-visible');
160                obs.unobserve(entry.target);
161              }
162            });
163          }, { rootMargin: '0px 0px -8% 0px', threshold: 0.08 });
164          els.forEach(function (el) { io.observe(el); });
165        }
166        document.addEventListener('astro:page-load', initReveals);
167        if (document.readyState !== 'loading') initReveals();
168        else document.addEventListener('DOMContentLoaded', initReveals);
169      })();
170    </script>
170  
170<script>
171        (function () {
172          // day: 0=Sun … 6=Sat, in America/Chicago; service window ~75 min.
173          var SERVICES = [
174            { day: 0, hour: 9,  min: 0, label: 'Sunday 9:00am',    dur: 75 },
175            { day: 3, hour: 18, min: 0, label: 'Wednesday 6:00pm', dur: 75 }
176          ];
177          function render() {
178            var dot = document.getElementById('prebar-dot');
179            var status = document.getElementById('prebar-status');
180            if (!dot || !status) return;
181            // Current time in Central via Intl parts.
182            var parts = new Intl.DateTimeFormat('en-US', {
183              timeZone: 'America/Chicago', weekday: 'short',
184              hour: 'numeric', minute: 'numeric', hour12: false
185            }).formatToParts(new Date());
186            var wk = { Sun:0, Mon:1, Tue:2, Wed:3, Thu:4, Fri:5, Sat:6 };
187            var get = function (t) { return parts.find(function (p) { return p.type === t; }); };
188            var day = wk[(get('weekday') || {}).value];
189            var hh = parseInt((get('hour') || {}).value, 10) % 24;
190            var mm = parseInt((get('minute') || {}).value, 10);
191            var nowMin = day * 1440 + hh * 60 + mm;
192
193            var live = null, best = Infinity, nextLabel = SERVICES[0].label;
194            for (var i = 0; i < SERVICES.length; i++) {
195              var s = SERVICES[i];
196              var start = s.day * 1440 + s.hour * 60 + s.min;
197              if (nowMin >= start && nowMin < start + s.dur) { live = s; break; }
198              var delta = start - nowMin;
199              if (delta < 0) delta += 7 * 1440; // wrap to next week
200              if (delta < best) { best = delta; nextLabel = s.label; }
201            }
202            var live_ = !!live;
203            dot.classList.toggle('is-live', live_);
204            status.textContent = live_ ? 'Worship in progress' : 'Worship ' + nextLabel;
205          }
206          render();
207          setInterval(render, 60000);
208          document.addEventListener('astro:after-swap', render);
209        })();
210      </script>
210 </body> </html> 

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.