/* BFV GB – Grundstil. Maße wie im alten Theme seoes (gemessen 02.11.2026: Schrift, Satzspiegel 1200/1170 px, Kopf 77 px). */

:root {
	--bfvgb-blau: #1d4e80;
	--bfvgb-blau-dunkel: #163c63;
	--bfvgb-text: #393939;
	--bfvgb-grau: #3e4a59;
	--bfvgb-gruen: #bfdeb4;
	--bfvgb-kante: 1120px; /* Kopf: Logo und Knopf bündig mit dem Inhalt der Startseite (.gbr-in) */
}

/* ===== Grundlage */
*, *::before, *::after { box-sizing: border-box; }
html { -webkit-text-size-adjust: 100%; }
body {
	margin: 0;
	background: #fff;
	color: var(--bfvgb-text);
	font: 400 17px/30px "Nunito Sans", sans-serif;
	-webkit-font-smoothing: antialiased;
	overflow-x: clip;
}
img, svg, video { max-width: 100%; height: auto; }
/* Fuß bei kurzen Seiten unten halten (wie im alten Theme) */
#site { display: flex; flex-direction: column; min-height: 100vh; }
#site-content { flex: 1 0 auto; }
a { color: #000; text-decoration: none; }
a:hover { color: var(--bfvgb-blau); }
h1, h2, h3, h4, h5, h6 { color: #000; font-family: "Open Sans", sans-serif; font-weight: 700; line-height: normal; margin: 0 0 .6em; }
h1 { font-size: 50px; }
h2 { font-size: 40px; margin: 30px 0; }
h3 { font-size: 30px; margin: 25px 0; }
h4 { font-size: 24px; }
h5, .h5 { font-size: 20px; }
h6 { font-size: 17px; }
h2:first-child, h3:first-child { margin-top: 0; }
@media (max-width: 767px) {
	h1 { font-size: 34px; }
	h2 { font-size: 28px; }
	h3 { font-size: 23px; }
}
p { margin: 0; }
ul, ol { margin: 0 0 1em; }
:focus-visible { outline: 2px solid var(--bfvgb-blau); outline-offset: 2px; }
input, select, textarea, button { font: inherit; }

.gb-sprung { position: absolute; left: -9999px; top: 8px; z-index: 1000; background: #fff; padding: 8px 14px; border-radius: 8px; }
.gb-sprung:focus { left: 8px; }

/* ===== Seitenrahmen wie seoes: #site-content (30 px oben) > main.container (1200 px, 15 px Rand) */
#site-content { position: relative; padding-top: 30px; background: #fff; }
.main-content.container { position: relative; max-width: 1200px; margin: 0 auto; padding: 0 15px; }
/* Breiten wie seoes (gemessen 02.11.2026): 1200 ab 1200 px, 992 ab 992, 768 ab 768, darunter volle Breite */
@media (max-width: 1199px) { .main-content.container { max-width: 992px; } }
@media (max-width: 991px) { .main-content.container { max-width: 768px; } }
@media (max-width: 767px) { .main-content.container { max-width: none; padding: 0 16px; } }
.gb-seite { padding-bottom: 40px; }

/* ===== Knöpfe (rb_button wie im alten Theme: blau, 5 px rund) */
a.rb_button, button.rb_button {
	display: inline-flex; align-items: center; justify-content: center; gap: 8px;
	background: var(--bfvgb-blau); color: #fff; border: 0; border-radius: 5px; box-shadow: none;
	font: 500 18px/1 "Nunito Sans", sans-serif; text-decoration: none; min-height: 45px; padding: 0 45px; cursor: pointer;
	transition: background-color .2s;
}
a.rb_button:hover, a.rb_button:focus-visible, button.rb_button:hover { background: var(--bfvgb-blau-dunkel); color: #fff; }
button.rb_button.print { background: #e4e4e4; color: var(--bfvgb-text); padding: 0 26px; min-height: 45px; margin: 10px 0; }
button.rb_button.print:hover { background: #d6d6d6; color: var(--bfvgb-text); }
.gb-knopfzeile { margin-top: 32px; }

/* ===== Kopf (Vorlagen 2386 Standard / 290458 Antrag) */
.gb-kopf { position: relative; z-index: 100; background: #fff; box-shadow: 0 0 16px rgba(16, 1, 148, .05); }
.gb-kopf-standard .gb-kopf { position: sticky; top: 0; }
.admin-bar.gb-kopf-standard .gb-kopf { top: 32px; }
@media (max-width: 782px) { .admin-bar.gb-kopf-standard .gb-kopf { top: 0; position: relative; } }
.gb-kopf__w { display: flex; align-items: center; justify-content: space-between; gap: 16px; min-height: 77px; max-width: var(--bfvgb-kante); margin: 0 auto; padding: 16px 20px; }
.gb-kopf #logo { position: relative; display: inline-block; line-height: 37px; white-space: nowrap; }
.gb-kopf #logo font.kg_logo { position: relative; display: inline-block; }
/* Symbol wie im alten Kopf 15 px vor der Logokante (dort lag es an der Spaltenkante); die Startseite rückt es per Seiten-CSS auf die Kante */
.gb-kopf #logo font.kg_logo::before { left: -15px; }
body.home .gb-kopf #logo font.kg_logo::before { left: 0; }
.gb-kopf__btn { height: 45px; padding: 0 45px; }
@media (max-width: 1199px) { .gb-kopf a.gb-kopf__btn { display: none; } }
.gb-kopf .gbn-siegel { display: flex; align-items: center; gap: 22px; }
.gb-kopf .gbn-siegel img { display: block; height: 44px; width: auto; }
@media (max-width: 680px) { .gb-kopf .gbn-siegel { gap: 12px; } .gb-kopf .gbn-siegel img { height: 34px; } }
@media (max-width: 767px) {
	.gb-kopf__w { min-height: 69px; padding: 13px 16px 13px 20px; }
	.gb-kopf .gbn-siegel { display: none; } /* wie bisher: am Handy nur das Logo */
}

/* ===== Fuß (Vorlage 1671) */
.gb-fuss { margin-top: 100px; background: #fff; box-shadow: 0 0 16px rgba(0, 0, 0, .04); font-size: 14px; line-height: 30px; color: var(--bfvgb-grau); }
.gb-fuss__w { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-around; gap: 4px 24px; max-width: 1200px; margin: 0 auto; padding: 12px 15px; }
.gb-fuss__h { margin: 0; }
.gb-fuss__n { display: flex; flex-wrap: wrap; justify-content: center; gap: 0 12px; }
.gb-fuss__n a { color: var(--bfvgb-grau); font-size: 14px; }
.gb-fuss__n a:hover { color: var(--bfvgb-blau); }
@media (max-width: 1199px) { .gb-fuss__h { display: none; } .gb-fuss__w { justify-content: center; } }
@media (max-width: 767px) { .gb-fuss__w { padding: 24px 16px; } }

/* ===== Raster der umgestellten WPBakery-Seiten (Zeile > Reihe > Spalte, Spaltenabstand 30 px wie vc_row) */
.gb-reihe { display: flex; flex-wrap: wrap; margin: 0 -15px; }
.gb-reihe--mitte { align-items: center; }
.gb-spalte { width: 100%; padding: 0 15px; min-width: 0; }
@media (min-width: 768px) {
	.gb-spalte--1-2 { width: 50%; }
	.gb-spalte--1-3 { width: 33.3333%; }
	.gb-spalte--2-3 { width: 66.6667%; }
	.gb-spalte--1-4 { width: 25%; }
	.gb-spalte--3-4 { width: 75%; }
	.gb-spalte--5-12 { width: 41.6667%; }
	.gb-spalte--7-12 { width: 58.3333%; }
	.gb-spalte--1-6 { width: 16.6667%; }
	.gb-spalte--5-6 { width: 83.3333%; }
}
.gb-band { margin-left: calc(50% - 50vw); margin-right: calc(50% - 50vw); }
.gb-band__w { max-width: 1200px; margin: 0 auto; padding: 0 15px; }
.gb-text { margin-bottom: 35px; }
.gb-text p:not(:last-child) { margin-bottom: 1.7em; }
.gb-text ul, .gb-text ol { padding-left: 25px; }
.gb-bild { margin-bottom: 35px; }
.gb-bild img { display: block; border-radius: 15px; }
.gb-bild--rechts img { margin-left: auto; }
.gb-bild--mitte img { margin: 0 auto; }
.support-formular a { color: var(--bfvgb-blau); }

/* Textmodul (rb_sc_text) */
.gb-textmodul { margin-bottom: 25px; }
.gb-textmodul--mitte { text-align: center; }
.gb-textmodul .rb_textmodule_title { color: var(--bfvgb-grau); font-weight: 400; line-height: 48px; margin: 0 0 25px; padding-bottom: 25px; position: relative; }
.gb-textmodul .rb_textmodule_title + .gb-strich { display: block; width: 55px; height: 3px; background: var(--bfvgb-blau); margin: -28px 0 54px; position: relative; }
.gb-textmodul .rb_textmodule_title + .gb-strich::after { content: ""; position: absolute; left: 62px; top: 0; width: 6px; height: 3px; background: var(--bfvgb-blau); }
.gb-textmodul--mitte .gb-strich { margin-left: auto !important; margin-right: auto !important; }
.gb-textmodul .rb_textmodule_content_wrapper p:not(:last-child) { margin-bottom: 1.2em; }
@media (max-width: 767px) { .gb-textmodul .rb_textmodule_title { font-size: 28px; line-height: 36px; } }

/* Hinweisbox (rb_sc_info_box): farbige Leiste links mit Zeichen, Rahmen 15 px rund */
.rb_info_box { position: relative; display: flex; align-items: center; background: #fff; border: 1px solid var(--bfvgb-gruen); border-radius: 15px; padding: 15px 15px 15px 0; margin-bottom: 30px; overflow: hidden; }
.rb_info_box .icon_wrapper { position: relative; align-self: stretch; flex: none; width: 70px; margin: -15px 25px -15px 0; background: var(--bfvgb-gruen); display: flex; align-items: center; justify-content: center; }
.rb_info_box .icon_wrapper i { display: block; width: 28px; height: 28px; background: #fff;
	-webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2.6' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M4 12.5l5 5L20 6.5'/%3E%3C/svg%3E") center/contain no-repeat;
	mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2.6' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M4 12.5l5 5L20 6.5'/%3E%3C/svg%3E") center/contain no-repeat; }
.rb_info_box .content_wrapper { min-width: 0; }
.rb_info_box .info_box_title { font: 700 20px/30px "Open Sans", sans-serif; margin: 0; color: var(--bfvgb-text); }
.rb_info_box .info_box_desc { margin: 0; }
.rb_info_box.error, .rb_info_box.warning { border-color: #f2b8b5; }
.rb_info_box.error .icon_wrapper { background: #ee6b6b; }
.rb_info_box.warning { border-color: #fcd88a; }
.rb_info_box.warning .icon_wrapper { background: #fcb92c; }
.rb_info_box.info { border-color: #b7cde3; }
.rb_info_box.info .icon_wrapper { background: #6f9cc9; }
.rb_info_box.error .icon_wrapper i, .rb_info_box.warning .icon_wrapper i, .rb_info_box.info .icon_wrapper i {
	-webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2.6' stroke-linecap='round'%3E%3Cpath d='M12 5v9M12 19h.01'/%3E%3C/svg%3E");
	mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2.6' stroke-linecap='round'%3E%3Cpath d='M12 5v9M12 19h.01'/%3E%3C/svg%3E"); }
@media (max-width: 480px) { .rb_info_box .icon_wrapper { width: 48px; margin-right: 16px; } }
.rb_image_module .main_image img { display: block; }

/* ===== Fenster der Antragsseite (Ersatz der Elementor-Popups) */
.gb-dialog { border: 0; border-radius: 7px; padding: 6%; background: #fff; color: var(--bfvgb-text); box-shadow: 0 10px 40px rgba(0, 0, 0, .25); max-height: 85vh; overflow: auto; }
.gb-dialog::backdrop { background: rgba(0, 0, 0, .6); }
.gb-dialog--klein { width: min(480px, 90vw); padding: 40px 32px 32px; text-align: center; }
.gb-dialog--gross { width: min(50vw, 900px); max-height: 80vh; }
@media (max-width: 1024px) { .gb-dialog--gross { width: 90vw; } }
html.gb-dialog-offen { overflow: hidden; }
.gb-dialog__zu { position: absolute; top: 12px; right: 12px; width: 36px; height: 36px; border: 0; border-radius: 50%; background: #f1f3f6; cursor: pointer; }
.gb-dialog__zu::before, .gb-dialog__zu::after { content: ""; position: absolute; left: 11px; top: 17px; width: 14px; height: 2px; background: var(--bfvgb-grau); transform: rotate(45deg); }
.gb-dialog__zu::after { transform: rotate(-45deg); }
.gb-dialog__warnung { font-size: 40px; line-height: 1; color: var(--bfvgb-blau); margin-bottom: 16px; }
.gb-dialog__t { font-size: 26px; margin: 0 0 12px; color: var(--bfvgb-blau); }
.gb-dialog__t--mitte { text-align: center; }
.gb-dialog__knoepfe { display: flex; flex-wrap: wrap; justify-content: center; gap: 12px; margin-top: 24px; }
.gb-dialog__knopf { border: 0; border-radius: 5px; background: var(--bfvgb-blau); color: #fff; font: 600 16px/1 "Nunito Sans", sans-serif; padding: 14px 22px; cursor: pointer; }
.gb-dialog__knopf:hover { background: var(--bfvgb-blau-dunkel); }
.gb-dialog__knopf--zweit { background: #fff; color: var(--bfvgb-blau); box-shadow: inset 0 0 0 2px var(--bfvgb-blau); }
.gb-dialog__knopf--zweit:hover { background: #f2f6fa; }
.gb-dialog__inhalt p { margin-bottom: 1em; }
.gb-dialog__inhalt table { width: 100%; border-collapse: collapse; font-size: 15px; line-height: 1.5; }
.gb-dialog__inhalt td { border-bottom: 1px solid #e5e8ec; padding: 8px 10px; vertical-align: top; }
.gb-dialog__inhalt td:first-child { font-weight: 700; width: 32%; }

/* ===== WooCommerce-Grundlagen */
.woocommerce-notices-wrapper:empty { display: none; }
.gb-shop .product .price { font-weight: 700; }
/* Kasse: bfv_main.css setzt den Fuß dort absolut an den Seitenboden (für seoes gedacht) – hier folgt er dem Inhalt */
body.woocommerce-checkout .rb_footer_template.gb-fuss { position: static !important; }
/* Kasse am Handy: Boxen 8 px vom Rand wie bisher (Seiten-CSS 2135 setzte das an .vc_column-inner, User 29.09.2026) */
@media (max-width: 767px) {
	html body.page-id-2135 .gb-reihe { margin-left: 0; margin-right: 0; }
	html body.page-id-2135 .gb-spalte { padding-left: 8px !important; padding-right: 8px !important; }
}

/* Fuß-Text immer in Fußfarbe (Startseiten-CSS färbt footer-Links sonst fast weiß, User 02.11.2026) */
.gb-fuss .gb-fuss__h, .gb-fuss .gb-fuss__n a { color: var(--bfvgb-grau) !important; }
.gb-fuss .gb-fuss__n a:hover { color: var(--bfvgb-blau) !important; }
/* Startseite: kein weißer Streifen zwischen Abschlussband und Fuß (User 02.11.2026) */
body.home .gb-fuss { margin-top: 0; }
/* Antragsseite: Rechtszeile bündig unter Formular und Fußnote statt an der Seitenkante (User 02.11.2026) */
html body.page-id-4611 .gba-recht { max-width: 780px; margin: 14px auto 0 !important; }
/* Antragsseite: Vorteile-Zeile über dem Formular mittig (User 02.11.2026) */
html body.page-id-4611 .gba-checks { justify-content: center; text-align: center; }

/* ===== Seiten aus Editor-Blöcken (Gutenberg): Bänder, Titel mit Strich, Knöpfe im Stil der Seite (Muster /produkte/, 02.11.2026) */
.page-content .alignfull { margin-left: calc(50% - 50vw); margin-right: calc(50% - 50vw); max-width: 100vw; width: auto; }
.gb-blk-band { padding: 80px 15px; }
.gb-blk-band > * { max-width: 1170px; margin-left: auto !important; margin-right: auto !important; }
.gb-blk-band--grau { background: #f7f7f7; }
.gb-blk-band .wp-block-columns { gap: 30px; margin: 0 auto; }
.gb-blk-titel { color: var(--bfvgb-grau); font-weight: 400; line-height: 1.2; margin: 0 0 22px; }
.gb-blk-titel strong { font-weight: 700; }
hr.gb-blk-strich { width: 55px; height: 3px; border: 0; background: var(--bfvgb-blau); opacity: 1; margin: 0 0 30px; }
hr.gb-blk-strich--mitte { margin-left: auto; margin-right: auto; }
.gb-blk-band p { margin: 0 0 1.2em; }
.gb-blk-rot { color: #f00; font-size: 20px; }
.gb-blk-bild img { display: block; border-radius: 15px; margin: 0 auto; }
.wp-block-button__link.wp-element-button { background: var(--bfvgb-blau); color: #fff; border-radius: 5px; font: 500 18px/1.2 "Nunito Sans", sans-serif; padding: 13px 45px; text-decoration: none; }
.wp-block-button__link.wp-element-button:hover { background: var(--bfvgb-blau-dunkel); color: #fff; }
@media (max-width: 767px) { .gb-blk-band { padding: 48px 16px; } .wp-block-button__link.wp-element-button { padding: 13px 24px; } }
/* Hinweisbox als Gruppen-Block (Löschseiten, Nachreichen, Kasse): Leiste mit Zeichen per ::before/::after statt .icon_wrapper */
.wp-block-group.gb-blk-hinweis { display: block; position: relative; padding: 15px 15px 15px 95px; min-height: 70px; }
.wp-block-group.gb-blk-hinweis::before { content: ""; position: absolute; left: 0; top: 0; bottom: 0; width: 70px; background: var(--bfvgb-gruen); }
.wp-block-group.gb-blk-hinweis::after { content: ""; position: absolute; left: 21px; top: 50%; width: 28px; height: 28px; margin-top: -14px; background: #fff;
	-webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2.6' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M4 12.5l5 5L20 6.5'/%3E%3C/svg%3E") center/contain no-repeat;
	mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2.6' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M4 12.5l5 5L20 6.5'/%3E%3C/svg%3E") center/contain no-repeat; }
.wp-block-group.gb-blk-hinweis.error::before { background: #ee6b6b; }
.wp-block-group.gb-blk-hinweis.warning::before { background: #fcb92c; }
.wp-block-group.gb-blk-hinweis.error::after, .wp-block-group.gb-blk-hinweis.warning::after {
	-webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2.6' stroke-linecap='round'%3E%3Cpath d='M12 5v9M12 19h.01'/%3E%3C/svg%3E");
	mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2.6' stroke-linecap='round'%3E%3Cpath d='M12 5v9M12 19h.01'/%3E%3C/svg%3E"); }
.gb-blk-hinweis > p { margin: 0 !important; }
@media (max-width: 480px) { .wp-block-group.gb-blk-hinweis { padding-left: 64px; } .wp-block-group.gb-blk-hinweis::before { width: 48px; } .wp-block-group.gb-blk-hinweis::after { left: 10px; } }
.gb-blk-loeschseite { padding: 5% 0; }
.gb-blk-loeschseite .support-formular { margin-bottom: 1.7em; }
.gb-blk-bild--rechts img { margin: 0 0 0 auto; }
.page-content .wp-block-columns { gap: 30px; }
.page-content .wp-block-image { margin: 0 0 1em; }
.page-content p.textBox + p.textBox { margin-top: 16px; }
.page-content .wp-block-buttons.gb-knopfzeile { margin-top: 32px; }
/* Startseite: Überzeile als Absatz-Block – nicht die Regeln für Fließtext im Kopf (.gbr-kopf p) erben */
.gbr .gbr-kopf p.gbr-ey { color: var(--b); margin-top: 0; }
.gbr .wp-block-group { box-sizing: border-box; }
.gbr .gbr-kopf p.gbr-ey { margin: 0 0 12px; }
/* Löschseiten: Abstände wie das alte Textmodul (Titel 48 px Zeile + 25 px Luft, Strich, 55 px bis zur Box) */
.gb-blk-loeschseite .gb-blk-titel { line-height: 48px; padding-bottom: 25px; margin-bottom: 0; }
.gb-blk-loeschseite hr.gb-blk-strich { margin: -28px 0 79px; }
.gb-blk-loeschseite .gb-blk-hinweis { margin-bottom: 62px; }
@media (max-width: 767px) { .gb-blk-loeschseite .gb-blk-titel { line-height: 36px; } }
/* Kasse am Handy: Boxen 8 px vom Rand (vorher an .gb-spalte) */
@media (max-width: 767px) { html body.page-id-2135 #zahlung.wp-block-group { padding-left: 8px !important; padding-right: 8px !important; } }
/* Rechtstexte und Nachreichen: Abstände wie vor der Umstellung auf Blöcke (gemessen 02.11.2026) */
/* ☠️ Ohne theme.json legt WordPress in jede Gruppe .wp-block-group__inner-container – deshalb keine „>“-Selektoren */
#impressum_container { padding-top: 29px; }
#impressum_container h1.wp-block-heading { margin-bottom: 35px; }
#upload_wpformsUploadForm { padding-top: 1px; } /* hält den Abstand des Kopfs (sonst fällt er mit dem Rand zusammen) */
