/* ============================================================
   smartvillage — Digitale Exposés · Nacht-Edition
   Radikal editorial: viel Schwarz, Hairlines, riesige Typo,
   ATC Arquette (Hausschrift, Black × Extralight Oblique),
   Coral #FF5A49 als Signal. Logos & Token aus dem offiziellen
   Design-System (Corporate Design Manual 2025).
   ============================================================ */

/* ─── ATC Arquette — offizielle Hausschrift (Design-Manual 2025) ─── */
@font-face { font-family:'ATC Arquette'; src:url('fonts/ATCArquette-Extralight.otf') format('opentype'); font-weight:200; font-style:normal; font-display:swap; }
@font-face { font-family:'ATC Arquette'; src:url('fonts/ATCArquette-ExtralightOblique.otf') format('opentype'); font-weight:200; font-style:italic; font-display:swap; }
@font-face { font-family:'ATC Arquette'; src:url('fonts/ATCArquette-Regular.otf') format('opentype'); font-weight:400; font-style:normal; font-display:swap; }
@font-face { font-family:'ATC Arquette'; src:url('fonts/ATCArquette-Medium.otf') format('opentype'); font-weight:500; font-style:normal; font-display:swap; }
@font-face { font-family:'ATC Arquette'; src:url('fonts/ATCArquette-Semibold.otf') format('opentype'); font-weight:600; font-style:normal; font-display:swap; }
@font-face { font-family:'ATC Arquette'; src:url('fonts/ATCArquette-Bold.otf') format('opentype'); font-weight:700; font-style:normal; font-display:swap; }
@font-face { font-family:'ATC Arquette'; src:url('fonts/ATCArquette-Black.otf') format('opentype'); font-weight:900; font-style:normal; font-display:swap; }

:root {
  --black: #070708;
  --black-2: #0c0c0f;
  --panel: #121217;
  --paper: #f4f1ea;
  --dim: rgba(244, 241, 234, 0.62);
  --faint: rgba(244, 241, 234, 0.38);
  --line: rgba(244, 241, 234, 0.16);
  --line-soft: rgba(244, 241, 234, 0.09);
  --coral: #ff5a49;
  --coral-deep: #e64536;
  --cream: #f1ebe4;
  --sky: #d1deff;
  --glass: rgba(12, 12, 16, 0.55);
  --glass-border: rgba(244, 241, 234, 0.14);
  --r-l: 22px;
  --r-m: 14px;
  --ease: cubic-bezier(0.22, 1, 0.36, 1);
  --font: "ATC Arquette", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
  --serif: "ATC Arquette", Georgia, serif;
}

* { margin: 0; padding: 0; box-sizing: border-box; }

html { scroll-behavior: smooth; }

body {
  font-family: var(--font);
  background: var(--black);
  color: var(--paper);
  line-height: 1.6;
  -webkit-font-smoothing: antialiased;
  overflow-x: hidden;
}

/* Feines Filmkorn über allem */
body::after {
  content: "";
  position: fixed;
  inset: 0;
  z-index: 2000;
  pointer-events: none;
  opacity: 0.05;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='160'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='2'/%3E%3C/filter%3E%3Crect width='160' height='160' filter='url(%23n)'/%3E%3C/svg%3E");
}

img { display: block; max-width: 100%; }
a { color: inherit; text-decoration: none; }
ul { list-style: none; }
button { font-family: inherit; cursor: pointer; }

::selection { background: var(--coral); color: var(--black); }

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

.display {
  font-size: clamp(3rem, 9.5vw, 8rem);
  font-weight: 700;
  line-height: 0.98;
  letter-spacing: -0.04em;
}

.display .accent,
.title .accent {
  font-family: var(--serif);
  font-style: italic;
  font-weight: 200;
  letter-spacing: -0.015em;
}

.display .outline {
  color: transparent;
  -webkit-text-stroke: 2px var(--paper);
}

h2.title {
  font-size: clamp(2rem, 5.4vw, 4.2rem);
  font-weight: 700;
  line-height: 1.02;
  letter-spacing: -0.035em;
}

.eyebrow {
  display: inline-flex;
  align-items: center;
  gap: 0.7em;
  font-size: 0.74rem;
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: 0.28em;
  color: var(--coral);
  margin-bottom: 1.4rem;
}

.eyebrow::before { content: ""; width: 2.4em; height: 1px; background: currentColor; }

.lead {
  font-size: clamp(1.02rem, 1.5vw, 1.22rem);
  color: var(--dim);
  max-width: 60ch;
  font-weight: 400;
}

/* Riesige Geister-Ziffer je Kapitel */
.num-ghost {
  font-size: clamp(5.5rem, 15vw, 12rem);
  font-weight: 900;
  line-height: 0.78;
  letter-spacing: -0.04em;
  color: transparent;
  -webkit-text-stroke: 1.5px rgba(244, 241, 234, 0.22);
  user-select: none;
}

.sec-head {
  display: grid;
  grid-template-columns: auto 1fr;
  gap: clamp(1.2rem, 4vw, 3.5rem);
  align-items: end;
  margin-bottom: clamp(2rem, 5vw, 3.6rem);
}

@media (max-width: 720px) {
  .sec-head { grid-template-columns: 1fr; align-items: start; }
}

/* ---------- Layout ---------- */

.wrap { width: min(1240px, 92vw); margin: 0 auto; }

section { padding: clamp(4.5rem, 9vw, 8.5rem) 0; position: relative; }

.hairline-top { border-top: 1px solid var(--line-soft); }

/* ---------- Header ---------- */

.nav {
  position: fixed;
  inset: 0 0 auto 0;
  z-index: 100;
  border-bottom: 1px solid var(--line-soft);
  background: linear-gradient(180deg, rgba(7, 7, 8, 0.82), rgba(7, 7, 8, 0.35));
  backdrop-filter: blur(18px) saturate(1.4);
  -webkit-backdrop-filter: blur(18px) saturate(1.4);
}

.nav-inner {
  width: min(1400px, 94vw);
  margin: 0 auto;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 1.2rem;
  padding: 16px 0;
}

.brand { display: inline-flex; flex-direction: column; gap: 5px; }
.brand .brand-logo { height: 22px; width: auto; display: block; }
.brand small {
  display: block;
  font-size: 0.6rem;
  font-weight: 500;
  letter-spacing: 0.34em;
  text-transform: uppercase;
  color: var(--faint);
}

.nav-links { display: flex; align-items: center; gap: 1.6rem; font-size: 0.85rem; font-weight: 500; }
.nav-links a { color: var(--dim); transition: color 0.25s; letter-spacing: 0.02em; }
.nav-links a:hover { color: var(--paper); }

.btn {
  display: inline-flex;
  align-items: center;
  gap: 0.55em;
  padding: 12px 26px;
  border-radius: 100px;
  border: 0;
  background: var(--coral);
  color: #0a0a0a;
  font-size: 0.92rem;
  font-weight: 600;
  letter-spacing: 0.01em;
  transition: transform 0.3s var(--ease), background 0.3s;
}

.btn:hover { background: var(--cream); transform: translateY(-2px); }

