*, ::before, ::after {
  --tw-border-spacing-x: 0;
  --tw-border-spacing-y: 0;
  --tw-translate-x: 0;
  --tw-translate-y: 0;
  --tw-rotate: 0;
  --tw-skew-x: 0;
  --tw-skew-y: 0;
  --tw-scale-x: 1;
  --tw-scale-y: 1;
  --tw-pan-x:  ;
  --tw-pan-y:  ;
  --tw-pinch-zoom:  ;
  --tw-scroll-snap-strictness: proximity;
  --tw-gradient-from-position:  ;
  --tw-gradient-via-position:  ;
  --tw-gradient-to-position:  ;
  --tw-ordinal:  ;
  --tw-slashed-zero:  ;
  --tw-numeric-figure:  ;
  --tw-numeric-spacing:  ;
  --tw-numeric-fraction:  ;
  --tw-ring-inset:  ;
  --tw-ring-offset-width: 0px;
  --tw-ring-offset-color: #fff;
  --tw-ring-color: rgb(59 130 246 / 0.5);
  --tw-ring-offset-shadow: 0 0 #0000;
  --tw-ring-shadow: 0 0 #0000;
  --tw-shadow: 0 0 #0000;
  --tw-shadow-colored: 0 0 #0000;
  --tw-blur:  ;
  --tw-brightness:  ;
  --tw-contrast:  ;
  --tw-grayscale:  ;
  --tw-hue-rotate:  ;
  --tw-invert:  ;
  --tw-saturate:  ;
  --tw-sepia:  ;
  --tw-drop-shadow:  ;
  --tw-backdrop-blur:  ;
  --tw-backdrop-brightness:  ;
  --tw-backdrop-contrast:  ;
  --tw-backdrop-grayscale:  ;
  --tw-backdrop-hue-rotate:  ;
  --tw-backdrop-invert:  ;
  --tw-backdrop-opacity:  ;
  --tw-backdrop-saturate:  ;
  --tw-backdrop-sepia:  ;
  --tw-contain-size:  ;
  --tw-contain-layout:  ;
  --tw-contain-paint:  ;
  --tw-contain-style:  ;
}

::backdrop {
  --tw-border-spacing-x: 0;
  --tw-border-spacing-y: 0;
  --tw-translate-x: 0;
  --tw-translate-y: 0;
  --tw-rotate: 0;
  --tw-skew-x: 0;
  --tw-skew-y: 0;
  --tw-scale-x: 1;
  --tw-scale-y: 1;
  --tw-pan-x:  ;
  --tw-pan-y:  ;
  --tw-pinch-zoom:  ;
  --tw-scroll-snap-strictness: proximity;
  --tw-gradient-from-position:  ;
  --tw-gradient-via-position:  ;
  --tw-gradient-to-position:  ;
  --tw-ordinal:  ;
  --tw-slashed-zero:  ;
  --tw-numeric-figure:  ;
  --tw-numeric-spacing:  ;
  --tw-numeric-fraction:  ;
  --tw-ring-inset:  ;
  --tw-ring-offset-width: 0px;
  --tw-ring-offset-color: #fff;
  --tw-ring-color: rgb(59 130 246 / 0.5);
  --tw-ring-offset-shadow: 0 0 #0000;
  --tw-ring-shadow: 0 0 #0000;
  --tw-shadow: 0 0 #0000;
  --tw-shadow-colored: 0 0 #0000;
  --tw-blur:  ;
  --tw-brightness:  ;
  --tw-contrast:  ;
  --tw-grayscale:  ;
  --tw-hue-rotate:  ;
  --tw-invert:  ;
  --tw-saturate:  ;
  --tw-sepia:  ;
  --tw-drop-shadow:  ;
  --tw-backdrop-blur:  ;
  --tw-backdrop-brightness:  ;
  --tw-backdrop-contrast:  ;
  --tw-backdrop-grayscale:  ;
  --tw-backdrop-hue-rotate:  ;
  --tw-backdrop-invert:  ;
  --tw-backdrop-opacity:  ;
  --tw-backdrop-saturate:  ;
  --tw-backdrop-sepia:  ;
  --tw-contain-size:  ;
  --tw-contain-layout:  ;
  --tw-contain-paint:  ;
  --tw-contain-style:  ;
}

/*
! tailwindcss v3.4.17 | MIT License | https://tailwindcss.com
*/

/*
1. Prevent padding and border from affecting element width. (https://github.com/mozdevs/cssremedy/issues/4)
2. Allow adding a border to an element by just adding a border-width. (https://github.com/tailwindcss/tailwindcss/pull/116)
*/

*,
::before,
::after {
  box-sizing: border-box;
  /* 1 */
  border-width: 0;
  /* 2 */
  border-style: solid;
  /* 2 */
  border-color: #e5e7eb;
  /* 2 */
}

::before,
::after {
  --tw-content: '';
}

/*
1. Use a consistent sensible line-height in all browsers.
2. Prevent adjustments of font size after orientation changes in iOS.
3. Use a more readable tab size.
4. Use the user's configured `sans` font-family by default.
5. Use the user's configured `sans` font-feature-settings by default.
6. Use the user's configured `sans` font-variation-settings by default.
7. Disable tap highlights on iOS
*/

html,
:host {
  line-height: 1.5;
  /* 1 */
  -webkit-text-size-adjust: 100%;
  /* 2 */
  -moz-tab-size: 4;
  /* 3 */
  -o-tab-size: 4;
     tab-size: 4;
  /* 3 */
  font-family: Manrope, system-ui, sans-serif;
  /* 4 */
  font-feature-settings: normal;
  /* 5 */
  font-variation-settings: normal;
  /* 6 */
  -webkit-tap-highlight-color: transparent;
  /* 7 */
}

/*
1. Remove the margin in all browsers.
2. Inherit line-height from `html` so users can set them as a class directly on the `html` element.
*/

body {
  margin: 0;
  /* 1 */
  line-height: inherit;
  /* 2 */
}

/*
1. Add the correct height in Firefox.
2. Correct the inheritance of border color in Firefox. (https://bugzilla.mozilla.org/show_bug.cgi?id=190655)
3. Ensure horizontal rules are visible by default.
*/

hr {
  height: 0;
  /* 1 */
  color: inherit;
  /* 2 */
  border-top-width: 1px;
  /* 3 */
}

/*
Add the correct text decoration in Chrome, Edge, and Safari.
*/

abbr:where([title]) {
  -webkit-text-decoration: underline dotted;
          text-decoration: underline dotted;
}

/*
Remove the default font size and weight for headings.
*/

h1,
h2,
h3,
h4,
h5,
h6 {
  font-size: inherit;
  font-weight: inherit;
}

/*
Reset links to optimize for opt-in styling instead of opt-out.
*/

a {
  color: inherit;
  text-decoration: inherit;
}

/*
Add the correct font weight in Edge and Safari.
*/

b,
strong {
  font-weight: bolder;
}

/*
1. Use the user's configured `mono` font-family by default.
2. Use the user's configured `mono` font-feature-settings by default.
3. Use the user's configured `mono` font-variation-settings by default.
4. Correct the odd `em` font sizing in all browsers.
*/

code,
kbd,
samp,
pre {
  font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;
  /* 1 */
  font-feature-settings: normal;
  /* 2 */
  font-variation-settings: normal;
  /* 3 */
  font-size: 1em;
  /* 4 */
}

/*
Add the correct font size in all browsers.
*/

small {
  font-size: 80%;
}

/*
Prevent `sub` and `sup` elements from affecting the line height in all browsers.
*/

sub,
sup {
  font-size: 75%;
  line-height: 0;
  position: relative;
  vertical-align: baseline;
}

sub {
  bottom: -0.25em;
}

sup {
  top: -0.5em;
}

/*
1. Remove text indentation from table contents in Chrome and Safari. (https://bugs.chromium.org/p/chromium/issues/detail?id=999088, https://bugs.webkit.org/show_bug.cgi?id=201297)
2. Correct table border color inheritance in all Chrome and Safari. (https://bugs.chromium.org/p/chromium/issues/detail?id=935729, https://bugs.webkit.org/show_bug.cgi?id=195016)
3. Remove gaps between table borders by default.
*/

table {
  text-indent: 0;
  /* 1 */
  border-color: inherit;
  /* 2 */
  border-collapse: collapse;
  /* 3 */
}

/*
1. Change the font styles in all browsers.
2. Remove the margin in Firefox and Safari.
3. Remove default padding in all browsers.
*/

button,
input,
optgroup,
select,
textarea {
  font-family: inherit;
  /* 1 */
  font-feature-settings: inherit;
  /* 1 */
  font-variation-settings: inherit;
  /* 1 */
  font-size: 100%;
  /* 1 */
  font-weight: inherit;
  /* 1 */
  line-height: inherit;
  /* 1 */
  letter-spacing: inherit;
  /* 1 */
  color: inherit;
  /* 1 */
  margin: 0;
  /* 2 */
  padding: 0;
  /* 3 */
}

/*
Remove the inheritance of text transform in Edge and Firefox.
*/

button,
select {
  text-transform: none;
}

/*
1. Correct the inability to style clickable types in iOS and Safari.
2. Remove default button styles.
*/

button,
input:where([type='button']),
input:where([type='reset']),
input:where([type='submit']) {
  -webkit-appearance: button;
  /* 1 */
  background-color: transparent;
  /* 2 */
  background-image: none;
  /* 2 */
}

/*
Use the modern Firefox focus style for all focusable elements.
*/

:-moz-focusring {
  outline: auto;
}

/*
Remove the additional `:invalid` styles in Firefox. (https://github.com/mozilla/gecko-dev/blob/2f9eacd9d3d995c937b4251a5557d95d494c9be1/layout/style/res/forms.css#L728-L737)
*/

:-moz-ui-invalid {
  box-shadow: none;
}

/*
Add the correct vertical alignment in Chrome and Firefox.
*/

progress {
  vertical-align: baseline;
}

/*
Correct the cursor style of increment and decrement buttons in Safari.
*/

::-webkit-inner-spin-button,
::-webkit-outer-spin-button {
  height: auto;
}

/*
1. Correct the odd appearance in Chrome and Safari.
2. Correct the outline style in Safari.
*/

[type='search'] {
  -webkit-appearance: textfield;
  /* 1 */
  outline-offset: -2px;
  /* 2 */
}

/*
Remove the inner padding in Chrome and Safari on macOS.
*/

::-webkit-search-decoration {
  -webkit-appearance: none;
}

/*
1. Correct the inability to style clickable types in iOS and Safari.
2. Change font properties to `inherit` in Safari.
*/

::-webkit-file-upload-button {
  -webkit-appearance: button;
  /* 1 */
  font: inherit;
  /* 2 */
}

/*
Add the correct display in Chrome and Safari.
*/

summary {
  display: list-item;
}

/*
Removes the default spacing and border for appropriate elements.
*/

blockquote,
dl,
dd,
h1,
h2,
h3,
h4,
h5,
h6,
hr,
figure,
p,
pre {
  margin: 0;
}

fieldset {
  margin: 0;
  padding: 0;
}

legend {
  padding: 0;
}

ol,
ul,
menu {
  list-style: none;
  margin: 0;
  padding: 0;
}

/*
Reset default styling for dialogs.
*/

dialog {
  padding: 0;
}

/*
Prevent resizing textareas horizontally by default.
*/

textarea {
  resize: vertical;
}

/*
1. Reset the default placeholder opacity in Firefox. (https://github.com/tailwindlabs/tailwindcss/issues/3300)
2. Set the default placeholder color to the user's configured gray 400 color.
*/

input::-moz-placeholder, textarea::-moz-placeholder {
  opacity: 1;
  /* 1 */
  color: #9ca3af;
  /* 2 */
}

input::placeholder,
textarea::placeholder {
  opacity: 1;
  /* 1 */
  color: #9ca3af;
  /* 2 */
}

/*
Set the default cursor for buttons.
*/

button,
[role="button"] {
  cursor: pointer;
}

/*
Make sure disabled buttons don't get the pointer cursor.
*/

:disabled {
  cursor: default;
}

/*
1. Make replaced elements `display: block` by default. (https://github.com/mozdevs/cssremedy/issues/14)
2. Add `vertical-align: middle` to align replaced elements more sensibly by default. (https://github.com/jensimmons/cssremedy/issues/14#issuecomment-634934210)
   This can trigger a poorly considered lint error in some tools but is included by design.
*/

img,
svg,
video,
canvas,
audio,
iframe,
embed,
object {
  display: block;
  /* 1 */
  vertical-align: middle;
  /* 2 */
}

/*
Constrain images and videos to the parent width and preserve their intrinsic aspect ratio. (https://github.com/mozdevs/cssremedy/issues/14)
*/

img,
video {
  max-width: 100%;
  height: auto;
}

/* Make elements with the HTML hidden attribute stay hidden by default */

[hidden]:where(:not([hidden="until-found"])) {
  display: none;
}

body {
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  text-rendering: optimizeLegibility;
  /* Sticky Footer, Teil 1: body als Flex-Column, #main füllt den Restraum,
       der Footer wird bei kurzen Seiten ans Viewport-Ende gedrückt.
       100dvh wegen iOS-Safari (Adressleiste), 100vh als Fallback davor.
       Das ist die einzige Mindesthöhe im Layout — die Wachstums-Kette darunter
       steht in der Regel direkt nach diesem Block. */
  min-height: 100vh;
  min-height: 100dvh;
  display: flex;
  flex-direction: column;
}

.container {
  width: 100%;
}

@media (min-width: 640px) {
  .container {
    max-width: 640px;
  }
}

@media (min-width: 768px) {
  .container {
    max-width: 768px;
  }
}

@media (min-width: 1024px) {
  .container {
    max-width: 1024px;
  }
}

@media (min-width: 1280px) {
  .container {
    max-width: 1280px;
  }
}

@media (min-width: 1536px) {
  .container {
    max-width: 1536px;
  }
}

nav .invisible,
  .mod_navigation>.invisible,
  .mod_customnav>.invisible {
  position: absolute;
  width: 1px;
  height: 1px;
  padding: 0;
  margin: -1px;
  overflow: hidden;
  clip: rect(0, 0, 0, 0);
  white-space: nowrap;
  border-width: 0;
}

.hero-vignette {
  background:
      linear-gradient(to top, rgba(17, 16, 14, 0.95) 0%, rgba(17, 16, 14, 0.55) 40%, rgba(17, 16, 14, 0.25) 100%),
      radial-gradient(ellipse at 50% 80%, rgba(248, 190, 41, 0.18), transparent 60%);
}

/*
   * Outline-Text-Komponenten (aktuell nicht im Hero verwendet,
   * für mögliche Nutzung in anderen Sektionen vorgehalten).
   */

.hero-headline {
  font-size: clamp(3.5rem, 11.5vw, 11rem);
  line-height: 0.9;
}

.page-header-headline {
  font-size: clamp(3.5rem, 11vw, 10.5rem);
  line-height: 0.82;
  letter-spacing: -0.005em;
}

.page-header-lead {
  margin-top: 28px;
  max-width: 580px;
  font-size: 19px;
  line-height: 1.55;
  color: rgba(245, 239, 224, 0.82);
}

.page-header-vignette {
  background:
      linear-gradient(to top, rgba(17, 16, 14, 0.95), rgba(17, 16, 14, 0.65) 60%, rgba(17, 16, 14, 0.4) 100%),
      radial-gradient(ellipse at 70% 100%, rgba(248, 190, 41, 0.15), transparent 60%);
}

/* Lead-Text unter Board-Sektions-Headline */

.board-lead {
  font-family: Manrope, system-ui, sans-serif;
  font-size: 18px;
  line-height: 1.55;
  color: rgba(17, 16, 14, 0.65);
  margin-top: 1rem;
  margin-bottom: 2.5rem;
  max-width: 42rem;
}

.board-lead p {
  margin: 0;
}

/* Board dicht an vorherigen Prose-Text (z. B. Reinschnuppern). Vorstandschaft unberührt.
     section.-Präfix hebt die Spezifität minimal auf 0,1,1 -- schlägt so das Tailwind
     py-10/lg:py-12 (0,1,0), das sonst als Utilities-Layer später emittiert wird und
     bei Gleichstand gewaenne. Kein !important noetig.
     margin-top zieht das Board zusaetzlich in das 110px padding-bottom der (global
     genutzten) .prose-page hinein -- so wird der Abstand lokal kleiner, ohne die
     prose-page-Regel selbst anzufassen (beide Bereiche haben bg-paper, kein Seam). */

section.board-tight {
  padding-top: 0;
  margin-top: -3.5rem;
}

/* Display-Schrift (Anton, eng, uppercase). Anton ist nur in Weight 400 geladen — daher KEIN font-weight setzen. */

.display {
  font-family: Anton, Bebas Neue, Impact, sans-serif;
  text-transform: uppercase;
  line-height: 0.92;
}

/* Eyebrow-Label (Saison-Hinweis, Kategorie-Label über Headlines) */

.eyebrow {
  font-family: Manrope, system-ui, sans-serif;
  font-size: 0.75rem;
  font-weight: 700;
  letter-spacing: 0.18em;
  text-transform: uppercase;
}

/* Section-Headline (h2 in Listenköpfen: Termine., Vorstand. etc.) */

.section-headline {
  font-size: clamp(3rem, 7vw, 6rem);
  line-height: 0.92;
  letter-spacing: 0.005em;
}

/* Events-Filter-Leiste */

.events-filter {
  display: flex;
  gap: 8px;
  background: rgba(245, 239, 224, 0.1);
  border-radius: 999px;
  padding: 6px;
}

.events-filter button {
  background: none;
  border: none;
  color: rgba(245, 239, 224, 0.7);
  padding: 8px 16px;
  font-family: Manrope, system-ui, sans-serif;
  font-weight: 600;
  font-size: 13px;
  border-radius: 999px;
  cursor: pointer;
  letter-spacing: 0.02em;
  transition: all .2s;
}

.events-filter button.active {
  background: #F8BE29;
  color: #11100E;
}

.events-filter button:hover:not(.active) {
  color: #F5EFE0;
}

/* Termine abonnieren (unter der Terminliste, pro Modul schaltbar) */

.events-subscribe {
  display: flex;
  flex-wrap: wrap;
  align-items: flex-start;
  gap: 16px 32px;
  margin-top: 56px;
}

.events-subscribe-info {
  flex: 1;
  min-width: 260px;
  display: flex;
  flex-direction: column;
  gap: 10px;
}

.events-subscribe-note {
  font-size: 13px;
  line-height: 1.65;
  color: rgba(245, 239, 224, 0.65);
  max-width: 72ch;
}

.events-subscribe-url {
  display: flex;
  gap: 8px;
  max-width: 440px;
}

.events-subscribe-url input {
  flex: 1;
  min-width: 0;
  background: rgba(245, 239, 224, 0.06);
  border: 1px solid rgba(245, 239, 224, 0.25);
  color: #F5EFE0;
  border-radius: 8px;
  padding: 8px 12px;
  font-size: 13px;
}

.events-subscribe-copy {
  background: none;
  border: 1px solid rgba(248, 190, 41, 0.5);
  color: #F8BE29;
  padding: 8px 16px;
  border-radius: 8px;
  font-family: Manrope, system-ui, sans-serif;
  font-weight: 600;
  font-size: 13px;
  letter-spacing: 0.02em;
  cursor: pointer;
  white-space: nowrap;
  transition: all .2s;
}

.events-subscribe-copy:hover,
  .events-subscribe-copy.copied {
  background: #F8BE29;
  color: #11100E;
}

