/* ==========================================================================
   Bremen SysCom · Unterseiten Kontakt (kontakt.html) und Team (team.html)
   Normale, scrollbare Seiten im Stil der Website – keine 3D-Szene, keine Stationsführung.
   Nutzt tokens.css, base.css und site.css (Kopfzeile, Menü, Buttons, Kontaktlinks, Fuß, Schnellzugriff) –
   nicht das Stylesheet der 3D-Startseite (scroll.css).
   ========================================================================== */

/* Kopfzeile über laufendem Inhalt: deckend statt Verlauf (wie Rechtstexte) */
.page-sub .site-header::before { inset: 0; background: rgba(7, 9, 19, .985); border-bottom: 1px solid var(--line); }
.page-sub [id] { scroll-margin-top: calc(var(--header-h) + 1.25rem); }

.page-crumbs { display: flex; flex-wrap: wrap; align-items: center; gap: .55rem; margin-bottom: 1.4rem; font-family: var(--font-mono); font-size: var(--text-label); letter-spacing: .08em; text-transform: uppercase; color: var(--mist); }
.page-crumbs a { display: inline-flex; align-items: center; gap: .45rem; color: var(--signal-soft); }
.page-crumbs a:hover { color: var(--bone); }
.page-crumbs .icon { width: 1.1em; height: 1.1em; }

/* Leistungslinks zurück zu den Stationen der Startseite */
.page-links { padding: clamp(2.4rem, 6vh, 3.6rem) 0; border-top: 1px solid var(--line); background: var(--ink); }
.page-links__title { display: flex; align-items: center; gap: .8rem; font-size: clamp(1.5rem, 1.2rem + 1vw, 2rem); margin-bottom: 1.2rem; }
.page-links__title::before { content: ""; width: 1.75rem; height: 1px; background: var(--signal); flex: none; }
.page-links__list { display: grid; grid-template-columns: repeat(auto-fill, minmax(min(100%, 12.5rem), 1fr)); gap: 0 1.6rem; border-top: 1px solid var(--line); }
.page-links__list a { display: flex; align-items: center; gap: .6rem; min-height: 48px; padding: .5rem 0; font-weight: 560; color: var(--bone-dim); border-bottom: 1px solid rgba(170, 182, 255, .1); }
.page-links__list a:hover { color: var(--bone); }
.page-links__list .n { font-family: var(--font-mono); font-size: .72rem; color: var(--signal); min-width: 1.5rem; }

/* ==========================================================================
   Kontakt: Lars' Dünenbild als Hintergrund, Formular auf ruhiger, weitgehend deckender Fläche
   ========================================================================== */
