/* ══════════════════════════════════════════════════════
   HypeCity — Shared Design System
   dashboard/shared.css
   ══════════════════════════════════════════════════════ */

/* ── FONTS ──
 * Day 26 TYCOON-DESIGN-MIGRATION-001 Step 1: swap DM Serif Display + DM Sans
 * for Fraunces + Inter (Architectural Editorial direction). Section 3 of the
 * Migration Spec. Step 2 of the migration also adds <link> loaders to every
 * HTML <head>; this @import remains the canonical loader for CSS contexts.
 */
@import url('https://fonts.googleapis.com/css2?family=Fraunces:ital,opsz,wght@0,9..144,400..600;1,9..144,400..600&family=Inter:wght@400;500;600;700;800&family=JetBrains+Mono:wght@400;500;600&display=swap');

/* ── TOKENS ──
 * Day 26 Step 1: replace deep-black mint `crypto/Robinhood` direction with
 * canonical Architectural Editorial v4 — concrete cream + antique brass +
 * Fraunces. Source of truth: docs/design/MIGRATION-SPEC.md Sections 1, 3, 4.
 *
 * IMPORTANT — intermediate state during the multi-step migration:
 *   Many production consumers still reference legacy token names that this
 *   :root removes (e.g. --bg-surface → --bg-paper, --accent → --brass,
 *   --text-primary → --ink-primary, --signal-* → renamed). Steps 3–4 of
 *   the migration update those consumers. Until they land, expect visual
 *   breakage on pages that haven't been migrated; this is by design (the
 *   spec explicitly forbids a sed-based mass replace) and gives reviewers a
 *   clean diff per file.
 */
:root {
  /* ── Backgrounds ─────────────────────────────────────── */
  --bg-base:     #EAE7E0;   /* concrete cream — canvas */
  --bg-paper:    #F1EEE7;   /* paler cream — hero panels, footer surfaces */
  --bg-elevated: #DDD8CC;   /* ghost buttons, well containers */
  --bg-card:     #F5F3EE;   /* cards — slightly elevated above canvas */
  --bg-ink:      #1F1D1A;   /* inverted — footer + legal strip only */
  --bg-well:     #D5CFC0;   /* inputs, code blocks */

  /* ── Borders / Rules ─────────────────────────────────── */
  --rule-subtle:  #D9D3C6;  /* hairline — every card border */
  --rule-default: #BFB6A4;  /* input + nav borders */
  --rule-strong:  #8B8273;  /* section dividers */

  /* ── Ink (text colors) ───────────────────────────────── */
  --ink-primary:   #1F1D1A; /* warm near-black — body + headlines */
  --ink-secondary: #5A554E; /* secondary copy, deck text */
  --ink-tertiary:  #8B847A; /* labels, metadata */
  --ink-muted:     #B8B0A1; /* placeholders, disabled state */

  /* CTA inks (Appendix B — net new) */
  --ink-cta:       #1F1D1A;
  --ink-cta-hover: #000000;

  /* ── Brass primary accent — THE big swap (mint → brass) ── */
  --brass:        #8B6F3D;
  --brass-hover:  #745C30; /* hover/press — darker, not brighter */
  --brass-deep:   #5E4D2A; /* offset shadow color in tactile shadows */
  --brass-light:  #C9A961; /* secondary brass for hover-glow + footer accents */
  --brass-soft:    rgba(139,111,61,0.08); /* wash tint behind chips */
  --brass-soft-hi: rgba(139,111,61,0.14); /* higher-contrast wash */
  --brass-border:  rgba(139,111,61,0.30); /* borders on coral-tinted cards */

  /* The italic emphasis "brand moment" — ONE WORD per H1 only */
  --brass-emphasis: #B8893F;

  /* ── Gold — reserved for Founding Council tier ───────── */
  --gold:      #C9A961; /* Founding tier border + scarcity counter */
  --gold-deep: #9A7C28; /* Gold tactile shadow color */
  --gold-soft: rgba(201,169,97,0.12);

  /* ── Data semantics — neon → editorial ───────────────── */
  --pos:  #4A6B4A; /* sage forest — calmer positive than mint */
  --neg:  #8B4444; /* brick rust — more editorial */
  --warn: #B8893F; /* mustard ochre — matches brass-emphasis */
  --info: #6B6B6B; /* concrete grey */

  /* ── SEC-safe signal ladder (display labels in markup) ── */
  --signal-sb: #4A6B4A;    --signal-sb-bg: rgba(74,107,74,0.10);   /* STRONG_BUY — ↑↑ Strong Fit */
  --signal-b:  #5A7480;    --signal-b-bg:  rgba(90,116,128,0.10);  /* BUY — ↑ Fits (slate-stone, LOCKED Day 25) */
  --signal-h:  #6B6B6B;    --signal-h-bg:  rgba(107,107,107,0.10); /* HOLD — → Neutral */
  --signal-w:  #B8893F;    --signal-w-bg:  rgba(184,137,63,0.10);  /* WATCH — ◎ Monitor */
  --signal-av: #8B4444;    --signal-av-bg: rgba(139,68,68,0.10);   /* AVOID — ✕ Does Not Fit */

  /* ── Typography (Section 3) ──────────────────────────── */
  --font-display: 'Fraunces', 'Times New Roman', Georgia, serif;
  --font-body:    'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
  --font-mono:    'JetBrains Mono', 'SF Mono', Consolas, monospace;

  /* ── Hover tilt (Section 4) ──────────────────────────── */
  --tilt:      0.8deg;
  --tilt-neg: -0.8deg;

  /* ── Tactile shadows (Section 4) ─────────────────────── */
  --shadow-tactile-sm:       0 2px 0 0 var(--ink-primary);
  --shadow-tactile:          0 3px 0 0 var(--ink-primary);
  --shadow-tactile-lg:       0 5px 0 0 var(--ink-primary);
  --shadow-tactile-brass:    0 3px 0 0 var(--brass-deep);
  --shadow-tactile-brass-lg: 0 5px 0 0 var(--brass-deep);
  --shadow-tactile-gold:     0 3px 0 0 var(--gold-deep);
  --shadow-tactile-gold-lg:  0 5px 0 0 var(--gold-deep);

  /* ── Soft paper shadows (Section 4) ──────────────────── */
  --shadow-soft-1: 0 1px 2px rgba(31,29,26,0.05), 0 1px 1px rgba(31,29,26,0.04);
  --shadow-soft-2: 0 4px 12px rgba(31,29,26,0.08), 0 2px 4px rgba(31,29,26,0.04);
  --shadow-soft-3: 0 12px 28px rgba(31,29,26,0.12), 0 4px 8px rgba(31,29,26,0.06);

  /* ── Utility tokens — preserved from v1 ──────────────── */
  --radius-sm: 6px;
  --radius-md: 10px;
  --radius-lg: 14px;
  --radius-xl: 20px;
  --ease: all .14s cubic-bezier(.4,0,.2,1);
}

