/* ============================================================
   Public Chrome — Landing-Look für anonym erreichbare Drupal-Seiten
   ============================================================
   Header/Footer und Typografie für: Beta-Bewerbung, Changelog,
   Login/Register/Passwort-Reset — nur für anonyme Besucher.

   Seit PLA-473 (2026-09-17) folgt diese Datei der NEUEN Landingpage
   (03_website/landing-next/src/style.css) und dem Marken-Register aus
   00_knowledge/canonical/styleguide-current.md: Überschriften in Light 300
   mit enger Laufweite, Fließtext in Light 300, Kicker in Versalien, Mint
   nur auf dunklem Grund. Scope bleibt .pc, damit nichts in die eingeloggte
   Web-App (Produkt-Register) läuft.

   Logo und Schriften liegen im Theme selbst (img/, fonts/). Frueher kamen
   sie aus /landing/assets/ — das hing an der alten Landingpage und waere
   beim Umstieg auf die neue weggefallen (PLA-473).

   Wartungshinweis: Ändert sich die Kopfleiste der Landingpage
   (landing-next: .topbar, .brand, .topicon, .lang, .topcta), diese Datei
   von Hand nachziehen.
   ============================================================ */

@font-face {
  font-family: "Source Sans 3";
  src: url("../fonts/source-sans-3-latin-300-normal.woff2") format("woff2");
  font-weight: 300;
  font-style: normal;
  font-display: swap;
}
@font-face {
  font-family: "Source Sans 3";
  src: url("../fonts/source-sans-3-latin-400-normal.woff2") format("woff2");
  font-weight: 400;
  font-style: normal;
  font-display: swap;
}
@font-face {
  font-family: "Source Sans 3";
  src: url("../fonts/source-sans-3-latin-600-normal.woff2") format("woff2");
  font-weight: 600;
  font-style: normal;
  font-display: swap;
}
@font-face {
  font-family: "Source Sans 3";
  src: url("../fonts/source-sans-3-latin-700-normal.woff2") format("woff2");
  font-weight: 700;
  font-style: normal;
  font-display: swap;
}

/* --- Scope: eigene Custom Properties, kein globales :root --- */
.pc {
  --pc-bg: #161b19;
  --pc-surface-1: #1a2420;
  --pc-primary: #84d4b0;
  --pc-primary-dim: rgba(132, 212, 176, 0.1);
  --pc-primary-border: rgba(132, 212, 176, 0.25);
  --pc-on-bg: #e2e5e2;
  --pc-on-muted: #c6ceca;
  --pc-on-subtle: #929b96;
  --pc-border: #464e4a;
  --pc-border-subtle: rgba(70, 78, 74, 0.45);
  --pc-font: "Source Sans 3", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
  --pc-deep: #004633;
  --pc-hairline: rgba(132, 212, 176, 0.22);
  --pc-container-max: 1140px;

  font-family: var(--pc-font);
  font-weight: 300;
  background: var(--pc-bg);
  color: var(--pc-on-bg);
  -webkit-font-smoothing: antialiased;
  min-height: 100vh;
  display: flex;
  flex-direction: column;
}

.pc *,
.pc *::before,
.pc *::after {
  box-sizing: border-box;
}

/* Nur Links im Inhalt werden mint. Als `.pc a` schlug die Regel die Farben
   von Wortmarke und gemeinsamem Footer — das Logo stand komplett in Mint,
   auf der Landing ist die Schrift weiß (Dirk, 2026-09-17). */
.pc-main a {
  color: var(--pc-primary);
  text-decoration: none;
  transition: opacity 0.2s ease;
}
.pc-main a:hover {
  opacity: 0.8;
}
/* Kopf und Login-Karte ohne Unterstreichung, Farben setzen sie selbst. */
.pc-nav a,
.pc-auth a {
  text-decoration: none;
}

.pc-container {
  width: 100%;
  max-width: var(--pc-container-max);
  margin: 0 auto;
  padding: 0 1.5rem;
}

.pc-main {
  flex: 1;
}