.kontakt__hero {
  position: relative; isolation: isolate; overflow: hidden;
  min-height: 100vh; min-height: 100svh;
  padding: calc(var(--header-h) + clamp(2rem, 7vh, 4.5rem)) 0 clamp(3rem, 9vh, 5.5rem);
}
.kontakt__bild { position: absolute; inset: 0; z-index: -2; }
.kontakt__bild img { width: 100%; height: 100%; object-fit: cover; object-position: 50% 32%; }
/* Zurückhaltende Abdunklung: links dichter (Text), rechts leichter (Motiv), unten Übergang in den Seitengrund */
.kontakt__hero::before {
  content: ""; position: absolute; inset: 0; z-index: -1; pointer-events: none;
  background:
    linear-gradient(90deg, rgba(7, 9, 19, .88) 0%, rgba(7, 9, 19, .7) 38%, rgba(7, 9, 19, .34) 66%, rgba(7, 9, 19, .42) 100%),
    linear-gradient(180deg, rgba(7, 9, 19, .5) 0%, rgba(7, 9, 19, 0) 24%, rgba(7, 9, 19, 0) 72%, rgba(7, 9, 19, .9) 100%);
}
.kontakt__inner {
  display: grid; align-items: start; column-gap: clamp(2.5rem, 6vw, 6rem);
  grid-template-columns: minmax(0, 1fr) minmax(0, 33rem);
  grid-template-areas: "head panel" "wege panel";
  grid-template-rows: auto 1fr;
}
.kontakt__head { grid-area: head; max-width: 34rem; }
.kontakt__wege { grid-area: wege; max-width: 34rem; }
.kontakt__panel { grid-area: panel; }
/* Ohne Formular (nicht freigegeben): Kontaktwege links, rechts bleibt das Motiv frei */
.kontakt__title { font-size: clamp(2.7rem, 1.5rem + 3.6vw, 4.8rem); line-height: .98; margin-bottom: 1.1rem; }
.kontakt__lead { font-size: clamp(1.05rem, .95rem + .4vw, 1.25rem); color: #e2e6f3; max-width: 28em; }
.kontakt__wege .contact__big { margin: 1.8rem 0 1.8rem; }
.kontakt__wege .contact__details { color: #c9cfe6; }
.kontakt__support { margin-top: 1.4rem; font-size: .95rem; color: var(--mist); }
.kontakt__support a { display: inline-flex; align-items: center; gap: .35rem; margin-left: .3rem; font-weight: 660; color: var(--signal-soft); }
.kontakt__support .icon { width: 1em; height: 1em; }

.kontakt__panel {
  position: relative; padding: clamp(1.4rem, 1rem + 1.6vw, 2.3rem);
  background: rgba(8, 10, 21, .94); border: 1px solid var(--line);
  box-shadow: 0 34px 70px -34px rgba(0, 0, 0, .85);
  -webkit-backdrop-filter: blur(6px); backdrop-filter: blur(6px);
}
.kontakt__panel::before { content: ""; position: absolute; left: -1px; top: -1px; width: 56px; height: 2px; background: var(--signal); }
.kontakt__panel-title { font-size: clamp(1.6rem, 1.25rem + 1.1vw, 2.2rem); margin-bottom: .5rem; }
.form__intro { font-size: .92rem; color: var(--mist); margin-bottom: 1.4rem; }

/* ---------- Formular ---------- */
.form { display: grid; gap: 1.15rem; }
/* Vorname und Nachname nebeneinander; im Hochformat / in schmalen Fenstern untereinander (siehe unten) */
.field-row { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); align-items: start; gap: 1.15rem 1rem; }
.field { display: grid; gap: .4rem; }
.field label { font-weight: 620; font-size: .95rem; color: var(--bone); }
.field__req { color: var(--signal); margin-left: .15rem; }
.field__opt { font-weight: 400; color: var(--mist); }
.field input, .field textarea {
  width: 100%; min-height: 48px; padding: .72rem .85rem;
  font: inherit; font-size: 1rem; line-height: 1.45; color: var(--bone);   /* ≥ 16 px: iOS zoomt beim Fokus nicht */
  background: rgba(3, 5, 12, .72); border: 1px solid var(--line-strong); border-radius: var(--radius);
  transition: border-color .15s ease, box-shadow .15s ease;
}
.field textarea { min-height: 11rem; max-height: 60vh; resize: vertical; overscroll-behavior: contain; }
.field input:hover, .field textarea:hover { border-color: rgba(170, 182, 255, .5); }
.field input:focus, .field textarea:focus { outline: none; border-color: var(--signal); box-shadow: 0 0 0 3px rgba(95, 228, 200, .22); }
.field input[aria-invalid="true"], .field textarea[aria-invalid="true"] { border-color: var(--coral); }
.field input[aria-invalid="true"]:focus, .field textarea[aria-invalid="true"]:focus { box-shadow: 0 0 0 3px rgba(255, 107, 94, .25); }
.field input[readonly], .field textarea[readonly] { opacity: .7; }
.field__error { display: flex; gap: .45rem; align-items: flex-start; font-size: .88rem; color: #ffb4ad; }
.field__error::before { content: "!"; flex: none; display: grid; place-items: center; width: 1.15rem; height: 1.15rem; margin-top: .1rem; border-radius: 50%; background: var(--coral); color: var(--ink); font-weight: 800; font-size: .72rem; }
.field__meta { display: flex; justify-content: space-between; gap: 1rem; font-size: .8rem; color: var(--mist-dim); }
.field__count { margin-left: auto; font-variant-numeric: tabular-nums; }
.field__count.is-near { color: var(--ember); }
/* Falle für Spamprogramme: für Menschen unsichtbar und nicht erreichbar */
.field--hp { position: absolute !important; left: -10000px; width: 1px; height: 1px; overflow: hidden; }

.form__privacy { font-size: .86rem; line-height: 1.5; color: var(--mist); }
.form__privacy a { color: var(--signal-soft); text-decoration: underline; text-underline-offset: 3px; }
.form__actions { display: flex; flex-wrap: wrap; align-items: center; gap: .8rem 1.2rem; }
.form__actions .btn { border: 0; cursor: pointer; }
/* Gesperrt ist der Knopf nur ohne JavaScript (dann ausgegraut) und während eine Nachricht tatsächlich gesendet wird */
html:not(.js) .form__actions .btn[disabled] { cursor: not-allowed; opacity: .45; }
.form[aria-busy="true"] .form__actions .btn[disabled] { cursor: progress; opacity: .85; }
/* Hinweis, solange der Versand nicht eingerichtet ist (bzw. der Server nicht erreichbar ist) */
.form__notice { padding: .85rem 1rem; border: 1px solid var(--line); border-left: 3px solid var(--signal); background: rgba(95, 228, 200, .06); font-size: .93rem; line-height: 1.5; color: #dfe3f2; }
.form__notice a { color: var(--signal-soft); font-weight: 620; text-decoration: underline; text-underline-offset: 3px; }
.form__notice a:hover { color: var(--bone); }
.btn__spinner { width: 1.05em; height: 1.05em; border: 2px solid currentColor; border-right-color: transparent; border-radius: 50%; animation: spin .8s linear infinite; }
@keyframes spin { to { transform: rotate(360deg); } }
@media (prefers-reduced-motion: reduce) { .btn__spinner { animation-duration: 2.4s; } }

/* Meldungen: Laden, Fehler, Erfolg */
.form__alert { display: grid; gap: .45rem; padding: .95rem 1.05rem; border: 1px solid rgba(255, 107, 94, .55); border-left: 3px solid var(--coral); background: rgba(255, 107, 94, .09); color: #ffe1dd; font-size: .93rem; }
.form__alert strong { color: #fff; }
.form__alert a { color: #fff; text-decoration: underline; text-underline-offset: 3px; }
.form__alert:focus { outline: none; }
.form__status { font-size: .9rem; color: var(--mist); }
.form__done { display: grid; gap: .8rem; padding: .4rem 0 .2rem; }
.form__done:focus { outline: none; }
.form__done-title { display: flex; align-items: center; gap: .6rem; font-size: clamp(1.4rem, 1.2rem + .8vw, 1.8rem); }
.form__done-title .icon { width: 1.4rem; height: 1.4rem; color: var(--signal); }
.form__done p { color: #dfe3f2; }
.form__done .btn { justify-self: start; }

/* ==========================================================================
   Team: Vorstellung mit Monogramm oder Porträtfoto; neutrale Darstellung ohne beides: member--offen
   ========================================================================== */
.team { padding: calc(var(--header-h) + clamp(1.75rem, 5vh, 3.5rem)) 0 clamp(3rem, 8vh, 5rem); background: radial-gradient(120% 60% at 85% 0%, rgba(0, 125, 159, .14), rgba(7, 9, 19, 0) 60%); }
.team__head { max-width: 42rem; margin-bottom: clamp(2rem, 5vh, 3rem); }
.team__title { font-size: clamp(2.5rem, 1.5rem + 3.4vw, 4.4rem); line-height: .98; margin-bottom: 1rem; }
.team__lead { font-size: clamp(1.05rem, .95rem + .4vw, 1.25rem); color: #dfe3f2; }
/* Karten füllen die Inhaltsbreite gleichmäßig (Desktop drei bzw. vier je Reihe, bündig mit der Überschrift),
   einzelne Karten einer letzten Reihe stehen mittig statt links; mobil eine Spalte */
.team__list { display: flex; flex-wrap: wrap; justify-content: center; gap: 1.2rem; }
.team__list > .member { flex: 1 1 17.5rem; max-width: 28rem; }
.member {
  position: relative; display: grid; align-content: start; gap: .35rem;
  padding: 1.5rem 1.5rem 1.6rem; background: linear-gradient(180deg, rgba(10, 13, 27, .86), rgba(10, 13, 27, .66));
  border: 1px solid var(--line);
}
.member::before { content: ""; position: absolute; left: -1px; top: -1px; width: 56px; height: 2px; background: var(--signal); }
/* Monogramm statt Foto: Initialen auf Petrol mit Wellenlinie aus dem Logo */
.member__mark {
  position: relative; width: 4.5rem; height: 4.5rem; margin-bottom: .9rem; border-radius: 50%; overflow: hidden;
  display: grid; place-items: center;
  background: radial-gradient(circle at 30% 25%, #1b9ab9, var(--petrol) 45%, #04384a 100%);
  font-family: var(--font-display); font-weight: 600; font-size: 1.5rem; letter-spacing: .02em; color: var(--bone);
}
.member__mark::after { content: ""; position: absolute; left: -10%; right: -10%; bottom: 18%; height: 10px; border-top: 2px solid rgba(169, 241, 222, .55); border-radius: 50%; }
.member__foto { width: 4.5rem; height: 4.5rem; margin-bottom: .9rem; border-radius: 50%; object-fit: cover; }
.member__name { font-size: 1.45rem; line-height: 1.1; }
.member__role { font-family: var(--font-mono); font-size: var(--text-label); letter-spacing: .1em; text-transform: uppercase; color: var(--signal-soft); }
.member__text { margin-top: .5rem; font-size: .96rem; color: #dfe3f2; }
.member__contact { margin-top: .6rem; font-size: .92rem; }
.member__contact a { color: var(--signal-soft); }
/* Neutrale Darstellung (member--offen): Umriss mit Personensymbol statt Initialen, Texte gedämpft */
.member--offen .member__mark { background: none; border: 1px dashed rgba(170, 182, 255, .45); color: var(--mist-dim); }
.member--offen .member__mark::after { display: none; }
.member--offen .member__mark svg { width: 2rem; height: 2rem; }
.member--offen .member__name { color: var(--mist); font-weight: 480; }
.member--offen .member__role { color: var(--mist-dim); }
.member--offen .member__text { color: var(--mist-dim); font-style: italic; }
.team__cta { display: flex; flex-wrap: wrap; align-items: center; gap: 1rem 1.5rem; margin-top: clamp(2.4rem, 6vh, 3.4rem); padding-top: 1.6rem; border-top: 1px solid var(--line); }
.team__cta p { color: var(--mist); }

/* ==========================================================================
   Hochformat / schmale Fenster
   ========================================================================== */
@media (max-width: 899px) {
  html:not(.nav-ready) .page-sub .site-header { position: relative; }
  html:not(.nav-ready) .page-sub .kontakt__hero, html:not(.nav-ready) .page-sub .team { padding-top: 1.5rem; }

  /* Kontakt: Bild als Band oben (Dünenkamm und Meer frei), Überschrift darunter, das Formular beginnt noch auf
     dem Bild und läuft darüber hinaus; direkte Kontaktwege folgen unter dem Formular */
  .kontakt__hero { min-height: 0; padding: calc(var(--header-h) + 30vh) 0 clamp(2.5rem, 7vh, 4rem); padding-top: calc(var(--header-h) + 30svh); }
  .kontakt__bild, .kontakt__hero::before { bottom: auto; height: min(88vh, 46rem); height: min(88svh, 46rem); }
  .kontakt__bild img { object-position: 50% 18%; }
  .kontakt__hero::before {
    background: linear-gradient(180deg, rgba(7, 9, 19, .55) 0%, rgba(7, 9, 19, .12) 14%, rgba(7, 9, 19, .18) 30%, rgba(7, 9, 19, .7) 50%, rgba(7, 9, 19, .88) 72%, var(--ink) 100%);
  }
  .kontakt__inner { grid-template-columns: minmax(0, 1fr); grid-template-areas: "head" "panel" "wege"; grid-template-rows: none; }
  .kontakt__head .page-crumbs { color: var(--bone-dim); }
  .kontakt__title { font-size: clamp(2.4rem, 1.4rem + 6vw, 3.4rem); margin-bottom: .7rem; }
  .kontakt__lead { font-size: 1.02rem; }
  .kontakt__panel { margin: 1.6rem 0 0; padding: 1.3rem 1.15rem 1.4rem; -webkit-backdrop-filter: none; backdrop-filter: none; background: rgba(8, 10, 21, .95); }
  .kontakt__panel:not([hidden]) + .kontakt__wege { margin-top: 2.2rem; }
  .kontakt__wege .contact__big { margin: 1.4rem 0 1.4rem; }
  .kontakt__wege .contact__details { grid-template-columns: 1fr; }
  .form { gap: 1.05rem; }
  .field-row { grid-template-columns: minmax(0, 1fr); row-gap: 1.05rem; }
  .form__actions .btn { width: 100%; justify-content: center; }
  .team__title { font-size: clamp(2.3rem, 1.4rem + 6vw, 3.2rem); }
}
/* Formularfeld im Fokus (Bildschirmtastatur): Schnellzugriff aus dem Weg (kontakt.js setzt die Klasse) */
.form-fokus .dock { transform: translateY(110%); }

@media print {
  .site-header, .dock, .skip-link, .kontakt__bild, .page-links { display: none !important; }
}