/* ── RESET ── */
*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }
html { background: var(--bg-base); color: var(--text-primary); }
body {
  font-family: var(--font-body);
  font-size: 14px;
  line-height: 1.6;
  background: var(--bg-base);
  color: var(--text-primary);
}
a { text-decoration: none; color: inherit; }
button { font-family: inherit; cursor: pointer; }

/* ══════════════════════════════════════════════════════
   NAVIGATION
   ══════════════════════════════════════════════════════ */
#hc-nav {
  position: sticky; top: 0; z-index: 1000;
  background: var(--bg-surface);
  border-bottom: 1px solid var(--bg-border);
}
.nav-inner {
  max-width: 1280px; margin: 0 auto;
  display: flex; align-items: center;
  gap: 0; height: 56px; padding: 0 24px;
}
.nav-logo {
  display: flex; align-items: baseline; gap: 0;
  flex-shrink: 0; margin-right: 24px;
}
.logo-hype { font-family: var(--font-display); font-size: 19px; color: var(--text-primary); }
.logo-city { font-family: var(--font-display); font-size: 19px; color: var(--accent); }
.logo-tag {
  font-size: 9px; color: var(--text-muted); font-family: var(--font-mono);
  text-transform: uppercase; letter-spacing: .1em;
  margin-left: 8px; padding: 1px 5px;
  border: 1px solid var(--bg-border); border-radius: 3px;
}
.nav-links { display: flex; align-items: center; flex: 1; }
.nav-item-group { position: relative; }
.nav-item-group:hover .nav-mega { opacity: 1; pointer-events: all; transform: translateY(0); }
.nav-link {
  display: block; padding: 0 16px; height: 56px; line-height: 56px;
  font-size: 13px; font-weight: 400; color: var(--text-secondary);
  transition: var(--ease); white-space: nowrap;
}
.nav-link:hover, .nav-link.active { color: var(--text-primary); }
.nav-link.active { box-shadow: inset 0 -2px 0 var(--accent); }

