/* EQUIPE Saisonplaner – eigene Gestaltung auf Basis von Bootstrap 5.3 */

:root {
  --equipe: #831d81;
  --equipe-dark: #5e145c;
  --equipe-light: #f6eaf6;
  --bs-primary: #831d81;
  --bs-primary-rgb: 131, 29, 129;
  --bs-link-color: #831d81;
  --bs-link-color-rgb: 131, 29, 129;
  --bs-link-hover-color: #5e145c;
  --bs-link-hover-color-rgb: 94, 20, 92;
  --bs-body-bg: #f7f6f8;
  --bs-focus-ring-color: rgba(131, 29, 129, .25);
}

body {
  min-height: 100vh;
  display: flex;
  flex-direction: column;
}
main { flex: 1 0 auto; }

.btn-primary {
  --bs-btn-bg: var(--equipe);
  --bs-btn-border-color: var(--equipe);
  --bs-btn-hover-bg: var(--equipe-dark);
  --bs-btn-hover-border-color: var(--equipe-dark);
  --bs-btn-active-bg: var(--equipe-dark);
  --bs-btn-active-border-color: var(--equipe-dark);
  --bs-btn-disabled-bg: var(--equipe);
  --bs-btn-disabled-border-color: var(--equipe);
}
.btn-outline-primary {
  --bs-btn-color: var(--equipe);
  --bs-btn-border-color: var(--equipe);
  --bs-btn-hover-bg: var(--equipe);
  --bs-btn-hover-border-color: var(--equipe);
  --bs-btn-active-bg: var(--equipe-dark);
  --bs-btn-active-border-color: var(--equipe-dark);
}
.form-control:focus, .form-select:focus, .form-check-input:focus {
  border-color: #c28bc1;
  box-shadow: 0 0 0 .25rem rgba(131, 29, 129, .2);
}
.form-check-input:checked { background-color: var(--equipe); border-color: var(--equipe); }
.nav-pills { --bs-nav-pills-link-active-bg: var(--equipe); }
.nav-link { color: var(--equipe); }
.page-link { color: var(--equipe); }
.pagination { --bs-pagination-active-bg: var(--equipe); --bs-pagination-active-border-color: var(--equipe); --bs-pagination-focus-box-shadow: 0 0 0 .25rem rgba(131, 29, 129, .2); }