.btn-sm { padding: 9px 18px; font-size: 0.85rem; }

.btn-ghost {
  background: transparent;
  border: 1px solid var(--line);
  color: var(--paper);
}

.btn-ghost:hover { background: rgba(244, 241, 234, 0.1); }

.btn-dark { background: #0a0a0a; color: var(--paper); }
.btn-dark:hover { background: #202024; transform: translateY(-2px); }

@media (max-width: 720px) {
  .nav-links { display: none; }
}

/* ---------- Portal (Cover + Index) ---------- */

.cover {
  min-height: 92svh;
  display: flex;
  flex-direction: column;
  justify-content: flex-end;
  padding: 140px 0 0;
  position: relative;
  overflow: hidden;
}

.cover .kicker {
  font-size: 0.78rem;
  font-weight: 600;
  letter-spacing: 0.3em;
  text-transform: uppercase;
  color: var(--dim);
  margin-bottom: 1.6rem;
  display: flex;
  align-items: center;
  gap: 0.9em;
}

.cover .kicker .dot {
  width: 8px; height: 8px; border-radius: 50%;
  background: var(--coral);
  box-shadow: 0 0 14px var(--coral);
}

.cover h1 {
  font-size: clamp(4rem, 14.5vw, 12.5rem);
  font-weight: 900;
  line-height: 0.92;
  letter-spacing: -0.045em;
}

.cover h1 .accent {
  font-family: var(--serif);
  font-style: italic;
  font-weight: 200;
}

.cover h1 .outline {
  color: transparent;
  -webkit-text-stroke: 2.5px var(--paper);
}

.cover .lead { margin-top: 1.8rem; }

.cover-foot {
  display: flex;
  justify-content: space-between;
  align-items: flex-end;
  gap: 1.4rem;
  margin-top: clamp(2.4rem, 6vh, 4.5rem);
  padding-bottom: 2.2rem;
}

.cover-foot .hint {
  font-size: 0.78rem;
  letter-spacing: 0.22em;
  text-transform: uppercase;
  color: var(--faint);
}

/* Index-Liste */

.index-list { border-top: 1px solid var(--line); }

.index-row {
  display: grid;
  grid-template-columns: 90px 1fr auto auto;
  align-items: baseline;
  gap: clamp(1rem, 3vw, 2.6rem);
  padding: clamp(1.5rem, 3.4vw, 2.4rem) 0;
  border-bottom: 1px solid var(--line);
  position: relative;
  transition: padding-left 0.45s var(--ease);
}

.index-row .no {
  font-size: 0.95rem;
  font-weight: 600;
  color: var(--faint);
  letter-spacing: 0.1em;
}

.index-row .name {
  font-size: clamp(1.9rem, 5.4vw, 4rem);
  font-weight: 600;
  letter-spacing: -0.035em;
  line-height: 1;
  transition: color 0.35s var(--ease);
}

.index-row .name em {
  font-family: var(--serif);
  font-style: italic;
  font-weight: 200;
}

.index-row .where {
  font-size: 0.82rem;
  font-weight: 500;
  text-transform: uppercase;
  letter-spacing: 0.2em;
  color: var(--dim);
  text-align: right;
}

.index-row .state {
  font-size: 0.72rem;
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: 0.14em;
  padding: 7px 14px;
  border-radius: 100px;
  border: 1px solid var(--line);
  color: var(--dim);
  white-space: nowrap;
}

.index-row .state.live {
  background: var(--coral);
  border-color: var(--coral);
  color: #0a0a0a;
}

a.index-row:hover { padding-left: 1.2rem; }
a.index-row:hover .name { color: var(--coral); }

.index-row.soon { opacity: 0.45; }

@media (max-width: 820px) {
  .index-row { grid-template-columns: 48px 1fr auto; }
  .index-row .where { display: none; }
}

/* Schwebende Bildvorschau (folgt dem Cursor) */
.float-preview {
  position: fixed;
  z-index: 60;
  width: min(380px, 34vw);
  aspect-ratio: 16 / 10.5;
  border-radius: var(--r-m);
  overflow: hidden;
  pointer-events: none;
  opacity: 0;
  transform: scale(0.92) rotate(-2deg);
  transition: opacity 0.35s var(--ease), transform 0.35s var(--ease);
  box-shadow: 0 30px 80px rgba(0, 0, 0, 0.6);
  border: 1px solid var(--line);
}

.float-preview img {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
  opacity: 0;
  transition: opacity 0.3s;
}

.float-preview img.on { opacity: 1; }
.float-preview.on { opacity: 1; transform: scale(1) rotate(0deg); }

@media (hover: none), (max-width: 820px) {
  .float-preview { display: none; }
}

/* ---------- Marquee ---------- */

.marquee {
  overflow: hidden;
  padding: 1.3rem 0;
  border-top: 1px solid var(--line-soft);
  border-bottom: 1px solid var(--line-soft);
  white-space: nowrap;
}

.marquee-track {
  display: inline-flex;
  gap: 3.2rem;
  animation: marquee 36s linear infinite;
  font-size: 0.92rem;
  font-weight: 500;
  letter-spacing: 0.16em;
  text-transform: uppercase;
  color: var(--faint);
}

.marquee-track .sep { color: var(--coral); }

@keyframes marquee { to { transform: translateX(-50%); } }

/* ---------- Hero (Exposé-Seiten) ---------- */

.hero {
  position: relative;
  min-height: 100svh;
  display: flex;
  align-items: flex-end;
  padding: 110px 0 78px; /* Platz für das schwebende Kapitel-Dock */
  overflow: hidden;
}

.hero-media { position: absolute; inset: -10% 0; z-index: 0; }

.hero-media img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  animation: heroZoom 16s var(--ease) both;
}

@keyframes heroZoom {
  from { transform: scale(1.12); }
  to { transform: scale(1); }
}

.hero::after {
  content: "";
  position: absolute;
  inset: 0;
  z-index: 1;
  background: linear-gradient(180deg, rgba(7, 7, 8, 0.62) 0%, rgba(7, 7, 8, 0.08) 34%, rgba(7, 7, 8, 0.42) 66%, rgba(7, 7, 8, 0.97) 100%);
}

.hero .wrap { position: relative; z-index: 2; }

.hero-kicker {
  display: inline-flex;
  align-items: center;
  gap: 0.8em;
  font-size: 0.76rem;
  font-weight: 600;
  letter-spacing: 0.3em;
  text-transform: uppercase;
  color: var(--paper);
  margin-bottom: 1.6rem;
  padding: 9px 18px;
  border-radius: 100px;
  background: rgba(7, 7, 8, 0.5);
  border: 1px solid var(--glass-border);
  backdrop-filter: blur(16px) saturate(1.4);
  -webkit-backdrop-filter: blur(16px) saturate(1.4);
}

.hero-kicker .dot {
  width: 8px; height: 8px; border-radius: 50%;
  background: var(--coral);
  box-shadow: 0 0 14px var(--coral);
}

.hero .lead { margin-top: 1.5rem; color: rgba(244, 241, 234, 0.78); }

.hero-actions { display: flex; flex-wrap: wrap; gap: 0.9rem; margin-top: 2.2rem; }

/* Hairline-Faktenzeile am Hero-Fuß */
.hero-facts {
  position: relative;
  z-index: 2;
  margin-top: clamp(2.2rem, 5vh, 3.6rem);
  border-top: 1px solid var(--glass-border);
  background: linear-gradient(180deg, rgba(7, 7, 8, 0.25), rgba(7, 7, 8, 0.66));
  backdrop-filter: blur(14px) saturate(1.4);
  -webkit-backdrop-filter: blur(14px) saturate(1.4);
}

.hero-facts .wrap {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(160px, 1fr));
}

