:root {
  --navy:#1d2661; --burgundy:#761c34; --gold:#e7c88b; --paper:#f9f7f2;
  --ink:#1d2661; --muted:#58606b; --line:#d9d6ce; --warm:#efe9df;
  --serif:'Libre Caslon Text',Georgia,serif; --body:'Source Serif 4',Georgia,serif;
}
* { box-sizing:border-box; }
html { scroll-padding-top:88px; }
body { margin:0; background:var(--paper); color:var(--ink); font:400 20px/1.65 var(--body); -webkit-font-smoothing:antialiased; font-synthesis:none; }
a { color:inherit; text-decoration:none; }
button,input,textarea { font:inherit; }
button { color:inherit; cursor:pointer; }
button,a,summary { -webkit-tap-highlight-color:transparent; }
a:focus-visible,button:focus-visible,summary:focus-visible,input:focus-visible { outline:3px solid #a88141; outline-offset:5px; }
img { display:block; max-width:100%; }
figure,p,h1,h2,h3 { margin:0; }
h1,h2,h3 { font-family:var(--serif); font-weight:500; line-height:1.2; letter-spacing:-.012em; }
h1,h2 { text-wrap:balance; }
h1 { font-size:clamp(40px,5vw,64px); font-weight:500; }
h2 { font-size:clamp(32px,3.2vw,44px); }
h3 { font-size:28px; }
em { font-style:normal; font-weight:inherit; }
p+p { margin-top:1.1em; }
strong { font-weight:600; }
svg { width:22px; height:22px; fill:none; stroke:currentColor; stroke-width:1.5; stroke-linecap:round; stroke-linejoin:round; flex:none; }
.wrap { width:min(1280px,100%); margin-inline:auto; padding-inline:64px; }
.section-space { padding-block:90px; }
.skip { position:fixed; z-index:40; left:18px; top:-100px; background:var(--paper); padding:10px 18px; }
.skip:focus { top:16px; }
.site-header { position:sticky; z-index:20; top:0; background:var(--paper); border-bottom:1px solid var(--line); }
.header-inner { display:flex; align-items:center; justify-content:space-between; gap:32px; min-height:84px; padding-block:10px; transition:min-height .18s ease-out,padding .18s ease-out; }
.site-header.is-compact .header-inner { min-height:64px; padding-block:6px; }
.brand { flex:none; display:block; }
.brand img { width:230px; height:auto; transition:width .18s ease-out; }
.site-header.is-compact .brand img { width:190px; }
.site-header nav { font-weight:400; display:flex; align-items:center; gap:28px; font-size:18px; }
.site-header nav a { padding:10px 0 6px; border-bottom:1px solid transparent; }
.site-header nav a:hover,.site-header nav a[aria-current=page] { color:var(--burgundy); border-color:var(--burgundy); }
.menu-toggle { display:none; }
.button { display:inline-flex; align-items:center; justify-content:center; gap:22px; min-height:54px; padding:13px 23px; border:1px solid transparent; font-size:16px; font-weight:600; line-height:1.5; }
.button-light { background:var(--paper); color:var(--burgundy); }
.button-light:hover { background:#e9d9bd; }
.text-link { display:inline-flex; align-items:center; gap:15px; color:var(--burgundy); font-size:18px; font-weight:400; padding-block:9px; min-height:44px; border-bottom:1px solid #bca5a7; margin-top:24px; }
.text-link:hover { border-color:currentColor; }
.share-text { font-weight:400; display:inline-flex; align-items:center; gap:14px; border:0; border-bottom:1px solid currentColor; padding:9px 0; min-height:44px; background:none; font-size:18px; line-height:1.5; color:var(--burgundy); }
.share-text svg { width:19px; height:19px; }
.photo-filters { position:absolute; width:0; height:0; overflow:hidden; }
.member-portrait,.member-thumb { position:relative; overflow:hidden; aspect-ratio:4/5; background:var(--warm); }
.member-portrait img,.member-thumb img { position:absolute; width:var(--photo-width,100%); max-width:none; height:auto; left:var(--photo-left,0); top:var(--photo-top,0); filter:url(#photo-detail); }
.lead { font:400 28px/1.45 var(--body); color:var(--burgundy); }
.home-opening { padding:0; }
.opening-photo { width:100%; overflow:hidden; }
.opening-photo img { width:100%; height:min(60vw,780px); object-fit:cover; object-position:50% 74%; filter:url(#photo-detail); }
.opening-message { display:grid; grid-template-columns:1fr auto; align-items:end; gap:48px; padding-block:48px 65px; }
.opening-message h1 { font-size:clamp(40px,4.6vw,64px); line-height:1.15; text-wrap:initial; }
.opening-message em { display:block; color:var(--burgundy); margin-top:4px; }
.opening-details { padding-bottom:7px; }
.opening-details p { font-weight:400; font-size:20px; line-height:1.6; }
.opening-details p span { font-weight:400; display:block; color:var(--muted); font-size:18px; margin-top:6px; }
.opening-details .text-link { margin-top:19px; }
.home-welcome { background:var(--burgundy); }
.welcome-layout { display:grid; grid-template-columns:46% 54%; align-items:stretch; }
.welcome-layout>.member-portrait { margin:0; }
.welcome-letter { align-self:center; color:var(--paper); padding:60px clamp(38px,6vw,110px); }
.welcome-letter h2 { font-size:44px; margin-bottom:28px; }
.welcome-letter>p { font:400 24px/1.55 var(--body); max-width:34ch; }
.welcome-letter>p+p { margin-top:20px; }
.welcome-signature { margin-top:30px; }
.welcome-signature p { font:400 24px/1.4 var(--body); }
.welcome-letter .text-link { margin-top:24px; color:var(--paper); border-color:#c7a5ad; }
.home-life { display:grid; grid-template-columns:.85fr 1.15fr; gap:115px; padding-block:110px 100px; }
.life-intro h2 { font-size:clamp(36px,3.4vw,48px); }
.life-intro>.text-link { color:var(--ink); border-color:var(--line); margin-top:28px; }
.life-intro>p { color:var(--muted); font-size:18px; max-width:32ch; margin-top:25px; }
.life-proposal { display:flex; align-items:center; gap:25px; padding-block:23px; border-bottom:1px solid var(--line); }
.life-proposal:first-child { padding-top:3px; }
.life-proposal>div { flex:1; }
.life-proposal h3 { font-size:32px; }
.life-proposal p { font-size:18px; line-height:1.65; color:var(--muted); margin-top:11px; max-width:46ch; }
.life-proposal svg { transition:transform .18s ease-out; }
.life-proposal:hover svg { transform:translateX(5px); }
.life-proposal:hover h3 { text-decoration:underline; text-decoration-thickness:1px; text-underline-offset:5px; }
.gathering-invitation { background:var(--warm); color:var(--ink); display:grid; grid-template-columns:1.2fr 1fr; align-items:center; gap:65px; padding:54px 58px; }
.gathering-invitation h2 { font-size:52px; line-height:1.08; }
.gathering-details p { font-size:18px; color:var(--muted); }
.gathering-details strong { font-weight:400; font-size:24px; color:var(--ink); }
.gathering-details .button { margin-top:24px; background:var(--burgundy); color:var(--paper); }
.gathering-details .button:hover { background:#5d1428; }
.gathering-contact { display:flex; align-items:center; justify-content:space-between; gap:45px; padding-block:48px 65px; }
.gathering-contact h2 { font-size:36px; }
.gathering-contact p { font-size:16px; color:var(--muted); margin-top:19px; }
.gathering-contact>.text-link { flex:none; font-size:18px; margin-top:0; gap:24px; }
.member-directory { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); column-gap:64px; }
.member-row { min-width:0; display:flex; gap:27px; align-items:center; padding:26px 0; border-top:1px solid var(--line); }
.member-row>div { flex:1; min-width:0; }
.member-row h2 { font-family:var(--body); font-weight:400; font-size:28px; line-height:1.25; letter-spacing:0; }
.member-row p { color:var(--muted); font-size:18px; margin-top:9px; line-height:1.5; }
.member-row>svg { color:var(--burgundy); width:20px; }
.member-row:hover h2 { color:var(--burgundy); }
.member-thumb { display:block; width:120px; height:150px; flex:none; }
.member-row>svg { transition:transform .18s ease-out; }
.member-row:hover>svg { transform:translateX(5px); }
.closing { background:var(--burgundy); color:var(--paper); }
.closing-inner { display:flex; align-items:center; justify-content:space-between; gap:60px; padding-block:65px; }
.closing h2 { font-size:44px; }
.closing p { max-width:58ch; color:#f3e3e7; font-size:18px; margin-top:20px; }
.closing .button { flex:none; }
.site-footer { background:var(--navy); color:var(--paper); border-top:1px solid var(--navy); }
.footer-inner { display:flex; align-items:center; justify-content:space-between; gap:32px; padding-block:24px; padding-bottom:max(24px,env(safe-area-inset-bottom)); }
.footer-identity { flex:none; }
.footer-logo { display:inline-flex; align-items:center; min-height:44px; }
.footer-logo img { width:155px; height:auto; }
.footer-identity p { color:#d4dae3; font-size:16px; line-height:1.5; margin-top:5px; }
.footer-nav { display:flex; flex-wrap:wrap; justify-content:flex-end; column-gap:26px; }
.footer-nav a { display:inline-flex; align-items:center; min-height:44px; font-size:16px; font-weight:400; padding-block:9px; }
.footer-nav a:hover { color:var(--gold); text-decoration:underline; text-underline-offset:4px; }
.page-heading { padding-block:70px 58px; }
.page-heading h1 { max-width:1000px; color:var(--burgundy); }
.page-heading>p { max-width:67ch; font-size:20px; color:var(--muted); margin-top:28px; line-height:1.65; }
.team-heading h1 { max-width:none; font-size:clamp(40px,4.6vw,60px); text-wrap:initial; }
.team-heading>p { max-width:none; }
.presentation-layout { display:grid; grid-template-columns:44% 56%; align-items:start; }
.presentation-layout>.member-portrait { position:sticky; top:65px; }
.letter { max-width:850px; padding:58px clamp(35px,5.8vw,96px) 75px; }
.letter h1 { font-size:clamp(36px,4.1vw,52px); color:var(--burgundy); }
.letter h2 { font-size:36px; margin-block:40px 23px; }
.letter .member-role { font-size:18px; line-height:1.5; margin-top:20px; }
.letter .lead { margin-bottom:25px; }
.letter>p:not(.lead):not(.signature):not(.member-role) { color:var(--muted); }
.letter .signature { font:400 24px/1.4 var(--body); margin-top:32px; color:var(--burgundy); }
.letter .share-text { margin-top:30px; }
.project-index { display:flex; flex-wrap:wrap; gap:12px 30px; padding-bottom:45px; }
.project-index a { display:inline-flex; align-items:center; min-height:44px; font-size:18px; border-bottom:1px solid var(--line); padding-block:8px; color:var(--ink); }
.proposal { display:grid; grid-template-columns:.85fr 1.15fr; gap:85px; padding-block:60px; border-top:1px solid var(--line); scroll-margin-top:120px; }
.proposal h2 { font-size:44px; max-width:14ch; }
.proposal-intro { font:400 24px/1.5 var(--body); color:var(--muted); margin-top:24px; max-width:27ch; }
.proposal .share-text { color:var(--ink); }
.proposal-copy>p { color:var(--muted); }
.proposal-copy h3 { font:600 18px/1.5 var(--body); margin-block:25px 13px; }
.proposal-copy ul { padding-left:21px; margin-block:0 26px; }
.proposal-copy li { padding-left:5px; }
.proposal-copy li+li { margin-top:12px; }
.proposal-list { padding-bottom:25px; }
.team-photo img { width:100%; height:min(60vw,780px); object-fit:cover; object-position:50% 74%; filter:url(#photo-detail); }
.member-role { font-weight:400; color:var(--burgundy); font-size:18px; margin-top:20px; }
.team-directory-section { padding-bottom:85px; }
.back-link { font-weight:400; display:inline-flex; align-items:center; gap:13px; font-size:18px; color:var(--burgundy); min-height:44px; padding-block:8px; }
.back-link svg { order:-1; transform:rotate(180deg); }
.profile-layout { display:grid; grid-template-columns:46% 54%; align-items:center; }
.profile-layout>.member-portrait { align-self:start; }
.profile-intro { padding:42px clamp(34px,5.8vw,96px) 60px; max-width:850px; }
.profile-intro h1 { font-size:clamp(32px,4.1vw,52px); max-width:18ch; overflow-wrap:break-word; }
.profile-section { border-top:1px solid var(--line); padding-top:25px; margin-top:32px; }
.profile-section h2 { font-size:32px; margin-bottom:18px; }
.profile-section ul { padding-left:21px; margin-block:0; }
.profile-section li+li { margin-top:7px; }
.profile-section p { color:var(--muted); }
.profile-intro>.share-text { font-weight:400; display:flex; width:max-content; margin-top:30px; }
.profile-pending { color:var(--muted); max-width:42ch; margin-top:30px; font-size:19px; }
.portrait-pending { aspect-ratio:4/5; background:var(--warm); border:1px solid var(--line); display:flex; flex-direction:column; align-items:center; justify-content:center; padding:25px; color:var(--burgundy); }
.portrait-pending>span { font:500 clamp(64px,10vw,96px)/1 var(--serif); }
.portrait-pending p { margin-top:27px; font-size:16px; color:var(--muted); }
.profile-next { margin-top:45px; border-top:1px solid var(--line); padding-block:35px 65px; display:flex; align-items:center; justify-content:space-between; gap:25px; }
.profile-next-person { display:flex; flex-direction:column; align-items:flex-end; max-width:65%; min-width:0; }
.profile-next-person>span { color:var(--muted); font-size:16px; }
.profile-next .back-link { color:var(--muted); flex:none; }
.profile-next .back-link:hover { color:var(--burgundy); }
.profile-next .text-link { margin-top:4px; text-align:right; }
.election-layout { display:grid; grid-template-columns:.9fr 1.1fr; gap:75px; padding-bottom:65px; }
.election-facts { background:var(--burgundy); color:var(--paper); padding:37px 36px 43px; align-self:start; }
.election-facts h2 { font-size:36px; line-height:1.2; }
.election-facts .voting-time { color:var(--gold); font:400 28px/1.4 var(--body); margin-top:22px; }
.election-facts p { font-size:18px; margin-top:24px; }
.election-facts .text-link { color:var(--paper); border-color:#d9a9b6; }
.election-information h2 { font-size:40px; margin-bottom:22px; }
.election-information h3 { font-size:28px; margin-block:28px 17px; }
.election-information p { font-size:18px; }
.info-detail { margin-top:24px; border-block:1px solid var(--line); }
.info-detail summary { font-weight:400; display:flex; align-items:center; justify-content:space-between; gap:20px; padding-block:18px; cursor:pointer; font-size:18px; list-style:none; }
.info-detail summary::-webkit-details-marker { display:none; }
.info-detail[open] .vertical { display:none; }
.info-detail p { padding-bottom:20px; }
.electoral-dates { padding-block:5px 80px; }
.electoral-dates>h2 { font-size:44px; margin-bottom:35px; }
.date-row { display:grid; grid-template-columns:.65fr 1.35fr; gap:65px; border-top:1px solid var(--line); padding-block:28px; }
.date-row h3 { font-size:32px; }
.date-row p { color:var(--muted); font-size:18px; }
.electoral-dates>.share-text { margin-top:10px; }
.contact-page { background:var(--burgundy); color:var(--paper); }
.contact-layout { display:grid; grid-template-columns:.85fr 1.15fr; gap:80px; padding-block:75px 90px; }
.contact-intro h1 { font-size:60px; line-height:1.08; }
.contact-intro h1 em { color:var(--gold); }
.contact-intro p { font-size:18px; color:#f3e3e7; max-width:34ch; margin-top:25px; }
.contact-intro .share-text { color:var(--gold); margin-top:27px; }
.form-row { display:grid; grid-template-columns:1fr 1fr; gap:22px; }
.field { display:flex; flex-direction:column; gap:9px; margin-bottom:23px; }
.field label { font-size:18px; font-weight:600; }
.field input,.field textarea { width:100%; min-height:49px; border:1px solid #d9a9b6; border-radius:0; background:#872d45; color:#fff; font:400 17px/1.5 var(--body); padding:12px 14px; }
.field textarea { resize:vertical; min-height:170px; }
.field input:focus-visible,.field textarea:focus-visible { outline:2px solid var(--gold); outline-offset:3px; }
.consent { display:flex; align-items:start; gap:13px; font-size:16px; line-height:1.65; color:#f9ecee; margin-bottom:25px; }
.consent input { width:19px; height:19px; flex:none; margin:3px 0 0; accent-color:var(--gold); }
.consent a { text-decoration:underline; text-underline-offset:3px; }
.form-honeypot { display:none; }
.contact-form .button { min-width:188px; }
.contact-form .button:disabled { opacity:.55; cursor:not-allowed; }
.form-status { font-size:16px; line-height:1.6; margin-top:18px; color:#fff; min-height:24px; }
.form-status[data-state=error] { padding:12px; border:1px solid #e5bdc7; }
.privacy-page { max-width:930px; padding-block:65px 85px; }
.privacy-page h1 { font-size:52px; margin-bottom:32px; }
.privacy-page h2 { font-size:32px; margin-block:35px 17px; }
.privacy-page p { font-size:18px; }
.privacy-page p a { text-decoration:underline; text-underline-offset:3px; }
.toast { position:fixed; z-index:30; bottom:25px; left:50%; transform:translate(-50%,20px); background:var(--paper); color:var(--ink); border:1px solid var(--line); box-shadow:0 6px 28px #1d266125; padding:13px 23px; max-width:calc(100% - 32px); font-size:16px; opacity:0; pointer-events:none; transition:opacity .2s,transform .2s; }
.toast.show { opacity:1; transform:translate(-50%,0); }
.brand picture,.footer-logo picture { display:block; }
.proposal-icon,.proposal-mobile-title,.meeting-date,.meeting-weekday,.nav-arrow,.mobile-menu-footer { display:none; }
.presentation-heading { display:contents; }
.life-areas,.project-index-arrow,.election-checklist { display:none; }
@media(max-width:1100px) {
  .opening-message { gap:30px; }
  .opening-message h1 { font-size:clamp(36px,4.6vw,52px); }
  .opening-details p { font-size:19px; }
  .opening-details p span { font-size:18px; }
  .home-life { gap:55px; }
  .gathering-invitation { padding:42px 38px; gap:40px; }
  .gathering-invitation h2 { font-size:40px; }
  .wrap { padding-inline:40px; }
  .header-inner { gap:23px; }
  .brand img { width:220px; }
  .site-header nav { gap:20px; font-size:18px; }
  .proposal { gap:55px; }
  .member-directory { column-gap:35px; }
  .member-row { gap:20px; }
  .member-thumb { width:100px; height:125px; }
  .member-row h2 { font-size:24px; }
  .contact-layout { gap:45px; }
  .contact-intro h1 { font-size:52px; }
  .election-layout { gap:40px; }
  .election-facts { padding-inline:28px; }
}
@media(max-width:960px) {
  .menu-toggle { display:flex; align-items:center; gap:13px; padding:8px 0; background:none; border:0; font-size:16px; min-height:44px; }
  .site-header nav { display:none; position:absolute; inset:100% 0 auto; max-height:calc(100dvh - 85px); overflow-y:auto; padding:18px 40px 25px; border-bottom:1px solid var(--line); background:var(--paper); font-size:18px; }
  .site-header.is-compact nav { max-height:calc(100dvh - 65px); }
  .site-header nav.is-open { display:flex; flex-direction:column; align-items:stretch; gap:5px; }
  .site-header nav a { padding-block:10px; }
  .contact-layout { grid-template-columns:1fr; max-width:780px; }
  .contact-intro p { max-width:55ch; }
}
/* Shared visual direction, composed for larger screens. */
@media(min-width:701px) {
  .welcome-layout>.member-portrait { width:100%; min-width:0; align-self:start; }
  .footer-identity { display:flex; width:100%; align-items:center; justify-content:space-between; gap:32px; }
  .footer-identity p { margin:0; }
  .footer-logo img { width:180px; }
  .home-life.wrap { width:100%; max-width:none; padding:80px max(64px,calc((100% - 1152px)/2)); grid-template-columns:.85fr 1.15fr; align-items:start; gap:90px; background:var(--navy); color:var(--paper); }
  .life-intro>p { color:#e2e5ef; font-size:20px; line-height:1.55; }
  .life-intro>.text-link { color:var(--paper); border-color:#afb4d0; }
  .life-areas { display:block; }
  .life-chapter { border-top:1px solid #8e95b0; }
  .life-chapter:last-child { border-bottom:1px solid #8e95b0; }
  .life-chapter summary { display:grid; grid-template-columns:30px minmax(0,1fr) 22px; align-items:center; gap:20px; padding-block:24px; list-style:none; cursor:pointer; font:400 28px/1.2 var(--body); }
  .life-chapter summary::-webkit-details-marker { display:none; }
  .life-chapter summary>.proposal-icon { display:block; width:30px; height:30px; color:var(--gold); }
  .life-chapter[open] summary { color:var(--gold); }
  .life-chapter[open] .vertical { display:none; }
  .life-chapter-copy { padding:0 0 28px 50px; }
  .life-chapter-copy p { color:#e2e5ef; font-size:20px; line-height:1.55; max-width:40ch; }
  .life-chapter-copy .text-link { color:var(--paper); border-color:#afb4d0; margin-top:14px; }
  .home-gathering.wrap { width:100%; max-width:none; padding:0; }
  .gathering-invitation { grid-template-columns:110px 1fr 1.15fr; padding:60px max(64px,calc((100% - 1152px)/2)); gap:45px; }
  .gathering-invitation h2 { font-size:clamp(36px,3.6vw,52px); }
  .meeting-date { display:flex; flex-direction:column; align-items:center; color:var(--burgundy); }
  .meeting-date>span:first-child { font:500 100px/.95 var(--serif); }
  .meeting-date>span:last-child { font-size:18px; margin-top:12px; white-space:nowrap; }
  .gathering-details .meeting-date-full,.meeting-date-break { display:none; }
  .meeting-weekday { display:inline; }
  .gathering-details strong { font-size:24px; font-weight:600; }
  .gathering-contact { background:var(--burgundy); color:var(--paper); padding:60px max(64px,calc((100% - 1152px)/2)); }
  .gathering-contact h2 { font-size:40px; }
  .gathering-contact p { font-size:20px; color:#f3e3e7; }
  .gathering-contact>.text-link { font-weight:600; min-height:54px; padding:13px 24px; border:0; background:var(--paper); color:var(--burgundy); }
  .member-directory { grid-template-columns:repeat(4,minmax(0,1fr)); gap:44px 28px; align-items:start; }
  .member-row { flex-direction:column; align-items:stretch; gap:16px; padding:0; border:0; }
  .member-thumb { width:100%; height:auto; aspect-ratio:4/5; }
  .member-row h2 { font-size:24px; line-height:1.25; }
  .member-row p { font-size:18px; }
  .member-row>svg { display:none; }
  .project-index { display:grid; grid-template-columns:repeat(5,minmax(0,1fr)); gap:24px; padding-bottom:52px; }
  .project-index a { display:flex; justify-content:space-between; gap:12px; min-height:72px; font-size:19px; font-weight:600; line-height:1.35; }
  .project-index-arrow { display:flex; flex:none; }
  .project-index-arrow svg { width:18px; height:18px; }
  .proposal { align-items:start; gap:48px; padding:0 0 64px; border:0; }
  .proposal-heading { background:var(--navy); color:var(--paper); padding:36px; position:sticky; top:96px; }
  .proposal h2 { font-size:clamp(32px,3.2vw,42px); font-weight:600; line-height:1.18; text-wrap:initial; }
  .proposal-intro { font-size:23px; line-height:1.5; color:#e2e5ef; margin-top:24px; }
  .proposal-copy>p { font-size:20px; line-height:1.65; }
  .proposal-copy h3 { font:600 28px/1.25 var(--serif); margin:28px 0 0; padding:26px 28px 14px; background:var(--warm); }
  .proposal-copy ul { list-style:none; padding:0 28px 20px; margin:0; background:var(--warm); }
  .proposal-copy li,.proposal-copy li+li { position:relative; margin:0; padding:16px 0 16px 20px; font-size:19px; line-height:1.55; border-top:1px solid #d3c7b7; }
  .proposal-copy li:before { content:''; position:absolute; left:0; top:28px; width:5px; height:5px; border-radius:50%; background:var(--navy); }
  .proposal-copy .share-text { margin-top:20px; }
  .election-layout { grid-template-columns:.8fr 1.2fr; gap:64px; }
  .election-facts { position:sticky; top:96px; }
  .election-facts h2 { font-weight:600; text-wrap:initial; }
  .election-facts .voting-time { font-weight:600; }
  .election-information h2 { font-size:38px; font-weight:600; margin-bottom:10px; }
  .election-checklist { display:block; list-style:none; margin:0; padding:0; }
  .voting-steps li { padding:20px 0; border-bottom:1px solid var(--line); }
  .voting-steps strong { display:block; font:500 25px/1.3 var(--serif); }
  .voting-steps span { display:block; font-size:19px; line-height:1.55; color:var(--muted); margin-top:10px; }
  .election-information h3 { font-size:30px; font-weight:600; margin:36px 0 0; padding:28px 28px 16px; background:var(--warm); }
  .voting-requirements { background:var(--warm); padding:0 28px 24px; }
  .voting-requirements li { position:relative; padding:15px 0 15px 22px; font-size:19px; line-height:1.55; border-top:1px solid #d3c7b7; }
  .voting-requirements li:before { content:''; position:absolute; top:26px; left:0; width:9px; height:5px; border-left:1.5px solid var(--navy); border-bottom:1.5px solid var(--navy); transform:rotate(-45deg); }
  .election-information .info-detail summary { font-weight:600; }
  .electoral-dates { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:0 38px; }
  .electoral-dates>h2 { grid-column:1/-1; font-size:40px; font-weight:600; }
  .date-row { position:relative; display:block; padding:25px 0 0; border-top:1px solid #bcc0d0; }
  .date-row:before { content:''; position:absolute; top:-4px; left:0; width:7px; height:7px; border-radius:50%; background:var(--navy); }
  .date-row h3 { font-size:28px; font-weight:600; margin-bottom:18px; }
  .date-row p { font-size:19px; line-height:1.6; }
  .electoral-dates>.share-text { grid-column:1/-1; justify-self:start; margin-top:32px; }
}
@media(min-width:701px) and (max-width:1100px) {
  .home-life.wrap { padding-inline:40px; gap:44px; }
  .life-chapter summary { font-size:25px; gap:15px; }
  .gathering-invitation,.gathering-contact { padding-inline:40px; gap:32px; }
  .member-directory { grid-template-columns:repeat(3,minmax(0,1fr)); gap:36px 24px; }
  .proposal { gap:32px; }
  .proposal-heading { padding:28px; }
  .election-layout { gap:36px; }
}
@media(min-width:701px) and (max-width:960px) {
  .home-life.wrap { grid-template-columns:1fr 1.3fr; gap:36px; }
  .life-intro h2 { font-size:36px; }
  .gathering-invitation { grid-template-columns:110px 1fr; }
  .gathering-details { grid-column:1/-1; padding-top:26px; border-top:1px solid #d3c7b7; }
  .gathering-contact { display:block; }
  .gathering-contact>.text-link { margin-top:28px; }
  .member-directory { grid-template-columns:repeat(2,minmax(0,1fr)); }
  .project-index { grid-template-columns:repeat(2,minmax(0,1fr)); gap:0 32px; }
  .project-index a { min-height:60px; }
  .proposal { grid-template-columns:1fr; }
  .proposal-heading { position:static; }
  .proposal h2,.proposal-intro { max-width:none; }
  .election-layout { grid-template-columns:1fr; }
  .election-facts { position:static; }
  .electoral-dates { grid-template-columns:1fr; }
  .date-row { margin-top:24px; padding-bottom:8px; }
}
/* Both home invitations share the same action column on desktop. */
@media(min-width:961px) {
  .gathering-invitation,.gathering-contact { grid-template-columns:110px minmax(0,1fr) 340px; }
  .gathering-contact { display:grid; }
  .gathering-contact>div { grid-column:1 / 3; }
  .gathering-contact>.text-link { grid-column:3; justify-self:start; }
  .gathering-details .button,.gathering-contact>.text-link { min-width:214px; justify-content:space-between; }
}
/* Compact mobile composition. */
@media(max-width:700px) {
  html { scroll-padding-top:76px; }
  body { font-size:18px; line-height:1.65; }
  .wrap { padding-left:max(20px,env(safe-area-inset-left)); padding-right:max(20px,env(safe-area-inset-right)); }
  h1 { font-size:34px; }
  h2 { font-size:30px; }
  h3 { font-size:24px; }
  .section-space { padding-block:42px; }
  .button { font-size:17px; padding-inline:20px; min-height:52px; }
  .text-link,.share-text,.back-link { font-size:17px; }
  .site-header { --mobile-header-height:65px; }
  .site-header.is-compact { --mobile-header-height:59px; }
  .header-inner { min-height:64px; padding-block:8px; padding-inline:18px; gap:16px; }
  .site-header.is-compact .header-inner { min-height:58px; padding-block:6px; }
  .brand { margin-right:auto; }
  .brand img { width:184px; }
  .site-header.is-compact .brand img { width:166px; }
  .menu-toggle { min-width:44px; min-height:44px; padding:8px; justify-content:center; }
  .menu-toggle>span { display:none; }
  .menu-toggle svg { width:24px; height:24px; }
  .menu-line { transition:transform .2s ease-out; }
  .menu-line-top { transform-origin:12px 8px; }
  .menu-line-bottom { transform-origin:12px 16px; }
  .menu-toggle[aria-expanded=true] .menu-line-top { transform:translateY(4px) rotate(45deg); }
  .menu-toggle[aria-expanded=true] .menu-line-bottom { transform:translateY(-4px) rotate(-45deg); }
  .site-header nav,.site-header.is-compact nav { position:fixed; inset:var(--mobile-header-height) 0 0; height:calc(100dvh - var(--mobile-header-height)); max-height:none; overflow-y:auto; overscroll-behavior:contain; padding:24px 24px max(24px,env(safe-area-inset-bottom)); background:var(--navy); color:var(--paper); border:0; }
  .site-header nav.is-open { gap:0; }
  .site-header nav>a { flex:none; display:flex; align-items:center; justify-content:space-between; gap:20px; padding:15px 0; border-bottom:1px solid #ffffff30; font:500 28px/1.2 var(--serif); min-height:62px; }
  .site-header nav>a[aria-current=page],.site-header nav>a:hover { color:var(--gold); border-color:#ffffff30; }
  .nav-arrow { display:flex; opacity:.75; }
  .nav-arrow svg { width:20px; height:20px; }
  .mobile-menu-footer { display:flex; justify-content:space-between; align-items:center; gap:20px; margin-top:auto; padding-top:24px; color:#d4dae3; font-size:16px; }
  .site-header nav .mobile-menu-footer a { min-height:44px; padding:8px 0; border:0; font:400 16px/1.5 var(--body); }
  .site-header nav .mobile-menu-footer a:hover { color:var(--gold); }
  html.mobile-menu-open { overflow:hidden; overscroll-behavior:none; }
  .opening-photo,.team-photo { width:100%; margin:0; }
  .opening-photo img,.team-photo img { height:auto; aspect-ratio:1600/1066; object-fit:contain; filter:none; }
  .opening-message { grid-template-columns:1fr; gap:20px; padding-block:25px 32px; }
  .opening-message h1 { font-size:clamp(28px,8.15vw,36px); line-height:1.2; }
  .opening-message em { font-size:clamp(23px,6.65vw,32px); white-space:nowrap; margin-top:5px; }
  .opening-details { padding:0; }
  .opening-details p { font-size:18px; }
  .opening-details p span { font-size:16px; margin-top:4px; }
  .opening-details .text-link { margin-top:15px; }
  .welcome-layout { grid-template-columns:1fr; }
  .welcome-layout>.member-portrait,.profile-layout>.member-portrait { width:calc(100% - 20px); height:calc((100vw - 20px) * 1.25); aspect-ratio:auto; max-width:none; margin-inline:10px; }
  .member-portrait img,.member-thumb img { filter:none; }
  .welcome-letter { padding:28px 20px 34px; }
  .welcome-letter h2 { font-size:30px; margin-bottom:22px; }
  .welcome-letter>p { font-size:20px; line-height:1.6; }
  .welcome-signature { margin-top:24px; }
  .welcome-signature p { font-size:20px; }
  .welcome-letter .text-link { margin-top:18px; font-size:17px; }
  .home-life { width:100%; max-width:none; display:flex; flex-direction:column; gap:0; padding:38px 20px 32px; background:var(--navy); color:var(--paper); }
  .life-intro { display:contents; }
  .life-intro h2 { font-size:34px; line-height:1.2; }
  .life-intro>p { font-size:18px; line-height:1.5; margin-top:18px; margin-bottom:28px; max-width:32ch; color:#e2e5ef; }
  .life-intro>.text-link { order:2; align-self:flex-start; margin-top:26px; color:var(--paper); border-color:#afb4d0; }
  .life-proposals { display:none; }
  .life-areas { display:block; }
  .life-chapter { border-top:1px solid #8e95b0; }
  .life-chapter:last-child { border-bottom:1px solid #8e95b0; }
  .life-chapter summary { display:grid; grid-template-columns:26px minmax(0,1fr) 20px; align-items:center; gap:15px; padding-block:21px; list-style:none; cursor:pointer; font:400 23px/1.2 var(--body); }
  .life-chapter summary::-webkit-details-marker { display:none; }
  .life-chapter summary>.proposal-icon { display:block; width:26px; height:26px; color:var(--gold); }
  .life-chapter summary>svg:last-child { width:20px; height:20px; }
  .life-chapter[open] summary { color:var(--gold); }
  .life-chapter[open] .vertical { display:none; }
  .life-chapter-copy { padding:0 0 25px 41px; }
  .life-chapter-copy p { color:#e2e5ef; font-size:18px; line-height:1.55; max-width:36ch; }
  .life-chapter-copy .text-link { color:var(--paper); border-color:#afb4d0; margin-top:12px; font-size:17px; }
  .home-gathering.wrap { padding-inline:0; }
  .gathering-invitation { grid-template-columns:88px minmax(0,1fr); gap:25px 22px; padding:34px 20px; }
  .meeting-date { display:flex; flex-direction:column; align-items:center; color:var(--burgundy); }
  .meeting-date>span:first-child { font:500 76px/.95 var(--serif); }
  .meeting-date>span:last-child { font-size:16px; margin-top:10px; white-space:nowrap; }
  .gathering-invitation h2 { font-size:clamp(27px,7.5vw,34px); line-height:1.2; align-self:center; }
  .gathering-details { grid-column:1/-1; padding-top:24px; border-top:1px solid #d3c7b7; }
  .gathering-details p { font-size:17px; }
  .gathering-details .meeting-date-full,.meeting-date-break { display:none; }
  .meeting-weekday { display:inline; }
  .gathering-details strong { font-size:20px; }
  .gathering-details .button { display:flex; margin-top:22px; }
  .gathering-contact { display:block; padding:36px 20px 40px; background:var(--burgundy); color:var(--paper); }
  .gathering-contact h2 { font-size:28px; }
  .gathering-contact p { font-size:18px; margin-top:18px; color:#f3e3e7; }
  .gathering-contact>.text-link { margin-top:24px; font-size:17px; font-weight:600; min-height:52px; padding:12px 22px; border:0; background:var(--paper); color:var(--burgundy); }
  .page-heading { padding-block:30px 32px; }
  .page-heading h1 { font-size:34px; }
  .page-heading>p { font-size:17px; line-height:1.55; margin-top:18px; }
  .team-heading h1 { font-size:clamp(24px,6.9vw,32px); line-height:1.25; text-wrap:balance; }
  .team-heading>p { font-size:17px; }
  .team-directory-section.wrap { padding-inline:16px; padding-bottom:42px; }
  .member-directory { grid-template-columns:repeat(2,minmax(0,1fr)); gap:28px 18px; align-items:start; }
  .member-row { display:flex; flex-direction:column; align-items:stretch; gap:12px; padding:0; min-height:0; border:0; }
  .member-row:nth-child(even) { margin-top:0; }
  .member-thumb { width:100%; height:auto; aspect-ratio:4/5; }
  .member-row h2 { font-size:clamp(20px,5.4vw,23px); line-height:1.2; text-wrap:initial; overflow-wrap:break-word; }
  .member-row p { font-size:16px; line-height:1.35; margin-top:7px; }
  .member-row>svg { display:none; }
  .presentation-layout,.profile-layout { grid-template-columns:1fr; gap:0; }
  .presentation-layout>.member-portrait { position:relative; inset:auto; align-self:start; width:100%; height:90vw; aspect-ratio:auto; margin:0; isolation:isolate; }
  .presentation-layout>.member-portrait img { top:calc(var(--photo-top,0%) * 1.388888889); }
  .letter { padding:0 20px 36px; }
  .presentation-heading { display:block; margin-inline:-20px; padding:24px 20px 28px; background:var(--burgundy); color:var(--paper); }
  .letter .presentation-heading h1 { font-size:clamp(28px,7.8vw,34px); line-height:1.2; color:var(--paper); text-wrap:balance; }
  .letter .presentation-heading .member-role { font-size:16px; line-height:1.5; color:#f3e3e7; margin-top:14px; max-width:34ch; }
  .letter h2 { font-size:28px; margin-block:30px 20px; }
  .letter .lead { font-size:24px; line-height:1.45; }
  .letter .signature { font-size:22px; }
  .profile-intro { padding:26px 20px 34px; }
  .profile-intro h1 { font-size:34px; line-height:1.2; }
  .member-role { font-size:17px; margin-top:14px; }
  .profile-section { margin-top:24px; padding-top:22px; }
  .profile-section h2 { font-size:26px; }
  .profile-pending { font-size:18px; }
  .portrait-pending { aspect-ratio:1.14; }
  .portrait-pending>span { font-size:64px; }
  .portrait-pending p { font-size:16px; margin-top:18px; }
  .profile-next { margin-top:0; display:flex; flex-direction:column; align-items:stretch; gap:18px; padding-block:20px 32px; }
  .profile-next-person { max-width:none; align-items:flex-start; border-top:1px solid var(--line); padding-top:18px; }
  .profile-next .text-link { margin-top:4px; text-align:left; }
  .project-heading h1,.elections-heading h1 { font-size:36px; line-height:1.14; text-wrap:initial; }
  .project-heading>p,.elections-heading>p { font-size:18px; }
  .proposal,.election-layout,.date-row { grid-template-columns:1fr; gap:26px; }
  .project-index { display:grid; grid-template-columns:1fr; gap:0; padding-bottom:32px; }
  .project-index a { display:flex; justify-content:space-between; align-items:center; gap:20px; min-height:54px; margin:0; padding:12px 0; font-size:20px; font-weight:600; border:0; border-bottom:1px solid var(--line); }
  .project-index-arrow { display:flex; }
  .project-index-arrow svg { width:18px; height:18px; }
  .proposal-list.wrap { padding-inline:0; }
  .proposal { padding:0 20px 40px; gap:26px; border-top:0; scroll-margin-top:70px; }
  .proposal+.proposal { margin-top:8px; }
  .proposal-heading { margin-inline:-20px; padding:28px 20px; background:var(--navy); color:var(--paper); }
  .proposal h2 { font-size:32px; font-weight:600; line-height:1.18; max-width:20ch; text-wrap:initial; }
  .proposal-intro { font-size:21px; line-height:1.45; margin-top:18px; color:#e2e5ef; }
  .proposal-copy>p { font-size:18px; line-height:1.65; color:var(--muted); }
  .proposal-copy h3 { font-size:25px; font-weight:600; line-height:1.25; margin:26px 0 0; padding:22px 20px 12px; background:var(--warm); }
  .proposal-copy ul { list-style:none; padding:0 20px 18px; margin:0; background:var(--warm); }
  .proposal-copy li { position:relative; margin:0; padding:14px 0 14px 19px; font-size:18px; line-height:1.55; border-top:1px solid #d3c7b7; }
  .proposal-copy li:before { content:''; position:absolute; left:0; top:25px; width:5px; height:5px; border-radius:50%; background:var(--navy); }
  .proposal-copy .share-text { font-size:16px; margin-top:18px; }
  .election-layout { gap:34px; padding-bottom:36px; }
  .election-facts { margin-inline:-20px; padding:28px 20px 32px; }
  .election-facts h2 { font-size:32px; font-weight:600; line-height:1.2; max-width:18ch; text-wrap:initial; }
  .election-facts .voting-time { font-size:25px; font-weight:600; margin-top:18px; }
  .election-facts p { font-size:18px; }
  .election-information h2 { font-size:32px; font-weight:600; margin-bottom:10px; }
  .election-information .election-desktop-copy { display:none; }
  .election-checklist { display:block; list-style:none; margin:0; padding:0; }
  .voting-steps li { padding:19px 0; border-bottom:1px solid var(--line); }
  .voting-steps strong { display:block; font:500 22px/1.3 var(--serif); }
  .voting-steps span { display:block; font-size:18px; line-height:1.55; color:var(--muted); margin-top:9px; }
  .election-information h3 { font-size:27px; font-weight:600; margin:34px 0 0; padding:24px 20px 15px; background:var(--warm); }
  .voting-requirements { background:var(--warm); padding:0 20px 22px; }
  .voting-requirements li { position:relative; padding:13px 0 13px 20px; font-size:18px; line-height:1.55; border-top:1px solid #d3c7b7; }
  .voting-requirements li:before { content:''; position:absolute; top:23px; left:0; width:9px; height:5px; border-left:1.5px solid var(--navy); border-bottom:1.5px solid var(--navy); transform:rotate(-45deg); }
  .election-information .info-detail { margin-top:26px; }
  .election-information .info-detail summary { font-size:18px; font-weight:600; line-height:1.4; min-height:60px; }
  .election-information>.text-link { line-height:1.45; }
  .electoral-dates { padding-bottom:38px; }
  .electoral-dates>h2 { font-size:32px; font-weight:600; margin-bottom:26px; }
  .date-row { position:relative; gap:12px; margin-left:5px; padding:0 0 30px 23px; border:0; border-left:1px solid #bcc0d0; }
  .date-row:before { content:''; position:absolute; top:9px; left:-4px; width:7px; height:7px; border-radius:50%; background:var(--navy); }
  .date-row:last-of-type { padding-bottom:0; border-left-color:transparent; }
  .date-row h3 { font-size:25px; font-weight:600; }
  .date-row p { font-size:18px; line-height:1.6; }
  .electoral-dates>.share-text { font-size:16px; margin-top:26px; }
  .closing-inner { display:block; padding-block:36px; }
  .closing h2 { font-size:30px; }
  .closing p { font-size:17px; margin-top:16px; }
  .closing .button { margin-top:22px; }
  .contact-layout { padding-block:34px 42px; gap:30px; }
  .contact-intro h1 { font-size:36px; }
  .contact-intro p { font-size:17px; margin-top:20px; }
  .form-row { grid-template-columns:1fr; gap:0; }
  .privacy-page { padding-block:34px 42px; }
  .privacy-page h1 { font-size:34px; }
  .privacy-page h2 { font-size:28px; }
  .privacy-page p { font-size:18px; }
  .footer-inner { display:block; padding:24px 20px max(24px,env(safe-area-inset-bottom)); }
  .footer-identity { display:flex; align-items:center; justify-content:space-between; gap:20px; }
  .footer-logo img { width:154px; }
  .footer-identity p { margin:0; font-size:16px; white-space:nowrap; }
  .footer-nav,.footer-descriptor { display:none; }
  .toast { min-width:260px; font-size:16px; text-align:center; }
}
@media(prefers-reduced-motion:reduce) { *,*:before,*:after { transition:none!important; animation:none!important; } }
@media print { .site-header,.site-footer,.share-text,.closing,.button,.toast { display:none; } .wrap { padding:20px; } .profile-layout,.presentation-layout,.proposal { display:block; } .member-portrait { max-width:250px; } }
