/* Prime — design system tokens */
:root {
  --ink: #0a0a0a;
  --ink-2: #262626;
  --muted: #737373;
  --muted-2: #a3a3a3;
  --line: #e5e5e5;
  --line-2: #f0f0f0;
  --bg: #ffffff;
  --bg-2: #fafafa;
  --bg-3: #f5f5f5;

  --accent: oklch(0.45 0.12 250);
  --accent-2: oklch(0.92 0.03 250);
  --accent-ink: oklch(0.32 0.12 250);

  --ok: oklch(0.62 0.13 150);
  --ok-bg: oklch(0.96 0.04 150);
  --warn: oklch(0.74 0.13 75);
  --warn-bg: oklch(0.97 0.05 90);
  --bad: oklch(0.62 0.18 25);
  --bad-bg: oklch(0.96 0.04 25);

  --pin: #facc15;
  --pin-ink: #422006;

  --premium: #0a0a0a;
  --basic: #737373;

  --font-sans: "Inter", -apple-system, system-ui, sans-serif;
  --font-mono: "JetBrains Mono", "SF Mono", ui-monospace, monospace;

  --r-0: 0px;
  --r-1: 2px;
  --r-2: 4px;
}

* { box-sizing: border-box; }
html, body { margin: 0; padding: 0; }
body {
  font-family: var(--font-sans);
  color: var(--ink);
  background: var(--bg);
  font-size: 14px;
  line-height: 1.45;
  -webkit-font-smoothing: antialiased;
  font-feature-settings: "ss01", "cv11";
}
.mono { font-family: var(--font-mono); font-feature-settings: normal; }

button { font: inherit; cursor: pointer; border: 0; background: 0; color: inherit; padding: 0; }
input, textarea, select { font: inherit; color: inherit; }

/* ============== Screen frame ============== */
.screen {
  background: var(--bg);
  color: var(--ink);
  border: 1px solid var(--line);
  width: 100%;
  height: 100%;
  display: flex;
  flex-direction: column;
  overflow: hidden;
  position: relative;
  font-size: 13px;
}

/* ============== Top bar ============== */
.topbar {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 14px 24px;
  border-bottom: 1px solid var(--line);
  background: var(--bg);
  flex: 0 0 auto;
}
.topbar-l, .topbar-r { display: flex; align-items: center; gap: 20px; }
.brand {
  font-weight: 600;
  letter-spacing: -0.02em;
  font-size: 16px;
  display: flex; align-items: center; gap: 8px;
}
.brand-mark {
  width: 18px; height: 18px;
  background: var(--ink);
  position: relative;
  display: inline-block;
}
.brand-mark::after {
  content: '';
  position: absolute;
  inset: 4px;
  background: var(--bg);
}
.brand-mark::before {
  content: '';
  position: absolute;
  left: 4px; bottom: 0; width: 4px; height: 4px;
  background: var(--bg);
  z-index: 1;
}
.nav-link {
  font-size: 13px;
  color: var(--ink-2);
  text-decoration: none;
}
.nav-link.muted { color: var(--muted); }

