/* Shared component structure. Each style sets the variables and adds its own look. */
*,*::before,*::after{box-sizing:border-box}
html{-webkit-text-size-adjust:100%;scroll-behavior:smooth}
body{margin:0;font-family:var(--body,"Noto Sans SC",system-ui,sans-serif);color:var(--ink);background:var(--page);line-height:1.7;font-size:16px;overflow-x:hidden}
img{max-width:100%;display:block}
h2,h3,p,ul,ol,figure,blockquote{margin:0;padding:0}
ul,ol{list-style:none}
a{color:inherit}
button{font:inherit;color:inherit;cursor:pointer;background:none;border:0}
:focus-visible{outline:3px solid var(--accent);outline-offset:2px}
.sr{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%)}

.body>*+*{margin-top:16px}
.body h3{font-family:var(--display);font-size:20px;line-height:1.3;margin-top:26px;color:var(--heading,var(--ink));font-weight:var(--display-weight,400)}
.pending{display:inline-block;font-size:12px;line-height:1.5;padding:0 8px;border-radius:99px;background:var(--pending-bg,#f7d774);color:var(--pending-ink,#4a3208);font-weight:600;font-style:normal;white-space:nowrap}
.note{font-size:13.5px;line-height:1.6;padding:8px 12px;border-left:3px solid var(--pending-line,#d99a1e);background:var(--pending-soft,rgba(247,215,116,.22));color:var(--ink)}
.callout{padding:14px 16px;border-radius:var(--radius,12px);background:var(--callout,rgba(0,0,0,.06))}
.callout b{font-family:var(--display);font-weight:var(--display-weight,400);font-size:18px;display:block}
.btn{display:inline-flex;align-items:center;min-height:44px;margin-top:10px;padding:0 18px;border-radius:var(--radius,12px);background:var(--accent);color:var(--on-accent,#fff);font-weight:700;text-decoration:none}

.verse{font-size:18px;line-height:1.8;font-family:var(--quote,inherit)}
.verse strong{color:var(--accent-ink,var(--accent))}
.verse cite{display:block;margin-top:8px;font-size:13.5px;font-style:normal}
.stats{display:grid;grid-template-columns:repeat(4,1fr);gap:8px}
.stats div{text-align:center;padding:10px 2px;border-radius:var(--radius,12px);background:var(--callout,rgba(0,0,0,.06))}
.stats b{display:block;font-family:var(--num,var(--display));font-size:30px;line-height:1.1;color:var(--accent-ink,var(--accent))}
.stats span{font-size:12px}

.history{display:flex;gap:12px;overflow-x:auto;scroll-snap-type:x proximity;padding:4px 2px 12px;margin-inline:-4px;-webkit-overflow-scrolling:touch}
.history figure{flex:0 0 auto;scroll-snap-align:start}
.history img{height:190px;width:auto;max-width:none;border-radius:6px;background:rgba(0,0,0,.08)}
.history figcaption{font-size:12.5px;margin-top:6px;white-space:nowrap}
.history .now>div{width:134px;height:190px;border-radius:6px;background:var(--accent);color:var(--on-accent,#fff);display:flex;flex-direction:column;align-items:center;justify-content:center}
.history .now b{font-family:var(--num,var(--display));font-size:62px;line-height:1}
.history .now small{font-size:14px}
.merch{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.merch img{width:100%;aspect-ratio:3/2;object-fit:cover;border-radius:var(--radius,12px);background:#fff}
.merch figcaption{font-size:13px;margin-top:4px}
.tags{display:flex;flex-wrap:wrap;gap:8px}
.tags span,.tags-list li{padding:3px 12px;border-radius:99px;font-size:14px;border:1px solid var(--line)}
.tags-list{display:flex;flex-wrap:wrap;gap:8px}

.speaker{display:flex;align-items:flex-end;gap:14px;border-bottom:2px solid var(--accent)}
.speaker img{width:42%;max-width:190px}
.speaker h3{margin:0 0 2px;font-size:25px}
.speaker>div{padding-bottom:14px}
.role{font-size:13px;color:var(--muted);font-weight:600}
.facts li{padding:10px 0;border-top:1px solid var(--line);font-size:15px}
.facts li:first-child{border-top:0}
.facts b{display:block;font-size:13px;color:var(--accent-ink,var(--accent))}

.people{display:grid;gap:0}
.person{display:grid;grid-template-columns:96px 1fr;column-gap:12px;padding:10px 0;border-top:1px solid var(--line)}
.person:first-child{border-top:0}
.person b{font-size:16.5px;line-height:1.5}
.person small{grid-column:2;font-size:13px;color:var(--muted)}
.clergy,.lodging{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.clergy li,.lodging li{padding:9px 11px;border-radius:var(--radius,12px);background:var(--callout,rgba(0,0,0,.06));line-height:1.4}
.clergy b,.lodging b{display:block;font-size:15px}
.clergy small,.lodging small{font-size:12.5px;color:var(--muted)}

.rules{counter-reset:r;display:grid;gap:12px}
.rules li{counter-increment:r;position:relative;padding-left:44px;min-height:34px}
.rules li::before{content:counter(r);position:absolute;left:0;top:0;width:32px;height:32px;display:grid;place-items:center;border-radius:50%;background:var(--accent);color:var(--on-accent,#fff);font-family:var(--num,var(--display));font-size:17px}
.rules b{font-size:16.5px}
.rules p{font-size:14.5px;color:var(--muted);line-height:1.6}

.churches{display:grid;grid-template-columns:1fr 1fr;gap:0 14px}
.churches li{padding:9px 0;border-bottom:1px solid var(--line);font-size:14.5px}

.map img{width:100%;aspect-ratio:2020/1428;border-radius:var(--radius,12px)}
.map figcaption{font-size:12.5px;margin-top:4px}
.facilities{display:grid;grid-template-columns:1fr;gap:0}
.facilities li{display:flex;gap:10px;align-items:center;padding:7px 0;border-bottom:1px solid var(--line);font-size:14.5px}
.facilities i{flex:0 0 38px;font-style:normal;font-weight:700;font-size:12.5px;color:var(--accent-ink,var(--accent))}

.groups{display:grid;grid-template-columns:repeat(4,1fr);gap:8px}
.groups li{aspect-ratio:1;display:flex;flex-direction:column;align-items:center;justify-content:center;border-radius:var(--radius,12px);background:var(--callout,rgba(0,0,0,.06));line-height:1.2}
.groups b{font-family:var(--num,var(--display));font-size:28px;color:var(--accent-ink,var(--accent))}
.groups span{font-size:11.5px}

.ws{display:grid;gap:12px}
.ws article{padding:14px 16px;border-radius:var(--radius,12px);background:var(--callout,rgba(0,0,0,.06))}
.ws h3{margin:0 0 2px;font-size:22px}
.ws time{display:block;font-size:13px;font-weight:600;color:var(--accent-ink,var(--accent));line-height:1.5}
.ws p{font-size:14.5px;margin-top:6px}

.day-tabs{display:grid;grid-template-columns:repeat(4,1fr);gap:6px;position:sticky;top:var(--tabs-top,0);z-index:5;padding:6px 0;background:var(--tabs-bg,transparent)}
.day-tab{padding:8px 2px;min-height:58px;border-radius:var(--radius,12px);border:1.5px solid var(--line);line-height:1.2;text-align:center}
.day-tab b{display:block;font-family:var(--num,var(--display));font-size:23px}
.day-tab small{font-size:11.5px}
.day-tab[aria-selected="true"]{background:var(--accent);color:var(--on-accent,#fff);border-color:var(--accent)}
.day-title{font-family:var(--display);font-weight:var(--display-weight,400);font-size:20px;margin:14px 0 6px}
.slot{display:grid;grid-template-columns:92px 1fr;gap:10px;padding:9px 0;border-top:1px solid var(--line);align-items:baseline}
.slot time{font-size:14px;font-weight:700;font-variant-numeric:tabular-nums;line-height:1.3}
.slot time i{display:block;font-style:normal;font-weight:400;font-size:12px;color:var(--muted)}
.slot span{font-size:16.5px;font-weight:600}
.slot.k-key span,.slot.k-word span{color:var(--accent-ink,var(--accent));font-weight:800}
.slot.k-meal span,.slot.k-rest span{font-weight:400}
.slot.is-now{background:var(--accent);color:var(--on-accent,#fff);padding-inline:10px;border-radius:8px}
.slot.is-now span,.slot.is-now i{color:inherit}

.packing li{border-bottom:1px solid var(--line)}
.packing label{display:flex;gap:12px;align-items:center;min-height:46px;cursor:pointer}
.packing input{width:22px;height:22px;flex:0 0 22px;accent-color:var(--accent)}
.packing input:checked+span{text-decoration:line-through;opacity:.55}
.share-line{font-size:13px;color:var(--muted)}

.draft-tag{position:fixed;left:8px;bottom:8px;z-index:50;font:700 11px/1 system-ui,sans-serif;letter-spacing:.08em;padding:5px 8px;border-radius:4px;background:#111;color:#ffd76a;opacity:.85;pointer-events:none}
@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}*{animation:none!important;transition:none!important}}