/* Mega menu */
.nav-mega {
  position: absolute; top: 56px; left: 0;
  background: var(--bg-surface); border: 1px solid var(--bg-border);
  border-radius: var(--radius-lg); padding: 16px; min-width: 260px;
  display: flex; gap: 20px;
  opacity: 0; pointer-events: none;
  transform: translateY(-6px); transition: var(--ease);
  box-shadow: 0 16px 40px rgba(0,0,0,.5);
}
.mega-col { display: flex; flex-direction: column; gap: 2px; flex: 1; }
.mega-label {
  font-size: 10px; font-family: var(--font-mono); text-transform: uppercase;
  letter-spacing: .08em; color: var(--text-muted);
  margin-bottom: 6px; padding-bottom: 6px; border-bottom: 1px solid var(--bg-border);
}
.mega-col a {
  font-size: 13px; color: var(--text-secondary);
  padding: 5px 8px; border-radius: var(--radius-sm); transition: var(--ease);
}
.mega-col a:hover { background: var(--bg-elevated); color: var(--text-primary); }

/* Right */
.nav-right { display: flex; align-items: center; gap: 12px; margin-left: auto; }
.nav-live { display: flex; align-items: center; gap: 5px; font-size: 11px; color: var(--accent); font-family: var(--font-mono); }
.live-dot {
  width: 6px; height: 6px; border-radius: 50%; background: var(--accent);
  animation: hcPulse 2s infinite; flex-shrink: 0;
}
@keyframes hcPulse { 0%,100%{opacity:1} 50%{opacity:.3} }
.nav-cta {
  background: var(--accent); color: #020A05;
  padding: 7px 16px; border-radius: var(--radius-sm);
  font-size: 12px; font-weight: 500; transition: var(--ease);
}
.nav-cta:hover { opacity: .9; }

/* Ticker strip */
.nav-ticker {
  border-top: 1px solid var(--bg-border); height: 30px;
  display: flex; align-items: center; overflow: hidden; padding: 0 24px;
}
.ticker-label {
  font-size: 9px; font-family: var(--font-mono); text-transform: uppercase;
  letter-spacing: .1em; color: var(--text-muted); flex-shrink: 0;
  margin-right: 20px; padding-right: 20px; border-right: 1px solid var(--bg-border);
}
.ticker-track {
  display: flex; animation: tickerScroll 55s linear infinite; white-space: nowrap;
}
@keyframes tickerScroll { 0%{transform:translateX(0)} 100%{transform:translateX(-50%)} }
.ticker-item {
  display: flex; align-items: center; gap: 8px;
  padding: 0 20px; border-right: 1px solid var(--bg-border);
  font-size: 11px; cursor: pointer;
}
.ticker-sig {
  font-family: var(--font-mono); font-size: 9px; font-weight: 500;
  padding: 1px 5px; border-radius: 3px;
}
.ticker-name { color: var(--text-primary); }
.ticker-yield { color: var(--text-muted); }

/* ══════════════════════════════════════════════════════
   BUTTONS
   ══════════════════════════════════════════════════════ */
.btn-primary {
  background: var(--accent); color: #020A05;
  padding: 11px 24px; border-radius: var(--radius-sm);
  font-size: 13px; font-weight: 500; transition: var(--ease);
  display: inline-block; border: none;
}
.btn-primary:hover { opacity: .9; }
.btn-ghost {
  background: transparent; color: var(--text-secondary);
  padding: 11px 24px; border-radius: var(--radius-sm);
  font-size: 13px; border: 1px solid var(--bg-border);
  transition: var(--ease); display: inline-block;
}
.btn-ghost:hover { border-color: var(--text-muted); color: var(--text-primary); }

/* ══════════════════════════════════════════════════════
   FILTER PILLS
   ══════════════════════════════════════════════════════ */
.filter-pills {
  display: flex; gap: 6px; flex-wrap: wrap;
  padding: 14px 24px; border-bottom: 1px solid var(--bg-border);
}
.pill {
  padding: 5px 14px; border-radius: 99px; border: 1px solid var(--bg-border);
  font-size: 12px; color: var(--text-secondary); cursor: pointer;
  transition: var(--ease); background: transparent; white-space: nowrap;
}
.pill:hover { border-color: var(--text-muted); color: var(--text-primary); }
.pill.active { background: var(--accent-dim); border-color: var(--accent-border); color: var(--accent); }

/* ══════════════════════════════════════════════════════
   SIGNAL UTILITIES
   ══════════════════════════════════════════════════════ */
