.parish-heading { margin-bottom:var(--s-6); }
.parish-heading .g-eyebrow { margin-top:var(--s-5); }
.parish-heading .g-lede { max-width:var(--measure); }
.parish-library-page .g-reading-content { max-width:none; }
.parish-library-page .g-reading-content>.g-section:first-child { border-top:2px solid var(--rule-strong); }
.parish-context-map svg { min-height:0; }
.parish-boundary { fill:var(--lime-sunken); stroke:var(--ink-3); stroke-width:1; vector-effect:non-scaling-stroke; }
.parish-boundary.is-selected { fill:var(--celeste-mid); stroke:var(--ink); stroke-width:2; }
.parish-contents { border-top:2px solid var(--rule-strong); padding-top:var(--s-5); }
.parish-contents a { display:block; min-height:var(--hit); padding:var(--s-2) 0; }
.parish-library-page .g-apparatus h2 { font-size:var(--t-sub); }
.parish-library-page .g-provenance>a { display:block; min-height:var(--hit); padding:var(--s-2) 0; }
.resource-list>li { scroll-margin-top:var(--s-8); }
.resource-list .resource-item { padding:var(--s-5) 0; min-width:0; }
.resource-item.has-thumbnail { display:grid; grid-template-columns:minmax(0,2fr) minmax(0,5fr); gap:var(--s-5); align-items:start; }
.resource-thumbnail { display:block; background:var(--lime-sunken); overflow:hidden; }
.resource-thumbnail img { display:block; width:100%; height:auto; aspect-ratio:4/3; object-fit:cover; }
.resource-thumbnail.is-document { padding:var(--s-2); }
.resource-thumbnail.is-document img { aspect-ratio:3/4; object-fit:contain; }
.resource-item .g-eyebrow { margin:0 0 var(--s-2); color:var(--ochre); }
.resource-item h3 { overflow-wrap:anywhere; }
.resource-item h3 a { display:inline; font:500 var(--t-sub)/var(--lh-head) var(--serif); color:var(--celeste); }
.resource-item .g-note { font:var(--t-dense)/var(--lh-dense) var(--sans); }
.resource-item .resource-open { display:inline-flex; gap:var(--s-2); min-height:var(--hit); font:600 var(--t-dense)/var(--lh-dense) var(--sans); color:var(--celeste); }
.parish-filters { display:flex; flex-wrap:wrap; align-items:end; gap:var(--s-4); padding:var(--s-5) 0; border-top:2px solid var(--rule-strong); font:var(--t-body)/var(--lh-dense) var(--sans); }
.parish-filters>label:first-child { flex:1; min-width:40%; }
.parish-filters .g-field,.parish-filters .g-select { display:block; width:100%; margin-top:var(--s-2); }
.parish-directory { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:0 var(--s-7); }
.parish-directory .parish-directory-row { min-width:0; padding:var(--s-5) 0; }
.parish-directory .parish-row-link { display:flex; gap:var(--s-5); align-items:start; }
.parish-row-link>span { flex:1; min-width:0; }
.parish-row-link>img { width:28%; height:auto; aspect-ratio:4/3; object-fit:cover; background:var(--lime-sunken); }
/* Every row's picture is the same kind: the parish filled within its city or canton outline. */
.parish-locator { flex:none; width:28%; height:auto; aspect-ratio:4/3; background:var(--lime-sunken); }
.parish-locator use { fill:var(--lime-raised); stroke:var(--ink-3); stroke-width:.6; }
.parish-locator-fill { fill:var(--celeste-mid); stroke:var(--ink); stroke-width:.8; }
.parish-locator-defs { position:absolute; width:0; height:0; overflow:hidden; }
/* Getting there by bus: in the apparatus, under the locator map. */
.parish-bus { display:flex; flex-direction:column; gap:var(--s-3); margin:var(--s-5) 0; padding-top:var(--s-5); border-top:2px solid var(--rule-strong); }
.parish-bus>h2,.parish-bus>p { margin:0; }
.parish-bus>p { color:var(--ink-2); }
.parish-bus>h3 { margin:var(--s-2) 0 0; font:700 var(--t-dense)/var(--lh-dense) var(--sans); }
.parish-bus :is(.g-line-tiles,.parish-bus-stops) { padding:0; }
.parish-bus-stops { list-style:none; margin:0; border-top:1px solid var(--rule); }
.parish-bus-stops li { display:flex; flex-wrap:wrap; align-items:center; justify-content:space-between; gap:var(--s-1) var(--s-3); min-height:var(--hit); padding:var(--s-2) 0; border-bottom:1px solid var(--rule); }
.parish-bus-stops span { font:var(--t-dense)/var(--lh-dense) var(--sans); color:var(--ink-2); }
.parish-bus>.g-button { align-self:flex-start; }
.parish-row-link strong { font-weight:500; overflow-wrap:anywhere; }
.parish-row-description { display:-webkit-box; -webkit-line-clamp:3; -webkit-box-orient:vertical; overflow:hidden; font:var(--t-body)/var(--lh-body) var(--serif); color:var(--ink-2); margin:var(--s-2) 0; }
.parish-row-action { display:block; font:600 var(--t-dense)/var(--lh-dense) var(--sans); color:var(--celeste); }
.parish-library-page [hidden] { display:none; }
.parish-library-page a:focus-visible,.parish-library-page input:focus-visible,.parish-library-page select:focus-visible,.parish-library-page button:focus-visible { outline:3px solid var(--celeste); outline-offset:4px; }
@media(max-width:850px) {
 .parish-directory { grid-template-columns:1fr; }
 .parish-filters>label:first-child { flex-basis:100%; }
 .parish-filters>label:nth-child(2) { flex:1; }
 .resource-item.has-thumbnail { grid-template-columns:minmax(0,1fr) minmax(0,2fr); gap:var(--s-4); }
 .parish-library-page .g-reading { display:flex; flex-direction:column; }
 .parish-library-page .g-reading-content,.parish-library-page .g-apparatus { width:100%; }
 .parish-row-link>img { width:28%; }
}
@media(prefers-reduced-motion:no-preference) {
 .resource-open,.parish-row-action { transition:transform var(--dur) var(--ease); }
 .resource-open:hover,.parish-row-link:hover .parish-row-action { transform:translateX(4px); }
}