/* Event-Zeile */

.event {
  display: grid;
  grid-template-columns: 130px 1fr auto auto;
  gap: 32px;
  align-items: center;
  padding: 28px 0;
  border-top: 1px solid rgba(245, 239, 224, 0.12);
  transition: padding .25s ease, background .25s ease;
  position: relative;
  /* Anker fuer den Stretched-Link (::after unten) */
}

/* Hover-Feedback nur auf echten Zeigegeraeten. Auf Touch ist :hover
     "klebrig" -> erster Tap loest nur den Hover aus, erst der zweite klickt.
     @media (hover: hover) schliesst Touch aus -> mobil ein-Tap-Navigation. */

@media (hover: hover) {
  .event:hover {
    padding-left: 20px;
    padding-right: 20px;
    background: rgba(248, 190, 41, 0.05);
  }

  /* Hover irgendwo auf der Zeile faerbt auch den Pfeil-Button gold --
       identisch zum direkten Hover ueber den Pfeil. */

  .event:hover .event-arrow {
    background: #F8BE29;
    color: #11100E;
    border-color: #F8BE29;
  }
}

.event:last-child {
  border-bottom: 1px solid rgba(245, 239, 224, 0.12);
}

.event-date {
  display: flex;
  flex-direction: column;
  gap: 4px;
  text-decoration: none;
}

.event-day {
  font-family: Anton, Bebas Neue, Impact, sans-serif;
  /* kein font-weight: Anton hat nur 400, alles andere ist synthetisches Fett */
  font-size: 56px;
  line-height: 0.9;
  color: #F8BE29;
}

.event-month {
  font-size: 12px;
  letter-spacing: 0.18em;
  text-transform: uppercase;
  color: rgba(245, 239, 224, 0.7);
}

.event-info h3 {
  font-family: Anton, Bebas Neue, Impact, sans-serif;
  /* kein font-weight: Anton hat nur 400, alles andere ist synthetisches Fett */
  font-size: 32px;
  line-height: 1;
  text-transform: uppercase;
  margin-bottom: 8px;
  color: #F5EFE0;
}

.event-info h3 a {
  color: inherit;
  text-decoration: none;
  transition: color .2s;
}

@media (hover: hover) {
  .event-info h3 a:hover {
    color: #F8BE29;
  }
}

/* Stretched-Link: der Titel-Link ueberspannt via ::after die ganze Karte
     -> komplette .event-Flaeche klickbar (Detail-Seite), Desktop UND Mobile.
     Anker ist .event (position:relative). WICHTIG: weder der Titel-Link noch
     sein Container .event-info duerfen positioniert sein, sonst ankert der
     Overlay dort statt an der Karte und schrumpft auf den Titel. */

.event-info h3 a::after {
  content: "";
  position: absolute;
  inset: 0;
  z-index: 1;
}

/* Sichtbare/interaktive Geschwister ueber den Overlay heben: eigene Links
     (Datum, Pfeil) bleiben separat klickbar, Meta/Tags sichtbar + selektierbar.
     Bewusst NICHT .event-info -- das wuerde den Overlay einschraenken. */

.event-date,
  .event-meta,
  .event-tags,
  .event-arrow {
  position: relative;
  z-index: 2;
}

.event-meta {
  display: flex;
  gap: 18px;
  flex-wrap: wrap;
  font-size: 13px;
  color: rgba(245, 239, 224, 0.65);
}

.event-meta span {
  display: flex;
  align-items: center;
  gap: 6px;
}

/* Event-Tags */

.event-tag {
  font-size: 11px;
  font-weight: 700;
  letter-spacing: 0.16em;
  text-transform: uppercase;
  padding: 6px 12px;
  border-radius: 999px;
  border: 1px solid rgba(245, 239, 224, 0.25);
  color: rgba(245, 239, 224, 0.85);
  white-space: nowrap;
}

/* Mobile-Layout der Termin-Zeile (<1024px): das feste 4-Spalten-Grid
     (130px 1fr auto auto) sprengt kleine Viewports. Reflow laut Skizze:
     Titel oben ueber volle Breite, darunter Datum links, Ort/Zeit mittig,
     Badge(s) rechts.

     Trick: .event-info bekommt hier display:contents -> der Wrapper-Kasten
     verschwindet und seine Kinder (h3 + .event-meta) werden direkte
     Grid-Kinder von .event. So kann der Titel als eigene Zeile oben stehen
     und die Meta neben das Datum ruecken, OHNE das Markup zu aendern. Damit
     bleibt das Desktop-Grid (>=1024px) voellig unangetastet. */

@media (max-width: 1023px) {
  .event {
    grid-template-columns: auto 1fr;
    grid-template-areas:
        "title title"
        "date  meta"
        "tags  tags";
    -moz-column-gap: 16px;
         column-gap: 16px;
    row-gap: 12px;
    align-items: start;
  }

  /* Wrapper aufloesen -> h3 + meta werden Grid-Kinder von .event */

  .event-info {
    display: contents;
  }

  .event-date {
    grid-area: date;
  }

  /* min-width:0 hebt den Grid-Default min-width:auto auf -- sonst zwingt
       der lange Titel die Spalte auf Min-Content-Breite (Overflow, weisser
       Rand). break-word bricht bevorzugt an Wortgrenzen statt buchstabenweise. */

  .event-info>h3 {
    grid-area: title;
    min-width: 0;
    overflow-wrap: break-word;
  }

  .event-meta {
    grid-area: meta;
    min-width: 0;
    align-self: center;
  }

  /* Badges in eigener Zeile unten ueber volle Breite, links -- so quetschen
       sie die Meta-Zeile (Ort/Zeit) nicht mehr. */

  .event-tags {
    grid-area: tags;
    flex-wrap: wrap;
    justify-content: flex-start;
  }

  .event-day {
    font-size: 40px;
  }

  /* Pfeil mobil ausblenden -- ganze Karte ist via Stretched-Link antippbar.
       .event statt bare .event-arrow: hoehere Spezifitaet schlaegt die
       spaeter im File stehende Pfeil-Button-Regel (.event-arrow display:flex). */

  .event .event-arrow {
    display: none;
  }
}

/* ===== EVENT DETAIL (Reader) ===== */

.detail-header {
  position: relative;
  background: #11100E;
  color: #F5EFE0;
  padding: 40px 0 56px;
  overflow: hidden;
}

@media (min-width: 1024px) {
  .detail-header {
    padding: 56px 0 72px;
  }
}

.detail-header-vignette {
  position: absolute;
  inset: 0;
  background:
      radial-gradient(ellipse at 85% 10%, rgba(248, 190, 41, 0.18), transparent 55%),
      radial-gradient(ellipse at 10% 100%, rgba(248, 190, 41, 0.08), transparent 50%);
  pointer-events: none;
}

/* Dezentes Gitter-Pattern obendrauf */

.detail-header::before {
  content: '';
  position: absolute;
  inset: 0;
  background-image:
      linear-gradient(rgba(248, 190, 41, 0.04) 1px, transparent 1px),
      linear-gradient(90deg, rgba(248, 190, 41, 0.04) 1px, transparent 1px);
  background-size: 64px 64px;
  mask-image: linear-gradient(to bottom, rgba(0, 0, 0, 0.6), transparent 70%);
  -webkit-mask-image: linear-gradient(to bottom, rgba(0, 0, 0, 0.6), transparent 70%);
  pointer-events: none;
}

.detail-back {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  font-size: 12px;
  font-weight: 700;
  letter-spacing: 0.16em;
  text-transform: uppercase;
  color: rgba(245, 239, 224, 0.7);
  padding: 8px 14px 8px 10px;
  border: 1px solid rgba(245, 239, 224, 0.2);
  border-radius: 999px;
  transition: all .2s;
  margin-bottom: 24px;
  text-decoration: none;
}

.detail-back:hover {
  color: #F8BE29;
  border-color: #F8BE29;
  transform: translateX(-2px);
}

.detail-crumb {
  display: flex;
  gap: 8px;
  font-size: 12px;
  letter-spacing: 0.18em;
  text-transform: uppercase;
  color: rgba(245, 239, 224, 0.5);
  margin-bottom: 32px;
  flex-wrap: wrap;
}

.detail-crumb a {
  color: inherit;
  text-decoration: none;
  transition: color .15s;
}

.detail-crumb a:hover {
  color: #F8BE29;
}

.detail-crumb-sep {
  opacity: 0.5;
}

.detail-crumb-current {
  color: rgba(245, 239, 224, 0.75);
}

.detail-head-row {
  display: flex;
  flex-direction: column;
  gap: 24px;
  align-items: flex-start;
}

@media (min-width: 640px) {
  .detail-head-row {
    flex-direction: row;
    gap: 40px;
  }
}

.detail-date-block {
  display: flex;
  flex-direction: column;
  background: #F8BE29;
  color: #11100E;
  padding: 22px 26px;
  border-radius: 4px;
  text-align: center;
  min-width: 130px;
  flex-shrink: 0;
}

.detail-day {
  font-family: Anton, Bebas Neue, Impact, sans-serif;
  font-size: 96px;
  line-height: 0.85;
  color: #11100E;
}

.detail-month {
  font-family: Manrope, system-ui, sans-serif;
  font-weight: 800;
  font-size: 13px;
  letter-spacing: 0.22em;
  text-transform: uppercase;
  line-height: 1.2;
  margin-top: 8px;
  padding-top: 10px;
  border-top: 1px solid rgba(17, 16, 14, 0.25);
  color: #11100E;
}

.detail-title-block {
  min-width: 0;
  flex: 1;
}

.detail-tags {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  margin-bottom: 18px;
}

.detail-title {
  font-family: Anton, Bebas Neue, Impact, sans-serif;
  font-size: clamp(44px, 6.5vw, 96px);
  line-height: 0.92;
  letter-spacing: 0.005em;
  text-transform: uppercase;
  color: #F5EFE0;
  margin-bottom: 18px;
  /* KEIN font-weight setzen — Anton ist nur 400, sonst gibt's synthetisches Fett */
}

/* INFO BAR */

.detail-info-bar {
  background: #1F1C18;
  color: #F5EFE0;
  border-top: 1px solid rgba(248, 190, 41, 0.2);
  border-bottom: 1px solid rgba(248, 190, 41, 0.2);
}

.detail-info-bar-inner {
  max-width: 1280px;
  margin: 0 auto;
  padding: 28px 32px;
  display: grid;
  grid-template-columns: 1fr;
  gap: 18px;
}

@media (min-width: 640px) {
  .detail-info-bar-inner {
    grid-template-columns: repeat(3, 1fr);
    gap: 32px;
  }

  .detail-info-item {
    border-left: 1px solid rgba(248, 190, 41, 0.25);
    padding-left: 20px;
  }

  .detail-info-item:first-child {
    border-left: none;
    padding-left: 0;
  }
}

.detail-info-item {
  display: flex;
  flex-direction: column;
  gap: 6px;
}

.detail-info-label {
  font-size: 11px;
  font-weight: 700;
  letter-spacing: 0.2em;
  text-transform: uppercase;
  color: #F8BE29;
}

.detail-info-value {
  font-family: Manrope, system-ui, sans-serif;
  font-weight: 600;
  font-size: 16px;
  color: #F5EFE0;
  line-height: 1.3;
}

/* BODY (no-image) */

.detail-body {
  background: #FBF8F1;
  color: #11100E;
  padding: 56px 0;
}

@media (min-width: 1024px) {
  .detail-body {
    padding: 80px 0;
  }
}

.detail-h2 {
  font-family: Anton, Bebas Neue, Impact, sans-serif;
  text-transform: uppercase;
  font-size: clamp(28px, 3.5vw, 40px);
  color: #11100E;
  margin: 12px 0 32px;
  line-height: 1.05;
}

.detail-p {
  font-size: 17px;
  line-height: 1.65;
  color: rgba(31, 28, 24, 0.82);
  margin: 0 0 20px;
}

.detail-p:last-of-type {
  margin-bottom: 32px;
}

/* Rich-Text-Body aus tl_calendar_events.details */

.detail-prose p {
  font-size: 17px;
  line-height: 1.65;
  color: rgba(31, 28, 24, 0.82);
  margin: 0 0 20px;
}

.detail-prose p:last-child {
  margin-bottom: 0;
}

.detail-actions {
  display: flex;
  flex-direction: column;
  gap: 12px;
  margin-top: 32px;
}

@media (min-width: 640px) {
  .detail-actions {
    flex-direction: row;
    flex-wrap: wrap;
  }
}

/* ===== EVENT DETAIL ERWEITERT (Phase 10) ===== */

/* Cover-Bild */

.detail-cover {
  background: #FBF8F1;
  padding: 0;
}

.detail-cover-inner {
  max-width: 1280px;
  margin: 0 auto;
  padding: 40px 32px 0;
}

.detail-cover img {
  width: 100%;
  height: auto;
  max-height: 520px;
  -o-object-fit: cover;
     object-fit: cover;
  border-radius: 12px;
  display: block;
}

@media (min-width: 1024px) {
  .detail-cover-inner {
    padding: 56px 32px 0;
  }
}

/* Body zweispaltig (Main + Sidebar) */

.detail-body-grid {
  display: grid;
  grid-template-columns: 1fr;
  gap: 40px;
  max-width: 1280px;
  margin: 0 auto;
  padding: 0 32px;
}

@media (min-width: 1024px) {
  .detail-body-grid {
    grid-template-columns: minmax(0, 1fr) 360px;
    gap: 56px;
  }
}

.detail-main {
  min-width: 0;
}

.detail-side {
  display: flex;
  flex-direction: column;
  gap: 24px;
}

/* Sidebar-Karten */

.detail-card {
  background: white;
  border: 1px solid rgba(31, 28, 24, 0.08);
  border-radius: 12px;
  padding: 24px;
}

.detail-card-h {
  font-family: Anton, Bebas Neue, Impact, sans-serif;
  text-transform: uppercase;
  font-size: 22px;
  color: #11100E;
  margin: 8px 0 12px;
  line-height: 1.1;
}

.detail-address {
  font-style: normal;
  font-size: 14px;
  color: rgba(31, 28, 24, 0.7);
  line-height: 1.55;
  margin: 0 0 16px;
}

/* Karten-Iframe */

.detail-map {
  display: block;
  position: relative;
  overflow: hidden;
  border-radius: 8px;
  margin: 0 0 12px;
  text-decoration: none;
  border: 1px solid rgba(31, 28, 24, 0.06);
}

.detail-map iframe {
  display: block;
  width: 100%;
  height: 240px;
  border: 0;
}

.detail-routes {
  display: flex;
  flex-direction: column;
  gap: 10px;
  align-items: flex-start;
}

.detail-route {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  color: #C8970F;
  font-size: 14px;
  font-weight: 600;
  text-decoration: none;
  transition: color .15s;
}

.detail-route:hover {
  color: #11100E;
}

/* Anhänge-Karte (Login-Gate) — heller Cream-Hintergrund */

.detail-card-attach {
  background: #F5EFE0;
}

.attach-head {
  display: flex;
  justify-content: space-between;
  align-items: flex-start;
  gap: 12px;
  margin-bottom: 20px;
}

.login-badge {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  background: transparent;
  color: rgba(31, 28, 24, 0.7);
  font-size: 11px;
  font-weight: 600;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  padding: 6px 12px;
  border: 1px solid rgba(31, 28, 24, 0.2);
  border-radius: 999px;
  white-space: nowrap;
}

/* Dokument-Zeilen (Teaser, gesperrt) */

.attach-list {
  display: flex;
  flex-direction: column;
  gap: 10px;
  margin: 0 0 18px;
}

.attach-item {
  display: flex;
  align-items: center;
  gap: 14px;
  background: white;
  border: 1px solid rgba(31, 28, 24, 0.08);
  border-radius: 10px;
  padding: 14px 16px;
}

.attach-icon {
  flex-shrink: 0;
  background: #1F1C18;
  color: #F8BE29;
  font-size: 11px;
  font-weight: 700;
  letter-spacing: 0.06em;
  padding: 10px 12px;
  border-radius: 8px;
}

.attach-item-info {
  flex: 1;
  min-width: 0;
}

.attach-item-name {
  font-weight: 600;
  font-size: 14px;
  color: #11100E;
}

.attach-item-meta {
  font-size: 12px;
  color: rgba(31, 28, 24, 0.5);
  margin-top: 2px;
}

.attach-lock {
  flex-shrink: 0;
  width: 40px;
  height: 40px;
  border-radius: 50%;
  background: rgba(31, 28, 24, 0.06);
  display: flex;
  align-items: center;
  justify-content: center;
  color: rgba(31, 28, 24, 0.5);
}

/* Anhang-Zeilen sind seit den echten Dokumenten Links (vorher: reine
     Platzhalter-DIVs). Auch die gesperrten sind echte Links — sie führen
     zur Anmeldung und danach hierher zurück, deshalb bewusst nicht
     ausgegraut. */

a.attach-item-link {
  text-decoration: none;
  transition: border-color .2s, box-shadow .2s;
}

a.attach-item-link:hover {
  border-color: rgba(31, 28, 24, 0.22);
  box-shadow: 0 8px 22px rgba(17, 16, 14, 0.06);
}

a.attach-item-link:hover .attach-lock {
  background: #F8BE29;
  color: #11100E;
}

.attach-cta {
  display: inline-flex;
  width: 100%;
  justify-content: center;
  align-items: center;
  gap: 8px;
  background: #F8BE29;
  color: #11100E;
  padding: 10px 18px;
  border-radius: 999px;
  font-weight: 700;
  font-size: 13px;
  text-decoration: none;
  transition: background .2s;
}

.attach-cta:hover {
  background: #FFD04A;
}

/* "Weitere Termine"-Sektion — hell (cream), kontrastiert mit dem ink-Footer */

.detail-more {
  background: #F5EFE0;
  color: #11100E;
  padding: 80px 0;
}

.detail-more-inner {
  max-width: 1280px;
  margin: 0 auto;
  padding: 0 32px;
}

.detail-more-head {
  margin-bottom: 48px;
}

/* Listing auf hellem Hintergrund: dunkle Schrift + dunkle Trennlinien */

.detail-more .event {
  border-top-color: rgba(31, 28, 24, 0.12);
}

.detail-more .event:last-child {
  border-bottom-color: rgba(31, 28, 24, 0.12);
}

@media (hover: hover) {
  .detail-more .event:hover {
    background: rgba(248, 190, 41, 0.08);
  }
}

.detail-more .event-info h3 {
  color: #11100E;
}

@media (hover: hover) {
  .detail-more .event-info h3 a:hover {
    color: #C8970F;
  }
}

.detail-more .event-month {
  color: rgba(31, 28, 24, 0.55);
}

.detail-more .event-meta {
  color: rgba(31, 28, 24, 0.6);
}

.detail-more .event-arrow {
  border-color: rgba(31, 28, 24, 0.2);
  color: #11100E;
}

.detail-more .event-tag {
  border-color: rgba(31, 28, 24, 0.25);
  color: rgba(31, 28, 24, 0.7);
}

/* Button "Alle Termine ansehen": dunkles Pill mit Gold-Schrift */

.detail-more .btn-ink {
  color: #F8BE29;
}

/* CTA-Buttons */

.btn {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  padding: 14px 28px;
  border-radius: 999px;
  font-family: Manrope, system-ui, sans-serif;
  font-weight: 700;
  font-size: 15px;
  letter-spacing: 0.02em;
  text-decoration: none;
  transition: all .2s;
  cursor: pointer;
  border: none;
}