/* --- Badge (z. B. "Beta-Programm") --- */
.pc-badge {
  display: inline-flex;
  align-items: center;
  gap: 0.4rem;
  padding: 0.3rem 0.875rem;
  background: var(--pc-primary-dim);
  color: var(--pc-primary);
  border: 1px solid var(--pc-primary-border);
  border-radius: 50rem;
  font-size: 0.8125rem;
  font-weight: 600;
  letter-spacing: 0.01em;
}
.pc-badge-dot {
  width: 6px;
  height: 6px;
  background: var(--pc-primary);
  border-radius: 50%;
  animation: pc-dot-pulse 2s ease-in-out infinite;
}
@keyframes pc-dot-pulse {
  0%, 100% { opacity: 1; transform: scale(1); }
  50% { opacity: 0.5; transform: scale(0.8); }
}

/* ============================================================
   NAV — wie die Kopfleiste von landing-next
   Statisch statt fixed: die Landing blendet ihren Verlauf per Scroll-JS
   ein, das braucht es hier nicht.
   ============================================================ */
.pc-nav {
  padding: 1.1rem 0;
}
.pc-nav-inner {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 2rem;
}
.pc-nav-brand {
  display: inline-flex;
  align-items: center;
  gap: 0.6rem;
  flex: 0 0 auto;
  color: var(--pc-on-bg);
  font-weight: 600;
  font-size: 0.95rem;
  letter-spacing: 0.01em;
  text-decoration: none;
}
.pc-nav-brand:hover {
  opacity: 1;
  color: var(--pc-on-bg);
}
.pc-nav-brand img {
  display: block;
  width: 32px;
  height: 32px;
}
.pc-nav-actions {
  display: flex;
  align-items: center;
  gap: 0.6rem;
}
.pc .pc-topicon {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  flex: 0 0 auto;
  width: 2.05rem;
  height: 2.05rem;
  border: 1px solid var(--pc-hairline);
  border-radius: 999px;
  color: var(--pc-on-muted);
  transition: border-color 0.25s ease, color 0.25s ease;
}
.pc .pc-topicon svg {
  width: 17px;
  height: 17px;
  display: block;
}
.pc .pc-topicon:hover {
  opacity: 1;
  border-color: var(--pc-primary);
  color: var(--pc-primary);
}
/* Sprachwahl: der Drupal-Block rendert DE/EN als Liste. Als Paar im
   selben Rahmen wie das Instagram-Symbol. */
.pc-lang ul {
  display: flex;
  margin: 0;
  padding: 0.18rem;
  list-style: none;
  border: 1px solid var(--pc-hairline);
  border-radius: 999px;
}
.pc-lang li {
  margin: 0;
}
.pc .pc-lang a {
  display: block;
  padding: 0.22rem 0.62rem;
  border-radius: 999px;
  color: var(--pc-on-muted);
  font-size: 0.78rem;
  font-weight: 600;
  letter-spacing: 0.04em;
}
.pc .pc-lang a:hover {
  opacity: 1;
  color: var(--pc-primary);
}
.pc .pc-lang a.is-active {
  background: rgba(132, 212, 176, 0.14);
  color: var(--pc-on-bg);
}
.pc .pc-topcta {
  flex: 0 0 auto;
  background: var(--pc-primary);
  color: var(--pc-deep);
  border-radius: 999px;
  padding: 0.42rem 1rem;
  font-size: 0.82rem;
  font-weight: 600;
  letter-spacing: 0.02em;
  transition: filter 0.2s ease;
}
.pc .pc-topcta:hover {
  opacity: 1;
  filter: brightness(1.08);
}

/* ============================================================
   TYPOGRAFIE — Marken-Register
   Gilt für alles innerhalb von .pc, auch für Inhalte aus Drupal
   (Webform, View). Bedienelemente bleiben unberührt: Light nur für
   Überschriften und Fließtext.
   ============================================================ */
