.election-list-page{padding-bottom:50px}.election-list-page>h1{font-size:clamp(40px,6vw,68px);line-height:1.05;margin:0 0 14px}.election-list-group-photo{display:block;width:min(100%,720px);height:auto;margin:0 0 30px}
.election-gr-feature img,.lara-group-photo,.election-lara .lara-group-photo,.election-list-group-photo{height:auto;object-fit:contain}
.election-list-page-gemeinderat .election-profile-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:28px}.election-list-page-gemeinderat .election-profile-card{display:flex;min-width:0;flex-direction:column}.election-list-page-gemeinderat .election-profile-summary{margin:12px 0 16px;color:var(--e-ink);font-size:16px;line-height:1.5}.election-list-page-gemeinderat .election-profile-summary p{margin:0;color:inherit;font-size:inherit;line-height:inherit}.election-list-page-gemeinderat .election-profile-summary p+p{margin-top:10px}.election-list-page-gemeinderat .election-text-link{margin-top:auto}

.election-preview-candidates .election-lead,.election-preview-gr .election-lead{margin-top:10px}.election-preview-candidates .election-card-body .election-button{cursor:pointer}.election-preview-portraits{display:grid;grid-template-columns:repeat(10,minmax(0,1fr));gap:10px;margin-top:24px}.election-preview-portrait,.election-preview-trio-card,.election-gr-preview-feature{appearance:none;border:0;padding:0;background:transparent;color:inherit;font:inherit;text-align:left;cursor:pointer}.election-preview-portrait img{display:block;width:100%;height:auto;background:#eee}.election-preview-portrait span{display:block;margin-top:5px;font-size:12px;line-height:1.2}.election-gr-preview{display:grid;grid-template-columns:minmax(0,1.25fr) minmax(0,1fr);gap:20px;align-items:start}.election-gr-preview-feature{display:block;width:100%;position:relative;background:var(--e-soft);text-align:left}.election-gr-preview-feature img{display:block;width:100%;height:auto}.election-gr-preview-feature .election-button{display:flex;margin:0}.election-preview-trio{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}.election-preview-trio-card{display:block}.election-preview-trio-card img{display:block;width:100%;height:auto;background:#eee}.election-preview-trio-card strong,.election-preview-trio-card span{display:block}.election-preview-trio-card strong{font-size:15px;margin-top:8px}.election-preview-trio-card span{font-size:13px;color:var(--e-red);margin-top:2px}.election-modal{width:min(960px,calc(100% - 28px));max-height:min(92vh,1100px);margin:auto;border:1px solid var(--e-line);padding:28px;background:#fff;color:var(--e-ink);box-shadow:0 20px 80px rgba(0,0,0,.25);overflow:auto}.election-modal::backdrop{background:rgba(0,0,0,.64)}.election-modal.is-open{display:block;position:fixed;inset:4vh auto auto;z-index:1000}.election-modal-header{display:flex;justify-content:space-between;align-items:flex-start;gap:20px;border-bottom:1px solid var(--e-line);padding-bottom:16px;margin-bottom:18px}.election-modal-header h2{margin:0;font-size:clamp(28px,4vw,42px);line-height:1.1}.election-modal-close{appearance:none;border:0;background:var(--e-ink);color:#fff;width:40px;height:40px;font-size:28px;line-height:1;cursor:pointer}.election-modal-profile-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px}.election-modal-profile-trigger{appearance:none;width:100%;border:1px solid var(--e-line);padding:0;background:#fff;color:inherit;font:inherit;text-align:left;cursor:pointer}.election-modal-profile-trigger img{display:block;width:100%;height:auto;background:#eee}.election-modal-profile-trigger span{display:block;padding:10px}.election-modal-profile-trigger strong,.election-modal-profile-trigger small{display:block}.election-modal-profile-trigger strong{font-size:16px;line-height:1.2}.election-modal-profile-trigger small{font-size:13px;color:var(--e-red);margin-top:3px}.election-modal-profile-intro{display:grid;grid-template-columns:180px minmax(0,1fr);gap:22px;align-items:start}.election-modal-profile-intro img{display:block;width:100%;height:auto;background:#eee}.election-modal-profile-intro h3{font-size:32px;line-height:1.1;margin:0 0 10px}.election-modal-profile-text{border-top:1px solid var(--e-line);margin:24px 0;padding-top:20px}.election-modal-profile-text h4{font-size:23px;margin:0 0 8px}.election-modal-profile .election-support{margin:24px 0 0}.election-modal-back{appearance:none;border:0;padding:0;background:transparent;color:var(--e-red);font:inherit;font-weight:600;cursor:pointer;margin-bottom:20px}.election-modal-gr-list{display:grid;gap:18px}.election-modal-gr-card{display:grid;grid-template-columns:minmax(180px,34%) minmax(0,1fr);gap:20px;align-items:start;border-top:1px solid var(--e-line);padding-top:18px}.election-modal-gr-card img{display:block;width:100%;height:auto;background:#eee}.election-modal-gr-card h3{margin:-.37em 0 8px;font-size:24px}.election-modal-gr-card p{margin:0 0 14px}.election-modal-gr-card p+p{margin-top:-4px}.election-modal-gr-card .election-button{display:inline-flex}.election-modal-open{overflow:hidden}

@media(max-width:900px){.election-preview-portraits{grid-template-columns:repeat(5,minmax(0,1fr))}.election-gr-preview{grid-template-columns:1fr}.election-modal-profile-grid{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media(max-width:640px){.election-preview-portraits{grid-template-columns:repeat(4,minmax(0,1fr));gap:8px}.election-preview-portrait span{font-size:11px}.election-preview-trio{gap:8px}.election-preview-trio-card strong{font-size:13px}.election-preview-trio-card span{font-size:11px}.election-modal{width:calc(100% - 18px);max-height:96vh;padding:20px 16px}.election-modal-profile-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.election-modal-profile-intro{grid-template-columns:110px minmax(0,1fr);gap:14px}.election-modal-profile-intro h3{font-size:25px}.election-modal-gr-card{grid-template-columns:120px minmax(0,1fr);gap:12px;align-items:start}.election-modal-gr-card h3{font-size:21px}.election-modal-gr-card p{font-size:14px;line-height:1.45}.election-modal-gr-card .election-button{font-size:14px;padding:8px 10px}}
/* Öffentliche Profilangaben aus der Kandidierenden-Seite: derselbe klare
   SP-Thun-Rhythmus wie Buttons, Karten und Supportbereich. */
.election-profile-facts{display:grid;grid-template-columns:auto minmax(0,1fr);gap:4px 14px;margin:22px 0 24px;font-size:15px}
.election-profile-facts dt{color:#666;font-weight:600}.election-profile-facts dd{margin:0}
.election-memberships{margin:0 0 30px;padding:22px 24px;background:var(--e-soft);border-top:3px solid var(--e-red)}
.election-memberships h3{margin:0 0 10px;font-size:21px}.election-memberships ul{columns:2;column-gap:34px;margin:0;padding-left:20px}.election-memberships li{break-inside:avoid;margin:0 0 3px;font-size:15px}
.election-support{box-shadow:0 10px 30px rgba(36,36,36,.06)}.election-support .election-eyebrow{margin-bottom:5px}.election-support>p:not(.election-eyebrow){max-width:760px;margin:0 0 22px}.election-support-form button,.election-confirm{min-height:48px;padding-inline:22px;cursor:pointer}.election-support-links{font-size:15px}
.election-modal-profile .election-memberships{margin-bottom:24px}
@media(max-width:640px){.election-memberships{padding:18px}.election-memberships ul{columns:1}.election-profile-facts{font-size:14px;margin-bottom:18px}}

/* Transparenter Einwilligungsfluss und öffentliche Unterstützer:innenlisten. */
.election-body [hidden]{display:none!important}
.election-field-heading{display:flex;align-items:baseline;justify-content:space-between;gap:6px 12px;min-width:0}.election-field-note{margin-left:auto;color:#666;font-size:13px;font-weight:400;line-height:1.2;text-align:right}
.election-consent{line-height:1.45}.election-consent input{vertical-align:top;margin-top:4px}.election-consent span{font-weight:400}
.election-communication-notice{grid-column:1/-1;margin:0;padding:14px 16px;background:#fff;border-left:3px solid var(--e-red);font-size:14px;line-height:1.5}
.election-support-privacy{font-size:13px;line-height:1.5;color:#555}.election-support-privacy a{color:var(--e-red);font-weight:600}.election-inline-link{appearance:none;display:inline;border:0;padding:0;background:transparent;color:var(--e-red);font:inherit;font-weight:600;text-align:left;text-decoration:underline;cursor:pointer}.election-inline-link.election-text-link{text-decoration:none}
.election-supporters{margin:42px 0;padding:30px;border:1px solid var(--e-line);border-top:4px solid var(--e-red);background:#fff}
.election-supporters h2{margin:0 0 10px;font-size:30px;line-height:1.2}.election-supporters>p{max-width:800px}
.election-supporters-count{font-weight:600;color:var(--e-red);margin:18px 0 10px}
.election-supporters-list{display:block;list-style:none;padding:0;margin:0 0 18px;border:0;font-size:15px;line-height:1.7}
.election-supporters-list li{display:inline;padding:0;border:0;min-width:0}
.election-supporters-list li:not(:last-child)::after{content:" | ";color:#999;font-weight:400}.election-supporters-list strong{overflow-wrap:anywhere;font-weight:700}.election-supporters-list span{color:#555;text-align:initial;font-size:inherit}.election-supporters-list span:not(:empty)::before{content:", "}
.election-supporters-more{cursor:pointer}.election-supporters-error{color:#a20d18;font-weight:600}
.election-withdrawal{margin:34px 0;padding:24px;background:#fff5d9;border-top:4px solid #d99a00}.election-withdrawal h2{margin:0 0 8px;font-size:28px}.election-withdrawal-message{font-weight:600}
.election-supporters-page{padding-bottom:50px}.election-supporters-page>h1{font-size:clamp(40px,6vw,68px);line-height:1.05;margin:0 0 14px}
.election-privacy-page{padding-bottom:50px}.election-privacy-page>h1{font-size:clamp(36px,5vw,58px);line-height:1.08;margin:0 0 14px;max-width:900px}.election-privacy-content>section{max-width:900px;padding:24px 0;border-top:1px solid var(--e-line)}.election-privacy-content>section:first-of-type{margin-top:34px}.election-privacy-content h2{font-size:26px;margin:0 0 8px}.election-privacy-content section p{margin:0}.election-privacy-content a{color:var(--e-red);font-weight:600}.election-privacy-version{font-size:14px;color:#666}.election-privacy-modal{width:min(840px,calc(100% - 28px))}.election-supporters-modal .election-supporters{margin:26px 0 0}
.election-modal-profile .election-supporters{margin-top:24px;padding:22px}
.election-button:disabled{opacity:.6;cursor:wait}
@media(max-width:640px){.election-communication-notice{grid-column:auto}.election-supporters{padding:22px 18px}.election-supporters-list{font-size:14px;line-height:1.65}}

/* Mobile Modals: lange deutsche Bezeichnungen und Formulare dürfen die
   Dialogbreite im WordPress-Embed nicht über ihre Grid-/Flex-Mindestbreite
   hinaus vergrössern. */
@media(max-width:640px){.election-modal{max-width:calc(100vw - 18px);overflow-x:hidden}.election-modal-header>div,.election-modal-detail,.election-modal-profile,.election-modal-profile-intro>div,.election-modal-gr-card>div,.election-support,.election-support-form,.election-profile-facts,.election-profile-facts dd{min-width:0;max-width:100%}.election-modal-header h2,.election-modal-profile-intro,.election-modal-profile-intro h3,.election-modal-profile-intro p,.election-profile-facts dd,.election-modal-gr-card h3,.election-modal-gr-card p,.election-modal .election-button{overflow-wrap:anywhere;hyphens:auto}.election-modal-close{flex:0 0 40px}.election-modal .election-support-form{width:100%;grid-template-columns:minmax(0,1fr)}.election-modal .election-support-form label,.election-modal .election-support-form input{min-width:0;max-width:100%}.election-modal .election-support-form input{width:100%}.election-modal .election-support-form input[type=checkbox]{width:auto}.election-modal .election-support-form button{width:100%;max-width:100%;white-space:normal;text-align:center}}
@media(max-width:640px){.election-modal-header{display:grid;grid-template-columns:minmax(0,1fr) 40px;gap:8px 12px}.election-modal-header>div{display:contents}.election-modal-header .election-eyebrow{grid-column:1;grid-row:1;align-self:center;margin:0}.election-modal-header h2{grid-column:1/-1;grid-row:2}.election-modal-header .election-modal-close{grid-column:2;grid-row:1}}
@media(max-width:640px){.election-privacy-modal .election-modal-header h2{font-size:24px;overflow-wrap:normal}}

/* Karten mit kürzeren Namen nicht innerhalb einer durch lange Namen höheren
   Grid-Zeile vertikal zentrieren: Alle Porträts beginnen bündig oben. */
.election-modal-profile-grid{align-items:start}.election-modal-profile-trigger{display:block}

/* Die im HTML hinterlegten Originalmasse verhindern Layout-Sprünge. Sobald
   die Breite responsiv wird, muss jedoch auch die Höhe neu aus dem jeweils
   vorgesehenen CSS-Seitenverhältnis berechnet werden. */
.election-profile-card img,.election-preview-portrait img,.election-preview-trio-card img,.election-gr-preview-feature img,.election-modal-profile-trigger img,.election-modal-profile-intro img,.election-modal-gr-card img,.election-profile-main-image,.lara-group-photo,.election-list-group-photo,.election-gr-feature img{height:auto}

/* Gleich hohe Startkarten und bündig ausgerichtete Aktionsschaltflächen. */
.election-rat-card{display:flex;flex-direction:column}.election-card-body{display:flex;flex:1;flex-direction:column}.election-card-body>.election-button{align-self:flex-start;margin-top:auto}

/* Seite 1 der Broschüre als ruhiges Kampagnenbanner. Die 20 einzeln
   beschnittenen Schriftzüge werden zentriert und fortlaufend überblendet. */
.election-card-visual{position:relative;display:block;width:100%;aspect-ratio:1440/686;overflow:hidden;background:#078b92}.election-card-visual>img{display:block;width:100%;height:100%;object-fit:cover}.election-campaign-banner>img{position:absolute}.election-campaign-banner-base{z-index:0;inset:0}.election-campaign-banner-handwriting{z-index:1;top:50%;left:50%;width:min(72%,620px)!important;height:auto!important;max-height:62%;object-fit:contain!important;transform:translate(-50%,-50%);opacity:0;animation:election-handwriting-cycle 120s linear infinite;animation-delay:var(--e-handwriting-delay)}@keyframes election-handwriting-cycle{0%{opacity:0}1.667%{opacity:1}5%{opacity:1}6.667%{opacity:0}100%{opacity:0}}@media(prefers-reduced-motion:reduce){.election-campaign-banner-handwriting{opacity:0;animation:none}.election-campaign-banner-handwriting-1{opacity:1}}
.election-card-visual.election-campaign-banner{aspect-ratio:3/2}

.election-all-candidates-consent{padding:16px;border-left:3px solid var(--e-red);background:#fff}.election-all-candidates-consent span{display:inline}

/* Laras Profil bleibt zweispaltig, verwendet aber die ruhige Typografie und
   die flachen Inhaltsflächen der regulären SP-Thun-Seiten. Rot markiert
   Aktionen und Labels, nicht dekorative Kartenkanten. */
.election-lara h1{color:var(--e-ink);font-weight:600;letter-spacing:-.025em}.election-lara .election-memberships,.election-lara .election-support{border-top:0;box-shadow:none}.election-lara .election-quote,.election-lara .election-communication-notice{border-left:0}.election-lara .election-supporters{border-top:1px solid var(--e-line)}.election-lara .election-all-candidates-consent{border-left:0;border:1px solid var(--e-line)}

/* Gruppenbild und SR-Kampagnenbanner belegen auf den beiden Einstiegskarten
   dieselbe 3:2-Bildhöhe. Das GR-Foto bleibt dabei vollständig sichtbar. */
.election-card-visual.election-group-photo{aspect-ratio:auto;overflow:visible;background:transparent}.election-card-visual.election-group-photo>img{height:auto;object-fit:contain;object-position:initial}

.election-lara-testimonials{margin:24px 0}.election-lara-testimonials>h4{font-size:23px;margin:0 0 14px}

/* Laras persönliche GR-Seite: Auf Desktop stehen Bild/Kurzbiografie,
   Positionen/Testimonials und Gruppenbild/Aufruf jeweils hälftig nebeneinander. */
.lara-short-bio{padding-top:70px}.lara-short-bio h2{font-size:30px;margin:0 0 18px}.lara-short-bio>p:not(.election-eyebrow){margin:0 0 14px}.lara-position-row{border-top:1px solid var(--e-line);padding-top:30px}.lara-position-row>section{min-width:0}.lara-position p{margin:0 0 18px}.lara-position-row .election-lara-testimonials{margin:0}.lara-position-row .election-lara-testimonials>h2{margin:0 0 18px}.lara-position-row .election-quote{margin-bottom:18px}.lara-gr-appeal .lara-gr-names{font-weight:600}.lara-gr-appeal .election-button{margin-top:4px}
@media(max-width:640px){.election-list-page-gemeinderat .election-profile-grid{grid-template-columns:1fr}.lara-short-bio{padding-top:0}.lara-position-row{padding-top:24px}}

/* Unterstützer:innen-Formular mit Opt-out: dezente Auswahl statt Pflichtzustimmung. */
.election-support{scroll-margin-top:84px}
.election-private-support{font-size:15px;color:#444}
.election-support-form>.election-support-privacy{grid-column:1/-1;margin:0}
.election-support>p.election-support-activities{margin:22px 0 0;font-size:15px;color:#444}