/* ============== Buttons ============== */
.btn {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  padding: 8px 14px;
  font-size: 13px;
  font-weight: 500;
  border: 1px solid var(--line);
  background: var(--bg);
  color: var(--ink);
  border-radius: var(--r-1);
  white-space: nowrap;
  line-height: 1;
}
.btn:hover { background: var(--bg-2); }
.btn.primary { background: var(--ink); color: #fff; border-color: var(--ink); }
.btn.primary:hover { background: var(--ink-2); }
.btn.ghost { border-color: transparent; }
.btn.sm { padding: 6px 10px; font-size: 12px; }
.btn.lg { padding: 12px 18px; font-size: 14px; }
.btn.full { width: 100%; justify-content: center; }
.btn.accent { background: var(--accent); color: #fff; border-color: var(--accent); }

/* ============== Badges ============== */
.badge {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  font-size: 11px;
  padding: 3px 7px;
  border: 1px solid var(--line);
  border-radius: var(--r-1);
  font-weight: 500;
  letter-spacing: 0.01em;
  background: var(--bg);
  color: var(--ink-2);
  line-height: 1.2;
  white-space: nowrap;
}
.badge.verified {
  background: var(--accent-2);
  border-color: transparent;
  color: var(--accent-ink);
}
.badge.unverified {
  color: var(--muted);
  background: var(--bg-2);
}
.badge.premium {
  background: var(--ink);
  color: #fff;
  border-color: var(--ink);
}
.badge.basic {
  background: var(--bg-2);
  color: var(--muted);
}
.badge.ai {
  background: var(--ink);
  color: #fff;
  border-color: var(--ink);
  font-family: var(--font-mono);
  letter-spacing: 0.04em;
  text-transform: uppercase;
  font-size: 10px;
}
.badge.alpha {
  background: var(--bg-2);
  color: var(--ink);
  border-color: var(--line);
  font-family: var(--font-mono);
  font-size: 10px;
  letter-spacing: 0.02em;
}

/* RAG */
.rag {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  font-size: 11px;
  font-family: var(--font-mono);
  padding: 3px 8px;
  border-radius: var(--r-1);
  font-weight: 500;
}
.rag .dot { width: 6px; height: 6px; border-radius: 50%; background: currentColor; }
.rag.ok { color: var(--ok); background: var(--ok-bg); }
.rag.warn { color: var(--warn); background: var(--warn-bg); }
.rag.bad { color: var(--bad); background: var(--bad-bg); }

/* ============== Section headers (in-screen) ============== */
.kicker {
  font-family: var(--font-mono);
  font-size: 10px;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--muted);
}
.h-display {
  font-size: 32px;
  font-weight: 600;
  letter-spacing: -0.025em;
  line-height: 1.1;
}
.h-1 { font-size: 22px; font-weight: 600; letter-spacing: -0.02em; line-height: 1.2; }
.h-2 { font-size: 16px; font-weight: 600; letter-spacing: -0.01em; }
.h-3 { font-size: 13px; font-weight: 600; }
.t-muted { color: var(--muted); }
.t-mono { font-family: var(--font-mono); }

/* ============== Cards / tiles ============== */
.card {
  border: 1px solid var(--line);
  background: var(--bg);
  border-radius: var(--r-1);
  overflow: hidden;
}

/* ============== Open-question pin ============== */
.pin {
  width: 22px; height: 22px;
  border-radius: 50%;
  background: var(--pin);
  color: var(--pin-ink);
  font-family: var(--font-mono);
  font-size: 11px;
  font-weight: 700;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  border: 1px solid #b08800;
  flex-shrink: 0;
  cursor: help;
  position: relative;
  z-index: 5;
}
.pin.lg { width: 26px; height: 26px; font-size: 12px; }
.pin-anchor { z-index: 5; }
.pin-anchor.inline {
  display: inline-flex;
  align-items: center;
  vertical-align: middle;
  position: relative;
}
.pin-anchor.anchored { position: absolute; }
.pin-callout {
  display: inline-flex;
  align-items: flex-start;
  gap: 8px;
  background: #fef9c3;
  border: 1px solid #facc15;
  padding: 8px 10px;
  border-radius: var(--r-1);
  font-size: 12px;
  color: var(--pin-ink);
  max-width: 280px;
  line-height: 1.4;
}
.pin-callout .pin { width: 18px; height: 18px; font-size: 10px; }

/* Tier-only banner */
.tier-banner {
  padding: 6px 16px;
  font-family: var(--font-mono);
  font-size: 10px;
  text-transform: uppercase;
  letter-spacing: 0.08em;
  display: flex;
  align-items: center;
  gap: 8px;
  border-bottom: 1px solid var(--line);
  flex: 0 0 auto;
}
.tier-banner.premium { background: var(--ink); color: #fff; }
.tier-banner.basic { background: var(--bg-2); color: var(--muted); }

/* When QA mode is OFF, hide all pins/callouts */
body.qa-off .pin,
body.qa-off .pin-anchor,
body.qa-off .pin-callout { display: none !important; }

/* ============== Map / streetview placeholders ============== */
.map-abstract {
  background:
    linear-gradient(0deg, rgba(0,0,0,0.04) 1px, transparent 1px) 0 0 / 24px 24px,
    linear-gradient(90deg, rgba(0,0,0,0.04) 1px, transparent 1px) 0 0 / 24px 24px,
    var(--bg-2);
  position: relative;
  overflow: hidden;
}
.map-abstract::before {
  content: '';
  position: absolute;
  inset: 0;
  background:
    radial-gradient(circle at 30% 40%, rgba(10,10,10,0.04) 0, rgba(10,10,10,0.04) 60px, transparent 60px),
    radial-gradient(circle at 70% 70%, rgba(10,10,10,0.03) 0, rgba(10,10,10,0.03) 80px, transparent 80px);
}
.map-pin {
  position: absolute;
  width: 8px; height: 8px;
  border-radius: 50%;
  background: var(--ink);
  border: 2px solid #fff;
  box-shadow: 0 0 0 1px var(--ink);
  transform: translate(-50%, -50%);
}
.map-pin.active { background: var(--accent); box-shadow: 0 0 0 1px var(--accent), 0 0 0 6px color-mix(in oklch, var(--accent) 20%, transparent); }

/* photo placeholder */
.photo {
  background:
    repeating-linear-gradient(135deg,
      var(--bg-2) 0, var(--bg-2) 10px,
      var(--bg-3) 10px, var(--bg-3) 20px);
  position: relative;
  display: flex;
  align-items: center;
  justify-content: center;
  color: var(--muted);
  font-family: var(--font-mono);
  font-size: 10px;
  letter-spacing: 0.08em;
  text-transform: uppercase;
}
/* Warm placeholder — sunlit room mood, no SVG. Layered window glow + floor plane
   so cards read as photographic without being a literal drawing. */
.photo.warm {
  background:
    radial-gradient(ellipse 55% 45% at 78% 22%, rgba(255,236,190,0.7) 0%, transparent 55%),
    radial-gradient(ellipse 65% 50% at 22% 88%, rgba(110,75,40,0.28) 0%, transparent 60%),
    linear-gradient(178deg, #e8d3a8 0%, #d6b884 38%, #b8945e 72%, #876236 100%);
  color: #fff;
  text-shadow: 0 1px 2px rgba(0,0,0,0.35);
}
.photo.warm .ph-label,
.photo.cool .ph-label {
  background: rgba(0,0,0,0.42);
  color: #fff;
  padding: 3px 7px;
  letter-spacing: 0.06em;
  font-size: 9px;
  border-radius: 1px;
}
/* Cool placeholder — north-light room, neoclassical exterior feel. */
.photo.cool {
  background:
    radial-gradient(ellipse 50% 45% at 22% 22%, rgba(225,235,245,0.75) 0%, transparent 55%),
    radial-gradient(ellipse 60% 50% at 80% 82%, rgba(35,48,68,0.42) 0%, transparent 60%),
    linear-gradient(190deg, #c4cfdb 0%, #9faebd 40%, #748597 75%, #4d5a6c 100%);
  color: #fff;
  text-shadow: 0 1px 2px rgba(0,0,0,0.35);
}
.photo.dark {
  background:
    repeating-linear-gradient(135deg,
      #2a2a2a 0, #2a2a2a 10px,
      #333 10px, #333 20px);
  color: #888;
}
.photo .ph-label {
  position: absolute;
  bottom: 8px; left: 8px;
}
/* Hi-fi hero photo variants — used on T01, T03, T09, T14, O08 hero blocks only.
   Layered radial + linear gradients evoke realistic interior lighting (warm window glow,
   floor/ceiling planes) without hand-drawn SVGs. The diagonal-stripe placeholder remains
   the default for non-hero screens. */
.photo.hero {
  background:
    /* warm window glow upper-left */
    radial-gradient(ellipse 60% 50% at 22% 30%, rgba(255, 220, 170, 0.55), transparent 70%),
    /* soft shadow lower-right */
    radial-gradient(ellipse 70% 50% at 80% 80%, rgba(70, 50, 30, 0.18), transparent 65%),
    /* horizontal floor/ceiling band */
    linear-gradient(180deg, #d9c9b0 0%, #d9c9b0 38%, #c9b896 39%, #b89e72 100%);
  color: rgba(255,255,255,0.85);
  text-shadow: 0 1px 2px rgba(0,0,0,0.4);
}
.photo.hero.living {
  background:
    radial-gradient(ellipse 55% 60% at 25% 35%, rgba(255,235,200,0.6), transparent 70%),
    radial-gradient(ellipse 70% 50% at 80% 85%, rgba(60,40,20,0.22), transparent 65%),
    linear-gradient(180deg, #e6d7be 0%, #d9c5a3 40%, #b8956a 100%);
}
.photo.hero.kitchen {
  background:
    radial-gradient(ellipse 50% 60% at 70% 30%, rgba(245,240,225,0.7), transparent 70%),
    linear-gradient(180deg, #ece4d4 0%, #d4cab5 50%, #8a7558 100%);
}
.photo.hero.bedroom {
  background:
    radial-gradient(ellipse 60% 60% at 30% 35%, rgba(245,225,195,0.55), transparent 70%),
    linear-gradient(180deg, #d6c7ad 0%, #b8a07e 100%);
}
.photo.hero.bathroom {
  background:
    radial-gradient(ellipse 60% 60% at 50% 30%, rgba(225,235,240,0.7), transparent 70%),
    linear-gradient(180deg, #e0e4e6 0%, #c2c8cc 100%);
}
.photo.hero.balcony {
  background:
    radial-gradient(ellipse 70% 70% at 50% 30%, rgba(200,220,235,0.7), transparent 70%),
    linear-gradient(180deg, #c8d8e4 0%, #95a8b4 60%, #6b7a85 100%);
}
.photo.hero.exterior {
  background:
    radial-gradient(ellipse 70% 50% at 50% 30%, rgba(220,230,240,0.6), transparent 70%),
    linear-gradient(180deg, #b8c4ce 0%, #8a98a4 50%, #5e6b75 100%);
}
.photo.hero.hifi-mini {
  background:
    radial-gradient(ellipse 60% 60% at 30% 35%, rgba(255,235,200,0.55), transparent 70%),
    linear-gradient(135deg, #d9c5a3 0%, #b8956a 100%);
}

/* ============== Hi-fi photographic stand-ins (hero screens only) ============== */
/* Stock-style apartment imagery rendered with layered gradients — no SVG drawing.
   Used on the 5 hero screens. Hide the diagonal-stripe pattern by overriding
   .photo's background. Each .photo-hifi-* is a different room mood. */
.photo.hifi { color: #fff; }
.photo.hifi .ph-label {
  background: rgba(0,0,0,0.42);
  color: #fff;
  padding: 3px 7px;
  letter-spacing: 0.06em;
  font-size: 9px;
  border-radius: 1px;
}
/* Living room — warm, sunlit, light wood */
.photo.hifi-living {
  background:
    radial-gradient(ellipse at 78% 18%, rgba(255,236,180,0.65) 0%, transparent 38%),
    radial-gradient(ellipse at 18% 88%, rgba(80,55,30,0.35) 0%, transparent 50%),
    linear-gradient(178deg, #c8a878 0%, #b89567 26%, #a07a4e 60%, #6e4f30 100%);
}
/* Living room 2 — cooler, modern, north light */
.photo.hifi-living-cool {
  background:
    radial-gradient(ellipse at 22% 22%, rgba(220,232,242,0.7) 0%, transparent 45%),
    radial-gradient(ellipse at 80% 78%, rgba(40,52,68,0.45) 0%, transparent 55%),
    linear-gradient(190deg, #b8c6d0 0%, #95a4b2 38%, #6b7c8c 75%, #4a5868 100%);
}
/* Kitchen — bright, white tile + warm counter */
.photo.hifi-kitchen {
  background:
    linear-gradient(178deg, transparent 55%, rgba(140,108,72,0.55) 100%),
    radial-gradient(ellipse at 55% 30%, rgba(255,250,235,0.55) 0%, transparent 50%),
    linear-gradient(180deg, #e8e1d4 0%, #d4c8b3 50%, #a88c64 100%);
}
/* Bedroom — soft, low light */
.photo.hifi-bedroom {
  background:
    radial-gradient(ellipse at 30% 35%, rgba(255,220,180,0.5) 0%, transparent 45%),
    linear-gradient(195deg, #c9a890 0%, #a48068 45%, #6b4d3a 100%);
}
/* Bathroom — clean cool tile */
.photo.hifi-bathroom {
  background:
    radial-gradient(ellipse at 65% 28%, rgba(245,250,252,0.65) 0%, transparent 40%),
    linear-gradient(180deg, #d4dde2 0%, #aab8c2 60%, #7d8e9a 100%);
}
/* Balcony — Mediterranean blue sky + plants */
.photo.hifi-balcony {
  background:
    linear-gradient(180deg, #6fa6c8 0%, #95bcd6 38%, transparent 60%),
    linear-gradient(0deg, #4d6b3c 0%, #6b8a52 18%, transparent 35%),
    linear-gradient(180deg, #7fb0d0 0%, #a8c8dc 50%, #8aa775 75%, #4d6b3c 100%);
}
/* Pangrati 2BR exterior — yellow Athenian facade */
.photo.hifi-pangrati {
  background:
    linear-gradient(180deg, transparent 35%, rgba(60,40,20,0.4) 100%),
    radial-gradient(ellipse at 70% 22%, rgba(255,238,200,0.55) 0%, transparent 45%),
    linear-gradient(195deg, #d8b572 0%, #c89a52 50%, #8a6630 100%);
}
/* Kolonaki 1BR exterior — cool, neoclassical */
.photo.hifi-kolonaki {
  background:
    linear-gradient(180deg, transparent 30%, rgba(40,50,65,0.5) 100%),
    radial-gradient(ellipse at 28% 24%, rgba(230,236,245,0.6) 0%, transparent 50%),
    linear-gradient(192deg, #c0c8d2 0%, #95a0ae 50%, #5a6878 100%);
}
/* Exarcheia 2BR — dusk warm */
.photo.hifi-exarcheia {
  background:
    linear-gradient(180deg, transparent 40%, rgba(50,30,15,0.5) 100%),
    radial-gradient(ellipse at 80% 30%, rgba(255,200,140,0.6) 0%, transparent 45%),
    linear-gradient(200deg, #b88858 0%, #8a5d35 60%, #4d2e18 100%);
}
/* Toumba 3BR — soft family living, terracotta + greenery */
.photo.hifi-toumba {
  background:
    radial-gradient(ellipse at 25% 25%, rgba(255,232,180,0.55) 0%, transparent 45%),
    radial-gradient(ellipse at 82% 80%, rgba(80,55,30,0.4) 0%, transparent 50%),
    linear-gradient(192deg, #d8a878 0%, #b8825a 50%, #7a4f30 100%);
}
/* Heraklion 2BR — Cretan stone + cypress shadow */
.photo.hifi-heraklion {
  background:
    radial-gradient(ellipse at 30% 22%, rgba(245,238,220,0.6) 0%, transparent 45%),
    radial-gradient(ellipse at 80% 85%, rgba(40,55,40,0.4) 0%, transparent 55%),
    linear-gradient(195deg, #cfc4ad 0%, #a8997e 45%, #6b5f4a 100%);
}
/* Patras seafront 1BR — Aegean blue + sand horizon */
.photo.hifi-patras {
  background:
    linear-gradient(180deg, #7fb6d4 0%, #a4cce0 28%, transparent 52%),
    linear-gradient(0deg, #d8c89a 0%, #c9b27a 16%, transparent 32%),
    linear-gradient(180deg, #6fa3c2 0%, #95c0d8 32%, #b8c8b0 58%, #cfb988 100%);
}

/* ============== Per-screen pin counter (top-right of authenticated screens) ============== */
.pin-counter-wrap {
  position: absolute;
  top: 14px;
  right: 24px;
  z-index: 20;
}
.pin-counter {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  padding: 5px 9px 5px 6px;
  background: #fef9c3;
  border: 1px solid #facc15;
  font-family: var(--font-mono);
  font-size: 10px;
  text-transform: uppercase;
  letter-spacing: 0.06em;
  color: var(--pin-ink);
  cursor: pointer;
  border-radius: var(--r-1);
  line-height: 1;
}
.pin-counter .n {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 18px; height: 18px;
  background: var(--pin);
  border: 1px solid #b08800;
  border-radius: 50%;
  font-size: 10px;
  font-weight: 700;
}
.pin-counter-list {
  position: absolute;
  top: 32px;
  right: 0;
  width: 280px;
  background: #fef9c3;
  border: 1px solid #facc15;
  padding: 10px 12px;
  font-size: 11px;
  color: var(--pin-ink);
  line-height: 1.45;
  box-shadow: 0 2px 8px rgba(0,0,0,0.08);
  z-index: 21;
}
.pin-counter-list .item {
  display: flex;
  gap: 8px;
  padding: 6px 0;
  border-bottom: 1px solid rgba(176,136,0,0.25);
}
.pin-counter-list .item:last-child { border-bottom: 0; }
.pin-counter-list .item .pin { width: 18px; height: 18px; font-size: 10px; flex-shrink: 0; margin-top: 1px; }
.pin-counter-list .item .topic { font-weight: 600; }
body.qa-off .pin-counter-wrap { display: none !important; }
.photo.blurred::after {
  content: '';
  position: absolute;
  inset: 0;
  backdrop-filter: blur(14px);
  background: rgba(255,255,255,0.4);
}
.photo .lock-overlay {
  position: relative;
  z-index: 2;
  background: rgba(255,255,255,0.85);
  border: 1px solid var(--line);
  padding: 8px 12px;
  font-family: var(--font-mono);
  font-size: 10px;
  text-transform: uppercase;
  letter-spacing: 0.08em;
  color: var(--ink-2);
  display: flex;
  align-items: center;
  gap: 6px;
}

/* ============== Inputs ============== */
.input {
  border: 1px solid var(--line);
  border-radius: var(--r-1);
  padding: 9px 12px;
  background: var(--bg);
  font-size: 13px;
  width: 100%;
  outline: 0;
}
.input:focus { border-color: var(--ink); }
.field-label {
  font-size: 11px;
  font-family: var(--font-mono);
  text-transform: uppercase;
  letter-spacing: 0.06em;
  color: var(--muted);
  display: block;
  margin-bottom: 6px;
}

/* ============== Search filter chips ============== */
.chip {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  padding: 7px 12px;
  border: 1px solid var(--line);
  border-radius: var(--r-1);
  font-size: 12px;
  background: var(--bg);
}
.chip svg { display: block; }
.chip .x { color: var(--muted); }

/* ============== Tables ============== */
.tbl { width: 100%; border-collapse: collapse; font-size: 12px; }
.tbl th, .tbl td {
  text-align: left;
  padding: 10px 12px;
  border-bottom: 1px solid var(--line);
  vertical-align: top;
}
.tbl th {
  font-family: var(--font-mono);
  font-size: 10px;
  text-transform: uppercase;
  letter-spacing: 0.06em;
  color: var(--muted);
  font-weight: 500;
  background: var(--bg-2);
  border-bottom: 1px solid var(--line);
}

/* ============== Footer ============== */
.foot {
  border-top: 1px solid var(--line);
  padding: 10px 24px;
  font-size: 11px;
  color: var(--muted);
  display: flex;
  justify-content: space-between;
  align-items: center;
  flex: 0 0 auto;
}
.foot .mono { letter-spacing: 0.04em; }

/* ============== AI assistant (variant A: corner widget) ============== */
.ai-widget {
  position: absolute;
  right: 20px;
  bottom: 56px;
  width: 320px;
  border: 1px solid var(--ink);
  background: var(--bg);
  z-index: 10;
  box-shadow: 0 1px 0 var(--line);
}
.ai-widget-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 10px 12px;
  border-bottom: 1px solid var(--line);
  background: var(--ink);
  color: #fff;
}
.ai-widget-head .lbl { font-family: var(--font-mono); font-size: 10px; text-transform: uppercase; letter-spacing: 0.08em; }
.ai-widget-body { padding: 12px; }
.ai-widget-body .msg { font-size: 12px; line-height: 1.5; color: var(--ink-2); }
.ai-widget-body .actions { display: flex; gap: 6px; margin-top: 10px; flex-wrap: wrap; }

/* AI variant B: inline card */
.ai-inline {
  border-left: 3px solid var(--ink);
  padding: 10px 14px;
  background: var(--bg-2);
  font-size: 12px;
  display: flex;
  align-items: flex-start;
  gap: 10px;
}
.ai-inline .lbl {
  font-family: var(--font-mono);
  font-size: 10px;
  text-transform: uppercase;
  letter-spacing: 0.08em;
  color: var(--muted);
  margin-bottom: 2px;
}

/* utility */
.row { display: flex; }
.col { display: flex; flex-direction: column; }
.gap-4 { gap: 4px; } .gap-6 { gap: 6px; } .gap-8 { gap: 8px; } .gap-12 { gap: 12px; } .gap-16 { gap: 16px; } .gap-20 { gap: 20px; } .gap-24 { gap: 24px; } .gap-32 { gap: 32px; }
.flex-1 { flex: 1; min-width: 0; min-height: 0; }
.center { display: flex; align-items: center; justify-content: center; }
.between { justify-content: space-between; }
.aic { align-items: center; }
.aifs { align-items: flex-start; }
.divider { height: 1px; background: var(--line); }
.divider-v { width: 1px; background: var(--line); align-self: stretch; }

/* small helpers */
.eyebrow {
  font-family: var(--font-mono);
  font-size: 10px;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--muted);
}
.num {
  font-family: var(--font-mono);
  font-variant-numeric: tabular-nums;
}
.strike { text-decoration: line-through; color: var(--muted); }
.k-data {
  display: flex;
  justify-content: space-between;
  font-size: 12px;
  padding: 6px 0;
  border-bottom: 1px solid var(--line-2);
}
.k-data:last-child { border-bottom: 0; }
.k-data .k { color: var(--muted); }
.k-data .v { font-family: var(--font-mono); }

.scroll-y { overflow-y: auto; }
.scroll-y::-webkit-scrollbar { width: 6px; }
.scroll-y::-webkit-scrollbar-thumb { background: var(--line); }

/* progress steps */
.steps { display: flex; gap: 0; align-items: center; font-size: 11px; }
.steps .step {
  font-family: var(--font-mono);
  text-transform: uppercase;
  letter-spacing: 0.06em;
  color: var(--muted);
  display: flex; align-items: center; gap: 8px;
}
.steps .step.done { color: var(--ink); }
.steps .step.active { color: var(--ink); font-weight: 600; }
.steps .step::after {
  content: '';
  display: inline-block;
  width: 16px; height: 1px; background: var(--line);
  margin: 0 12px;
}
.steps .step:last-child::after { display: none; }