.hero-facts .fact {
  padding: 1.4rem 1.6rem 1.5rem 0;
  border-right: 1px solid var(--glass-border);
  margin-right: 1.6rem;
}

.hero-facts .fact:last-child { border-right: 0; margin-right: 0; }

.hero-facts b {
  display: block;
  font-size: clamp(1.5rem, 2.6vw, 2.2rem);
  font-weight: 700;
  letter-spacing: -0.03em;
  line-height: 1.05;
}

.hero-facts b .unit { font-size: 0.55em; font-weight: 600; color: var(--coral); margin-left: 0.15em; }

.hero-facts .fact > span {
  font-size: 0.72rem;
  color: var(--dim);
  text-transform: uppercase;
  letter-spacing: 0.2em;
  font-weight: 500;
}

@media (max-width: 720px) {
  .hero-facts .fact { border-right: 0; padding: 0.9rem 0; }
}

/* ---------- Kapitel-Dock (unten schwebend) ---------- */

.dock {
  position: fixed;
  bottom: 18px;
  left: 50%;
  transform: translateX(-50%);
  z-index: 90;
  max-width: 94vw;
}

.dock-inner {
  display: flex;
  gap: 2px;
  padding: 6px;
  border-radius: 100px;
  background: var(--glass);
  border: 1px solid var(--glass-border);
  backdrop-filter: blur(22px) saturate(1.5);
  -webkit-backdrop-filter: blur(22px) saturate(1.5);
  box-shadow: 0 18px 60px rgba(0, 0, 0, 0.55);
  overflow-x: auto;
  scrollbar-width: none;
}

.dock-inner::-webkit-scrollbar { display: none; }

.dock a {
  padding: 9px 16px;
  border-radius: 100px;
  font-size: 0.82rem;
  font-weight: 500;
  color: var(--dim);
  white-space: nowrap;
  transition: 0.25s;
}

.dock a:hover { color: var(--paper); }
.dock a.active { background: var(--coral); color: #0a0a0a; }

/* ---------- Reveal ---------- */

.reveal.prep {
  opacity: 0;
  transform: translateY(34px);
  transition: opacity 0.9s var(--ease), transform 0.9s var(--ease);
}

.reveal.prep.in { opacity: 1; transform: none; }

.prep.reveal-d1 { transition-delay: 0.08s; }
.prep.reveal-d2 { transition-delay: 0.16s; }
.prep.reveal-d3 { transition-delay: 0.24s; }

@media (prefers-reduced-motion: reduce) {
  .reveal.prep { opacity: 1; transform: none; transition: none; }
  .hero-media img { animation: none; }
  html { scroll-behavior: auto; }
  .marquee-track { animation: none; }
}

/* ---------- Zweispalter ---------- */

.cols-2 {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
  gap: clamp(1.8rem, 4vw, 4rem);
}

/* ---------- Galerie-Slider ---------- */

.slider {
  display: flex;
  gap: clamp(0.9rem, 1.6vw, 1.3rem);
  overflow-x: auto;
  scroll-snap-type: x mandatory;
  padding: 0.3rem clamp(4vw, calc((100vw - 1240px) / 2), 20vw) 1.4rem;
  scrollbar-width: none;
  cursor: grab;
}

.slider::-webkit-scrollbar { display: none; }
.slider.dragging { cursor: grabbing; scroll-snap-type: none; }

.slide {
  flex: 0 0 min(920px, 80vw);
  scroll-snap-align: center;
  border-radius: var(--r-l);
  overflow: hidden;
  position: relative;
  aspect-ratio: 16 / 9.4;
  border: 1px solid var(--line-soft);
}

.slide img { width: 100%; height: 100%; object-fit: cover; pointer-events: none; }

.slide figcaption {
  position: absolute;
  left: 0;
  right: 0;
  bottom: 0;
  padding: 2.4rem 1.4rem 1.1rem;
  background: linear-gradient(180deg, transparent, rgba(7, 7, 8, 0.85));
  font-size: 0.86rem;
  font-weight: 500;
  color: var(--paper);
}

.slide figcaption::before {
  content: "";
  display: inline-block;
  width: 1.6em;
  height: 1px;
  background: var(--coral);
  vertical-align: middle;
  margin-right: 0.7em;
}

.slider-nav {
  display: flex;
  gap: 0.5rem;
  justify-content: flex-end;
  width: min(1240px, 92vw);
  margin: 0.3rem auto 0;
}

.slider-nav button {
  width: 46px; height: 46px;
  border-radius: 50%;
  border: 1px solid var(--line);
  background: transparent;
  color: var(--paper);
  font-size: 1.1rem;
  transition: 0.25s;
}

.slider-nav button:hover { background: var(--coral); border-color: var(--coral); color: #0a0a0a; }

/* ---------- Vergleichs-Slider ---------- */

.compare {
  position: relative;
  border-radius: var(--r-l);
  overflow: hidden;
  aspect-ratio: 16 / 9;
  user-select: none;
  touch-action: pan-y;
  border: 1px solid var(--line-soft);
}

.compare img {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
  pointer-events: none;
}

.compare .after-wrap {
  position: absolute;
  inset: 0;
  overflow: hidden;
  clip-path: inset(0 0 0 50%);
  will-change: clip-path;
}

.compare .handle {
  position: absolute;
  top: 0; bottom: 0; left: 50%;
  width: 1.5px;
  background: var(--paper);
  transform: translateX(-1px);
  will-change: left;
}

.compare .handle::after {
  content: "⟨ ⟩";
  position: absolute;
  top: 50%; left: 50%;
  transform: translate(-50%, -50%);
  width: 54px; height: 54px;
  border-radius: 50%;
  background: rgba(7, 7, 8, 0.6);
  border: 1px solid var(--paper);
  backdrop-filter: blur(14px);
  -webkit-backdrop-filter: blur(14px);
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 0.85rem;
  font-weight: 600;
  color: var(--paper);
}

.compare .lbl {
  position: absolute;
  bottom: 14px;
  padding: 7px 15px;
  border-radius: 100px;
  background: rgba(7, 7, 8, 0.6);
  border: 1px solid var(--glass-border);
  backdrop-filter: blur(14px);
  -webkit-backdrop-filter: blur(14px);
  font-size: 0.78rem;
  font-weight: 600;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  pointer-events: none;
}

.compare .lbl.a { left: 14px; }
.compare .lbl.b { right: 14px; }

/* ---------- Bestuhlung / Formate ---------- */

.setups {
  display: grid;
  grid-template-columns: 360px 1fr;
  gap: clamp(1.8rem, 4.5vw, 5rem);
  align-items: start;
}

@media (max-width: 880px) { .setups { grid-template-columns: 1fr; } }

.setup-tabs { display: flex; flex-direction: column; }

.setup-tab {
  text-align: left;
  padding: 18px 4px;
  background: transparent;
  border: 0;
  border-bottom: 1px solid var(--line);
  color: var(--dim);
  font-size: 1.05rem;
  font-weight: 600;
  letter-spacing: -0.01em;
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 1rem;
  transition: 0.3s var(--ease);
}

.setup-tab small {
  font-weight: 500;
  font-size: 0.76rem;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  opacity: 0.6;
}

.setup-tab:hover { color: var(--paper); padding-left: 10px; }

.setup-tab.active { color: var(--coral); border-bottom-color: var(--coral); }

.setup-stage { min-height: 280px; }

.setup-num {
  font-size: clamp(5rem, 13vw, 10.5rem);
  font-weight: 900;
  letter-spacing: -0.05em;
  line-height: 0.9;
  color: var(--coral);
}

.setup-num .unit {
  font-size: 0.16em;
  font-weight: 600;
  letter-spacing: 0.22em;
  text-transform: uppercase;
  color: var(--dim);
  margin-left: 0.6em;
}

.setup-desc {
  margin-top: 1.4rem;
  font-size: 1.06rem;
  color: var(--dim);
  max-width: 54ch;
  min-height: 4.2em;
}

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

.usages {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(270px, 1fr));
  gap: clamp(1rem, 2vw, 1.5rem);
}

.usage {
  border-radius: var(--r-m);
  overflow: hidden;
  background: var(--panel);
  border: 1px solid var(--line-soft);
  transition: 0.35s var(--ease);
}

.usage:hover { transform: translateY(-6px); border-color: var(--line); }

.usage .thumb { aspect-ratio: 16 / 10; overflow: hidden; }
.usage .thumb img { width: 100%; height: 100%; object-fit: cover; transition: transform 0.8s var(--ease); }
.usage:hover .thumb img { transform: scale(1.05); }

.usage .body { padding: 1.4rem 1.5rem 1.7rem; }
.usage h4 { font-size: 1.15rem; font-weight: 700; letter-spacing: -0.01em; margin-bottom: 0.4rem; }
.usage p { font-size: 0.92rem; color: var(--dim); }

/* ---------- Fakten / Grundriss ---------- */

.plan-split {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: clamp(2rem, 5vw, 4.5rem);
  align-items: center;
}

@media (max-width: 880px) { .plan-split { grid-template-columns: 1fr; } }

.plan-frame {
  border-radius: var(--r-l);
  background: var(--cream);
  padding: clamp(1.2rem, 3vw, 2.2rem);
  border: 1px solid var(--line-soft);
}

.plan-frame.photo { padding: 0; overflow: hidden; background: var(--panel); }
.plan-frame.photo img { width: 100%; height: 100%; object-fit: cover; }

.fact-list li {
  display: flex;
  justify-content: space-between;
  gap: 1.4rem;
  padding: 1rem 0;
  border-bottom: 1px solid var(--line);
  font-size: 0.96rem;
}

.fact-list li span:first-child {
  color: var(--faint);
  text-transform: uppercase;
  font-size: 0.76rem;
  letter-spacing: 0.18em;
  font-weight: 500;
  padding-top: 0.25em;
}

.fact-list li span:last-child { font-weight: 600; text-align: right; }

/* ---------- Ausstattung (Hairline-Grid) ---------- */

.features {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(250px, 1fr));
  border-top: 1px solid var(--line);
  border-left: 1px solid var(--line);
}

