/* ============================================================
   HomeLynx V7 — VISUAL SYSTEM V2 ("quiet intelligence")
   Reference preview. Scoped strictly under body.vis2 so the
   other 29 screens keep the V7.0.3 visual language until the
   system is locked and propagated.
   Principles: negative space, editorial type, full-bleed
   imagery, hairlines not cards, no emoji, no pills/badges,
   provenance subordinate, restrained green, AI as prose.
   ============================================================ */

body.vis2{
  --v2-paper:#FAF9F6;
  --v2-ink:#1B1A15;          /* 16.6:1 on paper */
  --v2-mute:#6E695B;         /* 5.2:1 — secondary text, AA */
  --v2-faint:#767065;        /* 4.7:1 — footnotes/inactive, AA */
  --v2-line:#D8D2C0;         /* hairlines: decorative, slightly deepened */
  --v2-green:#1E5B37;        /* 7.7:1 — restrained accent */
  --v2-amber:#7A5F14;        /* quiet state only */
  --v2-amber-line:#D9C48F;
  background:var(--v2-paper);
  color:var(--v2-ink);
  -webkit-font-smoothing:antialiased;
}

/* ---------- chrome: quiet, text-only ---------- */
body.vis2 #tabbar{
  background:rgba(250,249,246,.94); -webkit-backdrop-filter:blur(12px); backdrop-filter:blur(12px);
  border-top:1px solid var(--v2-line); box-shadow:none;
}
body.vis2 #tabbar .tab{ color:var(--v2-faint); font-size:11.5px; font-weight:500; letter-spacing:.02em; gap:0; }
body.vis2 #tabbar .tab .ico{ display:none; }
body.vis2 #tabbar .tab.active{ color:var(--v2-ink); font-weight:600; }
body.vis2 #rail{ background:var(--v2-paper); border-right:1px solid var(--v2-line); }
body.vis2 #rail .brand-name{ color:var(--v2-ink); }
body.vis2 #rail .rail-link{ color:var(--v2-mute); font-size:14px; }
body.vis2 #rail .rail-link .ico{ display:none; }
body.vis2 #rail .rail-link.active{ color:var(--v2-ink); font-weight:600; background:none; }
body.vis2 #rail .rail-foot{ color:var(--v2-faint); }

/* fixture honesty, subordinate */
body.vis2 .fixture-banner{
  background:none; border:none; border-bottom:1px solid var(--v2-line);
  border-radius:0; padding:10px 0; margin:0 0 8px; color:var(--v2-faint);
  font-size:10.5px; letter-spacing:.14em; text-transform:uppercase; font-weight:600;
}
body.vis2 .fixture-banner .ico{ display:none; }
body.vis2 .fixture-banner strong{ font-weight:600; }
/* demo mode: the indicator stays subordinate in v2 too */
body.vis2 .fixture-banner.demo{ border-bottom-color:var(--v2-line); color:var(--v2-faint); padding:8px 0; margin:0 0 6px; }

/* ---------- v2 page scaffold ---------- */
.v2-page{ padding:0 0 110px; }
.v2-bleed{ margin-left:-20px; margin-right:-20px; }
@media(min-width:1024px){ .v2-bleed{ margin-left:-40px; margin-right:-40px; } }

