/* PropDoc Landingpage – Farben & Typo nach Corporate Identity v1.0 */

:root {
  --black: #000000;
  --white: #ffffff;
  --yellow: #ffe477;
  --grey: #d3d4db;       /* Dunstgrau: 2. Headline-Zeile, Text */
  --muted: #9a9ba3;      /* Sekundärtext, AA auf Schwarz */
  --olive: #636a52;
  --slate: #394452;
  --red: #f16767;
  --green: #6cc682;
  --blue: #708bbe;

  --card: rgba(255, 255, 255, 0.05);
  --line: rgba(255, 255, 255, 0.14);
  --field-line: rgba(255, 255, 255, 0.4); /* ≥ 3:1 auf Schwarz */
  --radius: 18px;

  --font: "Outfit", Arial, Helvetica, sans-serif;
  --ease: cubic-bezier(0.22, 1, 0.36, 1);

  --gutter: 16px;
  --section: 96px;
}

@media (min-width: 720px) {
  :root { --gutter: 32px; --section: 136px; }
}

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

html { color-scheme: dark; scroll-behavior: smooth; -webkit-text-size-adjust: 100%; }

body {
  margin: 0;
  background: var(--black);
  color: var(--grey);
  font-family: var(--font);
  font-size: 1.0625rem;
  line-height: 1.55;
  -webkit-font-smoothing: antialiased;
  overflow-x: hidden;
}

[hidden] { display: none !important; }
img { display: block; max-width: 100%; height: auto; }
a { color: inherit; }
h1, h2, h3, p, ul, ol, figure { margin: 0; }
ul, ol { padding: 0; list-style: none; }

:focus-visible { outline: 2px solid var(--yellow); outline-offset: 3px; border-radius: 6px; }

.skip {
  position: absolute; left: 16px; top: -60px; z-index: 100;
  background: var(--yellow); color: var(--black);
  padding: 10px 16px; border-radius: 999px; font-weight: 700; text-decoration: none;
}
.skip:focus { top: 12px; }

.wrap { width: 100%; max-width: 1120px; margin: 0 auto; padding: 0 var(--gutter); }

/* ---------- Typografie ---------- */

.logo {
  font-weight: 800;
  font-size: 1.625rem;
  letter-spacing: -0.04em;
  color: var(--white);
  text-decoration: none;
  line-height: 1;
}
.logo--small { font-size: 1.25rem; }

.headline {
  font-weight: 800;
  font-size: clamp(2.75rem, 8.4vw, 5.75rem);
  line-height: 0.95;
  letter-spacing: -0.04em;
  color: var(--white);
  text-wrap: balance;
}
.headline--section { font-size: clamp(2.25rem, 5.6vw, 3.75rem); }
.headline__second { color: var(--grey); }

.label {
  font-weight: 500;
  font-size: 0.8125rem;
  letter-spacing: 0.15em;
  text-transform: uppercase;
  color: var(--yellow);
}

.lead { font-size: clamp(1.125rem, 2vw, 1.3125rem); color: var(--white); max-width: 34em; }
.body { color: var(--grey); max-width: 32em; }
.accent { color: var(--yellow); }

h3 {
  font-weight: 700;
  font-size: 1.375rem;
  letter-spacing: -0.02em;
  line-height: 1.2;
  color: var(--white);
}

/* ---------- Buttons ---------- */

.pill {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-height: 52px;
  padding: 0 28px;
  border: 1.5px solid var(--white);
  border-radius: 999px;
  background: transparent;
  color: var(--yellow);
  font: 700 1.0625rem/1 var(--font);
  text-decoration: none;
  cursor: pointer;
  transition: background-color 0.2s var(--ease), color 0.2s var(--ease), border-color 0.2s var(--ease);
}
.pill:hover { background: var(--yellow); border-color: var(--yellow); color: var(--black); }
.pill:active { transform: scale(0.98); }
.pill--small { min-height: 2.75rem; padding: 0 1.125rem; font-size: 0.9375rem; }
.pill--block { width: 100%; }
.pill--solid { background: var(--yellow); border-color: var(--yellow); color: var(--black); }
.pill--solid:hover { background: var(--white); border-color: var(--white); }
.pill[disabled] { opacity: 0.6; cursor: progress; }