.pc h1,
.pc .h1,
.pc h2,
.pc .h2 {
  font-weight: 300;
  letter-spacing: -0.022em;
  line-height: 1.08;
  color: #fff;
}
.pc h1,
.pc .h1 {
  font-size: clamp(2.1rem, 4.1vw, 3.2rem);
}
.pc h2,
.pc .h2 {
  font-size: clamp(1.6rem, 3vw, 2.3rem);
}
.pc h3,
.pc .h3 {
  font-weight: 600;
  letter-spacing: 0;
}
.pc p,
.pc li {
  line-height: 1.62;
}
.pc .pc-kicker {
  margin: 0 0 1.4rem;
  font-size: 0.76rem;
  font-weight: 600;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: var(--pc-primary);
}
.pc .pc-lede {
  margin: 0;
  font-size: clamp(1.05rem, 1.6vw, 1.3rem);
  font-weight: 300;
  color: var(--pc-on-muted);
}
.pc .pc-punch {
  margin: 0;
  padding-left: 1rem;
  border-left: 2px solid var(--pc-primary);
  font-size: clamp(1.05rem, 1.5vw, 1.3rem);
  font-weight: 400;
  line-height: 1.4;
  color: #fff;
}
/* Formular- und Knopftexte bleiben lesbar kräftig. */
.pc label,
.pc .form-item label,
.pc button,
.pc .button,
.pc .btn,
.pc input,
.pc select,
.pc textarea {
  font-weight: 400;
}
.pc button,
.pc .button,
.pc .btn {
  font-weight: 600;
}

/* Beta-Bewerbung: Hero im Landing-Stil statt eigener Fettschrift. */
.pc .webform-application-hero {
  background: transparent;
  padding: 4.5rem 0 2.5rem;
}
.pc .webform-application-hero .webform-application-badge {
  background: transparent;
  border: 0;
  padding: 0;
  margin-bottom: 1.4rem;
  color: var(--pc-primary);
  font-size: 0.76rem;
  letter-spacing: 0.14em;
  text-transform: uppercase;
}
.pc .webform-application-hero .webform-application-badge svg {
  display: none;
}
.pc .webform-application-hero h1 {
  font-weight: 300;
  font-size: clamp(2.1rem, 4.6vw, 3.4rem);
  letter-spacing: -0.022em;
  line-height: 1.04;
  color: #fff;
  margin-bottom: 1rem;
}
.pc .webform-application-hero p {
  font-weight: 300;
  font-size: clamp(1.05rem, 1.6vw, 1.3rem);
  color: var(--pc-on-muted);
}
/* Der alte Hero-Schein endete an der Oberkante des Hero und stand dort als
   harte Linie unter der Kopfleiste. */
.pc .webform-application-hero::before {
  display: none;
}
.pc .webform-application-body .webform-application-card {
  background: #1a2420;
  border: 1px solid var(--pc-border-subtle);
  box-shadow: none;
}

/* Changelog: die View rendert ihre Einträge als Liste, deren Punkt
   neben der ersten Karte stand. */
.pc ul.changelog-feed {
  list-style: none;
  padding-left: 0;
}

/* ============================================================
   AUTH — Login, Registrierung, Passwort
   Die Karte bleibt, der Grund wird der der Landingpage: dunkel mit einem
   weichen Mint-Schein von oben, statt eines zufälligen Stockfotos.
   ============================================================ */
.pc-auth.login-screen {
  background:
    radial-gradient(ellipse 70% 55% at 50% 0%, rgba(132, 212, 176, 0.10), transparent 70%),
    var(--pc-bg);
  color: var(--pc-on-bg);
}
.pc-auth .login-card {
  background: #1a2420;
  border: 1px solid var(--pc-border-subtle);
  box-shadow: none;
}
.pc-auth .login-logo-img {
  height: 44px;
}
.pc .pc-auth .login-logo-wordmark,
.pc-auth .login-logo-wordmark {
  font-weight: 600;
  font-size: 1rem;
  letter-spacing: 0.01em;
  color: var(--pc-on-bg);
}
.pc-auth .login-heading,
.pc-auth .login-card h1.page-title,
.pc-auth .login-card .page-title {
  font-weight: 300;
  font-size: 2rem;
  letter-spacing: -0.022em;
  line-height: 1.1;
  color: #fff;
}
.pc-auth .login-subheading,
.pc-auth .login-card .page-subtitle {
  font-weight: 300;
  color: var(--pc-on-muted);
}
.pc-auth .login-footer a {
  color: var(--pc-on-subtle);
}
.pc-auth .login-footer a:hover {
  color: var(--pc-on-muted);
  opacity: 1;
}