.btn-primary {
  background: #F8BE29;
  color: #11100E;
}

.btn-primary:hover {
  background: #F5EFE0;
  color: #11100E;
}

.btn-ink {
  background: #11100E;
  color: #F5EFE0;
}

.btn-ink:hover {
  background: #C8970F;
  color: #11100E;
}

.btn-ghost-ink {
  background: transparent;
  color: #11100E;
  border: 1px solid rgba(10, 10, 10, 0.4);
}

.btn-ghost-ink:hover {
  border-color: #11100E;
  background: rgba(10, 10, 10, 0.06);
}

/* Event-Pfeil-Button */

.event-arrow {
  width: 44px;
  height: 44px;
  border-radius: 50%;
  border: 1px solid rgba(245, 239, 224, 0.2);
  display: flex;
  align-items: center;
  justify-content: center;
  color: #F5EFE0;
  text-decoration: none;
  flex-shrink: 0;
  transition: all .2s;
}

.event-arrow:hover {
  background: #F8BE29;
  color: #11100E;
  border-color: #F8BE29;
}

/* ===== NAVIGATION (Desktop + Mobile) =====
     Desktop-Dropdowns rein per CSS (:hover/:focus-within), kein JS.
     Mobile-Drawer wird per Vanilla-JS in theme.js gesteuert.
  */

/* --- Container & Brand --- */

.nav {
  position: sticky;
  top: 0;
  z-index: 50;
  background: rgba(17, 16, 14, 0.92);
  backdrop-filter: blur(10px);
  -webkit-backdrop-filter: blur(10px);
  border-bottom: 1px solid rgba(248, 190, 41, 0.18);
  color: #F5EFE0;
}

.nav-inner {
  max-width: 1280px;
  margin: 0 auto;
  padding: 14px 32px;
  display: flex;
  align-items: center;
  gap: 32px;
}

.brand {
  display: flex;
  align-items: center;
  gap: 14px;
  text-decoration: none;
}

.brand-logo {
  height: 56px;
  width: auto;
  flex-shrink: 0;
}

.brand-text {
  display: flex;
  flex-direction: column;
  gap: 4px;
}

.brand-name {
  font-family: Anton, Bebas Neue, Impact, sans-serif;
  font-size: 22px;
  letter-spacing: 0.02em;
  text-transform: uppercase;
  color: #F5EFE0;
  line-height: 1;
}

.brand-sub {
  font-family: Manrope, system-ui, sans-serif;
  font-weight: 500;
  font-size: 10px;
  letter-spacing: 0.22em;
  text-transform: uppercase;
  color: #F8BE29;
}

/* --- Desktop Links --- */

.nav-links {
  display: flex;
  gap: 6px;
  margin-left: auto;
  align-items: center;
  font-family: Manrope, system-ui, sans-serif;
  font-weight: 600;
  font-size: 14px;
}

/* Contao mod_navigation wrappt in <nav class="block"> — aufheben damit .nav-item Flex-Kinder von .nav-links werden */

.nav-links>nav {
  display: contents;
}

@media (max-width: 767px) {
  .nav-links {
    display: none;
  }
}

.nav-item {
  position: relative;
}

.nav-link {
  position: relative;
  display: inline-flex;
  align-items: center;
  gap: 5px;
  padding: 8px 12px;
  color: #F5EFE0;
  border-radius: 8px;
  text-decoration: none;
  transition: color .2s, background .2s;
  cursor: pointer;
}

.nav-link:hover {
  color: #F8BE29;
}

.nav-caret {
  transition: transform .25s ease;
  opacity: 0.65;
}

.nav-item.has-children:hover>.nav-link,
  .nav-item.has-children:focus-within>.nav-link {
  color: #F8BE29;
}

.nav-item.has-children:hover>.nav-link .nav-caret,
  .nav-item.has-children:focus-within>.nav-link .nav-caret {
  transform: rotate(180deg);
  opacity: 1;
}

/* aktive Seite (Contao setzt class="active") */

.nav-link.active,
  .nav-link.trail {
  color: #F8BE29;
}

/* Underline-Animation für Top-Level ohne Children */

.nav-link::after {
  content: '';
  position: absolute;
  left: 12px;
  right: 12px;
  bottom: 2px;
  height: 2px;
  background: #F8BE29;
  transform: scaleX(0);
  transform-origin: left;
  transition: transform .25s ease;
}

.nav-item:not(.has-children) .nav-link:hover::after,
  .nav-item:not(.has-children) .nav-link.active::after {
  transform: scaleX(1);
}

/* --- Desktop Dropdown --- */

.nav-dropdown {
  position: absolute;
  top: 100%;
  left: 0;
  min-width: 260px;
  padding-top: 12px;
  opacity: 0;
  visibility: hidden;
  transform: translateY(8px);
  transition: opacity .2s ease, transform .2s ease, visibility .2s;
  z-index: 60;
}

/* Der rechteste Eintrag MIT Panel richtet sein Panel rechtsbündig aus:
     Panel-Kante schließt an die rechte Kante des Auslösers an, es öffnet also
     nach innen. Grund: `left: 0` plus `min-width: 260px` brauchte mehr Platz,
     als ab 1280px abwärts rechts noch frei ist (gemessen konstant 6px zu wenig —
     unterhalb der max-width ist die Nav padding-gebunden, der Abstand von
     „Events" zur rechten Kante bleibt daher gleich). Rechtsbündig kann per
     Konstruktion nicht überlaufen, weil die rechte Kante des Auslösers immer
     innerhalb der Nav liegt — unabhängig von der Viewport-Breite.
     Zum Selektor: `:not(:has(~ .nav-item.has-children))` trifft das letzte
     Item, das überhaupt ein Panel hat — nicht `:last-child`, denn der letzte
     Nav-Eintrag ist „Kontakt" und hat gar keins. Bleibt damit auch nach
     Umsortieren oder neuen Einträgen richtig. Nur der rechteste braucht die
     Regel: jedes weiter links stehende Item hat eine kleinere linke Kante und
     damit mehr Platz. */

.nav-links>nav>.nav-item.has-children:not(:has(~ .nav-item.has-children))>.nav-dropdown {
  left: auto;
  right: 0;
}

.nav-item.has-children:hover>.nav-dropdown,
  .nav-item.has-children:focus-within>.nav-dropdown {
  opacity: 1;
  visibility: visible;
  transform: translateY(0);
}

.nav-dropdown-inner {
  background: #17150F;
  border: 1px solid rgba(248, 190, 41, 0.22);
  border-top: 2px solid #F8BE29;
  border-radius: 10px;
  padding: 8px;
  display: flex;
  flex-direction: column;
  gap: 2px;
  min-width: 260px;
}

.nav-sub {
  display: flex;
  flex-direction: column;
  padding: 10px 14px;
  color: #F5EFE0;
  text-decoration: none;
  border-radius: 6px;
  transition: background .15s, color .15s;
  font-size: 14px;
}

.nav-sub:hover,
  .nav-sub:focus-within {
  background: rgba(248, 190, 41, 0.1);
}

.nav-sub-label {
  font-weight: 600;
  line-height: 1.2;
}

.nav-sub:hover .nav-sub-label,
  .nav-sub:focus-within>.nav-sub-row .nav-sub-label {
  color: #F8BE29;
}

.nav-sub-desc {
  font-size: 12px;
  opacity: 0.6;
  margin-top: 2px;
  letter-spacing: 0.02em;
}

/* Sub-Items wenn Contao subitems als HTML-String rendert (rekursive Vorlage):
     .nav-item innerhalb .nav-dropdown-inner → nav-sub-Optik */

.nav-dropdown-inner .nav-item {
  position: static;
}

.nav-dropdown-inner .nav-item>.nav-link {
  padding: 10px 14px;
  border-radius: 6px;
  font-size: 14px;
  display: flex;
}

.nav-dropdown-inner .nav-item>.nav-link::after {
  display: none;
}

/* Dritte Ebene: verschachteltes Dropdown als Flyout — öffnet nach LINKS.
     Grund: Die Top-Nav ist rechtsbündig (.nav-links { margin-left: auto }),
     das Panel der zweiten Ebene endet also nahe am rechten Viewport-Rand. Mit
     dem früheren `left: 100%` schob der Flyout weitere 260px darüber hinaus und
     erzeugte echten horizontalen Scroll auf dem Desktop (gemessen: +184px bei
     1440px, +257px bei 1200px und 1024px Viewport). Nach links ist immer Platz,
     weil die Nav rechts ankert — deshalb genügt eine feste Richtung, ohne JS
     und ohne Clipping (overflow-x würde die Sticky-Nav gefährden und geöffnete
     Panels beschneiden).
     Zu den Prozentwerten: `.nav-dropdown-inner .nav-item` ist bewusst
     `position: static` (siehe Regel darüber), der Flyout ankert daher an
     `.nav-dropdown` der zweiten Ebene, nicht am Sub-Item. `right: 100%` setzt
     seine rechte Kante also an die linke Panel-Kante. */

.nav-dropdown-inner .nav-item .nav-dropdown {
  top: -9px;
  left: auto;
  right: 100%;
  padding-top: 0;
  margin-left: 0;
  margin-right: 6px;
}

/* --- 3. Ebene: Flyout --- */

.nav-sub-row {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
}

.nav-sub-row svg {
  opacity: 0.5;
  transition: opacity .18s;
}

.nav-sub.has-flyout:hover .nav-sub-row svg {
  opacity: 1;
  color: #F8BE29;
}

.nav-sub.has-flyout {
  position: relative;
}

/* Öffnet nach links, gleiche Begründung wie bei der dritten Ebene oben.
     Hinweis: Dieser Zweig ist derzeit nicht erreichbar — Contao 5 liefert
     `subitems` als HTML-String, `nav_default.html5` rendert dann rekursiv
     (`.nav-item > .nav-dropdown`). Die Regel bleibt trotzdem korrigiert, damit
     der Array-Fallback des Templates nicht denselben Overflow wieder einführt. */

.nav-flyout {
  position: absolute;
  top: -9px;
  left: auto;
  right: 100%;
  min-width: 200px;
  margin-right: 6px;
  background: #17150F;
  border: 1px solid rgba(248, 190, 41, 0.22);
  border-top: 2px solid #F8BE29;
  border-radius: 10px;
  padding: 8px;
  display: flex;
  flex-direction: column;
  gap: 2px;
  opacity: 0;
  visibility: hidden;
  /* schiebt aus Öffnungsrichtung herein, also von rechts */
  transform: translateX(4px);
  transition: opacity .18s, transform .18s, visibility .18s;
}

.nav-sub.has-flyout:hover>.nav-flyout,
  .nav-sub.has-flyout:focus-within>.nav-flyout {
  opacity: 1;
  visibility: visible;
  transform: translateX(0);
}

/* --- Top-Right CTA + Burger --- */

.nav-cta {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  background: #F8BE29;
  color: #11100E;
  padding: 10px 22px;
  border-radius: 999px;
  font-weight: 700;
  font-size: 13.5px;
  letter-spacing: 0.02em;
  text-decoration: none;
  transition: all .2s;
  margin-left: 6px;
}

.nav-cta:hover {
  background: #FFD04A;
  transform: translateY(-1px);
}

.nav-burger {
  display: none;
  background: none;
  border: none;
  color: #F5EFE0;
  cursor: pointer;
  padding: 4px;
  margin-left: auto;
}

@media (max-width: 767px) {
  .nav-burger {
    display: inline-flex;
  }
}

/* --- Mobile Drawer + Overlay --- */

.m-nav-overlay {
  position: fixed;
  inset: 0;
  background: rgba(0, 0, 0, 0.55);
  -webkit-backdrop-filter: blur(2px);
          backdrop-filter: blur(2px);
  z-index: 90;
  opacity: 0;
  visibility: hidden;
  transition: opacity .25s, visibility .25s;
}

.m-nav-overlay.open {
  opacity: 1;
  visibility: visible;
}

.m-nav-drawer {
  position: fixed;
  top: 0;
  right: 0;
  bottom: 0;
  width: min(86vw, 380px);
  background: #14130F;
  border-left: 1px solid rgba(248, 190, 41, 0.18);
  z-index: 100;
  transform: translateX(100%);
  transition: transform .3s cubic-bezier(0.22, 1, 0.36, 1);
  display: flex;
  flex-direction: column;
  color: #F5EFE0;
}

.m-nav-drawer.open {
  transform: translateX(0);
}

.m-nav-head {
  display: flex;
  justify-content: space-between;
  align-items: center;
  padding: 18px 20px;
  border-bottom: 1px solid rgba(245, 239, 224, 0.08);
}

.m-nav-title {
  font-family: Anton, Bebas Neue, Impact, sans-serif;
  font-size: 18px;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: #F8BE29;
}

.m-nav-close {
  background: none;
  border: 1px solid rgba(245, 239, 224, 0.15);
  color: #F5EFE0;
  width: 38px;
  height: 38px;
  border-radius: 999px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  cursor: pointer;
  transition: all .15s;
}

.m-nav-close:hover {
  color: #F8BE29;
  border-color: #F8BE29;
}

.m-nav-body {
  flex: 1;
  overflow-y: auto;
  padding: 8px 0;
}

.m-nav-group {
  display: flex;
  flex-direction: column;
}

.m-nav-toggle {
  background: none;
  border: none;
  color: #F5EFE0;
  padding: 14px 20px;
  text-align: left;
  display: flex;
  justify-content: space-between;
  align-items: center;
  font-family: Manrope, system-ui, sans-serif;
  font-weight: 600;
  font-size: 17px;
  cursor: pointer;
  transition: color .15s, background .15s;
}

.m-nav-toggle:hover {
  color: #F8BE29;
}

.m-nav-toggle svg {
  transition: transform .25s ease;
  opacity: 0.65;
}

.m-nav-toggle.open svg {
  transform: rotate(180deg);
  opacity: 1;
  color: #F8BE29;
}

.m-nav-toggle.open {
  color: #F8BE29;
}

.m-nav-sub {
  display: grid;
  grid-template-rows: 0fr;
  transition: grid-template-rows .3s ease;
}

.m-nav-sub.open {
  grid-template-rows: 1fr;
}

.m-nav-sub-inner {
  overflow: hidden;
  background: rgba(0, 0, 0, 0.2);
}

.m-nav-link {
  display: block;
  padding: 12px 20px;
  color: rgba(245, 239, 224, 0.78);
  font-size: 17px;
  text-decoration: none;
  transition: color .15s;
}

.m-nav-link:hover {
  color: #F8BE29;
}

/* Ebene 2: Links + Toggle-Buttons einrücken */

.m-nav-sub-inner .m-nav-link,
  .m-nav-sub-inner .m-nav-toggle {
  padding-left: 38px;
}

/* Ebene 3: tiefer einrücken (überschreibt Ebene 2) */

.m-nav-sub-inner .m-nav-sub-inner .m-nav-link,
  .m-nav-sub-inner .m-nav-sub-inner .m-nav-toggle {
  padding-left: 56px;
}

.m-nav-overview {
  color: #F8BE29;
  font-weight: 600;
  font-size: 14px;
}

.m-nav-foot {
  padding: 18px 20px;
  border-top: 1px solid rgba(245, 239, 224, 0.08);
}

.m-nav-foot .nav-cta {
  display: inline-flex;
  width: 100%;
  justify-content: center;
}

/* ===== MOBILE-DRAWER: AUTH-SECTION (Phase 15-UX) ===== */

.m-nav-user-section {
  padding: 20px 24px;
  border-top: 1px solid rgba(245, 239, 224, 0.1);
  display: flex;
  flex-direction: column;
  gap: 4px;
}

.m-nav-user-greeting {
  font-size: 13px;
  color: rgba(245, 239, 224, 0.6);
  margin-bottom: 8px;
}

.m-nav-user-greeting strong {
  color: #F8BE29;
  font-weight: 600;
}

.m-nav-user-section .m-nav-link {
  padding-left: 0;
  padding-right: 0;
}

.m-nav-link-login {
  display: inline-flex;
  align-items: center;
  gap: 8px;
}

.m-nav-link-logout {
  color: rgba(245, 239, 224, 0.65);
  font-weight: 500;
}

/* ============================================================
     INHALTSSEITEN — Prose-Hexa (Phase 12a)
     Tonalitäten: A erzählerisch, B strukturiert, C formell
     Verwendet Standard-Contao-Inhaltselemente (kein Custom CE).
     ============================================================ */

/* --- Page-Shell ---------------------------------------------- */

.prose-page {
  background: #FBF8F1;
  padding: 96px 0 110px;
}

.prose-page--header {
  padding-top: 80px;
}

/* weniger Top wenn Page-Header davor */

/* --- Breiten-Wrapper (optional, falls Typo & Breite getrennt) -- */

.content-wide {
  max-width: 1280px;
  margin: 0 auto;
}

/* --- Prose-Scope (zentrales Layout + Typo-Default) -- */

.prose-hexa {
  max-width: 760px;
  margin: 0 auto;
}

.prose-hexa.content-wide {
  max-width: 1280px;
}

/* === 1 · Headings ============================================ */

.prose-hexa h1 {
  font-family: Anton, Bebas Neue, Impact, sans-serif;
  font-weight: 400;
  /* Anton ist 400-only */
  font-size: clamp(44px, 7vw, 84px);
  line-height: 0.9;
  letter-spacing: 0.005em;
  text-transform: uppercase;
  color: #11100E;
  margin: 0 0 24px;
  text-wrap: balance;
  scroll-margin-top: 92px;
}

.prose-hexa h2 {
  font-family: Anton, Bebas Neue, Impact, sans-serif;
  font-weight: 400;
  font-size: clamp(30px, 4vw, 46px);
  line-height: 1;
  letter-spacing: 0.005em;
  text-transform: uppercase;
  color: #11100E;
  margin: 60px 0 22px;
  text-wrap: balance;
  scroll-margin-top: 92px;
}

.prose-hexa h3 {
  font-family: Manrope, system-ui, sans-serif;
  font-weight: 800;
  font-size: clamp(20px, 2.2vw, 24px);
  line-height: 1.25;
  letter-spacing: -0.01em;
  color: #11100E;
  margin: 42px 0 14px;
  scroll-margin-top: 92px;
}

.prose-hexa h4 {
  font-family: Manrope, system-ui, sans-serif;
  font-weight: 700;
  font-size: 18px;
  line-height: 1.3;
  letter-spacing: 0.01em;
  color: #11100E;
  margin: 32px 0 10px;
  scroll-margin-top: 92px;
}

.prose-hexa> :is(h1, h2, h3, h4):first-child {
  margin-top: 0;
}

.prose-hexa :is(h2, h3, h4)+ :is(h2, h3, h4) {
  margin-top: 24px;
}

/* --- Leitplanke: kein Fett aus Inhalten in Überschriften ------
     Warum es diese Regel gibt: Redaktionstexte werden aus einer Chat-/Text-
     Oberfläche in den RTE kopiert, dabei reist `<strong>`/`<b>` mit. In einer
     Anton-Überschrift (h1/h2 = Weight 400, mehr gibt die Schrift nicht her)
     erzeugt das synthetisches Fett und verstößt gegen die Kernregel — sichtbar
     geworden auf /verein/das-haes, wo alle Zwischentitel als `h2 > strong`
     im Inhalt stehen. Im CSS ist der Fehler nicht zu sehen, er steckt in der DB.
     `inherit` statt `400`, damit jede Ebene ihr eigenes Gewicht behält: Anton-
     h1/h2 bleiben 400, die Manrope-Überschriften h3 (800) und h4 (700) behalten
     ihres — dort würde `<strong>` sonst `bolder` auf 800 rechnen und ebenfalls
     synthetisch fetten. h5/h6 sind mit drin, obwohl sie aktuell keine eigene
     Regel haben: kostet nichts und gilt dann auch für später.
     Bitte nicht als überflüssig wegräumen — die Regel greift gegen Inhalt, den
     man im Code nicht sieht. */

