/* Contao-Brücke: passt das Markup von Contao 6 und der Module aus contao-gewerbeverein-bundle an das Design
   der Demo an. Reihenfolge im Layout: fonts.css, Phosphor, site.css, pages.css, contao.css. */

/* ---------- Grundlagen ---------- */
[hidden]{display:none!important}
.invisible{position:absolute!important;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}
.hp{display:none!important}
a.invisible:focus{position:fixed!important;left:16px;top:16px;z-index:100;width:auto;height:auto;margin:0;padding:10px 16px;clip:auto;border-radius:12px;background:var(--surface);box-shadow:var(--shadow)}
[id]{scroll-margin-top:96px}
main{display:block}
main:focus{outline:0}

/* ---------- Bereiche des Seitenlayouts ----------
   head/after: volle Breite (Seitenkopf, Karte); main: Artikel. Artikel sind randlos, Inhaltselemente ohne
   Abschnitt werden auf .wrap-Breite gesetzt. Für Hintergrund, Abstand und Spalten das Element
   „Abschnitt – Anfang/Ende“ verwenden. */
.mod_article{max-width:none;margin:0;padding:0}
/* Außenabstand statt Innenabstand, damit Karten und Kästen ihr eigenes Padding behalten */
.mod_article>:not(.gv-section):not(.page-head):not(.hero):not(.cta-band):not(.module-gv-member-reader):not(.module-gv-member-logos):not(.mod_newsreader:has(.gv-news)):not(.mod_eventreader:has(.gv-event)):not(.gv-login):not(.mod_lostPassword):not(.mod_changePassword):not(.mod_message){margin-inline:var(--pad-x)}
/* Seiten nur aus normalen Inhaltselementen (z. B. Impressum) bekommen oben und unten Luft */
main>.slot-main:not(:has(.gv-section,.hero,.module-gv-member-reader,.gv-news)){padding-block:64px 104px}
.slot-main .prose{padding-block:0}
.slot-after{display:flow-root}
.f-addr strong{font-weight:500;color:var(--ink)}
.slot-after .map{margin-block:0 104px}
/* Unterseiten: unter dem Seitenkopf ist der Inhalt weiß (wie in der Demo), auch ohne Abschnitt.
   Nicht auf der Startseite: Dort steht der Hero im Bereich „head“, der Inhalt bleibt sandfarben. */
.slot-head:not(:has(.hero))+.slot-main,.slot-head:not(:has(.hero))+.layout-sidebar{border-top:1px solid var(--line);background:var(--surface)}
.slot-head:not(:has(.hero))~.slot-after{background:var(--surface)}
.slot-head:not(:has(.hero))+.slot-main .gv-bg-sheet{border-color:transparent}

/* Layout mit Seitenspalte (page/layout/gewerbeverein_sidebar) */
.layout-sidebar{background:var(--surface)}
.layout-sidebar-grid{display:grid;grid-template-columns:.9fr 1.2fr;gap:64px;align-items:start;padding-block:72px 56px}
.layout-sidebar-grid>*{min-width:0}
.layout-sidebar .mod_article>*{margin-inline:0!important}
.slot-aside>.mod_article>*+*,.slot-aside>.mod_article+.mod_article{margin-top:20px}
/* Hauptspalte ohne Abschnitte: gleichmäßiger Abstand zwischen den Elementen, neues Thema (Text mit h2 am Anfang) mit mehr Luft */
.layout-sidebar .slot-main>.mod_article>*+*,.layout-sidebar .slot-main>.mod_article+.mod_article{margin-top:28px}
.layout-sidebar .slot-main>.mod_article>*+:is(.content-text:has(>h2:first-child),.content-headline,.gv-cta-card){margin-top:64px}
.layout-sidebar-right .layout-sidebar-grid{grid-template-columns:minmax(0,1.6fr) minmax(0,.8fr)}
.layout-sidebar-right .slot-aside{position:sticky;top:110px}

/* Seitenkopf: Navigationsmodul (Template nav_gv_tabs) als Reiter wie .area-tabs der Demo */
.gv-area-nav>nav,.gv-area-nav>.mod_navigation,.gv-area-nav>.mod_customnav{display:contents}
.gv-area-nav:not(:has(a:not(.invisible))){display:none}