/* ---------- Status-Punkte ---------- */

.dot { display: inline-block; flex: none; width: 9px; height: 9px; border-radius: 50%; }
.dot--green { background: var(--green); }
.dot--yellow { background: var(--yellow); }
.dot--blue { background: var(--blue); }
.dot--red { background: var(--red); }
.dot--large { width: 14px; height: 14px; }

/* ---------- Karten ---------- */

.card {
  background: var(--card);
  border: 1px solid var(--line);
  border-radius: var(--radius);
}

/* ---------- Navigation ---------- */

.nav {
  position: sticky; top: 0; z-index: 50;
  background: rgba(0, 0, 0, 0.45);
  -webkit-backdrop-filter: saturate(140%) blur(12px);
  backdrop-filter: saturate(140%) blur(12px);
}
.nav__inner {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 20px;
  height: 72px;
}
.nav .logo {
  flex-shrink: 0;
}
.nav__links {
  display: none;
  gap: 32px;
}
.nav__links a {
  padding: 10px 0;
  color: var(--grey);
  text-decoration: none;
  font-size: 0.9375rem;
  font-weight: 500;
  white-space: nowrap;
}
.nav__links a:hover { color: var(--white); }
.nav .pill {
  flex-shrink: 0;
  white-space: nowrap;
}
@media (min-width: 820px) {
  .nav__links {
    display: flex;
  }
}

/* ---------- Glow (einziger Verlauf, laut CI) ---------- */

.glow {
  position: absolute;
  top: -20%; right: -15%;
  width: 70vw; height: 70vw; max-width: 900px; max-height: 900px;
  background: radial-gradient(closest-side, rgba(99, 106, 82, 0.55), rgba(99, 106, 82, 0));
  pointer-events: none;
  z-index: 0;
}
.glow--bottom {
  top: auto; bottom: -35%; right: auto; left: -20%;
  background: radial-gradient(closest-side, rgba(57, 68, 82, 0.6), rgba(57, 68, 82, 0));
}

/* Weiche Farbverläufe hinter Navigation und Hero, wie im Poster (Verlauf 1 am linken Rand, Verlauf 2 oben rechts) */
.blobs { position: absolute; top: 0; left: 0; width: 100%; height: max(100vh, 760px); overflow-x: clip; pointer-events: none; z-index: -1; }
.verlauf { position: absolute; max-width: none; height: auto; opacity: 0.55; }
.verlauf--links  { width: 56vw; left: -30vw; top: 6vw; }
.verlauf--rechts { width: 46vw; right: -14vw; top: -22vw; }
@media (max-width: 719px) {
  .verlauf--links  { width: 110vw; left: -62vw; top: 20vw; }
  .verlauf--rechts { width: 95vw; right: -38vw; top: -45vw; }
}

/* ---------- Hero ---------- */

.hero { position: relative; overflow: hidden; padding: 56px 0 72px; }
.hero__grid { position: relative; z-index: 1; display: grid; gap: 32px; align-items: center; }
.hero__head { display: grid; gap: 24px; }
.hero__text { display: grid; gap: 28px; }
.hero__cta { display: grid; gap: 14px; justify-items: start; margin-top: 8px; }
.hero__note { font-size: 0.875rem; color: var(--muted); }

.hero__visual { position: relative; justify-self: center; width: min(72vw, 300px); }
.mascot--hero { width: 100%; animation: float 6s ease-in-out infinite; }

