/* ==========================================================================
   IfF Fangmeldung — Revamp Design System
   Baltic Sturgeon Portal, Landesforschungsanstalt M-V
   Loaded AFTER bootstrap.min.css / style.css so it can normalise the old markup.
   ========================================================================== */

/* ── Webfont: Macho ─────────────────────────────────────────────────────── */
@font-face { font-family:'Macho'; src:url('../fonts/Macho-ExtraLight.woff2') format('woff2'); font-weight:200; font-style:normal; font-display:swap; }
@font-face { font-family:'Macho'; src:url('../fonts/Macho-Light.woff2')      format('woff2'); font-weight:300; font-style:normal; font-display:swap; }
@font-face { font-family:'Macho'; src:url('../fonts/Macho-Medium.woff2')     format('woff2'); font-weight:400; font-style:normal; font-display:swap; }
@font-face { font-family:'Macho'; src:url('../fonts/Macho-Medium.woff2')     format('woff2'); font-weight:500; font-style:normal; font-display:swap; }
@font-face { font-family:'Macho'; src:url('../fonts/Macho-SemiBold.woff2')   format('woff2'); font-weight:600; font-style:normal; font-display:swap; }
@font-face { font-family:'Macho'; src:url('../fonts/Macho-Bold.woff2')       format('woff2'); font-weight:700; font-style:normal; font-display:swap; }
@font-face { font-family:'Macho'; src:url('../fonts/Macho-ExtraBold.woff2')  format('woff2'); font-weight:800; font-style:normal; font-display:swap; }
@font-face { font-family:'Macho'; src:url('../fonts/Macho-Black.woff2')      format('woff2'); font-weight:900; font-style:normal; font-display:swap; }

/* ── Tokens ─────────────────────────────────────────────────────────────── */
:root{
  /* brand */
  --rv-navy:#12222e;
  --rv-blue:#275d8c;
  --rv-blue-dk:#1e3547;
  --rv-sky:#78bfe2;
  --rv-ink:#1e3547;
  --rv-ink-2:#43606f;
  --rv-ink-3:#5f7787;

  /* surfaces */
  --rv-bg:#eef2f5;
  --rv-surface:#ffffff;
  --rv-tint:#eaf4fa;
  --rv-tint-2:#f7fbfd;

  /* lines */
  --rv-line:#dbe4ea;
  --rv-line-2:#e6edf1;
  --rv-line-3:#cfdce4;

  /* status */
  --rv-ok:#2f7d5d;      --rv-ok-bg:#e9f4ee;   --rv-ok-fg:#1f5d43;
  --rv-warn:#a8761f;    --rv-warn-bg:#fdf3e0; --rv-warn-fg:#8a5f10;
  --rv-alert:#b4472f;   --rv-alert-bg:#fbeeea;--rv-alert-fg:#a03a24;
  --rv-info:#275d8c;    --rv-info-bg:#e8f1f8; --rv-info-fg:#204f78;

  /* metrics */
  --rv-shell:1360px;
  --rv-gap:24px;
  --rv-shadow:0 14px 34px rgba(30,53,71,.16);
  --rv-shadow-sm:0 2px 10px rgba(30,53,71,.08);
  --rv-tap:48px;
  --rv-font:'Macho', system-ui, -apple-system, 'Segoe UI', Roboto, sans-serif;
}

/* ── Base ───────────────────────────────────────────────────────────────── */
html{ -webkit-text-size-adjust:100%; }
body.rv, body.rv-admin{
  font-family:var(--rv-font);
  color:var(--rv-ink);
  background:var(--rv-bg);
  -webkit-font-smoothing:antialiased;
  -moz-osx-font-smoothing:grayscale;
  font-weight:400;
  line-height:1.55;
  letter-spacing:0;
}
.rv *, .rv-admin *{ box-sizing:border-box; }
.rv h1,.rv h2,.rv h3,.rv h4,.rv h5,.rv h6,
.rv-admin h1,.rv-admin h2,.rv-admin h3,.rv-admin h4,.rv-admin h5,.rv-admin h6{
  font-family:var(--rv-font); color:var(--rv-ink); letter-spacing:-.015em; line-height:1.18; margin:0;
}
.rv a, .rv-admin a{ color:var(--rv-blue); text-decoration:underline; text-underline-offset:2px; text-decoration-thickness:1px; }
.rv a:hover, .rv-admin a:hover{ color:var(--rv-ink); }
.rv :focus-visible, .rv-admin :focus-visible{ outline:3px solid var(--rv-sky); outline-offset:2px; }
.rv img, .rv-admin img{ max-width:100%; }

/* Screen-reader only */
.rv-sr{ position:absolute!important; width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0; }