.prose-hexa :is(h1, h2, h3, h4, h5, h6) :is(b, strong) {
  font-weight: inherit;
}

/* Zitate sind ebenfalls Anton (siehe .prose-hexa blockquote p weiter unten) */

.prose-hexa blockquote p :is(b, strong) {
  font-weight: inherit;
}

/* === 2 · Paragraphs + lead =================================== */

.prose-hexa p {
  font-size: 17.5px;
  line-height: 1.75;
  color: rgba(17, 16, 14, 0.85);
  margin: 0 0 22px;
  text-wrap: pretty;
}

/* Projekteigener Ersatz für die entfernte Fremdklasse `break-words`:
     lange ungebrochene Ketten (URLs, E-Mail-Adressen, Codes) brechen um statt
     aus der Spalte zu laufen. Defensiv — beim Aufräumen der Copy-Paste-Klassen
     war messbar nichts zu retten (längste Kette war
     `vorstand@reichsstetthexa.de` mit 27 Zeichen, kein Überlauf bis 320px),
     aber Redaktionstext bekommt irgendwann URLs. Bewusst hier statt als Klasse
     im Inhalt, damit es für alle Prosa gilt und niemand daran denken muss. */

.prose-hexa :is(p, li) {
  overflow-wrap: break-word;
}

.prose-hexa>p.lead,
  .prose-hexa>p:first-of-type.is-lead,
  .prose-hexa .content-text.lead p {
  /* Contao setzt die CSS-Klasse auf den Wrapper-DIV */
  /* Gleiche Schriftgröße wie normaler Body-Text */
  font-size: 17.5px;
  line-height: 1.75;
  /* Etwas mehr Gewicht, volle Ink-Farbe als Hierarchie-Marker */
  font-weight: 500;
  color: #11100E;
  /* Gold-Bar links als Marken-Akzent */
  padding: 4px 0 4px 22px;
  border-left: 3px solid #F8BE29;
  /* Extra-Abstand nach unten, damit der Lead vom Body-Text klar getrennt ist */
  margin-bottom: 38px;
}

/* === 3 · Inline elements ===================================== */

.prose-hexa strong,
  .prose-hexa b {
  font-weight: 700;
  color: #11100E;
}

.prose-hexa em,
  .prose-hexa i {
  font-style: italic;
}

.prose-hexa a {
  color: #C8970F;
  font-weight: 600;
  text-decoration: underline;
  text-decoration-thickness: 1.5px;
  text-underline-offset: 3px;
  text-decoration-color: rgba(248, 190, 41, 0.25);
  transition: color .18s, text-decoration-color .18s;
}

.prose-hexa a:hover {
  color: #11100E;
  text-decoration-color: #11100E;
}

.prose-hexa code {
  font-family: ui-monospace, "SFMono-Regular", Menlo, Consolas, monospace;
  font-size: 0.88em;
  background: rgba(17, 16, 14, 0.06);
  border: 1px solid rgba(17, 16, 14, 0.12);
  border-radius: 4px;
  padding: 0.1em 0.4em;
  color: #1F1C18;
}

.prose-hexa mark {
  background: #F8BE29;
  color: #11100E;
  padding: 0.05em 0.3em;
  border-radius: 2px;
}

.prose-hexa small {
  font-size: 0.82em;
  color: rgba(17, 16, 14, 0.6);
}

/* === 4 · Lists =============================================== */

.prose-hexa ul,
  .prose-hexa ol {
  margin: 0 0 24px;
  padding: 0;
  list-style: none;
  display: flex;
  flex-direction: column;
  gap: 12px;
}

.prose-hexa li {
  position: relative;
  padding-left: 28px;
  font-size: 17px;
  line-height: 1.7;
  color: rgba(17, 16, 14, 0.85);
}

.prose-hexa ul>li::before {
  content: '✦';
  position: absolute;
  left: 4px;
  top: 0;
  color: #C8970F;
  font-size: 13px;
  line-height: 1.9;
}

.prose-hexa ol {
  counter-reset: hexa-ol;
}

.prose-hexa ol>li {
  counter-increment: hexa-ol;
}

.prose-hexa ol>li::before {
  content: counter(hexa-ol) ".";
  position: absolute;
  left: 0;
  top: 0;
  color: #C8970F;
  font-weight: 800;
  font-size: 14px;
  letter-spacing: 0.04em;
  line-height: 1.9;
}

.prose-hexa li>ul,
  .prose-hexa li>ol {
  margin: 12px 0 2px;
  gap: 8px;
}

.prose-hexa li li {
  font-size: 16px;
}

.prose-hexa ul ul>li::before {
  content: '–';
  color: rgba(17, 16, 14, 0.4);
}

/* === 5 · Blockquote (Pull-Quote) ============================= */

.prose-hexa blockquote {
  margin: 44px 0;
  padding: 6px 0 6px 28px;
  border-left: 3px solid #F8BE29;
}

.prose-hexa blockquote p {
  font-family: Anton, Bebas Neue, Impact, sans-serif;
  font-weight: 400;
  font-size: clamp(26px, 3.4vw, 38px);
  line-height: 1.08;
  letter-spacing: 0.005em;
  text-transform: uppercase;
  color: #11100E;
  margin: 0;
}

.prose-hexa blockquote :is(cite, footer) {
  display: block;
  margin-top: 16px;
  font-family: Manrope, system-ui, sans-serif;
  font-style: normal;
  font-size: 13px;
  font-weight: 700;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: #C8970F;
}

/* === 6 · Horizontal rule — Hexa style ======================== */

.prose-hexa hr {
  position: relative;
  border: none;
  height: 1px;
  margin: 52px auto;
  background: linear-gradient(90deg, transparent, rgba(248, 190, 41, 0.25) 18%, rgba(248, 190, 41, 0.25) 82%, transparent);
  overflow: visible;
}

.prose-hexa hr::after {
  content: '✦';
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  background: #FBF8F1;
  color: #C8970F;
  padding: 0 16px;
  font-size: 14px;
  line-height: 1;
}

/* === 7 · Tables ============================================== */

.prose-hexa table {
  width: 100%;
  border-collapse: collapse;
  margin: 32px 0;
  font-size: 16px;
}

.prose-hexa caption {
  caption-side: top;
  text-align: left;
  font-size: 12px;
  font-weight: 700;
  letter-spacing: 0.16em;
  text-transform: uppercase;
  color: #C8970F;
  margin-bottom: 12px;
}

.prose-hexa thead th {
  font-family: Manrope, system-ui, sans-serif;
  font-weight: 800;
  font-size: 12px;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: #11100E;
  text-align: left;
  padding: 12px 16px;
  border-bottom: 2px solid #F8BE29;
}

.prose-hexa tbody td,
  .prose-hexa tbody th {
  padding: 13px 16px;
  border-bottom: 1px solid rgba(17, 16, 14, 0.12);
  color: rgba(17, 16, 14, 0.85);
  text-align: left;
  vertical-align: top;
}

.prose-hexa tfoot td {
  padding: 13px 16px;
  font-size: 14px;
  font-weight: 600;
  color: rgba(17, 16, 14, 0.65);
  border-top: 1px solid rgba(17, 16, 14, 0.12);
}

/* === Body-Eyebrow (für Variante C ohne Page-Header) ============ */

.prose-hexa .body-eyebrow {
  display: block;
  font-family: Manrope, system-ui, sans-serif;
  font-weight: 700;
  font-size: 12px;
  letter-spacing: 0.18em;
  text-transform: uppercase;
  color: #C8970F;
  margin-bottom: 12px;
}

/* ===== INSTAGRAM FEED (Phase 14b) ===== */

/* Masonry-Layout: CSS columns ist die einfachste Lösung für versetzte Höhen */

.insta-masonry {
  -moz-column-count: 1;
       column-count: 1;
  -moz-column-gap: 14px;
       column-gap: 14px;
}

@media (min-width: 640px) {
  .insta-masonry {
    -moz-column-count: 2;
         column-count: 2;
  }
}

@media (min-width: 1024px) {
  .insta-masonry {
    -moz-column-count: 3;
         column-count: 3;
    -moz-column-gap: 16px;
         column-gap: 16px;
  }
}

/* Einzelnes Item */

.insta-item {
  position: relative;
  display: block;
  -moz-column-break-inside: avoid;
       break-inside: avoid;
  /* Verhindert dass ein Bild zwischen Spalten zerrissen wird */
  margin-bottom: 14px;
  overflow: hidden;
  border-radius: 8px;
  background: rgba(245, 239, 224, 0.08);
  /* Fallback während Bild lädt — muss sich vom Ink-Sektionsgrund abheben */
  transition: transform .3s ease;
  text-decoration: none;
}

.insta-item:focus-visible {
  outline: 2px solid #F8BE29;
  outline-offset: 3px;
}

@media (min-width: 1024px) {
  .insta-item {
    margin-bottom: 16px;
  }
}

.insta-item:hover {
  transform: translateY(-2px);
}

.insta-img {
  display: block;
  width: 100%;
  height: auto;
  transition: transform .5s ease;
}

.insta-item:hover .insta-img {
  transform: scale(1.04);
}

/* Type-Badge (Video / Karussell) */

.insta-type-badge {
  position: absolute;
  top: 12px;
  right: 12px;
  z-index: 2;
  background: rgba(17, 16, 14, 0.75);
  color: #F5EFE0;
  width: 28px;
  height: 28px;
  border-radius: 999px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  -webkit-backdrop-filter: blur(4px);
          backdrop-filter: blur(4px);
}

/* Hover-Overlay */

.insta-overlay {
  position: absolute;
  inset: 0;
  background: linear-gradient(180deg,
        rgba(17, 16, 14, 0.0) 0%,
        rgba(17, 16, 14, 0.85) 100%);
  opacity: 0;
  transition: opacity .3s ease;
  display: flex;
  align-items: flex-end;
  padding: 18px;
  pointer-events: none;
  /* Hover greift trotzdem auf das <a>, nicht das Overlay */
}

.insta-item:hover .insta-overlay,
  .insta-item:focus-within .insta-overlay {
  opacity: 1;
}

.insta-overlay-content {
  color: #F5EFE0;
}

.insta-caption {
  font-size: 13px;
  line-height: 1.45;
  margin: 0 0 10px;
  color: rgba(245, 239, 224, 0.92);
  display: -webkit-box;
  -webkit-line-clamp: 4;
  -webkit-box-orient: vertical;
  overflow: hidden;
}

.insta-link-hint {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  font-size: 12px;
  font-weight: 700;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: #F8BE29;
}

/* Auf Touch-Geräten: Overlay immer halb sichtbar (kein Hover möglich) */

@media (hover: none) {
  .insta-overlay {
    opacity: 0.6;
  }

  .insta-item .insta-img {
    transform: none !important;
  }
}

/* ===== MITGLIEDERBEREICH: FELD-BAUSTEIN (Phase 15a) =====
     Die frühere .hexa-auth-*-Kartenfamilie (Login/Passwort-vergessen/
     Passwort-ändern) ist entfallen — die drei Auth-Seiten laufen jetzt über
     .auth-ink bzw. .profile-card plus das hexa-form-Markup (siehe die
     Auth-Sektion am Dateiende). Übrig bleibt .hexa-field, weil die
     Profil-Seite (mod_hexa_profile) sie weiterverwendet.

     Achtung: Die Basiswerte hier sind dunkel gedacht; die Profil-Seite
     überschreibt sie weiter unten gezielt fürs helle Theme (siehe den
     Spezifitäts-Kommentar bei .hexa-profile .profile-card .hexa-field). */

.hexa-field {
  display: flex;
  flex-direction: column;
  gap: 6px;
}

.hexa-field label {
  font-size: 12px;
  font-weight: 700;
  letter-spacing: 0.18em;
  text-transform: uppercase;
  color: #F8BE29;
}

.hexa-field input[type="text"],
  .hexa-field input[type="email"],
  .hexa-field input[type="password"] {
  background: rgba(245, 239, 224, 0.05);
  border: 1px solid rgba(245, 239, 224, 0.18);
  color: #F5EFE0;
  padding: 13px 16px;
  border-radius: 6px;
  font-size: 15px;
  font-family: Manrope, system-ui, sans-serif;
  transition: border-color .15s, background .15s;
}

.hexa-field input:focus {
  outline: none;
  border-color: #F8BE29;
  background: rgba(245, 239, 224, 0.08);
}

/* ===== PROFIL-SEITE (Phase 15b) ===== */

.hexa-profile {
  background: #FBF8F1;
}

.profile-message {
  padding: 14px 18px;
  border-radius: 6px;
  font-size: 14px;
  line-height: 1.55;
  margin-bottom: 24px;
}

.profile-message-success {
  background: rgba(248, 190, 41, 0.12);
  border: 1px solid rgba(248, 190, 41, 0.4);
  color: #C8970F;
}

.profile-message-info {
  background: rgba(31, 28, 24, 0.06);
  border: 1px solid rgba(31, 28, 24, 0.18);
  color: #11100E;
}

.profile-message-error {
  background: rgba(185, 28, 28, 0.08);
  border: 1px solid rgba(185, 28, 28, 0.35);
  border-left-width: 4px;
  color: #7f1d1d;
}

.profile-required {
  color: #b91c1c;
  font-weight: 700;
}

/* Spezial-Variante wenn Email geändert wurde: prominenter */

.profile-message-email-changed {
  background: rgba(248, 190, 41, 0.18);
  border-color: #F8BE29;
  border-left-width: 4px;
  color: #11100E;
}

.profile-message-email-changed strong {
  display: block;
  font-size: 16px;
  margin-bottom: 4px;
  color: #C8970F;
}

.profile-lock-banner {
  background: rgba(248, 190, 41, 0.15);
  border: 1px solid rgba(248, 190, 41, 0.45);
  border-left-width: 4px;
  padding: 16px 18px;
  border-radius: 6px;
  font-size: 14px;
  line-height: 1.55;
  color: #11100E;
  margin: 24px 0;
}

.profile-card {
  background: white;
  border: 1px solid rgba(31, 28, 24, 0.08);
  border-radius: 10px;
  padding: 28px 26px;
  margin-bottom: 22px;
}

.profile-card-title {
  font-family: Manrope, system-ui, sans-serif;
  font-weight: 800;
  font-size: 14px;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: #11100E;
  margin: 0 0 6px;
}

.profile-card-hint {
  font-size: 13px;
  line-height: 1.55;
  color: rgba(31, 28, 24, 0.6);
  margin: 0 0 22px;
}

.profile-grid {
  display: grid;
  grid-template-columns: 1fr;
  gap: 14px;
}

@media (min-width: 640px) {
  .profile-grid {
    grid-template-columns: 1fr 1fr;
  }
}

.profile-field-full {
  grid-column: 1 / -1;
}

/* PLZ schmal, Ort füllt den Rest derselben Zeile */

.profile-plz-ort {
  display: flex;
  gap: 14px;
  align-items: flex-start;
}

.profile-plz-ort .profile-plz {
  flex: 0 0 110px;
}

.profile-plz-ort .profile-ort {
  flex: 1 1 auto;
}

.profile-field-readonly {
  display: flex;
  flex-direction: column;
  gap: 4px;
}

.profile-field-label {
  font-size: 11px;
  font-weight: 700;
  letter-spacing: 0.18em;
  text-transform: uppercase;
  color: #C8970F;
}

.profile-field-value {
  font-size: 15px;
  color: #11100E;
  font-weight: 500;
  word-break: break-word;
}

.profile-field-hint {
  font-size: 12px;
  color: rgba(31, 28, 24, 0.55);
  line-height: 1.5;
  margin-top: 4px;
  display: block;
}

.profile-field-hint strong {
  color: #11100E;
  font-weight: 600;
}

/* Editierbare Felder im hellen Theme. WICHTIG: .hexa-profile-Präfix erhöht
     die Spezifität (0,3,1) gegenüber der Auth-Basisregel .hexa-field
     input[type=…] (0,2,1, Textfarbe cream/hell) — sonst gewinnt die helle
     Auth-Farbe und der eingegebene Text ist kaum lesbar. */

.hexa-profile .profile-card .hexa-field label {
  color: #C8970F;
}

.hexa-profile .profile-card .hexa-field input {
  width: 100%;
  background: #fff;
  border: 1px solid rgba(31, 28, 24, 0.35);
  color: #11100E;
  padding: 13px 16px;
  border-radius: 6px;
  font-size: 15px;
  font-family: Manrope, system-ui, sans-serif;
  transition: border-color .15s, box-shadow .15s, background .15s;
}

.hexa-profile .profile-card .hexa-field input::-moz-placeholder {
  color: rgba(31, 28, 24, 0.4);
}

.hexa-profile .profile-card .hexa-field input::placeholder {
  color: rgba(31, 28, 24, 0.4);
}

.hexa-profile .profile-card .hexa-field input:focus {
  outline: none;
  border-color: #F8BE29;
  background: #fff;
  box-shadow: 0 0 0 3px rgba(248, 190, 41, 0.18);
}

.hexa-profile .profile-card .hexa-field.is-locked input {
  background: rgba(31, 28, 24, 0.05);
  color: rgba(31, 28, 24, 0.5);
  cursor: not-allowed;
}

.hexa-profile .profile-card .hexa-field .profile-field-hint {
  margin-top: 6px;
}

.profile-actions {
  margin-top: 22px;
  display: flex;
  justify-content: flex-end;
}

.profile-actions button[disabled] {
  opacity: 0.5;
  cursor: not-allowed;
}

/* Foto-Block */

.profile-photo-row {
  display: flex;
  gap: 22px;
  align-items: flex-start;
}

.profile-photo-preview {
  flex-shrink: 0;
  width: 96px;
  height: 96px;
  border-radius: 50%;
  overflow: hidden;
  background: rgba(31, 28, 24, 0.06);
  border: 2px solid rgba(248, 190, 41, 0.3);
}

.profile-photo-preview img {
  width: 100%;
  height: 100%;
  -o-object-fit: cover;
     object-fit: cover;
}

.profile-photo-placeholder {
  width: 100%;
  height: 100%;
  display: flex;
  align-items: center;
  justify-content: center;
  color: rgba(31, 28, 24, 0.3);
}

.profile-photo-hint {
  font-size: 13px;
  line-height: 1.55;
  color: rgba(31, 28, 24, 0.6);
  margin: 0;
}

.profile-photo-hint small {
  font-size: 12px;
  opacity: 0.75;
}

/* ===== TOP-NAV: AUTH-ELEMENTE (Phase 15-UX) ===== */

/* Schloss-Icon (nicht eingeloggt) */

.nav-auth-icon {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 38px;
  height: 38px;
  border-radius: 50%;
  border: 1px solid rgba(245, 239, 224, 0.18);
  color: #F5EFE0;
  margin-left: 10px;
  transition: background .2s, border-color .2s, color .2s;
  flex-shrink: 0;
}

.nav-auth-icon:hover {
  background: #F8BE29;
  border-color: #F8BE29;
  color: #11100E;
}

/* Avatar-Dropdown (eingeloggt) */

.nav-user-menu {
  position: relative;
  margin-left: 10px;
  flex-shrink: 0;
}