.feature {
  padding: 1.8rem 1.6rem 2rem;
  border-right: 1px solid var(--line);
  border-bottom: 1px solid var(--line);
  transition: background 0.3s;
}

.feature:hover { background: rgba(244, 241, 234, 0.04); }

.feature .ico { font-size: 1.3rem; color: var(--coral); margin-bottom: 0.9rem; font-variant-emoji: text; }
.feature h4 { font-size: 1rem; font-weight: 600; margin-bottom: 0.25rem; letter-spacing: -0.01em; }
.feature p { font-size: 0.88rem; color: var(--dim); }

/* ---------- Zitat ---------- */

.quote { max-width: 920px; margin: 0 auto; text-align: center; }

.quote blockquote {
  font-family: var(--serif);
  font-style: italic;
  font-size: clamp(1.6rem, 3.6vw, 2.7rem);
  font-weight: 200;
  line-height: 1.3;
  letter-spacing: -0.01em;
}

.quote blockquote::before { content: "„"; color: var(--coral); }
.quote blockquote::after { content: "“"; color: var(--coral); }

.quote cite {
  display: block;
  margin-top: 1.8rem;
  font-style: normal;
  font-size: 0.78rem;
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: 0.24em;
  color: var(--dim);
}

.stars { color: var(--coral); letter-spacing: 0.24em; margin-bottom: 1.4rem; font-size: 1rem; }

/* ---------- CTA (Coral-Block) ---------- */

.cta-coral {
  background: var(--coral);
  color: #0a0a0a;
  padding: clamp(4.5rem, 9vw, 8rem) 0;
}

.cta-coral h2 {
  font-size: clamp(2.4rem, 6.5vw, 5.2rem);
  font-weight: 700;
  line-height: 0.98;
  letter-spacing: -0.04em;
}

.cta-coral h2 .accent { font-family: var(--serif); font-style: italic; font-weight: 200; }

.cta-coral .lead { color: rgba(10, 10, 10, 0.72); margin-top: 1.4rem; }

.cta-coral ::selection { background: #0a0a0a; color: var(--coral); }

/* ---------- Weitere Exposés ---------- */

.more-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
  gap: clamp(1rem, 2vw, 1.5rem);
}

.more-card {
  position: relative;
  border-radius: var(--r-m);
  overflow: hidden;
  aspect-ratio: 4 / 4.4;
  isolation: isolate;
  display: flex;
  align-items: flex-end;
  border: 1px solid var(--line-soft);
}

.more-card img {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
  z-index: -2;
  transition: transform 1s var(--ease), opacity 0.4s;
  opacity: 0.85;
}

.more-card:hover img { transform: scale(1.06); opacity: 1; }

.more-card::after {
  content: "";
  position: absolute;
  inset: 0;
  z-index: -1;
  background: linear-gradient(180deg, rgba(7, 7, 8, 0.05) 40%, rgba(7, 7, 8, 0.92) 100%);
}

.more-card .info { padding: 1.4rem 1.5rem; width: 100%; }

.more-card h4 { font-size: 1.5rem; font-weight: 600; letter-spacing: -0.02em; }
.more-card h4 em { font-family: var(--serif); font-style: italic; font-weight: 200; }

.more-card .sub {
  font-size: 0.72rem;
  color: var(--dim);
  text-transform: uppercase;
  letter-spacing: 0.2em;
  font-weight: 500;
}