/* ---------- Abschnitt (RSCE „Abschnitt – Anfang/Ende“) ---------- */
.gv-section{position:relative}
/* plain = Seitenhintergrund (Startseite sandfarben, Unterseiten unter dem Seitenkopf weiß); sand = immer sandfarben */
.gv-bg-sand{background:var(--bg)}
.gv-bg-sheet{background:var(--surface);border-top:1px solid var(--line);border-bottom:1px solid var(--line)}
.gv-bg-sheet+.gv-bg-sheet{border-top:0}
.gv-bg-dark{margin:0 var(--gutter);border-radius:var(--r-lg);background:var(--dark);color:#F3EEEA;overflow:hidden}
.gv-bg-dark .eyebrow{color:#B5AAA4}
.gv-bg-dark .muted{color:#A79C96}
.gv-bg-dark .btn-ghost{background:transparent;border-color:rgba(255,255,255,.22);color:#fff}
.gv-bg-dark .btn-ghost:hover{border-color:#fff}
.gv-space-large>.wrap{padding-block:104px}
.gv-bg-dark.gv-space-large>.wrap{padding-block:96px}
.gv-space-medium>.wrap{padding-block:56px}
.gv-bg-plain+.gv-bg-plain.gv-space-large>.wrap,.gv-bg-sand+.gv-bg-sand.gv-space-large>.wrap{padding-top:0}

.gv-space-small>.wrap{padding-block:104px 48px}
.gv-cols{display:grid;grid-template-columns:minmax(0,1fr)}
.gv-col{min-width:0}
.gv-col:empty{display:none}
.gv-col>*+*{margin-top:28px}
.gv-cols-aside{grid-template-columns:.8fr 1.6fr;gap:72px}
.gv-cols-aside>.gv-col:first-child{position:sticky;top:110px;align-self:start}
.gv-cols-halves{grid-template-columns:1fr 1fr;gap:72px;align-items:start}
.gv-cols-feature{grid-template-columns:1.35fr 1fr;gap:28px}
.gv-cols-feature>.gv-col:last-child{display:flex;flex-direction:column}
/* Kleine Nachrichtenliste neben dem großen Beitrag: ohne weitere Beiträge keinen Hinweis „keine Nachrichten“ zeigen */
.gv-col+.gv-col .mod_newslist>.empty{display:none}
.gv-section>.wrap>.sec-head+.gv-cols{margin-top:0}
/* Personen: zwei Spalten wie in der Demo; große Person halb breit, kleine beginnen darunter eine neue Zeile */
.gv-col:has(> .person,> .person-sm){display:grid;grid-template-columns:1fr 1fr;gap:32px}
.gv-col:has(> .person,> .person-sm)>*+*{margin-top:0}
.gv-col:has(> .person,> .person-sm)>:not(.person,.person-sm){grid-column:1/-1}
.gv-col>.person+.person-sm{grid-column:1}
.gv-text-columns .content-text .rte,.gv-text-columns .content-text>p:only-child{columns:2;column-gap:32px}
.gv-text-columns .content-text{font-size:1.0625rem;color:var(--ink-2)}
.gv-text-columns .content-text p+p{margin-top:16px}
.gv-text-columns .content-text p{break-inside:avoid}

/* Module, die in der Demo eigene Abstände haben, übernehmen im Abschnitt dessen Abstand */
/* Module mit eigenem Abstand aus der Demo: im Inhaltsbereich gilt dessen Abstand */
.slot-main .dir{padding-block:0}
.slot-main .pf{padding-block:0 40px}
/* Profilformular: Abstand zwischen den Abschnitten wie #pf der Demo (Contao-ID ist pf-<ID>) */
.pf>form{display:grid;gap:24px;grid-template-columns:minmax(0,1fr)}
.slot-main .gs{padding-block:0}
.gv-section .about-intro{padding-block:0}

/* ---------- Elemente (RSCE) ---------- */
.page-head-actions{display:flex;flex-wrap:wrap;gap:10px;margin-top:28px}
.serif-em,.gv-heading em{font-family:"Instrument Serif",Georgia,serif;font-style:italic;font-weight:400;color:var(--accent);letter-spacing:-.01em}
.gv-bg-dark .serif-em{color:inherit}
.gv-heading h2,.gv-heading h3{margin-top:14px}
.gv-heading-stack p.muted{margin-top:20px;max-width:44ch}
.gv-heading-stack .link-arrow,.gv-heading-stack .btn{margin-top:28px}
.gv-heading.sec-head{margin-bottom:48px}
.gv-card-title{font-size:1.25rem;letter-spacing:-.02em;margin-bottom:20px}
.gv-cta-card{display:flex;gap:18px;align-items:center;justify-content:space-between;flex-wrap:wrap}
.gv-cta-title{font-weight:500;font-size:1.0625rem}
.gv-cta-card p{font-size:.90625rem;margin-top:4px}
.gv-cta-actions{display:flex;gap:12px;flex-wrap:wrap}
.cta-band .btn-ghost{background:transparent;color:#fff;border-color:rgba(255,255,255,.25)}
.cta-band .btn-ghost:hover{border-color:#fff}
.gv-items-steps .steps-head{margin-top:0}
.gv-items+.gv-items{margin-top:40px}
.gv-items-benefits .benefits{margin-top:0}
.gv-col>.gv-heading+.gv-items{margin-top:32px}
.portrait figure,.portrait picture{display:contents}
.content-rsce-gv-map{display:block}

/* Fließtext aus Text-Elementen (z. B. Impressum, Datenschutz): Typografie wie .prose der Demo, ohne Extra-Klasse.
   Die Klasse prose funktioniert weiterhin. Direkt im Artikel (ohne Abschnitt) auf Lesebreite begrenzt. */
.mod_article>.content-text{max-width:760px}
.content-text h2{font-size:1.6rem;margin:48px 0 14px}
.content-text h3{font-size:1.15rem;margin:28px 0 8px;letter-spacing:-.01em}
.content-text h2:first-child,.content-text h3:first-child,.content-text .rte>:first-child,.prose h2:first-child{margin-top:0}
.content-text p,.content-text li{color:var(--ink-2)}
.content-text p+p{margin-top:12px}
.content-text address{font-style:normal;line-height:1.7;color:var(--ink-2)}
.content-text ul,.content-text ol,.prose ul,.prose ol{padding-left:1.2em;color:var(--ink-2)}
.content-text li+li,.prose li+li{margin-top:6px}
.content-text :is(ul,ol,address,table){margin-top:12px}
.gv-bg-dark .content-text :is(p,li,address,ul,ol){color:#D9D0CB}
.gv-bg-dark .content-text a:not(.btn):not(.link-arrow){color:#fff}
.content-text a:not(.btn):not(.link-arrow){color:var(--accent);text-decoration:underline;text-underline-offset:2px}
.content-headline{margin-bottom:14px}
.content-text+.content-text,.content-text+.content-headline{margin-top:24px}

/* ---------- Kopf und Fuß ---------- */
.site-footer .f-grid ul ul{display:none}
.site-footer .f-grid ul strong{font-weight:400;color:var(--accent)}
.site-footer .f-grid nav h2,.site-footer .f-grid nav>.invisible{display:none}
.f-member-text{font-size:.90625rem;color:var(--muted);line-height:1.55;max-width:30ch}
.f-member-btn{margin-top:16px;min-height:44px;padding:0 18px;font-size:.90625rem}
.f-member-btn:hover{border-color:var(--accent);color:var(--accent)}
.f-member-social{margin-top:32px!important}

/* ---------- Startseite ---------- */
.module-gv-trade-list .gw-grid{display:grid;grid-template-columns:1fr 1fr;gap:0 32px;margin:0;padding:0;list-style:none;border-top:1px solid var(--line)}
.module-gv-trade-list .gw-grid>li{min-width:0}
.module-gv-trade-list .gw-grid a{display:grid;grid-template-columns:44px 1fr auto 20px;align-items:center;gap:14px;padding:18px 12px;border-bottom:1px solid var(--line);border-radius:4px;transition:background .35s}
.module-gv-trade-list .gw-grid .ic{width:44px;height:44px;border-radius:12px;background:var(--bg);display:grid;place-items:center;font-size:1.375rem;color:var(--accent);transition:background .35s,color .35s}
.module-gv-trade-list .gw-grid .ic figure,.module-gv-trade-list .gw-grid .ic picture{display:contents}
.module-gv-trade-list .gw-grid .ic img{height:24px;width:auto;max-width:30px;object-fit:contain;transition:filter .4s}
.module-gv-trade-list .gw-grid .nm{font-weight:500;font-size:1.03125rem;letter-spacing:-.01em}
.module-gv-trade-list .gw-grid .ct{font-size:.84375rem;color:var(--muted);font-variant-numeric:tabular-nums}
.module-gv-trade-list .gw-grid .ar{color:var(--muted);transition:transform .45s var(--ease),color .3s}
.module-gv-trade-list .gw-grid a[href]:hover{background:var(--bg)}
.module-gv-trade-list .gw-grid a[href]:hover .ic{background:var(--accent);color:var(--on-accent)}
.module-gv-trade-list .gw-grid a[href]:hover .ic img{filter:brightness(0) invert(1)}
.module-gv-trade-list .gw-grid a[href]:hover .ar{transform:translateX(4px);color:var(--accent)}
.module-gv-trade-list .gw-grid a.free .nm{color:var(--muted)}
.module-gv-trade-list .gw-grid a.free .ic{background:transparent;border:1px dashed var(--line)}
.module-gv-trade-list .gw-grid a.free .ct{color:var(--accent);font-weight:500}
.module-gv-trade-list .gw-grid a.free:hover .ar{transform:rotate(90deg)}
.module-gv-trade-list .gw-grid li.hide{display:none}
.module-gv-trade-list>.link-arrow{margin-top:28px}
.module-gv-trade-list .gw-empty{grid-column:1/-1}

/* Aktuelles: Abschnitt „1. Element über volle Breite, danach breit + schmal“: Abschnittskopf,
   Nachrichtenliste (Template news_gv_feature, 1 Beitrag), Nachrichtenliste (news_gv_row, Versatz 1, 2 Beiträge) */
.gv-col>.mod_newslist{display:flex;flex-direction:column}
.mod_newslist .empty{color:var(--muted)}
.post .media picture{display:contents}
.post .media img{height:100%;opacity:1}
.post .media figure{display:contents}
.post .media.media-empty{display:grid;place-items:center}
.post .media.media-empty::after{content:"\e344";font-family:"Phosphor";font-size:1.625rem;color:var(--muted);opacity:.5}
/* Mitgliedernews auf der Detailseite eines Betriebs */
.md-news-list{margin-top:20px}
.md-news .post-row:first-child{padding-top:0}
.post-row .media{position:relative;overflow:hidden;aspect-ratio:16/10.5}
.post-row p.ex{font-size:.90625rem}
.post-row .meta{margin-top:10px}
.mod_newslist .pagination{margin-top:24px}

/* Termine: Abschnitt „dunkle Box“: Abschnittskopf, Eventliste mit Template event_gv */
.gv-bg-dark .mod_eventlist,.termine .mod_eventlist{border-top:1px solid var(--dark-line)}
.t-item .t-title a::after{content:"";position:absolute;inset:0}
.t-item{position:relative}
/* Mehrtägige Termine: „05–06“ kleiner, damit es in die Datumsspalte passt; Monat bricht bei Bedarf unter die Tage um */
.t-date-range{flex-wrap:wrap;row-gap:6px}
.t-date-range b{font-size:2.375rem;letter-spacing:-.03em}
.t-badge .is-next{display:none}
.mod_eventlist .t-item:first-of-type .t-badge{background:var(--accent);border-color:var(--accent);color:var(--on-accent)}
.mod_eventlist .t-item:first-of-type .t-badge::before{content:"";width:6px;height:6px;border-radius:50%;background:#fff;animation:breathe 2s ease-in-out infinite}
.mod_eventlist .t-item:first-of-type .t-badge .is-next{display:inline}
.mod_eventlist .t-item:first-of-type .t-badge .is-later{display:none}
.mod_eventlist .empty{padding:28px 8px;color:#A79C96}

/* Mitglieder-Laufband (Modul Mitglieder-Logos); site.js verdoppelt die Logos für eine nahtlose Schleife */
.module-gv-member-logos .track>a,.module-gv-member-logos .track>span{display:flex;align-items:center;justify-content:center;flex:none;min-width:240px;height:112px;padding:0 48px;border-right:1px solid var(--line)}
.module-gv-member-logos .track figure,.module-gv-member-logos .track picture{display:contents}
.module-gv-member-logos .track img{width:auto;height:auto;max-width:180px;max-height:46px;filter:grayscale(1) contrast(1.05);opacity:.7;transition:filter .5s var(--ease),opacity .5s var(--ease),transform .5s var(--ease)}
.module-gv-member-logos .track>:hover img{filter:none;opacity:1;transform:scale(1.04)}

/* Erfolgsmeldungen stehen in den Modulen ohne Formular, daher nicht als Overlay */
.module-gv-membership-application>.success,.module-gv-voucher-purchase>.success{position:relative;inset:auto;min-height:360px;border:1px solid var(--line)}

/* ---------- Seitenkopf und Inhalt der Detailseite (Modul Mitglied-Detailseite) ---------- */
.module-gv-member-reader>.page-head{padding-inline:var(--pad-x)}
.module-gv-member-reader>.page-head h1{max-width:22ch}
.module-gv-member-reader>.md-body{padding-inline:var(--pad-x);background:var(--surface);border-top:1px solid var(--line)}

/* ---------- News-Detailseite (Template news_full_gv) ---------- */
.mod_newsreader:has(.gv-news)>.back,.mod_eventreader:has(.gv-event)>.back{display:none}
.gv-news-head .crumbs a{display:inline-flex;align-items:center;gap:8px}
.gv-news-head .crumbs i{font-size:.875rem;opacity:1}
.gv-news-head h1{max-width:22ch}
.gv-news-head .tag-chip{padding:4px 12px}
.gv-news-head .meta{margin-top:24px}
.gv-news-body{display:grid;grid-template-columns:minmax(0,1fr) 320px;gap:56px;align-items:start;padding:56px var(--pad-x) 104px;background:var(--surface);border-top:1px solid var(--line)}
.gv-news-main{min-width:0;max-width:760px}
.gv-news-media{margin-bottom:36px;border-radius:var(--r-lg);overflow:hidden;background:var(--bg);aspect-ratio:16/10.5}
.gv-news-media figure,.gv-news-media picture{display:contents}
.gv-news-media img{display:block;width:100%;height:100%;object-fit:cover}
.gv-news-text{font-size:1.0625rem;line-height:1.7}
.gv-news-text .content-text p{color:var(--ink-2)}
.gv-news-text .content-text p+p{margin-top:16px}
.gv-news-text figure{margin:28px 0}
.gv-news-text figure img{display:block;width:auto;height:auto;max-width:100%;max-height:min(70vh,640px);border-radius:var(--r-md)}
.gv-news-text>*+*{margin-top:24px}
.gv-news-files{list-style:none;margin:32px 0 0;padding:0;display:grid;gap:10px}
.gv-news-files a{display:inline-flex;align-items:center;gap:10px;color:var(--accent);font-weight:500}
.gv-news-files .size{color:var(--muted);font-weight:400}
.gv-news-side{display:grid;gap:20px;position:sticky;top:104px}
.gv-news-side .card-soft{padding:28px}
.gv-news-back{margin-top:24px;width:100%;justify-content:center}
.gv-news-member{display:grid;justify-items:start;gap:10px}
.gv-news-member>small{font-size:.75rem;letter-spacing:.08em;text-transform:uppercase;color:var(--muted)}
.gv-news-member-logo{display:grid;place-items:center;width:100%;height:104px;padding:16px;border-radius:18px;background:var(--surface);border:1px solid var(--line)}
.gv-news-member-logo figure,.gv-news-member-logo picture{display:contents}
.gv-news-member-logo img{width:auto;height:auto;max-width:100%;max-height:64px;object-fit:contain}
.gv-news-member-logo .mono-tile{width:64px;height:64px;border-radius:14px;font-size:1.625rem}
.gv-news-member strong{font-size:1.125rem;font-weight:500}

/* ---------- Termin-Detailseite (Template event_full_gv), Aufbau wie die News-Detailseite ---------- */
.gv-event .meta{flex-wrap:wrap;row-gap:8px}
.gv-event-when{display:inline-flex;align-items:center;padding:3px 10px;border-radius:999px;background:var(--accent);color:#fff;font-size:.75rem;font-weight:500;letter-spacing:.02em}
.gv-event-when.is-past{background:var(--surface);color:var(--ink-2);border:1px solid var(--line)}
.gv-event-date{display:flex;align-items:baseline;flex-wrap:wrap;gap:4px 10px;padding-bottom:22px;margin-bottom:22px;border-bottom:1px solid var(--line)}
.gv-event-date b{font-size:3.5rem;font-weight:400;letter-spacing:-.04em;line-height:1;color:var(--accent);font-variant-numeric:tabular-nums}
.gv-event-date.is-range b{font-size:2.75rem}
.gv-event-date span{font-size:.8125rem;letter-spacing:.12em;text-transform:uppercase;color:var(--muted)}
.gv-event-actions{display:grid;gap:10px;margin-top:24px}
.gv-event-actions .btn{width:100%;justify-content:center}
.gv-event-empty{color:var(--muted)}
.page-head .tag-chip+h1{margin-top:16px}
.page-head h1+.tag-chip{margin-top:16px}
.tag-chip .dot figure,.tag-chip .dot picture{display:contents}
.md-card .actions{flex-wrap:nowrap}
.md-card .actions .btn-primary{flex:1;justify-content:center;min-width:0}
.actions .btn-icon{width:44px;padding:0;justify-content:center;flex:none}
.actions .btn-icon i{font-size:1.125rem}
.tag-chip .dot img{width:15px;height:15px;object-fit:contain}
.tag-chip.gv-voucher{background:#F1F8F3;color:#2F6B45}
.tag-chip.gv-voucher .dot{color:#3F8F5A}
/* Gutschein-Infoseite: teilnehmende Betriebe (frontend_module/gv_voucher_partners) */
.gv-partner-groups{columns:2 280px;column-gap:40px}
.gv-partner-group{break-inside:avoid;margin:0 0 28px}
.gv-partner-trade{display:flex;align-items:center;gap:8px;margin:0 0 4px;font-size:.78125rem;font-weight:500;letter-spacing:.12em;text-transform:uppercase;color:var(--muted)}
.gv-partner-trade span{min-width:20px;padding:0 6px;border-radius:999px;background:var(--accent-soft);color:var(--accent);font-size:.6875rem;letter-spacing:0;text-align:center;line-height:18px}
.gv-partner-list{list-style:none;margin:0;padding:0}
.gv-partner-list li{display:flex;align-items:baseline;justify-content:space-between;gap:12px;padding:9px 0;border-bottom:1px solid var(--line)}
.gv-partner-list :is(a,span){font-weight:500;line-height:1.35}
.gv-partner-list a{transition:color .2s}
.gv-partner-list a:hover{color:var(--accent)}
.gv-partner-list small{flex:none;font-size:.8125rem;color:var(--muted);text-align:right}
/* Gutschein-Infoseite: Verkaufsstellen (frontend_module/gv_voucher_salepoints) */
.gv-salepoints>:is(h2,h3,h4):first-child{font-size:1.25rem;letter-spacing:-.02em;margin:0 0 20px}
.gv-salepoint-list{list-style:none;margin:0;padding:0;display:grid;gap:16px}
.gv-salepoint-list li{display:grid;grid-template-columns:20px minmax(0,1fr);gap:12px;align-items:start}
.gv-salepoint-list i{color:var(--accent);font-size:1.125rem;margin-top:2px}
.gv-salepoint-list div{display:grid;gap:2px;font-size:.9375rem}
.gv-salepoint-list span,.gv-salepoint-list div>a{color:var(--muted)}
.gv-salepoint-actions{display:grid;gap:14px;margin-top:24px;padding-top:24px;border-top:1px solid var(--line)}
.gv-salepoint-actions .btn{width:100%}
.gv-salepoint-actions .link-arrow{margin-top:0;justify-self:start}
/* Gewerk ohne Symbol: Text nicht an den linken Rand (der Innenabstand ist für den Symbolpunkt gedacht) */
.tag-chip:not(:has(.dot)){padding-left:12px}
/* Mitgliederliste: Gewerk und Gutschein in einer Zeile */
.m-tags{display:flex;flex-wrap:wrap;gap:6px;margin-top:10px}
.m-tags .tag-chip{margin:0}
/* Detailseite: Öffnungsstatus und Gutschein als gleich gebaute Plaketten */
.md-badges{display:flex;flex-wrap:wrap;gap:8px;margin-top:22px}
.md-badges .open-badge{margin-top:0}
.open-badge.gv-voucher{color:#2F6B45;border-color:#CFE3D5;background:#F1F8F3}
.open-badge.gv-voucher::before{display:none}
.open-badge.gv-voucher i{font-size:1rem;color:#3F8F5A}
.md-card-logo figure,.md-card-logo picture,.m-logo figure,.m-logo picture,.logo-prev figure,.logo-prev picture{display:contents}
/* Contao setzt width/height am img; ohne auto verzerrt max-width/max-height das Seitenverhältnis */
.logo-prev img{width:auto;height:auto;object-fit:contain}
.md-section>h2{margin-top:12px}
.md-section>.link-arrow{margin-top:22px}

/* Galerie: figure statt a, mit Lightbox (site.js) */
.gallery>figure{position:relative;aspect-ratio:4/3;border-radius:var(--r-md);overflow:hidden;background:var(--bg-2)}
.gallery>figure>a{display:block;height:100%;aspect-ratio:auto;border-radius:0}
.gallery picture{display:contents}
.gallery img{width:100%;height:100%;object-fit:cover;opacity:1}
.gallery figure:hover img{transform:scale(1.05)}
.gallery figcaption{position:absolute;left:8px;right:8px;bottom:8px;padding:6px 10px;border-radius:10px;background:rgba(255,255,255,.88);font-size:.8125rem;color:var(--ink-2)}

.gv-lightbox{width:min(1100px,calc(100% - 32px));max-width:none;max-height:calc(100% - 32px);padding:0;border:0;border-radius:var(--r-md);background:transparent;overflow:visible}
.gv-lightbox::backdrop{background:rgba(30,25,24,.82);backdrop-filter:blur(4px);-webkit-backdrop-filter:blur(4px)}
.gv-lightbox img{display:block;width:auto;max-width:100%;max-height:calc(100vh - 64px);margin:0 auto;border-radius:var(--r-md)}
.gv-lightbox button{position:absolute;top:-6px;width:44px;height:44px;border:0;border-radius:50%;background:#fff;color:var(--ink);display:grid;place-items:center;font-size:1.25rem;cursor:pointer;box-shadow:var(--shadow)}
.gv-lightbox .lb-close{right:-6px}
.gv-lightbox .lb-prev,.gv-lightbox .lb-next{top:50%;margin-top:-22px}
.gv-lightbox .lb-prev{left:8px}
.gv-lightbox .lb-next{right:8px}

/* ---------- Mitgliederverzeichnis (Modul Mitgliederverzeichnis) ---------- */
.dir-search{position:relative}
.dir-search::before{content:"\e30c";font-family:"Phosphor"!important;font-size:1.1875rem;color:var(--muted)}
.gv-voucher-filter{margin-top:14px;width:100%;justify-content:flex-start;gap:8px;padding:9px 14px;font-size:.875rem;color:var(--ink-2)}
.gv-voucher-filter i{color:#3F8F5A;font-size:1.0625rem}
.gv-voucher-filter .ct{margin-left:auto;font-size:.78125rem;color:var(--muted);font-variant-numeric:tabular-nums}
.gv-voucher-filter.on{background:#F1F8F3;border-color:#CFE3D5;color:#2F6B45;font-weight:500}
.gw-filter a{width:100%;display:grid;grid-template-columns:34px 1fr auto;align-items:center;gap:12px;padding:7px 10px;border-radius:12px;font-size:.9375rem;color:var(--ink-2);transition:background .25s,color .25s}
.gw-filter a:hover{background:var(--bg)}
.gw-filter figure,.gw-filter picture{display:contents}
.gw-filter .ic img{height:20px;width:auto;max-width:24px;object-fit:contain}
.gw-filter a.on{background:var(--accent-soft);color:var(--accent-ink);font-weight:500}
.gw-filter a.on .ic{background:var(--accent);color:var(--on-accent)}
.gw-filter a.on .ic img{filter:brightness(0) invert(1)}
.az a,.az .disabled{display:inline-grid;place-items:center;min-width:34px;min-height:34px;padding:0 8px;border:1px solid var(--line);border-radius:10px;background:var(--surface);font-size:.875rem;font-weight:500;color:var(--ink-2);transition:background .2s,color .2s,border-color .2s}
.az a:hover{border-color:var(--ink-2)}
.az a.on{background:var(--ink);border-color:var(--ink);color:var(--on-ink)}
.az .disabled{opacity:.3}
.m-list{margin:0}
.m-row .m-name{margin:0}

/* ---------- Mitgliederbereich: gemeinsame Bausteine ---------- */
[class*="module-gv-"] .toast{position:relative;left:auto;top:auto;z-index:auto;max-width:none;margin:0 0 20px;transform:none;opacity:1;pointer-events:auto}
[class*="module-gv-"] .toast a{margin-left:auto}
.pf-note{display:flex;gap:12px;align-items:flex-start;padding:18px 20px;border:1px dashed #D3C9C2;border-radius:var(--r-md);background:var(--surface);color:var(--ink-2);max-width:72ch}
.pf-note::before{content:"\e2ce";font-family:"Phosphor"!important;font-size:1.25rem;line-height:1.3;color:var(--accent);flex:none}
:not(.field)>.err{display:flex}
/* .field input aus der Demo trifft sonst auch Checkboxen (Logo entfernen, Datenschutz-Zustimmung) */
.field input[type=checkbox],.field input[type=radio]{width:18px;height:18px;min-width:0;padding:0;border-radius:4px;box-shadow:none;appearance:auto;-webkit-appearance:auto;accent-color:var(--accent)}
.check input[type=checkbox]{width:20px;height:20px;margin:2px 0 0}
/* Felder nebeneinander oben ausrichten: ein zweizeiliger Hinweis darf das Nachbarfeld nicht strecken */
.two>.field{align-content:start}
/* nur lesbare Felder (Firmenname im Profil) */
.field input[readonly]{background:var(--bg-2);color:var(--muted);cursor:default;box-shadow:none}
.field input[readonly]:focus{border-color:var(--line);outline:2px solid var(--accent-soft);outline-offset:1px}

/* Mitgliedsantrag in zwei Schritten */
.gv-steps{display:flex;gap:8px;margin:0 0 4px;padding:0;list-style:none;font-size:.84375rem;color:var(--muted)}
.gv-steps li{display:flex;align-items:center;gap:8px}
.gv-steps li+li::before{content:"";width:28px;height:1px;background:var(--line);margin-right:4px}
.gv-steps span{width:24px;height:24px;border-radius:50%;display:grid;place-items:center;border:1px solid var(--line);background:var(--surface);font-size:.78125rem;font-weight:500}
.gv-steps .on{color:var(--ink);font-weight:500}
.gv-steps .on span{background:var(--accent);border-color:var(--accent);color:var(--on-accent)}
.gv-steps .done span{background:var(--accent-soft);border-color:transparent;color:var(--accent)}
.gv-app-summary{display:grid;grid-template-columns:auto 1fr auto;gap:12px;align-items:start;margin:0;padding:14px 16px;border:1px solid var(--line);border-radius:var(--r-sm);background:var(--surface);font-size:.90625rem;color:var(--ink-2)}
.gv-app-summary>i{font-size:1.25rem;color:var(--accent);margin-top:1px}
.gv-app-summary strong{color:var(--ink);font-weight:500}
.gv-app-summary button{padding:0;border:0;background:none;cursor:pointer;font:inherit;font-size:.84375rem;font-weight:500;display:inline-flex;gap:6px;align-items:center}
.gv-app-sec{display:grid;gap:16px;min-width:0;margin:0;padding:20px 0 0;border:0;border-top:1px solid var(--line)}
.gv-app-sec legend{padding:0 0 14px;font-size:1rem;font-weight:500;float:left;width:100%}
.gv-app-sec legend .opt{font-size:.8125rem;font-weight:400;color:var(--muted)}
.gv-application .field label.check{font-size:.90625rem;font-weight:400}
.pf-sec>.help,.pf-sec>p.help{margin:0;font-size:.8125rem;color:var(--muted)}
.module-gv-member-profile>.account,.module-gv-voucher-redeem>.account{margin:0 0 24px}
.drop .opt{font-weight:400;color:var(--muted);font-size:.8125rem}
.drop .file-name{font-size:.84375rem;color:var(--accent-ink);font-weight:500}

/* Profil: <meter> statt div */
meter.meter{display:block;width:100%;height:8px;border:0;border-radius:999px;background:var(--bg-2);overflow:hidden;-webkit-appearance:none;appearance:none}
meter.meter::-webkit-meter-bar{height:8px;border:0;border-radius:999px;background:var(--bg-2)}
meter.meter::-webkit-meter-optimum-value,meter.meter::-webkit-meter-suboptimum-value,meter.meter::-webkit-meter-even-less-good-value{border-radius:999px;background:linear-gradient(90deg,#B4485A,var(--accent))}
meter.meter::-moz-meter-bar{border-radius:999px;background:linear-gradient(90deg,#B4485A,var(--accent))}

/* Profil: Öffnungszeiten. Ohne JavaScript ist der zweite Zeitraum immer sichtbar,
   mit JavaScript blendet site.js ihn über „Mittagspause“ ein. */
.no-js .hslot.second{display:flex}
.hrow .hdel{flex:none}

/* Profil: Galerie-Vorschau mit Position und Entfernen */
.thumb{cursor:default}
.thumb figure,.thumb picture{display:contents}
.thumb img{transition:opacity .2s,filter .2s}
.thumb .sort,.thumb .del{position:absolute;bottom:8px;top:auto;display:inline-flex;align-items:center;gap:6px;width:auto;height:30px;padding:0 10px;border-radius:999px;background:rgba(255,255,255,.92);font-size:.78125rem;color:var(--ink-2);opacity:1;cursor:pointer}
.thumb .sort{left:8px}
.thumb .sort input{width:42px;height:22px;padding:0 4px;border:1px solid var(--line);border-radius:6px;background:#fff;font-size:.78125rem;text-align:center}
.thumb .del{right:8px;color:#B3261E}
.thumb .del input{margin:0;accent-color:#B3261E}
.thumb:has(.del input:checked) img{opacity:.35;filter:grayscale(1)}
.logo-edit .chip-reset input{margin:0;accent-color:#B3261E}
.logo-edit .chip-reset{margin-top:10px}

/* Profil: Speicherleiste, Text und Punkt erscheinen bei ungespeicherten Änderungen */
.module-gv-member-profile .savebar{padding:8px}
.module-gv-member-profile .savebar .sb-msg{display:none;align-items:center;gap:10px;padding-left:12px}
.module-gv-member-profile .savebar.dirty{padding-left:8px}
.module-gv-member-profile .savebar.dirty .sb-msg{display:inline-flex}

/* Mitgliedernews */
.module-gv-member-news{display:grid;gap:20px;max-width:760px}
.news-quota{color:var(--ink-2)}
.news-quota b{font-weight:500;color:var(--accent)}
.module-gv-member-news>h3{margin-top:24px;font-size:1.375rem;letter-spacing:-.02em}
.own-news{list-style:none;margin:0;padding:0;border-top:1px solid var(--line)}
.own-news li{display:flex;justify-content:space-between;gap:16px;flex-wrap:wrap;padding:14px 2px;border-bottom:1px solid var(--line)}
.own-news strong{font-weight:500}
.own-news small{color:var(--muted);font-size:.84375rem}
.own-news li.on{background:var(--accent-soft);border-radius:10px;padding-inline:12px}
.own-news small{display:block;margin-top:2px}
.own-news .st-online{color:#2F6B45}
.own-news .st-expired{color:var(--muted)}
.own-news .st-pending{color:#9A6B00}
.own-news-actions{display:flex;gap:16px;align-items:center;font-size:.875rem;font-weight:500}
.own-news-actions a{display:inline-flex;gap:6px;align-items:center}
.own-news-actions a:hover{color:var(--accent)}
.gv-news-current{display:flex;align-items:center;gap:16px;flex-wrap:wrap;margin-bottom:10px}
.gv-news-current figure,.gv-news-current picture{display:contents}
.gv-news-current img{width:auto;height:auto;max-width:160px;max-height:110px;border-radius:var(--r-sm);object-fit:cover}
.gv-news-current .chip-reset input{width:16px;height:16px;margin:0;accent-color:var(--accent)}

/* Gutscheine: Einlösen */
.account .till{display:flex;flex-wrap:wrap;align-items:center;gap:8px}
.account .till label{display:grid;gap:1px}
.till-auth{display:inline-flex;align-items:center;gap:6px}
.till-auth input{width:110px;min-height:32px;padding:0 12px;border:1px solid var(--line);border-radius:999px;background:var(--surface);font-size:.875rem;outline:0}
.till-auth input:focus{border-color:var(--accent)}
.account .gs-err{flex-basis:100%}

/* Gutscheine: Kassenzugänge */
.module-gv-voucher-tills{display:grid;gap:24px;max-width:860px}
.module-gv-voucher-tills .pf-sec form{display:grid;gap:20px}
.module-gv-voucher-tills .pf-sec form>.btn{justify-self:start}
.till-list{list-style:none;margin:0;padding:0;border-top:1px solid var(--line)}
.till-row{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:10px 16px;align-items:center;padding:16px 2px;border-bottom:1px solid var(--line)}
.till-row strong{font-weight:500}
.till-row.off strong{color:var(--muted)}
.till-row form{grid-column:1/-1;display:flex;flex-wrap:wrap;align-items:center;gap:8px}
.till-pin input[type=password]{width:140px;min-height:34px;padding:0 12px;border:1px solid var(--line);border-radius:999px;background:var(--bg);font-size:.875rem;outline:0}
.till-pin input[type=password]:focus{border-color:var(--accent);background:var(--surface)}
.till-pin .err{flex-basis:100%}

/* Gutscheine: Kauf, Guthabenabfrage, Freischalten */
.module-gv-voucher-activate{display:grid;gap:20px;max-width:760px}
.module-gv-voucher-purchase{display:grid;gap:20px}
.module-gv-voucher-purchase>:is(.success,.toast,.pf-note){max-width:760px}
.module-gv-voucher-balance{display:grid;gap:20px;max-width:640px}
.module-gv-voucher-balance>h2{margin-top:32px;font-size:clamp(1.5rem,2.2vw,2rem)}
.module-gv-voucher-balance .related{margin-top:0}
.module-gv-voucher-balance .related li>span{display:grid;grid-template-columns:64px 1fr;gap:16px;align-items:center;padding:14px 8px;border-bottom:1px solid var(--line)}
.module-gv-voucher-balance .gs-code .btn,.module-gv-voucher-activate .gs-code .btn{margin-top:30px}
.module-gv-voucher-activate>h3{margin-top:24px;font-size:1.375rem;letter-spacing:-.02em}
.module-gv-voucher-activate form.card>.btn{justify-self:start}
.module-gv-voucher-purchase .check{cursor:pointer}
/* Kauf: Schritte links, mitlaufende Bestellübersicht rechts; Anschrift und passende Texte blenden per :has() um */
.gv-buy{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,400px);gap:32px;align-items:start}
.gv-buy-steps{display:grid;gap:20px;counter-reset:gv-step;min-width:0}
.gv-step{display:grid;gap:20px;padding:32px;border:1px solid var(--line);border-radius:var(--r-lg);background:var(--surface)}
.gv-step header{display:flex;align-items:flex-start;gap:16px}
.gv-step header>div{flex:1;min-width:0}
.gv-step .n{width:34px;height:34px;flex:none;border-radius:50%;background:var(--accent-soft);color:var(--accent);display:grid;place-items:center;font-family:"Instrument Serif",serif;font-style:italic;font-size:1.125rem}
.gv-step .n::before{counter-increment:gv-step;content:counter(gv-step)}
.gv-step h2{font-size:1.375rem;letter-spacing:-.02em}
.gv-step header p{margin:4px 0 0;color:var(--muted);font-size:.90625rem}
.gv-step .field input,.gv-step .field select{background:var(--bg)}
.gv-step .field input:focus{background:var(--surface)}
.gv-values{display:flex;flex-wrap:wrap;gap:10px;border:0;margin:0;padding:0}
.gv-values legend{padding:0;margin-bottom:8px;font-size:.875rem;font-weight:500}
.gv-value{position:relative;cursor:pointer}
.gv-value input{position:absolute;opacity:0;pointer-events:none}
.gv-value span{display:block;min-width:96px;padding:12px 18px;border:1px solid var(--line);border-radius:999px;background:var(--bg);text-align:center;font-weight:500;font-variant-numeric:tabular-nums;transition:border-color .25s,background .25s,color .25s}
.gv-value input:checked+span{border-color:var(--accent);background:var(--accent);color:var(--on-accent)}
.gv-value input:focus-visible+span{box-shadow:0 0 0 4px var(--accent-soft)}
.gv-values .err{flex-basis:100%;display:none;align-items:center;gap:6px;font-size:.8125rem;color:#B3261E}
.gv-values.invalid .err{display:flex}
.gv-qty{display:grid;grid-template-columns:50px 96px 50px;width:max-content;border:1px solid var(--line);border-radius:var(--r-sm);background:var(--bg);overflow:hidden}
.gv-qty button{display:grid;place-items:center;border:0;background:none;cursor:pointer;font-size:1.125rem;color:var(--ink-2);transition:background .2s}
.gv-qty button:hover{background:var(--accent-soft);color:var(--accent)}
.gv-step .gv-qty input{min-height:50px;border:0;border-inline:1px solid var(--line);border-radius:0;text-align:center;font-weight:500;font-variant-numeric:tabular-nums;-moz-appearance:textfield}
.gv-qty input::-webkit-inner-spin-button,.gv-qty input::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}
.gv-step .gv-qty input:focus{box-shadow:none;background:var(--surface)}
.gv-choice{border:0;margin:0;padding:0;display:grid;gap:10px}
.gv-opt{display:grid;grid-template-columns:auto auto minmax(0,1fr) auto;align-items:center;gap:14px;padding:16px 18px;border:1px solid var(--line);border-radius:var(--r-md);background:var(--bg);cursor:pointer;transition:border-color .25s,box-shadow .25s,background .25s}
.gv-opt:hover{border-color:#CDBFB4}
.gv-opt:has(input:checked){border-color:var(--accent);box-shadow:0 0 0 1px var(--accent);background:var(--surface)}
.gv-opt input{width:20px;height:20px;margin:0;accent-color:var(--accent)}
.gv-opt>i{width:40px;height:40px;border-radius:12px;display:grid;place-items:center;background:var(--accent-soft);color:var(--accent);font-size:1.25rem}
.gv-opt strong{display:block;font-weight:600;color:var(--ink)}
.gv-opt small{display:block;font-size:.84375rem;color:var(--muted);line-height:1.4}
.gv-opt em{font-style:normal;font-size:.875rem;font-weight:500;color:var(--ink-2);white-space:nowrap;font-variant-numeric:tabular-nums}
.gv-choice .err{display:none;align-items:center;gap:6px;font-size:.8125rem;color:#B3261E}
.gv-choice.invalid .err{display:flex}
.gv-post-address{display:grid;gap:16px;padding-top:4px}
.gv-post-address>.help{font-size:.8125rem;color:var(--muted)}
.gv-zip-city{display:grid;grid-template-columns:140px minmax(0,1fr);gap:16px}
.gv-purchase-form:has(#gv-delivery-email:checked) :is(.gv-post-address,.gv-help-post),.gv-purchase-form:has(#gv-delivery-post:checked) .gv-help-email{display:none}
.gv-purchase-form:has(#gv-payment-paypal:checked) .gv-lbl-transfer,.gv-purchase-form:has(#gv-payment-transfer:checked) .gv-lbl-paypal{display:none}
.gv-buy-summary{position:sticky;top:110px;display:grid;gap:20px;padding:28px;border:1px solid var(--line);border-radius:var(--r-lg);background:var(--surface);box-shadow:var(--shadow);min-width:0}
.gv-buy-summary h3{font-size:1.25rem;letter-spacing:-.02em}
.gv-card-preview{position:relative;display:flex;flex-direction:column;justify-content:space-between;aspect-ratio:1.586;padding:20px 22px;border-radius:18px;background:radial-gradient(120% 140% at 100% 0%,#A3283A 0%,var(--accent) 45%,var(--accent-ink) 100%);color:#fff;overflow:hidden;isolation:isolate}
.gv-card-preview::before,.gv-card-preview::after{content:"";position:absolute;z-index:-1;border-radius:50%;border:1px solid rgba(255,255,255,.16)}
.gv-card-preview::before{width:78%;aspect-ratio:1;right:-26%;top:-48%}
.gv-card-preview::after{width:52%;aspect-ratio:1;right:-12%;top:-24%;background:rgba(255,255,255,.05)}
.gv-card-top{display:flex}
.gv-card-logo{display:inline-flex;padding:7px 12px;border-radius:10px;background:#fff;box-shadow:0 6px 16px -8px rgba(0,0,0,.35)}
.gv-card-logo img{display:block;width:auto;height:40px}
.gv-card-title{font-family:"Instrument Serif",serif;font-style:italic;font-size:2.25rem;line-height:1;letter-spacing:-.02em}
.gv-card-bottom{display:flex;align-items:flex-end;justify-content:space-between;gap:12px}
.gv-card-bottom strong{font-size:1.75rem;font-weight:500;letter-spacing:-.03em;line-height:1;font-variant-numeric:tabular-nums}
.gv-card-bottom .mono{font-size:.75rem;color:rgba(255,255,255,.7)}
.gv-sum{display:grid;gap:10px;margin:0}
.gv-sum>div{display:flex;justify-content:space-between;gap:16px;font-size:.9375rem;color:var(--ink-2)}
.gv-sum>div[hidden]{display:none}
.gv-sum dd{margin:0;font-variant-numeric:tabular-nums;white-space:nowrap}
.gv-sum .gv-sum-total{padding-top:12px;border-top:1px solid var(--line);font-size:1.125rem;font-weight:600;color:var(--ink)}
.gv-buy-summary .btn{justify-content:center;width:100%}
.gv-buy-pay{margin:-8px 0 0;font-size:.8125rem;color:var(--muted);text-align:center}
.gv-buy-facts{display:grid;gap:10px;margin:0;padding:16px 0 0;border-top:1px solid var(--line);list-style:none;font-size:.875rem;color:var(--ink-2)}
.gv-buy-facts li{display:flex;align-items:center;gap:10px}
.gv-buy-facts i{font-size:1.125rem;color:var(--accent)}
.gv-buy-cash{margin:0 -28px -28px;padding:18px 28px;border-top:1px solid var(--line);border-radius:0 0 var(--r-lg) var(--r-lg);background:var(--bg)}
.gv-buy-cash summary{display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:12px;cursor:pointer;list-style:none}
.gv-buy-cash summary::-webkit-details-marker{display:none}
.gv-buy-cash summary>i:first-child{width:36px;height:36px;border-radius:10px;display:grid;place-items:center;background:var(--accent-soft);color:var(--accent);font-size:1.125rem}
.gv-buy-cash summary strong{display:block;font-weight:600;font-size:.9375rem}
.gv-buy-cash summary small{display:block;font-size:.8125rem;color:var(--muted)}
.gv-buy-cash summary>i:last-child{color:var(--muted);transition:transform .25s var(--ease)}
.gv-buy-cash[open] summary>i:last-child{transform:rotate(180deg)}
.gv-buy-cash .gv-salepoint-list{margin-top:16px;gap:12px}
.gv-buy-summary:has(.gv-buy-cash[open]){max-height:calc(100vh - 130px);overflow-y:auto;overscroll-behavior:contain}
@media (max-width:1080px){
  .gv-buy{grid-template-columns:minmax(0,1fr)}
  .gv-buy-summary,.gv-buy-summary:has(.gv-buy-cash[open]){position:static;max-height:none;overflow:visible}
}
@media (max-width:767px){
  .gv-step,.gv-buy-summary{padding:20px}
  .gv-buy-cash{margin:0 -20px -20px;padding:16px 20px}
  .gv-opt{grid-template-columns:auto minmax(0,1fr) auto;gap:12px;padding:14px}
  .gv-opt>i{display:none}
  .gv-zip-city{grid-template-columns:110px minmax(0,1fr)}
}
.gv-bank{display:grid;grid-template-columns:auto minmax(0,1fr);gap:8px 20px;margin:4px 0;padding:18px 20px;border:1px solid var(--line);border-radius:var(--r-sm);background:var(--surface);text-align:left}
.gv-bank dt{font-size:.875rem;color:var(--muted)}
.gv-bank dd{margin:0;overflow-wrap:anywhere}

/* ---------- Contao-Formulare (Formulargenerator, Login, Passwort) ----------
   Am Formular-Element die CSS-Klasse „card“ setzen, an Feldern „w50“ für zwei Spalten. */
.card:not(form){background:var(--bg);border:1px solid var(--line);border-radius:var(--r-lg);padding:36px}
.card>form,.mod_login form{display:block}
.formbody{display:grid;grid-template-columns:1fr 1fr;gap:20px 16px}
.formbody>*{grid-column:1/-1;min-width:0}
.formbody>.w50{grid-column:auto}
.formbody>p.error{margin:0;padding:12px 16px;border-radius:12px;background:#FDF2F1;border:1px solid #F0C9C6;color:#8C1D18;font-size:.90625rem}
.widget{display:grid;gap:8px;align-content:start;min-width:0;margin:0}
.widget>label,.widget legend{padding:0;font-size:.875rem;font-weight:500}
.widget .mandatory{margin-left:2px;color:var(--accent)}
.widget input.text,.widget input[type=text],.widget input[type=email],.widget input[type=tel],.widget input[type=password],.widget input[type=number],.widget input[type=url],.widget input[type=date],.widget select{width:100%;min-width:0;min-height:50px;padding:0 16px;border:1px solid var(--line);border-radius:var(--r-sm);background:var(--surface);font-size:1rem;outline:0;transition:border-color .25s,box-shadow .25s;appearance:none;-webkit-appearance:none}
.widget select{padding-right:40px;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 256 256'%3E%3Cpath d='M213.66 101.66l-80 80a8 8 0 0 1-11.32 0l-80-80A8 8 0 0 1 53.66 90.34L128 164.69l74.34-74.35a8 8 0 0 1 11.32 11.32Z' fill='%236E6560'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 16px center}
.widget textarea{width:100%;min-height:150px;padding:14px 16px;border:1px solid var(--line);border-radius:var(--r-sm);background:var(--surface);font-size:1rem;resize:vertical;outline:0;transition:border-color .25s,box-shadow .25s}
.widget input:focus,.widget select:focus,.widget textarea:focus{border-color:var(--accent);box-shadow:0 0 0 4px var(--accent-soft)}
.widget p.help{margin:0;font-size:.8125rem;color:var(--muted)}
.widget p.error{margin:0;font-size:.8125rem;color:#B3261E}
.widget.error input,.widget.error select,.widget.error textarea{border-color:#B3261E}
.widget fieldset{min-width:0;margin:0;padding:0;border:0;display:grid;gap:8px}
.checkbox_container>span,.radio_container>span{display:grid;grid-template-columns:22px minmax(0,1fr);gap:12px;align-items:start;font-size:.90625rem;color:var(--ink-2);overflow-wrap:anywhere}
.checkbox_container input,.radio_container input{width:20px;height:20px;margin:2px 0 0;accent-color:var(--accent)}
.checkbox_container label a,.radio_container label a{color:var(--accent);text-decoration:underline;text-underline-offset:2px}
.widget-submit{margin-top:4px}
.widget-submit .submit,button.submit{display:inline-flex;align-items:center;justify-content:center;gap:10px;min-height:48px;padding:0 22px;border:1px solid transparent;border-radius:999px;background:var(--accent);color:var(--on-accent);font-weight:500;font-size:.9375rem;cursor:pointer;box-shadow:inset 0 1px 0 rgba(255,255,255,.14);transition:background .3s,transform .5s var(--ease)}
.widget-submit .submit:hover,button.submit:hover{background:var(--accent-ink)}
.widget-submit .submit:active{transform:scale(.98)}
.widget-explanation{font-size:.90625rem;color:var(--ink-2)}
.form-confirmation{padding:36px;border-radius:var(--r-lg);border:1px solid #CFE3D5;background:#F1F8F3;color:#2F6B45}
.mod_login{max-width:480px}
.mod_login .login_info{color:var(--ink-2)}
.mod_login.logout .formbody{grid-template-columns:1fr}

/* Login (Template mod_login_gv) sowie „Passwort vergessen“/„Neues Passwort“ als Karte */
/* Direkt im Artikel mittig; in einer Abschnitts-Spalte füllt die Karte die Spalte bis 480 px */
.mod_article>.gv-login,.mod_article>.mod_lostPassword,.mod_article>.mod_changePassword,.mod_article>.mod_message{width:calc(100% - 2 * var(--gutter));margin-inline:auto}
.gv-login,.mod_lostPassword,.mod_changePassword,.mod_message{max-width:480px;padding:36px;border:1px solid var(--line);border-radius:var(--r-lg);background:var(--surface);box-shadow:0 18px 40px -24px rgba(31,26,25,.18)}
/* Weiße Karte: Eingabefelder im Sand-Ton, beim Tippen weiß (wie im Profilformular) */
:is(.gv-login,.mod_lostPassword,.mod_changePassword) .widget input:not([type=checkbox]):not([type=radio]){background:var(--bg)}
:is(.gv-login,.mod_lostPassword,.mod_changePassword) .widget input:focus{background:var(--surface)}
.gv-login-head{display:flex;gap:16px;align-items:flex-start;margin-bottom:24px;padding-bottom:22px;border-bottom:1px solid var(--line)}
.gv-login-icon{width:46px;height:46px;flex:none;display:grid;place-items:center;border-radius:14px;background:var(--accent-soft);color:var(--accent);font-size:1.375rem}
.gv-login-head h2{font-size:1.375rem;letter-spacing:-.02em;line-height:1.2}
.gv-login-head p{margin-top:4px;color:var(--muted);font-size:.90625rem}
.gv-login .widget>label{display:flex;justify-content:space-between;align-items:baseline;gap:12px}
.gv-login-reset{font-size:.8125rem;font-weight:400;color:var(--accent)}
.gv-login-reset:hover{text-decoration:underline;text-underline-offset:2px}
.gv-login .widget-submit .submit,.mod_lostPassword .widget-submit .submit,.mod_changePassword .widget-submit .submit{width:100%}
.gv-login .widget-submit .submit i{font-size:1rem}
.gv-login-foot{margin-top:20px;padding-top:18px;border-top:1px solid var(--line);font-size:.84375rem;color:var(--muted)}
.gv-login .password-reset{display:none}
.mod_lostPassword>h2,.mod_changePassword>h2,.mod_lostPassword>h3,.mod_changePassword>h3{font-size:1.375rem;letter-spacing:-.02em;margin-bottom:20px}
.mod_lostPassword>p,.mod_changePassword>p{color:var(--ink-2)}
.mod_lostPassword .tl_confirm,.mod_lostPassword p.confirm,.mod_changePassword .tl_confirm,.mod_changePassword p.confirm{margin:0;padding:14px 16px;border-radius:12px;background:#F1F8F3;border:1px solid #CFE3D5;color:#2F6B45}
/* Contao-Hinweise der Passwort-Module (z. B. „Ungültiger oder abgelaufener Link“, „Neues Passwort gesetzt“) */
.mod_message p{margin:0;color:var(--ink-2)}
.mod_message p.error{padding:14px 16px;border-radius:12px;background:#FDF2F1;border:1px solid #F0C9C6;color:#8C1D18}
.mod_message p.confirm,.mod_message p.tl_confirm{padding:14px 16px;border-radius:12px;background:#F1F8F3;border:1px solid #CFE3D5;color:#2F6B45}

/* Seitennavigation */
.pagination ul{display:flex;flex-wrap:wrap;gap:4px;margin:0;padding:0;list-style:none}
.pagination a,.pagination strong{display:inline-grid;place-items:center;min-width:38px;min-height:38px;padding:0 10px;border:1px solid var(--line);border-radius:10px;background:var(--surface);font-size:.875rem;font-weight:500}
.pagination strong{background:var(--ink);border-color:var(--ink);color:var(--on-ink)}
.pagination p{margin-bottom:8px;font-size:.84375rem;color:var(--muted)}

/* ---------- Responsive ---------- */
@media (max-width:1080px){
  .gv-cols-aside,.gv-cols-halves,.layout-sidebar-grid,.layout-sidebar-right .layout-sidebar-grid{grid-template-columns:minmax(0,1fr);gap:48px}
  .layout-sidebar-right .slot-aside{position:static}
  .layout-sidebar .slot-main>.mod_article>*+:is(.content-text:has(>h2:first-child),.content-headline,.gv-cta-card){margin-top:48px}
  .gv-cols-feature{grid-template-columns:minmax(0,1fr);gap:28px}
  .gv-cols-aside>.gv-col:first-child{position:static}
  .gw-filter a{grid-template-columns:28px auto auto;padding:5px 12px 5px 5px;border:1px solid var(--line);border-radius:999px;white-space:nowrap;background:var(--surface)}
  .gw-filter a .ic{width:28px;height:28px;border-radius:50%}
  .gw-filter .ic img{height:16px;max-width:20px}
  .gv-voucher-filter{width:auto}
}
@media (max-width:767px){
  .gv-space-large>.wrap{padding-block:56px}
  .gv-bg-dark.gv-space-large>.wrap{padding-block:64px}
  .gv-space-medium>.wrap{padding-block:40px}
  .gv-space-small>.wrap{padding-block:72px 32px}
  .gv-col:has(> .person,> .person-sm){grid-template-columns:1fr}
  .gv-news-body{grid-template-columns:minmax(0,1fr);gap:40px;padding-block:40px 72px}
  .gv-news-side{position:static}
  .gv-login,.mod_lostPassword,.mod_changePassword,.mod_message{padding:24px}
  .gv-app-summary{grid-template-columns:auto 1fr}
  .gv-app-summary button{grid-column:2}
  .layout-sidebar-grid{padding-block:48px 40px}
  .gv-text-columns .content-text .rte,.gv-text-columns .content-text>p:only-child{columns:1}
  .slot-after .map{margin-bottom:72px}
  .module-gv-trade-list .gw-grid{grid-template-columns:1fr}
  .az a,.az .disabled{flex:none}
  .module-gv-member-logos .track>a,.module-gv-member-logos .track>span{min-width:180px;height:92px;padding:0 28px}
  .module-gv-member-logos .track img{max-width:140px;max-height:38px}
  .formbody{grid-template-columns:1fr}
  .formbody>.w50{grid-column:1/-1}
  .card:not(form){padding:24px}
  .till-row{grid-template-columns:minmax(0,1fr) auto}
  .module-gv-member-profile .savebar.dirty .sb-msg{font-size:.8125rem;white-space:normal}
  .module-gv-member-profile .savebar:not(.dirty){left:auto}
}
@media print{
  .nav,.site-footer,.savebar,.actions,.md-edit{display:none!important}
  .js .reveal{opacity:1;transform:none}
}