/* Maskottchen-Bühne: bei Hover, Tippen oder Scrollen läuft reihum eine Bewegung */
.mascot-stage { transform-origin: 50% 100%; cursor: pointer; will-change: transform; }
.mascot-stage.is-hop    { animation: m-hop 0.9s var(--ease); }
.mascot-stage.is-wiggle { animation: m-wiggle 0.9s ease-in-out; }
.mascot-stage.is-turn   { animation: m-turn 1s var(--ease); }
.mascot-stage.is-squish { animation: m-squish 0.8s ease-out; }

.bubble {
  position: absolute;
  left: -14%; bottom: -6%;
  display: flex; align-items: center; gap: 10px;
  width: max-content; max-width: 250px;
  padding: 12px 16px;
  background: #111214;
  border: 1px solid var(--line);
  border-radius: 14px;
  font-size: 0.875rem; line-height: 1.35;
  color: var(--grey);
  opacity: 0;
  transform: translateY(8px);
  animation: pop 0.6s var(--ease) 1.4s forwards;
}
.bubble strong { color: var(--white); font-weight: 500; }

@media (min-width: 900px) {
  .hero { padding: 96px 0 120px; }
  .hero__grid { grid-template-columns: 1.4fr 1fr; column-gap: 56px; row-gap: 40px; }
  .hero__head { grid-column: 1 / -1; }
  .hero__visual { width: 360px; justify-self: end; margin-top: -48px; margin-right: -24px; }
  .bubble { left: -38%; bottom: 4%; }
}

/* ---------- Sektionen ---------- */

.section { position: relative; padding: var(--section) 0 0; }
.section--tight { padding-top: 24px; }
.section--last { overflow: hidden; padding-bottom: var(--section); }

/* Zahlen */
.stats { display: grid; gap: 16px; margin-top: 20px; }
.stat { padding: 28px; }
.stat__num {
  font-weight: 800; font-size: clamp(2.5rem, 5vw, 3.25rem);
  letter-spacing: -0.04em; line-height: 1; color: var(--white);
}
.stat__text { margin-top: 0.75rem; color: var(--grey); font-size: 1rem; }
@media (min-width: 760px) { .stats { grid-template-columns: repeat(3, 1fr); } }

/* Schritte */
.steps { display: grid; gap: 16px; margin-top: 48px; counter-reset: none; }
.step { position: relative; padding: 28px; display: grid; gap: 10px; align-content: start; }
.step p { color: var(--grey); font-size: 1rem; }
.step__num { font-weight: 800; font-size: 1.75rem; color: var(--yellow); line-height: 1; }
.mascot--step { height: 124px; width: auto; margin: -8px 0 12px -10px; object-fit: contain; object-position: left bottom; }
.step:hover .mascot--step { animation: bob 0.9s var(--ease); }
@media (min-width: 860px) { .steps { grid-template-columns: repeat(3, 1fr); } }

/* Postfach-Feed */
.inbox { display: grid; gap: 48px; }
.inbox__intro { display: grid; gap: 20px; align-content: start; }
.feed { border-top: 1px solid var(--line); }
.feed__row {
  display: grid; gap: 6px;
  padding: 20px 0;
  border-bottom: 1px solid var(--line);
}
.feed__in { color: var(--muted); font-size: 1rem; }
.feed__from {
  display: block; margin-bottom: 2px;
  font-size: 0.75rem; font-weight: 500; letter-spacing: 0.15em; text-transform: uppercase; color: var(--muted);
}
.feed__out { display: flex; align-items: center; gap: 10px; color: var(--white); font-weight: 500; }
@media (min-width: 900px) {
  .feed__row { grid-template-columns: 1fr 1fr; gap: 24px; align-items: end; }
}

/* Vorteile */
.benefits { display: grid; gap: 32px; margin-top: 48px; }
.benefit { display: grid; gap: 10px; padding-top: 20px; border-top: 1px solid var(--line); }
.benefit p { color: var(--grey); font-size: 1rem; }
@media (min-width: 860px) { .benefits { grid-template-columns: repeat(3, 1fr); gap: 32px; } }