.more-card .tag {
  position: absolute;
  top: 14px;
  right: 14px;
  padding: 6px 13px;
  border-radius: 100px;
  font-size: 0.68rem;
  font-weight: 600;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  background: rgba(7, 7, 8, 0.55);
  border: 1px solid var(--glass-border);
  backdrop-filter: blur(12px);
  -webkit-backdrop-filter: blur(12px);
}

.more-card .tag.live { background: var(--coral); border-color: var(--coral); color: #0a0a0a; }

/* ---------- Footer ---------- */

footer {
  padding: 3.6rem 0 6.5rem;
  border-top: 1px solid var(--line-soft);
  color: var(--dim);
  font-size: 0.88rem;
}

.foot-inner {
  display: flex;
  flex-wrap: wrap;
  justify-content: space-between;
  align-items: flex-start;
  gap: 1.6rem;
}

.foot-links { display: flex; flex-wrap: wrap; gap: 1.6rem; font-size: 0.85rem; }
.foot-links a { color: var(--dim); transition: color 0.2s; }
.foot-links a:hover { color: var(--paper); }

.foot-note {
  margin-top: 2.6rem;
  padding-top: 1.6rem;
  border-top: 1px solid var(--line-soft);
  display: flex;
  flex-wrap: wrap;
  justify-content: space-between;
  gap: 1rem;
  font-size: 0.78rem;
  color: var(--faint);
}

.foot-note a { color: var(--dim); transition: color 0.2s; }
.foot-note a:hover { color: var(--paper); }

/* ---------- Footer: Schwestermarke A-Venue ---------- */

.foot-brand2 { display: flex; flex-direction: column; gap: 10px; }

.foot-brand2 span {
  font-size: 0.74rem;
  font-weight: 550;
  letter-spacing: 0.24em;
  text-transform: uppercase;
  color: var(--dim);
}

.foot-brand2 img { height: 48px; width: auto; opacity: 0.92; transition: opacity 0.25s; }
.foot-brand2 img:hover { opacity: 1; }

/* ---------- Mood-Board ---------- */

.mood-filter {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 8px;
  margin-bottom: 1rem;
}

.mood-filter .lbl-group {
  font-size: 0.66rem;
  font-weight: 500;
  letter-spacing: 0.26em;
  text-transform: uppercase;
  color: var(--faint);
  margin-right: 6px;
}

.pill {
  padding: 9px 18px;
  border-radius: 100px;
  border: 1px solid var(--line);
  background: transparent;
  color: var(--dim);
  font-size: 0.84rem;
  font-weight: 500;
  letter-spacing: 0.02em;
  transition: 0.25s var(--ease);
  white-space: nowrap;
}

.pill:hover { color: var(--paper); border-color: var(--paper); }

.pill.active { background: var(--coral); border-color: var(--coral); color: #0a0a0a; }

.mood-count {
  font-size: 0.78rem;
  color: var(--faint);
  letter-spacing: 0.14em;
  text-transform: uppercase;
  margin: 1.2rem 0 1.8rem;
}

/* Masonry über CSS-Columns; Spotlight-Hover dimmt den Rest */
.mood-board {
  columns: 4 260px;
  column-gap: 14px;
}

.mood-item {
  position: relative;
  break-inside: avoid;
  margin: 0 0 14px;
  border-radius: var(--r-m);
  overflow: hidden;
  border: 1px solid var(--line-soft);
  cursor: zoom-in;
  transition: opacity 0.45s var(--ease), filter 0.45s var(--ease), transform 0.45s var(--ease);
}

.mood-item img {
  width: 100%;
  height: auto;
  display: block;
  transform: scale(1.001);
  transition: transform 0.7s var(--ease);
}

.mood-board:hover .mood-item:not(:hover) {
  opacity: 0.32;
  filter: grayscale(0.85);
}

.mood-item:hover { transform: scale(1.02); border-color: var(--line); }
.mood-item:hover img { transform: scale(1.07); }

.mood-item figcaption {
  position: absolute;
  inset: auto 0 0 0;
  padding: 2rem 0.95rem 0.85rem;
  background: linear-gradient(180deg, transparent, rgba(7, 7, 8, 0.88));
  opacity: 0;
  transform: translateY(8px);
  transition: 0.35s var(--ease);
  pointer-events: none;
}

.mood-item:hover figcaption { opacity: 1; transform: none; }

.mood-item figcaption b { display: block; font-size: 0.9rem; font-weight: 600; }
.mood-item figcaption span {
  font-size: 0.68rem;
  font-weight: 500;
  letter-spacing: 0.18em;
  text-transform: uppercase;
  color: var(--dim);
}

.mood-item.hide { display: none; }

@media (max-width: 720px) {
  .mood-board { columns: 2 150px; column-gap: 10px; }
  .mood-item { margin-bottom: 10px; }
}

/* ---------- Lightbox ---------- */

.lightbox {
  position: fixed;
  inset: 0;
  z-index: 300;
  background: rgba(4, 4, 5, 0.94);
  backdrop-filter: blur(20px);
  -webkit-backdrop-filter: blur(20px);
  display: flex;
  align-items: center;
  justify-content: center;
  flex-direction: column;
  gap: 1.1rem;
  padding: 4vh 4vw;
  opacity: 0;
  pointer-events: none;
  transition: opacity 0.35s var(--ease);
}

.lightbox.open { opacity: 1; pointer-events: auto; }

.lightbox img {
  max-width: 92vw;
  max-height: 78vh;
  border-radius: var(--r-m);
  border: 1px solid var(--line);
  box-shadow: 0 40px 120px rgba(0, 0, 0, 0.7);
}

.lightbox .lb-cap { text-align: center; }
.lightbox .lb-cap b { display: block; font-size: 1.05rem; font-weight: 600; }
.lightbox .lb-cap span {
  font-size: 0.7rem;
  font-weight: 500;
  letter-spacing: 0.2em;
  text-transform: uppercase;
  color: var(--dim);
}

.lightbox .lb-nav {
  position: absolute;
  top: 50%;
  transform: translateY(-50%);
  width: 52px; height: 52px;
  border-radius: 50%;
  border: 1px solid var(--line);
  background: rgba(7, 7, 8, 0.6);
  color: var(--paper);
  font-size: 1.15rem;
  transition: 0.25s;
}

.lightbox .lb-nav:hover { background: var(--coral); border-color: var(--coral); color: #0a0a0a; }
.lightbox .lb-prev { left: max(2vw, 14px); }
.lightbox .lb-next { right: max(2vw, 14px); }

.lightbox .lb-close {
  position: absolute;
  top: 18px;
  right: max(2vw, 14px);
  width: 46px; height: 46px;
  border-radius: 50%;
  border: 1px solid var(--line);
  background: rgba(7, 7, 8, 0.6);
  color: var(--paper);
  font-size: 1rem;
  transition: 0.25s;
}

.lightbox .lb-close:hover { background: var(--coral); border-color: var(--coral); color: #0a0a0a; }

/* ---------- Raumliste (Exklusiv-Exposés) ---------- */

.room-list { border-top: 1px solid var(--line); }

.room-list li {
  display: grid;
  grid-template-columns: 1fr auto auto auto;
  align-items: center;
  gap: clamp(0.8rem, 2.5vw, 2rem);
  padding: 1.05rem 0;
  border-bottom: 1px solid var(--line);
}

.room-list .r-name { font-size: 1.12rem; font-weight: 600; letter-spacing: -0.01em; }
.room-list .r-name em { font-family: var(--serif); font-style: italic; font-weight: 200; }

.room-list .r-val {
  font-size: 0.88rem;
  color: var(--dim);
  white-space: nowrap;
  font-variant-numeric: tabular-nums;
}

.room-list .room-link {
  font-size: 0.68rem;
  font-weight: 650;
  text-transform: uppercase;
  letter-spacing: 0.12em;
  padding: 6px 13px;
  border-radius: 100px;
  background: var(--coral);
  color: #0a0a0a;
  white-space: nowrap;
  transition: 0.25s;
}

.room-list .room-link:hover { background: var(--cream); }

.room-list .r-spacer { width: 74px; }

@media (max-width: 640px) {
  .room-list li { grid-template-columns: 1fr auto; }
  .room-list .r-val:nth-child(3), .room-list .r-spacer { display: none; }
}

/* ---------- Video (Click-to-play-Fassade) ---------- */

.video-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(min(560px, 100%), 1fr));
  gap: clamp(1rem, 2vw, 1.5rem);
  margin-top: 2.6rem;
}

.video-facade {
  position: relative;
  aspect-ratio: 16 / 9;
  border-radius: var(--r-l);
  overflow: hidden;
  border: 1px solid var(--line-soft);
  cursor: pointer;
  isolation: isolate;
}

.video-facade img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  transition: transform 0.8s var(--ease), opacity 0.4s;
  opacity: 0.85;
}

.video-facade:hover img { transform: scale(1.04); opacity: 1; }

.video-facade .vf-play {
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  width: 76px;
  height: 76px;
  border-radius: 50%;
  border: 0;
  background: var(--coral);
  color: #0a0a0a;
  font-size: 1.5rem;
  display: flex;
  align-items: center;
  justify-content: center;
  padding-left: 6px;
  box-shadow: 0 20px 60px rgba(0, 0, 0, 0.55);
  transition: 0.3s var(--ease);
}

.video-facade:hover .vf-play { transform: translate(-50%, -50%) scale(1.12); background: var(--cream); }

.video-facade figcaption {
  position: absolute;
  left: 0; right: 0; bottom: 0;
  padding: 2.4rem 1.3rem 1rem;
  background: linear-gradient(180deg, transparent, rgba(7, 7, 8, 0.85));
  font-size: 0.86rem;
  font-weight: 500;
  pointer-events: none;
}

.video-facade iframe {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  border: 0;
}

.video-note {
  margin-top: 1rem;
  font-size: 0.76rem;
  color: var(--faint);
  letter-spacing: 0.06em;
}

/* ---------- Prismm-Streifen (360° & 3D) ---------- */

.prismm-strip {
  background:
    radial-gradient(120% 180% at 100% 0%, rgba(255, 90, 73, 0.12), transparent 55%),
    var(--black-2);
}

.prismm-strip .wrap {
  display: grid;
  grid-template-columns: 1fr auto;
  gap: clamp(1.6rem, 4vw, 4rem);
  align-items: center;
}

@media (max-width: 820px) {
  .prismm-strip .wrap { grid-template-columns: 1fr; }
}

.prismm-strip h2 {
  font-size: clamp(1.8rem, 4vw, 3rem);
  font-weight: 700;
  letter-spacing: -0.03em;
  line-height: 1.05;
}

.prismm-strip h2 .accent { font-family: var(--serif); font-style: italic; font-weight: 200; }

.prismm-strip .lead { margin-top: 0.9rem; }

/* ---------- Galerie-Übersicht (Grid unter dem Slider) ---------- */

.gal-grid { margin-top: clamp(2.5rem, 5vw, 4rem); }

.gal-sub {
  display: flex;
  align-items: baseline;
  gap: 1rem;
  font-size: clamp(1.3rem, 2.6vw, 1.9rem);
  font-weight: 700;
  letter-spacing: -0.02em;
  margin: 2.6rem 0 1.2rem;
  padding-top: 1.6rem;
  border-top: 1px solid var(--line);
}

.gal-sub small {
  font-size: 0.72rem;
  font-weight: 550;
  letter-spacing: 0.2em;
  text-transform: uppercase;
  color: var(--faint);
}

/* ---------- Prismm-Embed (Click-to-load) ---------- */

.prismm-facade {
  position: relative;
  margin-top: 2.4rem;
  aspect-ratio: 16 / 9;
  border-radius: var(--r-l);
  border: 1px solid var(--line);
  background:
    radial-gradient(80% 120% at 50% 0%, rgba(255, 90, 73, 0.08), transparent 60%),
    var(--panel);
  display: flex;
  align-items: center;
  justify-content: center;
  flex-direction: column;
  gap: 1rem;
  cursor: pointer;
  transition: border-color 0.3s;
  overflow: hidden;
}

.prismm-facade:hover { border-color: var(--coral); }

.prismm-facade .pf-preview {
  position: absolute; inset: 0; width: 100%; height: 100%;
  object-fit: cover; opacity: 0.5; z-index: 0;
}
.prismm-facade::before {
  content: ""; position: absolute; inset: 0; z-index: 1;
  background: linear-gradient(180deg, rgba(7,7,8,0.3), rgba(7,7,8,0.72));
}
.prismm-facade .btn, .prismm-facade .pf-hint { position: relative; z-index: 2; }
.prismm-facade iframe { z-index: 3; }

.prismm-facade .pf-hint {
  font-size: 0.78rem;
  letter-spacing: 0.18em;
  text-transform: uppercase;
  color: var(--faint);
}

.prismm-facade iframe {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  border: 0;
}

/* ---------- Download-Zeile ---------- */

.dl-row { display: flex; flex-wrap: wrap; gap: 0.8rem; margin-top: 1.6rem; }

/* ---------- Bildertrommel (scroll-getriebene Galerie) ---------- */

.drum-track { position: relative; }

.drum-stage {
  position: sticky;
  top: 0;
  height: 100svh;
  perspective: 1300px;
  perspective-origin: 50% 50%;
  display: flex;
  align-items: center;
  justify-content: center;
  overflow: hidden;
}

.drum-item {
  position: absolute;
  width: min(1080px, 88vw);
  aspect-ratio: 16 / 9.2;
  border-radius: var(--r-l);
  overflow: hidden;
  border: 1px solid var(--line-soft);
  transform-style: preserve-3d;
  backface-visibility: hidden;
  will-change: transform, opacity;
  box-shadow: 0 40px 120px rgba(0, 0, 0, 0.55);
}

.drum-item img { width: 100%; height: 100%; object-fit: cover; }

.drum-item figcaption {
  position: absolute;
  left: 0; right: 0; bottom: 0;
  padding: 2.6rem 1.4rem 1.1rem;
  background: linear-gradient(180deg, transparent, rgba(7, 7, 8, 0.85));
  font-size: 0.88rem;
  font-weight: 500;
}

.drum-item figcaption::before {
  content: "";
  display: inline-block;
  width: 1.6em; height: 1px;
  background: var(--coral);
  vertical-align: middle;
  margin-right: 0.7em;
}

.drum-ui {
  position: absolute;
  right: max(3vw, 18px);
  top: 50%;
  transform: translateY(-50%);
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 0.9rem;
  z-index: 50;
}

.drum-counter {
  font-size: 0.82rem;
  font-weight: 600;
  letter-spacing: 0.14em;
  color: var(--dim);
  writing-mode: vertical-rl;
  font-variant-numeric: tabular-nums;
}

.drum-counter b { color: var(--coral); }

.drum-bar {
  width: 2px;
  height: clamp(120px, 24vh, 220px);
  background: var(--line);
  border-radius: 2px;
  overflow: hidden;
}

.drum-bar i {
  display: block;
  width: 100%;
  height: 0%;
  background: var(--coral);
  transition: height 0.15s linear;
}

.drum-hint {
  position: absolute;
  left: 50%;
  bottom: 22px;
  transform: translateX(-50%);
  font-size: 0.72rem;
  letter-spacing: 0.24em;
  text-transform: uppercase;
  color: var(--faint);
  z-index: 50;
}

/* Ohne Motion: Trommel als ruhige Bildliste */
@media (prefers-reduced-motion: reduce) {
  .drum-track { height: auto !important; }
  .drum-stage { position: static; height: auto; display: block; overflow: visible; perspective: none; }
  .drum-item { position: static; width: min(1080px, 92vw); margin: 0 auto 1.2rem; opacity: 1 !important; transform: none !important; }
  .drum-ui, .drum-hint { display: none; }
}

/* ---------- Galerie nach Stockwerken (Exklusiv-Seiten) ---------- */

.gal-floor {
  display: flex;
  align-items: baseline;
  gap: 1rem;
  font-size: clamp(2rem, 4.6vw, 3.4rem);
  font-weight: 800;
  letter-spacing: -0.03em;
  margin: 4.2rem 0 1.4rem;
  padding-top: 2.2rem;
  border-top: 1px solid var(--line);
}

.gal-floor:first-child { margin-top: 0; padding-top: 0; border-top: 0; }

.gal-floor small {
  font-size: 0.7rem;
  font-weight: 550;
  letter-spacing: 0.2em;
  text-transform: uppercase;
  color: var(--coral);
}

.gal-room { margin-top: 2rem; }

.gal-room-title {
  font-size: clamp(1.4rem, 2.6vw, 2rem);
  font-weight: 700;
  letter-spacing: -0.02em;
  margin-bottom: 1rem;
}

.gal-room-title small {
  font-size: 0.72rem;
  font-weight: 550;
  letter-spacing: 0.2em;
  text-transform: uppercase;
  color: var(--faint);
  margin-left: 0.7em;
  vertical-align: middle;
}

.gal-row {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 12px;
}

@media (max-width: 820px) { .gal-row { grid-template-columns: repeat(2, 1fr); } }

.gal-row .mood-item { aspect-ratio: 16 / 10; margin: 0; }
.gal-row .mood-item img { width: 100%; height: 100%; object-fit: cover; }

.gal-ph {
  aspect-ratio: 16 / 10;
  border-radius: var(--r-m);
  border: 1px dashed var(--line);
  background: rgba(244, 241, 234, 0.02);
  display: flex;
  align-items: center;
  justify-content: center;
  text-align: center;
  padding: 0.6rem;
  color: var(--faint);
  font-size: 0.7rem;
  letter-spacing: 0.14em;
  text-transform: uppercase;
}

/* ---------- Kontakt-Formular (HubSpot) ---------- */

.contact-grid {
  display: grid;
  grid-template-columns: 1fr 1.05fr;
  gap: clamp(2.4rem, 5vw, 5rem);
  align-items: start;
}

.contact-grid h2 { font-size: clamp(2.2rem, 3.8vw, 3.6rem); }

.contact-trust {
  list-style: none;
  margin-top: 2.4rem;
  max-width: 420px;
}

.contact-trust li {
  display: flex;
  justify-content: space-between;
  gap: 1.4rem;
  padding: 0.9rem 0;
  border-bottom: 1px solid rgba(10, 10, 10, 0.18);
  font-size: 0.96rem;
}

.contact-trust li span {
  font-size: 0.76rem;
  text-transform: uppercase;
  letter-spacing: 0.18em;
  font-weight: 500;
  color: rgba(10, 10, 10, 0.55);
  padding-top: 0.25em;
}

.contact-trust li b { font-weight: 700; }

.contact-card {
  background: #0a0a0a;
  color: var(--paper);
  border-radius: var(--r-l);
  padding: clamp(1.6rem, 3vw, 2.6rem);
  box-shadow: 0 30px 80px rgba(0, 0, 0, 0.3);
}

.contact-card.form-ready .hs-fallback { display: none; }

.privacy-note {
  margin-top: 1.1rem;
  font-size: 0.78rem;
  line-height: 1.5;
  color: var(--faint);
}

.privacy-note a { color: var(--dim); text-decoration: underline; }
.privacy-note a:hover { color: var(--paper); }

/* HubSpot-Markup — css:"" im Embed unterdrückt HubSpots Stylesheet, hier kommt unseres */

.contact-card .hs-form fieldset {
  max-width: none;
  margin: 0;
  border: 0;
  padding: 0;
}

.contact-card fieldset.form-columns-2 { display: flex; gap: 0.9rem; }
.contact-card fieldset.form-columns-2 .hs-form-field { flex: 1; }

.contact-card .hs-form-field { margin-bottom: 1.05rem; }

.contact-card .hs-form-field > label {
  display: block;
  margin-bottom: 0.45rem;
  font-size: 0.76rem;
  text-transform: uppercase;
  letter-spacing: 0.18em;
  font-weight: 500;
  color: var(--faint);
}

.contact-card .hs-form-required { color: var(--coral); }

.contact-card .hs-input {
  width: 100%;
  font: inherit;
  font-size: 0.95rem;
  background: var(--panel);
  border: 1px solid var(--glass-border);
  border-radius: var(--r-m);
  color: var(--paper);
  padding: 0.85rem 1rem;
  appearance: none;
  -webkit-appearance: none;
  transition: border-color 0.3s, box-shadow 0.3s;
}

.contact-card .hs-input:focus {
  outline: none;
  border-color: var(--coral);
  box-shadow: 0 0 0 3px rgba(255, 90, 73, 0.28);
}

.contact-card .hs-input::placeholder { color: var(--faint); }

.contact-card select.hs-input {
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'%3E%3Cpath d='M1 1l5 5 5-5' fill='none' stroke='%23f4f1ea' stroke-width='1.6'/%3E%3C/svg%3E");
  background-repeat: no-repeat;
  background-position: right 1rem center;
  padding-right: 2.6rem;
}

.contact-card select.hs-input option { background: var(--panel); color: var(--paper); }

.contact-card textarea.hs-input { min-height: 120px; resize: vertical; }

.contact-card .hs-form ul.inputs-list {
  list-style: none;
  margin: 0;
  padding: 0;
}

.contact-card .hs-form-booleancheckbox label {
  display: flex;
  align-items: flex-start;
  gap: 0.6rem;
  font-size: 0.9rem;
  text-transform: none;
  letter-spacing: 0;
  font-weight: 400;
  color: var(--dim);
}

.contact-card .hs-form-booleancheckbox input[type="checkbox"] {
  width: auto;
  accent-color: var(--coral);
  margin-top: 0.2em;
}

.contact-card .hs_submit { margin-top: 0.4rem; }

.contact-card .hs-button {
  display: inline-flex;
  justify-content: center;
  width: 100%;
  padding: 14px 26px;
  border-radius: 100px;
  border: 0;
  background: var(--coral);
  color: #0a0a0a;
  font: inherit;
  font-size: 0.95rem;
  font-weight: 600;
  letter-spacing: 0.01em;
  cursor: pointer;
  transition: transform 0.3s var(--ease), background 0.3s;
}

.contact-card .hs-button:hover { background: var(--cream); transform: translateY(-2px); }

.contact-card ul.hs-error-msgs {
  list-style: none;
  margin: 0.45rem 0 0;
  padding: 0;
  font-size: 0.8rem;
  color: #ffb4ab;
}

.contact-card .hs-input.invalid,
.contact-card .hs-input.error { border-color: #ffb4ab; }

.contact-card .hs_error_rollup { margin-bottom: 0.9rem; }

.contact-card .hs-richtext,
.contact-card .legal-consent-container p { font-size: 0.82rem; color: var(--dim); }

.contact-card .submitted-message { font-size: 1.05rem; line-height: 1.5; }
.contact-card .hs-thanks strong { color: var(--coral); }

@media (max-width: 880px) {
  .contact-grid { grid-template-columns: 1fr; }
}

@media (max-width: 640px) {
  .contact-card fieldset.form-columns-2 { display: block; }
}

/* Ausgeblendete Formularfelder: "smartvillage +"-Upsell hat im Exposé keinen Kontext */
.contact-card .hs_academy_request { display: none; }

/* Kontext-Zeile über dem Formular — zeigt die (unsichtbar vorbelegte) Raumwahl */
.hs-context {
  font-size: 0.78rem;
  text-transform: uppercase;
  letter-spacing: 0.18em;
  font-weight: 500;
  color: var(--faint);
  margin-bottom: 1.3rem;
  padding-bottom: 1rem;
  border-bottom: 1px solid var(--line-soft);
}

.hs-context b { color: var(--paper); font-weight: 600; }

/* Feld-Beschreibungen (HubSpot legend.hs-field-desc): klein und dezent,
   nicht in Fließtext-Größe zwischen Label und Input */
.contact-card .hs-field-desc {
  font-size: 0.82rem;
  line-height: 1.45;
  color: var(--dim);
  margin: -0.15rem 0 0.5rem;
}

/* Zweispaltige Reihen: Inputs unten bündig ausrichten — unterschiedlich
   lange Labels/Beschreibungen schieben die Felder sonst aus der Linie */
.contact-card fieldset.form-columns-2 .hs-form-field {
  display: flex;
  flex-direction: column;
}

.contact-card fieldset.form-columns-2 .hs-form-field > .input { margin-top: auto; }

/* HubSpot-Einwilligungstext (DSGVO): bewusst klein und zurückhaltend,
   analog zur .privacy-note — soll das Formular nicht dominieren */
.contact-card .legal-consent-container,
.contact-card .legal-consent-container p,
.contact-card .legal-consent-container .hs-richtext,
.contact-card .legal-consent-container .hs-richtext p,
.contact-card .legal-consent-container label span {
  font-size: 0.72rem;
  line-height: 1.5;
  color: var(--faint);
}

.contact-card .legal-consent-container { margin: 0.7rem 0 0.9rem; }
.contact-card .legal-consent-container a { color: var(--dim); text-decoration: underline; }

/* Datepicker (Pikaday, von HubSpot fürs Datumsfeld genutzt): komplettes
   Eigenstyling, da HubSpots Stylesheet unterdrückt ist (css:"" im Embed).
   Das Popup wird von Pikaday an <body> gehängt -> Selektoren ungescoped. */
.pika-single {
  z-index: 500;
  background: var(--panel);
  border: 1px solid var(--glass-border);
  border-radius: var(--r-m);
  padding: 0.9rem;
  box-shadow: 0 20px 60px rgba(0, 0, 0, 0.55);
  color: var(--paper);
  font-size: 0.85rem;
}

.pika-single.is-hidden { display: none; }
.pika-single.is-bound { position: absolute; }

.pika-lendar { width: 252px; }

.pika-title {
  position: relative;
  text-align: center;
  padding: 0 28px;
  margin-bottom: 0.5rem;
}

/* Monat/Jahr: sichtbarer Text, das <select> liegt unsichtbar darüber */
.pika-label {
  display: inline-block;
  position: relative;
  overflow: hidden;
  margin: 0 0.2em;
  font-weight: 600;
  cursor: pointer;
}

.pika-label select {
  position: absolute;
  inset: 0;
  opacity: 0;
  cursor: pointer;
}

/* Blätter-Buttons: Textlabel verstecken, Pfeile zeigen */
.pika-prev, .pika-next {
  position: absolute;
  top: -2px;
  width: 26px;
  height: 26px;
  border: 0;
  border-radius: 8px;
  background: transparent;
  color: var(--paper);
  cursor: pointer;
  text-indent: -9999px;
  overflow: hidden;
  transition: background 0.2s;
}

.pika-prev { left: 0; }
.pika-next { right: 0; }
.pika-prev:hover, .pika-next:hover { background: rgba(244, 241, 234, 0.12); }

.pika-prev::after, .pika-next::after {
  content: "‹";
  position: absolute;
  inset: 0;
  text-indent: 0;
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 1.1rem;
}

.pika-next::after { content: "›"; }

.pika-table {
  width: 100%;
  border-collapse: collapse;
  border-spacing: 0;
}

.pika-table th {
  padding: 0.3em 0;
  font-size: 0.64rem;
  font-weight: 500;
  text-transform: uppercase;
  letter-spacing: 0.08em;
  color: var(--faint);
  text-align: center;
}

.pika-table th abbr { text-decoration: none; border-bottom: 0; cursor: default; }

.pika-table td { padding: 1px; }

.pika-button {
  display: block;
  width: 100%;
  padding: 0.45em 0;
  border: 0;
  border-radius: 8px;
  background: transparent;
  color: var(--paper);
  font-size: 0.82rem;
  text-align: center;
  cursor: pointer;
  transition: background 0.2s;
}

.pika-button:hover { background: rgba(244, 241, 234, 0.12); }

.is-today .pika-button { color: var(--coral); font-weight: 700; }

.is-selected .pika-button {
  background: var(--coral);
  color: #0a0a0a;
  font-weight: 700;
}

.is-disabled .pika-button { color: var(--faint); cursor: default; }
.is-disabled .pika-button:hover { background: transparent; }
