/* Review-Widget — eigenständiges Modul (separater Laravel-Service via /reviews-api). */
/* Tokens an das App-Designsystem (flight-search.css :root) gebunden — mit Fallbacks,
   falls das Widget mal ohne flight-search.css eingebunden wird. */
.rv-root { --rv-accent:var(--brand-accent,#e8520a); --rv-bd:var(--gray-border,#ddd); --rv-muted:var(--gray-text,#666);
  --rv-tint:rgba(232,82,10,.08);
  font-family: var(--font,'Source Sans 3',sans-serif); color:var(--text,#222); margin:1.5rem 0; }
.rv-root * { box-sizing:border-box; }

.rv-summary { display:flex; align-items:center; gap:.75rem; margin-bottom:1rem; }
.rv-avg { font-size:1.6rem; font-weight:700; color:var(--rv-accent); }
.rv-avg small { font-size:.9rem; color:var(--rv-muted); font-weight:400; }
.rv-count { color:var(--rv-muted); font-size:.9rem; }

.rv-list { display:flex; flex-direction:column; gap:.75rem; margin-bottom:1.25rem; }
.rv-card { border:1px solid var(--rv-bd); border-radius:4px; padding:.85rem 1rem; background:#fff; }
.rv-card-head { display:flex; justify-content:space-between; align-items:baseline; gap:.5rem; }
.rv-card-name { font-weight:600; }
.rv-card-meta { color:var(--rv-muted); font-size:.82rem; }
.rv-card-score { background:var(--rv-accent); color:#fff; border-radius:4px; padding:.1rem .5rem; font-weight:700; font-size:.9rem; }
.rv-card-ratings { margin:.5rem 0 0; display:flex; flex-wrap:wrap; gap:.3rem .6rem; }
.rv-chip { font-size:.78rem; color:#374151; background:#f3f4f6; border-radius:999px; padding:.12rem .55rem; }
.rv-card-comment { margin:.45rem 0 0; font-size:.9rem; color:#374151; }
.rv-card-comment + .rv-card-comment { margin-top:.25rem; }

.rv-toggle { display:inline-block; cursor:pointer; border:1px solid var(--rv-accent); color:var(--rv-accent);
  background:#fff; border-radius:4px; padding:.55rem 1rem; font-weight:600; font-size:.95rem; }
.rv-toggle:hover { background:var(--rv-tint); }

.rv-form { border:1px solid var(--rv-bd); border-radius:4px; padding:1.1rem 1.2rem; margin-top:1rem; background:#fafbfc; }
.rv-form[hidden] { display:none; }
.rv-section { margin:1rem 0; }
.rv-section h4 { margin:0 0 .6rem; font-size:1.05rem; }
.rv-grid { display:grid; grid-template-columns:1fr 1fr; gap:.7rem 1rem; }
.rv-field { display:flex; flex-direction:column; gap:.25rem; }
.rv-field label { font-size:.82rem; color:var(--rv-muted); }
.rv-field input, .rv-field select, .rv-comment textarea {
  border:1px solid var(--rv-bd); border-radius:4px; padding:.45rem .6rem; font:inherit; background:#fff; }
.rv-modes { display:flex; flex-wrap:wrap; gap:.5rem; }
.rv-mode { display:flex; align-items:center; gap:.35rem; font-size:.9rem; border:1px solid var(--rv-bd);
  border-radius:4px; padding:.3rem .6rem; cursor:pointer; background:#fff; }

.rv-aspect { padding:.6rem 0; border-top:1px dashed var(--rv-bd); }
.rv-aspect:first-child { border-top:none; }
.rv-aspect-label { font-weight:600; font-size:.95rem; margin-bottom:.3rem; }
.rv-poles { display:flex; justify-content:space-between; font-size:.75rem; color:var(--rv-muted); margin-bottom:.25rem; }
.rv-scale { display:flex; gap:.2rem; flex-wrap:wrap; }
.rv-num { width:2.1rem; height:2.1rem; border:1px solid var(--rv-bd); border-radius:4px;
  cursor:pointer; font:inherit; font-size:.85rem; color:#374151; transition:transform .05s, box-shadow .1s; }
.rv-num:hover { transform:translateY(-1px); box-shadow:0 2px 6px rgba(0,0,0,.12); }
.rv-num.is-active { color:#fff; font-weight:700; border-color:rgba(0,0,0,.25); box-shadow:0 0 0 2px rgba(0,0,0,.18) inset; }
.rv-comment { margin-top:.45rem; }
.rv-comment textarea { width:100%; min-height:2.4rem; resize:vertical; border:1px solid var(--rv-bd);
  border-radius:4px; padding:.45rem .6rem; font:inherit; }

/* Pol-Erklärung direkt über der Skala */
/* Skala-Container: Breite = Skala, damit beide Pole exakt über den Enden sitzen */
.rv-rate { display:inline-block; }
/* Skala + Inline-Auswahl (Radios) nebeneinander */
.rv-aspect-body { display:flex; align-items:flex-end; gap:1.25rem; flex-wrap:wrap; }
.rv-inline-choice { padding-bottom:.15rem; }
.rv-inline-choice .rv-radios { gap:.4rem; }
.rv-poles { font-size:.75rem; }
.rv-good { color:#15803d; font-weight:600; }
.rv-bad  { color:#b91c1c; font-weight:600; }
.rv-legend { font-size:.85rem; color:var(--rv-muted); margin:.25rem 0 1rem; }

/* Radio-Buttons (statt 2-Optionen-Pulldown) */
.rv-radios { display:flex; gap:.6rem; flex-wrap:wrap; }
.rv-radio { display:flex; align-items:center; gap:.35rem; border:1px solid var(--rv-bd); border-radius:4px;
  padding:.4rem .8rem; cursor:pointer; background:#fff; font-size:.95rem; }
.rv-radio:has(input:checked) { border-color:var(--rv-accent); background:var(--rv-tint); font-weight:600; }

/* Unterüberschriften (Hin-/Rückflug) */
.rv-sub { margin:1rem 0 .3rem; font-size:.95rem; color:#374151; }

/* Flugnummer + Lookup-Ergebnis */
.rv-flightno { text-transform:uppercase; }
.rv-resolved { font-size:.9rem; margin:.3rem 0; }
.rv-resolved.is-found { color:#15803d; font-weight:600; }
.rv-resolved.is-missing { color:#b45309; }
.rv-fallback { display:grid; grid-template-columns:1fr 1fr 1fr; gap:.6rem; margin:.4rem 0; }
.rv-fallback[hidden] { display:none; }

/* Datum: Monat/Jahr (Pflicht) + Tag (optional) */
.rv-date { display:flex; gap:.5rem; }
.rv-date select { border:1px solid var(--rv-bd); border-radius:4px; padding:.45rem .5rem; font:inherit; background:#fff; }

/* Verkehrsmittel-Auswahl */
.rv-modes-wrap { margin:.2rem 0 .8rem; }
.rv-modes-label { font-size:.85rem; color:var(--rv-muted); margin-bottom:.35rem; }

/* Anmeldung / Social */
.rv-auth { border-top:2px solid var(--rv-bd); margin-top:1.5rem; padding-top:1rem; }
.rv-social { display:flex; flex-wrap:wrap; gap:.5rem; margin:.4rem 0; }
.rv-social-btn { border:1px solid var(--rv-bd); background:#fff; border-radius:4px; padding:.5rem .9rem;
  font:inherit; font-size:.9rem; cursor:pointer; }
.rv-social-btn:disabled { opacity:.45; cursor:not-allowed; }
.rv-soon { font-size:.8rem; color:var(--rv-muted); margin:.1rem 0 .8rem; font-style:italic; }
.rv-auth-status { margin:.5rem 0; font-size:.92rem; font-weight:600; }
.rv-auth-status[hidden] { display:none; }
.rv-auth-status.is-ok { color:#15803d; }
.rv-auth-status.is-err { color:#b91c1c; }

/* Gesperrte (per Flugnummer befüllte) Felder */
input.is-locked { background:#f1f3f6; color:#4b5563; cursor:default; }

/* Airport-Autocomplete */
.rv-apwrap { position:relative; }
.rv-apwrap input { width:100%; }
.rv-apdrop { position:absolute; z-index:30; left:0; right:0; top:100%; background:#fff; border:1px solid var(--rv-bd);
  border-top:none; border-radius:0 0 4px 4px; max-height:240px; overflow:auto; box-shadow:0 8px 20px rgba(0,0,0,.12); }
.rv-apdrop[hidden] { display:none; }
.rv-apitem { padding:.45rem .6rem; cursor:pointer; display:flex; gap:.55rem; align-items:baseline; }
.rv-apitem:hover, .rv-apitem.is-hi { background:var(--rv-tint); }
.rv-apcode { font-weight:700; color:var(--rv-accent); min-width:2.6rem; }
.rv-apcity { color:#374151; font-size:.9rem; }

/* Opt-out ("Nicht genutzt" / "Nur Handgepäck") — direkt unter der Skala, gut sichtbar */
.rv-na { display:inline-flex; align-items:center; gap:.4rem; margin-top:.45rem; cursor:pointer;
  font-size:.92rem; color:#374151; }
.rv-na input { width:1.05rem; height:1.05rem; }
.rv-rate.is-disabled { opacity:.4; pointer-events:none; }
.rv-email { margin-top:.6rem; }
.rv-email[hidden] { display:none; }

.rv-actions { margin-top:1rem; display:flex; align-items:center; gap:.75rem; }
.rv-submit { background:var(--rv-accent); color:#fff; border:none; border-radius:4px; padding:.6rem 1.4rem;
  font-weight:700; font-size:1rem; cursor:pointer; }
.rv-submit:disabled { opacity:.55; cursor:default; }
.rv-msg { font-size:.9rem; }
.rv-msg.is-err { color:#b91c1c; }
.rv-msg.is-ok { color:#15803d; }

.rv-actions { margin-top:1rem; display:flex; align-items:center; gap:.75rem; }
.rv-submit { background:var(--rv-accent); color:#fff; border:none; border-radius:4px; padding:.6rem 1.4rem;
  font-weight:700; font-size:1rem; cursor:pointer; }
.rv-submit:disabled { opacity:.55; cursor:default; }
.rv-msg { font-size:.9rem; }
.rv-msg.is-err { color:#b91c1c; }
.rv-msg.is-ok { color:#15803d; }

/* Native Radios/Checkboxen in der App-Akzentfarbe (wie .flight-type-row im Hauptapp). */
.rv-radio input[type=radio], .rv-mode input, .rv-na input { accent-color: var(--brand-dark, #003663); }

/* Hin-/Rückflug-Wizard: bei Hin & Zurück erst der Hinflug-Fragebogen, dann der Rückflug. */
.rv-leg-title { margin:1.2rem 0 .4rem; font-size:1.15rem; color:var(--brand-dark, #003663);
  border-bottom:2px solid var(--rv-tint); padding-bottom:.3rem; }
.rv-back { background:none; border:none; padding:0; margin:.1rem 0 .5rem; cursor:pointer;
  color:var(--rv-accent); font-size:.88rem; text-decoration:underline; }
.rv-logout { margin-top:.5rem; display:block; }

/* Dankeschön-Ansicht nach dem Absenden (ersetzt das Formular). */
.rv-thanks { text-align:center; padding:2.2rem 1.5rem; }
.rv-thanks-check { width:3.2rem; height:3.2rem; line-height:3.2rem; margin:0 auto .8rem;
  border-radius:50%; background:#15803d; color:#fff; font-size:1.7rem; font-weight:700; }
.rv-thanks h3 { margin:.2rem 0 .5rem; font-size:1.3rem; color:var(--brand-dark, #003663); }
.rv-thanks-msg { color:#374151; margin:.3rem auto 1.2rem; max-width:34rem; line-height:1.5; }

@media (max-width:780px){
  .rv-grid { grid-template-columns:1fr; }
  .rv-fallback { grid-template-columns:1fr; }
  .rv-scale { gap:.15rem; }
  .rv-num { width:1.9rem; height:1.9rem; }
}