.signal-badge {
  font-size: 9px; font-family: var(--font-mono); font-weight: 500;
  padding: 2px 7px; border-radius: 3px;
  text-transform: uppercase; letter-spacing: .06em;
  display: inline-block;
}
.sig-STRONG_BUY { color:var(--signal-sb); background:var(--signal-sb-bg); }
.sig-BUY        { color:var(--signal-b);  background:var(--signal-b-bg);  }
.sig-HOLD       { color:var(--signal-h);  background:var(--signal-h-bg);  }
.sig-WATCH      { color:var(--signal-w);  background:var(--signal-w-bg);  }
.sig-AVOID      { color:var(--signal-av); background:var(--signal-av-bg); }

/* ══════════════════════════════════════════════════════
   HERO
   ══════════════════════════════════════════════════════ */
.hc-hero {
  border-bottom: 1px solid var(--bg-border);
  background: var(--bg-surface);
}
.hc-hero-inner {
  max-width: 1280px; margin: 0 auto; padding: 64px 24px 0;
}
.hc-eyebrow {
  display: flex; align-items: center; gap: 12px;
  font-size: 11px; font-family: var(--font-mono);
  text-transform: uppercase; letter-spacing: .12em;
  color: var(--accent); margin-bottom: 20px;
}
.eyebrow-line { width: 24px; height: 1.5px; background: var(--accent); flex-shrink: 0; }
.hc-h1 {
  font-family: var(--font-display);
  font-size: clamp(32px, 5vw, 52px); font-weight: 400;
  line-height: 1.1; letter-spacing: -.5px;
  color: var(--text-primary); margin-bottom: 20px; max-width: 600px;
}
.hc-h1 em { font-style: normal; color: var(--accent); }
.hc-sub {
  font-size: 15px; color: var(--text-secondary);
  line-height: 1.7; max-width: 460px; margin-bottom: 32px;
}
.hero-actions { display: flex; gap: 10px; flex-wrap: wrap; margin-bottom: 48px; }
.hero-stats {
  display: grid; grid-template-columns: repeat(4,1fr);
  border-top: 1px solid var(--bg-border);
}
.stat-item {
  padding: 20px 0; border-right: 1px solid var(--bg-border);
}
.stat-item:last-child { border-right: none; }
.stat-num {
  font-family: var(--font-display); font-size: 26px;
  color: var(--text-primary); letter-spacing: -.3px; margin-bottom: 4px;
}
.stat-label {
  font-size: 10px; font-family: var(--font-mono);
  text-transform: uppercase; letter-spacing: .07em; color: var(--text-muted);
}

/* ══════════════════════════════════════════════════════
   NEIGHBORHOOD CARDS
   ══════════════════════════════════════════════════════ */
.hood-card {
  background: var(--bg-surface); border: 1px solid var(--bg-border);
  border-radius: var(--radius-lg); overflow: hidden; cursor: pointer;
  transition: var(--ease);
}
.hood-card:hover {
  border-color: var(--accent-border); background: var(--bg-elevated);
  transform: translateY(-1px);
}
.hood-img {
  width: 100%; height: 140px; object-fit: cover; display: block;
  background: var(--bg-elevated);
}
.hood-img-placeholder {
  width: 100%; height: 140px;
  background: linear-gradient(135deg, var(--bg-elevated), var(--bg-border));
}
.hood-body { padding: 14px 16px; }
.hood-top { display: flex; align-items: center; justify-content: space-between; margin-bottom: 8px; }
.score-ring {
  width: 36px; height: 36px; border-radius: 50%; border: 2px solid;
  display: flex; align-items: center; justify-content: center;
  font-family: var(--font-mono); font-size: 12px; font-weight: 500;
}
.hood-name { font-size: 15px; font-weight: 500; color: var(--text-primary); margin-bottom: 2px; }
.hood-city { font-size: 11px; color: var(--text-muted); margin-bottom: 12px; }
.hood-data { display: grid; grid-template-columns: 1fr 1fr; gap: 6px; }
.data-cell { background: var(--bg-base); border-radius: var(--radius-sm); padding: 6px 8px; }
.data-cell-label {
  font-size: 8px; font-family: var(--font-mono); text-transform: uppercase;
  letter-spacing: .07em; color: var(--text-muted); margin-bottom: 2px;
}
.data-cell-val { font-size: 13px; font-weight: 500; color: var(--text-primary); }
.data-cell-val.green { color: var(--signal-sb); }

/* ══════════════════════════════════════════════════════
   PAGE HEADER (inner pages)
   ══════════════════════════════════════════════════════ */
