/*
Theme Name: BDS Römerberg-Speyer Block
Theme URI: https://newsite.bds-roemerberg-speyer.com/
Author: Bund der Selbständigen Römerberg-Speyer e.V.
Description: Schlankes, responsives Block-Theme für den BDS Römerberg-Speyer e.V.
Version: 1.4.3
Requires at least: 6.7
Requires PHP: 8.0
Text Domain: bds-roemerberg-block
*/

:root {
  --bds-green: #009a63;
  --bds-green-dark: #06734f;
  --bds-charcoal: #202522;
  --bds-offwhite: #f7f7f3;
  --bds-sage: #e7f0eb;
  --bds-border: #d9e2dc;
  --bds-shadow: 0 20px 55px rgba(22, 42, 31, 0.10);
}

html { scroll-behavior: smooth; }
body { text-rendering: optimizeLegibility; }
a { text-underline-offset: .18em; }
a:focus-visible,
button:focus-visible,
input:focus-visible,
textarea:focus-visible,
select:focus-visible,
[tabindex]:focus-visible {
  outline: 3px solid var(--bds-green-dark);
  outline-offset: 3px;
}
.wp-site-blocks { overflow: hidden; }

.bds-site-header {
  position: sticky;
  top: 0;
  z-index: 50;
  border-bottom: 1px solid rgba(32, 37, 34, .08);
  backdrop-filter: blur(14px);
  background: rgba(255, 255, 255, .94);
}

.admin-bar .bds-site-header { top: 32px; }
.bds-brand .wp-block-site-title,
.bds-brand-name { margin: 0; line-height: 1.05; font-weight: 780; letter-spacing: -.02em; }
.bds-brand-name a { color: var(--bds-charcoal); text-decoration: none; }
.bds-brand .wp-block-site-tagline { margin-top: .2rem; }
.bds-site-header .wp-block-navigation-item__content { text-decoration: none; }
.bds-site-header .wp-block-navigation-item__content:hover { color: var(--bds-green-dark); }