/* Skip link */
.rv-skip{ position:absolute; left:-9999px; top:0; z-index:9999; background:var(--rv-blue); color:#fff; padding:12px 18px; font-weight:700; text-decoration:none; }
.rv-skip:focus{ left:8px; top:8px; color:#fff; }

/* ── Utilities ──────────────────────────────────────────────────────────── */
.rv-shell{ width:100%; max-width:var(--rv-shell); margin:0 auto; padding:0 24px; }
.rv-shell-narrow{ max-width:860px; }
.rv-eyebrow{ font-size:11px; font-weight:700; letter-spacing:.15em; text-transform:uppercase; color:var(--rv-ink-3); margin:0; }
.rv-eyebrow-sky{ color:var(--rv-sky); }
.rv-eyebrow-blue{ color:var(--rv-blue); }
.rv-lead{ font-size:16.5px; line-height:1.55; color:var(--rv-ink-2); font-weight:400; }
.rv-muted{ color:var(--rv-ink-3); }
.rv-small{ font-size:13px; color:var(--rv-ink-3); }
.rv-rule{ height:1px; background:var(--rv-line-2); border:0; margin:0; }
.rv-stack > * + *{ margin-top:14px; }
.rv-mt-0{margin-top:0!important}.rv-mt-1{margin-top:8px!important}.rv-mt-2{margin-top:16px!important}
.rv-mt-3{margin-top:24px!important}.rv-mt-4{margin-top:32px!important}.rv-mt-5{margin-top:48px!important}
.rv-mb-0{margin-bottom:0!important}.rv-mb-2{margin-bottom:16px!important}.rv-mb-3{margin-bottom:24px!important}
.rv-text-center{text-align:center}.rv-text-right{text-align:right}
.rv-flex{display:flex}.rv-items-center{align-items:center}.rv-justify-between{justify-content:space-between}
.rv-gap-1{gap:8px}.rv-gap-2{gap:16px}.rv-gap-3{gap:24px}
.rv-grow{flex:1;min-width:0}
.rv-wrap{flex-wrap:wrap}
.rv-nowrap{white-space:nowrap}
.rv-num{ font-variant-numeric:tabular-nums; font-feature-settings:'tnum' 1; }

/* ── Buttons ────────────────────────────────────────────────────────────── */
.rv-btn{
  display:inline-flex; align-items:center; justify-content:center; gap:10px;
  min-height:var(--rv-tap); padding:0 22px;
  font-family:var(--rv-font); font-size:15px; font-weight:700; letter-spacing:-.005em;
  border:1.5px solid transparent; border-radius:0; cursor:pointer;
  text-decoration:none; transition:background .16s, color .16s, border-color .16s;
  background:transparent; color:var(--rv-ink);
}
.rv-btn:hover{ text-decoration:none; }
.rv-btn:disabled,.rv-btn[aria-disabled="true"]{ opacity:.45; cursor:not-allowed; }
.rv-btn-primary{ background:var(--rv-blue); color:#fff; border-color:var(--rv-blue); }
.rv-btn-primary:hover{ background:var(--rv-ink); border-color:var(--rv-ink); color:#fff; }
.rv-btn-secondary{ background:transparent; color:var(--rv-blue); border-color:var(--rv-blue); }
.rv-btn-secondary:hover{ background:var(--rv-blue); color:#fff; }
.rv-btn-ghost{ background:#fff; color:var(--rv-ink); border-color:var(--rv-line-3); }
.rv-btn-ghost:hover{ border-color:var(--rv-blue); color:var(--rv-blue); }
.rv-btn-quiet{ background:transparent; color:var(--rv-blue); border-color:transparent; text-decoration:underline; text-underline-offset:3px; padding:0 6px; }
.rv-btn-quiet:hover{ color:var(--rv-ink); }
.rv-btn-danger{ background:var(--rv-alert); color:#fff; border-color:var(--rv-alert); }
.rv-btn-danger:hover{ background:#8f3624; border-color:#8f3624; color:#fff; }
.rv-btn-on-dark{ background:transparent; color:#fff; border-color:rgba(255,255,255,.34); }
.rv-btn-on-dark:hover{ background:rgba(255,255,255,.12); color:#fff; }
.rv-btn-lg{ min-height:60px; font-size:17px; padding:0 30px; }
.rv-btn-xl{ min-height:68px; font-size:19px; padding:0 32px; }
.rv-btn-sm{ min-height:38px; font-size:13.5px; padding:0 14px; }
.rv-btn-block{ width:100%; }
.rv-btn-icon{ padding:0; width:var(--rv-tap); }

/* ── Cards & panels ─────────────────────────────────────────────────────── */
.rv-card{ background:var(--rv-surface); border:1px solid var(--rv-line); }
.rv-card-pad{ padding:24px; }
.rv-card-hd{ padding:16px 24px; border-bottom:1px solid var(--rv-line-2); display:flex; align-items:center; gap:16px; flex-wrap:wrap; }
.rv-card-bd{ padding:24px; }
.rv-card-ft{ padding:16px 24px; border-top:1px solid var(--rv-line-2); background:#fbfdfe; }
.rv-card-raised{ box-shadow:var(--rv-shadow); }
.rv-panel{ background:var(--rv-tint); padding:20px; }
.rv-note{ border-left:3px solid var(--rv-sky); padding:12px 0 12px 16px; }
.rv-callout{ display:flex; gap:11px; align-items:flex-start; background:var(--rv-tint); padding:13px 15px; font-size:13.5px; line-height:1.5; color:var(--rv-ink); }
.rv-callout svg{ flex:none; margin-top:2px; }
.rv-callout-ok{ background:var(--rv-ok-bg); color:var(--rv-ok-fg); }
.rv-callout-warn{ background:var(--rv-warn-bg); color:var(--rv-warn-fg); }
.rv-callout-alert{ background:var(--rv-alert-bg); color:var(--rv-alert-fg); }

/* ── Status badges ──────────────────────────────────────────────────────── */
.rv-status{ display:inline-flex; align-items:center; gap:7px; padding:5px 11px; font-size:12.5px; font-weight:700; white-space:nowrap; }
.rv-status::before{ content:''; width:7px; height:7px; border-radius:50%; background:currentColor; flex:none; }
.rv-status-review{  background:var(--rv-warn-bg);  color:var(--rv-warn-fg); }
.rv-status-query{   background:var(--rv-alert-bg); color:var(--rv-alert-fg); }
.rv-status-ok{      background:var(--rv-ok-bg);    color:var(--rv-ok-fg); }
.rv-status-paid{    background:var(--rv-info-bg);  color:var(--rv-info-fg); }
.rv-status-neutral{ background:#eef2f5;            color:var(--rv-ink-3); }

/* small tag/chip */
.rv-tag{ display:inline-block; padding:4px 9px; font-size:11.5px; font-weight:700; background:var(--rv-tint); color:var(--rv-blue); }
.rv-chip{ display:inline-flex; align-items:center; gap:7px; min-height:42px; padding:0 15px; border:1.5px solid var(--rv-line-3); background:#fff; color:var(--rv-ink); font-size:14px; font-weight:600; cursor:pointer; }
.rv-chip:hover{ border-color:var(--rv-blue); }
.rv-chip.is-on{ border-color:var(--rv-blue); background:var(--rv-blue); color:#fff; }

/* ── Stat tiles ─────────────────────────────────────────────────────────── */
.rv-stats{ display:grid; gap:1px; background:var(--rv-line); border:1px solid var(--rv-line); }
.rv-stats-3{ grid-template-columns:repeat(3,1fr); }
.rv-stats-4{ grid-template-columns:repeat(4,1fr); }
.rv-stat{ background:#fff; padding:20px 22px; }
.rv-stat-k{ font-size:11px; font-weight:700; letter-spacing:.14em; text-transform:uppercase; color:var(--rv-ink-3); }
.rv-stat-v{ font-size:34px; font-weight:900; letter-spacing:-.025em; color:var(--rv-blue); line-height:1.05; margin-top:10px; font-variant-numeric:tabular-nums; }
.rv-stat-v.is-warn{ color:var(--rv-warn); }
.rv-stat-v.is-ok{ color:var(--rv-ok); }
.rv-stat-sub{ font-size:12.5px; font-weight:500; color:var(--rv-ink-3); margin-top:8px; }
.rv-stat-row{ display:flex; align-items:flex-end; justify-content:space-between; gap:12px; }
.rv-spark{ flex:none; }

/* ── Forms ──────────────────────────────────────────────────────────────── */
.rv-field{ margin-bottom:20px; }
.rv-label{ display:block; font-size:11px; font-weight:700; letter-spacing:.13em; text-transform:uppercase; color:var(--rv-ink-3); margin-bottom:8px; }
.rv-label .rv-req{ color:var(--rv-alert); margin-left:3px; }
.rv-hint{ font-size:13px; color:var(--rv-ink-3); margin-top:7px; line-height:1.5; }
.rv-input, .rv-select, .rv-textarea{
  width:100%; min-height:52px; padding:12px 15px;
  font-family:var(--rv-font); font-size:16px; font-weight:500; color:var(--rv-ink);
  background:#fff; border:1.5px solid var(--rv-line-3); border-radius:0;
  transition:border-color .16s, box-shadow .16s;
}
.rv-textarea{ min-height:120px; resize:vertical; line-height:1.55; }
.rv-input::placeholder, .rv-textarea::placeholder{ color:#9db1bd; font-weight:400; }
.rv-input:focus, .rv-select:focus, .rv-textarea:focus{ outline:none; border-color:var(--rv-blue); box-shadow:0 0 0 3px rgba(120,191,226,.32); }
.rv-input[readonly]{ background:#f4f8fa; color:var(--rv-ink-2); }
.rv-input.is-error, .rv-select.is-error, .rv-textarea.is-error{ border-color:var(--rv-alert); }
.rv-error{ font-size:13px; font-weight:600; color:var(--rv-alert); margin-top:7px; }
.rv-select{
  appearance:none; -webkit-appearance:none; padding-right:44px; cursor:pointer;
  background-image:url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%235f7787' stroke-width='2.2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E");
  background-repeat:no-repeat; background-position:right 13px center; background-size:20px;
}
.rv-grid-2{ display:grid; grid-template-columns:1fr 1fr; gap:0 20px; }
.rv-grid-3{ display:grid; grid-template-columns:repeat(3,1fr); gap:0 20px; }
@media (max-width:820px){ .rv-grid-2, .rv-grid-3{ grid-template-columns:1fr; } }

/* Option cards (radio / checkbox as big tappable card) */
.rv-options{ display:flex; flex-direction:column; gap:10px; }
.rv-options-row{ flex-direction:row; flex-wrap:wrap; }
.rv-option{
  position:relative; display:flex; gap:13px; align-items:flex-start;
  min-height:56px; padding:15px 16px; cursor:pointer;
  border:1.5px solid var(--rv-line-3); background:#fff; transition:border-color .14s, background .14s;
}
.rv-options-row .rv-option{ flex:1 1 160px; align-items:center; }
.rv-option:hover{ border-color:var(--rv-sky); }
.rv-option input{ position:absolute; opacity:0; width:0; height:0; }
.rv-option-dot{
  flex:none; width:22px; height:22px; border-radius:50%; border:2px solid var(--rv-line-3);
  background:#fff; margin-top:1px; display:flex; align-items:center; justify-content:center; transition:border-color .14s, background .14s;
}
.rv-option-dot.is-box{ border-radius:0; }
.rv-option-dot::after{ content:''; width:8px; height:8px; border-radius:50%; background:#fff; transform:scale(0); transition:transform .14s; }
.rv-option-dot.is-box::after{ border-radius:0; width:10px; height:10px; }
.rv-option input:checked ~ .rv-option-dot{ border-color:var(--rv-blue); background:var(--rv-blue); }
.rv-option input:checked ~ .rv-option-dot::after{ transform:scale(1); }
.rv-option:has(input:checked){ border-color:var(--rv-blue); background:var(--rv-tint-2); }
.rv-option input:focus-visible ~ .rv-option-dot{ outline:3px solid var(--rv-sky); outline-offset:2px; }
.rv-option-t{ font-size:16.5px; font-weight:700; line-height:1.25; }
.rv-option-la{ font-size:13px; font-weight:500; font-style:italic; color:var(--rv-ink-3); margin-top:2px; }
.rv-option-h{ font-size:13px; font-weight:400; color:var(--rv-ink-2); margin-top:6px; line-height:1.45; }

/* Inline consent checkbox */
.rv-check{ display:flex; gap:12px; align-items:flex-start; cursor:pointer; font-size:14px; line-height:1.55; color:var(--rv-ink-2); }
.rv-check input{ position:absolute; opacity:0; width:0; height:0; }
.rv-check-box{ flex:none; width:22px; height:22px; border:2px solid var(--rv-line-3); background:#fff; margin-top:1px; display:flex; align-items:center; justify-content:center; }
.rv-check-box svg{ opacity:0; transform:scale(.6); transition:opacity .14s, transform .14s; }
.rv-check input:checked ~ .rv-check-box{ border-color:var(--rv-blue); background:var(--rv-blue); }
.rv-check input:checked ~ .rv-check-box svg{ opacity:1; transform:scale(1); }
.rv-check input:focus-visible ~ .rv-check-box{ outline:3px solid var(--rv-sky); outline-offset:2px; }

/* Segmented control */
.rv-seg{ display:inline-flex; border:1.5px solid var(--rv-line-3); background:#fff; }
.rv-seg > *{ min-height:44px; padding:0 16px; border:0; background:transparent; font-family:var(--rv-font);
  font-size:14px; font-weight:700; color:var(--rv-ink-2); cursor:pointer; text-decoration:none; display:inline-flex; align-items:center; }
.rv-seg > * + *{ border-left:1px solid var(--rv-line-3); }
.rv-seg > .is-on{ background:var(--rv-blue); color:#fff; }

/* ── Tables ─────────────────────────────────────────────────────────────── */
.rv-tablewrap{ overflow-x:auto; -webkit-overflow-scrolling:touch; }
.rv-table{ width:100%; border-collapse:collapse; font-size:14.5px; }
.rv-table th{
  text-align:left; font-size:10.5px; font-weight:700; letter-spacing:.13em; text-transform:uppercase;
  color:var(--rv-ink-3); padding:12px 14px; border-bottom:1px solid var(--rv-line); white-space:nowrap; background:#fbfdfe;
}
.rv-table td{ padding:14px; border-bottom:1px solid var(--rv-line-2); vertical-align:middle; }
.rv-table tbody tr:hover{ background:#f7fbfd; }
.rv-table .rv-td-num{ text-align:right; font-variant-numeric:tabular-nums; }
.rv-table-compact td{ padding:9px 14px; font-size:13.5px; }
.rv-table a{ font-weight:700; }
.rv-empty{ padding:56px 24px; text-align:center; color:var(--rv-ink-3); }
.rv-empty-t{ font-size:18px; font-weight:700; color:var(--rv-ink); margin-bottom:8px; }

/* ── Public header ──────────────────────────────────────────────────────── */
.rv-head{ background:#fff; border-bottom:1px solid var(--rv-line); position:sticky; top:0; z-index:600; }
.rv-head-in{ display:flex; align-items:center; gap:26px; min-height:74px; }
.rv-brand{ display:flex; align-items:center; gap:12px; text-decoration:none; flex:none; }
.rv-brand img{ height:40px; width:auto; object-fit:contain; }
.rv-brand-t{ display:flex; flex-direction:column; line-height:1.15; }
.rv-brand-t b{ font-size:15px; font-weight:700; color:var(--rv-ink); }
.rv-brand-t span{ font-size:10px; font-weight:700; letter-spacing:.13em; text-transform:uppercase; color:var(--rv-blue); }
.rv-nav{ display:flex; align-items:center; gap:4px; margin-left:auto; }
.rv-nav a{ padding:10px 13px; font-size:14.5px; font-weight:600; color:var(--rv-ink-2); text-decoration:none; }
.rv-nav a:hover{ color:var(--rv-blue); }
.rv-nav a.is-on{ color:var(--rv-blue); box-shadow:inset 0 -3px 0 var(--rv-blue); }
.rv-head-tools{ display:flex; align-items:center; gap:12px; flex:none; }
.rv-lang{ display:flex; border:1px solid var(--rv-line-3); }
.rv-lang a{ padding:9px 10px; font-size:11.5px; font-weight:700; letter-spacing:.05em; color:var(--rv-ink-2); text-decoration:none; }
.rv-lang a + a{ border-left:1px solid var(--rv-line-3); }
.rv-lang a.is-on{ background:var(--rv-blue); color:#fff; }
.rv-burger{ display:none; width:46px; height:46px; border:1px solid var(--rv-line-3); background:#fff; cursor:pointer; align-items:center; justify-content:center; }

@media (max-width:1080px){
  .rv-burger{ display:inline-flex; }
  .rv-nav{ display:none; position:absolute; left:0; right:0; top:100%; background:#fff;
    border-bottom:1px solid var(--rv-line); flex-direction:column; align-items:stretch; padding:8px 16px 16px; gap:0; box-shadow:var(--rv-shadow-sm); }
  .rv-nav.is-open{ display:flex; }
  .rv-nav a{ padding:14px 6px; border-bottom:1px solid var(--rv-line-2); font-size:16px; }
  .rv-nav a.is-on{ box-shadow:none; }
}

/* ── Public footer ──────────────────────────────────────────────────────── */
.rv-foot{ background:var(--rv-navy); color:#fff; margin-top:64px; }
.rv-foot-in{ padding:44px 0 36px; }
.rv-foot h2{ font-size:11px; font-weight:700; letter-spacing:.15em; text-transform:uppercase; color:var(--rv-sky); margin:0 0 16px; }
.rv-foot-logos{ display:flex; flex-wrap:wrap; align-items:center; gap:22px; background:#fff; padding:16px 20px; }
.rv-foot-logos img{ object-fit:contain; }
.rv-foot-cols{ display:grid; grid-template-columns:1.4fr 1fr; gap:40px; align-items:start; }
.rv-foot-links{ display:flex; flex-wrap:wrap; gap:16px; margin-top:22px; }
.rv-foot-links a{ font-size:13.5px; font-weight:500; color:rgba(255,255,255,.84); text-decoration:none; border-bottom:1px solid rgba(120,191,226,.5); padding-bottom:1px; }
.rv-foot-links a:hover{ color:#fff; border-color:var(--rv-sky); }
.rv-foot-addr{ font-size:12.5px; color:rgba(255,255,255,.55); margin-top:22px; line-height:1.6; }
.rv-foot-qr{ text-align:right; }
.rv-foot-qr img{ width:112px; }
@media (max-width:820px){ .rv-foot-cols{ grid-template-columns:1fr; gap:28px; } .rv-foot-qr{ text-align:left; } }

/* Sticky mobile action bar (public) */
.rv-tabbar{ display:none; }
@media (max-width:820px){
  .rv-tabbar{ display:flex; position:fixed; left:0; right:0; bottom:0; z-index:700;
    background:#fff; border-top:1px solid var(--rv-line); box-shadow:0 -4px 18px rgba(30,53,71,.10); }
  .rv-tabbar a{ flex:1; min-height:60px; display:flex; flex-direction:column; align-items:center; justify-content:center; gap:3px;
    font-size:11px; font-weight:700; color:var(--rv-ink-3); text-decoration:none; padding:6px 4px; }
  .rv-tabbar a.is-on{ color:var(--rv-blue); }
  .rv-tabbar a svg{ display:block; }
  body.rv{ padding-bottom:60px; }
}

/* ── Hero ───────────────────────────────────────────────────────────────── */
.rv-hero{ position:relative; min-height:560px; display:flex; align-items:flex-end; overflow:hidden; }
.rv-hero-img{ position:absolute; inset:0; width:100%; height:100%; object-fit:cover; }
.rv-hero::after{ content:''; position:absolute; inset:0;
  background:linear-gradient(180deg,rgba(18,34,46,.70) 0%,rgba(18,34,46,.26) 40%,rgba(18,34,46,.88) 100%); }
.rv-hero-in{ position:relative; z-index:2; width:100%; padding:80px 0 56px; }
.rv-hero h1{ margin:0; font-size:clamp(38px,5.6vw,68px); line-height:1.02; font-weight:900; letter-spacing:-.025em; color:#fff; max-width:16ch; text-wrap:balance; }
.rv-hero p{ margin:18px 0 0; font-size:clamp(16px,1.5vw,19px); line-height:1.5; color:rgba(255,255,255,.92); max-width:56ch; font-weight:400; text-wrap:pretty; }
.rv-hero .rv-eyebrow{ color:var(--rv-sky); margin-bottom:14px; }

/* Action card that overlaps the hero */
.rv-actioncard{ position:relative; z-index:3; margin-top:-70px; }
.rv-actioncard-in{ background:#fff; border:1px solid var(--rv-line); box-shadow:var(--rv-shadow);
  display:grid; grid-template-columns:1.25fr 1fr; }
.rv-actioncard-main{ padding:30px 32px; border-right:1px solid var(--rv-line-2); }
.rv-actioncard-side{ padding:30px 32px; }
.rv-actioncard-side a{ display:flex; align-items:center; justify-content:space-between; gap:16px;
  padding:15px 0; border-bottom:1px solid var(--rv-line-2); text-decoration:none; color:var(--rv-ink); }
.rv-actioncard-side a:last-child{ border-bottom:0; }
.rv-actioncard-side a:hover .rv-al-t{ color:var(--rv-blue); }
.rv-al-t{ font-size:16px; font-weight:700; }
.rv-al-s{ font-size:13px; font-weight:500; color:var(--rv-ink-3); margin-top:2px; }
.rv-ticks{ display:flex; flex-wrap:wrap; gap:18px; margin-top:16px; }
.rv-tick{ display:flex; align-items:center; gap:8px; font-size:13.5px; font-weight:600; color:var(--rv-ink-2); }
@media (max-width:900px){
  .rv-actioncard-in{ grid-template-columns:1fr; }
  .rv-actioncard-main{ border-right:0; border-bottom:1px solid var(--rv-line-2); }
  .rv-hero{ min-height:460px; }
  .rv-actioncard{ margin-top:-40px; }
}

/* Numbered how-to list */
.rv-steps-list{ margin:0; padding:0; list-style:none; }
.rv-steps-list li{ display:flex; gap:16px; padding:16px 0; border-top:1px solid var(--rv-line-2); }
.rv-steps-list li:first-child{ border-top:0; }
.rv-step-n{ flex:none; width:30px; height:30px; border-radius:50%; background:var(--rv-tint); color:var(--rv-blue);
  font-size:13.5px; font-weight:700; display:flex; align-items:center; justify-content:center; }
.rv-step-t{ font-size:16.5px; font-weight:700; line-height:1.3; }
.rv-step-b{ font-size:14px; font-weight:400; color:var(--rv-ink-3); line-height:1.5; margin-top:4px; }

/* ── Report flow (guided steps) ─────────────────────────────────────────── */
.rv-flow{ display:grid; grid-template-columns:288px 1fr; min-height:calc(100vh - 74px); align-items:stretch; }
.rv-flow-aside{ background:var(--rv-navy); color:#fff; padding:32px 26px; }
.rv-flow-aside .rv-eyebrow{ color:rgba(201,218,228,.6); }
.rv-flow-main{ background:#fff; border-left:1px solid var(--rv-line); min-width:0; }
.rv-flow-steps{ display:flex; flex-direction:column; gap:2px; margin-top:18px; }
.rv-flow-step{ display:flex; align-items:center; gap:12px; padding:10px 0; background:transparent; border:0; cursor:pointer; text-align:left; width:100%; }
.rv-flow-step-n{ flex:none; width:24px; height:24px; border-radius:50%; background:rgba(255,255,255,.14); color:rgba(255,255,255,.7);
  font-size:11.5px; font-weight:700; display:flex; align-items:center; justify-content:center; }
.rv-flow-step-l{ font-size:14.5px; font-weight:600; color:rgba(201,218,228,.7); }
.rv-flow-step.is-done .rv-flow-step-n{ background:var(--rv-sky); color:var(--rv-navy); }
.rv-flow-step.is-done .rv-flow-step-l{ color:rgba(255,255,255,.9); }
.rv-flow-step.is-on .rv-flow-step-n{ background:#fff; color:var(--rv-navy); }
.rv-flow-step.is-on .rv-flow-step-l{ color:#fff; font-weight:700; }
.rv-flow-aside-ft{ border-top:1px solid rgba(255,255,255,.14); padding-top:18px; margin-top:28px; }
.rv-flow-aside-ft b{ font-size:13.5px; font-weight:600; color:#fff; line-height:1.45; display:block; }
.rv-flow-aside-ft p{ margin:7px 0 0; font-size:13px; line-height:1.55; color:rgba(201,218,228,.72); font-weight:400; }

.rv-flow-bar{ position:sticky; top:74px; z-index:400; background:#fff; border-bottom:1px solid var(--rv-line-2); padding:14px 0 0; }
.rv-flow-bar-in{ display:flex; align-items:center; gap:10px; padding:0 26px 12px; }
.rv-flow-bar-k{ font-size:10.5px; font-weight:700; letter-spacing:.13em; text-transform:uppercase; color:var(--rv-ink-3); }
.rv-flow-bar-t{ font-size:17px; font-weight:700; letter-spacing:-.008em; margin-top:2px; }
.rv-flow-draft{ flex:none; display:flex; align-items:center; gap:6px; padding:7px 11px; background:var(--rv-ok-bg); color:var(--rv-ok-fg); font-size:11px; font-weight:700; }
.rv-flow-bars{ display:flex; gap:3px; padding:0 26px 13px; }
.rv-flow-bars i{ flex:1; height:5px; background:var(--rv-line); border-radius:3px; transition:background .3s; }
.rv-flow-bars i.is-done{ background:var(--rv-sky); }
.rv-flow-bars i.is-on{ background:var(--rv-blue); }
.rv-flow-body{ padding:34px 26px 40px; max-width:760px; }
.rv-flow-body h2{ font-size:clamp(25px,3vw,31px); font-weight:900; line-height:1.1; letter-spacing:-.022em; }
.rv-flow-body > p{ margin:12px 0 0; font-size:16.5px; line-height:1.5; color:var(--rv-ink-2); font-weight:400; text-wrap:pretty; }
.rv-flow-foot{ position:sticky; bottom:0; background:#fff; border-top:1px solid var(--rv-line); padding:16px 26px;
  display:flex; align-items:center; gap:14px; box-shadow:0 -4px 18px rgba(30,53,71,.06); }
.rv-flow-pane{ animation:rvIn .28s ease-out; }
@keyframes rvIn{ from{ opacity:0; transform:translateY(10px); } to{ opacity:1; transform:none; } }
@media (max-width:1080px){
  .rv-flow{ grid-template-columns:1fr; min-height:0; }
  .rv-flow-aside{ display:none; }
  .rv-flow-main{ border-left:0; }
  .rv-flow-body{ padding:24px 20px 30px; }
  .rv-flow-bar-in, .rv-flow-bars{ padding-left:20px; padding-right:20px; }
  .rv-flow-foot{ padding:14px 20px; position:sticky; bottom:0; }
  body.rv.rv-in-flow{ padding-bottom:0; }
  body.rv.rv-in-flow .rv-tabbar{ display:none; }
}

/* Photo dropzone */
.rv-drop{ display:grid; grid-template-columns:1fr 1fr; gap:12px; margin-top:22px; }
.rv-drop button, .rv-drop label{ min-height:150px; border:2px dashed #a9c6d8; background:var(--rv-tint-2);
  cursor:pointer; display:flex; flex-direction:column; align-items:center; justify-content:center; gap:10px;
  font-size:15px; font-weight:700; color:var(--rv-blue); transition:border-color .16s, background .16s; }
.rv-drop label.is-plain{ border:1.5px solid var(--rv-line-3); background:#fff; color:var(--rv-ink-2); }
.rv-drop label:hover{ border-color:var(--rv-blue); background:#eef7fc; }
.rv-thumbs{ margin-top:18px; }
.rv-thumb{ display:flex; align-items:center; gap:14px; border:1px solid var(--rv-line); padding:11px; margin-bottom:10px; background:#fff; }
.rv-thumb img{ width:72px; height:58px; object-fit:cover; flex:none; }
.rv-thumb-n{ font-size:14px; font-weight:700; word-break:break-all; }
.rv-thumb-m{ font-size:12px; font-weight:500; color:var(--rv-ok); margin-top:2px; }
.rv-thumb button{ flex:none; width:44px; height:44px; border:0; background:transparent; cursor:pointer; color:var(--rv-ink-3); font-size:22px; line-height:1; }
.rv-thumb button:hover{ color:var(--rv-alert); }

/* Map */
.rv-map{ width:100%; height:400px; background:#dfe8ee; border:1px solid var(--rv-line); }
.rv-map-sm{ height:280px; }
.rv-map-lg{ height:560px; }
.rv-maphint{ font-size:13px; color:var(--rv-ink-3); margin-top:8px; }
.rv-legend{ display:flex; flex-wrap:wrap; gap:18px; align-items:center; }
.rv-legend span{ display:flex; align-items:center; gap:7px; font-size:12.5px; font-weight:600; color:var(--rv-ink-2); }
.rv-legend i{ width:12px; height:12px; border-radius:50%; display:block; }
.rv-legend i.is-line{ width:22px; height:0; border-top:2px solid var(--rv-blue); border-radius:0; }

/* Plausibility meter */
.rv-plaus{ margin-top:18px; border:1px solid var(--rv-line); background:#fff; padding:16px 18px; }
.rv-plaus-hd{ display:flex; align-items:center; justify-content:space-between; gap:12px; }
.rv-plaus-t{ font-size:13px; font-weight:700; }
.rv-plaus-bar{ height:7px; background:var(--rv-line-2); margin-top:12px; overflow:hidden; }
.rv-plaus-bar i{ display:block; height:100%; width:0; background:var(--rv-ok); transition:width .35s ease, background .35s; }
.rv-plaus-msg{ font-size:13px; color:var(--rv-ink-2); margin-top:10px; line-height:1.5; }

/* ── Admin shell ────────────────────────────────────────────────────────── */
.rv-abar{ background:var(--rv-navy); color:#fff; position:sticky; top:0; z-index:800; }
.rv-abar-in{ display:flex; align-items:center; gap:20px; min-height:60px; padding:0 24px; }
.rv-abrand{ display:flex; align-items:center; gap:11px; text-decoration:none; flex:none; }
.rv-abrand img{ height:30px; filter:brightness(0) invert(1); }
.rv-abrand b{ font-size:15px; font-weight:700; color:#fff; }
.rv-abrand span{ font-size:10.5px; font-weight:700; letter-spacing:.13em; text-transform:uppercase; color:var(--rv-sky); }
.rv-anav{ display:flex; align-items:center; gap:2px; margin-left:14px; flex:1; min-width:0; overflow-x:auto; scrollbar-width:none; }
.rv-anav::-webkit-scrollbar{ display:none; }
.rv-anav a{ padding:19px 13px; font-size:14.5px; font-weight:600; color:rgba(201,218,228,.8); text-decoration:none; white-space:nowrap; }
.rv-anav a:hover{ color:#fff; }
.rv-anav a.is-on{ color:#fff; box-shadow:inset 0 -3px 0 var(--rv-sky); }
.rv-anav-badge{ display:inline-flex; align-items:center; justify-content:center; min-width:19px; height:19px; padding:0 5px;
  background:var(--rv-alert); color:#fff; font-size:11px; font-weight:700; border-radius:10px; margin-left:7px; }
.rv-atools{ display:flex; align-items:center; gap:12px; flex:none; }
.rv-asearch{ display:flex; align-items:center; gap:9px; background:rgba(255,255,255,.10); border:1px solid rgba(255,255,255,.16); padding:0 12px; min-height:38px; min-width:230px; }
.rv-asearch input{ background:transparent; border:0; color:#fff; font-family:var(--rv-font); font-size:13.5px; font-weight:500; width:100%; outline:none; }
.rv-asearch input::placeholder{ color:rgba(201,218,228,.6); }
.rv-avatar{ width:34px; height:34px; background:var(--rv-sky); color:var(--rv-navy); font-size:12.5px; font-weight:700;
  display:flex; align-items:center; justify-content:center; flex:none; text-decoration:none; }
.rv-alogout{ background:transparent; border:1px solid rgba(255,255,255,.26); color:rgba(201,218,228,.92);
  font-family:var(--rv-font); font-size:13px; font-weight:700; padding:9px 12px; cursor:pointer; }
.rv-alogout:hover{ background:rgba(255,255,255,.12); color:#fff; }

.rv-ahead{ background:#fff; border-bottom:1px solid var(--rv-line); }
.rv-ahead-in{ display:flex; align-items:center; gap:18px; flex-wrap:wrap; padding:18px 24px; }
.rv-ahead h1{ font-size:25px; font-weight:900; letter-spacing:-.02em; }
.rv-ahead-sub{ font-size:13px; font-weight:600; color:var(--rv-ink-3); }
.rv-ahead-actions{ margin-left:auto; display:flex; gap:10px; flex-wrap:wrap; }
.rv-amain{ padding:24px; }
.rv-amain > * + *{ margin-top:24px; }

.rv-adrawer-back{ position:fixed; inset:0; background:rgba(18,34,46,.42); z-index:900; opacity:0; pointer-events:none; transition:opacity .2s; }
.rv-adrawer-back.is-open{ opacity:1; pointer-events:auto; }
.rv-adrawer{ position:fixed; top:0; right:0; bottom:0; width:min(520px,100%); background:#fff; z-index:901;
  transform:translateX(100%); transition:transform .26s cubic-bezier(.4,0,.2,1); display:flex; flex-direction:column; box-shadow:-8px 0 40px rgba(18,34,46,.22); }
.rv-adrawer.is-open{ transform:none; }
.rv-adrawer-hd{ padding:20px 24px; border-bottom:1px solid var(--rv-line); display:flex; align-items:flex-start; gap:14px; }
.rv-adrawer-bd{ flex:1; overflow-y:auto; padding:22px 24px; }
.rv-adrawer-ft{ padding:16px 24px; border-top:1px solid var(--rv-line); display:flex; gap:10px; flex-wrap:wrap; }

.rv-dl{ display:grid; grid-template-columns:auto 1fr; gap:10px 20px; font-size:14px; }
.rv-dl dt{ font-size:11px; font-weight:700; letter-spacing:.11em; text-transform:uppercase; color:var(--rv-ink-3); padding-top:2px; }
.rv-dl dd{ margin:0; font-weight:600; }

/* Filter segments with counts */
.rv-filters{ display:flex; gap:2px; flex-wrap:wrap; }
.rv-filters a{ display:inline-flex; align-items:center; gap:8px; padding:10px 15px; font-size:13.5px; font-weight:700;
  color:var(--rv-ink-2); text-decoration:none; border:1px solid var(--rv-line-3); background:#fff; }
.rv-filters a:hover{ border-color:var(--rv-blue); color:var(--rv-blue); }
.rv-filters a.is-on{ background:var(--rv-blue); border-color:var(--rv-blue); color:#fff; }
.rv-filters a b{ font-variant-numeric:tabular-nums; opacity:.75; font-weight:700; }

/* ── Toast / flash ──────────────────────────────────────────────────────── */
.rv-flash{ display:flex; gap:12px; align-items:flex-start; padding:15px 18px; font-size:14.5px; font-weight:600; line-height:1.5; }
.rv-flash-ok{ background:var(--rv-ok-bg); color:var(--rv-ok-fg); border-left:3px solid var(--rv-ok); }
.rv-flash-err{ background:var(--rv-alert-bg); color:var(--rv-alert-fg); border-left:3px solid var(--rv-alert); }
.rv-flash-info{ background:var(--rv-tint); color:var(--rv-info-fg); border-left:3px solid var(--rv-blue); }

/* ── Pagination ─────────────────────────────────────────────────────────── */
.rv-pager{ display:flex; align-items:center; gap:4px; flex-wrap:wrap; }
.rv-pager .page-item .page-link,
.rv-pager a, .rv-pager span{ min-width:42px; min-height:42px; display:inline-flex; align-items:center; justify-content:center;
  padding:0 12px; border:1px solid var(--rv-line-3); background:#fff; color:var(--rv-ink-2);
  font-size:14px; font-weight:700; text-decoration:none; border-radius:0!important; }
.rv-pager .active .page-link, .rv-pager .active span{ background:var(--rv-blue); border-color:var(--rv-blue); color:#fff; }
.rv-pager .disabled .page-link, .rv-pager .disabled span{ opacity:.4; }
.rv-pager nav > div:first-child{ display:none; }  /* laravel mobile duplicate */
.rv-pager ul{ display:flex; gap:4px; list-style:none; margin:0; padding:0; flex-wrap:wrap; }

/* ==========================================================================
   Bootstrap / legacy compatibility layer
   Makes the not-yet-rebuilt views inherit the revamp look automatically.
   ========================================================================== */
.rv .container, .rv .container-xxl, .rv-admin .container, .rv-admin .container-fluid{ max-width:var(--rv-shell); }

.rv .form-control, .rv .form-select, .rv-admin .form-control, .rv-admin .form-select,
.rv input[type=text], .rv input[type=email], .rv input[type=password], .rv input[type=number],
.rv input[type=date], .rv input[type=tel], .rv input[type=search], .rv textarea, .rv select,
.rv-admin input[type=text], .rv-admin input[type=email], .rv-admin input[type=password],
.rv-admin input[type=number], .rv-admin input[type=date], .rv-admin input[type=tel],
.rv-admin input[type=search], .rv-admin textarea, .rv-admin select{
  font-family:var(--rv-font); font-size:15.5px; font-weight:500; color:var(--rv-ink);
  min-height:50px; padding:11px 14px; background:#fff;
  border:1.5px solid var(--rv-line-3); border-radius:0; box-shadow:none;
}
.rv textarea, .rv-admin textarea{ min-height:110px; }
.rv .form-control:focus, .rv .form-select:focus, .rv-admin .form-control:focus, .rv-admin .form-select:focus,
.rv input:focus, .rv textarea:focus, .rv select:focus,
.rv-admin input:focus, .rv-admin textarea:focus, .rv-admin select:focus{
  border-color:var(--rv-blue); box-shadow:0 0 0 3px rgba(120,191,226,.32); outline:none;
}
.rv .form-label, .rv-admin .form-label, .rv label.font-weight-bold, .rv-admin label.font-weight-bold{
  font-size:11px; font-weight:700; letter-spacing:.13em; text-transform:uppercase; color:var(--rv-ink-3); margin-bottom:8px;
}
.rv .form-group, .rv-admin .form-group{ margin-bottom:20px; }
.rv .form-text, .rv-admin .form-text{ font-size:13px; color:var(--rv-ink-3); }

.rv .btn, .rv-admin .btn{
  font-family:var(--rv-font); font-size:15px; font-weight:700; border-radius:0;
  min-height:48px; padding:0 22px; display:inline-flex; align-items:center; justify-content:center; gap:9px;
  border-width:1.5px; box-shadow:none!important;
}
.rv .btn-sm, .rv-admin .btn-sm{ min-height:38px; font-size:13.5px; padding:0 14px; }
.rv .btn-lg, .rv-admin .btn-lg{ min-height:58px; font-size:17px; padding:0 28px; }
.rv .btn-primary, .rv-admin .btn-primary{ background:var(--rv-blue); border-color:var(--rv-blue); color:#fff; }
.rv .btn-primary:hover, .rv-admin .btn-primary:hover{ background:var(--rv-ink); border-color:var(--rv-ink); }
.rv .btn-secondary, .rv-admin .btn-secondary{ background:var(--rv-blue); border-color:var(--rv-blue); color:#fff; }
.rv .btn-secondary:hover, .rv-admin .btn-secondary:hover{ background:var(--rv-ink); border-color:var(--rv-ink); }
.rv .btn-success, .rv-admin .btn-success{ background:var(--rv-ok); border-color:var(--rv-ok); color:#fff; }
.rv .btn-danger, .rv-admin .btn-danger{ background:var(--rv-alert); border-color:var(--rv-alert); color:#fff; }
.rv .btn-warning, .rv-admin .btn-warning{ background:var(--rv-warn); border-color:var(--rv-warn); color:#fff; }
.rv .btn-info, .rv-admin .btn-info{ background:var(--rv-sky); border-color:var(--rv-sky); color:var(--rv-navy); }
.rv .btn-light, .rv-admin .btn-light,
.rv .btn-white-primary, .rv-admin .btn-white-primary{ background:#fff; border-color:var(--rv-line-3); color:var(--rv-ink); }
.rv .btn-outline-primary, .rv-admin .btn-outline-primary{ background:transparent; border-color:var(--rv-blue); color:var(--rv-blue); }
.rv .btn-outline-primary:hover, .rv-admin .btn-outline-primary:hover{ background:var(--rv-blue); color:#fff; }
.rv .btn-outline-secondary, .rv-admin .btn-outline-secondary{ background:transparent; border-color:var(--rv-line-3); color:var(--rv-ink-2); }
.rv .btn-outline-danger, .rv-admin .btn-outline-danger{ background:transparent; border-color:var(--rv-alert); color:var(--rv-alert); }

.rv .card, .rv-admin .card{ border:1px solid var(--rv-line); border-radius:0; box-shadow:none; background:#fff; }
.rv .card-header, .rv-admin .card-header{ background:#fbfdfe; border-bottom:1px solid var(--rv-line-2); font-weight:700; padding:16px 20px; }
.rv .card-body, .rv-admin .card-body{ padding:22px; }
.rv .shadow, .rv-admin .shadow{ box-shadow:var(--rv-shadow-sm)!important; }
.rv .rounded, .rv-admin .rounded, .rv .border-radius, .rv-admin .border-radius{ border-radius:0!important; }

.rv .table, .rv-admin .table{ font-size:14.5px; color:var(--rv-ink); border-color:var(--rv-line-2); margin-bottom:0; }
.rv .table > thead th, .rv-admin .table > thead th{
  font-size:10.5px; font-weight:700; letter-spacing:.13em; text-transform:uppercase;
  color:var(--rv-ink-3); background:#fbfdfe; border-bottom:1px solid var(--rv-line); padding:12px 14px; white-space:nowrap;
}
.rv .table > tbody td, .rv-admin .table > tbody td{ padding:13px 14px; border-color:var(--rv-line-2); vertical-align:middle; }
.rv .table-striped > tbody > tr:nth-of-type(odd) > *, .rv-admin .table-striped > tbody > tr:nth-of-type(odd) > *{ background:#fbfdfe; }
.rv .table-hover > tbody > tr:hover > *, .rv-admin .table-hover > tbody > tr:hover > *{ background:#f2f8fc; }

.rv .badge, .rv-admin .badge{ border-radius:0; font-weight:700; font-size:11.5px; padding:6px 10px; }
.rv .alert, .rv-admin .alert{ border-radius:0; border:0; border-left:3px solid var(--rv-blue); background:var(--rv-tint);
  color:var(--rv-info-fg); font-size:14.5px; font-weight:600; padding:15px 18px; }
.rv .alert-success, .rv-admin .alert-success{ background:var(--rv-ok-bg); color:var(--rv-ok-fg); border-left-color:var(--rv-ok); }
.rv .alert-danger, .rv-admin .alert-danger{ background:var(--rv-alert-bg); color:var(--rv-alert-fg); border-left-color:var(--rv-alert); }
.rv .alert-warning, .rv-admin .alert-warning{ background:var(--rv-warn-bg); color:var(--rv-warn-fg); border-left-color:var(--rv-warn); }

.rv .modal-content, .rv-admin .modal-content{ border-radius:0; border:0; }
.rv .modal-header, .rv-admin .modal-header{ border-bottom:1px solid var(--rv-line-2); }
.rv .modal-footer, .rv-admin .modal-footer{ border-top:1px solid var(--rv-line-2); }
.rv .nav-tabs, .rv-admin .nav-tabs{ border-bottom:1px solid var(--rv-line); }
.rv .nav-tabs .nav-link, .rv-admin .nav-tabs .nav-link{ border:0; border-radius:0; color:var(--rv-ink-3);
  font-weight:700; font-size:15px; padding:13px 18px; }
.rv .nav-tabs .nav-link.active, .rv-admin .nav-tabs .nav-link.active{ color:var(--rv-blue); background:transparent;
  box-shadow:inset 0 -3px 0 var(--rv-blue); }

/* DataTables */
.rv-admin .dataTables_wrapper .dataTables_filter input,
.rv-admin .dataTables_wrapper .dataTables_length select{ border:1.5px solid var(--rv-line-3); border-radius:0; min-height:42px; padding:6px 12px; }
.rv-admin .dataTables_wrapper .dataTables_paginate .paginate_button{ border-radius:0!important; border:1px solid var(--rv-line-3)!important;
  padding:8px 14px!important; margin-left:3px; background:#fff!important; color:var(--rv-ink-2)!important; }
.rv-admin .dataTables_wrapper .dataTables_paginate .paginate_button.current{ background:var(--rv-blue)!important;
  border-color:var(--rv-blue)!important; color:#fff!important; }
.rv-admin .dataTables_wrapper .dataTables_info,
.rv-admin .dataTables_wrapper .dataTables_length,
.rv-admin .dataTables_wrapper .dataTables_filter{ font-size:13.5px; color:var(--rv-ink-3); font-weight:600; }

/* Select2 */
.rv .select2-container--default .select2-selection--single,
.rv-admin .select2-container--default .select2-selection--single{ height:50px; border:1.5px solid var(--rv-line-3); border-radius:0; }
.rv .select2-container--default .select2-selection--single .select2-selection__rendered,
.rv-admin .select2-container--default .select2-selection--single .select2-selection__rendered{ line-height:47px; padding-left:14px; color:var(--rv-ink); }
.rv .select2-container--default .select2-selection--single .select2-selection__arrow,
.rv-admin .select2-container--default .select2-selection--single .select2-selection__arrow{ height:48px; }

/* Toastr */
#toast-container > div{ border-radius:0!important; box-shadow:var(--rv-shadow)!important; opacity:1!important;
  font-family:var(--rv-font); font-size:14.5px; font-weight:600; padding:16px 18px 16px 50px!important; }
#toast-container > .toast-success{ background-color:#1f5d43!important; }
#toast-container > .toast-error{ background-color:#a03a24!important; }
#toast-container > .toast-info{ background-color:#275d8c!important; }
#toast-container > .toast-warning{ background-color:#8a5f10!important; }

/* Leaflet tweaks */
.leaflet-container{ font-family:var(--rv-font); }
.rv-mark-label{ background:#fff; border:1px solid var(--rv-line); padding:3px 8px; font-size:12px; font-weight:700;
  color:var(--rv-ink); box-shadow:var(--rv-shadow-sm); white-space:nowrap; }
.rv-divicon{ background:transparent; border:0; }
.rv-bubble{ display:flex; align-items:center; justify-content:center; border-radius:50%; color:#fff;
  font-size:12px; font-weight:700; border:2px solid rgba(255,255,255,.9); box-shadow:0 2px 8px rgba(18,34,46,.35); }
.rv-bubble-release{ background:#4a9ed4; }
.rv-bubble-catch{ background:#b4472f; }

/* Print */
@media print{
  .rv-head, .rv-foot, .rv-tabbar, .rv-abar, .rv-ahead-actions, .rv-flow-foot{ display:none!important; }
  body.rv, body.rv-admin{ background:#fff; }
}

/* Reduced motion */
@media (prefers-reduced-motion:reduce){
  .rv *, .rv-admin *{ animation-duration:.01ms!important; animation-iteration-count:1!important; transition-duration:.01ms!important; }
}

/* ── Responsive visibility helpers (tied to the 1080px nav breakpoint) ──── */
.rv-only-mobile{ display:none!important; }
@media (max-width:1080px){
  .rv-only-desktop{ display:none!important; }
  .rv-only-mobile{ display:block!important; }
  .rv-nav a.rv-only-mobile{ display:block!important; }
}

/* ── Admin theme override: topbar replaces the old sidebar ─────────────── */
.rv-admin .left-side-menu,
.rv-admin .navbar-custom,
.rv-admin .rightbar-overlay,
.rv-admin .footer{ display:none!important; }
.rv-admin #wrapper{ min-height:100vh; }
.rv-admin .content-page{ margin-left:0!important; padding:0!important; min-height:0; }
.rv-admin .content{ padding:0!important; }
.rv-admin .content-page > .content > .container-fluid{ max-width:var(--rv-shell); margin:0 auto; padding:24px; }
.rv-admin .page-title-box{ padding:0 0 18px; background:transparent; border:0; }
.rv-admin .page-title-box .page-title{ font-size:25px; font-weight:900; letter-spacing:-.02em; color:var(--rv-ink); margin:0; }
.rv-admin .page-title-box .breadcrumb{ background:transparent; padding:0; margin:0; font-size:12.5px; font-weight:600; }
.rv-admin .page-title-box .breadcrumb a{ color:var(--rv-ink-3); text-decoration:none; }
.rv-admin .card-box{ background:#fff; border:1px solid var(--rv-line); border-radius:0; box-shadow:none; padding:22px; margin-bottom:24px; }
.rv-admin .header-title{ font-size:16px; font-weight:700; color:var(--rv-ink); letter-spacing:-.01em; }
.rv-admin .text-muted{ color:var(--rv-ink-3)!important; }
.rv-admin .widget-flat{ border:1px solid var(--rv-line); }

/* ==========================================================================
   Link-colour reset for components
   `.rv a` is (0,1,1) and beats plain component classes like `.rv-btn-primary`
   (0,1,0). These rules restore the intended colours at matching specificity.
   ========================================================================== */
.rv a.rv-btn, .rv-admin a.rv-btn,
.rv a.rv-chip, .rv-admin a.rv-chip{ text-decoration:none; }
.rv a.rv-btn, .rv-admin a.rv-btn{ color:var(--rv-ink); }
.rv a.rv-btn-primary, .rv-admin a.rv-btn-primary,
.rv a.rv-btn-danger,  .rv-admin a.rv-btn-danger{ color:#fff; }
.rv a.rv-btn-primary:hover, .rv-admin a.rv-btn-primary:hover,
.rv a.rv-btn-danger:hover,  .rv-admin a.rv-btn-danger:hover{ color:#fff; }
.rv a.rv-btn-secondary, .rv-admin a.rv-btn-secondary,
.rv a.rv-btn-quiet,     .rv-admin a.rv-btn-quiet{ color:var(--rv-blue); }
.rv a.rv-btn-secondary:hover, .rv-admin a.rv-btn-secondary:hover{ color:#fff; }
.rv a.rv-btn-ghost, .rv-admin a.rv-btn-ghost{ color:var(--rv-ink); }
.rv a.rv-btn-ghost:hover, .rv-admin a.rv-btn-ghost:hover{ color:var(--rv-blue); }
.rv a.rv-btn-on-dark, .rv-admin a.rv-btn-on-dark{ color:#fff; }
.rv a.rv-chip{ color:var(--rv-ink); }
.rv a.rv-chip.is-on{ color:#fff; }
.rv a.rv-brand, .rv-admin a.rv-abrand{ text-decoration:none; color:inherit; }
.rv a.rv-status{ text-decoration:none; }
.rv-filters a, .rv-pager a, .rv-legend a{ text-decoration:none; }

/* Brand lockup: official LFA logo + project mark */
.rv-brand img.rv-brand-mark{ height:34px; width:34px; object-fit:contain; opacity:.9; }
.rv-brand img.rv-brand-lfa{ height:42px; }
.rv-brand .rv-brand-div{ width:1px; height:34px; background:var(--rv-line); flex:none; }
@media (max-width:520px){
  .rv-brand .rv-brand-div, .rv-brand .rv-brand-t{ display:none; }
}

/* Hero needs room for the overlapping action card */
.rv-hero-in{ padding-bottom:110px; }
@media (max-width:900px){ .rv-hero-in{ padding-bottom:80px; } }

/* how-to list: title and body stack */
.rv-step-t, .rv-step-b{ display:block; }
.rv-steps-list li > span:last-child{ display:block; }
.rv-tick{ white-space:nowrap; }

/* action-card link rows stack their two lines */
.rv-al-t, .rv-al-s{ display:block; }
.rv-actioncard-side a > span:first-child{ display:block; }

/* option cards: the text column stacks */
.rv-option-t, .rv-option-la, .rv-option-h{ display:block; }
.rv-option > .rv-grow{ display:block; }

/* ==========================================================================
   Content pages (legal texts, project info) — the legacy markup keeps its
   class names, this gives it the revamp reading layout.
   ========================================================================== */
.rv-page{ padding:44px 0 20px; }
.rv-page-hd{ max-width:760px; margin-bottom:32px; }
.rv-page-hd h1{ font-size:clamp(28px,4vw,42px); font-weight:900; letter-spacing:-.025em; line-height:1.08; }
.rv-page-hd p{ margin:14px 0 0; font-size:17px; line-height:1.55; color:var(--rv-ink-2); }

.rv-prose{ max-width:74ch; }
.rv-prose h2{ font-size:24px; font-weight:800; letter-spacing:-.02em; margin:38px 0 12px; }
.rv-prose h3{ font-size:19px; font-weight:700; margin:28px 0 10px; }
.rv-prose h4{ font-size:16px; font-weight:700; margin:22px 0 8px; }
.rv-prose p{ margin:0 0 14px; font-size:16px; line-height:1.65; color:var(--rv-ink-2); }
.rv-prose ul, .rv-prose ol{ margin:0 0 16px; padding-left:22px; }
.rv-prose li{ font-size:16px; line-height:1.65; color:var(--rv-ink-2); margin-bottom:7px; }
.rv-prose a{ font-weight:600; }
.rv-prose table{ width:100%; border-collapse:collapse; margin:0 0 20px; font-size:14.5px; }
.rv-prose th, .rv-prose td{ border:1px solid var(--rv-line); padding:10px 12px; text-align:left; }
.rv-prose th{ background:#fbfdfe; font-weight:700; }
.rv-prose hr{ border:0; border-top:1px solid var(--rv-line-2); margin:32px 0; }

/* legacy legal-page wrappers */
.rv .privacy-policy-area{ padding:44px 0 20px; }
.rv .privacy-policy-area .container{ max-width:var(--rv-shell); }
.rv .privacy-content, .rv .privacy-policy-area .element, .rv .privacy-policy-area .absatz{ max-width:74ch; }
.rv .privacy-policy-area h1{ font-size:clamp(28px,4vw,40px); font-weight:900; letter-spacing:-.025em; margin:0 0 20px; }
.rv .privacy-policy-area h2{ font-size:23px; font-weight:800; letter-spacing:-.02em; margin:36px 0 12px; }
.rv .privacy-policy-area h3{ font-size:18px; font-weight:700; margin:26px 0 10px; }
.rv .privacy-policy-area p,
.rv .privacy-policy-area li{ font-size:16px; line-height:1.65; color:var(--rv-ink-2); }
.rv .privacy-policy-area p{ margin:0 0 14px; }
.rv .privacy-policy-area ul{ padding-left:22px; margin:0 0 16px; }

/* Choice cards (fangdaten / besatzdaten entry pages) */
.rv-choices{ display:grid; grid-template-columns:repeat(auto-fit,minmax(300px,1fr)); gap:20px; }
.rv-choice{ display:flex; flex-direction:column; background:#fff; border:1px solid var(--rv-line); padding:26px; }
.rv-choice.is-primary{ border-color:var(--rv-blue); box-shadow:inset 3px 0 0 var(--rv-blue); }
.rv-choice h2{ font-size:20px; font-weight:700; line-height:1.3; }
.rv-choice .rv-choice-sub{ font-size:14px; font-weight:600; color:var(--rv-blue); margin-top:4px; }
.rv-choice p{ margin:12px 0 0; font-size:14.5px; line-height:1.55; color:var(--rv-ink-2); }
.rv-choice .rv-choice-ft{ margin-top:auto; padding-top:20px; }

/* The action-card side panel styles its link rows; real buttons keep their own layout. */
.rv-actioncard-side a.rv-btn{ display:inline-flex; justify-content:center; padding:0 22px; border-bottom:0; }
.rv-actioncard-side a.rv-btn.rv-btn-block{ display:flex; }

/* Dashboard split panels collapse on narrow screens */
@media (max-width:1080px){ .rv-dash-split{ grid-template-columns:1fr!important; } }

/* Desaturated basemap so data markers stay the loudest thing on the map */
.rv-tiles-light{ filter:saturate(.28) brightness(1.06) contrast(.94); }
.rv-tiles-full{ filter:none; }

/* Legacy admin links that carry .btn must not inherit the underline */
.rv-admin a.btn, .rv a.btn{ text-decoration:none; }
.rv-admin .dropdown-menu{ border-radius:0; border:1px solid var(--rv-line); box-shadow:var(--rv-shadow); padding:6px 0; }
.rv-admin .dropdown-item{ font-size:14.5px; font-weight:600; padding:9px 16px; }
.rv-admin .dropdown-item:hover{ background:var(--rv-tint); color:var(--rv-blue); }
.rv-admin .breadcrumb{ display:none; }
.rv-admin .table-responsive{ overflow-x:auto; }
.rv-admin .dataTables_scrollBody{ border-bottom:1px solid var(--rv-line-2); }

/* ── Admin: quieter secondary actions ───────────────────────────────────
   Solid colour is reserved for the primary action and for destructive ones,
   so a table row does not read as five competing calls to action. */
.rv-admin .btn-success,
.rv-admin .btn-warning,
.rv-admin .btn-info,
.rv-admin .btn-secondary{ background:#fff; border-color:var(--rv-line-3); color:var(--rv-ink); }
.rv-admin .btn-success:hover,
.rv-admin .btn-warning:hover,
.rv-admin .btn-info:hover,
.rv-admin .btn-secondary:hover{ border-color:var(--rv-blue); color:var(--rv-blue); background:#fff; }
.rv-admin .btn-success{ box-shadow:inset 3px 0 0 var(--rv-ok)!important; }
.rv-admin .btn-warning{ box-shadow:inset 3px 0 0 var(--rv-warn)!important; }
.rv-admin .btn-info{ box-shadow:inset 3px 0 0 var(--rv-sky)!important; }
.rv-admin .btn-danger{ background:#fff; border-color:#e2c3bb; color:var(--rv-alert-fg); box-shadow:inset 3px 0 0 var(--rv-alert)!important; }
.rv-admin .btn-danger:hover{ background:var(--rv-alert); border-color:var(--rv-alert); color:#fff; }

/* role badges in the user list */
.rv-admin .badge{ background:var(--rv-tint)!important; color:var(--rv-info-fg)!important; letter-spacing:.02em; }
.rv-admin .badge.bg-danger, .rv-admin .badge-danger{ background:var(--rv-alert-bg)!important; color:var(--rv-alert-fg)!important; }
.rv-admin .badge.bg-success, .rv-admin .badge-success{ background:var(--rv-ok-bg)!important; color:var(--rv-ok-fg)!important; }
.rv-admin .badge.bg-info, .rv-admin .badge-info{ background:var(--rv-tint)!important; color:var(--rv-info-fg)!important; }
.rv-admin .badge.bg-secondary, .rv-admin .badge-secondary{ background:#eef2f5!important; color:var(--rv-ink-3)!important; }
.rv-admin .badge.bg-warning, .rv-admin .badge-warning{ background:var(--rv-warn-bg)!important; color:var(--rv-warn-fg)!important; }

/* The legacy photo picker hides its file input with position:absolute but keeps
   width:100% of the page, which pushed a horizontal scrollbar onto every form. */
.rv-admin input[type="file"][style*="visibility:hidden"],
.rv input[type="file"][style*="visibility:hidden"]{ width:1px!important; height:1px!important; left:0; top:0; }
.rv-admin .img-attachment{ border:2px dashed #a9c6d8!important; background:var(--rv-tint-2); cursor:pointer; }
.rv-admin .img-attachment p{ margin:6px 0 0; font-weight:700; color:var(--rv-blue); }

/* Assets list: the active invoice creator row */
.rv-admin .table-success > *, .rv-admin tr.table-success > td{ background:var(--rv-ok-bg)!important; color:var(--rv-ok-fg)!important; }

/* project page: two readable text columns with room between them */
.rv .privacy-policy-area .row{ --bs-gutter-x:56px; }
.rv .privacy-policy-area .col-lg-6 .privacy-content{ max-width:60ch; }
.rv .weitere_ul{ list-style:none; padding:0; margin:0 0 16px; }
.rv .weitere_ul li{ display:flex; align-items:flex-start; gap:11px; padding:9px 0; border-top:1px solid var(--rv-line-2); font-size:15.5px; }
.rv .weitere_ul li:first-child{ border-top:0; }
.rv .weitere_ul .privacy_icon{ flex:none; width:26px; }
.rv .weitere_ul .privacy_icon img{ width:26px; height:auto; }

/* ── Confirm dialog ─────────────────────────────────────────────────────
   A small centred dialog for destructive actions; the drawer backdrop is
   reused so only one overlay style exists. */
.rv-confirm{ position:fixed; inset:0; z-index:902; display:flex; align-items:center; justify-content:center; padding:24px; pointer-events:none; }
.rv-confirm[hidden]{ display:none; }
.rv-confirm-in{ pointer-events:auto; background:#fff; border:1px solid var(--rv-line); box-shadow:var(--rv-shadow);
  max-width:460px; width:100%; padding:28px; animation:rvIn .2s ease-out; }
.rv-confirm-in h2{ font-size:21px; font-weight:800; letter-spacing:-.02em; }
.rv-confirm-in p{ margin:12px 0 0; font-size:15px; line-height:1.6; color:var(--rv-ink-2); }

/* Row action clusters in admin tables */
.rv-rowactions{ display:inline-flex; gap:6px; flex-wrap:wrap; }
.rv-role-legend dt{ padding-top:0; }
.rv-role-legend dd{ font-weight:400; color:var(--rv-ink-2); }

/* Highlighted row (e.g. the active invoice creator) */
.rv-table tr.rv-row-active > td{ background:var(--rv-ok-bg); }
.rv-table tr.rv-row-active > td:first-child{ box-shadow:inset 3px 0 0 var(--rv-ok); }

/* the import preview uses a warning variant */
.rv-flash-warn{ background:var(--rv-warn-bg); color:var(--rv-warn-fg); border-left:3px solid var(--rv-warn); }

/* ── Narrow screens ─────────────────────────────────────────────────────
   Three stat columns leave ~120px each on a phone, which clips figures like
   "12.400". Drop to one column, and to two for the four-up admin row. */
@media (max-width:640px){
  .rv-stats-3, .rv-stats-4{ grid-template-columns:1fr; }
  .rv-stat{ padding:16px 18px; }
  .rv-stat-v{ font-size:30px; }
}
@media (min-width:641px) and (max-width:900px){
  .rv-stats-4{ grid-template-columns:1fr 1fr; }
}

/* The admin shell needs room to breathe on a phone */
@media (max-width:820px){
  .rv-admin .content-page > .content > .container-fluid,
  .rv-amain{ padding:16px; }
  .rv-ahead-in{ padding:16px; }
  .rv-ahead h1{ font-size:22px; }
  .rv-abar-in{ padding:0 16px; gap:12px; }
  .rv-asearch{ display:none; }
  .rv-card-hd, .rv-card-bd, .rv-card-ft{ padding-left:16px; padding-right:16px; }
  .rv-dl{ grid-template-columns:1fr; gap:2px 0; }
  .rv-dl dd{ margin-bottom:12px; }
  .rv-confirm-in{ padding:22px; }
}

/* Long words (tags, e-mail addresses) must not push a card wider than the screen */
.rv-dl dd, .rv-thumb-n{ overflow-wrap:anywhere; }

/* Page headers put the title block and the action buttons on one wrapping row.
   Below 640px the title block must claim the full width, otherwise it is
   squeezed into a narrow column beside the buttons and wraps one word per line. */
@media (max-width:640px){
  .rv-flex.rv-wrap > .rv-grow{ flex:1 0 100%; }
  .rv-ahead-actions{ margin-left:0; width:100%; }
  .rv-ahead-actions .rv-btn{ flex:1 1 auto; }
}

/* ── Admin bar on narrow screens ────────────────────────────────────────
   Brand + tools consumed the whole row and squeezed the nav to zero width,
   leaving a phone with no navigation at all. Put the nav on its own
   horizontally scrollable row below. */
@media (max-width:900px){
  .rv-abar-in{ flex-wrap:wrap; padding:0 16px 0; }
  .rv-abrand{ order:1; }
  .rv-atools{ order:2; margin-left:auto; }
  .rv-anav{
    order:3; flex:1 0 100%; margin-left:0;
    border-top:1px solid rgba(255,255,255,.12);
  }
  .rv-anav a{ padding:14px 12px; font-size:14px; }
  .rv-abrand span span{ display:none; }   /* keep only the wordmark */
}
