/* =========================================================================
   Corps Bavaria Würzburg – Theme-Ebene über Bootstrap 5.3
   Farben: Dunkelblau · Weiß · Hellblau (dezent eingesetzt)
   Diese Datei wird NACH bootstrap.min.css geladen und überschreibt gezielt
   Farben/Abstände. Das Markup bleibt reines Bootstrap.
   ========================================================================= */

:root {
  /* Corps-Farbwelt (aus dem Wappen abgeleitet) */
  --bavaria-navy:        #12294f;  /* Dunkelblau  */
  --bavaria-navy-dark:   #0c1d3a;  /* Dunkelblau, tiefer (Verläufe/Hover) */
  --bavaria-navy-soft:   #1d3a68;
  --bavaria-light-blue:  #6ba4d4;  /* Hellblau (Akzent) */
  --bavaria-light-soft:  #a9c9e6;
  --bavaria-sky:         #eef3f9;  /* sehr helles Blau (Flächen) */
  --bavaria-ink:         #1f2937;  /* Textfarbe */
  --bavaria-muted:       #5b6675;

  /* Bootstrap-Variablen mitziehen (Links, Fokus, Utilities) */
  --bs-primary:          #12294f;
  --bs-primary-rgb:      18, 41, 79;
  --bs-link-color:       #12294f;
  --bs-link-color-rgb:   18, 41, 79;
  --bs-link-hover-color: #6ba4d4;
  --bs-body-color:       #1f2937;
  --bs-body-bg:          #f6f8fb;
  --bs-border-radius:    .6rem;
  --bs-border-radius-lg: .9rem;
}

/* ---------- Grundlayout ---------------------------------------------------- */
body {
  background-color: var(--bs-body-bg);
  color: var(--bavaria-ink);
  -webkit-font-smoothing: antialiased;
  text-rendering: optimizeLegibility;
}

h1, h2, h3, h4, h5, h6 {
  color: var(--bavaria-navy);
  font-weight: 650;
  letter-spacing: -0.01em;
}

/* Abschnittsüberschriften bekommen eine feine hellblaue Markierung */
.container > h2,
.container > .h2 {
  position: relative;
  padding-bottom: .4rem;
  margin-bottom: 1.1rem;
}
.container > h2::after,
.container > .h2::after {
  content: "";
  position: absolute;
  left: 0;
  bottom: 0;
  width: 3rem;
  height: 3px;
  border-radius: 3px;
  background: linear-gradient(90deg, var(--bavaria-navy), var(--bavaria-light-blue));
}

a { text-decoration: none; }
a:hover { text-decoration: underline; }