.bds-hero {
  position: relative;
  isolation: isolate;
  overflow: hidden;
  background:
    radial-gradient(circle at 85% 18%, rgba(0,154,99,.18), transparent 28%),
    linear-gradient(135deg, #f7f7f3 0%, #eef5f1 56%, #ffffff 100%);
}
.bds-hero::after {
  content: "";
  position: absolute;
  z-index: -1;
  width: 30rem;
  height: 30rem;
  right: -12rem;
  bottom: -18rem;
  border: 4rem solid rgba(0,154,99,.07);
  border-radius: 50%;
}
.bds-eyebrow {
  letter-spacing: .14em;
  text-transform: uppercase;
  font-size: .78rem;
  font-weight: 750;
  color: var(--bds-green-dark);
}
.bds-lead { font-size: clamp(1.1rem, 1.6vw, 1.35rem); line-height: 1.65; }
.bds-section-title { max-width: 18ch; }

.bds-card {
  height: 100%;
  border: 1px solid var(--bds-border);
  border-radius: 1.1rem;
  background: #fff;
  box-shadow: 0 1px 0 rgba(32,37,34,.03);
  transition: transform .2s ease, box-shadow .2s ease, border-color .2s ease;
}
.bds-card:hover {
  transform: translateY(-4px);
  border-color: rgba(0,154,99,.38);
  box-shadow: var(--bds-shadow);
}
.bds-number {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 2.5rem;
  height: 2.5rem;
  border-radius: 999px;
  color: #fff;
  background: var(--bds-green-dark);
  font-weight: 750;
}
.bds-band {
  border-radius: 1.4rem;
  background: var(--bds-charcoal);
  color: #fff;
}
.bds-band a:not(.wp-block-button__link) { color: #fff; }
.bds-note {
  border-left: 4px solid var(--bds-green);
  background: var(--bds-sage);
  padding: 1rem 1.2rem;
  border-radius: 0 .65rem .65rem 0;
}
.bds-internal-placeholder {
  border-left: 4px solid #9a6a00;
  background: #fff7d6;
  color: #4f3900;
  padding: 1rem 1.2rem;
  border-radius: 0 .65rem .65rem 0;
}

.bds-post-grid .wp-block-post,
.bds-event-card {
  border: 1px solid var(--bds-border);
  border-radius: 1rem;
  padding: clamp(1.25rem, 2vw, 1.8rem);
  background: #fff;
}
.bds-events { display: grid; gap: 1rem; }
.bds-post-grid .wp-block-post-title a { text-decoration: none; }
.bds-post-grid .wp-block-post-title a:hover { color: var(--bds-green-dark); }

.bds-form { display: grid; gap: 1.15rem; }
.bds-form-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 1.15rem; }
.bds-form label { display: block; font-weight: 650; margin-bottom: .4rem; }
.bds-form input:not([type="checkbox"]),
.bds-form textarea,
.bds-form select {
  width: 100%;
  box-sizing: border-box;
  border: 1px solid #b7c5bd;
  border-radius: .55rem;
  background: #fff;
  color: var(--bds-charcoal);
  padding: .82rem .9rem;
  font: inherit;
}
.bds-form input:focus,
.bds-form textarea:focus,
.bds-form select:focus {
  outline: 3px solid var(--bds-green-dark);
  outline-offset: 1px;
  border-color: var(--bds-green-dark);
}
.bds-form textarea { min-height: 10rem; resize: vertical; }
.bds-form-check { display: flex; gap: .7rem; align-items: flex-start; font-size: .95rem; }
.bds-form-check input { width: 1.25rem; height: 1.25rem; margin: .12rem 0 0; flex: 0 0 auto; accent-color: var(--bds-green-dark); }
.bds-form-hint { margin: 0; color: #4b554f; font-size: .92rem; }
.bds-form button {
  justify-self: start;
  border: 0;
  border-radius: 999px;
  background: var(--bds-green-dark);
  color: #fff;
  padding: .82rem 1.35rem;
  font: inherit;
  font-weight: 750;
  cursor: pointer;
}
.bds-form button:hover { background: #045a3d; }
.bds-hp { position: absolute !important; left: -9999px !important; }
.bds-form-error { padding: .9rem 1rem; border-radius: .55rem; background: #fff1f0; color: #842029; }

.bds-site-footer { border-top: 1px solid rgba(255,255,255,.14); }
.bds-site-footer a { color: #fff; }
.bds-site-footer .wp-block-navigation-item__content { text-decoration: none; }
.bds-site-footer a:focus-visible { outline-color: #fff; }

@media (max-width: 1100px) {
  .bds-site-header .wp-block-navigation__responsive-container:not(.is-menu-open) {
    display: none !important;
  }
  .bds-site-header .wp-block-navigation__responsive-container-open {
    display: flex !important;
  }
}

@media (max-width: 782px) {
  .admin-bar .bds-site-header { top: 46px; }
  .bds-form-grid { grid-template-columns: 1fr; }
  .bds-hero .wp-block-spacer { height: 28px !important; }
  .bds-site-header .wp-block-navigation__responsive-container.is-menu-open {
    padding: 1.5rem;
    background: var(--bds-offwhite);
    color: var(--bds-charcoal);
  }
}

@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  .bds-card { transition: none; }
}



/* Phase 9: gezielte visuelle Verfeinerung */
:root {
  --bds-shadow-soft: 0 14px 38px rgba(22, 42, 31, .09);
  --bds-shadow-hover: 0 22px 54px rgba(22, 42, 31, .13);
  --bds-page-gutter: clamp(1rem, 3vw, 2.5rem);
}
body { overflow-wrap: normal; word-break: normal; }
.bds-site-header { box-shadow: 0 8px 30px rgba(22, 42, 31, .055); }
.bds-site-header > .wp-block-group { min-height: 5.6rem; gap: clamp(1.5rem, 3vw, 3.5rem); }
.bds-brand { gap: clamp(.75rem, 1.4vw, 1.15rem); flex: 0 0 auto; }
.bds-brand .wp-block-site-logo,
.bds-brand .custom-logo-link { flex: 0 0 auto; line-height: 0; }
.bds-brand .custom-logo { width: clamp(5.7rem, 8vw, 7.2rem) !important; height: auto !important; }
.bds-brand-name { font-size: clamp(1.05rem, 1.5vw, 1.34rem) !important; white-space: normal; }
.bds-brand .wp-block-site-tagline { margin-bottom: 0; color: #4c5751; font-size: clamp(.72rem, 1vw, .86rem) !important; letter-spacing: .015em; }
.bds-site-header .wp-block-navigation__container { column-gap: .15rem; row-gap: .35rem; }
.bds-site-header .wp-block-navigation-item__content { padding: .62rem .68rem; border-radius: 999px; font-weight: 620; line-height: 1.1; transition: color .18s ease, background-color .18s ease, transform .18s ease; }
.bds-site-header .wp-block-navigation-item__content:hover { background: var(--bds-sage); }
.bds-site-header a[href$="/mitglied-werden/"] { padding: .72rem 1rem; background: var(--bds-green-dark); color: #fff; box-shadow: 0 8px 20px rgba(6, 115, 79, .18); }
.bds-site-header a[href$="/mitglied-werden/"]:hover { background: #045a3d; color: #fff; transform: translateY(-1px); }
body.page:not(.home) main#wp--skip-link--target { position: relative; isolation: isolate; padding-top: clamp(3.4rem, 6vw, 5rem) !important; padding-bottom: clamp(3.75rem, 7vw, 6rem) !important; }
body.page:not(.home) main#wp--skip-link--target::before { content: ""; position: absolute; z-index: -1; top: 0; left: 50%; width: 100vw; height: clamp(18rem, 28vw, 22rem); transform: translateX(-50%); background: radial-gradient(circle at 88% 10%, rgba(0, 154, 99, .13), transparent 24rem), linear-gradient(135deg, var(--bds-offwhite) 0%, #edf5f0 58%, #fff 100%); border-bottom: 1px solid rgba(6, 115, 79, .08); }
body.page:not(.home) .wp-block-post-title { max-width: 17ch; margin-bottom: clamp(1.25rem, 2.6vw, 2rem); font-size: clamp(2.45rem, 5vw, 4.35rem) !important; text-wrap: balance; }
body.page:not(.home) .entry-content > .bds-eyebrow:first-child { margin-top: 0; }
body.page:not(.home) .entry-content > .bds-lead { max-width: 66ch; margin-bottom: clamp(2rem, 4vw, 3.2rem); }
body.page:not(.home) .entry-content > .alignwide { width: min(1240px, calc(100vw - (2 * var(--bds-page-gutter)))); max-width: none; margin-right: 0; margin-left: 50%; transform: translateX(-50%); }
.bds-card,
.bds-post-grid .wp-block-post,
.bds-event-card { border-color: rgba(6, 115, 79, .18); border-radius: 1.25rem; box-shadow: var(--bds-shadow-soft); }
.bds-card { position: relative; min-width: 0; padding: clamp(1.55rem, 2.7vw, 2.2rem) !important; }
.bds-card:hover { box-shadow: var(--bds-shadow-hover); }
.bds-card h2,
.bds-card h3,
.bds-post-grid .wp-block-post-title,
.bds-event-card h2,
.bds-event-card h3 { font-size: clamp(1.35rem, 2.1vw, 1.9rem) !important; line-height: 1.12; overflow-wrap: normal; word-break: normal; hyphens: none; text-wrap: balance; }
.page-id-9 .entry-content > .wp-block-columns { align-items: stretch; gap: clamp(1rem, 2.2vw, 1.65rem); }
.page-id-9 .entry-content > .wp-block-columns > .wp-block-column { min-width: 0; }
.page-id-9 .bds-card { min-height: clamp(13.5rem, 21vw, 16rem); }
.page-id-9 .bds-card::before { display: block; margin-bottom: 1.15rem; color: var(--bds-green-dark); font-size: .78rem; font-weight: 800; letter-spacing: .15em; }
.page-id-9 .wp-block-column:nth-child(1) .bds-card::before { content: "01"; }
.page-id-9 .wp-block-column:nth-child(2) .bds-card::before { content: "02"; }
.page-id-9 .wp-block-column:nth-child(3) .bds-card::before { content: "03"; }
.bds-site-footer { padding-top: clamp(2.4rem, 4vw, 3.6rem) !important; padding-bottom: 1.35rem !important; }
.bds-site-footer > .wp-block-columns { align-items: start; gap: clamp(2rem, 5vw, 5rem); }
.bds-site-footer h2 { max-width: 34rem; margin-bottom: .65rem; font-size: clamp(1.2rem, 2vw, 1.55rem) !important; line-height: 1.2; }
.bds-site-footer h3 { margin-bottom: .75rem; font-size: 1rem !important; letter-spacing: .01em; }
.bds-site-footer p { margin-top: .55rem; margin-bottom: .55rem; line-height: 1.52; }
.bds-site-footer a { text-decoration: none; }
.bds-site-footer a:hover { text-decoration: underline; text-decoration-thickness: 1px; text-underline-offset: .22em; }
.bds-site-footer .wp-block-navigation__container { gap: .48rem; }
.bds-site-footer .wp-block-separator { margin-top: 1.6rem; margin-bottom: 1.1rem; }
.bds-site-footer > p:last-child { margin: 0; opacity: .78; }
@media (min-width: 783px) and (max-width: 1050px) {
  .page-id-9 .entry-content > .wp-block-columns { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .page-id-9 .entry-content > .wp-block-columns > .wp-block-column:last-child { grid-column: 1 / -1; }
  .page-id-9 .bds-card { min-height: 0; }
}
@media (max-width: 1100px) {
  .bds-site-header > .wp-block-group { min-height: 4.8rem; }
  .bds-site-header .wp-block-navigation__responsive-container.is-menu-open a[href$="/mitglied-werden/"] { display: inline-flex; align-self: flex-start; }
}
@media (max-width: 782px) {
  :root { --bds-page-gutter: clamp(1rem, 5vw, 1.5rem); }
  .bds-site-header > .wp-block-group { gap: .8rem; }
  .bds-brand { gap: .65rem; min-width: 0; }
  .bds-brand .custom-logo { width: clamp(4.1rem, 18vw, 5.1rem) !important; }
  .bds-brand-name { font-size: clamp(.94rem, 4vw, 1.08rem) !important; }
  .bds-brand .wp-block-site-tagline { font-size: clamp(.64rem, 2.7vw, .76rem) !important; }
  body.page:not(.home) main#wp--skip-link--target { padding-top: clamp(2.75rem, 10vw, 4rem) !important; padding-bottom: clamp(3rem, 10vw, 4.5rem) !important; }
  body.page:not(.home) main#wp--skip-link--target::before { height: clamp(17rem, 88vw, 21rem); }
  body.page:not(.home) .wp-block-post-title { font-size: clamp(2.15rem, 10vw, 3.1rem) !important; }
  .page-id-9 .entry-content > .wp-block-columns { gap: 1rem; }
  .page-id-9 .bds-card { min-height: 0; }
  .bds-site-footer > .wp-block-columns { gap: 1.7rem; }
}
@media (max-width: 430px) {
  .bds-site-header { backdrop-filter: blur(10px); }
  .bds-site-header > .wp-block-group { min-height: 4.45rem; }
  .bds-brand .custom-logo { width: 4rem !important; }
  .bds-brand-name { line-height: 1.12; }
}
	

/* Mobile Navigation: Overlay am Viewport statt am Blur-Header ausrichten */
@media (max-width: 1100px) {
  .bds-site-header { backdrop-filter: none; }
}
	
@media (max-width: 1100px) {
  .bds-site-header .wp-block-navigation__responsive-container.is-menu-open a[href$="/mitglied-werden/"] {
    padding: .72rem 1rem !important;
    color: #fff !important;
  }
}
	

/* Vorstand, Historie und Mitgliedsantrag */
.bds-board-section {
  margin-top: clamp(3.5rem, 7vw, 6rem) !important;
}
.bds-board-section > h2,
.bds-timeline-section > h2 {
  max-width: 18ch;
  font-size: clamp(2rem, 4vw, 3.25rem);
}
.bds-board-grid {
  align-items: stretch;
  gap: clamp(1.25rem, 3vw, 2rem);
  margin-top: clamp(1.5rem, 3vw, 2.25rem);
}
.bds-board-grid > .wp-block-column {
  display: flex;
  min-width: 0;
}
.bds-person-card {
  width: 100%;
  overflow: hidden;
  border: 1px solid rgba(6, 115, 79, .18);
  border-radius: 1.25rem;
  background: #fff;
  box-shadow: var(--bds-shadow-soft);
}
.bds-person-portrait {
  width: 100%;
  margin: 0;
  background: var(--bds-sage);
}
.bds-person-portrait img {
  display: block;
  width: 100%;
  aspect-ratio: 4 / 5;
  object-fit: cover;
  object-position: center center;
}
.bds-person-copy {
  padding: clamp(1.25rem, 2.8vw, 1.8rem);
}
.bds-person-copy h3 {
  margin-top: 0;
  margin-bottom: .38rem;
  font-size: clamp(1.35rem, 2.2vw, 1.85rem);
}
.bds-person-copy p {
  margin: 0;
  color: #4c5751;
  font-weight: 650;
}
.bds-board-note {
  margin-top: 1.25rem;
  padding: 1rem 1.2rem;
  border-left: 4px solid var(--bds-green);
  border-radius: 0 .7rem .7rem 0;
  background: var(--bds-sage);
}
.bds-timeline-section {
  margin-top: clamp(4rem, 8vw, 7rem) !important;
  margin-bottom: clamp(3.5rem, 7vw, 6rem) !important;
  padding: clamp(2rem, 5vw, 4.25rem);
  border: 1px solid rgba(6, 115, 79, .14);
  border-radius: 1.5rem;
  background: linear-gradient(135deg, var(--bds-offwhite), #edf5f0);
}
.bds-timeline-section > .bds-eyebrow {
  margin-top: 0;
}
.bds-timeline {
  position: relative;
  max-width: 58rem;
  margin-top: clamp(2rem, 4vw, 3rem);
  margin-right: auto;
  margin-left: auto;
}
.bds-timeline::before {
  content: "";
  position: absolute;
  top: .5rem;
  bottom: .5rem;
  left: .62rem;
  width: 2px;
  background: linear-gradient(var(--bds-green), rgba(0, 154, 99, .18));
}
.bds-timeline-item {
  position: relative;
  margin: 0;
  padding: 0 0 clamp(2rem, 4vw, 3rem) 3.25rem;
}
.bds-timeline-item:last-child {
  padding-bottom: 0;
}
.bds-timeline-item::before {
  content: "";
  position: absolute;
  top: .42rem;
  left: .16rem;
  width: .95rem;
  height: .95rem;
  border: .24rem solid #fff;
  border-radius: 50%;
  background: var(--bds-green-dark);
  box-shadow: 0 0 0 1px rgba(6, 115, 79, .22);
}
.bds-timeline-year {
  margin: 0 0 .35rem;
  color: var(--bds-green-dark);
  font-size: .78rem;
  font-weight: 820;
  letter-spacing: .13em;
  text-transform: uppercase;
}
.bds-timeline-copy h3 {
  margin-top: 0;
  margin-bottom: .65rem;
  font-size: clamp(1.3rem, 2.2vw, 1.75rem);
}
.bds-timeline-copy p {
  max-width: 68ch;
  margin-top: .55rem;
  margin-bottom: .55rem;
}
.bds-download-card {
  display: grid;
  grid-template-columns: minmax(0, 1.45fr) minmax(15rem, .55fr);
  gap: clamp(1.5rem, 4vw, 3rem);
  align-items: center;
  margin-top: clamp(2.5rem, 5vw, 4rem) !important;
  margin-bottom: clamp(3rem, 6vw, 5rem) !important;
  padding: clamp(1.6rem, 4vw, 3rem);
  border: 1px solid rgba(6, 115, 79, .18);
  border-radius: 1.4rem;
  background: linear-gradient(135deg, var(--bds-sage), #fff);
  box-shadow: var(--bds-shadow-soft);
}
.bds-download-copy > .bds-eyebrow {
  margin-top: 0;
}
.bds-download-copy h2 {
  margin-top: .4rem;
  font-size: clamp(1.8rem, 3.4vw, 2.75rem);
}
.bds-pdf-action {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: .75rem;
  padding: clamp(1.2rem, 2.5vw, 1.6rem);
  border: 1px solid rgba(32, 37, 34, .1);
  border-radius: 1rem;
  background: rgba(255, 255, 255, .88);
}
.bds-disabled-button {
  display: inline-flex;
  justify-content: center;
  width: 100%;
  box-sizing: border-box;
  padding: .82rem 1.15rem;
  border-radius: 999px;
  background: #d9e2dc;
  color: #4b554f;
  font-weight: 750;
  line-height: 1.25;
  text-align: center;
  cursor: not-allowed;
}
.bds-pdf-status {
  color: #4b554f;
  font-size: .88rem;
  line-height: 1.45;
}
@media (max-width: 782px) {
  .bds-board-grid {
    gap: 1.25rem;
  }
  .bds-timeline-section {
    padding: 1.5rem 1.15rem;
    border-radius: 1.1rem;
  }
  .bds-timeline-item {
    padding-left: 2.55rem;
  }
  .bds-download-card {
    grid-template-columns: 1fr;
  }
  .bds-pdf-action {
    align-items: stretch;
  }
}
	
/* Seitenauftakte ohne feste Hintergrundhöhe oder überlappende Inhaltskante. */
body.page:not(.home) main#wp--skip-link--target:has(> .bds-page-intro) { padding-top: 0 !important; }
body.page:not(.home) main#wp--skip-link--target:has(> .bds-page-intro)::before { display: none; }
.bds-page-intro { width: 100vw; max-width: none !important; margin: 0 0 0 calc(50% - 50vw) !important; box-sizing: border-box; padding: clamp(70px, 6vw, 96px) var(--bds-page-gutter); background: radial-gradient(circle at 88% 10%, rgba(0,154,99,.13), transparent 24rem), linear-gradient(135deg, var(--bds-offwhite), #edf5f0 58%, #fff); }
.bds-page-intro-inner { width: 100%; max-width: var(--wp--style--global--content-size, 760px); margin: 0 auto; }
body.page:not(.home) .bds-page-intro .wp-block-post-title { margin: 0; }
.bds-page-intro .bds-eyebrow { margin: 1.5rem 0 0; }
.bds-page-intro .bds-lead { margin: 1.25rem 0 0; max-width: 66ch; }
.bds-page-intro + .entry-content { margin-top: 48px !important; }
.bds-page-intro + .entry-content > :first-child { margin-top: 0 !important; }
@media (max-width: 782px) {
 .bds-page-intro { padding-top: 48px; padding-bottom: 48px; }
 .bds-page-intro + .entry-content { margin-top: 32px !important; }
}
		