/* Library: every document, video and official link in one compact grid. */
.library-page .g-list.resource-list { display:grid; grid-template-columns:repeat(auto-fill,minmax(calc(var(--s-9) * 2.4),1fr)); gap:var(--s-6) var(--s-5); }
.library-page .g-list.resource-list>li,.library-page .resource-item.has-thumbnail { display:flex; flex-direction:column; gap:var(--s-2); padding:0; border:0; }
.library-page .resource-thumbnail.is-document { padding:0; }
.library-page .resource-thumbnail img,.library-page .resource-thumbnail.is-document img { aspect-ratio:4/3; object-fit:cover; object-position:top; }
.library-page .resource-item h3,.library-page .resource-item p { margin:0; }
.library-page .resource-item h3 a { font-size:var(--t-body); }
.library-page .library-summary { display:-webkit-box; -webkit-line-clamp:3; -webkit-box-orient:vertical; overflow:hidden; font:var(--t-dense)/var(--lh-dense) var(--sans); color:var(--ink-2); }
.library-page .library-about,.library-page .library-about a { font:var(--t-dense)/var(--lh-dense) var(--sans); }
/* Parishes hub hero: text beside the canton, drawn on a teja panel. */
.parish-hub-hero { display:grid; grid-template-columns:minmax(0,3fr) minmax(0,2fr); gap:var(--s-7); align-items:center; padding-bottom:var(--s-4); }
.parish-hub-hero h1 { max-width:14ch; }
.parish-hub-map { margin:0; display:flex; flex-direction:column; gap:var(--s-2); }
.parish-hub-map svg { display:block; width:100%; height:auto; padding:var(--s-6); background:var(--action); color:var(--ink-inverse); }
.parish-hub-map figcaption { font:400 var(--t-dense)/var(--lh-dense) var(--sans); color:var(--ink-2); }
@media (max-width:900px) { .parish-hub-hero { grid-template-columns:minmax(0,1fr); gap:var(--s-5); } }
/* Library on phones: compact rows (picture beside the text) instead of one tall card per screen. */
.library-empty { padding:var(--s-6) 0; color:var(--ink-2); }
@media (max-width:600px) {
 .library-page .g-list.resource-list { grid-template-columns:minmax(0,1fr); gap:0; }
 .library-page .g-list.resource-list>li,.library-page .resource-item.has-thumbnail { display:grid; grid-template-columns:minmax(0,1fr) minmax(0,2fr); align-items:start; gap:var(--s-3); padding:var(--s-4) 0; border-bottom:1px solid var(--rule); }
 .library-page .g-list.resource-list>li:not(.has-thumbnail) { grid-template-columns:minmax(0,1fr); }
 .library-page .resource-item>div { display:flex; flex-direction:column; gap:var(--s-1); }
 .library-page .library-summary { -webkit-line-clamp:2; }
 .library-filters>label:nth-child(2),.library-filters>label:nth-child(3) { flex:1 1 40%; }
}