.nav-user-trigger {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 38px;
  height: 38px;
  border-radius: 50%;
  border: 2px solid #F8BE29;
  background: transparent;
  cursor: pointer;
  padding: 0;
  overflow: hidden;
  transition: border-color .2s, transform .2s;
}

.nav-user-trigger:hover,
  .nav-user-trigger:focus-visible {
  border-color: #FFD04A;
  outline: none;
}

.nav-user-avatar {
  width: 100%;
  height: 100%;
  -o-object-fit: cover;
     object-fit: cover;
  border-radius: 50%;
}

.nav-user-initials {
  font-family: Manrope, system-ui, sans-serif;
  font-weight: 700;
  font-size: 13px;
  letter-spacing: 0.05em;
  color: #F8BE29;
  background: rgba(248, 190, 41, 0.12);
  width: 100%;
  height: 100%;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  border-radius: 50%;
}

/* Dropdown-Inhalt — Optik identisch zur Main-Nav (.nav-dropdown-inner / .nav-sub) */

.nav-user-dropdown {
  position: absolute;
  top: calc(100% + 12px);
  right: 0;
  min-width: 220px;
  background: #17150F;
  border: 1px solid rgba(248, 190, 41, 0.22);
  border-top: 2px solid #F8BE29;
  border-radius: 10px;
  padding: 8px;
  list-style: none;
  margin: 0;
  display: flex;
  flex-direction: column;
  gap: 2px;
  opacity: 0;
  visibility: hidden;
  transform: translateY(8px);
  transition: opacity .2s ease, transform .2s ease, visibility .2s;
  z-index: 100;
}

/* CSS-only Show: bei :hover über dem Menü ODER bei :focus-within */

.nav-user-menu:hover .nav-user-dropdown,
  .nav-user-menu:focus-within .nav-user-dropdown {
  opacity: 1;
  visibility: visible;
  transform: translateY(0);
}

.nav-user-dropdown li {
  margin: 0;
}

.nav-user-dropdown a {
  display: block;
  padding: 10px 14px;
  color: #F5EFE0;
  font-size: 14px;
  font-weight: 600;
  line-height: 1.2;
  text-decoration: none;
  border-radius: 6px;
  transition: background .15s, color .15s;
}

.nav-user-dropdown a:hover,
  .nav-user-dropdown a:focus-visible {
  background: rgba(248, 190, 41, 0.1);
  color: #F8BE29;
  outline: none;
}

.nav-user-divider {
  height: 1px;
  background: rgba(248, 190, 41, 0.15);
  margin: 6px 4px;
}

/* ===== SUB-NAV MITGLIEDERBEREICH (Phase 15-UX) ===== */

.member-subnav {
  background: #1F1C18;
  border-bottom: 1px solid rgba(245, 239, 224, 0.08);
}

.member-subnav-list {
  display: flex;
  list-style: none;
  margin: 0;
  padding: 0;
  gap: 6px;
  flex-wrap: wrap;
  align-items: center;
}

.member-subnav-item {
  margin: 0;
}

/* Logout rechts (durch margin-left:auto auf erstem logout-Item) */

.member-subnav-logout {
  margin-left: auto;
}

.member-subnav-link {
  display: inline-block;
  padding: 8px 14px;
  font-size: 13px;
  font-weight: 600;
  letter-spacing: 0.06em;
  color: rgba(245, 239, 224, 0.65);
  text-decoration: none;
  border-radius: 4px;
  transition: background .15s, color .15s;
}

.member-subnav-link:hover {
  color: #F8BE29;
  background: rgba(248, 190, 41, 0.06);
}

.member-subnav-link.is-active {
  color: #F8BE29;
  background: rgba(248, 190, 41, 0.12);
}

/* Logout-Link: dezent unterscheiden */

.member-subnav-logout .member-subnav-link {
  color: rgba(245, 239, 224, 0.45);
}

.member-subnav-logout .member-subnav-link:hover {
  color: rgba(245, 239, 224, 0.85);
  background: rgba(245, 239, 224, 0.06);
}

/* ===== DASHBOARD MITGLIEDERBEREICH (Phase 15-UX) ===== */

.member-dashboard {
  background: #FBF8F1;
}

.dashboard-lead {
  font-size: 17px;
  line-height: 1.55;
  color: rgba(31, 28, 24, 0.7);
  margin: 0 0 36px;
  max-width: 600px;
}

.dashboard-card {
  background: white;
  border: 1px solid rgba(31, 28, 24, 0.08);
  border-radius: 10px;
  padding: 32px 30px;
  margin-bottom: 22px;
}

.dashboard-card-title {
  font-family: Manrope, system-ui, sans-serif;
  font-weight: 800;
  font-size: 14px;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: #11100E;
  margin: 0 0 22px;
}

.dashboard-profile-row {
  display: flex;
  gap: 26px;
  align-items: flex-start;
  flex-wrap: wrap;
}

.dashboard-avatar {
  flex-shrink: 0;
  width: 100px;
  height: 100px;
  border-radius: 50%;
  overflow: hidden;
  background: rgba(248, 190, 41, 0.12);
  border: 3px solid #F8BE29;
  display: flex;
  align-items: center;
  justify-content: center;
}

.dashboard-avatar img {
  width: 100%;
  height: 100%;
  -o-object-fit: cover;
     object-fit: cover;
}

.dashboard-avatar-initials {
  font-family: Manrope, system-ui, sans-serif;
  font-weight: 700;
  font-size: 30px;
  letter-spacing: 0.05em;
  color: #C8970F;
}

.dashboard-profile-data {
  flex: 1;
  min-width: 240px;
}

.dashboard-data-list {
  display: grid;
  grid-template-columns: max-content 1fr;
  gap: 8px 18px;
  margin: 0;
}

.dashboard-data-list dt {
  font-size: 11px;
  font-weight: 700;
  letter-spacing: 0.18em;
  text-transform: uppercase;
  color: #C8970F;
  align-self: center;
}

.dashboard-data-list dd {
  font-size: 15px;
  color: #11100E;
  font-weight: 500;
  margin: 0;
  word-break: break-word;
}

.dashboard-card-actions {
  margin-top: 28px;
  padding-top: 22px;
  border-top: 1px solid rgba(31, 28, 24, 0.08);
}

.sr-only {
  position: absolute;
  width: 1px;
  height: 1px;
  padding: 0;
  margin: -1px;
  overflow: hidden;
  clip: rect(0, 0, 0, 0);
  white-space: nowrap;
  border-width: 0;
}

.pointer-events-none {
  pointer-events: none;
}

.invisible {
  visibility: hidden;
}

.collapse {
  visibility: collapse;
}

.static {
  position: static;
}

.absolute {
  position: absolute;
}

.relative {
  position: relative;
}

.inset-0 {
  inset: 0px;
}

.inset-y-0 {
  top: 0px;
  bottom: 0px;
}

.bottom-0 {
  bottom: 0px;
}

.bottom-6 {
  bottom: 1.5rem;
}

.left-0 {
  left: 0px;
}

.left-6 {
  left: 1.5rem;
}

.right-0 {
  right: 0px;
}

.z-10 {
  z-index: 10;
}

.m-0 {
  margin: 0px;
}

.mx-auto {
  margin-left: auto;
  margin-right: auto;
}

.mb-0 {
  margin-bottom: 0px;
}

.mb-1 {
  margin-bottom: 0.25rem;
}

.mb-10 {
  margin-bottom: 2.5rem;
}

.mb-12 {
  margin-bottom: 3rem;
}

.mb-2\.5 {
  margin-bottom: 0.625rem;
}

.mb-3 {
  margin-bottom: 0.75rem;
}

.mb-4 {
  margin-bottom: 1rem;
}

.mb-6 {
  margin-bottom: 1.5rem;
}

.mb-7 {
  margin-bottom: 1.75rem;
}

.mb-\[18px\] {
  margin-bottom: 18px;
}

.mt-1 {
  margin-top: 0.25rem;
}

.mt-12 {
  margin-top: 3rem;
}

.mt-2 {
  margin-top: 0.5rem;
}

.mt-3\.5 {
  margin-top: 0.875rem;
}

.mt-4 {
  margin-top: 1rem;
}

.mt-8 {
  margin-top: 2rem;
}

.mt-9 {
  margin-top: 2.25rem;
}

.block {
  display: block;
}

.inline-block {
  display: inline-block;
}

.inline {
  display: inline;
}

.flex {
  display: flex;
}

.inline-flex {
  display: inline-flex;
}

.table {
  display: table;
}

.grid {
  display: grid;
}

.hidden {
  display: none;
}

.aspect-\[4\/5\] {
  aspect-ratio: 4/5;
}

.h-24 {
  height: 6rem;
}

.h-4 {
  height: 1rem;
}

.h-\[160px\] {
  height: 160px;
}

.h-\[38px\] {
  height: 38px;
}

.h-full {
  height: 100%;
}

.h-px {
  height: 1px;
}

.max-h-0 {
  max-height: 0px;
}

.min-h-\[110px\] {
  min-height: 110px;
}

.min-h-screen {
  min-height: 100vh;
}

.w-16 {
  width: 4rem;
}

.w-24 {
  width: 6rem;
}

.w-4 {
  width: 1rem;
}

.w-\[38px\] {
  width: 38px;
}

.w-auto {
  width: auto;
}

.w-full {
  width: 100%;
}

.min-w-0 {
  min-width: 0px;
}

.max-w-2xl {
  max-width: 42rem;
}

.max-w-5xl {
  max-width: 64rem;
}

.max-w-\[200px\] {
  max-width: 200px;
}

.max-w-\[320px\] {
  max-width: 320px;
}

.max-w-\[42\%\] {
  max-width: 42%;
}

.max-w-\[560px\] {
  max-width: 560px;
}

.max-w-\[760px\] {
  max-width: 760px;
}

.max-w-\[860px\] {
  max-width: 860px;
}

.max-w-narrow {
  max-width: 460px;
}

.max-w-site {
  max-width: 1280px;
}

.flex-1 {
  flex: 1 1 0%;
}

.flex-none {
  flex: none;
}

.flex-shrink-0 {
  flex-shrink: 0;
}

.border-collapse {
  border-collapse: collapse;
}

.cursor-pointer {
  cursor: pointer;
}

.select-none {
  -webkit-user-select: none;
     -moz-user-select: none;
          user-select: none;
}

.list-none {
  list-style-type: none;
}

.grid-cols-1 {
  grid-template-columns: repeat(1, minmax(0, 1fr));
}

.grid-cols-3 {
  grid-template-columns: repeat(3, minmax(0, 1fr));
}

.flex-col {
  flex-direction: column;
}

.flex-wrap {
  flex-wrap: wrap;
}

.items-end {
  align-items: flex-end;
}

.items-center {
  align-items: center;
}

.justify-center {
  justify-content: center;
}

.justify-between {
  justify-content: space-between;
}

.gap-10 {
  gap: 2.5rem;
}

.gap-12 {
  gap: 3rem;
}

.gap-2 {
  gap: 0.5rem;
}

.gap-2\.5 {
  gap: 0.625rem;
}

.gap-3\.5 {
  gap: 0.875rem;
}

.gap-4 {
  gap: 1rem;
}

.gap-5 {
  gap: 1.25rem;
}

.gap-6 {
  gap: 1.5rem;
}

.gap-\[10px\] {
  gap: 10px;
}

.gap-\[14px\] {
  gap: 14px;
}

.space-y-5 > :not([hidden]) ~ :not([hidden]) {
  --tw-space-y-reverse: 0;
  margin-top: calc(1.25rem * calc(1 - var(--tw-space-y-reverse)));
  margin-bottom: calc(1.25rem * var(--tw-space-y-reverse));
}

.self-start {
  align-self: flex-start;
}

.overflow-hidden {
  overflow: hidden;
}

.whitespace-nowrap {
  white-space: nowrap;
}

.break-words {
  overflow-wrap: break-word;
}

.break-all {
  word-break: break-all;
}

.rounded-\[4px\] {
  border-radius: 4px;
}

.rounded-full {
  border-radius: 9999px;
}

.rounded-lg {
  border-radius: 0.5rem;
}

.rounded-sm {
  border-radius: 0.125rem;
}

.border {
  border-width: 1px;
}

.border-b {
  border-bottom-width: 1px;
}

.border-t {
  border-top-width: 1px;
}

.border-cream\/10 {
  border-color: rgb(245 239 224 / 0.1);
}

.border-cream\/20 {
  border-color: rgb(245 239 224 / 0.2);
}

.border-cream\/30 {
  border-color: rgb(245 239 224 / 0.3);
}

.border-gold {
  --tw-border-opacity: 1;
  border-color: rgb(248 190 41 / var(--tw-border-opacity, 1));
}

.border-ink\/10 {
  border-color: rgb(17 16 14 / 0.1);
}

.bg-cream {
  --tw-bg-opacity: 1;
  background-color: rgb(245 239 224 / var(--tw-bg-opacity, 1));
}

.bg-gold {
  --tw-bg-opacity: 1;
  background-color: rgb(248 190 41 / var(--tw-bg-opacity, 1));
}

.bg-gold-glow {
  --tw-bg-opacity: 1;
  background-color: rgb(255 208 74 / var(--tw-bg-opacity, 1));
}

.bg-ink {
  --tw-bg-opacity: 1;
  background-color: rgb(17 16 14 / var(--tw-bg-opacity, 1));
}

.bg-ink-soft {
  --tw-bg-opacity: 1;
  background-color: rgb(31 28 24 / var(--tw-bg-opacity, 1));
}

.bg-ink\/10 {
  background-color: rgb(17 16 14 / 0.1);
}

.bg-ink\/50 {
  background-color: rgb(17 16 14 / 0.5);
}

.bg-ink\/65 {
  background-color: rgb(17 16 14 / 0.65);
}

.bg-ink\/80 {
  background-color: rgb(17 16 14 / 0.8);
}

.bg-paper {
  --tw-bg-opacity: 1;
  background-color: rgb(251 248 241 / var(--tw-bg-opacity, 1));
}

.bg-white {
  --tw-bg-opacity: 1;
  background-color: rgb(255 255 255 / var(--tw-bg-opacity, 1));
}

.bg-gradient-to-t {
  background-image: linear-gradient(to top, var(--tw-gradient-stops));
}

.from-ink {
  --tw-gradient-from: #11100E var(--tw-gradient-from-position);
  --tw-gradient-to: rgb(17 16 14 / 0) var(--tw-gradient-to-position);
  --tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to);
}

.via-ink\/40 {
  --tw-gradient-to: rgb(17 16 14 / 0)  var(--tw-gradient-to-position);
  --tw-gradient-stops: var(--tw-gradient-from), rgb(17 16 14 / 0.4) var(--tw-gradient-via-position), var(--tw-gradient-to);
}

.to-transparent {
  --tw-gradient-to: transparent var(--tw-gradient-to-position);
}

.bg-cover {
  background-size: cover;
}

.bg-\[center_30\%\] {
  background-position: center 30%;
}

.bg-center {
  background-position: center;
}

.object-contain {
  -o-object-fit: contain;
     object-fit: contain;
}

.p-0 {
  padding: 0px;
}

.p-5 {
  padding: 1.25rem;
}

.p-6 {
  padding: 1.5rem;
}

.px-2\.5 {
  padding-left: 0.625rem;
  padding-right: 0.625rem;
}

.px-4 {
  padding-left: 1rem;
  padding-right: 1rem;
}

.px-6 {
  padding-left: 1.5rem;
  padding-right: 1.5rem;
}

.px-8 {
  padding-left: 2rem;
  padding-right: 2rem;
}

.py-1 {
  padding-top: 0.25rem;
  padding-bottom: 0.25rem;
}

.py-10 {
  padding-top: 2.5rem;
  padding-bottom: 2.5rem;
}

.py-12 {
  padding-top: 3rem;
  padding-bottom: 3rem;
}

.py-20 {
  padding-top: 5rem;
  padding-bottom: 5rem;
}

.py-3 {
  padding-top: 0.75rem;
  padding-bottom: 0.75rem;
}

.py-3\.5 {
  padding-top: 0.875rem;
  padding-bottom: 0.875rem;
}

.pb-20 {
  padding-bottom: 5rem;
}

.pb-8 {
  padding-bottom: 2rem;
}

.pb-\[60px\] {
  padding-bottom: 60px;
}

.pt-10 {
  padding-top: 2.5rem;
}

.pt-20 {
  padding-top: 5rem;
}

.pt-8 {
  padding-top: 2rem;
}

.pt-\[120px\] {
  padding-top: 120px;
}

.text-center {
  text-align: center;
}

.font-display {
  font-family: Anton, Bebas Neue, Impact, sans-serif;
}

.font-sans {
  font-family: Manrope, system-ui, sans-serif;
}

.text-2xl {
  font-size: 1.5rem;
  line-height: 2rem;
}

.text-4xl {
  font-size: 2.25rem;
  line-height: 2.5rem;
}

.text-5xl {
  font-size: 3rem;
  line-height: 1;
}

.text-6xl {
  font-size: 3.75rem;
  line-height: 1;
}

.text-7xl {
  font-size: 4.5rem;
  line-height: 1;
}

.text-8xl {
  font-size: 6rem;
  line-height: 1;
}

.text-9xl {
  font-size: 8rem;
  line-height: 1;
}

.text-\[0\.65em\] {
  font-size: 0.65em;
}

.text-\[10px\] {
  font-size: 10px;
}

.text-\[18px\] {
  font-size: 18px;
}

.text-base {
  font-size: 1rem;
  line-height: 1.5rem;
}

.text-lg {
  font-size: 1.125rem;
  line-height: 1.75rem;
}

.text-sm {
  font-size: 0.875rem;
  line-height: 1.25rem;
}

.text-xl {
  font-size: 1.25rem;
  line-height: 1.75rem;
}

.text-xs {
  font-size: 0.75rem;
  line-height: 1rem;
}

.font-bold {
  font-weight: 700;
}

.font-semibold {
  font-weight: 600;
}

.uppercase {
  text-transform: uppercase;
}

.leading-\[0\.92\] {
  line-height: 0.92;
}

.leading-\[0\.9\] {
  line-height: 0.9;
}

.leading-\[1\.55\] {
  line-height: 1.55;
}

.leading-\[1\.65\] {
  line-height: 1.65;
}

.leading-none {
  line-height: 1;
}

.leading-relaxed {
  line-height: 1.625;
}

.leading-tight {
  line-height: 1.25;
}

.tracking-\[0\.06em\] {
  letter-spacing: 0.06em;
}

.tracking-\[0\.12em\] {
  letter-spacing: 0.12em;
}

.tracking-\[0\.18em\] {
  letter-spacing: 0.18em;
}

.tracking-eyebrow {
  letter-spacing: 0.18em;
}

.tracking-tighter {
  letter-spacing: -0.05em;
}

.tracking-wide {
  letter-spacing: 0.025em;
}

.text-cream {
  --tw-text-opacity: 1;
  color: rgb(245 239 224 / var(--tw-text-opacity, 1));
}

.text-cream\/20 {
  color: rgb(245 239 224 / 0.2);
}

.text-cream\/45 {
  color: rgb(245 239 224 / 0.45);
}

.text-cream\/60 {
  color: rgb(245 239 224 / 0.6);
}

.text-cream\/70 {
  color: rgb(245 239 224 / 0.7);
}

.text-cream\/80 {
  color: rgb(245 239 224 / 0.8);
}

.text-cream\/85 {
  color: rgb(245 239 224 / 0.85);
}

