/* Compact controls within the original ParishPilgrim design. */
header { padding-top: 18px; padding-bottom: 18px; }
.brand-second { display: inline; margin: 0; font-size: inherit; letter-spacing: 0; }
.intro h1 { font-size: clamp(30px, 3.4vw, 42px); letter-spacing: -1px; }
.intro-text { font-size: 15px; margin-top: 12px; }
.intro { padding-top: 34px; padding-bottom: 26px; }
.results-top h2 { font-size: 24px; }
.month-label { font-size: 21px; }
.sidebar-box h2, .support-section h2, .bottom-note h2 { font-size: 23px; }
.site-page h1 { font-size: 28px; line-height: 1.25; }
.site-page .detail-section h3 { font-size: 20px; }
.is-admin .results-panel .feast-controls { grid-template-columns: minmax(150px,1.2fr) minmax(95px,.7fr) minmax(150px,1.3fr); }
.feast-card { position: relative; grid-template-columns: 64px minmax(0,1fr); gap: 17px; padding: 20px; }
.feast-card .date-tile { min-width: 64px; padding: 9px 4px 11px; }
.feast-card .date-tile .day { font-size: 34px; }
.feast-card h3 { font-size: 21px; line-height: 1.3; overflow-wrap: anywhere; padding-right: 28px; }
.feast-card h3 a { text-decoration: none; }
.feast-card h3 a:hover { text-decoration: underline; text-underline-offset: 4px; }
.feast-card .city-label .listing-number { width: 22px; min-width: 22px; height: 22px; margin: 0 6px 0 0; vertical-align: middle; }
.church-line { display: flex; flex-wrap: wrap; align-items: center; gap: 3px 6px; }
.church-line a { text-decoration: none; }
.church-line a:hover { text-decoration: underline; text-underline-offset: 3px; }
.feast-card .church-line { font-size: 14px; margin-bottom: 6px; }
.feast-card .feast-meta { margin: 9px 0; }
.feast-card .feast-card-footer { border: 0; margin: 7px 0 0; padding: 0; gap: 8px; }
button.icon-action { display: inline-flex; align-items: center; justify-content: center; flex: none; width: 38px; height: 38px; min-height: 38px; padding: 8px; border: 0; border-radius: 4px; background: transparent; color: var(--muted); line-height: 1; text-decoration: none; }
button.icon-action:hover:not(:disabled) { color: var(--teal); background: var(--wash); }
button.icon-action:disabled { opacity: .5; cursor: wait; }
button.icon-action svg { flex: none; width: 20px; height: 20px; }
button.plan-ribbon { position: absolute; top: 12px; right: 11px; }
button.plan-ribbon.selected, button.favorite-heart.selected { color: var(--gold); background: transparent; }
button.plan-ribbon.selected svg, button.favorite-heart.selected svg { fill: currentColor; }
button.favorite-heart { width: 32px; height: 32px; min-height: 32px; padding: 6px; }
.feast-card .feast-card-footer .comment-link { width: auto; min-width: 38px; font-size: 12px; font-weight: 500; gap: 6px; padding: 5px 8px 5px 0; }
.comment-link svg { width: 18px; height: 18px; }
.church-card { position:relative; }
.church-card-top { display:flex; align-items:center; justify-content:space-between; gap:12px; margin-bottom:8px; }
.church-card .church-card-top h3 { flex:1; min-width:0; font-size:21px; line-height:1.3; margin:0; overflow-wrap:anywhere; }
.church-card-actions { display:flex; flex:none; align-items:center; gap:8px; }
.church-card .church-card-actions .church-follow-button { position:relative; font-size:10px; line-height:1.2; padding:3px 9px; margin:0; }
.church-card-actions .church-follow-button:before { content:''; position:absolute; inset:-10px -2px; }
.church-card .church-jurisdiction { margin:0 0 4px; }
.church-popularity-note { display:flex; flex-wrap:wrap; gap:6px 12px; align-items:baseline; margin:0 0 16px; font-size:13px; color:var(--muted); }
.church-popularity-note button { color:var(--teal); text-decoration:underline; text-underline-offset:3px; font-size:inherit; padding:3px 0; }
.church-card h3 a { text-decoration: none; }
.church-card h3 a:hover { text-decoration: underline; }
.church-card .church-contact-list { margin: 13px 0; }
.event-heading { position: relative; padding-right: 44px; }
.event-heading .plan-ribbon { top: 0; right: 0; }
.event-date-line { display: flex; flex-wrap: wrap; align-items: center; gap: 4px 8px; margin-bottom: 10px; }
.event-date-line .visit-date { font-size: 13px; margin: 0; }
.event-heading .visit-heading { font-size: 28px; line-height: 1.25; margin: 0 0 12px; }
.visit-church { font-size: 16px; }
.visit-address { font-size: 13px; }
.event-description { margin-top: 14px; font-size: 14px; color: var(--muted); }
.event-parish-links { display: flex; flex-wrap: wrap; gap: 8px 18px; margin: 14px 0 0; font-size: 13px; color: var(--teal); }
.event-parish-links a { text-decoration: none; }
.event-parish-links a:hover { text-decoration: underline; }
.event-discussion { margin-top: 23px; border-top: 1px solid var(--line); padding-top: 20px; }
.event-discussion:focus { outline: none; }
.calendar-picker { position: relative; margin: 0; padding: 0; border: 0; }
.calendar-picker summary { display: flex; align-items: center; justify-content: center; width: 36px; height: 36px; padding: 8px; border-radius: 4px; color: var(--teal); list-style: none; }
.calendar-picker summary::-webkit-details-marker { display: none; }
.calendar-picker summary:hover, .calendar-picker[open] summary { background: var(--wash); }
.calendar-picker summary:focus-visible { outline: 3px solid #bf8d3c; outline-offset: 3px; }
.calendar-menu { position: absolute; z-index: 10; left: 0; top: calc(100% + 5px); width: 218px; padding: 5px; border: 1px solid var(--line); border-radius: 5px; background: white; box-shadow: 0 6px 20px #102c3a15; }
.calendar-menu a, .calendar-menu button { display: block; width: 100%; padding: 10px; text-align: left; font-size: 13px; color: var(--teal); text-decoration: none; border-radius: 3px; }
.calendar-menu a:hover, .calendar-menu button:hover { background: var(--wash); }
.event-admin-research { margin-top: 28px; }
@media (max-width:720px) {
  header { padding: 12px 20px; gap: 10px; }
  header .brand { font-size: 21px; gap: 8px; }
  header .brandmark { font-size: 32px; }
  header .site-account { gap: 8px; }
  header .site-account .nav { font-size: 12px; padding: 6px 0; }
  header .site-account button { font-size: 11px; }
  header nav { flex-wrap: nowrap; gap: 8px; overflow-x: auto; }
  header nav .nav { flex: none; font-size: 11px; padding: 8px 0 10px; }
  .intro { padding: 24px 0; }
  .intro h1 { font-size: 30px; }
  .intro-text { font-size: 14px; }
  .results-top h2 { font-size: 21px; }
  .month-label { font-size: 20px; }
  .site-page h1 { font-size: 24px; }
  .feast-card { grid-template-columns: 52px minmax(0,1fr); gap: 12px; padding: 16px 12px; }
  .feast-card .date-tile { min-width: 52px; padding: 8px 3px; }
  .feast-card .date-tile .day { font-size: 30px; }
  .feast-card h3 { font-size: 19px; padding-right: 20px; }
  .feast-card .church-line { font-size: 13px; gap: 2px; }
  button.plan-ribbon { top: 8px; right: 5px; }
  .event-heading .visit-heading { font-size: 24px; }
  .event-date-line .visit-date { font-size: 12px; }
  .event-date-line { gap: 2px 6px; }
  .event-date-line { position: relative; }
  .calendar-picker { position: static; }
  .calendar-menu { left: 0; right: auto; }
  .is-admin .results-panel .feast-controls { grid-template-columns: 1fr 1fr; }
}

/* Event interest, discussion and sharing use the same controls on both views. */
.event-actions { display:flex; align-items:center; gap:12px; flex-wrap:wrap; }
.interest-control { display:inline-flex; align-items:center; gap:0; }
button.interest-heart.selected { color:var(--gold); }
button.interest-heart.selected svg { fill:currentColor; }
button.interest-count { min-width:28px; min-height:38px; padding:6px; color:var(--muted); font:500 14px/1.2 inherit; text-decoration:none; }
button.interest-count:hover { color:var(--teal); text-decoration:underline; }
.event-actions .comment-link { width:auto; gap:6px; font-size:14px; }
.feast-card .feast-card-footer .comment-link { font-size:14px; padding:8px; }
.event-heading .event-calendar { position:absolute; top:0; right:0; }
.event-follow { margin:6px 0 12px; }
.church-follow-button { border:1px solid var(--line); border-radius:4px; padding:7px 16px; font-size:14px; color:var(--teal); background:white; }
.church-follow-button.selected { background:var(--wash); }
.event-contact-list { display:grid; gap:8px; margin:18px 0; font-size:14px; }
.event-contact-list>div { display:grid; grid-template-columns:160px minmax(0,1fr); gap:8px; }
.event-contact-list dt { font-weight:600; }
.event-contact-list dd { margin:0; overflow-wrap:anywhere; }
.event-description { font-size:16px; }
.detail-event-actions { margin:16px 0; }
@media(max-width:540px){.event-contact-list>div { grid-template-columns:1fr; gap:2px; }.event-contact-list { gap:12px; }}

/* Full-width discovery and a compact, accessible account menu. */
header { max-width:none; padding-left:clamp(20px,3.4vw,48px); padding-right:clamp(20px,3.4vw,48px); }
main#main { max-width:none; margin:0; padding:0 clamp(20px,3.4vw,48px); }
.feast-layout { display:block; width:100%; }
.results-panel .feast-controls,.is-admin .results-panel .feast-controls { grid-template-columns:1.25fr .85fr .8fr 1.6fr; }
.results-panel .feast-search { grid-column:auto; }
.site-profile { position:relative; }
.site-account #site-sign-in { min-height:38px; padding:8px 14px; border:1px solid var(--line); border-radius:4px; text-decoration:none; font-size:14px; }
.site-account .site-avatar { position:relative; display:flex; align-items:center; justify-content:center; width:40px; height:40px; padding:0; border-radius:50%; background:var(--wash); border:1px solid var(--line); text-decoration:none; overflow:visible; }
.site-avatar img { width:100%; height:100%; object-fit:cover; border-radius:50%; }
.site-avatar #site-avatar-initials { font-size:13px; font-weight:650; }
.site-unread { position:absolute; top:-5px; right:-5px; background:var(--teal); color:white; padding:1px 4px; min-width:17px; border-radius:12px; font-size:10px; }
.site-profile-menu { position:absolute; z-index:30; top:calc(100% + 9px); right:0; min-width:200px; padding:5px; background:white; border:1px solid var(--line); border-radius:5px; box-shadow:0 8px 25px #102c3a22; }
.site-profile-menu a,.site-profile-menu button { display:block; width:100%; text-align:left; padding:10px 12px; border-radius:3px; color:var(--ink); font-size:14px; text-decoration:none; }
.site-profile-menu a:hover,.site-profile-menu button:hover { background:var(--wash); }
.visit-church.church-line { gap:6px 12px; align-items:center; margin-bottom:8px; }
.visit-church .church-follow-button { font-size:10px; line-height:1.2; padding:3px 9px; margin:6px 0; position:relative; }
.visit-church .church-follow-button:before { content:''; position:absolute; inset:-10px -2px; }
.repost-action.selected { color:var(--teal); }
#settings-account-host .account-box { margin-top:28px; max-width:720px; }
@media(max-width:720px){.results-panel .feast-controls,.is-admin .results-panel .feast-controls { grid-template-columns:1fr 1fr; }.results-panel .feast-focus { grid-column:1/-1; }.results-panel .feast-search { grid-column:1/-1; }.results-panel .feast-window,.results-panel .feast-sort { grid-column:auto; }}

/* Match the space inside event counts, and keep the map number with the title. */
.event-actions .interest-control { gap:6px; padding:0 8px; }
.event-actions button.interest-heart { width:20px; height:38px; padding:0; }
.event-actions button.interest-count { min-width:0; min-height:38px; padding:0; font-size:14px; font-weight:500; line-height:1.2; }
.event-actions .comment-link svg { width:20px; height:20px; }
.event-actions .comment-link { gap:6px; padding:8px; }
.feast-card-top { display:flex; align-items:flex-start; justify-content:space-between; gap:12px; margin-bottom:8px; }
.feast-card .feast-card-top h3 { margin:0; padding-right:0; flex:1; }
/* Equal corner spacing and room below the enlarged map badge at every width. */
.feast-card,.church-card { padding-top:25px; }
.feast-card .feast-card-top .listing-number,.church-card .church-card-actions .listing-number { position:absolute; top:8px; right:8px; width:14.4px; min-width:14.4px; height:14.4px; margin:0; font:650 8.4px/1 system-ui; }
.feast-card .city-label { margin:2px 0 8px; }
.visit-city { margin:0 0 8px; }
.site-member-actions { display:flex; align-items:center; gap:6px; }
.site-member-actions[hidden] { display:none; }
.site-account .header-icon { display:inline-flex; position:relative; align-items:center; justify-content:center; width:38px; min-width:38px; height:38px; padding:8px; border:0; border-radius:4px; background:transparent; color:var(--muted); text-decoration:none; }
.site-account .header-icon:hover { background:var(--wash); color:var(--teal); }
.site-account .header-icon svg { width:20px; height:20px; }
.site-account .header-icon:focus-visible { outline:3px solid var(--gold); outline-offset:2px; }
.header-icon .site-unread { top:0; right:0; }
@media(max-width:720px){header .site-account { gap:6px; }.site-member-actions { gap:2px; }.site-account .header-icon { width:34px; min-width:34px; height:38px; padding:7px; }.site-account .site-avatar { width:36px; height:36px; }}

/* Keep the four date labels evenly spaced within a slim vertical tile. */
.feast-card { grid-template-columns:64px minmax(0,1fr); }
.feast-card .date-tile { box-sizing:border-box; width:64px; min-width:64px; max-width:64px; height:96px; min-height:96px; max-height:96px; padding:6px; display:flex; flex-direction:column; align-items:center; justify-content:center; gap:4px; align-self:start; }
.feast-card .date-tile .month { margin:0; font-size:10px; line-height:1.2; white-space:nowrap; }
.feast-card .date-tile .day { margin:0; font-size:24px; line-height:1.1; }
.feast-card .date-tile .year { font-size:10px; line-height:1.2; color:#c5d4d6; }
.feast-card .date-tile .weekday { font-size:10px; line-height:1.2; white-space:nowrap; }

/* Icon navigation keeps the header calm and touch targets easy to reach. */
header nav { gap:12px; }
header nav .nav-icon { position:relative; display:inline-flex; align-items:center; justify-content:center; width:48px; min-width:48px; height:48px; padding:10px; border:0; border-radius:8px; text-decoration:none; color:var(--muted); }
header nav .nav-icon svg { width:25px; height:25px; flex:none; }
header nav .nav-icon:hover { background:var(--wash); color:var(--teal); }
header nav .nav-icon.active { color:var(--teal); background:#e7eeea; box-shadow:inset 0 -3px var(--gold); }
header nav .nav-icon .nav-label { padding:0; margin:0; border:0; }
header nav #saved-count { position:absolute; top:1px; right:0; display:inline-flex; align-items:center; justify-content:center; margin:0; padding:0 4px; min-width:18px; height:18px; font:600 10px/1 system-ui; font-variant-numeric:tabular-nums; background:var(--navy); color:white; border-radius:12px; }
@media(max-width:720px) {
  header { gap:8px; padding:12px 16px 8px; }
  header nav { flex-basis:100%; width:100%; order:3; display:flex; justify-content:space-around; gap:8px; overflow:visible; }
  header nav .nav-icon { width:48px; min-width:48px; height:44px; padding:9px; }
  header .site-account .header-icon { width:36px; min-width:36px; }
}
@media(max-width:360px) { header .brand { font-size:19px; gap:5px; } header .brandmark { font-size:28px; } header .site-account { gap:2px; } }

/* A single short introduction leaves room for the map and results. */
.tab-intro { padding:20px 0 10px; align-items:flex-start; }
.tab-intro h1 { font-size:22px; line-height:1.2; letter-spacing:0; }
.tab-intro .view-description { margin:6px 0 0; font-size:13px; line-height:1.5; max-width:680px; }
.discovery-actions { display:flex; align-items:center; gap:18px; margin:0 0 12px; }
.discovery-actions .text-button { min-height:44px; font-size:12px; }
#main .feast-layout { margin-top:18px; }
#main .results-panel { padding:0; border:0; background:transparent; }
#main .results-panel .month-label:first-child { margin-top:0; }
#toast { top:18px; bottom:auto; z-index:1000; width:max-content; max-width:calc(100vw - 32px); font-size:13px; }
.profile-editor[data-setup="true"]::backdrop { background:#f5f7f3; }
.results-toolbar { display:flex; align-items:center; justify-content:space-between; gap:16px; margin-bottom:14px; }
.results-toolbar h2 { flex:none; font-size:22px; line-height:1.25; }
.directory-search { position:relative; flex:0 1 360px; display:block; min-width:0; margin-left:auto; }
.directory-search[hidden] { display:none; }
.directory-search svg { position:absolute; top:50%; left:12px; transform:translateY(-50%); pointer-events:none; color:var(--muted); }
.directory-search #search { box-sizing:border-box; width:100%; height:42px; min-width:0; padding:8px 12px 8px 38px; border:1px solid var(--line); border-radius:7px; background:white; color:var(--ink); font-size:14px; }
.results-toolbar[data-view="churches"] .directory-search { flex-basis:420px; margin-left:0; }
.results-toolbar[data-view="plan"] { margin:0; }
@media(max-width:540px) { .results-toolbar { gap:10px; } .results-toolbar h2 { font-size:18px; } .directory-search { flex:1; } .directory-search #search { height:40px; font-size:16px; } .directory-search #search::placeholder { font-size:12px; } }
@media(max-width:720px) { .tab-intro { padding:16px 0 8px; } .tab-intro h1 { font-size:20px; } .tab-intro .view-description { font-size:12px; } }