.v2-eyebrow{
  font-size:11px; font-weight:600; letter-spacing:.16em; text-transform:uppercase;
  color:var(--v2-mute); margin:0 0 14px;
}
.v2-display{
  font-size:58px; font-weight:250; letter-spacing:-.032em; line-height:1.02;
  font-variant-numeric:tabular-nums; color:var(--v2-ink); margin:0;
}
.v2-display.green{ color:var(--v2-green); }
.v2-h1{ font-size:29px; font-weight:650; letter-spacing:-.022em; line-height:1.18; margin:0; color:var(--v2-ink); }
.v2-h2{ font-size:19px; font-weight:600; letter-spacing:-.012em; margin:0; color:var(--v2-ink); }
.v2-body{ font-size:16.5px; line-height:1.62; color:#33312A; margin:0; }
.v2-body + .v2-body{ margin-top:14px; }
.v2-quiet{ font-size:14px; line-height:1.55; color:var(--v2-mute); margin:0; }
.v2-foot{
  font-size:12.5px; line-height:1.65; color:var(--v2-faint); margin:0;
}
.v2-foot a, .v2-quiet a{ color:var(--v2-mute); text-decoration:underline; text-underline-offset:3px; }

.v2-sec{ margin-top:68px; }
.v2-sec-tight{ margin-top:44px; }
.v2-rule{ border:none; border-top:1px solid var(--v2-line); margin:0; }

/* hero imagery: full-bleed, no radius, no card */
.v2-hero{ position:relative; }
.v2-hero img{ display:block; width:100%; height:54vh; min-height:340px; max-height:560px; object-fit:cover; }
.v2-hero.tall img{ height:62vh; max-height:640px; }

/* quiet definition rows */
.v2-rows{ margin:26px 0 0; }
.v2-row{
  display:flex; justify-content:space-between; align-items:baseline; gap:18px;
  padding:13px 0; border-top:1px solid var(--v2-line);
  font-size:15px;
}
.v2-row:last-child{ border-bottom:1px solid var(--v2-line); }
.v2-row .k{ color:var(--v2-mute); }
.v2-row .v{ color:var(--v2-ink); font-variant-numeric:tabular-nums; text-align:right; }

/* pathway rows (navigation as text) */
.v2-paths{ margin-top:40px; border-top:1px solid var(--v2-line); }
.v2-path{
  display:flex; align-items:center; justify-content:space-between; gap:16px;
  width:100%; padding:19px 0; border-bottom:1px solid var(--v2-line);
  background:none; border-left:none; border-right:none; border-top:none;
  font-size:17px; color:var(--v2-ink); text-align:left; cursor:pointer;
  font-family:inherit;
}
.v2-path .sub{ display:block; font-size:13.5px; color:var(--v2-mute); margin-top:3px; font-weight:400; }
.v2-path .chev{ color:var(--v2-faint); font-size:20px; font-weight:300; }
.v2-path .lbl{ font-weight:550; letter-spacing:-.01em; }

/* lens nav: quiet text */
.v2-lenses{ display:flex; gap:26px; margin:30px 0 0; padding-bottom:14px; border-bottom:1px solid var(--v2-line); }
.v2-lenses button{
  background:none; border:none; padding:0; font:inherit; font-size:14.5px;
  color:var(--v2-faint); cursor:pointer; letter-spacing:.01em;
}
.v2-lenses button.active{ color:var(--v2-ink); font-weight:650; }
.v2-lens-note{ margin-top:22px; }

/* comp receipt rows */
.v2-comp{ padding:18px 0; border-top:1px solid var(--v2-line); }
.v2-comp:last-child{ border-bottom:1px solid var(--v2-line); }
.v2-comp .a{ font-size:16px; font-weight:600; letter-spacing:-.01em; color:var(--v2-ink); }
.v2-comp .b{ font-size:13.5px; color:var(--v2-mute); margin-top:5px; font-variant-numeric:tabular-nums; }
.v2-comp .c{ font-size:12.5px; color:var(--v2-faint); margin-top:4px; }

/* risk brief: editorial, no badges */
.v2-risk{ margin-top:30px; }
.v2-risk:first-of-type{ margin-top:26px; }
.v2-risk h3{ font-size:16.5px; font-weight:650; letter-spacing:-.01em; margin:0 0 8px; color:var(--v2-ink); }

/* search results */
.v2-result{ margin-top:56px; }
.v2-result:first-of-type{ margin-top:36px; }
.v2-result img{ display:block; width:100%; aspect-ratio:16/10; object-fit:cover; }
.v2-result .price{ font-size:30px; font-weight:300; letter-spacing:-.02em; margin:18px 0 0; font-variant-numeric:tabular-nums; }
.v2-result .addr{ font-size:16.5px; font-weight:600; letter-spacing:-.01em; margin:8px 0 0; }
.v2-result .meta{ font-size:13.5px; color:var(--v2-mute); margin-top:7px; font-variant-numeric:tabular-nums; }
.v2-toggle{ display:flex; gap:22px; margin-top:18px; }
.v2-toggle button{
  background:none; border:none; padding:0 0 6px; font:inherit; font-size:14px;
  color:var(--v2-faint); cursor:pointer;
}
.v2-toggle button.active{ color:var(--v2-ink); font-weight:650; border-bottom:2px solid var(--v2-ink); }

/* sticky action bar, subordinate */
body.vis2 .sticky-cta{
  background:rgba(250,249,246,.96); -webkit-backdrop-filter:blur(12px); backdrop-filter:blur(12px);
  border-top:1px solid var(--v2-line); box-shadow:none; border-radius:0;
  left:0; right:0; bottom:0; padding:12px 20px calc(12px + env(safe-area-inset-bottom));
}
body.vis2 .sticky-cta .btn-line{
  background:none; border:none; color:var(--v2-ink); font-weight:550; box-shadow:none;
}
body.vis2 .sticky-cta .btn-primary{
  background:var(--v2-ink); border-radius:12px; box-shadow:none; font-weight:600;
}
@media(min-width:1024px){ body.vis2 .sticky-cta{ left:232px; } }

/* quiet text button */
.v2-textbtn{
  background:none; border:none; padding:0; font:inherit; font-size:14.5px;
  color:var(--v2-ink); font-weight:550; cursor:pointer;
  text-decoration:underline; text-underline-offset:4px; text-decoration-color:var(--v2-line);
}
.v2-inputrow{
  display:flex; align-items:center; justify-content:space-between; gap:14px;
  width:100%; margin-top:20px; padding:17px 0; background:none; cursor:pointer;
  border-top:1px solid var(--v2-line); border-bottom:1px solid var(--v2-line);
  font:inherit; font-size:16px; color:var(--v2-faint); text-align:left;
}
.v2-inputrow .chev{ color:var(--v2-faint); font-size:20px; font-weight:300; }

/* containment is allowed when state or interaction genuinely needs it —
   not banned, just never decorative. */
.v2-card{
  background:#FFFFFF; border:1px solid var(--v2-line); border-radius:16px;
  padding:22px; margin:0;
}
.v2-badge{
  display:inline-block; font-size:10.5px; font-weight:650; letter-spacing:.12em;
  text-transform:uppercase; color:var(--v2-mute); border:1px solid var(--v2-line);
  border-radius:999px; padding:6px 11px; background:transparent; white-space:nowrap;
}
.v2-badge.stale{ color:var(--v2-amber); border-color:var(--v2-amber-line); }

/* quiet intelligence signal (search results) */
.v2-signal{ font-size:13.5px; line-height:1.5; color:var(--v2-mute); margin:10px 0 0; }
.v2-signal.good{ color:var(--v2-green); }
.v2-signal.warn{ color:var(--v2-amber); }

/* restrained search affordance (home) */
.v2-search{
  display:flex; align-items:center; justify-content:space-between; gap:14px;
  width:100%; margin-top:30px; padding:0 20px; height:58px;
  background:transparent; border:1px solid var(--v2-line); border-radius:14px;
  font:inherit; font-size:16px; color:var(--v2-faint); cursor:pointer; text-align:left;
}
.v2-search .chev{ color:var(--v2-faint); font-size:22px; font-weight:300; }
.v2-search:active{ background:#FFFFFF; }

/* own: private marker */
.v2-private-rule{ height:3px; background:var(--v2-green); border:none; margin:16px 0 26px; opacity:.85; }

/* ---------- propagation primitives (forms, conversation, provenance) ---------- */
.v2-back{
  display:inline-block; background:none; border:none; padding:0; margin:0 0 22px;
  font:inherit; font-size:14.5px; color:var(--v2-mute); cursor:pointer;
}
.v2-field{ margin-top:26px; }
.v2-field label{
  display:block; font-size:11px; font-weight:600; letter-spacing:.16em;
  text-transform:uppercase; color:var(--v2-mute); margin:0 0 4px;
}
.v2-input{
  width:100%; font:inherit; font-size:16.5px; color:var(--v2-ink);
  background:transparent; border:none; border-bottom:1px solid var(--v2-line);
  border-radius:0; padding:12px 0; outline:none; box-sizing:border-box;
}
.v2-input::placeholder{ color:var(--v2-faint); }
.v2-input:focus{ border-bottom-color:var(--v2-ink); }
.v2-composer{ display:flex; gap:10px; align-items:flex-end; margin-top:20px; }
.v2-composer .v2-input{ flex:1; }
.v2-send{
  font:inherit; font-size:14px; font-weight:600; color:var(--v2-ink);
  background:none; border:1px solid var(--v2-line); border-radius:999px;
  padding:11px 20px; cursor:pointer; white-space:nowrap;
}
/* V2 primary call-to-action: ink-filled pill. Green stays reserved for
   estimates, private value, and favorable signals. */
.v2-cta{
  display:block; width:100%; font:inherit; font-size:15.5px; font-weight:600;
  color:#fff; background:var(--v2-ink); border:none; border-radius:999px;
  padding:15px 20px; cursor:pointer;
}
.v2-cta:active{ transform:scale(.985); }
.v2-msg{ margin-top:24px; font-size:15.5px; line-height:1.62; color:#33312A; }
.v2-msg.me{ text-align:right; }
.v2-msg.me .in{ display:inline-block; text-align:left; max-width:88%; }
.v2-msg.ai{ border-left:2px solid var(--v2-line); padding-left:16px; }
/* provenance + tiered-answer markup, subordinate in v2 */
body.vis2 .prov{ font-size:12px; color:var(--v2-faint); margin-top:10px; line-height:1.6; }
body.vis2 .prov .dot{ display:inline-block; width:3px; height:3px; border-radius:50%; background:var(--v2-line); margin:0 7px; vertical-align:2px; }
body.vis2 .tier{
  display:inline-block; font-size:10.5px; font-weight:650; letter-spacing:.12em;
  text-transform:uppercase; color:var(--v2-mute); margin-bottom:8px;
}
body.vis2 .tier.fact{ color:var(--v2-ink); }
body.vis2 .tier.est{ color:var(--v2-mute); }
body.vis2 .tier.asmp{ color:var(--v2-amber); }
body.vis2 .check-row{ display:flex; gap:10px; align-items:flex-start; font-size:14.5px; line-height:1.6; color:#33312A; margin-top:10px; }
body.vis2 .check-ico{ flex:none; width:22px; height:22px; border-radius:50%; display:grid; place-items:center; font-size:12px; font-weight:700; color:var(--v2-mute); border:1px solid var(--v2-line); }
body.vis2 .check-ico.ok{ color:var(--v2-green); border-color:var(--v2-green); }
body.vis2 .check-ico.no{ color:var(--v2-faint); }
/* selected state for text choice rows (context picker etc.) */
.v2-path .sel{ color:var(--v2-green); font-size:13px; font-weight:650; letter-spacing:.06em; text-transform:uppercase; white-space:nowrap; }
/* quiet notice block (replaces banner-flag) */
.v2-notice{ margin-top:34px; padding-top:18px; border-top:1px solid var(--v2-line); }
.v2-notice .t{ font-size:14px; font-weight:650; color:var(--v2-ink); margin-bottom:8px; }