.screen { margin-top: 64px; }
.screen img { width: 100%; border-radius: var(--radius); border: 1px solid var(--line); }
.screen figcaption { margin-top: 0.75rem; font-size: 0.875rem; color: var(--muted); }

.facts { display: grid; gap: 28px; margin-top: 64px; }
.facts li { display: grid; gap: 8px; }
.facts h3 { font-size: 1.125rem; }
.facts p { color: var(--muted); font-size: 0.9375rem; }
@media (min-width: 860px) { .facts { grid-template-columns: repeat(3, 1fr); gap: 32px; } }

/* Preis */
.price { display: grid; gap: 40px; align-items: center; }
.price__intro { display: grid; gap: 20px; }
.price__card { padding: 32px; display: grid; gap: 8px; }
.price__amount {
  margin-top: 12px;
  font-weight: 800; font-size: clamp(3.5rem, 8vw, 4.75rem);
  letter-spacing: -0.04em; line-height: 1; color: var(--yellow);
}
.price__amount span { font-size: 0.36em; letter-spacing: -0.02em; color: var(--white); }
.price__terms { color: var(--muted); font-size: 0.9375rem; }
.checklist { display: grid; gap: 12px; margin: 24px 0 28px; }
.checklist li { position: relative; padding-left: 1.75rem; color: var(--grey); font-size: 1rem; }
.checklist li::before {
  content: ""; position: absolute; left: 2px; top: 0.45em;
  width: 12px; height: 7px;
  border-left: 2px solid var(--green); border-bottom: 2px solid var(--green);
  transform: rotate(-45deg);
}
@media (min-width: 900px) {
  .price { grid-template-columns: 1fr 1fr; gap: 72px; }
  .price__card { padding: 40px; }
}

/* Warteliste */
.waitlist { position: relative; z-index: 1; display: grid; gap: 40px; }
.waitlist__intro { display: grid; gap: 24px; align-content: start; }
.waitlist .headline { font-size: clamp(2.75rem, 5.4vw, 4rem); }
.mascot--waitlist { width: 160px; animation: float 6s ease-in-out infinite 1s; }
@media (min-width: 900px) {
  .waitlist { grid-template-columns: 1fr 1fr; gap: 72px; align-items: start; }
  .mascot--waitlist { width: 200px; margin-top: 16px; }
}

.form { padding: 28px; }
.form__body { display: grid; gap: 20px; }
.field { display: grid; gap: 8px; }
.field label { font-size: 0.9375rem; font-weight: 500; color: var(--white); }
.optional { color: var(--muted); font-weight: 400; margin-left: 4px; }
.field input, .field select {
  width: 100%;
  min-height: 52px;
  padding: 0 16px;
  background: var(--black);
  border: 1px solid var(--field-line);
  border-radius: 12px;
  color: var(--white);
  font: 400 1.0625rem var(--font);
  transition: border-color 0.2s;
  -webkit-appearance: none; appearance: none;
}
.field select {
  background-image: linear-gradient(45deg, transparent 50%, var(--grey) 50%), linear-gradient(135deg, var(--grey) 50%, transparent 50%);
  background-position: calc(100% - 22px) 23px, calc(100% - 17px) 23px;
  background-size: 5px 5px;
  background-repeat: no-repeat;
}
.field input:hover, .field select:hover { border-color: rgba(255, 255, 255, 0.6); }
.field input:focus, .field select:focus { outline: none; border-color: var(--yellow); }
.field input[aria-invalid="true"] { border-color: var(--red); }

.consent { display: flex; gap: 0.75rem; align-items: flex-start; font-size: 0.875rem; color: var(--muted); cursor: pointer; }
.consent input { flex: none; width: 20px; height: 20px; margin: 1px 0 0; accent-color: var(--yellow); }
.consent a { color: var(--grey); }

.form__error { min-height: 0; font-size: 0.875rem; color: var(--red); }
.form__error:empty { display: none; }

