body{margin:0;background:#FFFFFF}
a{color:#A8142B}a:hover{color:#7E0E20}
input,textarea,select{font:inherit}
input:focus,textarea:focus,select:focus{outline:3px solid #1D4A94;outline-offset:1px}
.navlink{color:#FFFFFF;text-decoration:none}.navlink:hover{color:#F3C9D0}
.pill-saints{background:#CFE0FA;color:#0B1F45;text-decoration:none;padding:8px 16px;border-radius:999px;font-weight:600;display:inline-flex;align-items:center;gap:6px}.pill-saints:hover{background:#FFFFFF;color:#0B1F45}
.pill-donate{background:#F2B632;color:#0B1F45;text-decoration:none;padding:8px 16px;border-radius:999px;font-weight:700;display:inline-flex;align-items:center;gap:6px}.pill-donate:hover{background:#FFD066;color:#0B1F45}
.btn-red{background:#A8142B;color:#FFFFFF;text-decoration:none}.btn-red:hover{background:#7E0E20;color:#FFFFFF}
.btn-ghost{color:#FFFFFF;text-decoration:none;border:1px solid rgba(255,255,255,.55)}.btn-ghost:hover{background:rgba(255,255,255,.1);color:#FFFFFF}
.btn-navy{background:#0B1F45;color:#FFFFFF;text-decoration:none}.btn-navy:hover{background:#1D4A94;color:#FFFFFF}
.blood-grid{grid-template-columns:repeat(4,minmax(0,1fr))}
@media (max-width: 1000px){.blood-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media (max-width: 560px){.blood-grid{grid-template-columns:minmax(0,1fr)}}
.saint-card:hover{transform:translateY(-3px);box-shadow:0 14px 32px rgba(11,31,69,.14)}
@keyframes heroDrift{0%{transform:scale(1.02) translate(0,0)}50%{transform:scale(1.12) translate(-2%,-2%)}100%{transform:scale(1.02) translate(0,0)}}
.hero-media{animation:heroDrift 24s ease-in-out infinite}
@media (prefers-reduced-motion: reduce){.hero-media{animation:none}}
@keyframes medBreathe{0%{transform:scale(.55)}40%{transform:scale(1)}50%{transform:scale(1)}100%{transform:scale(.55)}}
@keyframes medIn{0%,45%{opacity:1}50%,100%{opacity:0}}
@keyframes medOut{0%,45%{opacity:0}50%,95%{opacity:1}100%{opacity:0}}
@keyframes medGlow{0%,100%{opacity:.75}50%{opacity:1}}
.med-breathe{animation:medBreathe 10s ease-in-out infinite}
.med-in{animation:medIn 10s linear infinite}
.med-out{animation:medOut 10s linear infinite}
.med-glow{animation:medGlow 6s ease-in-out infinite}
@media (prefers-reduced-motion: reduce){.med-breathe,.med-glow{animation:none}.med-in{animation:none}.med-out{display:none}}
@keyframes gaRise{0%{transform:translateY(0) scale(.6);opacity:0}15%{opacity:.9}100%{transform:translateY(-1100px) scale(1.1);opacity:0}}
@keyframes gaFloat{0%,100%{transform:translateY(0)}50%{transform:translateY(-12px)}}
@keyframes gaHalo{0%,100%{opacity:.7;transform:translate(-50%,-50%) scale(.96)}50%{opacity:1;transform:translate(-50%,-50%) scale(1.04)}}
@keyframes gaHaloOn{0%,100%{opacity:1;transform:translate(-50%,-50%) scale(1.15)}50%{opacity:1;transform:translate(-50%,-50%) scale(1.3)}}
@keyframes gaReveal{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}
.ga-spark{animation-name:gaRise;animation-timing-function:linear;animation-iteration-count:infinite;opacity:0}
.ga-float{animation:gaFloat 7s ease-in-out infinite}
.ga-halo{animation:gaHalo 6s ease-in-out infinite}
.ga-halo-on{animation:gaHaloOn 4s ease-in-out infinite;filter:brightness(1.25)}
.ga-reveal{animation:gaReveal 1.2s ease-out both}
@media (prefers-reduced-motion: reduce){.ga-spark{display:none}.ga-float,.ga-halo,.ga-halo-on{animation:none}}
.navlink{white-space:nowrap}
.hero-cta{display:flex;flex-wrap:wrap;gap:14px}
.hero-cta a{flex:0 0 auto;width:290px;max-width:100%}
@media (max-width: 420px){.med-head img{display:none}.med-head h3{font-size:24px !important}}
@media (max-width: 760px){.mainnav.open a:not([class*=pill]){display:inline-flex !important;align-items:center;min-height:44px}}
@media (min-width: 900px){.footer-grid{grid-template-columns:repeat(3,minmax(0,1fr)) !important}}
@media (min-width: 1600px){[style*="max-width: 1200px"]{max-width:1400px !important}[style*="max-width: 1000px"],[style*="max-width: 1100px"]{max-width:1200px !important}}
@media (min-width: 2000px){[style*="max-width: 1200px"]{max-width:1640px !important}[style*="max-width: 1000px"],[style*="max-width: 1100px"]{max-width:1400px !important}}
@media (min-width: 1024px){.g2{grid-template-columns:repeat(2,minmax(0,1fr)) !important}.g3{grid-template-columns:repeat(3,minmax(0,1fr)) !important}.g4{grid-template-columns:repeat(4,minmax(0,1fr)) !important}.g5{grid-template-columns:repeat(5,minmax(0,1fr)) !important}.gc3{display:flex !important;flex-wrap:wrap;justify-content:center}.gc3>*{flex:0 0 calc((100% - 48px) / 3);min-width:0;box-sizing:border-box}}
@media (min-width: 1100px){.pope-grid{grid-template-columns:repeat(2,minmax(0,1fr)) !important}}
@media (max-width: 1099px){.pope-fig{max-height:none}.pope-fig img+div,.pope-fig>div:last-child{max-width:460px}}
@keyframes mkRise{0%{transform:translateY(0) scale(.7);opacity:0}12%{opacity:1}100%{transform:translateY(-900px) scale(.4);opacity:0}}
@keyframes mkFlare{0%,100%{opacity:.75;transform:translate(-50%,-50%) scale(.96)}50%{opacity:1;transform:translate(-50%,-50%) scale(1.05)}}
@keyframes mkStrike{0%,100%{transform:translateY(0)}50%{transform:translateY(-8px)}}
.mk-ember{animation-name:mkRise;animation-timing-function:linear;animation-iteration-count:infinite;opacity:0}
.mk-flare{animation:mkFlare 5s ease-in-out infinite}
.mk-strike{animation:mkStrike 6s ease-in-out infinite}
@media (prefers-reduced-motion: reduce){.mk-ember{display:none}.mk-flare,.mk-strike{animation:none}}
.mk-flame,.mk-tongue{position:absolute;bottom:0;clip-path:polygon(50% 0%,58% 14%,68% 30%,80% 48%,90% 64%,95% 78%,92% 90%,80% 98%,62% 100%,38% 100%,20% 98%,8% 90%,5% 78%,10% 64%,20% 48%,32% 30%,42% 14%);background:radial-gradient(ellipse 60% 75% at 50% 82%,#FFFBE0 0%,#FFE066 16%,#FFA526 36%,#FF5A14 58%,rgba(200,30,10,.55) 76%,rgba(120,10,0,0) 92%);mix-blend-mode:screen;transform-origin:50% 100%;pointer-events:none}
.mk-flame{animation-name:mkFlicker;animation-timing-function:ease-in-out;animation-iteration-count:infinite;animation-direction:alternate}
@keyframes mkFlicker{0%{transform:translateX(-50%) scale(.9,.8) skewX(-4deg);opacity:.85}35%{transform:translateX(-50%) scale(1.05,1.18) skewX(5deg);opacity:1}70%{transform:translateX(-50%) scale(.95,.95) skewX(-6deg);opacity:.9}100%{transform:translateX(-50%) scale(1.1,1.3) skewX(3deg);opacity:1}}
.mk-fireglow{position:absolute;left:-10%;right:-10%;bottom:-6%;height:70%;border-radius:50%;background:radial-gradient(ellipse at 50% 70%,rgba(255,170,40,.85) 0%,rgba(255,80,20,.55) 35%,rgba(120,10,0,0) 70%);mix-blend-mode:screen;filter:blur(6px);animation:mkGlow 1.4s ease-in-out infinite alternate}
@keyframes mkGlow{from{opacity:.7;transform:scaleY(.92)}to{opacity:1;transform:scaleY(1.08)}}
.mk-tongue{opacity:0;animation-name:mkTongue;animation-timing-function:ease-out;animation-iteration-count:infinite}
@keyframes mkTongue{0%{transform:translateY(40px) scale(.5,.4) skewX(0);opacity:0}10%{opacity:.95}30%{transform:translateY(-160px) scale(.9,1.1) skewX(8deg)}55%{transform:translateY(-380px) scale(.7,1) skewX(-8deg);opacity:.7}100%{transform:translateY(-760px) scale(.25,.5) skewX(6deg);opacity:0}}
@media (prefers-reduced-motion: reduce){.mk-tongue{display:none}.mk-flame,.mk-fireglow{animation:none}}
@media (min-width: 960px){.mk-hero{grid-template-columns:minmax(0,1fr) minmax(0,1.4fr) !important}}
.mk-side{position:absolute;top:0;bottom:0;width:calc((100% - 1200px) / 2 + 40px);overflow:hidden;pointer-events:none;-webkit-mask-image:linear-gradient(0deg,#000 0%,#000 92%,transparent 100%);mask-image:linear-gradient(0deg,#000 0%,#000 92%,transparent 100%)}
.mk-side-l{left:0}.mk-side-r{right:0;transform:scaleX(-1)}
.mk-sideglow{position:absolute;inset:0;background:radial-gradient(ellipse 130% 95% at 0% 100%,rgba(255,120,30,.55) 0%,rgba(220,50,20,.25) 45%,rgba(120,10,0,0) 78%);mix-blend-mode:screen;animation:mkGlow 1.6s ease-in-out infinite alternate}
.mk-sidefl{position:absolute;clip-path:polygon(50% 0%,58% 14%,68% 30%,80% 48%,90% 64%,95% 78%,92% 90%,80% 98%,62% 100%,38% 100%,20% 98%,8% 90%,5% 78%,10% 64%,20% 48%,32% 30%,42% 14%);background:radial-gradient(ellipse 60% 75% at 50% 82%,#FFFBE0 0%,#FFE066 16%,#FFA526 36%,#FF5A14 58%,rgba(200,30,10,.55) 76%,rgba(120,10,0,0) 92%);mix-blend-mode:screen;transform-origin:50% 100%;opacity:0;animation-name:mkSideRise;animation-timing-function:ease-in;animation-iteration-count:infinite}
@keyframes mkSideRise{0%{transform:translateY(30px) scale(.7,.6) skewX(0);opacity:0}8%{opacity:1}30%{transform:translateY(-260px) scale(1,1.15) skewX(7deg);opacity:.95}60%{transform:translateY(-560px) scale(.8,1) skewX(-7deg);opacity:.75}100%{transform:translateY(-900px) scale(.3,.55) skewX(5deg);opacity:0}}
@media (max-width: 1319px){.mk-side{width:46px}.mk-side .mk-sidefl{max-width:30px;max-height:70px}}
@media (prefers-reduced-motion: reduce){.mk-sidefl{display:none}.mk-sideglow{animation:none}}
@keyframes rtBeam{0%,100%{opacity:.25}50%{opacity:.95}}
@keyframes rtWound{0%,100%{opacity:.2}50%{opacity:.95}}
.rt-beam{animation:rtBeam 3.2s ease-in-out infinite}.rt-wound{animation:rtWound 3.2s ease-in-out infinite}
@media (prefers-reduced-motion: reduce){.rt-beam,.rt-wound{animation:none}}
@media (min-width: 960px){.rt-hero{grid-template-columns:minmax(0,1fr) minmax(0,1.15fr) !important}}
.mr-petal{position:absolute;top:-30px;border-radius:70% 0 70% 0;opacity:0;animation-name:mrFall;animation-timing-function:linear;animation-iteration-count:infinite;box-shadow:0 0 6px rgba(255,200,215,.35)}
@keyframes mrFall{0%{transform:translate(0,0) rotate(0deg);opacity:0}8%{opacity:.95}50%{transform:translate(40px,55vh) rotate(200deg)}100%{transform:translate(-30px,115vh) rotate(420deg);opacity:.15}}
.mr-float{animation:mrFloat 6.5s ease-in-out infinite}@keyframes mrFloat{0%,100%{transform:translateY(0)}50%{transform:translateY(-16px)}}
.mr-glow{animation:mrGlow 5s ease-in-out infinite}@keyframes mrGlow{0%,100%{opacity:.8;transform:translate(-50%,-50%) scale(.96)}50%{opacity:1;transform:translate(-50%,-50%) scale(1.05)}}
.mr-drop{transition:background .2s,border-color .2s}.mr-drop-on{border-color:#FFE7EE !important;background:radial-gradient(ellipse at 50% 40%,rgba(255,220,230,.55) 0%,rgba(255,235,240,.12) 65%,rgba(255,255,255,0) 75%) !important}
.mr-placed{animation:mrPlace .5s ease-out both}.mr-placed-a{animation:mrPlaceA .5s ease-out both}.mr-placed-b{animation:mrPlaceB .5s ease-out both}@keyframes mrPlaceA{from{opacity:0;margin-top:-40px}to{opacity:1;margin-top:0}}@keyframes mrPlaceB{from{opacity:0;margin-top:-40px}to{opacity:1;margin-top:0}}@keyframes mrPlace{from{opacity:0;margin-top:-40px}to{opacity:1;margin-top:0}}
@media (prefers-reduced-motion: reduce){.mr-petal{display:none}.mr-float,.mr-glow,.mr-placed,.mr-placed-a,.mr-placed-b{animation:none}}
.mr-trayrose{transition:transform .15s}.mr-trayrose:hover,.mr-trayrose:focus-visible{transform:scale(1.12) rotate(-6deg);outline:none}
.mr-fallrose{position:absolute;top:-80px;height:auto;opacity:0;animation-name:mrFallRose;animation-timing-function:linear;animation-iteration-count:infinite;filter:drop-shadow(0 4px 6px rgba(0,0,0,.35))}
@keyframes mrFallRose{0%{transform:translate(0,0) rotate(-20deg);opacity:0}8%{opacity:1}50%{transform:translate(-40px,60vh) rotate(90deg)}100%{transform:translate(30px,125vh) rotate(200deg);opacity:.3}}
.mr-bump{animation:mrBump .6s ease-out}@keyframes mrBump{0%{transform:scale(1)}35%{transform:scale(1.35);color:#FFB3C3}100%{transform:scale(1)}}
.mr-plus{animation:mrPlus 1.1s ease-out both}@keyframes mrPlus{0%{opacity:0;transform:translateY(8px)}20%{opacity:1}100%{opacity:0;transform:translateY(-26px)}}
@media (prefers-reduced-motion: reduce){.mr-fallrose{display:none}.mr-bump,.mr-plus{animation:none}}
.dm-mote{position:absolute;bottom:-12px;border-radius:50%;filter:blur(.4px);box-shadow:0 0 8px 1px rgba(255,240,220,.55);animation:dmRise linear infinite;opacity:0}
@keyframes dmRise{0%{transform:translateY(0) scale(.6);opacity:0}12%{opacity:.9}100%{transform:translateY(-1900px) scale(1.2);opacity:0}}
.dm-ray{position:absolute;left:0;top:0;width:2600px;height:2600px;transform:translate(-50%,-50%);pointer-events:none;-webkit-mask-image:radial-gradient(circle at 50% 50%,#000 0%,#000 7%,rgba(0,0,0,.6) 20%,rgba(0,0,0,0) 46%);mask-image:radial-gradient(circle at 50% 50%,#000 0%,#000 7%,rgba(0,0,0,.6) 20%,rgba(0,0,0,0) 46%);animation:dmPulse 7s ease-in-out infinite;transition:filter .6s}
.dm-ray-red{background:conic-gradient(from 0deg,rgba(255,60,80,0) 0deg 182deg,rgba(255,60,80,.34) 198deg,rgba(255,60,80,.26) 228deg,rgba(255,60,80,0) 250deg 360deg)}
.dm-ray-pale{background:conic-gradient(from 0deg,rgba(205,228,255,0) 0deg 110deg,rgba(205,228,255,.26) 132deg,rgba(225,238,255,.34) 162deg,rgba(205,228,255,0) 178deg 360deg)}
.dm-streak.dm-ray-red{background:repeating-conic-gradient(from 0deg,rgba(255,110,125,.22) 0deg .7deg,rgba(255,110,125,0) .7deg 2.7deg);clip-path:polygon(50% 50%,42.7% 119.6%,-13.9% 78.5%);animation-delay:-3.5s}
.dm-streak.dm-ray-pale{background:repeating-conic-gradient(from 0deg,rgba(235,244,255,.22) 0deg .7deg,rgba(235,244,255,0) .7deg 2.7deg);clip-path:polygon(50% 50%,113.9% 78.5%,57.3% 119.6%);animation-delay:-3.5s}
@keyframes dmPulse{0%,100%{opacity:.72}50%{opacity:1}}
.dm-heart{animation:dmBeat 4s ease-in-out infinite;mix-blend-mode:screen}
@keyframes dmBeat{0%,100%{opacity:.75;transform:translate(-50%,-50%) scale(.92)}50%{opacity:1;transform:translate(-50%,-50%) scale(1.08)}}
@keyframes dmHalo{0%,100%{opacity:.7}50%{opacity:1}}
.dm-halo{animation:dmHalo 6s ease-in-out infinite}
.dm-jesus{filter:drop-shadow(0 0 26px rgba(255,240,220,.42)) drop-shadow(0 24px 30px rgba(0,0,0,.45))}
.dm-stage{animation:dmFloat 7s ease-in-out infinite}
@keyframes dmFloat{0%,100%{transform:translateY(0)}50%{transform:translateY(-14px)}}
.dm-bright .dm-ray{filter:brightness(1.7) saturate(1.2);opacity:1}
.dm-bright .dm-heart{filter:brightness(1.4)}
.dm-fly{position:absolute;left:50%;top:100%;width:26px;height:26px;margin:-13px 0 0 -13px;border-radius:50%;background:radial-gradient(circle,#FFFFFF 0%,rgba(255,236,210,.9) 35%,rgba(255,77,99,0) 70%);box-shadow:0 0 30px 10px rgba(255,236,210,.6);pointer-events:none;z-index:3}
.dm-fly-a{animation:dmFlyA 1.4s cubic-bezier(.3,.6,.3,1) forwards}
.dm-fly-b{animation:dmFlyB 1.4s cubic-bezier(.3,.6,.3,1) forwards}
@keyframes dmFlyA{0%{left:50%;top:100%;transform:scale(.6);opacity:0}15%{opacity:1}80%{left:47%;top:28%;transform:scale(1.4);opacity:1}100%{left:47%;top:28%;transform:scale(3);opacity:0}}
@keyframes dmFlyB{0%{left:50%;top:100%;transform:scale(.6);opacity:0}15%{opacity:1}80%{left:47%;top:28%;transform:scale(1.4);opacity:1}100%{left:47%;top:28%;transform:scale(3);opacity:0}}
.dm-offer{transition:transform .2s,box-shadow .3s,border-color .3s}
.dm-offer:hover{transform:translateY(-2px);box-shadow:0 0 60px rgba(255,240,220,.45),inset 0 0 22px rgba(255,255,255,.18)!important}
.dm-offer:focus-visible{outline:3px solid #F2B632;outline-offset:3px}
.dm-offer-sent{border-color:#F2D27A!important;box-shadow:0 0 70px rgba(242,210,122,.55),inset 0 0 22px rgba(255,255,255,.2)!important}
.dm-dot{position:absolute;border-radius:50%;transition:background .6s,box-shadow .6s}
.dm-fresh-a{animation:dmLightA 1.6s ease-out both}
.dm-fresh-b{animation:dmLightB 1.6s ease-out both}
@keyframes dmLightA{0%{transform:scale(3.2);filter:brightness(2.4);opacity:0}35%{opacity:1}100%{transform:scale(1);filter:brightness(1);opacity:1}}
@keyframes dmLightB{0%{transform:scale(3.2);filter:brightness(2.4);opacity:0}35%{opacity:1}100%{transform:scale(1);filter:brightness(1);opacity:1}}
@media (prefers-reduced-motion: reduce){.dm-mote{display:none}.dm-stage,.dm-ray,.dm-heart,.dm-halo,.dm-fresh-a,.dm-fresh-b{animation:none}.dm-fly{display:none}}
@media (min-width: 900px){.dm-grid{grid-template-columns:minmax(0,1fr) minmax(0,1fr)!important}.dm-a{grid-column:1;grid-row:1}.dm-c{grid-column:2;grid-row:1}.dm-b{grid-column:1 / -1;grid-row:2}}
.menu-btn,.m-only{display:none}
@media (max-width: 760px){.menu-btn,.m-only{display:inline-flex}.mainnav{display:none !important}.mainnav.open{display:flex !important;flex-direction:column;align-items:flex-start;width:100%;gap:16px;padding:10px 0 6px;font-size:17px}.hide-m{display:none !important}}

/* Sections off screen are not drawn until they are close, which keeps scrolling smooth on phones. */
section{content-visibility:auto;contain-intrinsic-size:auto 700px}