.text-gold {
  --tw-text-opacity: 1;
  color: rgb(248 190 41 / var(--tw-text-opacity, 1));
}

.text-gold-deep {
  --tw-text-opacity: 1;
  color: rgb(200 151 15 / var(--tw-text-opacity, 1));
}

.text-ink {
  --tw-text-opacity: 1;
  color: rgb(17 16 14 / var(--tw-text-opacity, 1));
}

.text-ink\/60 {
  color: rgb(17 16 14 / 0.6);
}

.text-ink\/70 {
  color: rgb(17 16 14 / 0.7);
}

.text-ink\/80 {
  color: rgb(17 16 14 / 0.8);
}

.text-ink\/85 {
  color: rgb(17 16 14 / 0.85);
}

.antialiased {
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
}

.opacity-0 {
  opacity: 0;
}

.opacity-45 {
  opacity: 0.45;
}

.opacity-55 {
  opacity: 0.55;
}

.opacity-75 {
  opacity: 0.75;
}

.opacity-\[0\.08\] {
  opacity: 0.08;
}

.outline-gold {
  outline-color: #F8BE29;
}

.filter {
  filter: var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow);
}

.backdrop-filter {
  -webkit-backdrop-filter: var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);
  backdrop-filter: var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);
}

.transition {
  transition-property: color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, -webkit-backdrop-filter;
  transition-property: color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, backdrop-filter;
  transition-property: color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, backdrop-filter, -webkit-backdrop-filter;
  transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
  transition-duration: 150ms;
}

.transition-all {
  transition-property: all;
  transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
  transition-duration: 150ms;
}

.transition-colors {
  transition-property: color, background-color, border-color, text-decoration-color, fill, stroke;
  transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
  transition-duration: 150ms;
}

.transition-opacity {
  transition-property: opacity;
  transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
  transition-duration: 150ms;
}

.transition-transform {
  transition-property: transform;
  transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
  transition-duration: 150ms;
}

.duration-300 {
  transition-duration: 300ms;
}

.duration-500 {
  transition-duration: 500ms;
}

/* ==========================================================================
   Sticky Footer, Teil 2: Wachstums-Kette bis zum Hintergrund-Träger
   --------------------------------------------------------------------------
   Teil 1 allein reichte nicht: #main wuchs zwar in den Restraum, ist aber
   selbst transparent. Auf kurzen Seiten zeigte der Restraum darum das weiße
   Canvas — der bekannte „weiße Streifen" über dem Footer (empirisch gemessen:
   z. B. /mitglieder/passwort-vergessen, Lücke von main.flex-1 gehalten,
   Hintergrund keiner).

   Lösung: die Kette bis zu dem Element durchziehen, das den Hintergrund
   mitbringt. Direkte Kinder von .mod_article sind im ganzen Projekt
   ausschließlich Full-Bleed-Sektionen mit eigenem Hintergrund (header,
   section, main.prose-page) — die letzte davon wächst in den Restraum.
   Damit stimmt die Farbe automatisch für helle Seiten (.prose-page = paper)
   und dunkle (.auth-ink = ink), ohne Pflaster auf dem body.

   flex-basis bleibt auto, flex-shrink 0: das Wachstum greift nur, wenn
   überhaupt freier Platz da ist — lange Seiten bleiben unverändert und der
   Footer klebt dort nicht am Viewport-Boden.

   Bewusst außerhalb @layer components: .mod_article entsteht erst zur Laufzeit
   durch Contao und würde von Tailwind weggepurged (siehe CLAUDE.md).
   ========================================================================== */

#main {
  display: flex;
  flex-direction: column;
  /* explizit statt der Utility-Klasse flex-1 (= flex: 1 1 0%) im Template:
     eine Definition an einer Stelle, und flex-basis auto statt 0. */
  flex: 1 0 auto;
  /* Fallback für Artikel ohne Hintergrund-Sektion (z. B. leerer Artikel).
     Im Normalfall überdeckt die wachsende Sektion diese Fläche vollständig. */
  background: #FBF8F1;
}

#main > .mod_article {
  display: flex;
  flex-direction: column;
  flex-shrink: 0;
}

#main > .mod_article:last-child,
#main > .mod_article:last-child > :last-child {
  flex-grow: 1;
}

/* Contao: .invisible-Klasse auf Skip-Links per sr-only überschreiben (Fallback) */

/* Hero: Vignette-Gradient + Outline-Headline (nicht per Tailwind-Utility ausdrückbar) */

/* === Footer-Navigationen: Modul-Überschrift =======================
   Die Überschrift kommt aus dem "Überschrift"-Feld des Nav-Moduls und
   wird vom äußeren Modul-Wrapper als <hN> direkt im <nav> ausgegeben.
   Bewusst AUSSERHALB von @layer components, da Tailwind sonst die Regel
   purged (Klassen mod_navigation/mod_customnav entstehen erst zur
   Laufzeit, tauchen nicht im Template-Quelltext auf). Optik = Kontakt-h4. */

footer .mod_navigation> :is(h1, h2, h3, h4, h5, h6),
footer .mod_customnav> :is(h1, h2, h3, h4, h5, h6) {
  font-family: Anton, Bebas Neue, Impact, sans-serif;
  font-size: 1rem;
  line-height: 1.5rem;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  color: #F8BE29;
  margin: 0 0 18px;
}

/* === Aufnahmeantrag-Formular & Inhalts-Boxen (Handoff-Portierung) ===
   Formular- und Prose-Komponenten aus dem Design-Handoff (styles.css
   Sektion 10/11/13). Bewusst AUSSERHALB von @layer components: die
   Klassen (hexa-form, formbody, widget-*, radio_container, choice-cards,
   consent, form-confirmation, submit …) entstehen zur Laufzeit aus dem
   Contao-Form-Output bzw. stehen in der DB und tauchen in KEINEM
   Template-Quelltext auf -> Tailwind würde sie in @layer sonst purgen
   (siehe footer-nav oben, gleiches Muster).
   Farbwerte = Tokens via theme(); Alpha-Blends (--line/--line-gold und
   Text-Opazitäten) als rgba direkt, da kein Token existiert. */

/* --- PDF / Download-Card (Seiten-Content, Schritt 3) --------------- */

.pdf-list {
  display: flex;
  flex-direction: column;
  gap: 12px;
  margin: 32px 0;
}

.pdf-card {
  display: grid;
  grid-template-columns: auto 1fr auto;
  align-items: center;
  gap: 22px;
  padding: 20px 22px;
  background: #fff;
  border: 1px solid rgba(17, 16, 14, 0.12);
  border-radius: 8px;
  transition: border-color .2s, transform .2s, box-shadow .2s;
  text-decoration: none;
}

.pdf-card:hover {
  border-color: #11100E;
  transform: translateY(-2px);
  box-shadow: 0 14px 34px rgba(17, 16, 14, 0.08);
}

.pdf-card-icon {
  width: 52px;
  height: 64px;
  flex-shrink: 0;
  position: relative;
  background: #11100E;
  border-radius: 5px;
  display: flex;
  align-items: flex-end;
  justify-content: center;
  padding-bottom: 9px;
  font-family: Manrope, system-ui, sans-serif;
  font-weight: 800;
  font-size: 11px;
  letter-spacing: 0.1em;
  color: #F8BE29;
}

.pdf-card-icon::before {
  /* dog-ear */
  content: '';
  position: absolute;
  top: 0;
  right: 0;
  border-width: 0 14px 14px 0;
  border-style: solid;
  border-color: #FBF8F1 #FBF8F1 transparent transparent;
}

.pdf-card-body {
  min-width: 0;
}

.pdf-card-title {
  display: block;
  font-family: Manrope, system-ui, sans-serif;
  font-weight: 700;
  font-size: 17px;
  color: #11100E;
  line-height: 1.25;
  margin-bottom: 4px;
}

.pdf-card-desc {
  display: block;
  font-size: 14px;
  line-height: 1.45;
  color: rgba(17, 16, 14, 0.62);
  margin-bottom: 8px;
}

.pdf-card-meta {
  display: flex;
  flex-wrap: wrap;
  gap: 6px 14px;
  font-size: 11.5px;
  font-weight: 600;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: rgba(17, 16, 14, 0.45);
}

.pdf-card-action {
  flex-shrink: 0;
  width: 46px;
  height: 46px;
  border-radius: 50%;
  background: #F8BE29;
  color: #11100E;
  display: flex;
  align-items: center;
  justify-content: center;
  transition: background .2s, transform .2s;
}

.pdf-card:hover .pdf-card-action {
  background: #11100E;
  color: #F8BE29;
  transform: translateY(2px);
}

/* Reset: .prose-hexa a (Gold + Unterstrich) ist spezifischer als .pdf-card
   und würde die ganze Karte unterstreichen -> hier neutralisieren. */

.prose-hexa a.pdf-card,
.prose-hexa a.pdf-card:hover {
  color: inherit;
  text-decoration: none;
  font-weight: inherit;
}

/* Download-Pfeil als CSS-Mask: Inline-SVG wird vom HTML-Inhaltselement zu
   Entities encodiert, daher via mask + currentColor (behält Hover-Wechsel). */

.pdf-card-action::before {
  content: '';
  width: 18px;
  height: 18px;
  background-color: currentColor;
  -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='18' height='18' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4M7 10l5 5 5-5M12 15V3'/%3E%3C/svg%3E") center / contain no-repeat;
  mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='18' height='18' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4M7 10l5 5 5-5M12 15V3'/%3E%3C/svg%3E") center / contain no-repeat;
}

/* --- Dokument-Liste (CE "Dokumente (Hexa)") ------------------------
   Nutzt .pdf-card/.pdf-list von oben weiter; hier kommen nur die
   Zustände dazu, die es vorher nicht gab: "intern" (Schloss-Badge) und
   "gesperrt" (intern + nicht angemeldet).

   Wichtig: Ein gesperrtes Dokument sieht bewusst NICHT deaktiviert aus.
   Es ist ein gültiger Link — er führt zur Anmeldung und danach zurück.
   Grau-ausgegraut würde suggerieren, dass da nichts passiert. */

.hexa-downloads {
  margin: 32px 0;
  /* Anker-Ziel nach dem Login: nicht direkt unter die Sticky-Nav springen */
  scroll-margin-top: 96px;
}

.hexa-downloads-head {
  margin-bottom: 14px;
}

.hexa-downloads-text {
  margin-bottom: 18px;
}

.hexa-downloads-list {
  display: flex;
  flex-direction: column;
  gap: 12px;
}

.hexa-downloads-note {
  margin-top: 14px;
  font-size: 13px;
  line-height: 1.5;
  color: rgba(17, 16, 14, 0.55);
}

/* Schloss-Pille in der Meta-Zeile — dieselbe Sprache wie .login-badge in
   der Termin-Anhänge-Box, nur kleiner. */

.pdf-card-badge {
  display: inline-flex;
  align-items: center;
  gap: 5px;
  color: #C8970F;
}

.pdf-card-badge svg {
  flex-shrink: 0;
}

/* Interne Dokumente: dezenter Gold-Akzent links, damit sie sich in einer
   gemischten Liste ohne Lesen der Meta-Zeile unterscheiden. */

.pdf-card-internal {
  border-left: 3px solid rgba(248, 190, 41, 0.55);
}

/* Gesperrt: Kreis neutral statt Gold, Maske wird zum Schloss. Beim Hover
   erbt der Kreis weiterhin die Ink/Gold-Umkehr von .pdf-card:hover. */

.pdf-card-locked .pdf-card-action {
  background: rgba(17, 16, 14, 0.08);
  color: #11100E;
}

.pdf-card-locked .pdf-card-action::before {
  -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='18' height='18' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2.2' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='3' y='11' width='18' height='11' rx='2'/%3E%3Cpath d='M7 11V7a5 5 0 0 1 10 0v4'/%3E%3C/svg%3E") center / contain no-repeat;
  mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='18' height='18' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2.2' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='3' y='11' width='18' height='11' rx='2'/%3E%3Cpath d='M7 11V7a5 5 0 0 1 10 0v4'/%3E%3C/svg%3E") center / contain no-repeat;
}

@media (max-width: 520px) {
  /* Auf schmalen Displays hat der Aktionskreis keinen Platz mehr neben
     Icon + Titel; die Karte wird zweispaltig und der Kreis entfällt. */

  .hexa-downloads-list .pdf-card {
    grid-template-columns: auto 1fr;
    gap: 14px;
    padding: 16px;
  }

  .hexa-downloads-list .pdf-card-action {
    display: none;
  }

  .hexa-downloads-list .pdf-card-icon {
    width: 42px;
    height: 52px;
  }
}

/* --- Note (hell, Gold-Rahmen) / Callout (dunkel) ------------------- */

.prose-hexa .note,
.prose-hexa aside.note {
  margin: 32px 0;
  padding: 20px 24px;
  background: rgba(248, 190, 41, 0.1);
  border: 1px solid rgba(248, 190, 41, 0.25);
  border-left: 4px solid #F8BE29;
  border-radius: 8px;
}

.prose-hexa .note> :last-child {
  margin-bottom: 0;
}

.prose-hexa .note p {
  font-size: 16px;
  color: rgba(17, 16, 14, 0.82);
}

.prose-hexa .note-title {
  display: block;
  font-family: Manrope, system-ui, sans-serif;
  font-weight: 800;
  font-size: 12px;
  letter-spacing: 0.16em;
  text-transform: uppercase;
  color: #C8970F;
  margin-bottom: 8px;
}

/* Zitat-/Archiv-Block ("Damals angekündigt") — Text-Element mit CSS-Klasse
   "archive-quote". Bewusst distinkt von .note (Info) und .callout (CTA):
   neutrale Cream-Flaeche + kraeftige Gold-Linie links + Kicker-Ueberschrift,
   Text kursiv als "Zitat/damals". Runtime-Klasse -> ausserhalb @layer. */

.prose-hexa .archive-quote {
  margin: 36px 0;
  padding: 24px 28px;
  background: #F5EFE0;
  border-left: 4px solid #C8970F;
  border-radius: 8px;
  display: flow-root;
  /* haelt ein evtl. floated Bild INNERHALB des Blocks */
}

/* Kicker: eine Ueberschrift im Block (gleiches Muster wie note/callout) */

.prose-hexa .archive-quote :is(h2, h3, h4, h5, h6) {
  font-family: Manrope, system-ui, sans-serif;
  font-weight: 800;
  font-size: 12px;
  letter-spacing: 0.16em;
  text-transform: uppercase;
  color: #C8970F;
  margin: 0 0 12px;
  line-height: 1.3;
}

.prose-hexa .archive-quote p {
  font-size: 17.5px;
  line-height: 1.75;
  font-style: italic;
  color: rgba(17, 16, 14, 0.72);
  margin: 0 0 12px;
}

.prose-hexa .archive-quote p:last-child {
  margin-bottom: 0;
}

.prose-hexa .archive-quote a {
  color: #C8970F;
  font-weight: 600;
}

.prose-hexa .callout {
  margin: 36px 0;
  background: #11100E;
  color: #F5EFE0;
  border-radius: 8px;
  padding: 26px 28px;
  border-left: 4px solid #F8BE29;
}

.prose-hexa .callout p {
  color: rgba(245, 239, 224, 0.85);
  font-size: 15.5px;
  margin-bottom: 0;
}

.prose-hexa .callout .note-title {
  color: #F8BE29;
}

/* Wartungsfreundlich: Note/Callout werden als Text-Element (RTE) gepflegt.
   Eine Überschrift darin rendert als Gold-Titel (statt .note-title-Span),
   damit der Vorstand den Titel bequem im Editor setzen kann. */

.prose-hexa .note :is(h2, h3, h4, h5, h6),
.prose-hexa .callout :is(h2, h3, h4, h5, h6) {
  font-family: Manrope, system-ui, sans-serif;
  font-weight: 800;
  font-size: 12px;
  letter-spacing: 0.16em;
  text-transform: uppercase;
  color: #C8970F;
  margin: 0 0 8px;
  line-height: 1.3;
}

.prose-hexa .callout :is(h2, h3, h4, h5, h6) {
  color: #F8BE29;
}

/* Breite Tabellen (z.B. Event-Aufstellungen) auf schmalen Viewports horizontal
   scrollbar statt abgeschnitten. Klasse kommt aus DB-Content -> ausserhalb
   @layer components (sonst von Tailwind gepurged). */

.prose-hexa .table-scroll {
  overflow-x: auto;
  margin: 32px 0;
}

.prose-hexa .table-scroll > table {
  margin: 0;
}

/* Floated Bilder in Text-/Bild-Elementen. Contao 5 rendert
   <div class="content-text media media--right"><figure><img></figure><div class="rte">…
   Das Prose-System stylt Bilder nicht, .media--* ist ungestylt -> Float + Umfluss
   hier aktivieren. Klassen entstehen zur Laufzeit -> ausserhalb @layer components. */

.prose-hexa .media--left,
.prose-hexa .media--right {
  display: flow-root;
  /* Float innerhalb des Elements halten (nicht ins nächste CE) */
}

.prose-hexa .media--right figure {
  float: right;
  margin: 0 0 1rem 1.5rem;
}

.prose-hexa .media--left figure {
  float: left;
  margin: 0 1.5rem 1rem 0;
}

.prose-hexa .media figure img {
  max-width: 100%;
  height: auto;
}

/* Mobile: Float aufheben, Bild volle Breite oben */

@media (max-width: 640px) {
  .prose-hexa .media--left figure,
  .prose-hexa .media--right figure {
    float: none;
    width: 100%;
    margin: 0 0 1rem;
  }

  .prose-hexa .media--left figure img,
  .prose-hexa .media--right figure img {
    width: 100%;
  }
}

/* ==========================================================================
   Sponsoren-Logo-Raster (.sponsor-grid)
   --------------------------------------------------------------------------
   Wiederverwendbarer Baustein fuer das Contao-Galerie-CE (ganzer Ordner
   einbindbar). CSS-Klasse "sponsor-grid" am Galerie-Element setzen.
   Kachel-Prinzip: gleich hohe Zellen, Logo zentriert, object-fit: contain
   -> trotz sehr unterschiedlicher Logo-Formate (Banner 4.35 bis Hochkant
   0.88, teils weisser/farbiger Hintergrund) ein ruhiges, gleichmaessiges
   Raster. Bewusst OHNE Kachel-Hintergrund/Border (so von Tobias entschieden)
   -> die Logos werden 1:1 so dargestellt wie sie sind.
   Klasse entsteht zur Laufzeit im Galerie-Markup -> bewusst AUSSERHALB
   @layer components, damit Tailwind sie nicht purged (vgl. .media--*). */

/* Spaltenzahl steuert Tobias im Galerie-CE ueber das Feld "Bilder pro Zeile".
   Contao 5.7 rendert die Galerie via Twig: das <ul> hat KEINE Spalten-Klasse
   mehr, stattdessen traegt der Wrapper-DIV die Klasse
   .content-gallery--cols-N (gleiches Element wie .sponsor-grid). Darauf mappen
   wir die Grid-Spalten. Mobile immer 2, Tablet hoechstens 3, ab Desktop die
   volle Backend-Zahl.
   minmax(0, 1fr) statt 1fr: verhindert, dass breite Logos die Grid-Spur
   ueber die Viewport-Breite hinaus aufblasen (Min-Content-Overflow). */

.prose-hexa .sponsor-grid ul {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 12px 14px;
  margin: 32px 0;
  padding: 0;
  list-style: none;
}

/* Tablet: Backend-Wert, aber hoechstens 3 Spalten */

