/* St. Paul's calm theme: soft halo light, gold from the logo ring, robe red for actions, robe teal for peace. */
:root{
  --bg:#F5F3EE; --bg2:#EEF3F1; --surface:rgba(255,255,255,.86); --solid:#FFFFFF; --sunk:#EFECE5; --fg:#22201F; --muted:#6E6862; --line:#E6E0D6;
  --wine:#8E1F2A; --wine-soft:#F6E6E7; --gold:#A57A22; --gold-2:#D9B45C; --gold-soft:#F7EFD9;
  --teal:#3F7F78; --teal-soft:#E3F0EE; --ok:#2F6B45; --ok-soft:#E2F0E6; --warn:#94560F; --warn-soft:#F8EBDB;
  --shadow:0 1px 2px rgba(60,45,20,.05),0 8px 28px rgba(60,45,20,.07);
  --display:"Marcellus", "Palatino Linotype", Palatino, Georgia, serif;
  --body:"Source Sans 3", "Segoe UI", system-ui, -apple-system, sans-serif;
  color-scheme:light;
}
@media (prefers-color-scheme: dark){:root{
  --bg:#13151A; --bg2:#141C1C; --surface:rgba(30,33,40,.86); --solid:#1E2128; --sunk:#262A31; --fg:#F2EEE7; --muted:#ABA49A; --line:#323640;
  --wine:#E58893; --wine-soft:#3A2228; --gold:#E2BF6B; --gold-2:#E2BF6B; --gold-soft:#332B19;
  --teal:#8CC7BF; --teal-soft:#1B2D2C; --ok:#7CC694; --ok-soft:#1C3024; --warn:#E5A65A; --warn-soft:#3A2A16;
  --shadow:0 1px 2px rgba(0,0,0,.3),0 10px 30px rgba(0,0,0,.25); color-scheme:dark}}
*{box-sizing:border-box}
[hidden]{display:none!important}
html{background:var(--bg)}
body{margin:0;min-height:100vh;color:var(--fg);font-family:var(--body);font-size:19px;line-height:1.6;
  background:radial-gradient(900px 520px at 50% -140px, var(--gold-soft), transparent 70%), linear-gradient(180deg, var(--bg) 0%, var(--bg2) 100%) fixed;
  padding-left:max(18px,env(safe-area-inset-left,0px));padding-right:max(18px,env(safe-area-inset-right,0px));padding-bottom:calc(120px + env(safe-area-inset-bottom,0px))}