.form__done { display: grid; gap: 12px; justify-items: start; padding: 24px 0; }
.form__done p { color: var(--grey); }

.hp { position: absolute; left: -9999px; width: 1px; height: 1px; opacity: 0; }

@media (min-width: 720px) { .form { padding: 36px; } }

/* Footer */
.footer { border-top: 1px solid var(--line); padding: 32px 0 40px; }
.footer__inner { display: grid; gap: 12px; }
.footer p { font-size: 0.875rem; color: var(--muted); }
.footer a { color: var(--grey); text-decoration: none; }
.footer a:hover { color: var(--white); text-decoration: underline; }
@media (min-width: 820px) {
  .footer__inner { grid-template-columns: auto 1fr auto; align-items: center; gap: 32px; }
}

/* ---------- Unterseiten / Rechtliches ---------- */
.page-legal { padding: 48px 0 96px; position: relative; z-index: 1; }
.page-legal__back { display: inline-flex; align-items: center; gap: 8px; color: var(--grey); text-decoration: none; font-size: 0.9375rem; margin-bottom: 32px; font-weight: 500; }
.page-legal__back:hover { color: var(--white); }
.legal-card { padding: 28px; }
@media (min-width: 720px) { .legal-card { padding: 48px; } }
.legal-card h1 { font-size: 2.25rem; font-weight: 800; color: var(--white); margin-bottom: 24px; letter-spacing: -0.03em; }
.legal-card h2 { font-size: 1.375rem; font-weight: 700; color: var(--white); margin: 32px 0 12px; }
.legal-card p, .legal-card ul { color: var(--grey); line-height: 1.7; margin-bottom: 16px; font-size: 1rem; }
.legal-card ul { padding-left: 20px; list-style: disc; }
.legal-card a { color: var(--yellow); text-decoration: underline; }

/* ---------- Bewegung ---------- */

@keyframes float {
  0%, 100% { transform: translateY(0) rotate(0deg); }
  50% { transform: translateY(-10px) rotate(-1deg); }
}
@keyframes bob {
  0%, 100% { transform: translateY(0); }
  40% { transform: translateY(-8px); }
}
@keyframes pop { to { opacity: 1; transform: none; } }

/* 1: Freudensprung mit Landung */
@keyframes m-hop {
  0%   { transform: translateY(0) scale(1, 1); }
  15%  { transform: translateY(0) scale(1.06, 0.92); }
  45%  { transform: translateY(-48px) scale(0.96, 1.05); }
  70%  { transform: translateY(0) scale(1.08, 0.9); }
  85%  { transform: translateY(-6px) scale(0.98, 1.02); }
  100% { transform: translateY(0) scale(1, 1); }
}
/* 2: Hin- und herwackeln */
@keyframes m-wiggle {
  0%, 100% { transform: rotate(0deg); }
  15% { transform: rotate(-9deg); }
  35% { transform: rotate(8deg); }
  55% { transform: rotate(-5deg); }
  75% { transform: rotate(3deg); }
}
/* 3: Einmal umdrehen */
@keyframes m-turn {
  0%   { transform: perspective(800px) rotateY(0deg); }
  100% { transform: perspective(800px) rotateY(360deg); }
}
/* 4: Zusammenstauchen und aufploppen */
@keyframes m-squish {
  0%, 100% { transform: scale(1, 1); }
  25% { transform: scale(1.14, 0.84); }
  50% { transform: scale(0.9, 1.12); }
  70% { transform: scale(1.04, 0.97); }
}

.js .reveal { opacity: 0; transform: translateY(16px); transition: opacity 0.7s var(--ease), transform 0.7s var(--ease); }
.js .reveal.is-visible { opacity: 1; transform: none; }

@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  *, *::before, *::after { animation: none !important; transition: none !important; }
  .bubble { opacity: 1; transform: none; }
  .js .reveal { opacity: 1; transform: none; }
}