/* Navigation */
.app-navbar { background: #1c1220; }
.app-navbar .nav-link { color: rgba(255, 255, 255, .78); }
.app-navbar .nav-link:hover, .app-navbar .nav-link:focus { color: #fff; }
.app-navbar .nav-link.active { color: #fff; box-shadow: inset 0 -3px 0 var(--equipe); }
.navbar-brand { display: flex; align-items: baseline; gap: .5rem; }
.brand-logo { height: 26px; width: auto; }
.brand-text { font-weight: 800; letter-spacing: .12em; }
.brand-sub { font-size: .8rem; font-weight: 400; color: #d7a6d6; letter-spacing: .04em; }

.skip-link { position: absolute; left: 1rem; top: .5rem; z-index: 2000; background: #fff; padding: .5rem 1rem; }

/* Gastseiten (Login) */
body.guest { background: linear-gradient(160deg, #1c1220 0%, #3a1239 55%, var(--equipe) 100%); }
.guest-main { display: flex; flex-direction: column; justify-content: center; align-items: center; padding: 2rem 1rem; }
.guest-card { width: 100%; max-width: 420px; background: #fff; border-radius: 1rem; padding: 2rem 1.5rem; box-shadow: 0 1rem 3rem rgba(0, 0, 0, .25); }
.guest-main .text-body-secondary, .guest-main .link-secondary { color: rgba(255, 255, 255, .75) !important; }
.guest-card .text-body-secondary { color: var(--bs-secondary-color) !important; }
.guest-brand { display: flex; flex-direction: column; align-items: center; margin-bottom: 1.5rem; }
.brand-logo-lg { height: 40px; width: auto; }
.brand-text-lg { font-size: 1.8rem; font-weight: 800; letter-spacing: .14em; color: #1c1220; }
.brand-sub-lg { color: var(--equipe); font-size: .95rem; }

/* Avatare */
.avatar { display: inline-flex; align-items: center; justify-content: center; border-radius: 50%; object-fit: cover; flex-shrink: 0; background: var(--equipe-light); color: var(--equipe); font-weight: 600; }
.avatar-sm { width: 28px; height: 28px; font-size: .75rem; }
.avatar-md { width: 44px; height: 44px; font-size: 1rem; }
.avatar-lg { width: 96px; height: 96px; font-size: 2rem; }
.app-navbar .avatar-initials { background: var(--equipe); color: #fff; }

/* Karten und Listen */
.card { border: 0; box-shadow: 0 1px 3px rgba(28, 18, 32, .08); }
.card-header { background: #fff; font-weight: 600; }
.person-row { display: flex; align-items: center; gap: .75rem; padding: .75rem 1rem; border-bottom: 1px solid var(--bs-border-color-translucent); color: inherit; text-decoration: none; }
.person-row:last-child { border-bottom: 0; }
a.person-row:hover { background: var(--equipe-light); }
.person-row .meta { font-size: .85rem; color: var(--bs-secondary-color); }
.season-row { display: flex; flex-wrap: wrap; align-items: center; gap: .75rem 1rem; padding: .9rem 1rem; border-bottom: 1px solid var(--bs-border-color-translucent); }
.season-row:last-child { border-bottom: 0; }
.season-row .meta { font-size: .875rem; color: var(--bs-secondary-color); margin-top: .15rem; }
.badge-role { background: var(--equipe-light); color: var(--equipe-dark); font-weight: 500; }
.badge-archived { background: #e9e6ea; color: #5c5560; font-weight: 500; }

.page-head { display: flex; flex-wrap: wrap; gap: .75rem; align-items: center; justify-content: space-between; margin-bottom: 1.25rem; }
.page-head h1 { margin: 0; }

dl.data-list { display: grid; grid-template-columns: minmax(120px, 34%) 1fr; gap: .5rem 1rem; margin: 0; }
dl.data-list dt { font-weight: 500; color: var(--bs-secondary-color); }
dl.data-list dd { margin: 0; overflow-wrap: anywhere; }

.temp-password code { background: #fff; padding: .25rem .5rem; border-radius: .25rem; color: #1c1220; }

.stat { font-size: 2rem; font-weight: 700; color: var(--equipe); line-height: 1; }

.form-section-title { font-size: 1rem; font-weight: 600; margin: 1.5rem 0 .75rem; padding-bottom: .25rem; border-bottom: 1px solid var(--bs-border-color); }
.form-section-title:first-child { margin-top: 0; }

.btn-row { display: flex; flex-wrap: wrap; gap: .5rem; }

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

/* Teams: Farbe je Zielgruppe */
.team-female { --team-color: #831d81; }
.team-male { --team-color: #0f6b8c; }
.team-both { --team-color: #6b5a72; }
.team-label, .team-text { color: var(--team-color); font-weight: 600; }

/* Termintypen */
.type-badge { font-weight: 500; }
.type-race { background: #fdecea; color: #9b1c1c; }
.type-training { background: #e6f4ea; color: #1b5e20; }
.type-camp { background: #fff1db; color: #7a4a00; }
.type-other { background: #eceff1; color: #37474f; }

/* Planungsstand */
.planning-badge { font-weight: 500; }
.planning-set { background: #e2f3e9; color: #146c43; }
.planning-applied { background: #fde4f1; color: #9d174d; }
.planning-option { background: #fff; color: #5c5560; border: 1px dashed #9a8f9e; }

/* Terminkarten */
.event-card { border-left: 4px solid var(--team-color); }
.event-card.is-tentative { border-left-style: dashed; }
.event-title { line-height: 1.3; }
.event-title a:hover { color: var(--equipe) !important; text-decoration: underline !important; }
.event-counts { display: flex; flex-wrap: wrap; gap: .25rem .9rem; }

/* Rückmeldung */
.btn-resp-prio, .btn-resp-yes, .btn-resp-no,
.btn-outline-resp-prio, .btn-outline-resp-yes, .btn-outline-resp-no { --bs-btn-font-weight: 500; }
.btn-resp-prio { --bs-btn-bg: #0f5132; --bs-btn-border-color: #0f5132; --bs-btn-color: #fff; --bs-btn-hover-bg: #0b3d26; --bs-btn-hover-color: #fff; --bs-btn-active-bg: #0f5132; --bs-btn-active-color: #fff; --bs-btn-active-border-color: #0f5132; }
.btn-resp-yes { --bs-btn-bg: #198754; --bs-btn-border-color: #198754; --bs-btn-color: #fff; --bs-btn-hover-bg: #146c43; --bs-btn-hover-color: #fff; --bs-btn-active-bg: #198754; --bs-btn-active-color: #fff; --bs-btn-active-border-color: #198754; }
.btn-resp-no { --bs-btn-bg: #b02a37; --bs-btn-border-color: #b02a37; --bs-btn-color: #fff; --bs-btn-hover-bg: #8c1f2a; --bs-btn-hover-color: #fff; --bs-btn-active-bg: #b02a37; --bs-btn-active-color: #fff; --bs-btn-active-border-color: #b02a37; }
.btn-outline-resp-prio { --bs-btn-color: #0f5132; --bs-btn-border-color: #8fbfa5; --bs-btn-hover-bg: #0f5132; --bs-btn-hover-color: #fff; --bs-btn-hover-border-color: #0f5132; --bs-btn-bg: #fff; }
.btn-outline-resp-yes { --bs-btn-color: #146c43; --bs-btn-border-color: #8fbfa5; --bs-btn-hover-bg: #198754; --bs-btn-hover-color: #fff; --bs-btn-hover-border-color: #198754; --bs-btn-bg: #fff; }
.btn-outline-resp-no { --bs-btn-color: #b02a37; --bs-btn-border-color: #e3a5ab; --bs-btn-hover-bg: #b02a37; --bs-btn-hover-color: #fff; --bs-btn-hover-border-color: #b02a37; --bs-btn-bg: #fff; }
.response-group .btn { flex: 1 1 0; white-space: nowrap; font-size: .8rem; padding-left: .25rem; padding-right: .25rem; }
.response-stack .btn { text-align: left; }
.resp-badge { font-weight: 500; }
.resp-prio { background: #0f5132; color: #fff; }
.resp-yes { background: #d1e7dd; color: #0f5132; }
.resp-no { background: #f8d7da; color: #842029; }
.resp-open { background: #efedf0; color: #6c636f; }
i.resp-icon { background: none; }
i.resp-icon.resp-prio, i.resp-icon.resp-yes { color: #198754; }
i.resp-icon.resp-no { color: #b02a37; }

/* Termindetail */
.group-title { padding: .45rem 1rem; background: #faf8fb; font-size: .75rem; letter-spacing: .04em; text-transform: uppercase; color: var(--bs-secondary-color); font-weight: 600; border-bottom: 1px solid var(--bs-border-color-translucent); }
.reg-row { display: flex; flex-wrap: wrap; gap: .5rem .75rem; align-items: center; padding: .7rem 0; border-top: 1px solid var(--bs-border-color-translucent); }
.internal-note { background: #fff8e1; border-left: 3px solid #f0b429; padding: .6rem .75rem; border-radius: .25rem; }
.event-text { overflow-wrap: anywhere; }

/* Kalender Monat */
.cal-title { min-width: 9.5rem; text-align: center; }
.cal-legend { display: flex; flex-wrap: wrap; gap: .35rem 1rem; }
.cal-dot { display: inline-block; width: .75rem; height: .75rem; border-radius: .2rem; background: var(--team-color); vertical-align: -.05rem; }
.cal-dot.is-tentative-dot { background: transparent; border: 1px dashed #6b5a72; }
.cal-grid { grid-template-columns: repeat(7, minmax(0, 1fr)); gap: 1px; background: #e4dfe6; border: 1px solid #e4dfe6; border-radius: .5rem; overflow: hidden; }
.cal-head { background: #fff; padding: .4rem; font-size: .75rem; font-weight: 600; text-transform: uppercase; color: var(--bs-secondary-color); text-align: center; }
.cal-day { background: #fff; min-height: 7.5rem; padding: .3rem; display: flex; flex-direction: column; gap: 2px; min-width: 0; }
.cal-day.is-weekend, .cal-head.is-weekend { background: #fbf8fb; }
.cal-day.is-other { background: #f6f4f7; }
.cal-day.is-other .cal-daynum { color: var(--bs-tertiary-color); }
.cal-daynum { display: flex; justify-content: space-between; align-items: center; font-size: .8rem; margin-bottom: 2px; }
.cal-daynum span { display: inline-flex; align-items: center; justify-content: center; min-width: 1.6rem; height: 1.6rem; border-radius: 50%; }
.cal-day.is-today .cal-daynum span { background: var(--equipe); color: #fff; font-weight: 700; }
.cal-add { opacity: 0; color: var(--equipe); line-height: 1; padding: .1rem .25rem; border-radius: .25rem; }
.cal-day:hover .cal-add, .cal-add:focus { opacity: 1; }
.cal-add:hover { background: var(--equipe-light); }
@media (hover: none) { .cal-add { opacity: .7; } }
.cal-chip { display: flex; align-items: center; gap: .3rem; font-size: .75rem; line-height: 1.25; padding: .15rem .35rem; border-radius: .3rem; color: #fff; background: var(--team-color); border: 1px solid var(--team-color); text-decoration: none; min-width: 0; }
.cal-chip:hover, .cal-chip:focus { color: #fff; filter: brightness(1.12); }
.cal-chip.is-tentative { background: #fff; color: var(--team-color); border-style: dashed; }
.cal-chip.is-tentative:hover { color: var(--team-color); background: var(--equipe-light); filter: none; }
.cal-chip.is-cont { opacity: .55; }

/* Kalender auf dem Handy */
.agenda-day { display: flex; gap: .75rem; padding: .6rem 0; border-bottom: 1px solid var(--bs-border-color-translucent); }
.agenda-date { width: 2.5rem; flex-shrink: 0; text-align: center; line-height: 1.1; }
.agenda-wd { display: block; font-size: .75rem; color: var(--bs-secondary-color); text-transform: uppercase; }
.agenda-num { display: block; font-size: 1.15rem; font-weight: 700; }
.agenda-day.is-today .agenda-num { color: var(--equipe); }
.agenda-day .cal-chip { font-size: .875rem; padding: .4rem .55rem; }
.agenda-day .cal-chip.is-cont { opacity: .7; }

/* Saisonübersicht */
.year-month .list-unstyled li:last-child .year-item { border-bottom: 0; }
.year-item { display: flex; gap: .5rem; align-items: center; padding: .45rem .9rem; border-bottom: 1px solid var(--bs-border-color-translucent); border-left: 3px solid var(--team-color); color: inherit; text-decoration: none; font-size: .9rem; }
.year-item.is-tentative { border-left-style: dashed; }
.year-item:hover { background: var(--equipe-light); }
.year-date { min-width: 6.4rem; flex-shrink: 0; white-space: nowrap; font-variant-numeric: tabular-nums; font-size: .8rem; color: var(--bs-secondary-color); }

.import-table td, .import-table th { font-size: .875rem; }

@media (max-width: 575.98px) {
  dl.data-list { grid-template-columns: 1fr; gap: .1rem; }
  dl.data-list dd { margin-bottom: .6rem; }
  .page-head > .btn, .page-head > .btn-row, .page-head > .btn-row > .btn, .page-head > .btn-row > a { width: 100%; }
  .page-head > .btn-row > .dropdown { flex: 1 1 auto; }
  .page-head > .btn-row > .dropdown > .btn { width: 100%; }
  .calendar-switch .nav-link { padding: .4rem .6rem; font-size: .9rem; }
}

@media print {
  .app-navbar, footer, .btn, .alert-dismissible .btn-close { display: none !important; }
  body { background: #fff; }
}