/* ============================================================
   404 — „Polly not found.“ (PLA-478)
   Gleiches Motiv und gleicher Scanner wie landing-next/public/404.html.
   ============================================================ */
.pc-nf {
  display: grid;
  place-items: center;
  padding: 0 1.5rem 3rem;
}
.pc-nf__inner {
  position: relative;
  width: min(100%, 1180px);
}
.pc-nf__stage {
  position: relative;
  aspect-ratio: 16 / 9;
  /* Ganz im Bild, sonst steht dessen Kante als Rechteck auf dem Grund. */
  -webkit-mask-image: radial-gradient(ellipse 50% 50% at 50% 50%, #000 58%, transparent 100%);
          mask-image: radial-gradient(ellipse 50% 50% at 50% 50%, #000 58%, transparent 100%);
}
.pc-nf__stage img {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
}
.pc-nf__scan {
  -webkit-mask-image: linear-gradient(180deg, transparent 0%, #000 42%, #000 58%, transparent 100%);
          mask-image: linear-gradient(180deg, transparent 0%, #000 42%, #000 58%, transparent 100%);
  -webkit-mask-size: 100% 46%;
          mask-size: 100% 46%;
  -webkit-mask-repeat: no-repeat;
          mask-repeat: no-repeat;
  -webkit-mask-position: 0 -60%;
          mask-position: 0 -60%;
  animation: pc-nf-scan 7s cubic-bezier(.45, 0, .55, 1) 1.2s infinite;
}
.pc-nf__line {
  position: absolute;
  left: 22%;
  right: 22%;
  top: 0;
  height: 1px;
  background: linear-gradient(90deg, transparent, rgba(132, 212, 176, .75), transparent);
  box-shadow: 0 0 14px rgba(132, 212, 176, .55);
  opacity: 0;
  animation: pc-nf-line 7s cubic-bezier(.45, 0, .55, 1) 1.2s infinite;
}
@keyframes pc-nf-scan {
  0%, 55% { -webkit-mask-position: 0 -60%; mask-position: 0 -60%; }
  95%, 100% { -webkit-mask-position: 0 160%; mask-position: 0 160%; }
}
@keyframes pc-nf-line {
  0%, 55% { top: 8%; opacity: 0; }
  60% { opacity: 1; }
  90% { opacity: 1; }
  95%, 100% { top: 96%; opacity: 0; }
}
.pc-nf__copy {
  position: absolute;
  left: 0;
  right: 0;
  top: 4%;
  z-index: 1;
  text-align: center;
  padding: 0 1rem;
}
.pc-nf__copy .pc-kicker {
  margin-bottom: .6rem;
}
.pc .pc-nf__code {
  margin: 0;
  font-weight: 300;
  font-size: clamp(3.4rem, 9vw, 7rem);
  line-height: 1;
  letter-spacing: -.03em;
  color: #fff;
}
.pc .pc-nf__title {
  margin: .3rem 0 0;
  font-weight: 300;
  font-size: clamp(1.6rem, 3.4vw, 2.6rem);
  line-height: 1.1;
  letter-spacing: -.022em;
  color: var(--pc-primary);
}
.pc-nf__below {
  position: relative;
  z-index: 1;
  margin-top: -1.5rem;
  text-align: center;
}
.pc .pc-nf__below p {
  margin: 0 auto 1.4rem;
  max-width: 34rem;
  color: var(--pc-on-muted);
  font-size: clamp(1.02rem, 1.4vw, 1.2rem);
}
.pc-nf__links {
  display: flex;
  gap: .8rem;
  justify-content: center;
  flex-wrap: wrap;
}
.pc .pc-nf__ghost {
  border: 1px solid var(--pc-hairline);
  border-radius: 999px;
  padding: .42rem 1rem;
  color: var(--pc-on-muted);
  font-size: .82rem;
  font-weight: 600;
}
.pc .pc-nf__ghost:hover {
  opacity: 1;
  border-color: var(--pc-primary);
  color: var(--pc-primary);
}
@media (max-width: 700px) {
  .pc-nf__stage { aspect-ratio: 4 / 5; }
  .pc-nf__copy { top: 6%; }
  .pc-nf__below { margin-top: -2.5rem; }
  .pc-nf__line { left: 12%; right: 12%; }
}
@media (prefers-reduced-motion: reduce) {
  .pc-nf__scan,
  .pc-nf__line { display: none; }
}

/* ============================================================
   FOOTER
   ============================================================ */
.pc-footer {
  padding: 3.5rem 0 0;
  border-top: 1px solid var(--pc-border-subtle);
  margin-top: 3rem;
}
.pc-footer-top {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 3rem 4rem;
  align-items: start;
  padding-bottom: 3rem;
}
.pc-footer-right-cols {
  display: grid;
  grid-template-columns: 2fr 1fr;
  gap: 3rem;
}
.pc-footer-col-brand {
  max-width: 260px;
}
.pc-footer-brand {
  display: inline-flex;
  align-items: center;
  gap: 0.625rem;
  color: var(--pc-on-muted);
  font-weight: 700;
  font-size: 0.9375rem;
  text-decoration: none;
  text-transform: uppercase;
  letter-spacing: 0.07em;
  margin-bottom: 0.625rem;
}
.pc-footer-brand:hover {
  opacity: 1;
  color: var(--pc-on-bg);
}
.pc-footer-brand img {
  width: 22px;
  height: 22px;
}
.pc-footer-tagline {
  font-size: 0.8125rem;
  color: var(--pc-on-subtle);
  line-height: 1.6;
}
.pc-footer-col-label {
  font-size: 0.6875rem;
  font-weight: 600;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  color: var(--pc-on-subtle);
  margin-bottom: 0.875rem;
}
.pc-footer-instagram {
  display: inline-flex;
  align-items: center;
  gap: 0.5rem;
  font-size: 0.875rem;
  font-weight: 500;
  color: var(--pc-on-muted);
  text-decoration: none;
  transition: color 0.2s;
}
.pc-footer-instagram:hover {
  color: var(--pc-on-bg);
}
.pc-footer-instagram svg {
  flex-shrink: 0;
}
.pc-footer-links {
  list-style: none;
  display: flex;
  flex-direction: column;
  gap: 0.625rem;
  margin: 0;
  padding: 0;
}
.pc-footer-links a {
  font-size: 0.875rem;
  color: var(--pc-on-subtle);
  text-decoration: none;
  transition: color 0.2s;
}
.pc-footer-links a:hover {
  color: var(--pc-on-muted);
}
.pc-footer-bottom {
  border-top: 1px solid var(--pc-border-subtle);
  padding: 1.25rem 0;
  font-size: 0.8125rem;
  color: var(--pc-on-subtle);
}
.pc-footer-bottom p {
  margin: 0;
}

/* ============================================================
   RESPONSIVE
   ============================================================ */
@media (max-width: 640px) {
  .pc .pc-topicon {
    display: none;
  }
  .pc-nav-inner {
    gap: 1rem;
  }
  .pc-footer-top {
    grid-template-columns: 1fr;
    gap: 2rem;
  }
  .pc-footer-col-brand {
    max-width: 100%;
    grid-column: 1 / -1;
  }
  .pc-footer-right-cols {
    grid-template-columns: 1fr 1fr;
    gap: 1.5rem;
  }
  .pc-footer-bottom {
    text-align: center;
  }
}