.page-header { border-bottom: 1px solid var(--bg-border); background: var(--bg-surface); }
.page-header-inner { max-width: 1280px; margin: 0 auto; padding: 40px 24px 32px; }
.page-eyebrow {
  font-size: 10px; font-family: var(--font-mono); text-transform: uppercase;
  letter-spacing: .1em; color: var(--accent); margin-bottom: 8px;
}
.page-title {
  font-family: var(--font-display); font-size: 36px;
  font-weight: 400; color: var(--text-primary); margin-bottom: 8px;
}
.page-sub { font-size: 14px; color: var(--text-secondary); }

/* ══════════════════════════════════════════════════════
   SECTION TITLE
   ══════════════════════════════════════════════════════ */
.section-title {
  font-size: 11px; font-family: var(--font-mono); text-transform: uppercase;
  letter-spacing: .08em; color: var(--text-muted);
  margin-bottom: 12px; padding-bottom: 8px; border-bottom: 1px solid var(--bg-border);
}

/* ══════════════════════════════════════════════════════
   DEAL FEED
   ══════════════════════════════════════════════════════ */
.deal-feed { display: flex; flex-direction: column; gap: 8px; }
.deal-row {
  display: grid; grid-template-columns: auto 1fr auto;
  gap: 16px; align-items: center;
  padding: 14px 18px; border: 1px solid var(--bg-border);
  border-radius: var(--radius-md); background: var(--bg-surface);
  cursor: pointer; transition: var(--ease);
}
.deal-row:hover { border-color: var(--accent-border); }
.deal-type-badge {
  font-size: 9px; font-family: var(--font-mono); text-transform: uppercase;
  letter-spacing: .08em; padding: 3px 8px; border-radius: 3px;
  color: var(--signal-b); background: var(--signal-b-bg); white-space: nowrap;
}
.deal-name { font-size: 14px; font-weight: 500; color: var(--text-primary); }
.deal-city { font-size: 11px; color: var(--text-muted); }
.deal-price { font-family: var(--font-mono); font-size: 15px; font-weight: 500; color: var(--accent); text-align: right; }
.deal-sqm { font-size: 10px; color: var(--text-muted); text-align: right; }

/* ══════════════════════════════════════════════════════
   SIDEBAR CARDS
   ══════════════════════════════════════════════════════ */
.sidebar-card {
  background: var(--bg-surface); border: 1px solid var(--bg-border);
  border-radius: var(--radius-lg); padding: 16px; margin-bottom: 12px;
}
.sidebar-card-title {
  font-size: 10px; font-family: var(--font-mono); text-transform: uppercase;
  letter-spacing: .08em; color: var(--text-muted);
  margin-bottom: 12px; padding-bottom: 10px; border-bottom: 1px solid var(--bg-border);
}
.sidebar-row {
  display: flex; justify-content: space-between; align-items: center;
  padding: 7px 0; border-bottom: 1px solid var(--bg-line); font-size: 12px;
}
.sidebar-row:last-child { border-bottom: none; }
.sidebar-row-label { color: var(--text-muted); }
.sidebar-row-val { color: var(--text-primary); font-family: var(--font-mono); font-size: 12px; }

/* ══════════════════════════════════════════════════════
   BREADCRUMBS (Day 28 D2)
   Spec: mono 11px, uppercase, letter-spacing 0.14em, --ink-tertiary;
   separator › in --rule-strong; current crumb Title Case in
   --ink-primary, no link. Hover on link segments → --brass.
   ══════════════════════════════════════════════════════ */
.hc-breadcrumbs {
  font-family: var(--font-mono);
  font-size: 11px;
  text-transform: uppercase;
  letter-spacing: 0.14em;
  color: var(--ink-tertiary);
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 0.45em;
  padding: 14px 24px;
  max-width: 1280px;
  margin: 0 auto;
}
.hc-breadcrumbs a {
  color: var(--ink-tertiary);
  text-decoration: none;
  transition: color .15s;
}
.hc-breadcrumbs a:hover,
.hc-breadcrumbs a:focus-visible {
  color: var(--brass);
}
.hc-breadcrumbs .sep {
  color: var(--rule-strong);
  user-select: none;
}
.hc-breadcrumbs .current {
  color: var(--ink-primary);
  text-transform: none;
  letter-spacing: 0;
}

/* ══════════════════════════════════════════════════════
   SHARED NAV JS TICKER (inline script placeholder)
   ══════════════════════════════════════════════════════ */