@media (min-width: 640px) {
  .prose-hexa .sponsor-grid.content-gallery--cols-1 ul {
    grid-template-columns: repeat(1, minmax(0, 1fr));
  }

  .prose-hexa .sponsor-grid.content-gallery--cols-2 ul {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .prose-hexa .sponsor-grid.content-gallery--cols-3 ul,
  .prose-hexa .sponsor-grid.content-gallery--cols-4 ul,
  .prose-hexa .sponsor-grid.content-gallery--cols-5 ul,
  .prose-hexa .sponsor-grid.content-gallery--cols-6 ul {
    grid-template-columns: repeat(3, minmax(0, 1fr));
  }
}

/* Desktop: volle Spaltenzahl aus dem Backend-Feld "Bilder pro Zeile" */

@media (min-width: 1024px) {
  .prose-hexa .sponsor-grid.content-gallery--cols-1 ul {
    grid-template-columns: repeat(1, minmax(0, 1fr));
  }

  .prose-hexa .sponsor-grid.content-gallery--cols-2 ul {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .prose-hexa .sponsor-grid.content-gallery--cols-3 ul {
    grid-template-columns: repeat(3, minmax(0, 1fr));
  }

  .prose-hexa .sponsor-grid.content-gallery--cols-4 ul {
    grid-template-columns: repeat(4, minmax(0, 1fr));
  }

  .prose-hexa .sponsor-grid.content-gallery--cols-5 ul {
    grid-template-columns: repeat(5, minmax(0, 1fr));
  }

  .prose-hexa .sponsor-grid.content-gallery--cols-6 ul {
    grid-template-columns: repeat(6, minmax(0, 1fr));
  }
}

/* Kachel: gleiche Hoehe, Logo zentriert. Prose-Listen-Styling
   (Aufzaehlungszeichen, padding-left, Schrift) hier neutralisieren. */

.prose-hexa .sponsor-grid li {
  margin: 0;
  padding: 6px 10px;
  min-height: 150px;
  display: flex;
  align-items: center;
  justify-content: center;
}

.prose-hexa .sponsor-grid ul > li::before {
  content: none;
}

.prose-hexa .sponsor-grid figure {
  margin: 0;
  width: 100%;
  display: flex;
  align-items: center;
  justify-content: center;
}

/* object-fit: contain + gedeckelte Hoehe/Breite -> Banner und Hochkant-Logos
   bekommen aehnliche visuelle Praesenz, nichts wird riesig/winzig. Die
   max-width-Deckelung haelt sehr breite Banner (Volksbank) im Zaum, damit
   sie neben quadratischen Logos nicht dominieren. */

.prose-hexa .sponsor-grid img {
  max-width: min(100%, 340px);
  max-height: 150px;
  width: auto;
  height: auto;
  -o-object-fit: contain;
     object-fit: contain;
}

.prose-hexa .callout a:hover,
.prose-hexa .callout a:focus {
  /* oder cream/paper — heller als der Grund */
  color: #FFD04A;
  /* oder cream/paper — heller als der Grund */
}

/* --- hexa-form: Grundabstand -------------------------------------- */

/* Bewusst KEINE max-width: Formular läuft full-width mit dem übrigen
   content-wide-Inhalt der Seite (so von Tobias entschieden). */

.hexa-form {
  margin: 40px 0;
}

/* --- Field-Grid: widgets sind Flex-Items in .formbody ------------- */

.hexa-form .formbody {
  display: flex;
  flex-wrap: wrap;
  gap: 22px 20px;
  margin: 0;
  padding: 0;
  list-style: none;
  border: none;
}

.hexa-form .widget {
  flex: 1 1 100%;
  min-width: 0;
  display: flex;
  flex-direction: column;
  gap: 9px;
}

.hexa-form .widget.w50 {
  flex-basis: calc(50% - 10px);
}

.hexa-form .widget.w33 {
  flex-basis: calc(33.333% - 14px);
}

.hexa-form .widget.w25 {
  flex-basis: calc(25% - 15px);
}

.hexa-form .widget.w75 {
  flex-basis: calc(75% - 10px);
}

.hexa-form .widget.wfill {
  flex: 1 1 220px;
}

/* --- Labels — Eyebrow-Stil ---------------------------------------- */

.hexa-form label {
  font-family: Manrope, system-ui, sans-serif;
  font-weight: 700;
  font-size: 11px;
  letter-spacing: 0.16em;
  text-transform: uppercase;
  color: rgba(17, 16, 14, 0.65);
  line-height: 1.35;
}

.hexa-form label .mandatory,
.hexa-form legend .mandatory {
  color: #C8970F;
  margin-left: 3px;
}

.hexa-form .invisible {
  position: absolute;
  width: 1px;
  height: 1px;
  padding: 0;
  margin: -1px;
  overflow: hidden;
  clip: rect(0 0 0 0);
  white-space: nowrap;
  border: 0;
}

/* --- Text-Inputs + select + textarea ------------------------------ */

.hexa-form input.text,
.hexa-form input[type="text"],
.hexa-form input[type="email"],
.hexa-form input[type="tel"],
.hexa-form input[type="url"],
.hexa-form input[type="number"],
.hexa-form input[type="date"],
.hexa-form input[type="time"],
.hexa-form input[type="password"],
.hexa-form select,
.hexa-form textarea {
  width: 100%;
  font-family: Manrope, system-ui, sans-serif;
  font-size: 16px;
  /* >=16px -> kein iOS-Zoom beim Fokus */
  font-weight: 500;
  line-height: 1.4;
  color: #11100E;
  background: #fff;
  border: 1px solid rgba(17, 16, 14, 0.12);
  border-radius: 5px;
  padding: 13px 15px;
  transition: border-color .18s, box-shadow .18s;
  -webkit-appearance: none;
  -moz-appearance: none;
       appearance: none;
}

.hexa-form textarea {
  min-height: 140px;
  resize: vertical;
  line-height: 1.6;
}

.hexa-form ::-moz-placeholder {
  color: rgba(17, 16, 14, 0.42);
}

.hexa-form ::placeholder {
  color: rgba(17, 16, 14, 0.42);
}

.hexa-form input.text:hover,
.hexa-form input[type="date"]:hover,
.hexa-form select:hover,
.hexa-form textarea:hover {
  border-color: rgba(17, 16, 14, 0.32);
}

.hexa-form input:focus,
.hexa-form select:focus,
.hexa-form textarea:focus {
  outline: none;
  border-color: #11100E;
  box-shadow: 0 0 0 3px rgba(248, 190, 41, 0.30);
}

/* Native select-Pfeil -> Custom-Chevron */

.hexa-form select {
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='%2311100E' stroke-width='2.4' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M6 9l6 6 6-6'/%3E%3C/svg%3E");
  background-repeat: no-repeat;
  background-position: right 14px center;
  background-size: 16px;
  padding-right: 44px;
  cursor: pointer;
}

/* --- Gruppen-Überschrift (html-Feldtyp) --------------------------- */

.hexa-form .widget-headline {
  flex: 1 1 100%;
  gap: 0;
  margin-top: 16px;
}

.hexa-form .widget-headline:first-child {
  margin-top: 0;
}

.hexa-form .widget-headline :is(h1, h2, h3, h4, h5, h6) {
  font-family: Manrope, system-ui, sans-serif;
  font-weight: 800;
  font-size: 13px;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: #11100E;
  padding-bottom: 12px;
  border-bottom: 1px solid rgba(248, 190, 41, 0.25);
  margin: 0;
}

/* --- Radio / Checkbox --------------------------------------------- */

.hexa-form .radio_container,
.hexa-form .checkbox_container {
  flex: 1 1 100%;
  border: none;
  padding: 0;
  margin: 0;
  min-width: 0;
  display: grid;
  gap: 10px;
}

.hexa-form fieldset legend {
  font-family: Manrope, system-ui, sans-serif;
  font-weight: 700;
  font-size: 11px;
  letter-spacing: 0.16em;
  text-transform: uppercase;
  color: rgba(17, 16, 14, 0.65);
  margin-bottom: 4px;
  padding: 0;
  line-height: 1.35;
  float: none;
}

.hexa-form .radio_container>span,
.hexa-form .checkbox_container>span {
  display: flex;
  align-items: flex-start;
  gap: 12px;
}

.hexa-form .radio_container label,
.hexa-form .checkbox_container label {
  font-weight: 600;
  font-size: 15.5px;
  letter-spacing: 0;
  text-transform: none;
  color: rgba(17, 16, 14, 0.88);
  line-height: 1.45;
  cursor: pointer;
}

.hexa-form .radio_container label small,
.hexa-form .checkbox_container label small {
  display: block;
  font-size: 12.5px;
  font-weight: 600;
  color: rgba(17, 16, 14, 0.5);
  letter-spacing: 0.02em;
  margin-top: 2px;
}

.hexa-form input[type="radio"],
.hexa-form input[type="checkbox"] {
  flex-shrink: 0;
  width: 21px;
  height: 21px;
  margin: 1px 0 0;
  accent-color: #C8970F;
  cursor: pointer;
}

/* Auswahl-Karten (choice-cards) — Mitgliedschaftsart */

.hexa-form .choice-cards {
  grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));
  gap: 12px;
}

.hexa-form .choice-cards>span {
  align-items: center;
  gap: 12px;
  padding: 16px 18px;
  background: #fff;
  border: 1px solid rgba(17, 16, 14, 0.12);
  border-radius: 8px;
  cursor: pointer;
  transition: border-color .18s, box-shadow .18s, background .18s;
}

.hexa-form .choice-cards>span:hover {
  border-color: rgba(17, 16, 14, 0.32);
}

.hexa-form .choice-cards>span:has(input:checked) {
  border-color: #C8970F;
  background: rgba(248, 190, 41, 0.10);
  box-shadow: inset 0 0 0 1px #C8970F;
}

.hexa-form .choice-cards label {
  font-weight: 700;
}

/* Einzelne Zustimmung (consent) — Satzung / Bildrechte */

.hexa-form .checkbox_container.consent>span {
  align-items: flex-start;
  padding: 16px 18px;
  background: rgba(248, 190, 41, 0.07);
  border: 1px solid rgba(248, 190, 41, 0.25);
  border-radius: 8px;
  transition: border-color .18s, background .18s;
}

.hexa-form .checkbox_container.consent>span:has(input:checked) {
  border-color: #C8970F;
  background: rgba(248, 190, 41, 0.12);
}

.hexa-form .checkbox_container.consent label {
  font-weight: 600;
  font-size: 14.5px;
  line-height: 1.55;
  color: rgba(17, 16, 14, 0.82);
}

.hexa-form .checkbox_container.consent label a {
  color: #C8970F;
  font-weight: 700;
  text-decoration: underline;
  text-underline-offset: 2px;
}

.hexa-form .checkbox_container.consent label a:hover {
  color: #11100E;
}

/* --- Hilfetext + Erläuterung -------------------------------------- */

.hexa-form p.help,
.hexa-form .widget p.help {
  font-size: 13px;
  font-weight: 500;
  letter-spacing: 0;
  text-transform: none;
  color: rgba(17, 16, 14, 0.55);
  line-height: 1.45;
  margin: 0;
}

.hexa-form .widget-explanation {
  flex: 1 1 100%;
  display: block;
}

.hexa-form .widget-explanation p {
  font-size: 14.5px;
  line-height: 1.6;
  color: rgba(17, 16, 14, 0.62);
  margin: 0 0 8px;
}

.hexa-form .widget-explanation p:last-child {
  margin-bottom: 0;
}

.hexa-form .widget-explanation a {
  color: #C8970F;
  font-weight: 600;
  text-decoration: underline;
  text-underline-offset: 3px;
}

/* --- Validierungs-States (Contao setzt .error) -------------------- */

.hexa-form .widget.error input.text,
.hexa-form input.error,
.hexa-form select.error,
.hexa-form textarea.error {
  border-color: #b3261e;
  /* Fehler-Rot — kein Token */
  box-shadow: 0 0 0 3px rgba(179, 38, 30, 0.14);
}

.hexa-form p.error {
  font-size: 13px;
  font-weight: 700;
  letter-spacing: 0;
  text-transform: none;
  color: #b3261e;
  margin: 0;
}

/* --- Submit ------------------------------------------------------- */

.hexa-form .widget-submit {
  flex: 1 1 100%;
  margin-top: 12px;
}

.hexa-form button.submit,
.hexa-form .widget-submit button {
  display: inline-flex;
  align-items: center;
  gap: 10px;
  font-family: Manrope, system-ui, sans-serif;
  font-weight: 700;
  font-size: 14px;
  letter-spacing: 0.02em;
  padding: 15px 32px;
  border-radius: 999px;
  border: 1px solid transparent;
  background: #F8BE29;
  color: #11100E;
  cursor: pointer;
  transition: background .2s, transform .2s;
}

.hexa-form button.submit:hover,
.hexa-form .widget-submit button:hover {
  background: #FFD04A;
  transform: translateY(-1px);
}

/* --- Confirmation: Contao gibt <div class="ce_form"><div class="form-confirmation">
   aus (NICHT innerhalb .hexa-form). .confirm-mark existiert im Contao-Markup
   nicht (nur im React-Mockup) -> degradiert sauber zur reinen Box. */

.form-confirmation {
  display: flex;
  align-items: flex-start;
  gap: 16px;
  margin: 40px 0;
  padding: 24px 26px;
  background: #11100E;
  color: #F5EFE0;
  border-left: 4px solid #F8BE29;
  border-radius: 8px;
  font-size: 15.5px;
  line-height: 1.6;
}

.form-confirmation .confirm-mark {
  flex-shrink: 0;
  width: 40px;
  height: 40px;
  border-radius: 50%;
  background: #F8BE29;
  color: #11100E;
  display: flex;
  align-items: center;
  justify-content: center;
}

.form-confirmation strong {
  color: #F8BE29;
}

/* --- Responsive: Karten & Spalten auf volle Breite ---------------- */

@media (max-width: 720px) {
  .pdf-card {
    grid-template-columns: auto 1fr;
    gap: 16px;
  }

  .pdf-card-action {
    grid-column: 2;
    justify-self: start;
    margin-top: 4px;
  }
}

@media (max-width: 620px) {
  .hexa-form .widget.w50,
  .hexa-form .widget.w33,
  .hexa-form .widget.w25,
  .hexa-form .widget.w75,
  .hexa-form .widget.wfill {
    flex-basis: 100%;
  }

  .hexa-form .formbody {
    gap: 18px;
  }
}

/* ==========================================================================
   MITGLIEDERBEREICH — AUTH-SEITEN (Handoff-Portierung)
   Login · Passwort vergessen · Passwort ändern.

   Bewusst AUSSERHALB von @layer components, aus demselben Grund wie die
   hexa-form-Sektion darüber: die meisten Klassen hier entstehen zur Laufzeit
   aus Contao-Modul-/Widget-Output (.widget.error, p.error, .tl_error,
   .tl_confirm, .tl_info, .captcha_text) und tauchen in keinem Template-
   Quelltext auf — in @layer würde Tailwind sie purgen.

   NICHT portiert (toter Code im Handoff):
   - .auth-page/.auth-wrap/.auth-card/.auth-badge/.auth-title/.auth-lead/
     .auth-error/.auth-eyebrow — Karten-Variante, die wir nicht umsetzen
     (statt .auth-eyebrow nutzen wir die bestehende .eyebrow)
   - Abschnitt „AUTH — ALTERNATIVE DARSTELLUNGEN" (.auth-split/.auth-under/
     .auth-dark) — Varianten A–C, nicht gewählt
   - .vswitch — Vorschau-Umschalter der Mockups
   - .member-bar* — dafür gibt es bereits .member-subnav (Phase 15-UX)
   - .member-page/.member-wrap/.member-card* — dafür gibt es bereits
     .hexa-profile/.profile-card* (Phase 15b); „Passwort ändern" nutzt die,
     damit die Seite tatsächlich wie „Mein Profil" aussieht
   ========================================================================== */

/* --- Dunkle Auth-Sektion (Login, Passwort vergessen) --------------- */

.auth-ink {
  display: block;
  background: #11100E;
  color: #F5EFE0;
  padding: 84px 0 100px;
  border-bottom: 1px solid rgba(248, 190, 41, 0.22);
}

.auth-ink-head {
  display: flex;
  align-items: flex-end;
  justify-content: space-between;
  gap: 32px;
  flex-wrap: wrap;
  margin-bottom: 40px;
}

.auth-ink .eyebrow {
  color: #F8BE29;
}

/* Anton nur Weight 400 — kein font-bold (siehe CLAUDE.md) */

.auth-ink-head h2 {
  font-family: Anton, Bebas Neue, Impact, sans-serif;
  font-weight: 400;
  text-transform: uppercase;
  font-size: clamp(38px, 5vw, 62px);
  line-height: 0.94;
  letter-spacing: 0.005em;
  margin-top: 12px;
}

.auth-ink-rule {
  border: none;
  border-top: 1px solid rgba(248, 190, 41, 0.22);
  margin: 0 0 40px;
}

.auth-ink-grid {
  display: grid;
  grid-template-columns: 1fr 440px;
  gap: 72px;
  align-items: start;
}

.auth-ink-side p {
  font-size: 15.5px;
  line-height: 1.75;
  color: rgba(245, 239, 224, 0.68);
  margin-bottom: 16px;
  max-width: 46ch;
}

.auth-ink-side p:last-child {
  margin-bottom: 0;
}

.auth-ink-side code {
  font-family: ui-monospace, SFMono-Regular, Menlo, monospace;
  font-size: 12.5px;
  font-weight: 600;
  background: rgba(248, 190, 41, 0.18);
  color: #F8BE29;
  border-radius: 3px;
  padding: 2px 6px;
}

.auth-ink-side a {
  color: #F8BE29;
  font-weight: 700;
}

.auth-ink-side a:hover {
  color: #F5EFE0;
}

/* Nummerierte Vorteils-Liste — 01/02/03 erzeugt der Controller */

.auth-ink-list {
  list-style: none;
  margin: 26px 0 0;
  padding: 0;
  border-top: 1px solid rgba(255, 255, 255, 0.09);
}

.auth-ink-list li {
  display: flex;
  align-items: baseline;
  gap: 14px;
  padding: 14px 0;
  border-bottom: 1px solid rgba(255, 255, 255, 0.09);
  font-size: 14.5px;
  font-weight: 600;
  color: rgba(245, 239, 224, 0.86);
}

.auth-ink-list li span {
  font-family: Anton, Bebas Neue, Impact, sans-serif;
  font-weight: 400;
  font-size: 15px;
  color: #F8BE29;
  min-width: 26px;
}

.auth-ink-form {
  position: relative;
}

/* Schmale Variante (Passwort vergessen) */

.auth-ink-narrow {
  max-width: 520px;
  margin: 0 auto;
}

.auth-ink-narrow .auth-ink-formhead {
  text-align: center;
}

.auth-ink-formhead {
  margin-bottom: 26px;
}

.auth-ink-formhead .eyebrow {
  display: block;
  margin-bottom: 10px;
}

.auth-ink-formhead p {
  font-size: 14.5px;
  line-height: 1.65;
  color: rgba(245, 239, 224, 0.66);
}

/* --- hexa-form auf dunklem Grund ---------------------------------- */

.auth-ink .hexa-form {
  margin: 0;
}

.auth-ink .hexa-form .formbody {
  gap: 18px;
}

.auth-ink .hexa-form label,
.auth-ink .hexa-form legend {
  color: #F8BE29;
}