body::before{content:"";position:fixed;inset:0 0 auto;height:env(safe-area-inset-top,0px);z-index:10;background:var(--bg)}
.wrap{max-width:600px;margin:0 auto;display:flex;flex-direction:column;gap:20px}
header.top{position:sticky;top:env(safe-area-inset-top,0px);z-index:6;margin:0 calc(-1 * max(18px,env(safe-area-inset-left,0px))) 18px;padding:10px max(18px,env(safe-area-inset-left,0px));background:color-mix(in srgb, var(--bg) 78%, transparent);backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);border-bottom:1px solid color-mix(in srgb, var(--line) 70%, transparent)}
header.top .wrap{flex-direction:row;align-items:center;gap:12px}
header.top .home{display:flex;align-items:center;gap:12px;text-decoration:none;color:inherit;min-width:0}
.seal{width:46px;height:46px;flex:none;border-radius:50%;filter:drop-shadow(0 2px 6px rgba(120,90,30,.25))}
.brand{font-family:var(--display);font-size:1.02rem;line-height:1.2;margin:0;font-weight:400;letter-spacing:.01em}
.brand small{display:block;font-family:var(--body);color:var(--gold);font-size:.7rem;letter-spacing:.16em;text-transform:uppercase;font-weight:700;margin-top:2px}
.who{margin-left:auto;flex:none}
h1,h2{font-family:var(--display);font-weight:400;margin:0;text-wrap:balance;line-height:1.2;letter-spacing:.005em}
h1{font-size:clamp(1.9rem,6vw,2.4rem)}
h2{font-size:1.45rem}
h3{margin:0;font-size:1.05rem}
p{margin:0}
.muted{color:var(--muted)}
.small{font-size:.9rem}
.label{font-size:.74rem;letter-spacing:.14em;text-transform:uppercase;color:var(--gold);font-weight:700}
.card{background:var(--surface);backdrop-filter:blur(6px);border:1px solid var(--line);border-radius:22px;padding:22px;display:flex;flex-direction:column;gap:12px;box-shadow:var(--shadow)}
.card.gold{background:linear-gradient(160deg,var(--gold-soft),var(--solid));border-color:color-mix(in srgb, var(--gold-2) 40%, transparent)}
.card.sky{background:linear-gradient(160deg,var(--teal-soft),var(--solid));border-color:transparent}
.blessing{font-family:var(--display);font-size:1.18rem;line-height:1.6}
.btn{display:flex;align-items:center;justify-content:center;gap:10px;font:inherit;font-weight:600;font-size:1.05rem;border-radius:999px;border:1px solid var(--line);background:var(--solid);color:var(--fg);padding:14px 22px;min-height:58px;cursor:pointer;text-decoration:none;width:100%;transition:transform .15s ease, box-shadow .15s ease}
.btn:hover{box-shadow:var(--shadow)}
.btn:active{transform:scale(.98)}
.btn.primary{background:linear-gradient(180deg,#9B2531,#7E1A24);border-color:transparent;color:#fff;box-shadow:0 6px 18px rgba(142,31,42,.25)}
.btn.google{background:var(--solid);border:1.5px solid var(--line);font-size:1.1rem}
.btn.small{min-height:42px;padding:8px 16px;font-size:.92rem;width:auto}
.btn:disabled{opacity:.6;cursor:default}
a{color:var(--wine)}
:focus-visible{outline:3px solid var(--gold-2);outline-offset:3px}
.tiles{display:grid;grid-template-columns:1fr 1fr;gap:14px}
.tile{display:flex;flex-direction:column;gap:6px;background:var(--surface);border:1px solid var(--line);border-radius:22px;padding:18px;text-decoration:none;color:var(--fg);min-height:132px;box-shadow:var(--shadow);transition:transform .15s ease}
.tile:active{transform:scale(.98)}
.tile svg{width:30px;height:30px;color:var(--teal);margin-bottom:4px}
.tile b{font-size:1.05rem}
.tile span{font-size:.86rem;color:var(--muted)}
label.f{display:flex;flex-direction:column;gap:6px;font-weight:600}
label.f .hint{font-weight:400;color:var(--muted);font-size:.9rem}
input,select,textarea{font:inherit;font-size:1.05rem;color:var(--fg);background:var(--solid);border:1.5px solid var(--line);border-radius:14px;padding:13px 15px;width:100%;min-width:0;transition:border-color .15s ease}
input:focus,select:focus,textarea:focus{border-color:var(--gold-2);outline:none;box-shadow:0 0 0 4px color-mix(in srgb, var(--gold-2) 22%, transparent)}
textarea{min-height:110px;resize:vertical}
.grid2{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.grid2>*{min-width:0}
@media (max-width:460px){.grid2{grid-template-columns:1fr}}
.person{border:1.5px dashed var(--line);border-radius:16px;padding:14px;display:flex;flex-direction:column;gap:10px;background:color-mix(in srgb, var(--solid) 60%, transparent)}
.chip{display:inline-block;font-size:.72rem;font-weight:700;letter-spacing:.08em;text-transform:uppercase;padding:4px 10px;border-radius:999px;white-space:nowrap}
.chip.feast{background:var(--gold-soft);color:var(--gold)}
.chip.fast{background:var(--teal-soft);color:var(--teal)}
.chip.event{background:var(--wine-soft);color:var(--wine)}
.chip.sunday{background:var(--sunk);color:var(--fg)}
.chip.ok{background:var(--ok-soft);color:var(--ok)}
.chip.warn{background:var(--warn-soft);color:var(--warn)}
.list{display:flex;flex-direction:column}
.item{display:grid;grid-template-columns:60px 1fr auto;gap:14px;padding:14px 0;border-top:1px solid var(--line);align-items:center}
.item:first-child{border-top:0}
.item>div{min-width:0}
.date{text-align:center;border-radius:16px;background:linear-gradient(180deg,var(--gold-soft),var(--sunk));padding:7px 0;font-variant-numeric:tabular-nums}
.date b{display:block;font-family:var(--display);font-size:1.45rem;font-weight:400;line-height:1.1}
.date i{font-style:normal;font-size:.68rem;text-transform:uppercase;letter-spacing:.1em;color:var(--muted)}
.month{font-family:var(--display);font-size:1.25rem;color:var(--wine)}
.intercession{border-left:3px solid var(--gold-2);padding-left:14px;font-family:var(--display);font-size:1.1rem;color:var(--muted)}
.notice{background:var(--warn-soft);border-radius:16px;padding:14px 16px}
.okbox{background:var(--ok-soft);color:var(--fg);border-radius:16px;padding:14px 16px}
.hero{display:flex;flex-direction:column;gap:12px;padding-block:6px 4px}
.hero p{font-size:1.08rem}
.hero.center{align-items:center;text-align:center;padding-block:10px 6px}
.halo{position:relative;width:min(210px,56vw);aspect-ratio:1;max-width:100%}
.halo::before{content:"";position:absolute;inset:-18%;border-radius:50%;background:radial-gradient(circle, color-mix(in srgb, var(--gold-2) 45%, transparent) 0%, transparent 65%);animation:breathe 6s ease-in-out infinite}
.halo img{position:relative;width:100%;height:100%;object-fit:contain;filter:drop-shadow(0 10px 24px rgba(120,90,30,.28))}
@keyframes breathe{0%,100%{opacity:.65;transform:scale(.97)}50%{opacity:1;transform:scale(1.03)}}
.motto{font-family:var(--display);color:var(--gold);letter-spacing:.14em;text-transform:uppercase;font-size:.82rem}
.dots{display:flex;gap:6px;flex-wrap:wrap}
.dot{font-size:.82rem;padding:3px 9px;border-radius:999px}
.dot.p{background:var(--ok-soft);color:var(--ok)}
.dot.a{background:var(--warn-soft);color:var(--warn)}
nav.tabs{position:fixed;left:50%;transform:translateX(-50%);bottom:calc(12px + env(safe-area-inset-bottom,0px));z-index:7;width:min(600px,calc(100% - 24px));background:color-mix(in srgb, var(--solid) 82%, transparent);backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);border:1px solid var(--line);border-radius:26px;box-shadow:0 10px 30px rgba(40,30,15,.14);padding:6px}
nav.tabs .in{display:flex}
nav.tabs a{flex:1;display:flex;flex-direction:column;align-items:center;gap:2px;padding:8px 2px;min-height:60px;font-size:.74rem;font-weight:600;color:var(--muted);text-decoration:none;border-radius:20px;transition:background .2s ease,color .2s ease}
nav.tabs a svg{width:23px;height:23px}
nav.tabs a[aria-current="page"]{color:var(--wine);background:var(--wine-soft)}
.or{display:flex;align-items:center;gap:12px;color:var(--muted);font-size:.9rem}
.or::before,.or::after{content:"";flex:1;height:1px;background:var(--line)}
.skeleton{height:130px;border-radius:22px;background:linear-gradient(90deg,var(--sunk),var(--solid),var(--sunk));background-size:200% 100%;animation:shimmer 1.4s linear infinite}
@keyframes shimmer{to{background-position:-200% 0}}
@media (prefers-reduced-motion:no-preference){.card,.tile{animation:rise .45s ease both}@keyframes rise{from{opacity:.001;transform:translateY(8px)}to{opacity:1;transform:none}}}
@media (prefers-reduced-motion:reduce){.halo::before,.skeleton{animation:none}}