/* ---------- Hauptnavigation (Dunkelblau) ---------------------------------- */
.bavaria-navbar {
  background: linear-gradient(100deg, var(--bavaria-navy-dark), var(--bavaria-navy) 55%, var(--bavaria-navy-soft));
  border-bottom: 3px solid var(--bavaria-light-blue);
}
.bavaria-navbar .navbar-brand {
  font-weight: 700;
  letter-spacing: .01em;
  color: #fff;
  display: flex;
  align-items: center;
  gap: .6rem;
}
.bavaria-navbar .navbar-brand img {
  background: #fff;
  border-radius: 50%;
  padding: 3px;
  box-shadow: 0 2px 6px rgba(0, 0, 0, .25);
}
.bavaria-navbar .navbar-brand small { color: var(--bavaria-light-soft) !important; }
.bavaria-navbar .nav-link {
  color: rgba(255, 255, 255, .82);
  font-weight: 500;
  border-radius: .4rem;
  padding-inline: .8rem;
  transition: color .15s ease, background-color .15s ease;
}
.bavaria-navbar .nav-link:hover,
.bavaria-navbar .nav-link:focus { color: #fff; background-color: rgba(255, 255, 255, .1); }
.bavaria-navbar .nav-item.active > .nav-link,
.bavaria-navbar .navbar-brand.active { color: #fff; }
.bavaria-navbar .navbar-toggler { border-color: rgba(255, 255, 255, .4); }

/* Unternavigation (hellere blaue Leiste) */
.bavaria-subnav {
  background: #fff;
  border-bottom: 1px solid #e2e8f0;
  box-shadow: 0 2px 4px rgba(18, 41, 79, .04);
}
.bavaria-subnav .nav-link {
  color: var(--bavaria-navy);
  font-weight: 500;
  border-radius: .4rem;
  padding-inline: .85rem;
}
.bavaria-subnav .nav-link:hover,
.bavaria-subnav .nav-link:focus {
  color: var(--bavaria-navy-dark);
  background-color: var(--bavaria-sky);
}
.bavaria-subnav .navbar-toggler { border-color: rgba(18, 41, 79, .25); }
.bavaria-subnav .navbar-toggler-icon {
  background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='%2312294f' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e");
}
.dropdown-menu { border-radius: .55rem; border-color: #e2e8f0; box-shadow: 0 8px 24px rgba(18, 41, 79, .12); }
.dropdown-item.active, .dropdown-item:active { background-color: var(--bavaria-navy); }
.dropdown-item:hover, .dropdown-item:focus { background-color: var(--bavaria-sky); color: var(--bavaria-navy-dark); }

/* ---------- Buttons ------------------------------------------------------- */
.btn { border-radius: .5rem; font-weight: 550; }

.btn-primary {
  --bs-btn-bg:            var(--bavaria-navy);
  --bs-btn-border-color:  var(--bavaria-navy);
  --bs-btn-hover-bg:      var(--bavaria-navy-dark);
  --bs-btn-hover-border-color: var(--bavaria-navy-dark);
  --bs-btn-active-bg:     var(--bavaria-navy-dark);
  --bs-btn-active-border-color: var(--bavaria-navy-dark);
  --bs-btn-disabled-bg:   var(--bavaria-navy);
  --bs-btn-disabled-border-color: var(--bavaria-navy);
}
.btn-outline-primary {
  --bs-btn-color:           var(--bavaria-navy);
  --bs-btn-border-color:    var(--bavaria-navy);
  --bs-btn-hover-bg:        var(--bavaria-navy);
  --bs-btn-hover-border-color: var(--bavaria-navy);
  --bs-btn-active-bg:       var(--bavaria-navy);
  --bs-btn-active-border-color: var(--bavaria-navy);
}
.btn-secondary {
  --bs-btn-bg:            #e6ebf1;
  --bs-btn-border-color:  #d3dbe6;
  --bs-btn-color:         var(--bavaria-navy);
  --bs-btn-hover-bg:      #d3dbe6;
  --bs-btn-hover-border-color: #c2cdda;
  --bs-btn-hover-color:   var(--bavaria-navy-dark);
  --bs-btn-active-bg:     #c2cdda;
  --bs-btn-active-color:  var(--bavaria-navy-dark);
}

/* ---------- Karten -------------------------------------------------------- */
.card {
  border: 1px solid #e6ebf2;
  border-radius: var(--bs-border-radius-lg);
  box-shadow: 0 1px 2px rgba(18, 41, 79, .04);
}
.card.shadow-sm { box-shadow: 0 6px 20px rgba(18, 41, 79, .08) !important; }
.card-title { color: var(--bavaria-navy); }

/* ---------- Badges -------------------------------------------------------- */
.badge.bg-primary,
.badge.text-bg-primary { background-color: var(--bavaria-navy) !important; }
.text-primary { color: var(--bavaria-navy) !important; }
.bg-primary { background-color: var(--bavaria-navy) !important; }

/* ---------- Listen -------------------------------------------------------- */
.list-group-item { border-color: #eaeef4; }
.list-group-item-action:hover { background-color: var(--bavaria-sky); }

/* ---------- Tabellen ------------------------------------------------------ */
.table > thead th {
  background-color: var(--bavaria-navy);
  color: #fff;
  border-color: var(--bavaria-navy);
  font-weight: 600;
  white-space: nowrap;
}
.table-striped > tbody > tr:nth-of-type(odd) > * { --bs-table-bg-type: #f4f7fb; }
.table-hover > tbody > tr:hover > * { --bs-table-bg-state: var(--bavaria-sky); }

/* Tabellen auf schmalen Displays horizontal scrollbar machen, wenn nötig */
.table-responsive { -webkit-overflow-scrolling: touch; }

/* ---------- Formulare ----------------------------------------------------- */
.form-control, .form-select {
  border-radius: .5rem;
  border-color: #d7dee8;
}
.form-control:focus, .form-select:focus {
  border-color: var(--bavaria-light-blue);
  box-shadow: 0 0 0 .2rem rgba(107, 164, 212, .3);
}
.form-label { font-weight: 550; color: var(--bavaria-navy); }

/* ---------- Alerts (dezent hellblau für Info) ----------------------------- */
.alert-info {
  --bs-alert-bg:          var(--bavaria-sky);
  --bs-alert-border-color:#cfe0f0;
  --bs-alert-color:       var(--bavaria-navy);
}

/* ---------- Login / Auth-Seiten ------------------------------------------- */
.bavaria-auth {
  min-height: 100vh;
  min-height: 100dvh;
  background:
    radial-gradient(1200px 600px at 50% -10%, rgba(107, 164, 212, .18), transparent 60%),
    linear-gradient(180deg, #f6f8fb, #e9eff7);
}
.bavaria-auth .card { border: none; }
.bavaria-auth-wappen {
  width: 84px;
  height: auto;
  margin-bottom: .75rem;
  filter: drop-shadow(0 4px 8px rgba(18, 41, 79, .18));
}
.bavaria-auth-brand {
  color: var(--bavaria-navy);
  font-size: .8rem;
  letter-spacing: .12em;
  text-transform: uppercase;
  font-weight: 600;
}

/* ---------- Alphabet-Pagination ------------------------------------------- */
.pagination {
  --bs-pagination-color:            var(--bavaria-navy);
  --bs-pagination-hover-color:      var(--bavaria-navy-dark);
  --bs-pagination-hover-bg:         var(--bavaria-sky);
  --bs-pagination-hover-border-color: #cfe0f0;
  --bs-pagination-focus-color:      var(--bavaria-navy-dark);
  --bs-pagination-focus-box-shadow: 0 0 0 .2rem rgba(107, 164, 212, .3);
  --bs-pagination-active-bg:        var(--bavaria-navy);
  --bs-pagination-active-border-color: var(--bavaria-navy);
}

/* ---------- Adressen-Liste: Karten-Ansicht auf Mobil/Tablet ---------------
   Auf breiten Screens bleibt die klassische Tabelle. Unterhalb von 992px
   werden die Datenzeilen zu übersichtlichen Karten gestapelt; die
   Feldnamen kommen aus den data-label-Attributen der <td>.
   -------------------------------------------------------------------------- */
@media (max-width: 991.98px) {
  .bavaria-adr-table,
  .bavaria-adr-table > tbody { display: block; width: 100%; }

  /* Spaltenkopf-Zeilen ausblenden – Labels erscheinen per data-label */
  .bavaria-adr-table .adr-colhead { display: none; }

  /* Buchstaben-Trenner als Abschnittsüberschrift */
  .bavaria-adr-table tr.table-secondary { display: block; margin: 1.35rem 0 .5rem; }
  .bavaria-adr-table tr.table-secondary > th {
    display: block;
    background: transparent;
    color: var(--bavaria-navy);
    font-size: 1.1rem;
    letter-spacing: .05em;
    border: 0;
    border-bottom: 2px solid var(--bavaria-light-blue);
    padding: .2rem .1rem .35rem;
  }

  /* Datenzeile → Karte */
  .bavaria-adr-table tr:not(.table-secondary):not(.adr-colhead) {
    display: block;
    background: #fff;
    border: 1px solid #e6ebf2;
    border-radius: .65rem;
    box-shadow: 0 2px 6px rgba(18, 41, 79, .05);
    padding: .5rem .9rem .65rem;
    margin-bottom: .7rem;
  }
  .bavaria-adr-table tr:not(.table-secondary):not(.adr-colhead) > td {
    display: flex;
    justify-content: space-between;
    align-items: baseline;
    gap: 1rem;
    border: 0;
    padding: .3rem 0;
    text-align: right;
    background: transparent;   /* Zebra-Streifen deaktivieren */
    box-shadow: none;
    word-break: break-word;
  }
  .bavaria-adr-table tr:not(.table-secondary):not(.adr-colhead) > td::before {
    content: attr(data-label);
    flex: 0 0 auto;
    font-weight: 600;
    color: var(--bavaria-muted);
    text-align: left;
    white-space: nowrap;
  }
  /* Leere Felder auf Mobil ausblenden */
  .bavaria-adr-table tr:not(.table-secondary):not(.adr-colhead) > td:empty { display: none; }

  /* Name-Zelle als Kartentitel */
  .bavaria-adr-table tr:not(.table-secondary):not(.adr-colhead) > td:first-child {
    display: block;
    text-align: left;
    font-size: 1.05rem;
    font-weight: 600;
    padding-bottom: .45rem;
    margin-bottom: .35rem;
    border-bottom: 1px solid #eef1f6;
  }
  .bavaria-adr-table tr:not(.table-secondary):not(.adr-colhead) > td:first-child::before { display: none; }
  .bavaria-adr-table tr:not(.table-secondary):not(.adr-colhead) > td:first-child a { color: var(--bavaria-navy); }
}

/* ---------- Mobile-Feinschliff -------------------------------------------- */
@media (max-width: 575.98px) {
  .container, .container-fluid { padding-inline: 1rem; }
  h1 { font-size: 1.6rem; }
  h2, .h2 { font-size: 1.35rem; }
  .card-body { padding: 1.1rem; }
  .bavaria-navbar .navbar-brand { font-size: 1.05rem; }
}