.auth-ink .hexa-form input.text,
.auth-ink .hexa-form input[type="email"],
.auth-ink .hexa-form input[type="password"],
.auth-ink .hexa-form input[type="text"] {
  background: rgba(255, 255, 255, 0.05);
  border-color: rgba(248, 190, 41, 0.22);
  color: #F5EFE0;
  border-radius: 6px;
}

.auth-ink .hexa-form input:hover {
  border-color: rgba(248, 190, 41, 0.45);
}

.auth-ink .hexa-form input:focus {
  border-color: #F8BE29;
  box-shadow: 0 0 0 3px rgba(248, 190, 41, 0.16);
}

.auth-ink .hexa-form ::-moz-placeholder {
  color: rgba(245, 239, 224, 0.35);
}

.auth-ink .hexa-form ::placeholder {
  color: rgba(245, 239, 224, 0.35);
}

.auth-ink .hexa-form .checkbox_container label {
  color: rgba(245, 239, 224, 0.8);
  text-transform: none;
  letter-spacing: 0;
  font-size: 14px;
  font-weight: 500;
}

.auth-ink .hexa-form input[type="checkbox"] {
  background: rgba(255, 255, 255, 0.06);
  border-color: rgba(248, 190, 41, 0.3);
}

.auth-ink .hexa-form button.submit {
  width: 100%;
  justify-content: center;
}

/* Sicherheitsfrage (Contao-Captcha im Passwort-vergessen-Modul) */

.hexa-form .captcha_text {
  font-size: 12.5px;
  line-height: 1.5;
  color: rgba(17, 16, 14, 0.55);
}

.auth-ink .hexa-form .captcha_text {
  color: rgba(245, 239, 224, 0.55);
}

/* --- Passwortfeld mit Sichtbarkeits-Umschalter --------------------- */

/* .pw-field/.pw-toggle werden per JS erzeugt (theme.js) — ohne JS bleibt
   das Feld ein normales type="password". */

.pw-field {
  position: relative;
}

.pw-field input {
  padding-right: 52px !important;
}

.pw-toggle {
  position: absolute;
  right: 5px;
  top: 50%;
  transform: translateY(-50%);
  width: 42px;
  height: 42px;
  display: grid;
  place-items: center;
  border: none;
  background: none;
  border-radius: 6px;
  color: rgba(17, 16, 14, 0.45);
  cursor: pointer;
}

.pw-toggle:hover {
  color: #11100E;
  background: rgba(17, 16, 14, 0.06);
}

.pw-toggle:focus-visible {
  outline: 2px solid #C8970F;
  outline-offset: 1px;
}

.auth-ink .pw-toggle {
  color: rgba(245, 239, 224, 0.5);
}

.auth-ink .pw-toggle:hover {
  color: #F8BE29;
  background: rgba(255, 255, 255, 0.06);
}

/* --- Passwort-Regeln (live, rein visuell) -------------------------- */

.pw-rules {
  list-style: none;
  margin: 4px 0 0;
  padding: 0;
  display: flex;
  flex-wrap: wrap;
  gap: 8px 16px;
}

.pw-rule {
  display: flex;
  align-items: center;
  gap: 7px;
  font-size: 12.5px;
  font-weight: 600;
  color: rgba(17, 16, 14, 0.48);
}

.pw-rule .dot {
  width: 15px;
  height: 15px;
  border-radius: 50%;
  border: 1.5px solid rgba(17, 16, 14, 0.22);
  display: grid;
  place-items: center;
  flex-shrink: 0;
  color: transparent;
}

.pw-rule.ok {
  color: #1e7a3c;
  /* Erfolgs-Grün — kein Token */
}

.pw-rule.ok .dot {
  background: #1e7a3c;
  border-color: #1e7a3c;
  color: #fff;
}

.auth-ink .pw-rule {
  color: rgba(245, 239, 224, 0.5);
}

.auth-ink .pw-rule .dot {
  border-color: rgba(245, 239, 224, 0.28);
}

.auth-ink .pw-rule.ok {
  color: #F8BE29;
}

.auth-ink .pw-rule.ok .dot {
  background: #F8BE29;
  border-color: #F8BE29;
  color: #11100E;
}

/* --- Sekundär-Links + Hinweis unter dem Formular ------------------- */

.auth-alt {
  margin-top: 26px;
  padding-top: 18px;
  border-top: 1px solid rgba(17, 16, 14, 0.1);
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 10px;
  text-align: center;
}

.auth-alt p {
  margin: 0;
}

.auth-link,
.auth-alt a {
  font-size: 14px;
  font-weight: 700;
  color: #C8970F;
  display: inline-flex;
  align-items: center;
  gap: 7px;
}

.auth-link:hover,
.auth-alt a:hover {
  color: #11100E;
}

.auth-note {
  margin-top: 18px;
  font-size: 13px;
  line-height: 1.6;
  color: rgba(17, 16, 14, 0.55);
  text-align: center;
}

.auth-note p {
  margin: 0;
}

.auth-note a {
  color: #C8970F;
  font-weight: 700;
}

.auth-note a:hover {
  color: #11100E;
}

.auth-ink .auth-alt {
  border-top-color: rgba(255, 255, 255, 0.1);
}

.auth-ink .auth-link,
.auth-ink .auth-alt a {
  color: #F8BE29;
}

.auth-ink .auth-link:hover,
.auth-ink .auth-alt a:hover {
  color: #F5EFE0;
}

.auth-ink .auth-note {
  color: rgba(245, 239, 224, 0.5);
}

.auth-ink .auth-note a {
  color: #F8BE29;
}

.auth-ink .auth-note a:hover {
  color: #F5EFE0;
}

/* --- „Passwort ändern": Karte auf hellem Grund --------------------- */

/* Nutzt .hexa-profile/.profile-card aus Phase 15b, hier nur die Form-
   Anpassungen (Submit rechtsbündig, mobil vollbreit). */

.profile-card .hexa-form {
  margin: 22px 0 0;
}

.profile-card .hexa-form .formbody {
  gap: 18px;
}

.profile-card .hexa-form .widget-submit {
  display: flex;
  justify-content: flex-end;
  margin-top: 6px;
}

.profile-card .hexa-form button.submit {
  width: auto;
}

@media (max-width: 640px) {
  .profile-card .hexa-form .widget-submit {
    justify-content: stretch;
  }

  .profile-card .hexa-form button.submit {
    width: 100%;
    justify-content: center;
  }
}

@media (max-width: 900px) {
  .auth-ink {
    padding: 48px 0 68px;
  }

  .auth-ink-grid {
    grid-template-columns: 1fr;
    gap: 40px;
  }

  .auth-ink-head {
    margin-bottom: 28px;
  }

  .auth-ink-rule {
    margin-bottom: 30px;
  }
}

/* ==========================================================================
   SYSTEMMELDUNGEN (Contao: .tl_error / .tl_confirm / .tl_info)

   ACHTUNG: global wirksam. Diese Klassen setzt Contao überall — also auch
   im Kontaktformular und im Aufnahmeantrag. Das ist gewollt (die waren
   bisher ungestylt). Innerhalb von .auth-ink greifen die dunklen Fassungen.
   ========================================================================== */

/* p.message.error / p.message.confirm: das ist die Ausgabe des Core-Templates
   mod_message.html5 (<p class="<type> message">). Mehrere Module — u. a.
   "Passwort vergessen" — tauschen in Fehler-/Bestätigungszuständen intern ihr
   Template gegen mod_message aus; ein customTpl greift dann nicht mehr.
   Deshalb hier auf dieselbe Optik mappen. */

.tl_error,
.tl_confirm,
.tl_info,
p.message.error,
p.message.confirm {
  display: flex;
  align-items: flex-start;
  gap: 11px;
  margin: 0 0 20px;
  padding: 13px 16px;
  border: 1px solid;
  border-left-width: 3px;
  border-radius: 6px;
  font-family: Manrope, system-ui, sans-serif;
  font-size: 13.5px;
  font-weight: 600;
  line-height: 1.55;
}

.tl_error::before,
.tl_confirm::before,
.tl_info::before,
p.message.error::before,
p.message.confirm::before {
  content: "";
  flex-shrink: 0;
  width: 18px;
  height: 18px;
  margin-top: 1px;
  background-repeat: no-repeat;
  background-position: center;
  background-size: 18px 18px;
}

.tl_error,
p.message.error {
  color: #8f1d16;
  border-color: rgba(179, 38, 30, 0.35);
  border-left-color: #b3261e;
  background: rgba(179, 38, 30, 0.07);
}

.tl_error::before,
p.message.error::before {
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23B3261E' stroke-width='2.2' stroke-linecap='round'%3E%3Ccircle cx='12' cy='12' r='9'/%3E%3Cpath d='M12 7.5v5.5M12 16.3v.2'/%3E%3C/svg%3E");
}

.tl_confirm,
p.message.confirm {
  color: #17632f;
  border-color: rgba(30, 122, 60, 0.32);
  border-left-color: #1e7a3c;
  background: rgba(30, 122, 60, 0.08);
}

.tl_confirm::before,
p.message.confirm::before {
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%231E7A3C' stroke-width='2.4' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M20 6L9 17l-5-5'/%3E%3C/svg%3E");
}

.tl_info {
  color: #7a5c06;
  border-color: rgba(200, 151, 15, 0.4);
  border-left-color: #C8970F;
  background: rgba(248, 190, 41, 0.13);
}

.tl_info::before {
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23C8970F' stroke-width='2.2' stroke-linecap='round'%3E%3Ccircle cx='12' cy='12' r='9'/%3E%3Cpath d='M12 11v5.5M12 7.6v.2'/%3E%3C/svg%3E");
}

.tl_error strong,
.tl_confirm strong,
.tl_info strong {
  display: block;
  font-weight: 800;
}

.tl_error a,
.tl_confirm a,
.tl_info a {
  color: inherit;
  text-decoration: underline;
  text-underline-offset: 2px;
}

.tl_error ul,
.tl_confirm ul,
.tl_info ul {
  margin: 6px 0 0;
  padding-left: 18px;
  font-weight: 600;
}

/* Auf dunkler Fläche */

.auth-ink .tl_error,
.auth-ink p.message.error {
  color: #ffb3ac;
  border-color: rgba(255, 120, 110, 0.35);
  border-left-color: #ff7b6e;
  background: rgba(179, 38, 30, 0.18);
}

.auth-ink .tl_error::before,
.auth-ink p.message.error::before {
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23FF7B6E' stroke-width='2.2' stroke-linecap='round'%3E%3Ccircle cx='12' cy='12' r='9'/%3E%3Cpath d='M12 7.5v5.5M12 16.3v.2'/%3E%3C/svg%3E");
}

.auth-ink .tl_confirm,
.auth-ink p.message.confirm {
  color: #a7e3bc;
  border-color: rgba(90, 200, 130, 0.3);
  border-left-color: #5ac882;
  background: rgba(30, 122, 60, 0.2);
}

.auth-ink .tl_confirm::before,
.auth-ink p.message.confirm::before {
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%235AC882' stroke-width='2.4' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M20 6L9 17l-5-5'/%3E%3C/svg%3E");
}

.auth-ink .tl_info {
  color: rgba(245, 239, 224, 0.86);
  border-color: rgba(248, 190, 41, 0.3);
  border-left-color: #F8BE29;
  background: rgba(248, 190, 41, 0.1);
}

.auth-ink .tl_info::before {
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23F8BE29' stroke-width='2.2' stroke-linecap='round'%3E%3Ccircle cx='12' cy='12' r='9'/%3E%3Cpath d='M12 11v5.5M12 7.6v.2'/%3E%3C/svg%3E");
}

/* --- Feld-Validierung ---------------------------------------------- */

/* Ergänzt die Basis-Regeln der hexa-form-Sektion um Label-Einfärbung,
   Fehler-Marker und die dunkle Fassung. */

.hexa-form .widget.error > label {
  color: #b3261e;
}

.hexa-form p.error {
  display: flex;
  align-items: center;
  gap: 6px;
  margin-top: 2px;
}

.hexa-form p.error::before {
  content: "!";
  flex-shrink: 0;
  width: 15px;
  height: 15px;
  border-radius: 50%;
  background: #b3261e;
  color: #fff;
  font-size: 11px;
  font-weight: 800;
  display: grid;
  place-items: center;
}

.auth-ink .hexa-form .widget.error > label {
  color: #ff9c91;
}

.auth-ink .hexa-form p.error {
  color: #ffb3ac;
}

.auth-ink .hexa-form p.error::before {
  background: #ff7b6e;
  color: #11100E;
}

.auth-ink .hexa-form input.error,
.auth-ink .hexa-form .widget.error input.text {
  border-color: #ff7b6e;
  box-shadow: 0 0 0 3px rgba(255, 123, 110, 0.16);
}

/* Fonts — Pfade relativ zur Output-Datei src/Resources/public/css/theme.css */

@font-face {
  font-display: swap;

  font-family: Anton;

  font-style: normal;

  font-weight: 400;

  src: url('../fonts/anton-400.woff2') format('woff2');
}

/* Manrope font */

@font-face {
  font-display: swap;

  font-family: Manrope;

  font-style: normal;

  font-weight: 400;

  src: url('../fonts/manrope-400.woff2') format('woff2');
}

@font-face {
  font-display: swap;

  font-family: Manrope;

  font-style: normal;

  font-weight: 500;

  src: url('../fonts/manrope-500.woff2') format('woff2');
}

@font-face {
  font-display: swap;

  font-family: Manrope;

  font-style: normal;

  font-weight: 600;

  src: url('../fonts/manrope-600.woff2') format('woff2');
}

@font-face {
  font-display: swap;

  font-family: Manrope;

  font-style: normal;

  font-weight: 700;

  src: url('../fonts/manrope-700.woff2') format('woff2');
}

@font-face {
  font-display: swap;

  font-family: Manrope;

  font-style: normal;

  font-weight: 800;

  src: url('../fonts/manrope-800.woff2') format('woff2');
}

/* Inter font */

@font-face {
  font-display: swap;

  font-family: Inter;

  font-style: normal;

  font-weight: 400;

  src: url('../fonts/inter-regular.woff2') format('woff2');
}

@font-face {
  font-display: swap;

  font-family: Inter;

  font-style: normal;

  font-weight: 500;

  src: url('../fonts/inter-medium.woff2') format('woff2');
}

@font-face {
  font-display: swap;

  font-family: Inter;

  font-style: normal;

  font-weight: 700;

  src: url('../fonts/inter-bold.woff2') format('woff2');
}

.hover\:-translate-y-px:hover {
  --tw-translate-y: -1px;
  transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
}

.hover\:border-gold:hover {
  --tw-border-opacity: 1;
  border-color: rgb(248 190 41 / var(--tw-border-opacity, 1));
}

.hover\:bg-cream:hover {
  --tw-bg-opacity: 1;
  background-color: rgb(245 239 224 / var(--tw-bg-opacity, 1));
}

.hover\:bg-gold:hover {
  --tw-bg-opacity: 1;
  background-color: rgb(248 190 41 / var(--tw-bg-opacity, 1));
}

.hover\:bg-gold-glow:hover {
  --tw-bg-opacity: 1;
  background-color: rgb(255 208 74 / var(--tw-bg-opacity, 1));
}

.hover\:text-gold:hover {
  --tw-text-opacity: 1;
  color: rgb(248 190 41 / var(--tw-text-opacity, 1));
}

.hover\:text-gold-glow:hover {
  --tw-text-opacity: 1;
  color: rgb(255 208 74 / var(--tw-text-opacity, 1));
}

.hover\:text-ink:hover {
  --tw-text-opacity: 1;
  color: rgb(17 16 14 / var(--tw-text-opacity, 1));
}

.focus\:not-sr-only:focus {
  position: static;
  width: auto;
  height: auto;
  padding: 0;
  margin: 0;
  overflow: visible;
  clip: auto;
  white-space: normal;
}

.focus\:fixed:focus {
  position: fixed;
}

.focus\:left-2:focus {
  left: 0.5rem;
}

.focus\:top-2:focus {
  top: 0.5rem;
}

.focus\:z-50:focus {
  z-index: 50;
}

.focus\:rounded:focus {
  border-radius: 0.25rem;
}

.focus\:bg-gold:focus {
  --tw-bg-opacity: 1;
  background-color: rgb(248 190 41 / var(--tw-bg-opacity, 1));
}

.focus\:px-4:focus {
  padding-left: 1rem;
  padding-right: 1rem;
}

.focus\:py-2:focus {
  padding-top: 0.5rem;
  padding-bottom: 0.5rem;
}

.focus\:text-ink:focus {
  --tw-text-opacity: 1;
  color: rgb(17 16 14 / var(--tw-text-opacity, 1));
}

.group:hover .group-hover\:mt-2 {
  margin-top: 0.5rem;
}

.group:hover .group-hover\:max-h-20 {
  max-height: 5rem;
}

.group:hover .group-hover\:scale-\[1\.04\] {
  --tw-scale-x: 1.04;
  --tw-scale-y: 1.04;
  transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
}

.group:hover .group-hover\:opacity-100 {
  opacity: 1;
}

@media (min-width: 640px) {
  .sm\:grid-cols-2 {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .sm\:flex-row {
    flex-direction: row;
  }

  .sm\:gap-8 {
    gap: 2rem;
  }

  .sm\:py-28 {
    padding-top: 7rem;
    padding-bottom: 7rem;
  }

  .sm\:text-5xl {
    font-size: 3rem;
    line-height: 1;
  }

  .sm\:text-6xl {
    font-size: 3.75rem;
    line-height: 1;
  }

  .sm\:text-7xl {
    font-size: 4.5rem;
    line-height: 1;
  }
}

@media (min-width: 1024px) {
  .lg\:mb-16 {
    margin-bottom: 4rem;
  }

  .lg\:max-w-\[55\%\] {
    max-width: 55%;
  }

  .lg\:grid-cols-2 {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .lg\:grid-cols-3 {
    grid-template-columns: repeat(3, minmax(0, 1fr));
  }

  .lg\:grid-cols-\[1\.4fr_1fr_1fr_1fr\] {
    grid-template-columns: 1.4fr 1fr 1fr 1fr;
  }

  .lg\:flex-row {
    flex-direction: row;
  }

  .lg\:items-end {
    align-items: flex-end;
  }

  .lg\:justify-between {
    justify-content: space-between;
  }

  .lg\:gap-20 {
    gap: 5rem;
  }

  .lg\:gap-8 {
    gap: 2rem;
  }

  .lg\:gap-\[60px\] {
    gap: 60px;
  }

  .lg\:self-auto {
    align-self: auto;
  }

  .lg\:py-12 {
    padding-top: 3rem;
    padding-bottom: 3rem;
  }

  .lg\:py-28 {
    padding-top: 7rem;
    padding-bottom: 7rem;
  }

  .lg\:text-2xl {
    font-size: 1.5rem;
    line-height: 2rem;
  }

  .lg\:text-5xl {
    font-size: 3rem;
    line-height: 1;
  }

  .lg\:text-6xl {
    font-size: 3.75rem;
    line-height: 1;
  }

  .lg\:text-7xl {
    font-size: 4.5rem;
    line-height: 1;
  }

  .lg\:text-8xl {
    font-size: 6rem;
    line-height: 1;
  }

  .lg\:text-\[28px\] {
    font-size: 28px;
  }
}

@media (min-width: 1280px) {
  .xl\:text-9xl {
    font-size: 8rem;
    line-height: 1;
  }
}

.\[\&\>p\]\:m-0>p {
  margin: 0px;
}
