/* GV Premium — Frontend (Badge, Formulare, Partner-Konto)
   Folgt DESIGN-SYSTEM.md (Quiet Luxury): Haarlinien statt Boxen, Label-Stimme,
   radius 0. Token-Fallbacks, falls eine Seite die gv-quiet-Blöcke nicht lädt. */

.gv-premium, .gv-premium-place, .gv-premium-profile {
  --gvp-ink: var(--color-ink, #1F211E);
  --gvp-stone: var(--color-stone, #EDEAE3);
  --gvp-stone-deep: var(--color-stone-deep, #DDD8CC);
  --gvp-moss: var(--color-moss, #4A5443);
  --gvp-terracotta: var(--color-terracotta-deep, #8A4F36);
  --gvp-mist: var(--color-mist, #66665E);
  --gvp-sans: var(--font-sans, 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', Arial, sans-serif);
  --gvp-serif: var(--font-serif, 'Cormorant Garamond', 'Iowan Old Style', Palatino, Georgia, serif);
  --gvp-label: var(--text-label, 0.72rem);
  --gvp-track: var(--tracking-label, 0.14em);
  --gvp-premium: #6B2433; /* Bordeaux — DER Premium-Akzent (Remco 2026-06-12) */
}

/* ---- Label-Stimme ---- */
.gv-premium .gv-p-label {
  font-family: var(--gvp-sans);
  font-size: var(--gvp-label);
  letter-spacing: var(--gvp-track);
  text-transform: uppercase;
  color: var(--gvp-mist);
  font-weight: 500;
  margin: 0 0 10px;
}

/* ---- «Premium»-Badge (Wording-Guard: keine Empfehlung implizieren) ---- */
/* Archiv/Index-Zeile: Basis-Label (der Chip kommt aus archiv.css, Bordeaux) */
body.geodir-archive .geodir-post.gv-premium-place .geodir-entry-title::before,
.gv-premium-place .geodir-entry-title::before {
  content: "✓ Premium";
  display: block;
  font-family: var(--font-sans, Arial, sans-serif);
  font-size: var(--text-label, 0.72rem);
  font-weight: 500;
  letter-spacing: var(--tracking-label, 0.14em);
  text-transform: uppercase;
  color: #6B2433;
  margin: 0 0 6px;
}
/* Profilseite: stilles Label über dem Betriebsnamen (wie Archiv-Zeile) */
body.gv-premium-profile .entry-title::before,
body.gv-premium-profile h1.geodir-entry-title::before {
  content: "✓ Premium";
  display: block;
  width: fit-content;
  background: #6B2433;
  color: var(--color-field, #F7F5F0);
  padding: 5px 12px 4px;
  font-family: var(--font-sans, Arial, sans-serif);
  font-size: var(--text-label, 0.72rem);
  font-weight: 500;
  letter-spacing: var(--tracking-label, 0.14em);
  text-transform: uppercase;
  margin: 0 0 12px;
}
/* Profilseite: Premium-Bar über dem Faktenblock (gg-contact-card).
   Der content (mit Jahreszahl) kommt server-seitig aus class-badge.php
   (<style id="gv-premium-bar">) — nur auf Premium-Profilen. */
body.gv-premium-profile .gg-contact-card::before {
  display: block;
  box-sizing: border-box;
  width: 100%;
  background: var(--gvp-premium, #6B2433);
  color: var(--color-field, #F7F5F0);
  font-family: var(--font-sans, Arial, sans-serif);
  font-size: var(--text-label, 0.72rem);
  font-weight: 500;
  letter-spacing: var(--tracking-label, 0.14em);
  text-transform: uppercase;
  padding: 11px 18px;
  margin: 0 0 22px;
}
/* In der Premium-Box (Ortsseiten) trägt der Kicker das Badge */
.gv-premium-box .gv-premium-flag { color: #6B2433; font-weight: 600; }

/* ---- Hinweise ---- */
.gv-premium .gv-note {
  border-top: 1px solid var(--gvp-stone-deep);
  border-bottom: 1px solid var(--gvp-stone-deep);
  padding: 14px 0;
  margin: 18px 0;
  font-size: 0.9375rem;
  line-height: 1.6;
}
.gv-premium .gv-note-ok { color: var(--gvp-moss); }
.gv-premium .gv-note-err { color: var(--gvp-terracotta); }

/* ---- Formulare: stille Felder (Haarlinie, kein Radius, Moss-Fokus) ---- */
.gv-premium .gv-form { max-width: var(--measure, 680px); }
.gv-premium .gv-field { margin: 0 0 18px; }
.gv-premium .gv-field label {
  display: block;
  font-family: var(--gvp-sans);
  font-size: var(--gvp-label);
  letter-spacing: var(--gvp-track);
  text-transform: uppercase;
  color: var(--gvp-mist);
  font-weight: 500;
  margin-bottom: 6px;
}
.gv-premium input[type="text"],
.gv-premium input[type="email"],
.gv-premium input[type="tel"],
.gv-premium textarea {
  width: 100%;
  /* Heller als Stone gefüllt — Felder müssen ohne Fokus auffindbar sein */
  background: var(--color-field, #F7F5F0);
  border: 1px solid var(--gvp-stone-deep);
  border-radius: 0;
  padding: 10px 13px;
  font-family: var(--gvp-sans);
  font-size: 1rem;
  color: var(--gvp-ink);
  box-shadow: none;
}
.gv-premium input:focus, .gv-premium textarea:focus {
  outline: none;
  border-color: var(--gvp-moss);
  box-shadow: none;
}
.gv-premium .gv-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 0 28px;
}
@media (max-width: 560px) { .gv-premium .gv-grid { grid-template-columns: 1fr; } }
.gv-premium .gv-check label {
  display: block;
  font-size: 0.9375rem;
  text-transform: none;
  letter-spacing: 0;
  color: var(--gvp-ink);
  font-weight: 400;
  line-height: 1.6;
}
.gv-premium .gv-check input { margin-right: 8px; }
.gv-premium .gv-hint {
  display: block;
  font-size: 0.875rem;
  color: var(--gvp-mist);
  margin-top: 6px;
  line-height: 1.6;
}
/* Honeypot: visuell raus, für Bots da */
.gv-premium .gv-hp { position: absolute !important; left: -9999px !important; }

/* ---- Radio-Zeilen (Kundentyp / Anliegen im Offerten-Formular) ---- */
.gv-premium .gv-radio-row {
  border: none;
  padding: 0;
  margin: 0 0 20px;
}
.gv-premium .gv-radio-row legend {
  font-family: var(--gvp-sans);
  font-size: var(--gvp-label);
  letter-spacing: var(--gvp-track);
  text-transform: uppercase;
  color: var(--gvp-mist);
  font-weight: 500;
  padding: 0;
  margin-bottom: 8px;
}
.gv-premium .gv-radio-row label {
  display: block;
  font-size: 0.9375rem;
  line-height: 1.6;
  padding: 7px 0;
  border-top: 1px solid var(--gvp-stone-deep);
  cursor: pointer;
}
.gv-premium .gv-radio-row label:last-of-type { border-bottom: 1px solid var(--gvp-stone-deep); }
.gv-premium .gv-radio-row input { margin-right: 10px; accent-color: var(--gvp-moss); }

/* ---- /anfrage/ — Weiterleitungs-Seite (Free-Profil-Flow) ---- */
.gv-premium.gv-redirect { max-width: var(--measure, 680px); }
.gv-premium.gv-redirect .gv-direct {
  display: flex;
  flex-wrap: wrap;
  gap: 14px 26px;
  border-top: 1px solid var(--gvp-stone-deep);
  border-bottom: 1px solid var(--gvp-stone-deep);
  padding: 16px 0;
  margin: 22px 0 34px;
}
/* Alternativen-Sektion: hellere Fläche (Feld-Ton der CI) — die Liste soll
   gegenüber dem nüchternen Free-Hinweis darüber sichtbar "poppen"
   (Premium-Verkaufsargument, Remco 2026-06-12). */
.gv-premium.gv-redirect .gv-redirect-list {
  background: var(--color-field, #F7F5F0);
  border: 1px solid var(--gvp-stone-deep);
  padding: clamp(22px, 4vw, 36px);
  margin-top: 38px;
}
.gv-premium.gv-redirect .gv-redirect-list h3 {
  font-family: var(--gvp-serif);
  font-weight: 500;
  font-size: clamp(1.55rem, 3vw, 1.9rem);
  line-height: 1.15;
  margin: 6px 0 4px;
}
.gv-premium .gv-alt-list { list-style: none; margin: 14px 0 0; padding: 0; }
.gv-premium .gv-alt-list li {
  border-top: 1px solid var(--gvp-stone-deep);
  padding: 20px 0;
}
.gv-premium .gv-alt-list li:first-child { margin-top: 6px; }
.gv-premium .gv-alt-list li:last-child { padding-bottom: 6px; }
.gv-premium .gv-alt-list h4 {
  font-family: var(--gvp-serif);
  font-weight: 500;
  font-size: 1.4rem;
  margin: 4px 0 8px;
}
/* Distanz zum gesuchten Betrieb: der eine warme Akzent im Kicker */
.gv-premium .gv-dist { color: var(--gvp-terracotta); }
/* Google-Sterne (site.js baut .gvh-rev um; Basis-Styles in site.css) */
.gv-premium .gv-alt-list .gvh-rev { margin: 0 0 12px; }
.gv-premium .gv-alt-list h4 a { color: var(--gvp-ink); text-decoration: none; }
.gv-premium .gv-alt-list h4 a:hover { color: var(--gvp-moss); }
.gv-premium .gv-alt-cta {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: 12px 26px;
  margin: 0;
}
.gv-premium .gv-premium-flag { color: #6B2433; font-weight: 600; }

/* ---- Plan-Auswahl ---- */
.gv-premium .gv-plans { border: none; padding: 0; margin: 0 0 22px; }
.gv-premium .gv-plans legend { padding: 0; margin-bottom: 10px; }
.gv-premium .gv-plan {
  display: block;
  border-top: 1px solid var(--gvp-stone-deep);
  padding: 12px 0;
  cursor: pointer;
  font-size: 0.9375rem;
}
.gv-premium .gv-plan:last-child { border-bottom: 1px solid var(--gvp-stone-deep); }
.gv-premium .gv-plan input { margin-right: 10px; accent-color: var(--gvp-moss); }

/* ---- Buttons ---- */
.gv-premium .gv-btn {
  display: inline-block;
  font-family: var(--gvp-sans);
  font-size: var(--gvp-label);
  letter-spacing: var(--gvp-track);
  text-transform: uppercase;
  font-weight: 500;
  text-decoration: none;
  color: var(--gvp-moss);
  border: none;
  background: none;
  padding: 0;
  cursor: pointer;
}
.gv-premium .gv-btn:hover { text-decoration: underline; text-underline-offset: 4px; }
.gv-premium .gv-btn-solid {
  background: var(--gvp-moss);
  color: var(--gvp-stone);
  padding: 13px 26px;
  border-radius: 0;
}
.gv-premium .gv-btn-solid:hover { background: var(--gvp-ink); text-decoration: none; }

/* ---- Upsell (Free-Profile): Besucher-Notiz + Inhaber-Box am Formular-Platz ---- */
.gv-premium.gv-upsell {
  margin: 28px 0;
  max-width: var(--measure, 680px);
}
.gv-premium.gv-upsell p { font-size: 0.9375rem; line-height: 1.7; }
.gv-premium.gv-upsell a { color: var(--gvp-moss); }
/* Hinweis «noch kein Premium-Partner»: Terrakotta-Verlauf statt stillem
   Grau — soll Leser UND Betrieb auffallen (Remco 2026-06-12). */
.gv-premium.gv-upsell .gv-visitor-note {
  color: var(--gvp-ink);
  margin: 0 0 24px;
  padding: 16px 20px;
  background: linear-gradient(115deg, rgba(164, 103, 75, 0.16), rgba(164, 103, 75, 0.04) 75%);
  border-left: 3px solid var(--gvp-terracotta);
}
/* Die Box: die eine gerahmte Fläche der Profilseite (wie fb-card der Landing) */
.gv-premium.gv-upsell .gv-upsell-box {
  border: 1px solid var(--gvp-stone-deep);
  padding: clamp(22px, 3.5vw, 36px);
}
.gv-premium.gv-upsell .gv-upsell-box h3 {
  font-family: var(--gvp-serif);
  font-weight: 500;
  font-size: var(--text-h2, 1.5rem);
  color: var(--gvp-ink);
  margin: 0 0 0.45em;
}
.gv-premium.gv-upsell .gv-upsell-box > p { margin: 0 0 12px; }
.gv-premium.gv-upsell .gv-upsell-feats {
  list-style: none;
  margin: 14px 0 22px;
  padding: 0;
}
.gv-premium.gv-upsell .gv-upsell-feats li {
  border-top: 1px solid var(--gvp-stone-deep);
  padding: 10px 0;
  font-size: 0.9375rem;
  line-height: 1.6;
}
.gv-premium.gv-upsell .gv-upsell-feats li:last-child { border-bottom: 1px solid var(--gvp-stone-deep); }
.gv-premium.gv-upsell .gv-upsell-cta {
  display: flex;
  align-items: center;
  gap: 26px;
  flex-wrap: wrap;
  margin: 0 0 14px;
}
.gv-premium.gv-upsell .gv-upsell-cta .gv-btn-solid { color: var(--gvp-stone); }
.gv-premium.gv-upsell .gv-hint { margin: 0; }

/* ---- Partner-Konto ---- */
.gv-partner-account .gv-partner-listing {
  border-top: 1px solid var(--gvp-stone-deep);
  padding: 26px 0;
}
.gv-partner-account .gv-partner-listing:last-child { border-bottom: 1px solid var(--gvp-stone-deep); }
.gv-partner-account h3 { font-family: var(--gvp-serif); font-weight: 500; margin: 0 0 10px; }
.gv-partner-account h3 a { color: var(--gvp-ink); text-decoration: none; }
.gv-partner-account .gv-inquiry-list { list-style: none; margin: 0 0 16px; padding: 0; }
.gv-partner-account .gv-inquiry-list li {
  border-top: 1px solid var(--gvp-stone-deep);
  padding: 10px 0;
  font-size: 0.9375rem;
  line-height: 1.6;
}

/* ---- Ergebnis-Seiten (danke/abbruch) & Claim ---- */
.gv-premium.gv-claim, .gv-premium.gv-premium-result { max-width: var(--measure, 680px); }
.gv-premium h2 { font-family: var(--gvp-serif); font-weight: 500; }

/* Offerten-Formular ersetzt das Ninja-Form im gg-enquiry-Block (Seite 12):
   Titel übernimmt die Serif-Stimme der Profilseite. */
.gv-premium.gv-inquiry h3 {
  font-family: var(--gvp-serif);
  font-weight: 500;
  font-size: var(--text-h2, 1.6rem);
  color: var(--gvp-ink);
  margin: 0 0 0.4em;
}

/* ---- Profil-Hero: Banner + Logo-Plate (v1.3, Brief 11) ----
   Heterogenes Material gezähmt: Banner mit festem Seitenverhältnis
   (cover), Logo IMMER auf einer Plate fester Höhe (contain) — helle
   Logos automatisch auf Moss. Screenshots: Top-Anschnitt + Label. */
.gv-hero {
  --gvh-field: var(--color-field, #F7F5F0);
  --gvh-stone-deep: var(--color-stone-deep, #DDD8CC);
  --gvh-moss: var(--color-moss, #4A5443);
  --gvh-ink: var(--color-ink, #1F211E);
  position: relative;
  margin: 0 0 60px;
}
.gv-hero-banner {
  aspect-ratio: 3 / 1;
  overflow: hidden;
  position: relative;
  border: 1px solid var(--gvh-stone-deep);
  background: var(--gvh-stone-deep);
}
.gv-hero-banner img {
  width: 100%; height: 100%;
  object-fit: cover;
  display: block;
  margin: 0;
}
.gv-hero-shot .gv-hero-banner img { object-position: top center; }
.gv-hero-banner::after {
  content: "";
  position: absolute; left: 0; right: 0; bottom: 0;
  height: 44%;
  background: linear-gradient(to top, rgba(31,33,30,0.30), rgba(31,33,30,0));
  pointer-events: none;
}
.gv-shot-label {
  position: absolute; top: 14px; right: 14px;
  font-family: var(--font-sans, 'Inter', sans-serif);
  font-size: var(--text-label, 0.72rem);
  letter-spacing: var(--tracking-label, 0.14em);
  text-transform: uppercase;
  font-weight: 500;
  color: var(--gvh-field);
  background: rgba(31,33,30,0.55);
  padding: 8px 13px;
  text-decoration: none !important;
  backdrop-filter: blur(4px);
  -webkit-backdrop-filter: blur(4px);
}
a.gv-shot-label:hover { background: rgba(31,33,30,0.8); color: #fff; }
.gv-hero-strip {
  height: 110px;
  border: 1px solid var(--gvh-stone-deep);
  background: linear-gradient(115deg, #46503F, var(--gvh-moss) 55%, #5C6852);
}
.gv-hero-logo {
  position: absolute;
  left: clamp(16px, 4vw, 40px);
  bottom: -30px;
  height: 88px;
  min-width: 104px;
  max-width: min(280px, 62%);
  padding: 14px 22px;
  display: flex; align-items: center; justify-content: center;
  background: var(--gvh-field);
  border: 1px solid var(--gvh-stone-deep);
  box-shadow: 0 1px 3px rgba(31,33,30,0.07);
}
.gv-hero-logo img {
  max-height: 56px;
  max-width: 232px;
  width: auto; height: auto;
  display: block;
  margin: 0;
}
.gv-hero-logo.gv-tone-light {
  background: var(--gvh-moss);
  border-color: var(--gvh-moss);
}
@media (max-width: 600px) {
  .gv-hero { margin-bottom: 46px; }
  .gv-hero-banner { aspect-ratio: 2.1 / 1; }
  .gv-hero-strip { height: 84px; }
  .gv-hero-logo {
    height: 66px; bottom: -22px;
    padding: 10px 14px;
    max-width: min(210px, 70%);
  }
  .gv-hero-logo img { max-height: 44px; max-width: 178px; }
}

/* ---- Eintrags-Formular (v1.4, /add-listing/) ---- */
.gv-submit .gv-form { max-width: var(--measure, 680px); }
.gv-submit .gv-field input[type="text"],
.gv-submit .gv-field input[type="url"],
.gv-submit .gv-field input[type="email"],
.gv-submit .gv-field textarea {
  width: 100%;
  background: var(--color-field, #F7F5F0);
  border: 1px solid var(--gvp-stone-deep);
  border-radius: 0;
  padding: 13px 15px;
  font-family: var(--gvp-sans);
  font-size: 0.9375rem;
  color: var(--gvp-ink);
}
.gv-submit .gv-field label {
  display: block;
  font-family: var(--gvp-sans);
  font-size: var(--gvp-label);
  letter-spacing: var(--gvp-track);
  text-transform: uppercase;
  color: var(--gvp-mist);
  font-weight: 500;
  margin-bottom: 7px;
}
.gv-submit .gv-field { margin: 0 0 18px; }
.gv-submit .gv-field-half { width: 48%; display: inline-block; vertical-align: top; }
.gv-submit .gv-field-half + .gv-field-half { margin-left: 3%; }
.gv-submit .gv-cats { border: none; padding: 0; margin: 0 0 18px; }
.gv-submit .gv-check-inline {
  display: inline-block;
  margin: 6px 18px 6px 0;
  font-family: var(--gvp-sans);
  font-size: 0.9375rem;
  color: var(--gvp-ink);
}
.gv-submit .gv-check-inline input { margin-right: 7px; }
@media (max-width: 540px) {
  .gv-submit .gv-field-half { width: 100%; display: block; }
  .gv-submit .gv-field-half + .gv-field-half { margin-left: 0; }
}

/* ---- Claim-Seite: Leistungs-Vergleich unter dem Checkout ----
   EXAKTE Kopie des #leistungen-Blocks von /fuer-betriebe/ (fb-compare aus
   fuer-betriebe.css, dort .fb-page-gescopt — hier unter .gv-premium).
   Werte 1:1 übernommen inkl. Karten-Fläche (#FBFAF7 + weicher Schatten).
   Bei Tabellen-Änderungen BEIDE Dateien pflegen. */
.gv-premium .gv-claim-vergleich {
  margin-top: 46px;
  border-top: 1px solid var(--gvp-stone-deep);
  padding-top: 26px;
}
.gv-premium .gv-claim-vergleich h2 {
  font-family: var(--gvp-serif);
  font-weight: 500;
  font-size: clamp(1.45rem, 2.8vw, 1.8rem);
  line-height: 1.18;
  margin: 6px 0 0;
}
.gv-premium .fb-compare {
  width: 100%;
  border-collapse: collapse;
  table-layout: fixed;
  margin-top: clamp(26px, 4vw, 44px);
  font-size: 0.9375rem;
  background: #FBFAF7;
  box-shadow: 0 10px 28px rgba(31, 33, 30, 0.05);
  border: 1px solid var(--gvp-stone-deep);
}
.gv-premium .fb-compare th:first-child,
.gv-premium .fb-compare td:first-child { width: 44%; }
.gv-premium .fb-compare th,
.gv-premium .fb-compare td {
  border-top: 1px solid var(--gvp-stone-deep);
  padding: 12px 14px;
  text-align: left;
  vertical-align: top;
}
.gv-premium .fb-compare thead th {
  border-top: none;
  font-family: var(--gvp-sans);
  font-size: var(--gvp-label);
  letter-spacing: var(--gvp-track);
  text-transform: uppercase;
  font-weight: 500;
  color: var(--gvp-mist);
}
.gv-premium .fb-compare .fb-th-sub { display: block; font-weight: 400; margin-top: 2px; }
.gv-premium .fb-compare .fb-col-prem { background: var(--color-field, #F7F5F0); }
.gv-premium .fb-compare thead .fb-col-prem { color: var(--gvp-moss); }
.gv-premium .fb-fair { margin-top: 14px; font-size: 0.9375rem; color: var(--gvp-mist); }
@media (min-width: 641px) {
  .gv-premium .fb-compare th:not(:first-child),
  .gv-premium .fb-compare td:not(:first-child) { width: 28%; }
}
@media (max-width: 640px) {
  .gv-premium .fb-compare,
  .gv-premium .fb-compare tbody,
  .gv-premium .fb-compare tr,
  .gv-premium .fb-compare td { display: block; width: 100%; }
  .gv-premium .fb-compare { background: none; box-shadow: none; border: none; }
  .gv-premium .fb-compare thead { display: none; }
  .gv-premium .fb-compare tr { border-top: 1px solid var(--gvp-stone-deep); padding: 10px 0; }
  .gv-premium .fb-compare td { border: none; padding: 4px 0; }
  .gv-premium .fb-compare td[data-th]::before {
    content: attr(data-th) ": ";
    font-family: var(--gvp-sans);
    font-size: var(--gvp-label);
    letter-spacing: var(--gvp-track);
    text-transform: uppercase;
    color: var(--gvp-mist);
  }
  .gv-premium .fb-compare .fb-col-prem { background: none; }
}
