/* ── TOKENS ─────────────────────────────────────────────── */
:root{
  --brand-red:#BE1E2D; --brand-red-600:#9E1925; --brand-red-100:#FBE9EB;
  --ink:#181A22; --graphite:#22242D; --graphite-2:#2E3038;
  --slate:#5A5A5A; --slate-2:#8A8A8A; --mist:#BFBFBF;
  --fog:#E5E5E5; --cloud:#F1F1F1; --paper:#F4F5F8; --white:#fff;
  --ivory:#F5EFE6; --jade:#2F6B5E; --jade-bright:#0FA968; --gold:#B89653;
  --fg:var(--ink); --fg-1:var(--graphite); --fg-2:var(--slate); --fg-3:var(--slate-2);
  --bg:var(--paper); --border:var(--fog); --accent:var(--brand-red);
  --accent-hover:var(--brand-red-600); --accent-soft:var(--brand-red-100);
  --font-sans:'Hanken Grotesk',ui-sans-serif,system-ui,sans-serif;
  --font-display:'Poppins','Hanken Grotesk',ui-sans-serif,sans-serif;
  --font-serif:'Instrument Serif',ui-serif,Georgia,serif;
  --font-cjk:'Noto Serif SC',ui-serif,serif;
  --font-mono:'JetBrains Mono',ui-monospace,monospace;
  --ease-out:cubic-bezier(0.22,1,0.36,1);
  --ease-spring:cubic-bezier(0.34,1.56,0.64,1);
  --shadow-sm:0 1px 2px rgba(24,26,34,.06),0 1px 1px rgba(24,26,34,.04);
  --shadow-md:0 6px 14px -4px rgba(24,26,34,.10),0 2px 4px rgba(24,26,34,.05);
  --shadow-lg:0 18px 36px -12px rgba(24,26,34,.16),0 6px 12px -4px rgba(24,26,34,.06);
  --ring:0 0 0 3px rgba(190,30,45,.22);
  --container:1260px; --nav-height:92px;
}
*,*::before,*::after{margin:0;padding:0;box-sizing:border-box;}
html{scroll-behavior:smooth;scroll-padding-top:var(--nav-height);}
body{font-family:var(--font-sans);font-size:16px;line-height:1.55;color:var(--fg-1);background:var(--paper);-webkit-font-smoothing:antialiased;overflow-x:hidden;}
img{display:block;max-width:100%;}
a{color:inherit;text-decoration:none;}
ul,ol{list-style:none;}
button{font-family:inherit;cursor:pointer;border:0;background:transparent;}
:focus-visible{outline:0;box-shadow:var(--ring);border-radius:4px;}

/* LAYOUT */
.w{max-width:var(--container);margin:0 auto;padding:0 40px;}
@media(max-width:768px){.w{padding:0 20px;}}
.eyebrow{font-family:var(--font-sans);font-size:12px;font-weight:600;letter-spacing:.18em;text-transform:lowercase;color:var(--fg-2);display:inline-flex;align-items:center;gap:8px;}
.eyebrow.red{color:var(--accent);}
.eyebrow::before{content:"";width:24px;height:1px;background:currentColor;opacity:.5;}
.h2{font-family:var(--font-display);font-weight:700;font-size:clamp(28px,3.4vw,46px);line-height:1.08;letter-spacing:-.03em;color:var(--ink);}
.h2 em{font-family:var(--font-serif);font-style:italic;font-weight:400;color:var(--accent);}
.btn{display:inline-flex;align-items:center;gap:10px;font-family:var(--font-sans);font-weight:600;font-size:14px;letter-spacing:.01em;text-transform:lowercase;padding:13px 22px;border-radius:4px;cursor:pointer;transition:background 200ms var(--ease-out),color 200ms var(--ease-out),transform 200ms var(--ease-out);}
.btn:hover{transform:translateY(-1px);}.btn:active{transform:translateY(0);}
.btn svg{transition:transform 250ms var(--ease-out);}
.btn:hover svg.arr{transform:translateX(3px);}
.btn-primary{background:var(--accent);color:#fff;}.btn-primary:hover{background:var(--accent-hover);box-shadow:0 8px 20px rgba(190,30,45,.28);}
.btn-ghost{background:transparent;color:var(--ink);border:1px solid var(--ink);}.btn-ghost:hover{background:var(--ink);color:#fff;}
.btn-ghost-dark{background:transparent;color:#fff;border:1px solid rgba(255,255,255,.3);}.btn-ghost-dark:hover{background:rgba(255,255,255,.08);border-color:rgba(255,255,255,.6);}
.rv{opacity:0;transform:translateY(24px);transition:opacity 700ms var(--ease-out),transform 700ms var(--ease-out);}
.rv.in{opacity:1;transform:none;}
.rv-l{opacity:0;transform:translateX(-32px);transition:opacity 800ms var(--ease-out),transform 800ms var(--ease-out);}
.rv-l.in{opacity:1;transform:none;}
.rv-r{opacity:0;transform:translateX(32px);transition:opacity 800ms var(--ease-out),transform 800ms var(--ease-out);}
.rv-r.in{opacity:1;transform:none;}
.d1{transition-delay:80ms;}.d2{transition-delay:160ms;}.d3{transition-delay:240ms;}
.d4{transition-delay:320ms;}.d5{transition-delay:400ms;}

/* ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ */
/* ░ SECTION-ANIM VARIANT ▶ START                              */
/* ░ Rollback options:                                         */
/* ░   1. Hard:   cp index.html.pre-animate-bak index.html     */
/* ░   2. Soft:   remove class "with-section-anim" from <body> */
/* ░   3. Surgical: delete this block + matching JS block      */
/* ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ */
body.with-section-anim section[data-screen-label]:not(.hero){position:relative;will-change:transform;transform:translateY(34px);transition:transform 900ms cubic-bezier(0.16,1,0.3,1);}
body.with-section-anim section[data-screen-label]:not(.hero).sec-in{transform:none;}
/* hairline red wash drawn in across the top of each section as it enters */
body.with-section-anim section[data-screen-label]:not(.hero)::before{content:"";position:absolute;top:0;left:0;height:1px;width:100%;background:linear-gradient(90deg,transparent 0%,var(--accent) 35%,var(--accent) 65%,transparent 100%);transform:scaleX(0);transform-origin:left;transition:transform 1100ms 180ms cubic-bezier(0.16,1,0.3,1);opacity:.55;pointer-events:none;z-index:6;}
body.with-section-anim section[data-screen-label]:not(.hero).sec-in::before{transform:scaleX(1);}
/* header stagger: applies to existing section header markup */
body.with-section-anim section[data-screen-label]:not(.hero) :where(.svc-head,.blog-head,.results-head,.testim-wrap,.about-head,.cta-content,.mpt-head,.ls-head) .eyebrow,
body.with-section-anim section[data-screen-label]:not(.hero) :where(.svc-head,.blog-head,.results-head,.testim-wrap,.about-head,.cta-content,.mpt-head,.ls-head) > .h2,
body.with-section-anim section[data-screen-label]:not(.hero) :where(.svc-head,.blog-head,.results-head,.testim-wrap,.about-head,.cta-content,.mpt-head,.ls-head) > h2,
body.with-section-anim section[data-screen-label]:not(.hero) :where(.svc-head,.blog-head,.results-head,.testim-wrap,.about-head,.cta-content,.mpt-head,.ls-head) > .lede{opacity:0;transform:translateY(14px);transition:opacity 720ms cubic-bezier(0.16,1,0.3,1),transform 720ms cubic-bezier(0.16,1,0.3,1);}
body.with-section-anim section[data-screen-label]:not(.hero).sec-in :where(.svc-head,.blog-head,.results-head,.testim-wrap,.about-head,.cta-content,.mpt-head,.ls-head) .eyebrow{opacity:1;transform:none;transition-delay:120ms;}
body.with-section-anim section[data-screen-label]:not(.hero).sec-in :where(.svc-head,.blog-head,.results-head,.testim-wrap,.about-head,.cta-content,.mpt-head,.ls-head) > h2,
body.with-section-anim section[data-screen-label]:not(.hero).sec-in :where(.svc-head,.blog-head,.results-head,.testim-wrap,.about-head,.cta-content,.mpt-head,.ls-head) > .h2{opacity:1;transform:none;transition-delay:220ms;}
body.with-section-anim section[data-screen-label]:not(.hero).sec-in :where(.svc-head,.blog-head,.results-head,.testim-wrap,.about-head,.cta-content,.mpt-head,.ls-head) > .lede{opacity:1;transform:none;transition-delay:340ms;}
/* signature: 八 watermark blooms in when about section enters */
body.with-section-anim .about-pane::before{opacity:0;transform:scale(.78) translateY(40px);transition:opacity 1400ms cubic-bezier(0.16,1,0.3,1),transform 1400ms cubic-bezier(0.16,1,0.3,1);}
body.with-section-anim .about-sec.sec-in .about-pane::before{opacity:.045;transform:none;transition-delay:280ms;}
/* signature: gentle continuous drift on CJK characters in meaning pane */
body.with-section-anim .meaning-eyebrow,
body.with-section-anim .about-eyebrow{animation:saSubtleFloat 14s ease-in-out infinite;will-change:transform;}
@keyframes saSubtleFloat{0%,100%{transform:translateY(0);}50%{transform:translateY(-2px);}}
/* card-grid micro-stagger on enter (uses existing children that don't have .rv) */
body.with-section-anim section[data-screen-label]:not(.hero).sec-in .listing-grid > *,
body.with-section-anim section[data-screen-label]:not(.hero).sec-in .condos-grid > *,
body.with-section-anim section[data-screen-label]:not(.hero).sec-in .homes-grid > *{animation:saCardRise 720ms cubic-bezier(0.16,1,0.3,1) both;}
body.with-section-anim section[data-screen-label]:not(.hero).sec-in .listing-grid > *:nth-child(1){animation-delay:340ms;}
body.with-section-anim section[data-screen-label]:not(.hero).sec-in .listing-grid > *:nth-child(2){animation-delay:400ms;}
body.with-section-anim section[data-screen-label]:not(.hero).sec-in .listing-grid > *:nth-child(3){animation-delay:460ms;}
body.with-section-anim section[data-screen-label]:not(.hero).sec-in .listing-grid > *:nth-child(4){animation-delay:520ms;}
body.with-section-anim section[data-screen-label]:not(.hero).sec-in :is(.condos-grid,.homes-grid) > *:nth-child(1){animation-delay:340ms;}
body.with-section-anim section[data-screen-label]:not(.hero).sec-in :is(.condos-grid,.homes-grid) > *:nth-child(2){animation-delay:400ms;}
body.with-section-anim section[data-screen-label]:not(.hero).sec-in :is(.condos-grid,.homes-grid) > *:nth-child(3){animation-delay:460ms;}
body.with-section-anim section[data-screen-label]:not(.hero).sec-in :is(.condos-grid,.homes-grid) > *:nth-child(4){animation-delay:520ms;}
@keyframes saCardRise{from{opacity:0;transform:translateY(20px);}to{opacity:1;transform:none;}}
/* respect reduced motion */
@media(prefers-reduced-motion:reduce){
  body.with-section-anim section[data-screen-label]:not(.hero),
  body.with-section-anim section[data-screen-label]:not(.hero)::before,
  body.with-section-anim section[data-screen-label]:not(.hero) :where(.svc-head,.blog-head,.results-head,.testim-wrap,.about-head,.cta-content,.mpt-head,.ls-head) :is(.eyebrow,.h2,h2,.lede),
  body.with-section-anim .about-pane::before,
  body.with-section-anim .meaning-eyebrow,
  body.with-section-anim .about-eyebrow,
  body.with-section-anim section[data-screen-label]:not(.hero) .listing-grid > *,
  body.with-section-anim section[data-screen-label]:not(.hero) :is(.condos-grid,.homes-grid) > *{transition:none!important;animation:none!important;opacity:1!important;transform:none!important;}
}
/* ░ SECTION-ANIM VARIANT ◀ END */

/* ── NAV ────────────────────────────────────────────────── */
/* Floating pill nav */
.v2-nav{position:fixed;top:14px;left:50%;transform:translateX(-50%);z-index:200;
  width:calc(100% - 28px);max-width:1180px;height:64px;
  display:flex;align-items:center;padding:0 8px 0 18px;gap:18px;
  background:rgba(18,20,28,.55);backdrop-filter:saturate(180%) blur(20px);-webkit-backdrop-filter:saturate(180%) blur(20px);
  border:1px solid rgba(255,255,255,.08);border-radius:18px;
  box-shadow:0 12px 40px -12px rgba(0,0,0,.55),0 1px 0 rgba(255,255,255,.06) inset;
  transition:background 280ms var(--ease-out),border-color 280ms,box-shadow 280ms,top 240ms var(--ease-out);}
.v2-nav.scrolled{top:10px;background:rgba(14,16,22,.78);border-color:rgba(255,255,255,.12);
  box-shadow:0 18px 50px -14px rgba(0,0,0,.7),0 1px 0 rgba(255,255,255,.08) inset;}
.nav-logo{display:flex;align-items:center;flex-shrink:0;}
.nav-logo img{height:46px;width:auto;display:block;transition:height 220ms var(--ease-out);}
.v2-nav.scrolled .nav-logo img{height:40px;}
.nav-links{display:flex;align-items:center;gap:2px;}
.nav-spacer{flex:1;}
.nav-actions{display:flex;align-items:center;gap:8px;flex-shrink:0;}
.nav-divider{width:1px;height:18px;background:rgba(255,255,255,.12);margin:0 4px;}
.nav-auth{font-size:13px;font-weight:600;letter-spacing:.01em;padding:10px 16px;border-radius:6px;transition:background 180ms,color 180ms,border-color 180ms,box-shadow 180ms;display:inline-flex;align-items:center;gap:6px;}
.nav-login{color:#181a22;background:#fff;box-shadow:0 1px 0 rgba(255,255,255,.4) inset,0 1px 2px rgba(0,0,0,.18);}
.nav-login:hover{background:#f3f4f6;color:#000;}
.nav-signup{color:#fff;background:var(--accent);box-shadow:0 1px 0 rgba(255,255,255,.18) inset,0 6px 18px -6px rgba(230,46,45,.55);}
.nav-signup:hover{background:var(--accent-hover);box-shadow:0 1px 0 rgba(255,255,255,.22) inset,0 10px 24px -6px rgba(230,46,45,.65);}
.nav-auth svg{transition:transform 180ms;}
.nav-signup:hover svg{transform:translateX(2px);}
.nav-cta{background:var(--accent);color:#fff;padding:9px 18px;border-radius:4px;font-size:13px;font-weight:600;text-transform:lowercase;letter-spacing:.02em;transition:background 200ms;}
.nav-cta:hover{background:var(--accent-hover);}

/* Override 8x-auth.js button styles to fit the dark hero nav. Specificity .v2-nav .nav-auth-login (0,2,0) wins over auth.js .nav-auth-login (0,1,0). */
.v2-nav .nav-auth-login{background:transparent;color:rgba(255,255,255,.92);border:1px solid rgba(255,255,255,.22);font-family:var(--font-sans);font-size:12.5px;font-weight:600;letter-spacing:.04em;text-transform:none;padding:8px 16px;border-radius:5px;transition:background 180ms var(--ease-out),border-color 180ms var(--ease-out),color 180ms var(--ease-out),box-shadow 180ms var(--ease-out),transform 120ms var(--ease-out);}
.v2-nav .nav-auth-login:hover{background:rgba(255,255,255,.08);border-color:rgba(255,255,255,.55);color:#fff;box-shadow:0 0 0 3px rgba(255,255,255,.04);}
.v2-nav .nav-auth-login:active{background:rgba(255,255,255,.16);border-color:rgba(255,255,255,.75);transform:translateY(1px);box-shadow:0 0 0 3px rgba(255,255,255,.08);}
.v2-nav .nav-auth-signup{background:var(--accent);color:#fff;border:1px solid var(--accent);font-family:var(--font-sans);font-size:12.5px;font-weight:600;letter-spacing:.04em;text-transform:none;padding:8px 18px;border-radius:5px;transition:background 180ms var(--ease-out),border-color 180ms var(--ease-out),box-shadow 200ms var(--ease-out),transform 120ms var(--ease-out);}
.v2-nav .nav-auth-signup:hover{background:var(--accent-hover);border-color:var(--accent-hover);box-shadow:0 8px 22px rgba(190,30,45,.38),0 0 0 3px rgba(190,30,45,.14);}
.v2-nav .nav-auth-signup:active{background:var(--accent-hover);transform:translateY(1px);box-shadow:0 3px 10px rgba(190,30,45,.34);}
/* Nav item with mega-menu */
.nav-item{position:relative;display:flex;align-items:center;}
.nav-item::after{content:"";position:absolute;left:-12px;right:-12px;top:100%;height:14px;pointer-events:none;}
.nav-item:hover::after,.nav-item:focus-within::after{pointer-events:auto;}
.nav-lnk{font-size:13px;font-weight:500;color:rgba(255,255,255,.62);letter-spacing:.02em;text-transform:lowercase;padding:8px 14px;border-radius:4px;cursor:pointer;transition:color .2s,background .2s;display:flex;align-items:center;gap:4px;white-space:nowrap;}
.nav-lnk:hover,.nav-item:hover .nav-lnk,.nav-item:focus-within .nav-lnk{color:#fff;background:rgba(255,255,255,.06);}
.nav-lnk-hi{color:rgba(255,255,255,.62);}
.nav-lnk svg{opacity:.5;transition:opacity .2s,transform .2s;}
.nav-item:hover .nav-lnk svg,.nav-item:focus-within .nav-lnk svg{opacity:1;transform:rotate(180deg);}
/* ── Mega-menu panel (Doss-style) ─────────────────────── */
.nav-mega{position:absolute;top:calc(100% + 14px);left:-8px;transform:translateY(-8px);
  min-width:780px;max-width:calc(100vw - 48px);
  background:linear-gradient(180deg,rgba(20,22,30,.97),rgba(12,14,20,.97));
  border:1px solid rgba(255,255,255,.08);border-radius:16px;padding:0;overflow:hidden;
  box-shadow:0 32px 80px -16px rgba(0,0,0,.7),0 0 0 1px rgba(255,255,255,.02) inset;
  backdrop-filter:blur(24px) saturate(150%);-webkit-backdrop-filter:blur(24px) saturate(150%);
  opacity:0;visibility:hidden;pointer-events:none;
  transition:opacity .24s var(--ease-out),transform .24s var(--ease-out),visibility .24s;}
.nav-item:hover .nav-mega,.nav-item:focus-within .nav-mega,.nav-item.is-open .nav-mega{opacity:1;visibility:visible;pointer-events:all;transform:translateY(0);}
.nav-item.mega-right .nav-mega{left:auto;right:-8px;}
/* Wide mega panel: pinned to viewport, not the trigger — prevents right-edge overflow */
.nav-item.mega-wide .nav-mega{position:fixed;top:92px;left:50%;right:auto;
  width:min(1100px,calc(100vw - 28px));min-width:0;max-width:none;
  max-height:calc(100vh - 110px);overflow-y:auto;overscroll-behavior:contain;
  transform:translateX(-50%) translateY(-8px);}
.nav-item.mega-wide:hover .nav-mega,.nav-item.mega-wide:focus-within .nav-mega,.nav-item.mega-wide.is-open .nav-mega{transform:translateX(-50%) translateY(0);}
/* Hover bridge for fixed dropdown — wide + tall enough to cover diagonal moves to the panel */
.nav-item.mega-wide::after{left:-220px;right:-220px;height:34px;}
.nav-mega::before{content:"";position:absolute;inset:0;pointer-events:none;opacity:.5;
  background-image:radial-gradient(rgba(255,255,255,.05) 1px,transparent 1px);background-size:16px 16px;}
.nav-mega::after{content:"";position:absolute;top:14px;right:14px;width:7px;height:7px;border-radius:50%;
  background:var(--accent);box-shadow:0 0 0 3px rgba(230,46,45,.16);pointer-events:none;}

/* Two-column layout: side intro + card grid */
.mega-grid{position:relative;display:grid;grid-template-columns:240px 1fr;min-height:280px;}
.mega-side{padding:24px 22px;border-right:1px dashed rgba(255,255,255,.09);display:flex;flex-direction:column;justify-content:space-between;}
.mega-side-label{font-family:var(--font-mono);font-size:10px;letter-spacing:.2em;text-transform:uppercase;color:rgba(255,255,255,.42);}
.mega-side-label .ml-num{color:var(--accent);font-weight:700;margin-right:6px;}
.mega-side-title{font-size:18px;font-weight:500;color:#fff;line-height:1.3;letter-spacing:-.015em;margin-top:14px;}
.mega-side-meta{margin-top:18px;font-family:var(--font-mono);font-size:10px;letter-spacing:.12em;color:rgba(255,255,255,.35);text-transform:uppercase;}
.mega-side-meta strong{color:#fff;font-weight:600;font-size:13px;font-family:var(--font-sans);letter-spacing:-.01em;display:block;margin-top:4px;text-transform:none;}

/* Popular searches list (sidebar) */
.popsearch{margin-top:22px;padding-top:18px;border-top:1px dashed rgba(255,255,255,.09);display:flex;flex-direction:column;gap:11px;}
.popsearch-label{font-family:var(--font-mono);font-size:10px;letter-spacing:.2em;text-transform:uppercase;color:rgba(255,255,255,.42);margin-bottom:4px;}
.popsearch-label .pl-num{color:var(--accent);font-weight:700;margin-right:6px;}
.ps-row{display:flex;flex-direction:column;gap:3px;}
.ps-parent{font-size:13px;font-weight:500;color:#fff;letter-spacing:-.005em;line-height:1.25;transition:color .18s;display:inline-flex;align-items:center;gap:6px;width:fit-content;}
.ps-parent::before{content:"";width:3px;height:3px;border-radius:50%;background:var(--accent);opacity:.55;transition:opacity .18s,transform .2s var(--ease-out);}
.ps-parent:hover{color:var(--accent);}
.ps-parent:hover::before{opacity:1;transform:scale(1.4);}
.ps-tags{font-family:var(--font-mono);font-size:10.5px;color:rgba(255,255,255,.42);letter-spacing:-.005em;line-height:1.5;padding-left:9px;}
.ps-tags a{color:rgba(255,255,255,.55);transition:color .18s;white-space:nowrap;}
.ps-tags a:hover{color:#fff;}
.ps-tags .dot{opacity:.45;}

.mega-cards{display:grid;grid-template-columns:1fr 1fr;gap:1px;background:rgba(255,255,255,.04);}
.mega-cards.cols-1{grid-template-columns:1fr;}
.mega-card{position:relative;background:rgba(16,18,26,.95);padding:18px;display:flex;flex-direction:column;gap:10px;min-height:148px;
  transition:background .22s,transform .22s;overflow:hidden;}
.mega-card:hover{background:rgba(24,26,34,.95);}
.mega-card::after{content:"";position:absolute;left:0;bottom:0;width:0;height:2px;background:var(--mi-accent,var(--accent));
  transition:width .35s var(--ease-out);}
.mega-card:hover::after{width:100%;}
.mc-head{display:flex;align-items:center;justify-content:space-between;gap:10px;}
.mc-label{display:flex;align-items:center;gap:7px;font-family:var(--font-mono);font-size:10.5px;font-weight:700;letter-spacing:.14em;
  text-transform:uppercase;color:var(--mi-accent,var(--accent));}
.mc-label svg{flex-shrink:0;}
.mc-arrow{color:rgba(255,255,255,.32);transition:transform .25s var(--ease-out),color .2s;flex-shrink:0;}
.mega-card:hover .mc-arrow{color:#fff;transform:translate(4px,-4px);}
.mc-illo{flex:1;display:flex;align-items:center;justify-content:center;min-height:70px;margin:4px 0;}
.mc-illo svg{max-width:100%;height:auto;}
.mc-desc{font-size:12px;color:rgba(255,255,255,.55);line-height:1.45;letter-spacing:-.005em;}

/* Compact mini-dropdown variant (for short link lists like Contact) */
.nav-mega.is-mini{min-width:0;width:268px;}
.nav-mega.is-mini::before{background-size:14px 14px;opacity:.4;}
.mini-head{padding:18px 18px 12px;border-bottom:1px dashed rgba(255,255,255,.09);position:relative;}
.mini-head-label{font-family:var(--font-mono);font-size:10px;letter-spacing:.2em;text-transform:uppercase;color:rgba(255,255,255,.42);}
.mini-head-label .ml-num{color:var(--accent);font-weight:700;margin-right:6px;}
.mini-head-title{font-size:15px;font-weight:500;color:#fff;line-height:1.35;letter-spacing:-.01em;margin-top:10px;}
.mini-head-meta{margin-top:10px;display:flex;flex-direction:column;gap:4px;}
.mini-head-meta a{font-size:12px;color:rgba(255,255,255,.62);letter-spacing:-.005em;display:inline-flex;align-items:center;gap:7px;transition:color .18s;}
.mini-head-meta a:hover{color:#fff;}
.mini-head-meta svg{flex-shrink:0;opacity:.55;}
.mini-list{position:relative;padding:8px;display:flex;flex-direction:column;gap:1px;background:rgba(255,255,255,.03);}
.mini-item{display:flex;align-items:center;gap:10px;padding:11px 12px;border-radius:6px;background:rgba(16,18,26,.6);
  font-size:13px;color:rgba(255,255,255,.78);letter-spacing:-.005em;transition:background .18s,color .18s;position:relative;overflow:hidden;}
.mini-item:hover{background:rgba(24,26,34,.95);color:#fff;}
.mini-item .mi-ic{flex-shrink:0;display:flex;align-items:center;justify-content:center;width:26px;height:26px;border-radius:5px;
  background:rgba(255,255,255,.04);color:rgba(255,255,255,.55);border:1px dashed rgba(255,255,255,.1);transition:color .18s,border-color .18s,background .18s;}
.mini-item:hover .mi-ic{color:var(--accent);border-color:rgba(230,46,45,.35);background:rgba(230,46,45,.06);}
.mini-item .mi-arrow{margin-left:auto;color:rgba(255,255,255,.28);transition:transform .22s var(--ease-out),color .18s;}
.mini-item:hover .mi-arrow{color:#fff;transform:translateX(3px);}

/* Mega footer strip */
.mega-foot{position:relative;display:flex;align-items:center;justify-content:space-between;gap:14px;padding:14px 22px;
  background:rgba(0,0,0,.28);border-top:1px solid rgba(255,255,255,.06);}
.mega-foot-stat{display:flex;align-items:center;gap:10px;font-size:12px;color:rgba(255,255,255,.62);}
.mega-foot-stat strong{color:#fff;font-weight:600;}
.mega-foot-stat .fs-dot{width:6px;height:6px;border-radius:50%;background:#0FA968;box-shadow:0 0 0 3px rgba(15,169,104,.18);animation:pulse 2s ease-in-out infinite;}
.mega-foot-right{display:flex;align-items:center;gap:6px;}
.mega-foot-cta{font-size:12.5px;font-weight:600;color:#fff;letter-spacing:.005em;
  display:inline-flex;align-items:center;gap:8px;padding:8px 14px;border-radius:6px;transition:background .2s,gap .2s;}
.mega-foot-cta:hover{background:rgba(255,255,255,.08);gap:11px;}
.mega-foot-cta svg{transition:transform .2s;}
.mega-foot-cta:hover svg{transform:translateX(2px);}
.mega-foot-link{font-size:11.5px;color:rgba(255,255,255,.42);padding:6px 10px;border-radius:5px;transition:color .18s,background .18s;}
.mega-foot-link:hover{color:#fff;background:rgba(255,255,255,.05);}

/* Explore tile grid (Featurebase-style) */
.explore-grid{position:relative;display:grid;grid-template-columns:repeat(4,1fr);grid-auto-rows:128px;gap:6px;padding:16px;}
/* Responsive: 4-col → 3-col → 2-col → 1-col; featured tile collapses its span as space shrinks */
@media(max-width:1080px){
  .explore-grid{grid-template-columns:repeat(3,1fr);grid-auto-rows:118px;}
}
@media(max-width:820px){
  .explore-grid{grid-template-columns:repeat(2,1fr);grid-auto-rows:108px;gap:5px;padding:12px;}
  .et.featured{grid-column:span 2;grid-row:span 1;}
  .et.featured .et-title{font-size:18px;}
  .et.featured .et-meta{font-size:11px;}
  .mega-foot{flex-wrap:wrap;gap:10px;padding:12px 16px;}
  .mega-foot-stat{font-size:11.5px;}
  .mega-foot-right{flex-wrap:wrap;}
}
@media(max-width:560px){
  .explore-grid{grid-template-columns:1fr;grid-auto-rows:96px;}
  .et.featured{grid-column:span 1;grid-row:span 1;}
}
.et{position:relative;border-radius:10px;overflow:hidden;background:#10121a;display:flex;align-items:flex-end;color:#fff;
  border:1px solid rgba(255,255,255,.06);isolation:isolate;}
.et.featured{grid-column:span 2;grid-row:span 2;}
.et-img{position:absolute;inset:0;background-size:cover;background-position:center;filter:saturate(1) brightness(1);transition:transform .5s var(--ease-out),filter .35s;z-index:0;}
.et:hover .et-img{transform:scale(1.06);filter:saturate(1.05) brightness(1.05);}
.et-overlay{position:absolute;inset:0;background:linear-gradient(180deg,rgba(0,0,0,0) 0%,rgba(0,0,0,.15) 55%,rgba(0,0,0,.7) 100%);z-index:1;}
.et-grid-tex{position:absolute;inset:0;background-image:linear-gradient(rgba(255,255,255,.025) 1px,transparent 1px),linear-gradient(90deg,rgba(255,255,255,.025) 1px,transparent 1px);background-size:24px 24px;z-index:2;pointer-events:none;}
.et-corner{position:absolute;top:8px;right:8px;width:6px;height:6px;border-radius:50%;background:var(--accent);box-shadow:0 0 0 3px rgba(230,46,45,.2);z-index:3;}
.et-body{position:relative;padding:12px 14px;z-index:4;width:100%;}
.et-title{font-size:14px;font-weight:700;letter-spacing:-.01em;line-height:1.2;}
.et.featured .et-title{font-size:20px;}
.et-meta{margin-top:4px;font-family:var(--font-mono);font-size:10px;letter-spacing:.06em;color:rgba(255,255,255,.75);}
.et.featured .et-meta{font-size:11.5px;}
.et-tag{display:inline-block;font-family:var(--font-mono);font-size:9.5px;font-weight:600;letter-spacing:.12em;text-transform:uppercase;
  color:#fff;background:rgba(0,0,0,.45);border:1px solid rgba(255,255,255,.16);padding:3px 7px;border-radius:3px;margin-bottom:8px;backdrop-filter:blur(4px);}

/* Category accent palette */
.mi-red{--mi-accent:#E62E2D;}
.mi-green{--mi-accent:#0FA968;}
.mi-gold{--mi-accent:#D4A24C;}
.mi-blue{--mi-accent:#4C8DD4;}
.mi-teal{--mi-accent:#2F9E94;}
.mi-purple{--mi-accent:#9B7CD4;}

/* View Transitions scaffolding — destination pages match these names */
@view-transition{navigation:auto;}
.mc-illo,.et{transition:opacity .2s;}
/* Market Intelligence — branded 8X pill (red scanner + blueprint accent) */
.nav-mi{position:relative;font-size:13px;font-weight:600;letter-spacing:.01em;padding:8px 14px 8px 11px;border-radius:999px;
  display:inline-flex;align-items:center;gap:8px;isolation:isolate;
  background:linear-gradient(180deg,rgba(22,16,18,.78),rgba(12,10,12,.78));
  color:#fff;transition:transform .25s var(--ease-out),filter .25s,background .25s;}
.nav-mi::before{content:"";position:absolute;inset:0;border-radius:999px;padding:1px;
  background:
    conic-gradient(from var(--mi-ang,0deg),
      rgba(190,30,45,.95) 0deg,
      rgba(190,30,45,.05) 90deg,
      rgba(255,255,255,.55) 180deg,
      rgba(190,30,45,.05) 270deg,
      rgba(190,30,45,.95) 360deg);
  -webkit-mask:linear-gradient(#000 0 0) content-box,linear-gradient(#000 0 0);
  -webkit-mask-composite:xor;mask-composite:exclude;pointer-events:none;
  animation:mi-spin 8s linear infinite;opacity:.9;}
.nav-mi::after{content:"";position:absolute;inset:1px;border-radius:999px;z-index:-1;
  background:radial-gradient(140% 220% at 0% 50%,rgba(190,30,45,.22),transparent 55%);
  opacity:.85;transition:opacity .25s;}
.nav-mi-label{color:#fff;font-family:var(--font-sans);}
.nav-mi-spark{width:15px;height:15px;flex-shrink:0;filter:drop-shadow(0 0 5px rgba(190,30,45,.4));}
.nav-mi:hover{transform:translateY(-.5px);filter:brightness(1.1);background:linear-gradient(180deg,rgba(34,20,24,.82),rgba(18,12,14,.82));}
.nav-mi:hover::after{opacity:1;}
@property --mi-ang{syntax:"<angle>";inherits:false;initial-value:0deg;}
@keyframes mi-spin{to{--mi-ang:360deg;}}
@keyframes pulse{0%,100%{opacity:1;transform:scale(1);}50%{opacity:.5;transform:scale(.8);}}

/* ── Mobile hamburger + sheet ─────────────────────────── */
.nav-burger{display:none;width:44px;height:44px;align-items:center;justify-content:center;border-radius:8px;
  color:#fff;background:rgba(255,255,255,.06);border:1px solid rgba(255,255,255,.1);
  transition:background .2s,border-color .2s;flex-shrink:0;}
.nav-burger:hover,.nav-burger:focus-visible{background:rgba(255,255,255,.12);border-color:rgba(255,255,255,.18);}
.nav-burger .bg-bars{position:relative;width:18px;height:14px;}
.nav-burger .bg-bars span{position:absolute;left:0;right:0;height:2px;background:currentColor;border-radius:1px;transition:transform .28s var(--ease-out),top .2s ease,opacity .2s;}
.nav-burger .bg-bars span:nth-child(1){top:0;}
.nav-burger .bg-bars span:nth-child(2){top:6px;}
.nav-burger .bg-bars span:nth-child(3){top:12px;}
body.nav-open .nav-burger .bg-bars span:nth-child(1){top:6px;transform:rotate(45deg);}
body.nav-open .nav-burger .bg-bars span:nth-child(2){opacity:0;}
body.nav-open .nav-burger .bg-bars span:nth-child(3){top:6px;transform:rotate(-45deg);}

.nav-sheet{position:fixed;inset:0;z-index:300;visibility:hidden;pointer-events:none;}
.nav-sheet-backdrop{position:absolute;inset:0;background:rgba(8,9,14,.55);opacity:0;
  transition:opacity .28s var(--ease-out);backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px);}
.nav-sheet-panel{position:absolute;top:0;right:0;bottom:0;width:min(420px,100%);
  background:linear-gradient(180deg,rgba(28,30,40,.99),rgba(16,18,26,.99));
  border-left:1px solid rgba(255,255,255,.08);
  transform:translateX(102%);transition:transform .34s var(--ease-out);
  display:flex;flex-direction:column;overflow:hidden;
  box-shadow:-20px 0 60px -10px rgba(0,0,0,.55);}
.nav-sheet.open{visibility:visible;pointer-events:auto;}
.nav-sheet.open .nav-sheet-backdrop{opacity:1;}
.nav-sheet.open .nav-sheet-panel{transform:translateX(0);}
.nav-sheet-panel::before{content:"";position:absolute;inset:0;pointer-events:none;opacity:.55;
  background-image:radial-gradient(rgba(255,255,255,.05) 1px,transparent 1px);background-size:14px 14px;}
.nav-sheet-panel::after{content:"";position:absolute;top:14px;left:14px;width:8px;height:8px;border-radius:50%;
  background:var(--accent);box-shadow:0 0 0 3px rgba(230,46,45,.14);pointer-events:none;}

.nav-sheet-head{position:relative;display:flex;align-items:center;justify-content:space-between;
  padding:18px 20px 18px 38px;border-bottom:1px dashed rgba(255,255,255,.08);}
.nav-sheet-head img{height:36px;width:auto;display:block;}
.nav-sheet-close{width:44px;height:44px;display:flex;align-items:center;justify-content:center;border-radius:8px;
  color:#fff;background:rgba(255,255,255,.06);border:1px solid rgba(255,255,255,.1);transition:background .2s;}
.nav-sheet-close:hover{background:rgba(255,255,255,.12);}

.nav-sheet-body{flex:1;overflow-y:auto;padding:18px 14px 8px;position:relative;-webkit-overflow-scrolling:touch;}
.ns-section{margin-bottom:18px;}
.ns-section:last-child{margin-bottom:0;}
.ns-eyebrow{display:flex;align-items:center;gap:10px;font-family:var(--font-mono);font-size:10px;letter-spacing:.2em;
  text-transform:uppercase;color:rgba(255,255,255,.42);padding:0 12px 10px;}
.ns-eyebrow .eb-num{color:var(--accent);font-weight:700;}
.ns-eyebrow .eb-tick{flex:1;height:1px;background:linear-gradient(90deg,rgba(255,255,255,.13),transparent);}
.ns-item{position:relative;display:flex;align-items:center;gap:14px;padding:13px 14px;border-radius:10px;
  min-height:60px;color:#fff;transition:background .18s;}
.ns-item:active{background:rgba(255,255,255,.07);}
.ns-item::before{content:"";position:absolute;left:0;top:14px;bottom:14px;width:2px;border-radius:2px;
  background:var(--mi-accent,var(--accent));opacity:0;transition:opacity .2s;}
.ns-item:active::before{opacity:1;}
.ns-item .mi-icon{width:42px;height:42px;}
.ns-item .mi-icon svg{width:22px;height:22px;}
.ns-item .mi-title{font-size:15px;margin-bottom:2px;}
.ns-item .mi-desc{font-size:12.5px;color:rgba(255,255,255,.5);}
.ns-link{display:flex;align-items:center;justify-content:space-between;padding:16px 16px;border-radius:10px;
  color:#fff;font-size:15px;font-weight:600;min-height:56px;transition:background .18s;}
.ns-link:active{background:rgba(255,255,255,.06);}
.ns-link svg{opacity:.4;}

.nav-sheet-foot{position:relative;padding:14px 18px calc(20px + env(safe-area-inset-bottom));
  border-top:1px dashed rgba(255,255,255,.08);background:rgba(0,0,0,.22);}
.nav-sheet-foot .nav-mi{margin-bottom:12px;justify-content:center;width:100%;padding:14px;font-size:13.5px;}
.ns-cta-row{display:grid;grid-template-columns:1fr 1fr;gap:10px;}
.ns-cta-row .nav-auth{justify-content:center;padding:14px;font-size:14px;}

/* ── HERO ───────────────────────────────────────────────── */
.hero{--accent:#E62E2D;--accent-dk:#C02020;--nav-h:var(--nav-height);position:relative;width:100%;height:100svh;min-height:600px;overflow:hidden;background:#000;color:#fff;}
#mapStage{position:absolute;inset:0;z-index:1;}
#mapPoster{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:center;z-index:2;opacity:1;transition:opacity .8s ease;pointer-events:none;}
#mapPoster.is-hidden{opacity:0;}
#mapStage .mapboxgl-canvas{display:block;width:100%!important;height:100%!important;}
#mapStage .mapboxgl-ctrl-top-right{top:calc(var(--nav-h) + 12px);right:16px;}
.hero-grad{position:absolute;inset:0;z-index:3;pointer-events:none;background:linear-gradient(90deg,rgba(6,12,24,.96) 0%,rgba(6,12,24,.82) 28%,rgba(6,12,24,.42) 48%,rgba(6,12,24,.08) 62%,transparent 74%),linear-gradient(0deg,rgba(6,12,24,.55) 0%,transparent 28%);}
.hero-frame{position:absolute;z-index:4;top:calc(var(--nav-h) + 20px);left:clamp(28px,4.5vw,72px);right:clamp(28px,4.5vw,72px);bottom:clamp(48px,6vh,92px);border:2px solid var(--accent);border-right:0;border-bottom:0;pointer-events:none;opacity:0;transition:opacity 1s var(--ease-out) .4s;}
.hero-frame::after{content:'';position:absolute;right:0;bottom:0;width:clamp(64px,8vw,96px);height:clamp(64px,8vw,96px);border-right:2px solid var(--accent);border-bottom:2px solid var(--accent);}
.hero-frame.in{opacity:1;}
.hero-inner{position:absolute;inset:0;z-index:5;display:flex;align-items:flex-end;padding:calc(var(--nav-h) + 24px) 56px 80px 88px;pointer-events:none;}
.hero-text{max-width:min(560px,46vw);color:#fff;display:flex;flex-direction:column;justify-content:flex-end;max-height:calc(100svh - var(--nav-h) - 104px);overflow:hidden;
  /* Capture pointer/touch events on the text panel so iPad/touch users can
     swipe vertically WITHOUT the map under it consuming the gesture. The map
     used to receive these touches (because hero-text had pointer-events:none)
     and pan instead of scrolling the page. */
  pointer-events:auto;touch-action:pan-y;}
.hero-inner{overflow:hidden;}
/* Hero responsive strategy: progressively shrink + drop decorative elements
   as viewport shortens. Each tier is tighter than the last so the h1 + key
   CTAs always fit, even on short laptop screens. */
/* ── Tier 1 (≤1000px height): tighter margins, smaller decoration ───── */
@media (max-height: 1000px) and (min-width: 769px){
  .hero-inner{padding-top:calc(var(--nav-h) + 16px);padding-bottom:56px;}
  .hero-tag{margin-bottom:14px;}
  .hero-cjk{font-size:clamp(32px,3.4vw,48px);margin-bottom:6px;}
  .hero-h1{font-size:clamp(32px,min(4.6vw,7.5vh),72px);margin-bottom:14px;}
  .hero-lede{margin-bottom:18px;line-height:1.55;font-size:14.5px;}
  .hero-search{margin-bottom:18px;}
  .hero-ctas{margin-bottom:30px;}
  .hero-stats{padding-top:14px;}
}
/* ── Tier 2 (≤900px height): drop the CJK character ──────────────────── */
@media (max-height: 900px) and (min-width: 769px){
  .hero-inner{padding-bottom:44px;}
  .hero-tag{margin-bottom:10px;font-size:9.5px;}
  .hero-cjk{display:none;}
  .hero-h1{font-size:clamp(30px,min(4vw,6.8vh),60px);margin-bottom:12px;line-height:.94;}
  .hero-lede{font-size:13.5px;margin-bottom:14px;}
  .hero-search{margin-bottom:14px;}
  .hero-ctas{margin-bottom:22px;}
  .hero-stats{padding-top:12px;}
  .hs-tabs{margin-bottom:8px;}
  .hs-context{margin-bottom:8px;}
  .hs-meta{margin-top:8px;}
}
/* ── Tier 3 (≤820px height): drop the eyebrow tag ────────────────────── */
@media (max-height: 820px) and (min-width: 769px){
  .hero-inner{padding-bottom:36px;}
  .hero-tag{display:none;}
  .hero-h1{font-size:clamp(28px,min(3.6vw,6.2vh),52px);margin-bottom:10px;}
  .hero-lede{line-height:1.5;margin-bottom:12px;}
  .hero-ctas{margin-bottom:18px;}
}
/* ── Tier 4 (≤760px height): drop the lede paragraph ─────────────────── */
@media (max-height: 760px) and (min-width: 769px){
  .hero-inner{padding-bottom:32px;}
  .hero-h1{font-size:clamp(26px,min(3.2vw,5.8vh),46px);margin-bottom:10px;line-height:.96;}
  .hero-lede{display:none;}
  .hero-search{margin-bottom:12px;}
  .hero-ctas{margin-bottom:14px;}
  .hero-stats{padding-top:10px;}
  .hs-tabs{margin-bottom:6px;}
  .hs-context{margin-bottom:6px;}
  .hs-meta{margin-top:6px;}
}
/* ── Tier 5 (≤680px height): emergency compression ───────────────────── */
@media (max-height: 680px) and (min-width: 769px){
  .hero-inner{padding-top:calc(var(--nav-h) + 10px);padding-bottom:26px;}
  .hero-h1{font-size:clamp(24px,min(2.8vw,5.2vh),40px);margin-bottom:8px;}
  .hero-search{margin-bottom:10px;}
  .hero-ctas{margin-bottom:12px;}
  .hero-ctas .btn-p,.hero-ctas .btn-g{padding:9px 14px;font-size:12.5px;}
  .h-sv{font-size:20px;}
  .h-sl{font-size:9.5px;}
}
.hero-search,.hero-ctas,.hero-stats{pointer-events:auto;}
.hero-tag{font-family:var(--font-mono);font-size:10px;letter-spacing:.22em;text-transform:uppercase;color:rgba(255,255,255,.38);display:flex;align-items:center;gap:10px;margin-bottom:22px;}
.hero-tag-dot{width:6px;height:6px;border-radius:50%;background:var(--accent);flex-shrink:0;}
.hero-cjk{font-family:var(--font-cjk);font-size:clamp(36px,min(5.2vw,7vh),72px);color:var(--accent);line-height:.9;font-weight:600;margin-bottom:10px;display:block;}
.hero-h1{font-family:var(--font-display);font-weight:800;font-size:clamp(32px,min(5.4vw,9vh),88px);letter-spacing:-.05em;line-height:.92;margin-bottom:18px;color:#fff;}
.hero-h1 em{font-family:var(--font-serif);font-style:italic;font-weight:400;letter-spacing:-.02em;}
.hero-lede{font-size:clamp(14px,1.25vw,17px);line-height:1.74;color:rgba(255,255,255,.72);max-width:460px;margin-bottom:24px;}
.hero-search{max-width:440px;margin-bottom:24px;position:relative;pointer-events:auto;}
/* Autocomplete dropdown — rendered as body portal with position:fixed
   (escapes .hero-text overflow:hidden + .hero overflow:hidden) */
.hs-ac{position:fixed;background:rgba(11,13,20,.96);backdrop-filter:blur(18px);-webkit-backdrop-filter:blur(18px);border:1px solid rgba(255,255,255,.10);border-radius:8px;box-shadow:0 24px 48px -12px rgba(0,0,0,.65),0 6px 16px -6px rgba(0,0,0,.4);z-index:9999;max-height:min(560px,70vh);overflow-y:auto;pointer-events:auto;scrollbar-width:thin;scrollbar-color:rgba(255,255,255,.18) transparent;}
.hs-ac::-webkit-scrollbar{width:6px;}
.hs-ac::-webkit-scrollbar-track{background:transparent;}
.hs-ac::-webkit-scrollbar-thumb{background:rgba(255,255,255,.14);border-radius:6px;}
.hs-ac::-webkit-scrollbar-thumb:hover{background:rgba(255,255,255,.26);}
.hs-ac[hidden]{display:none;}
.hs-ac-section{padding:6px 0;}
.hs-ac-section + .hs-ac-section{border-top:1px solid rgba(255,255,255,.06);}
.hs-ac-heading{font-family:var(--font-mono);font-size:9.5px;letter-spacing:.18em;text-transform:uppercase;color:rgba(255,255,255,.62);padding:10px 18px 6px;display:flex;align-items:center;gap:8px;}
.hs-ac-heading svg{opacity:.7;}
.hs-ac-item{display:flex;align-items:center;gap:12px;padding:9px 18px;cursor:pointer;color:rgba(255,255,255,.92);text-decoration:none;line-height:1.3;transition:background 120ms;}
.hs-ac-item:hover,.hs-ac-item.is-active{background:rgba(255,255,255,.05);}
.hs-ac-item.is-active{background:rgba(190,30,45,.16);}
.hs-ac-thumb{width:36px;height:36px;border-radius:4px;background:rgba(255,255,255,.05);background-size:cover;background-position:center;flex-shrink:0;}
.hs-ac-body{flex:1;min-width:0;}
.hs-ac-title{font-size:13.5px;color:#fff;font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.hs-ac-sub{font-family:var(--font-mono);font-size:10.5px;color:rgba(255,255,255,.78);letter-spacing:.04em;margin-top:2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.hs-ac-tag{font-family:var(--font-mono);font-size:9.5px;letter-spacing:.1em;text-transform:uppercase;color:rgba(255,255,255,.62);background:rgba(255,255,255,.08);padding:2px 7px;border-radius:3px;flex-shrink:0;}
.hs-ac-more{display:flex;align-items:center;justify-content:space-between;padding:9px 18px 12px;font-family:var(--font-mono);font-size:11.5px;letter-spacing:.04em;color:rgba(255,255,255,.65);text-decoration:none;border-top:1px solid rgba(255,255,255,.05);background:rgba(255,255,255,.015);transition:background 120ms,color 120ms;}
.hs-ac-more:hover,.hs-ac-more.is-active{background:rgba(190,30,45,.16);color:#fff;}
.hs-ac-more span{font-size:14px;}
.hs-ac-empty{padding:18px;font-size:13px;color:rgba(255,255,255,.46);text-align:center;}
.hs-ac-empty strong{color:rgba(255,255,255,.72);}
.hs-ac-loading{padding:14px 18px;font-family:var(--font-mono);font-size:10.5px;letter-spacing:.18em;text-transform:uppercase;color:rgba(255,255,255,.4);}
.hs-ac-loading::before{content:"";display:inline-block;width:6px;height:6px;border-radius:50%;background:var(--accent);margin-right:8px;vertical-align:middle;animation:hsAcPulse 1.1s ease-in-out infinite;}
@keyframes hsAcPulse{0%,100%{opacity:.4}50%{opacity:1}}
@media(max-width:768px){
  .hs-ac{max-height:60vh;left:-4px;right:-4px;}
  .hs-ac-item{padding:10px 16px;}
}
.hs-wrap{position:relative;display:flex;align-items:center;background:rgba(255,255,255,.09);border:1px solid rgba(255,255,255,.18);border-radius:6px;transition:background 280ms cubic-bezier(0.16,1,0.3,1),border-color 280ms cubic-bezier(0.16,1,0.3,1),box-shadow 280ms cubic-bezier(0.16,1,0.3,1);}
/* brand-red leading indicator — slides in when active */
.hs-wrap::before{content:"";position:absolute;left:8px;top:50%;width:2px;height:0;background:var(--accent);border-radius:1px;transform:translateY(-50%);transition:height 280ms cubic-bezier(0.16,1,0.3,1),box-shadow 280ms cubic-bezier(0.16,1,0.3,1);pointer-events:none;}
.hs-wrap:focus-within{background:rgba(10,12,16,.62);border-color:rgba(255,255,255,.26);box-shadow:0 0 0 1px rgba(255,255,255,.08),0 14px 38px -10px rgba(0,0,0,.55),0 0 24px rgba(255,255,255,.06);}
.hs-wrap:focus-within::before{height:22px;box-shadow:0 0 12px rgba(190,30,45,.55);}
.hs-icon{color:rgba(255,255,255,.44);padding:0 12px;flex-shrink:0;display:flex;align-items:center;transition:color 280ms cubic-bezier(0.16,1,0.3,1);}
.hs-wrap:focus-within .hs-icon{color:rgba(255,255,255,.92);}
.hs-input{flex:1;background:transparent;border:0;color:#fff;font-family:var(--font-sans);font-size:14px;padding:12px 0;outline:0;}
.hs-input:focus-visible{box-shadow:none;}
.hs-input::placeholder{color:rgba(255,255,255,.34);transition:color 280ms cubic-bezier(0.16,1,0.3,1);}
.hs-wrap:focus-within .hs-input::placeholder{color:rgba(255,255,255,.5);}
.hs-btn{background:var(--accent);color:#fff;padding:7px 14px;margin:4px;border-radius:4px;font-size:11px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;transition:background .2s;flex-shrink:0;}
.hs-btn:hover{background:var(--accent-dk);}
.hero-ctas{display:flex;flex-wrap:wrap;gap:12px;margin-bottom:52px;}
.btn-p{display:inline-flex;align-items:center;gap:8px;background:var(--accent);color:#fff;padding:12px 20px;border-radius:4px;font-size:14px;font-weight:600;text-transform:lowercase;letter-spacing:.01em;transition:background .2s,transform .15s;}
.btn-p:hover{background:var(--accent-dk);transform:translateY(-1px);}
.btn-g{display:inline-flex;align-items:center;gap:8px;background:transparent;color:#fff;border:1px solid rgba(255,255,255,.28);padding:11px 20px;border-radius:4px;font-size:14px;font-weight:600;text-transform:lowercase;transition:all .2s;}
.btn-g:hover{border-color:rgba(255,255,255,.6);background:rgba(255,255,255,.07);}
.btn-chip{font-family:var(--font-mono);font-size:9px;font-weight:500;letter-spacing:.18em;text-transform:uppercase;padding:2px 6px;border-radius:3px;background:rgba(230,46,45,.18);color:rgba(255,150,150,.95);border:1px solid rgba(230,46,45,.35);margin-left:-2px;}
/* Beta badge — marks Market Intelligence as a beta/preview product (launch 2026-05-30) */
.mi-beta{display:inline-flex;align-items:center;line-height:1;font-family:var(--font-mono);font-size:8.5px;font-weight:600;letter-spacing:.16em;text-transform:uppercase;padding:2px 5px;border-radius:3px;background:rgba(230,46,45,.16);color:rgba(255,165,165,.95);border:1px solid rgba(230,46,45,.32);vertical-align:middle;}
.nav-mi .mi-beta{margin-left:7px;}
.eyebrow .mi-beta{margin-left:2px;}
/* Off-screen animation pause (see matching JS block). Pauses infinite decorative
   animations in off-screen sections so the page can reach idle (fixes Lighthouse NO_LCP). */
.anim-paused, .anim-paused *{animation-play-state:paused!important;}
.btn-grad{position:relative;isolation:isolate;overflow:hidden;background:transparent;border:1px solid transparent;color:#fff;transition:transform .2s;}
.btn-grad::before{content:'';position:absolute;inset:-100%;background:conic-gradient(from 0deg,transparent 0deg,transparent 270deg,#6366f1 295deg,#ec4899 325deg,#facc15 350deg,transparent 360deg);animation:btnEdgeSpin 5s linear infinite;z-index:-2;}
.btn-grad::after{content:'';position:absolute;inset:1px;border-radius:3px;background:#0a0d18;z-index:-1;transition:background .25s ease;}
.btn-grad:hover{transform:translateY(-1px);}
.btn-grad:hover::after{background:linear-gradient(135deg,rgba(99,102,241,.20),rgba(236,72,153,.16),rgba(250,204,21,.10)),#14182a;}
@keyframes btnEdgeSpin{to{transform:rotate(360deg);}}
@media(prefers-reduced-motion:reduce){.btn-grad::before{animation:none;}}
.hero-stats{padding-top:20px;border-top:1px solid rgba(255,255,255,.12);}
.hs-tabs{display:flex;flex-wrap:wrap;gap:6px 22px;margin-bottom:16px;}
.hs-tab{font-family:var(--font-mono);font-size:10px;letter-spacing:.16em;text-transform:uppercase;color:rgba(255,255,255,.42);background:transparent;border:0;padding:0;cursor:pointer;transition:color .2s;display:inline-flex;align-items:center;gap:8px;}
.hs-tab::before{content:'';width:5px;height:5px;border-radius:50%;background:rgba(255,255,255,.18);transition:background .2s,box-shadow .2s;flex-shrink:0;}
.hs-tab:hover{color:rgba(255,255,255,.85);}
.hs-tab.is-active{color:#fff;}
.hs-tab.is-active::before{background:var(--accent);box-shadow:0 0 8px 1px rgba(230,46,45,.7);}
.hs-context{font-family:var(--font-mono);font-size:10px;letter-spacing:.12em;text-transform:uppercase;color:rgba(255,255,255,.5);margin-bottom:14px;display:flex;align-items:baseline;gap:6px;flex-wrap:wrap;line-height:1.4;}
.hs-context-name{color:#fff;font-weight:600;letter-spacing:.16em;}
.hs-context-sub{color:rgba(255,255,255,.62);text-transform:none;letter-spacing:.02em;font-weight:400;}
.hs-context-sub::before{content:'\B7\A0';margin-right:2px;color:rgba(255,255,255,.28);}
.hs-row{display:grid;grid-template-columns:repeat(4,auto);justify-content:start;gap:0;}
.h-stat{padding:0 32px;border-left:1px solid rgba(255,255,255,.1);display:flex;flex-direction:column;gap:4px;min-width:0;}
.h-stat:first-child{padding-left:0;border-left:0;}
.h-sv{font-family:var(--font-display);font-size:clamp(18px,2.1vw,28px);font-weight:700;letter-spacing:-.04em;color:#fff;line-height:1;display:inline-flex;align-items:baseline;gap:7px;}
.h-sv .tail{color:var(--accent);}
.h-yoy{font-family:var(--font-mono);font-size:10px;font-weight:500;letter-spacing:.02em;color:rgba(255,255,255,.4);}
.h-yoy.up{color:rgba(132,225,170,.78);}
.h-yoy.down{color:rgba(248,113,113,.78);}
.h-sl{font-family:var(--font-mono);font-size:9px;color:rgba(255,255,255,.62);letter-spacing:.14em;text-transform:uppercase;margin-top:3px;white-space:nowrap;}
.hs-meta{font-family:var(--font-mono);font-size:9px;color:rgba(255,255,255,.55);letter-spacing:.14em;text-transform:uppercase;margin-top:14px;}
.hs-meta .live-dot{display:inline-block;width:7px;height:7px;border-radius:50%;background:#22c55e;margin-right:8px;vertical-align:middle;box-shadow:0 0 0 0 rgba(34,197,94,.75);animation:liveDotPulse 1.6s ease-out infinite;}
@keyframes liveDotPulse{0%{box-shadow:0 0 0 0 rgba(34,197,94,.75);background:#22c55e;}70%{box-shadow:0 0 0 7px rgba(34,197,94,0);background:#4ade80;}100%{box-shadow:0 0 0 0 rgba(34,197,94,0);background:#22c55e;}}
.vic-beacon{width:48px;height:48px;position:relative;cursor:pointer;}
.beacon-dot{width:10px;height:10px;border-radius:50%;background:#E62E2D;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);box-shadow:0 0 14px 3px rgba(230,46,45,.7);animation:beaconDotPulse 1.2s ease-in-out infinite;}
@keyframes beaconDotPulse{0%,100%{box-shadow:0 0 10px 2px rgba(230,46,45,.6);}50%{box-shadow:0 0 20px 6px rgba(230,46,45,.95);}}
.beacon-ring{position:absolute;border-radius:50%;border:1.5px solid rgba(230,46,45,.75);top:50%;left:50%;transform:translate(-50%,-50%);animation:beaconRingExpand 1.6s ease-out infinite;}
.beacon-ring:nth-child(3){animation-delay:.55s;}
.beacon-ring:nth-child(4){animation-delay:1.1s;}
@keyframes beaconRingExpand{0%{width:10px;height:10px;opacity:.9;}100%{width:72px;height:72px;opacity:0;}}
.scroll-ind{position:absolute;left:50%;bottom:26px;transform:translateX(-50%);z-index:6;display:flex;flex-direction:column;align-items:center;gap:9px;transition:opacity .4s;pointer-events:none;}
.scroll-ind span{font-family:var(--font-mono);font-size:9px;letter-spacing:.2em;text-transform:uppercase;color:rgba(255,255,255,.35);}
.scroll-line{width:1px;height:44px;background:rgba(255,255,255,.15);overflow:hidden;}
.scroll-line::after{content:'';display:block;width:100%;height:40%;background:var(--accent);animation:scrollDrop 2.4s ease-in-out infinite;}
@keyframes scrollDrop{0%{transform:translateY(-100%);}100%{transform:translateY(250%);}}
.map-hint{position:absolute;bottom:26px;left:50%;transform:translateX(-50%);z-index:7;background:rgba(8,12,22,.92);color:#fff;padding:10px 18px;border-radius:24px;font-family:var(--font-mono);font-size:11px;letter-spacing:.06em;display:flex;align-items:center;gap:10px;opacity:0;transition:opacity .5s;pointer-events:none;white-space:nowrap;}
.map-hint.vis{opacity:1;pointer-events:all;}
.map-hint svg{animation:mapPulse 2s ease-in-out infinite;}
@keyframes mapPulse{0%,100%{opacity:.4;}50%{opacity:1;}}
.map-fs-btn{display:none;}
@media(max-width:900px){.hero-inner{padding:0 clamp(56px,7vw,84px) 60px;}.hero-text{max-width:100%;}}
@media(max-width:768px){
  /* Mobile hero: single-viewport layout with a slim text/search block on top, the
     map filling the middle, and the live stats floated as a translucent strip
     overlaid on the bottom of the map. This gives the map the dominant slot
     (~55svh) instead of getting whatever's left after a tall content stack. */
  .hero{display:flex;flex-direction:column;position:relative;height:100svh;min-height:600px;}
  /* hero-inner is position:static on mobile so the stats overlay (position:absolute) escapes
     it and resolves to .hero (which IS position:relative) — otherwise the overlay would
     pin to the bottom of hero-inner and cover the h1 + search. */
  .hero-inner{position:static;inset:auto;padding:calc(var(--nav-h) + 10px) 20px 12px;background:#060c18;flex:0 0 auto;align-items:flex-start;order:-1;overflow:visible;}
  #mapStage{order:1;position:relative;inset:auto;flex:1 1 auto;min-height:0;width:100%;}
  #mapStage .mapboxgl-ctrl-top-right{display:none;}
  .hero-text{max-width:100%;max-height:none;overflow:visible;}
  .hero-tag,.hero-lede,.hero-grad,.hero-frame,.scroll-ind,.hero-ctas{display:none;}
  .hero-cjk{font-size:22px;margin-bottom:0;line-height:1;}
  /* Keep the two-line "Honest advice." / "Sharper data." typography — it's the brand. Just compact it. */
  .hero-h1{font-size:clamp(26px,7.5vw,34px);margin-bottom:12px;line-height:1.08;letter-spacing:-.025em;}
  .hero-search{margin-bottom:0;max-width:100%;}
  .hs-input{font-size:16px;padding:14px 0;}
  .hs-input::placeholder{font-size:13px;}
  .hs-btn{padding:0;width:44px;height:44px;margin:3px;display:flex;align-items:center;justify-content:center;font-size:0;}
  .hs-btn::before{content:"";width:18px;height:18px;background:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='white' stroke-width='2.5' stroke-linecap='round'><circle cx='11' cy='11' r='8'/><path d='m21 21-4.35-4.35'/></svg>") center/contain no-repeat;}
  /* Stats: float as a translucent strip at the bottom of the hero, overlaying the
     map so the map gets the full vertical slot. */
  .hero-stats{
    position:absolute;left:0;right:0;bottom:0;z-index:10;
    padding:14px 20px 14px;margin:0;border-top:1px solid rgba(255,255,255,.10);
    background:linear-gradient(to top, rgba(6,12,24,.96) 0%, rgba(6,12,24,.90) 60%, rgba(6,12,24,.40) 100%);
    -webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);
  }
  .hs-tabs,.h-yoy{display:none;}
  .hs-context{font-size:9px;margin-bottom:10px;letter-spacing:.10em;}
  .hs-row{display:grid;grid-template-columns:1fr 1fr;gap:10px 18px;justify-content:stretch;}
  .h-stat{padding:0;border-left:0;gap:2px;min-width:0;}
  .h-stat:nth-child(3),.h-stat:nth-child(4){padding-top:10px;border-top:1px solid rgba(255,255,255,.08);}
  .h-sv{font-size:18px;letter-spacing:-.03em;gap:6px;white-space:nowrap;}
  .h-sl{font-size:8.5px;letter-spacing:.10em;}
  .hs-meta{font-size:8px;letter-spacing:.14em;margin-top:8px;}
  /* Move the "click a region" hint up above the stats strip so it isn't obscured */
  .map-hint{bottom:calc(50% + 8px);font-size:10px;padding:8px 14px;}
  .map-fs-btn{position:absolute;top:12px;right:12px;width:42px;height:42px;background:rgba(8,12,22,.94);border:1px solid rgba(255,255,255,.18);border-radius:8px;color:#fff;z-index:20;display:flex;align-items:center;justify-content:center;cursor:pointer;transition:background .2s;}
  .map-fs-btn:active{background:rgba(8,12,22,.98);}
  .map-fs-btn svg{width:18px;height:18px;}
  .hero.map-fullscreen .hero-inner{display:none;}
  .hero.map-fullscreen #mapStage{height:100svh;min-height:100svh;}
  .hero.map-fullscreen #mapStage .mapboxgl-ctrl-top-right{display:block;top:14px;right:12px;}
  .hero.map-fullscreen .map-fs-btn{top:14px;left:14px;right:auto;}
  .hero.map-fullscreen .hero-stats{display:none;}
  body.mobile-fs .v2-nav{display:none;}
}
@media(max-width:640px){.hero-h1{font-size:clamp(32px,10vw,40px);}}
/* SKYLINE (animated, inlined SVG) — slow naturalistic city-light behaviour with varied window types */
.skyline-wrap{position:relative;height:clamp(360px,32vw,680px);overflow:hidden;background:var(--ink);line-height:0;}
.skyline-wrap > svg{position:absolute;inset:0;width:100%;height:100%;display:block;}
/* Ambient glow layers — drift + breathe */
.skyline-wrap .glow-layer{transform-origin:center 80%;animation:skyGlowDrift 18s ease-in-out infinite;}
.skyline-wrap .glow-layer.b{animation-duration:24s;animation-delay:-7s;}
.skyline-wrap .glow-layer.c{animation-duration:21s;animation-delay:-13s;}
@keyframes skyGlowDrift{
  0%,100%{opacity:.55;transform:translateX(-1.4%) scale(1);}
  50%    {opacity:1;  transform:translateX(1.4%)  scale(1.04);}
}
/* Window base — moderate breathe, more visible swing */
.skyline-wrap .win{
  transform-box:fill-box;transform-origin:center;
  opacity:.65;
  animation:winBreathe calc(var(--d,5s) * 1.6 + 3s) ease-in-out infinite;
  animation-delay:calc(var(--t,0s) * -1);
}
@keyframes winBreathe{
  0%,100%{opacity:.4;}
  50%    {opacity:.95;}
}
/* Variety classes assigned by JS (data-w="...") */
.skyline-wrap .win[data-w="bright"]{
  animation:winBright calc(var(--d,5s) * 1.8 + 4s) ease-in-out infinite;
  animation-delay:calc(var(--t,0s) * -1.5);
  opacity:.95;
}
@keyframes winBright{
  0%,100%{opacity:.8;}
  40%    {opacity:1;}
  72%    {opacity:.55;}
}
.skyline-wrap .win[data-w="dim"]{
  animation:winDim calc(var(--d,5s) * 2 + 6s) ease-in-out infinite;
  animation-delay:calc(var(--t,0s) * -1.2);
  opacity:.3;
}
@keyframes winDim{
  0%,100%{opacity:.15;}
  50%    {opacity:.6;}
}
.skyline-wrap .win[data-w="static-bright"]{animation:none;opacity:.95;}
.skyline-wrap .win[data-w="static-mid"]  {animation:none;opacity:.55;}
.skyline-wrap .win[data-w="static-dim"]  {animation:none;opacity:.2;}
.skyline-wrap .win[data-w="off"]         {animation:none;opacity:.06;}
/* Flicker — fluorescent-style sharp blink. Quiet phase, brief stutter */
.skyline-wrap .win[data-w="flicker"]{
  animation:winFlicker calc(var(--d,5s) * 2 + 9s) steps(24,end) infinite;
  animation-delay:calc(var(--t,0s) * -1);
  opacity:.85;
}
@keyframes winFlicker{
  0%,68%,72%,77%,82%,100%{opacity:.9;}
  70%{opacity:.15;}
  71%{opacity:.95;}
  74%{opacity:.2;}
  76%{opacity:.95;}
  80%{opacity:.18;}
  81%{opacity:.95;}
}
/* "Pop" — fast small accent twinkle (apartment lights flickering on/off briefly) */
.skyline-wrap .win[data-w="pop"]{
  animation:winPop calc(var(--d,5s) * 1.2 + 1.5s) ease-in-out infinite;
  animation-delay:calc(var(--t,0s) * -.8);
  opacity:.5;
}
@keyframes winPop{
  0%,100%{opacity:.25;}
  20%    {opacity:.95;}
  35%    {opacity:.4;}
  60%    {opacity:.85;}
  80%    {opacity:.3;}
}
/* "Switch" — discrete on→off→on transition. Light "turns on" or "off" once per cycle. */
.skyline-wrap .win[data-w="switch"]{
  animation:winSwitch calc(var(--d,5s) * 1.8 + 5s) steps(40,end) infinite;
  animation-delay:calc(var(--t,0s) * -1.4);
  opacity:.8;
}
@keyframes winSwitch{
  0%,42%  {opacity:.92;}   /* light on */
  44%,72% {opacity:.1;}    /* off — quick transition, hold */
  74%,100%{opacity:.92;}   /* back on */
}
/* "Switch slow" — opposite phase, slower */
.skyline-wrap .win[data-w="switch-slow"]{
  animation:winSwitchSlow calc(var(--d,5s) * 2.4 + 7s) steps(48,end) infinite;
  animation-delay:calc(var(--t,0s) * -1.7);
  opacity:.6;
}
@keyframes winSwitchSlow{
  0%,30%  {opacity:.15;}   /* off */
  32%,68% {opacity:.9;}    /* on */
  70%,100%{opacity:.15;}   /* off */
}
/* "Blink" — two quick on/off blinks per cycle, otherwise steady */
.skyline-wrap .win[data-w="blink"]{
  animation:winBlink calc(var(--d,5s) * 1.5 + 4s) steps(50,end) infinite;
  animation-delay:calc(var(--t,0s) * -1.1);
  opacity:.75;
}
@keyframes winBlink{
  0%,32%,38%,62%,68%,100%{opacity:.85;}
  34%,36%{opacity:.1;}
  64%,66%{opacity:.1;}
}
/* Sparkles — gentle pulse */
.skyline-wrap .sparkle{
  transform-box:fill-box;transform-origin:center;
  animation:skySparkle calc(var(--d,4s) * 1.4 + 2s) ease-in-out infinite;
  animation-delay:calc(var(--t,0s) * -1);
}
@keyframes skySparkle{
  0%,100%{opacity:.3; transform:scale(.85);}
  50%    {opacity:1;  transform:scale(1.4);}
}
/* Wave drift — derived from inline --wave-dur, halved for stronger ebb */
.skyline-wrap .wave-band{
  transform-box:fill-box;
  animation:skyWaveDrift calc(var(--wave-dur,40s) * 0.5) ease-in-out infinite;
}
.skyline-wrap .wave-band.wave-r{animation-direction:reverse;}
@keyframes skyWaveDrift{
  0%,100%{transform:translateX(0);}
  50%    {transform:translateX(-4%);}
}
@media(prefers-reduced-motion:reduce){
  .skyline-wrap .glow-layer,
  .skyline-wrap .win,
  .skyline-wrap .sparkle,
  .skyline-wrap .wave-band{animation:none;}
}
.sky-draw{stroke-dasharray:1;stroke-dashoffset:1;}
.skyline-light-strip{position:relative;height:clamp(320px,38vw,520px);overflow:hidden;background:var(--ivory);line-height:0;pointer-events:none;}
.skyline-light-strip img,
.skyline-light-strip object,
.skyline-light-strip svg{position:absolute;bottom:0;left:50%;transform:translateX(-50%);width:100%;height:auto;min-width:100%;display:block;pointer-events:none;}
.sky-draw{stroke-dasharray:1;stroke-dashoffset:1;}
.sky-draw.drawn{stroke-dashoffset:0;transition:stroke-dashoffset 3.8s cubic-bezier(.22,1,.36,1);}
.sky-g2.drawn{transition-delay:.1s;}.sky-g3.drawn{transition-delay:.22s;}.sky-g4.drawn{transition-delay:.36s;}.sky-g5.drawn{transition-delay:.5s;}.sky-g6.drawn{transition-delay:.65s;}

/* TICKER */
.trust-strip{background:var(--white);border-bottom:1px solid var(--border);padding:17px 0;overflow:hidden;position:relative;}
.trust-strip::before,.trust-strip::after{content:"";position:absolute;top:0;bottom:0;width:80px;z-index:2;pointer-events:none;}
.trust-strip::before{left:0;background:linear-gradient(90deg,var(--white),transparent);}
.trust-strip::after{right:0;background:linear-gradient(-90deg,var(--white),transparent);}
.marquee-track{display:flex;align-items:center;white-space:nowrap;animation:marquee 50s linear infinite;}
.marquee-track>*{padding:0 20px;flex-shrink:0;}
.tick-item{font-family:var(--font-mono);font-size:11px;font-weight:500;letter-spacing:.09em;color:var(--fg-2);text-transform:uppercase;}
.tick-item strong{color:var(--ink);font-weight:600;}
.tick-item .up{color:var(--jade-bright);}
.tick-item .dn{color:var(--accent);}
.tick-dot{color:var(--accent);opacity:.4;font-size:8px;}
@keyframes marquee{from{transform:translateX(0);}to{transform:translateX(-50%);}}

/* SERVICES (reused from v1) */
.services-sec{padding:120px 0;background:var(--paper);}
.svc-head{display:grid;grid-template-columns:1fr 1.4fr;gap:80px;align-items:end;margin-bottom:56px;padding-bottom:40px;border-bottom:1px solid var(--border);}
.svc-head .h2{margin-top:14px;}
.svc-head .lede{font-size:18px;line-height:1.65;color:var(--fg-1);max-width:500px;}
.svc-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:20px;}
.svc-card{position:relative;background:var(--white);padding:40px 32px 36px;border:1px solid var(--border);border-radius:8px;overflow:hidden;display:flex;flex-direction:column;transition:transform 350ms var(--ease-out),border-color 250ms,box-shadow 350ms;}
.svc-card:hover{transform:translateY(-6px);border-color:var(--ink);box-shadow:var(--shadow-md);}
.svc-corner{position:absolute;width:36px;height:36px;pointer-events:none;transition:width 300ms var(--ease-out),height 300ms;}
.svc-corner::before,.svc-corner::after{content:"";position:absolute;background:var(--accent);}
.svc-card:hover .svc-corner{width:52px;height:52px;}
.svc-corner{top:18px;left:18px;}.svc-corner::before{top:0;left:0;width:100%;height:2.5px;}.svc-corner::after{top:0;left:0;width:2.5px;height:100%;}
.svc-card.tr .svc-corner{top:18px;left:auto;right:18px;}.svc-card.tr .svc-corner::before{left:auto;right:0;}.svc-card.tr .svc-corner::after{left:auto;right:0;}
.svc-card.bl .svc-corner{top:auto;bottom:18px;left:18px;}.svc-card.bl .svc-corner::before{top:auto;bottom:0;}.svc-card.bl .svc-corner::after{top:auto;bottom:0;}
.svc-glyph{position:absolute;font-family:var(--font-cjk);font-weight:600;font-size:28px;color:var(--accent);opacity:.75;pointer-events:none;}
.svc-card .svc-glyph{bottom:72px;right:24px;}
.svc-card.tr .svc-glyph{bottom:72px;left:24px;right:auto;}
.svc-card.bl .svc-glyph{top:22px;right:24px;bottom:auto;}
.svc-wm{position:absolute;right:-14px;bottom:-52px;font-family:var(--font-display);font-weight:900;font-size:200px;line-height:.85;color:var(--ink);opacity:.04;letter-spacing:-.07em;pointer-events:none;user-select:none;transition:opacity 400ms,transform 600ms;}
.svc-card:hover .svc-wm{opacity:.09;transform:translate(-6px,-8px);}
.svc-num{font-family:var(--font-mono);font-size:11px;letter-spacing:.14em;color:var(--fg-3);margin:50px 0 16px;text-transform:lowercase;position:relative;z-index:1;}
.svc-name{font-family:var(--font-display);font-weight:700;font-size:26px;color:var(--ink);letter-spacing:-.02em;margin-bottom:8px;position:relative;z-index:1;line-height:1.1;}
.svc-tag{font-family:var(--font-mono);font-size:10px;letter-spacing:.1em;text-transform:uppercase;color:var(--accent);margin-bottom:20px;position:relative;z-index:1;}
.svc-list{display:flex;flex-direction:column;gap:10px;margin-bottom:28px;flex:1;position:relative;z-index:1;}
.svc-list li{font-size:14px;color:var(--fg-2);line-height:1.5;display:flex;align-items:flex-start;gap:10px;padding-top:10px;border-top:1px dashed var(--border);}
.svc-list li::before{content:"→";color:var(--accent);flex-shrink:0;font-weight:700;font-size:12px;}
.svc-cta{font-size:13px;font-weight:600;color:var(--ink);text-transform:lowercase;letter-spacing:.02em;display:flex;align-items:center;gap:6px;padding-top:16px;border-top:1px solid var(--border);position:relative;z-index:1;transition:color .2s;text-decoration:none;}
.svc-cta::after{content:"";position:absolute;inset:-9999px -9999px 0;}
.svc-cta-arr{transition:transform .2s var(--ease-out);}
.svc-card:hover .svc-cta{color:var(--accent);}
.svc-card:hover .svc-cta-arr{transform:translateX(4px);}

/* WAVE + STATS */
.wave-div{display:block;overflow:hidden;line-height:0;}
.results{padding:96px 0;background:var(--accent);position:relative;overflow:hidden;}
.results::before{content:"";position:absolute;inset:0;opacity:.12;background:repeating-linear-gradient(45deg,transparent,transparent 18px,rgba(255,255,255,.08) 18px,rgba(255,255,255,.08) 19px);}
.results-inner{max-width:var(--container);margin:0 auto;padding:0 40px;position:relative;z-index:1;}
.results-eyebrow{font-family:var(--font-mono);font-size:10px;letter-spacing:.2em;text-transform:uppercase;color:rgba(255,255,255,.5);text-align:center;margin-bottom:44px;display:block;}
.results-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:0;}
.result-item{text-align:center;padding:0 20px;border-left:1px solid rgba(255,255,255,.2);}
.result-item:first-child{border-left:0;}
.result-num{font-family:var(--font-display);font-weight:800;font-size:clamp(40px,5vw,62px);line-height:1;color:#fff;letter-spacing:-.03em;}
.result-num .tail{opacity:.55;font-size:.7em;}
.result-lbl{font-family:var(--font-mono);font-size:10px;font-weight:500;letter-spacing:.14em;text-transform:uppercase;color:rgba(255,255,255,.68);margin-top:10px;}

/* ── REGION MAP ─────────────────────────────────────────── */
.region-sec{background:#0A0C10;min-height:100svh;display:flex;flex-direction:column;}
.rs-header{padding:72px 40px 0;max-width:var(--container);margin:0 auto;width:100%;}
.rs-eyebrow{font-family:var(--font-mono);font-size:10px;letter-spacing:.18em;text-transform:uppercase;color:var(--accent);margin-bottom:16px;display:flex;align-items:center;gap:8px;}
.rs-eyebrow::before{content:"●";font-size:8px;}
.rs-headline{font-family:var(--font-display);font-weight:800;font-size:clamp(42px,7vw,96px);letter-spacing:-.05em;line-height:.9;color:#fff;margin-bottom:4px;}
.rs-headline em{font-family:var(--font-serif);font-style:italic;font-weight:400;}
.rs-meta{font-family:var(--font-mono);font-size:11px;letter-spacing:.08em;color:rgba(255,255,255,.28);margin-bottom:28px;}
/* Search */
.rs-search{position:relative;max-width:480px;margin-bottom:24px;}
.rss-wrap{display:flex;align-items:center;background:rgba(255,255,255,.07);border:1px solid rgba(255,255,255,.14);border-radius:6px;transition:border-color .2s,background .2s;}
.rss-wrap:focus-within{background:rgba(255,255,255,.10);border-color:rgba(255,255,255,.35);}
.rss-icon{color:rgba(255,255,255,.4);padding:0 14px;flex-shrink:0;}
.rss-input{flex:1;background:transparent;border:0;color:#fff;font-family:var(--font-sans);font-size:14px;padding:12px 0;outline:0;}
.rss-input::placeholder{color:rgba(255,255,255,.3);}
.rss-sug{position:absolute;top:calc(100% + 6px);left:0;right:0;background:rgba(14,16,26,.98);border:1px solid rgba(255,255,255,.12);border-radius:8px;overflow:hidden;display:none;z-index:50;box-shadow:0 16px 40px rgba(0,0,0,.6);}
.rss-item{display:flex;align-items:center;gap:12px;padding:11px 16px;cursor:pointer;transition:background .15s;}
.rss-item:hover{background:rgba(255,255,255,.06);}
.rss-i-label{font-size:13px;font-weight:600;color:#fff;}
.rss-i-sub{font-size:11px;color:rgba(255,255,255,.4);}
/* Toggle */
.rs-toggle{display:inline-flex;background:rgba(255,255,255,.05);border:1px solid rgba(255,255,255,.1);border-radius:99px;padding:4px;gap:2px;margin-bottom:32px;}
.rs-tog{background:none;border:0;border-radius:99px;padding:8px 20px;font-family:var(--font-mono);font-size:10px;font-weight:600;letter-spacing:.1em;text-transform:uppercase;color:rgba(255,255,255,.4);cursor:pointer;transition:all .2s;white-space:nowrap;}
.rs-tog.on{background:#fff;color:var(--ink);}
/* Map + panel grid */
.rs-body{flex:1;display:grid;grid-template-columns:1fr 1.6fr;max-width:var(--container);margin:0 auto;width:100%;padding:0 40px 40px;gap:48px;align-items:start;}
.rs-panel-data{min-height:120px;}
.rs-panel-default{padding:24px 0;border-top:1px solid rgba(255,255,255,.08);}
.rs-panel-hint{font-family:var(--font-mono);font-size:10px;letter-spacing:.1em;text-transform:uppercase;color:rgba(255,255,255,.25);display:flex;align-items:center;gap:10px;margin-bottom:16px;}
.rs-panel-hint::before{content:"↗";font-size:14px;color:var(--accent);}
.rs-region-name{font-family:var(--font-display);font-weight:700;font-size:clamp(24px,3vw,38px);letter-spacing:-.03em;color:#fff;margin-bottom:4px;line-height:1.1;}
.rs-region-hoods{font-family:var(--font-mono);font-size:10px;letter-spacing:.08em;color:rgba(255,255,255,.4);margin-bottom:20px;text-transform:uppercase;line-height:1.6;}
.rs-stat-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-bottom:20px;}
.rs-stat{background:rgba(255,255,255,.04);border:1px solid rgba(255,255,255,.07);border-radius:8px;padding:14px;}
.rs-stat-v{font-family:var(--font-mono);font-size:20px;font-weight:500;color:#fff;line-height:1;margin-bottom:4px;}
.rs-stat-l{font-family:var(--font-mono);font-size:9px;letter-spacing:.12em;text-transform:uppercase;color:rgba(255,255,255,.32);}
.rs-region-note{font-size:13px;color:rgba(255,255,255,.45);line-height:1.7;margin-bottom:20px;}
.rs-panel-ctas{display:flex;gap:10px;flex-wrap:wrap;}
.rs-panel-cta-p{background:var(--accent);color:#fff;padding:10px 20px;border-radius:4px;font-size:12px;font-weight:600;letter-spacing:.02em;text-transform:lowercase;transition:background .2s;}
.rs-panel-cta-p:hover{background:var(--accent-hover);}
.rs-panel-cta-g{background:transparent;color:rgba(255,255,255,.6);border:1px solid rgba(255,255,255,.18);padding:9px 20px;border-radius:4px;font-size:12px;font-weight:600;letter-spacing:.02em;text-transform:lowercase;transition:all .2s;}
.rs-panel-cta-g:hover{color:#fff;border-color:rgba(255,255,255,.5);}
/* Map container */
.rs-map-wrap{position:relative;border-radius:12px;overflow:hidden;border:1px solid rgba(255,255,255,.07);background:#080C14;aspect-ratio:1.1/1;}
.rs-map-wrap svg{display:block;width:100%;height:100%;}
/* SVG region polygon interaction */
.region-poly{cursor:pointer;transition:fill-opacity .2s,stroke-opacity .2s;}
.region-poly:hover{fill-opacity:.25!important;}
/* North label */
.map-n{position:absolute;top:14px;right:16px;font-family:var(--font-mono);font-size:9px;letter-spacing:.12em;color:rgba(255,255,255,.18);text-align:center;display:flex;flex-direction:column;align-items:center;gap:4px;}
.map-n-arr{width:1px;height:16px;background:linear-gradient(to top,transparent,rgba(255,255,255,.25));}

/* ── MARKET PULSE TEASER ────────────────────────────────── */
.mpt-sec{padding:100px 0 84px;background:var(--ink);position:relative;overflow:hidden;}
.mpt-sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0;}
.mpt-sec :focus-visible{outline:2px solid #fff;outline-offset:3px;border-radius:4px;}
.mpt-sec a:focus-visible{outline-color:var(--accent);}
.mpt-sec::before{content:"";position:absolute;inset:0;background:radial-gradient(ellipse 60% 50% at 50% 50%,rgba(190,30,45,.06),transparent);z-index:1;pointer-events:none;}
/* Interactive grid pattern — per-cell hover */
.mpt-grid{position:absolute;inset:0;width:100%;height:100%;z-index:0;
  mask-image:radial-gradient(ellipse 85% 70% at 50% 50%,#000 30%,transparent 100%);
  -webkit-mask-image:radial-gradient(ellipse 85% 70% at 50% 50%,#000 30%,transparent 100%);}
.mpt-grid .mpt-grid-frame{fill:none;stroke:rgba(255,255,255,.06);stroke-width:1;pointer-events:none;}
.mpt-grid .mpt-cell{fill:rgba(255,255,255,0);transition:fill 240ms cubic-bezier(.22,1,.36,1);cursor:default;}
.mpt-grid .mpt-cell:hover{fill:rgba(255,255,255,.12);transition-duration:0ms;}
.mpt-grid .mpt-grid-acc{fill:rgba(230,46,45,.22);pointer-events:none;}
.mpt-inner{position:relative;z-index:2;pointer-events:none;}
.mpt-inner a,.mpt-inner button,.mpt-inner input,.mpt-inner [role="button"],.mpt-chart-area,.mpt-tabs{pointer-events:auto;}
.mpt-head{display:flex;align-items:flex-start;justify-content:space-between;gap:32px;flex-wrap:wrap;margin-bottom:28px;padding-bottom:24px;border-bottom:1px solid rgba(255,255,255,.08);}
.mpt-head-l{flex:1;min-width:320px;}
.mpt-title{font-family:var(--font-display);font-weight:700;font-size:clamp(28px,3.8vw,44px);letter-spacing:-.035em;color:#fff;display:flex;align-items:center;gap:14px;margin-top:10px;}
.mpt-live{display:inline-flex;align-items:center;gap:5px;background:rgba(15,169,104,.12);border:1px solid rgba(15,169,104,.28);padding:4px 10px;border-radius:999px;font-family:var(--font-mono);font-size:9px;letter-spacing:.1em;color:#0FA968;}
.mpt-live::before{content:"●";font-size:7px;animation:mpt-pulse 2.4s ease-in-out infinite;}
@keyframes mpt-pulse{0%,100%{opacity:1;}50%{opacity:.35;}}
@media(prefers-reduced-motion:reduce){
  .mpt-live::before{animation:none;}
  .mpt-scale-marker{transition:none;}
  .mpt-kpi,.mpt-tab,.mpt-range button,.mpt-cta-link{transition:none;}
}
.mpt-note{margin-top:18px;max-width:680px;padding:2px 0 2px 16px;border-left:2px solid var(--accent);position:relative;}
.mpt-note-eyebrow{display:block;font-family:var(--font-mono);font-size:10px;font-weight:500;letter-spacing:.18em;text-transform:uppercase;color:rgba(190,30,45,.85);margin-bottom:6px;}
.mpt-narrative{font-family:var(--font-sans);font-style:normal;font-weight:400;font-size:clamp(15.5px,1.35vw,17px);line-height:1.6;color:rgba(255,255,255,.88);letter-spacing:-.005em;margin:0;text-wrap:pretty;}
.mpt-narrative strong{font-weight:600;color:#fff;background:linear-gradient(transparent 60%,rgba(190,30,45,.34) 60%);padding:0 2px;border-radius:2px;}
@media(prefers-reduced-motion:no-preference){
  .mpt-note{transition:border-color .25s;}
}
.mpt-meta{font-family:var(--font-mono);font-size:11px;color:rgba(255,255,255,.55);margin-top:14px;letter-spacing:.08em;text-transform:uppercase;}
.mpt-cta-link{font-size:14px;font-weight:600;color:rgba(255,255,255,.6);border-bottom:1.5px solid var(--accent);padding-bottom:3px;letter-spacing:.02em;text-transform:lowercase;transition:color .2s;align-self:flex-end;margin-top:auto;}
.mpt-cta-link:hover{color:#fff;}
.mpt-tabs{display:flex;align-items:center;gap:6px;margin-bottom:14px;flex-wrap:wrap;border-bottom:1px solid rgba(255,255,255,.06);padding-bottom:16px;}
.mpt-tab{background:transparent;border:1px solid rgba(255,255,255,.14);color:rgba(255,255,255,.72);padding:9px 16px;min-height:38px;border-radius:999px;font-size:13px;font-weight:500;letter-spacing:.01em;cursor:pointer;transition:all .18s;font-family:var(--font-sans);}
.mpt-tab:hover{color:#fff;border-color:rgba(255,255,255,.36);background:rgba(255,255,255,.04);}
.mpt-tab[aria-selected="true"]{background:#fff;color:var(--ink);border-color:#fff;font-weight:600;}
.mpt-tab-note{margin-left:auto;font-family:var(--font-mono);font-size:11px;letter-spacing:.1em;text-transform:uppercase;color:rgba(255,255,255,.55);}
.mpt-kpi-grid{display:grid;grid-template-columns:1.5fr 1fr 1fr 1fr;gap:10px;margin-bottom:10px;}
/* New layout: price hero on top, demand-side trio below */
.mpt-price-hero{display:grid;grid-template-columns:1fr 1fr;column-gap:24px;background:linear-gradient(135deg,rgba(190,30,45,.06),rgba(255,255,255,.015) 60%);border:1px solid rgba(190,30,45,.22);border-radius:8px;padding:14px 10px;margin-bottom:10px;position:relative;overflow:hidden;}
.mpt-price-hero::before{content:"";position:absolute;top:0;left:0;right:0;height:2px;background:var(--accent);}
.mpt-price-hero::after{content:"";position:absolute;top:24px;bottom:24px;left:50%;width:1px;background:rgba(255,255,255,.08);transform:translateX(-.5px);pointer-events:none;}
.mpt-price-hero-cell{position:relative;padding:14px 22px;border-radius:6px;}
.mpt-price-lbl{font-family:var(--font-mono);font-size:10.5px;letter-spacing:.18em;text-transform:uppercase;color:rgba(255,255,255,.6);margin-bottom:8px;}
.mpt-price-num{font-family:var(--font-display);font-weight:700;font-size:clamp(32px,4.2vw,54px);letter-spacing:-.04em;color:#fff;line-height:.95;margin-bottom:8px;}
.mpt-price-chg{font-family:var(--font-mono);font-size:11px;font-weight:600;letter-spacing:.10em;text-transform:uppercase;display:inline-flex;align-items:center;gap:5px;padding:5px 10px;border-radius:999px;align-self:flex-start;}
.mpt-price-chg.pos{color:#0FA968;background:rgba(15,169,104,.14);border:1px solid rgba(15,169,104,.36);}
.mpt-price-chg.neg{color:#FF7280;background:rgba(255,107,122,.12);border:1px solid rgba(255,107,122,.34);}
.mpt-price-chg.neu{color:rgba(255,255,255,.6);background:rgba(255,255,255,.06);border:1px solid rgba(255,255,255,.14);}
.mpt-price-hint{font-size:12px;color:rgba(255,255,255,.4);margin-top:6px;line-height:1.5;}
/* ── DEMAND / SUPPLY section bands ─────────────────────── */
.mpt-band{margin:18px 0 10px;padding:18px 24px 22px;border:1px solid rgba(255,255,255,.08);border-radius:8px;position:relative;}
.mpt-band--demand{background:linear-gradient(135deg,rgba(190,30,45,.05),rgba(255,255,255,.01) 60%);}
.mpt-band--demand::before{content:"";position:absolute;top:0;left:0;right:0;height:2px;background:linear-gradient(90deg,rgba(190,30,45,.55),rgba(190,30,45,.1));border-radius:8px 8px 0 0;}
.mpt-band-head{display:flex;align-items:baseline;justify-content:space-between;gap:24px;flex-wrap:wrap;margin-bottom:18px;padding-bottom:14px;border-bottom:1px solid rgba(255,255,255,.06);}
.mpt-band-eyebrow{font-family:var(--font-mono);font-size:10.5px;letter-spacing:.18em;text-transform:uppercase;display:inline-flex;align-items:center;gap:8px;}
.mpt-band-eyebrow::before{content:"●";font-size:8px;}
.mpt-band-eyebrow.demand{color:var(--accent);}
.mpt-band-eyebrow.supply{color:#0FA968;}
.mpt-band-title{font-family:var(--font-display);font-weight:700;font-size:clamp(20px,2.1vw,26px);color:#fff;letter-spacing:-.025em;line-height:1.1;}
.mpt-band-title em{font-family:var(--font-serif);font-style:italic;font-weight:400;}
.mpt-band-title.demand em{color:var(--accent);}
.mpt-band-title.supply em{color:#0FA968;}
.mpt-band-sub{font-size:13px;color:rgba(255,255,255,.55);max-width:380px;line-height:1.5;}
.mpt-demand-row{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;}
/* Sale-vs-assessed tooltip */
.mpt-tip-trigger{display:inline-flex;align-items:center;justify-content:center;width:18px;height:18px;border:1px solid rgba(255,255,255,.28);border-radius:50%;font-family:var(--font-mono);font-size:10px;font-weight:600;color:rgba(255,255,255,.55);background:transparent;cursor:help;margin-left:6px;vertical-align:middle;transition:all .15s;line-height:1;padding:0;}
.mpt-tip-trigger:hover,.mpt-tip-trigger:focus-visible{color:#fff;border-color:rgba(255,255,255,.6);background:rgba(255,255,255,.05);}
.mpt-tip-popover{position:fixed;z-index:1000;width:min(340px,calc(100vw - 32px));background:rgba(7,8,14,.98);border:1px solid rgba(255,255,255,.18);border-radius:8px;padding:14px 16px;box-shadow:0 18px 40px -10px rgba(0,0,0,.6);font-family:var(--font-sans);font-size:13px;line-height:1.55;color:rgba(255,255,255,.85);backdrop-filter:blur(8px);}
.mpt-tip-popover[hidden]{display:none;}
.mpt-tip-popover h4{font-family:var(--font-sans);font-weight:600;font-size:12.5px;color:#fff;margin:0 0 8px;letter-spacing:.01em;}
.mpt-tip-popover p{margin:0 0 8px;}
.mpt-tip-popover p:last-child{margin:0;}
.mpt-tip-popover strong{color:#fff;font-weight:600;}
.mpt-tip-list{list-style:none;padding:0;margin:0 0 10px;}
.mpt-tip-list li{position:relative;padding:7px 0 7px 14px;font-size:12.5px;line-height:1.45;color:rgba(255,255,255,.78);border-top:1px solid rgba(255,255,255,.06);}
.mpt-tip-list li:first-child{border-top:0;padding-top:4px;}
.mpt-tip-list li::before{content:"•";position:absolute;left:0;top:7px;color:var(--accent);line-height:1.45;}
.mpt-tip-list li:first-child::before{top:4px;}
.mpt-tip-popover .mpt-tip-meta{font-family:var(--font-mono);font-size:10.5px;color:rgba(255,255,255,.42);letter-spacing:.06em;text-transform:uppercase;margin-top:10px;padding-top:8px;border-top:1px solid rgba(255,255,255,.08);}
.mpt-kpi-wrap{position:relative;overflow:visible;}
.mpt-kpi-sublbl{display:block;font-family:var(--font-mono);font-size:9.5px;letter-spacing:.06em;text-transform:uppercase;color:rgba(255,255,255,.4);margin-top:2px;}
/* INVENTORY block (Option B — separate story below the price stats) */
.mpt-inv-block{margin:18px 0 10px;padding:18px 24px 22px;border:1px solid rgba(255,255,255,.08);border-radius:8px;background:linear-gradient(135deg,rgba(15,169,104,.06),rgba(255,255,255,.01) 60%);position:relative;}
.mpt-inv-block::before{content:"";position:absolute;top:0;left:0;right:0;height:2px;background:linear-gradient(90deg,rgba(15,169,104,.55),rgba(15,169,104,.1));border-radius:8px 8px 0 0;}
/* Legacy aliases — kept so existing inventory cards inherit the band-head styles */
.mpt-inv-head{display:flex;align-items:baseline;justify-content:space-between;gap:24px;flex-wrap:wrap;margin-bottom:18px;padding-bottom:14px;border-bottom:1px solid rgba(255,255,255,.06);}
.mpt-inv-eyebrow{font-family:var(--font-mono);font-size:10.5px;letter-spacing:.18em;text-transform:uppercase;color:#0FA968;display:inline-flex;align-items:center;gap:8px;}
.mpt-inv-eyebrow::before{content:"●";font-size:8px;}
.mpt-inv-title{font-family:var(--font-display);font-weight:700;font-size:clamp(20px,2.1vw,26px);color:#fff;letter-spacing:-.025em;line-height:1.1;}
.mpt-inv-title em{font-family:var(--font-serif);font-style:italic;font-weight:400;color:#0FA968;}
.mpt-inv-sub{font-size:13px;color:rgba(255,255,255,.55);max-width:380px;line-height:1.5;}
.mpt-inv-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:14px;}
/* Supply card (third inventory tile) consolidates MoI + market type + scale */
.mpt-inv-card.supply{background:linear-gradient(135deg,rgba(190,30,45,.06),rgba(255,255,255,.01) 60%);border-color:rgba(190,30,45,.22);}
.mpt-inv-card.supply:hover{border-color:rgba(190,30,45,.42);background:linear-gradient(135deg,rgba(190,30,45,.10),rgba(255,255,255,.02) 60%);}
.mpt-supply-state{font-family:var(--font-display);font-weight:700;font-size:clamp(20px,2.4vw,28px);letter-spacing:-.025em;color:#fff;line-height:1;margin-top:-4px;margin-bottom:10px;}
.mpt-supply-state em{font-family:var(--font-serif);font-style:italic;font-weight:400;color:var(--accent);}
.mpt-supply-scale-track{position:relative;height:6px;border-radius:3px;display:flex;overflow:hidden;background:rgba(255,255,255,.04);margin-top:6px;}
.mpt-supply-scale-track .zone{height:100%;}
.mpt-supply-scale-track .zone.seller{background:rgba(190,30,45,.55);flex:4;}
.mpt-supply-scale-track .zone.balanced{background:rgba(255,255,255,.18);flex:3;}
.mpt-supply-scale-track .zone.buyer{background:rgba(15,169,104,.45);flex:3;}
.mpt-supply-marker{position:absolute;top:-3px;width:2px;height:12px;background:#fff;box-shadow:0 0 0 2px rgba(7,8,14,.85);transition:left .6s cubic-bezier(.22,1,.36,1);}
.mpt-supply-labels{display:flex;justify-content:space-between;margin-top:8px;font-family:var(--font-mono);font-size:9px;color:rgba(255,255,255,.42);letter-spacing:.1em;text-transform:uppercase;}
.mpt-supply-labels span:first-child{color:rgba(255,140,150,.7);}
.mpt-supply-labels span:last-child{color:rgba(120,210,170,.7);}
/* MoI card threshold legend — each band on its own line */
.mpt-moi-formula{margin-bottom:10px;}
.mpt-moi-thresholds{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:6px;}
.mpt-moi-thresholds li{display:flex;align-items:center;gap:8px;font-size:12.5px;color:rgba(255,255,255,.7);line-height:1.3;}
.mpt-moi-band{display:inline-block;width:10px;height:10px;border-radius:2px;flex-shrink:0;}
.mpt-moi-band.seller{background:rgba(190,30,45,.55);}
.mpt-moi-band.balanced{background:rgba(255,255,255,.28);}
.mpt-moi-band.buyer{background:rgba(15,169,104,.55);}
.mpt-moi-arrow{color:rgba(255,255,255,.32);margin:0 2px;}
.mpt-inv-card{background:rgba(255,255,255,.02);border:1px solid rgba(255,255,255,.07);border-radius:6px;padding:18px 20px;transition:border-color .2s,background .2s;}
.mpt-inv-card:hover{border-color:rgba(15,169,104,.32);background:rgba(15,169,104,.04);}
.mpt-inv-cardlbl{font-family:var(--font-mono);font-size:10.5px;letter-spacing:.14em;text-transform:uppercase;color:rgba(255,255,255,.55);margin-bottom:10px;line-height:1.2;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
/* Inline scope marker inside help text (e.g. "(Apr 2026)") */
.mpt-inv-scope{font-family:var(--font-mono);font-size:11px;color:rgba(255,255,255,.5);letter-spacing:.04em;white-space:nowrap;}
.mpt-inv-num{font-family:var(--font-display);font-weight:700;font-size:clamp(28px,3.4vw,42px);letter-spacing:-.035em;color:#fff;line-height:1;margin-bottom:8px;}
.mpt-inv-chg{font-family:var(--font-mono);font-size:10.5px;font-weight:600;letter-spacing:.10em;text-transform:uppercase;margin-bottom:12px;display:inline-flex;align-items:center;gap:4px;padding:4px 9px;border-radius:999px;}
.mpt-inv-chg:empty,.mpt-kpi-chg:empty,.mpt-price-chg:empty{display:none;}
.mpt-inv-chg.pos{color:#0FA968;background:rgba(15,169,104,.14);border:1px solid rgba(15,169,104,.32);}
.mpt-inv-chg.neg{color:#FF7280;background:rgba(255,107,122,.12);border:1px solid rgba(255,107,122,.30);}
.mpt-inv-chg.neu{color:rgba(255,255,255,.55);background:rgba(255,255,255,.05);border:1px solid rgba(255,255,255,.12);}
.mpt-inv-help{font-size:12.5px;color:rgba(255,255,255,.55);line-height:1.5;padding-top:12px;border-top:1px dashed rgba(255,255,255,.08);}
.mpt-kpi{background:rgba(255,255,255,.025);border:1px solid rgba(255,255,255,.08);border-radius:8px;padding:22px 24px;transition:border-color .2s,background .2s,box-shadow .2s;position:relative;overflow:hidden;}
.mpt-kpi:hover{border-color:rgba(255,255,255,.18);background:rgba(255,255,255,.04);}
.mpt-kpi-num{font-family:var(--font-display);font-weight:700;font-size:clamp(22px,2.5vw,32px);letter-spacing:-.035em;color:#fff;margin-bottom:4px;line-height:1.05;}
.mpt-kpi-num .unit{font-family:var(--font-mono);font-size:.36em;font-weight:500;color:rgba(255,255,255,.45);letter-spacing:.08em;margin-left:6px;text-transform:uppercase;vertical-align:0.18em;}
.mpt-kpi-lbl{font-size:12.5px;color:rgba(255,255,255,.68);margin-bottom:10px;}
.mpt-kpi-chg{font-family:var(--font-mono);font-size:10px;font-weight:600;letter-spacing:.10em;text-transform:uppercase;display:inline-flex;align-items:center;gap:4px;padding:3px 8px;border-radius:999px;}
.mpt-kpi-chg.pos{color:#0FA968;background:rgba(15,169,104,.14);border:1px solid rgba(15,169,104,.32);}
.mpt-kpi-chg.neg{color:#FF7280;background:rgba(255,107,122,.12);border:1px solid rgba(255,107,122,.30);}
.mpt-kpi-chg.neu{color:rgba(255,255,255,.55);background:rgba(255,255,255,.05);border:1px solid rgba(255,255,255,.12);}
/* Hero KPI — Market State (featured) */
.mpt-kpi-hero{background:linear-gradient(135deg,rgba(190,30,45,.10),rgba(190,30,45,.02) 60%);border:1px solid rgba(190,30,45,.32);padding:20px 22px 18px;display:flex;flex-direction:column;}
.mpt-kpi-hero::before{content:"";position:absolute;top:0;left:0;right:0;height:2px;background:var(--accent);}
.mpt-kpi-hero:hover{border-color:rgba(190,30,45,.55);background:linear-gradient(135deg,rgba(190,30,45,.14),rgba(190,30,45,.03) 60%);}
.mpt-hero-top{display:flex;justify-content:space-between;align-items:baseline;margin-bottom:4px;}
.mpt-hero-toplbl{font-family:var(--font-mono);font-size:10.5px;letter-spacing:.18em;text-transform:uppercase;color:rgba(255,255,255,.62);}
.mpt-hero-mo{font-family:var(--font-mono);font-size:12px;color:rgba(255,255,255,.78);letter-spacing:.04em;}
.mpt-hero-mo strong{color:#fff;font-weight:500;}
.mpt-hero-state{font-family:var(--font-display);font-weight:700;font-size:clamp(24px,2.9vw,34px);letter-spacing:-.03em;color:#fff;line-height:1;margin-top:8px;margin-bottom:14px;}
.mpt-hero-state em{font-family:var(--font-serif);font-style:italic;font-weight:400;color:var(--accent);}
.mpt-scale-wrap{margin-top:auto;}
.mpt-scale-track{position:relative;height:6px;border-radius:3px;display:flex;overflow:hidden;background:rgba(255,255,255,.04);}
.mpt-scale-track .zone{height:100%;}
.mpt-scale-track .zone.seller{background:rgba(190,30,45,.55);flex:4;}
.mpt-scale-track .zone.balanced{background:rgba(255,255,255,.18);flex:3;}
.mpt-scale-track .zone.buyer{background:rgba(15,169,104,.45);flex:3;}
.mpt-scale-marker{position:absolute;top:-3px;width:2px;height:12px;background:#fff;box-shadow:0 0 0 2px rgba(7,8,14,.85);transition:left .6s cubic-bezier(.22,1,.36,1);}
.mpt-scale-labels{display:flex;justify-content:space-between;margin-top:8px;font-family:var(--font-mono);font-size:9px;color:rgba(255,255,255,.38);letter-spacing:.1em;text-transform:uppercase;}
.mpt-scale-labels span:first-child{color:rgba(255,140,150,.7);}
.mpt-scale-labels span:last-child{color:rgba(120,210,170,.7);}
/* ── TREND EXPLORER — universal multi-metric chart ────── */
.mpt-trend{margin:18px 0 10px;padding:18px 24px 22px;border:1px solid rgba(255,255,255,.08);border-radius:8px;background:linear-gradient(135deg,rgba(255,255,255,.02),rgba(255,255,255,0) 60%);position:relative;}
.mpt-trend::before{content:"";position:absolute;top:0;left:0;right:0;height:2px;background:linear-gradient(90deg,rgba(255,255,255,.32),rgba(255,255,255,.05));border-radius:8px 8px 0 0;}
.mpt-trend-head{display:flex;align-items:flex-start;justify-content:space-between;gap:24px;flex-wrap:wrap;margin-bottom:18px;padding-bottom:14px;border-bottom:1px solid rgba(255,255,255,.06);}
.mpt-trend-eyebrow{font-family:var(--font-mono);font-size:10.5px;letter-spacing:.18em;text-transform:uppercase;color:rgba(255,255,255,.82);display:inline-flex;align-items:center;gap:9px;}
/* Animated mini sparkline replacing the generic dot. Line draws itself on
   loop, tip dot pulses subtly — communicates "data exploration" instantly. */
.trend-spark{width:32px;height:14px;overflow:visible;flex-shrink:0;}
.trend-spark-line{
  fill:none;
  stroke:var(--accent,#BE1E2D);
  stroke-width:1.4;
  stroke-linecap:round;
  stroke-linejoin:round;
  stroke-dasharray:60;
  stroke-dashoffset:60;
  animation:trendSparkDraw 3.4s cubic-bezier(.6,.05,.3,1) infinite;
  filter:drop-shadow(0 0 2px rgba(190,30,45,.45));
}
.trend-spark-dot{
  fill:var(--accent,#BE1E2D);
  opacity:0;
  transform-origin:31px 4px;
  animation:trendSparkPulse 3.4s cubic-bezier(.6,.05,.3,1) infinite;
  filter:drop-shadow(0 0 3px rgba(190,30,45,.7));
}
@keyframes trendSparkDraw{
  0%   { stroke-dashoffset:60; }
  35%  { stroke-dashoffset:0; }
  78%  { stroke-dashoffset:0; opacity:1; }
  92%  { stroke-dashoffset:0; opacity:.4; }
  100% { stroke-dashoffset:60; opacity:1; }
}
@keyframes trendSparkPulse{
  0%, 33%   { opacity:0; transform:scale(.6); }
  40%       { opacity:1; transform:scale(1.4); }
  55%       { opacity:1; transform:scale(1); }
  78%       { opacity:1; transform:scale(1); }
  92%       { opacity:.2; transform:scale(.6); }
  100%      { opacity:0; transform:scale(.6); }
}
@media (prefers-reduced-motion: reduce){
  .trend-spark-line{animation:none;stroke-dashoffset:0;}
  .trend-spark-dot{animation:none;opacity:1;}
}
.mpt-trend-title{font-family:var(--font-display);font-weight:700;font-size:clamp(20px,2.1vw,26px);color:#fff;letter-spacing:-.025em;line-height:1.1;margin:0;}
.mpt-trend-title em{font-family:var(--font-serif);font-style:italic;font-weight:400;color:rgba(255,255,255,.7);}
.mpt-trend-sub{font-size:13px;color:rgba(255,255,255,.55);max-width:420px;line-height:1.5;margin-top:6px;}
/* Trend summary block — Bloomberg-style KPI card.
   Vertical hierarchy: small eyebrow label → big value → row of chip badges
   (YoY + range). Right-aligned on desktop, left-aligned on mobile. */
.mpt-trend-summary{display:flex;flex-direction:column;align-items:flex-end;gap:8px;text-align:right;min-width:0;}
.mpt-trend-summary .mpt-trend-now-l{display:block;font-family:var(--font-mono);font-size:9.5px;color:rgba(255,255,255,.5);letter-spacing:.18em;text-transform:uppercase;line-height:1;margin:0;}
.mpt-trend-summary .mpt-trend-now-v{display:block;font-family:var(--font-display);font-weight:700;font-size:clamp(28px,3vw,40px);color:#fff;letter-spacing:-.02em;line-height:1;margin:0;}
.mpt-trend-chips{display:flex;align-items:center;gap:8px;flex-wrap:wrap;justify-content:flex-end;margin-top:2px;}
/* Shared chip pill */
.mpt-trend-chip{display:inline-flex;align-items:center;gap:6px;font-family:var(--font-mono);font-size:10.5px;font-weight:600;letter-spacing:.08em;text-transform:uppercase;padding:5px 10px;border-radius:999px;line-height:1;white-space:nowrap;border:1px solid transparent;}
/* YoY chip — colored by direction */
.mpt-trend-chip--yoy{border-color:rgba(255,255,255,.12);}
.mpt-trend-chip--yoy.pos{color:#0FA968;background:rgba(15,169,104,.12);border-color:rgba(15,169,104,.32);}
.mpt-trend-chip--yoy.neg{color:#FF6B7A;background:rgba(255,107,122,.12);border-color:rgba(255,107,122,.32);}
.mpt-trend-chip--yoy.neu{color:rgba(255,255,255,.62);background:rgba(255,255,255,.05);}
.mpt-trend-chip--yoy .chip-arrow{width:0;height:0;border-left:4px solid transparent;border-right:4px solid transparent;}
.mpt-trend-chip--yoy.pos .chip-arrow{border-bottom:6px solid #0FA968;}
.mpt-trend-chip--yoy.neg .chip-arrow{border-top:6px solid #FF6B7A;}
.mpt-trend-chip--yoy.neu .chip-arrow{display:none;}
.mpt-trend-chip--yoy .chip-val{font-weight:700;letter-spacing:.02em;}
.mpt-trend-chip--yoy .chip-lbl{font-weight:500;color:inherit;opacity:.62;font-size:9.5px;letter-spacing:.14em;}
/* Range chip — quieter, no fill */
.mpt-trend-chip--range{color:rgba(255,255,255,.48);background:rgba(255,255,255,.03);border-color:rgba(255,255,255,.08);font-weight:500;letter-spacing:.06em;text-transform:none;font-size:10.5px;}
.mpt-trend-chip--range:empty{display:none;}
/* ─── Reference lines ───────────────────────────────────────────────── */
/* Brighter than first iteration so users can clearly see WHERE the line is. */
.mpt-chart-avg-line{stroke:rgba(255,255,255,.45);stroke-width:1.1;stroke-dasharray:3 3;fill:none;pointer-events:none;vector-effect:non-scaling-stroke;transition:stroke 200ms ease, stroke-width 200ms ease, filter 220ms ease;}
.mpt-chart-ref-line{stroke:rgba(255,255,255,.62);stroke-width:1.2;stroke-dasharray:5 3;fill:none;pointer-events:none;vector-effect:non-scaling-stroke;transition:stroke 200ms ease, stroke-width 200ms ease, filter 220ms ease;}
/* pointer-events:stroke is required — SVG won't fire hover on a transparent
   stroke by default (defaults to visiblePainted which ignores invisible fills/strokes). */
.mpt-chart-ref-hit{stroke:transparent;stroke-width:16;fill:none;cursor:pointer;pointer-events:stroke;}
/* Illuminated hover state — bright stroke + warm glow */
.mpt-chart-avg-line.is-hover{stroke:#fff;stroke-width:1.8;filter:drop-shadow(0 0 6px rgba(255,255,255,.7));}
.mpt-chart-ref-line.is-hover{stroke:#fff;stroke-width:1.8;filter:drop-shadow(0 0 8px rgba(255,255,255,.85));}

/* ─── Reference line right-edge labels — Datawrapper / Bloomberg pattern ─
   The label lives at the END of the dashed line (right edge of the chart),
   right beside a small dot anchored to the line itself. Y-axis stays clean
   for data range, the label sits exactly where the line exits — no
   alignment ambiguity, no collision with axis ticks. */
.mpt-ref-end-labels{position:absolute;left:0;right:0;top:0;bottom:0;pointer-events:none;}
/* Layout: text reads inward (right→left), dot anchors at the line endpoint
   (right edge of chart). flex-row-reverse puts the ::before dot visually LAST. */
.mpt-ref-end-label{
  position:absolute;
  transform:translate(0,-50%);
  display:inline-flex;
  flex-direction:row-reverse;
  align-items:center;
  gap:7px;
  font-family:var(--font-mono);
  font-size:10px;
  letter-spacing:.04em;
  line-height:1;
  white-space:nowrap;
  pointer-events:auto;
  cursor:pointer;
  transition:color 220ms ease, opacity 220ms ease;
  opacity:0;
  animation:refEndLabelIn 360ms cubic-bezier(.2,.8,.2,1) 220ms forwards;
}
@keyframes refEndLabelIn{
  from{opacity:0;transform:translate(6px,-50%);}
  to  {opacity:1;transform:translate(0,-50%);}
}
.mpt-ref-end-label::before{
  content:"";
  width:6px;height:6px;border-radius:50%;
  background:currentColor;
  flex-shrink:0;
  transition:transform 200ms ease, box-shadow 200ms ease;
  /* Centered on the dashed line endpoint at the right edge of the chart */
}
.mpt-ref-end-label .rel-val{font-weight:600;letter-spacing:.02em;}
.mpt-ref-end-label .rel-kind{font-size:8.5px;letter-spacing:.14em;text-transform:uppercase;color:inherit;opacity:.6;}
.mpt-ref-end-label.is-ref{color:rgba(255,255,255,.72);}
.mpt-ref-end-label.is-avg{color:rgba(255,255,255,.48);}
.mpt-ref-end-label.is-hover{color:#fff;}
.mpt-ref-end-label.is-hover::before{transform:scale(1.6);box-shadow:0 0 8px rgba(255,255,255,.85);}
.mpt-ref-end-label.is-hover .rel-kind{color:rgba(255,255,255,.85);opacity:1;}

/* ─── Hover tooltip for reference lines ─────────────────────────────── */
/* Floating card pinned just above the line, follows X cursor.
   Big enough to read at a glance but compact enough not to obscure data. */
.mpt-ref-tooltip{
  position:absolute;
  pointer-events:none;
  transform:translate(-50%,calc(-100% - 14px));
  background:linear-gradient(180deg,rgba(28,30,38,.97),rgba(18,20,26,.97));
  backdrop-filter:blur(8px);
  -webkit-backdrop-filter:blur(8px);
  border:1px solid rgba(255,255,255,.14);
  padding:10px 13px;
  border-radius:7px;
  color:#fff;
  white-space:nowrap;
  opacity:0;
  transition:opacity 160ms ease, transform 160ms cubic-bezier(.2,.8,.2,1);
  z-index:11;
  box-shadow:0 10px 28px -10px rgba(0,0,0,.65), 0 2px 6px -2px rgba(0,0,0,.35);
  min-width:160px;
}
.mpt-ref-tooltip.on{opacity:1;transform:translate(-50%,calc(-100% - 18px));}
.mpt-ref-tooltip::after{
  content:"";
  position:absolute;
  left:50%; bottom:-5px;
  width:9px; height:9px;
  background:rgba(18,20,26,.97);
  border-right:1px solid rgba(255,255,255,.14);
  border-bottom:1px solid rgba(255,255,255,.14);
  transform:translateX(-50%) rotate(45deg);
}
.mpt-ref-tooltip .rt-label{font-family:var(--font-mono);font-size:9px;letter-spacing:.2em;text-transform:uppercase;color:rgba(255,255,255,.58);margin-bottom:5px;display:block;}
.mpt-ref-tooltip .rt-value{font-family:var(--font-display);font-size:22px;font-weight:700;color:#fff;display:block;letter-spacing:-.015em;line-height:1.05;}
.mpt-ref-tooltip .rt-desc{font-size:11px;color:rgba(255,255,255,.66);margin-top:7px;display:block;letter-spacing:0;text-transform:none;font-family:var(--font-sans);max-width:240px;white-space:normal;line-height:1.45;}
.mpt-trend-yoy .mpt-cs-l{margin-top:6px;}
/* Metric tabs + range chips control row */
.mpt-trend-controls{display:flex;align-items:center;justify-content:space-between;gap:18px;margin-bottom:14px;flex-wrap:wrap;}
.mpt-metric-tabs{display:flex;gap:4px;flex-wrap:wrap;flex:1;min-width:0;}
.mpt-metric-tab{background:transparent;border:1px solid rgba(255,255,255,.10);color:rgba(255,255,255,.6);padding:6px 12px;min-height:32px;border-radius:999px;font-family:var(--font-sans);font-size:12px;font-weight:500;letter-spacing:.005em;cursor:pointer;transition:all .15s;white-space:nowrap;}
.mpt-metric-tab:hover{color:#fff;border-color:rgba(255,255,255,.32);background:rgba(255,255,255,.04);}
.mpt-metric-tab[aria-selected="true"]{background:rgba(255,255,255,.10);color:#fff;border-color:rgba(255,255,255,.45);font-weight:600;}
.mpt-metric-tab.previewing{border-color:rgba(190,30,45,.55);color:#fff;}
/* The chart note (date range + scope) sits below the controls */
.mpt-chart-note{font-size:11px;color:rgba(255,255,255,.4);margin-top:14px;font-family:var(--font-mono);letter-spacing:.06em;text-align:center;text-transform:lowercase;}
/* KPI cards become hover-previewable: subtle ring when active */
.mpt-kpi[data-metric],.mpt-price-hero-cell[data-metric],.mpt-inv-card[data-metric]{cursor:pointer;}
/* Preview state — hovering a card (no commit yet): soft 8px halo, base border unchanged */
.mpt-kpi[data-metric].previewing,.mpt-inv-card[data-metric].previewing{background:rgba(255,255,255,.045);box-shadow:0 0 8px rgba(255,255,255,.14),0 0 22px rgba(255,255,255,.06);}
.mpt-price-hero-cell[data-metric].previewing{background:rgba(255,255,255,.04);border-radius:6px;box-shadow:0 0 8px rgba(255,255,255,.14),0 0 22px rgba(255,255,255,.06);}
/* Active (locked, currently shown in chart): stronger glow halo + tiny "in chart" eyebrow — no border bump */
.mpt-kpi[data-metric].active-metric,.mpt-inv-card[data-metric].active-metric{background:rgba(255,255,255,.06);box-shadow:0 0 8px rgba(255,255,255,.22),0 0 28px rgba(255,255,255,.10);position:relative;}
.mpt-price-hero-cell[data-metric].active-metric{background:rgba(255,255,255,.055);border-radius:6px;box-shadow:0 0 8px rgba(255,255,255,.22),0 0 28px rgba(255,255,255,.10);position:relative;}
.mpt-kpi[data-metric].active-metric::after,.mpt-price-hero-cell[data-metric].active-metric::after,.mpt-inv-card[data-metric].active-metric::after{
  content:"● in chart";
  position:absolute;top:12px;right:14px;
  font-family:var(--font-mono);font-size:8.5px;letter-spacing:.12em;text-transform:uppercase;
  color:rgba(255,255,255,.55);line-height:1;
}
.mpt-cs-v{font-family:var(--font-mono);font-size:18px;color:#fff;letter-spacing:-.01em;line-height:1;}
.mpt-cs-v.neg{color:#FF6B7A;}
.mpt-cs-l{font-family:var(--font-mono);font-size:10px;color:rgba(255,255,255,.55);letter-spacing:.14em;text-transform:uppercase;margin-top:4px;}
.mpt-chart-area{position:relative;min-width:0;}
.mpt-range{display:flex;gap:2px;justify-content:flex-end;margin-bottom:6px;}
.mpt-range button{background:transparent;border:1px solid rgba(255,255,255,.10);font-family:var(--font-mono);font-size:11px;letter-spacing:.08em;color:rgba(255,255,255,.62);padding:6px 11px;min-height:32px;border-radius:4px;cursor:pointer;transition:all .15s;text-transform:uppercase;}
.mpt-range button:hover{color:#fff;border-color:rgba(255,255,255,.32);background:rgba(255,255,255,.05);}
.mpt-range button[aria-pressed="true"]{color:var(--ink);background:#fff;border-color:#fff;font-weight:600;}
/* Chart frame — HTML labels around an SVG plot area
   (HTML keeps text rendering at native CSS pixels — no stretching from SVG preserveAspectRatio=none) */
.mpt-chart-area{position:relative;height:280px;padding:0 0 22px 52px;box-sizing:border-box;}
.mpt-chart-svg-wrap{position:absolute;left:52px;right:8px;top:0;bottom:22px;}
.mpt-chart-scroll-inner{position:relative;width:100%;height:100%;}
.mpt-chart-svg-wrap svg.mpt-chart{display:block;width:100%;height:100%;overflow:visible;}
.mpt-chart .gridline{stroke:rgba(255,255,255,.08);stroke-width:1;vector-effect:non-scaling-stroke;}
/* MoI zone bands (rects + dividers — labels are HTML overlays) */
.mpt-chart .zone-seller   { fill:rgba(190,30,45,.10); }
.mpt-chart .zone-balanced { fill:rgba(255,255,255,.03); }
.mpt-chart .zone-buyer    { fill:rgba(15,169,104,.10); }
.mpt-chart .zone-divider  { stroke:rgba(255,255,255,.18); stroke-width:1; stroke-dasharray:3 4; vector-effect:non-scaling-stroke; }
/* Y-axis labels (HTML, sized in CSS px — no SVG distortion) */
.mpt-y-labels{position:absolute;left:0;top:0;bottom:22px;width:48px;pointer-events:none;}
.mpt-y-labels .ylbl{position:absolute;right:6px;transform:translateY(-50%);font-family:var(--font-mono);font-size:10.5px;color:rgba(255,255,255,.6);letter-spacing:.04em;white-space:nowrap;line-height:1;}
.mpt-y-labels .ylbl-max{top:0;}
.mpt-y-labels .ylbl-mid{top:50%;}
.mpt-y-labels .ylbl-min{top:100%;}
/* X-axis month labels (HTML, positioned by JS via inline left:%) */
.mpt-x-labels{position:absolute;left:52px;right:8px;bottom:0;height:22px;pointer-events:none;}
.mpt-x-labels .xlbl{position:absolute;bottom:4px;transform:translateX(-50%);font-family:var(--font-mono);font-size:10.5px;color:rgba(255,255,255,.55);letter-spacing:.04em;white-space:nowrap;line-height:1;}
/* MoI zone labels (HTML, positioned by JS via inline top:%; right-aligned to chart) */
.mpt-zone-labels{position:absolute;left:52px;right:8px;top:0;bottom:22px;pointer-events:none;}
.mpt-zone-labels[hidden]{display:none;}
.mpt-zone-labels .zlbl{position:absolute;right:6px;transform:translateY(-50%);font-family:var(--font-mono);font-size:9.5px;letter-spacing:.14em;text-transform:uppercase;white-space:nowrap;line-height:1;}
.mpt-zone-labels .zlbl.seller   {color:rgba(255,140,150,.7);}
.mpt-zone-labels .zlbl.balanced {color:rgba(255,255,255,.42);}
.mpt-zone-labels .zlbl.buyer    {color:rgba(120,210,170,.7);}
/* Mobile: compress chart + show expand button */
.mpt-chart-expand{display:none;position:absolute;top:6px;right:6px;z-index:4;background:rgba(7,8,14,.92);border:1px solid rgba(255,255,255,.18);border-radius:4px;color:#fff;font-family:var(--font-mono);font-size:10px;padding:5px 9px;letter-spacing:.06em;text-transform:uppercase;cursor:pointer;display:none;align-items:center;gap:4px;}
.mpt-chart-expand:hover{background:rgba(15,16,28,.98);border-color:rgba(255,255,255,.35);}
/* Fullscreen chart modal (mobile + opt-in desktop) — handles portrait + landscape */
.mpt-chart-modal{display:none;position:fixed;inset:0;z-index:200;background:rgba(7,8,14,.96);backdrop-filter:blur(8px);padding:12px;height:100dvh;height:100svh;flex-direction:column;}
@supports not (height: 100dvh){ .mpt-chart-modal{height:100vh;} }
.mpt-chart-modal.open{display:flex;}
.mpt-chart-modal-head{display:flex;justify-content:space-between;align-items:center;gap:12px;padding-bottom:10px;border-bottom:1px solid rgba(255,255,255,.08);margin-bottom:8px;flex-shrink:0;}
.mpt-chart-modal-title{font-family:var(--font-display);font-weight:600;font-size:15px;color:#fff;letter-spacing:-.01em;}
.mpt-chart-modal-close{background:transparent;border:1px solid rgba(255,255,255,.22);color:#fff;padding:6px 12px;border-radius:4px;font-size:11px;font-family:var(--font-mono);letter-spacing:.08em;text-transform:uppercase;cursor:pointer;flex-shrink:0;}
.mpt-chart-modal-close:hover{background:rgba(255,255,255,.06);}
.mpt-chart-modal-body{flex:1;display:flex;flex-direction:column;min-height:0;overflow:hidden;}
/* Controls: tabs scroll horizontally if too wide, range chips stay visible */
.mpt-chart-modal-body .mpt-trend-controls{margin-bottom:8px;flex-shrink:0;}
.mpt-chart-modal-body .mpt-chart-note{margin-top:8px;margin-bottom:0;flex-shrink:0;font-size:11px;}
.mpt-chart-modal-body .mpt-chart-area{flex:1;height:auto;min-height:0;position:relative;}
.mpt-chart-modal-body .mpt-chart-expand{display:none;}
/* Landscape: stack controls horizontally to save vertical space for the chart */
@media (orientation:landscape) and (max-height:500px){
  .mpt-chart-modal{padding:8px 12px;}
  .mpt-chart-modal-head{padding-bottom:6px;margin-bottom:6px;}
  .mpt-chart-modal-title{font-size:13px;}
  .mpt-chart-modal-body .mpt-trend-controls{margin-bottom:4px;}
  .mpt-chart-modal-body .mpt-chart-note{margin-top:4px;margin-bottom:0;}
}
body.mpt-modal-open{overflow:hidden;}
.mpt-chart .hover-hit{fill:transparent;cursor:crosshair;}
/* Hover guide line + dot — HTML overlays so they keep their geometry regardless of SVG stretching */
.mpt-chart-svg-wrap{position:relative;}
.mpt-hover-line{position:absolute;top:0;bottom:0;width:1px;background:repeating-linear-gradient(to bottom,rgba(255,255,255,.32) 0 2px,transparent 2px 5px);opacity:0;transition:opacity .12s;pointer-events:none;transform:translateX(-50%);}
.mpt-hover-line.on{opacity:1;}
.mpt-hover-dot{position:absolute;width:11px;height:11px;border-radius:50%;background:#fff;border:2px solid var(--accent);opacity:0;transition:opacity .12s;pointer-events:none;transform:translate(-50%,-50%);box-sizing:border-box;box-shadow:0 0 0 3px rgba(7,8,14,.6);}
.mpt-hover-dot.on{opacity:1;}
.mpt-tooltip{position:absolute;pointer-events:none;background:rgba(7,8,14,.96);border:1px solid rgba(255,255,255,.16);border-radius:5px;padding:7px 10px;font-family:var(--font-mono);color:#fff;white-space:nowrap;transform:translate(-50%,calc(-100% - 10px));opacity:0;transition:opacity .12s;z-index:5;backdrop-filter:blur(6px);}
.mpt-tooltip.on{opacity:1;}
.mpt-tooltip .tt-month{color:rgba(255,255,255,.5);font-size:9.5px;letter-spacing:.1em;text-transform:uppercase;display:block;margin-bottom:2px;}
.mpt-tooltip .tt-val{font-size:14px;font-weight:500;letter-spacing:.01em;}

/* ── LISTING SECTIONS ───────────────────────────────────── */
.ls-sec{padding:96px 0;background:var(--paper);}
.ls-sec.white{background:var(--white);}
.ls-sec.ivory{background:var(--ivory);}
.ls-head{display:flex;align-items:flex-end;justify-content:space-between;gap:20px;margin-bottom:40px;padding-bottom:24px;border-bottom:1px solid var(--border);}
.ls-head .h2{margin-top:12px;}
.ls-browse{font-size:14px;font-weight:600;color:var(--ink);border-bottom:1.5px solid var(--accent);padding-bottom:3px;text-transform:lowercase;letter-spacing:.02em;transition:color .2s;}
.ls-browse:hover{color:var(--accent);}
/* Standard listing card (shared) */
.listing-card{position:relative;background:var(--white);border:1px solid var(--border);border-radius:8px;overflow:hidden;cursor:pointer;transition:border-color .2s ease,transform .3s cubic-bezier(.22,1,.36,1),box-shadow .3s cubic-bezier(.22,1,.36,1);text-decoration:none;color:inherit;display:block;}
.listing-card:hover{border-color:rgba(24,26,34,.22);transform:translateY(-3px);box-shadow:0 12px 28px -14px rgba(24,26,34,.18),0 2px 6px -2px rgba(24,26,34,.08);}
.listing-card:focus-visible{outline:2px solid var(--accent);outline-offset:3px;}
/* 8X corner mark — small red L in the top-right of every property card; same family
   as the .svc-corner motif on the service cards, scaled down for product-card use. */
.listing-card::before,.listing-card::after{content:"";position:absolute;background:var(--accent);pointer-events:none;z-index:3;transition:width 320ms cubic-bezier(.22,1,.36,1),height 320ms cubic-bezier(.22,1,.36,1);}
.listing-card::before{top:11px;right:11px;width:18px;height:2px;}
.listing-card::after{top:11px;right:11px;width:2px;height:18px;}
.listing-card:hover::before{width:26px;}
.listing-card:hover::after{height:26px;}
/* On the desktop featured big card, drop the corner mark below the 4px top border and scale it up. */
@media(min-width:900px){
  .ls-sec .feat-grid .listing-card.featured::before,
  .ls-sec .feat-grid .listing-card.featured::after{top:15px;right:15px;}
  .ls-sec .feat-grid .listing-card.featured::before{width:24px;}
  .ls-sec .feat-grid .listing-card.featured::after{height:24px;}
  .ls-sec .feat-grid .listing-card.featured:hover::before{width:34px;}
  .ls-sec .feat-grid .listing-card.featured:hover::after{height:34px;}
}
.listing-card.featured{border-top:4px solid var(--accent);border-radius:0 0 8px 8px;display:flex;flex-direction:column;}
.listing-card.featured .listing-photo{aspect-ratio:auto;flex:0 0 auto;}
.listing-card.featured .listing-body{flex:1 1 auto;}
.listing-card.featured .listing-brokerage{margin-top:auto;}
.listing-photo{aspect-ratio:4/3;position:relative;overflow:hidden;background:#1a2430;}
.listing-badges{position:absolute;top:14px;left:14px;display:flex;gap:6px;z-index:2;}
.badge-red{background:var(--accent);color:#fff;font-size:10px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;padding:5px 10px;border-radius:999px;}
.badge-ink{background:rgba(24,26,34,.82);color:#fff;font-size:10px;font-weight:600;letter-spacing:.08em;text-transform:uppercase;padding:5px 10px;border-radius:999px;backdrop-filter:blur(4px);}
.badge-jade{background:var(--jade);color:#fff;font-size:10px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;padding:5px 10px;border-radius:999px;}
.badge-orange{background:#C76A1F;color:#fff;font-size:10px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;padding:5px 10px;border-radius:999px;}
.badge-gold{background:var(--gold);color:#fff;font-size:10px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;padding:5px 10px;border-radius:999px;}
.badge-drop{background:rgba(12,14,18,.42);-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);color:#FBBF24;box-shadow:inset 0 0 0 1.5px #F59E0B;font-size:10px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;padding:5px 10px 5px 8px;border-radius:999px;display:inline-flex;align-items:center;gap:5px;}
.badge-drop::before{content:"";display:inline-block;width:0;height:0;border-left:4px solid transparent;border-right:4px solid transparent;border-top:6px solid currentColor;animation:badgeDropArrow 1.4s ease-in-out infinite;}
@keyframes badgeDropArrow{0%,40%{transform:translateY(-2px);}55%,70%{transform:translateY(3px);}100%{transform:translateY(-2px);}}
@media (prefers-reduced-motion:reduce){.badge-drop::before{animation:none;}}
.badge-new{background:#3FBF7A;color:#fff;font-size:10px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;padding:5px 10px 5px 8px;border-radius:999px;display:inline-flex;align-items:center;gap:5px;animation:badgeNewPulse 2.6s ease-in-out infinite;}
.badge-new::before{content:"●";color:#fff;animation:badgeNewBlink 2s ease-in-out infinite;font-size:8px;line-height:1;}
@keyframes badgeNewPulse{0%,100%{box-shadow:0 0 0 0 rgba(63,191,122,.35);}50%{box-shadow:0 0 0 5px rgba(63,191,122,0);}}
@keyframes badgeNewBlink{0%,100%{opacity:1;}50%{opacity:.55;}}
@media (prefers-reduced-motion:reduce){.badge-new,.badge-new::before{animation:none;}}
.badge-sold{background:var(--accent);color:#fff;font-size:10px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;padding:5px 10px;border-radius:999px;}
.listing-body{padding:20px 22px 18px;display:flex;flex-direction:column;}
.listing-eyebrow{font-family:var(--font-mono);font-size:11px;font-weight:500;color:var(--fg-2);letter-spacing:.14em;text-transform:uppercase;margin-bottom:10px;}
.listing-address{font-family:var(--font-display);font-size:19px;font-weight:600;color:var(--ink);letter-spacing:-.02em;line-height:1.2;margin-bottom:6px;}
.listing-meta{font-family:var(--font-sans);font-size:13px;font-weight:500;color:var(--fg-2);letter-spacing:.005em;margin-bottom:14px;}
.listing-price{font-family:var(--font-display);font-size:23px;font-weight:800;color:var(--ink);letter-spacing:-.025em;line-height:1.1;}
.listing-price-sub{font-family:var(--font-mono);font-size:10.5px;color:var(--fg-3);margin-top:4px;letter-spacing:.04em;}
.listing-desc{font-family:var(--font-sans);font-size:13.5px;font-weight:400;line-height:1.6;color:var(--fg-1);margin-top:16px;max-width:62ch;}
.listing-price-label{font-family:var(--font-mono);font-size:10px;font-weight:500;color:var(--fg-3);letter-spacing:.12em;text-transform:uppercase;margin-bottom:3px;}
.listing-card.featured .listing-price-label{font-size:11px;margin-bottom:4px;}
.listing-card.featured .listing-body{padding:26px 28px 22px;}
.listing-card.featured .listing-eyebrow{font-size:12.5px;margin-bottom:12px;}
.listing-card.featured .listing-address{font-size:28px;margin-bottom:8px;letter-spacing:-.03em;}
.listing-card.featured .listing-meta{font-size:14.5px;margin-bottom:20px;}
.listing-card.featured .listing-price{font-size:34px;letter-spacing:-.03em;}
.listing-card.featured .listing-desc{font-size:15.5px;line-height:1.65;margin-top:20px;color:var(--fg-1);max-width:none;}
.listing-card.featured .listing-intel{display:grid;grid-template-columns:repeat(auto-fit,minmax(120px,1fr));gap:10px;margin-top:22px;padding:16px 0;border-top:1px dashed rgba(24,26,34,.12);border-bottom:1px dashed rgba(24,26,34,.12);}
.listing-card.featured .intel-chip{display:flex;flex-direction:column;gap:3px;}
.listing-card.featured .intel-lbl{font-family:var(--font-mono);font-size:10px;letter-spacing:.12em;text-transform:uppercase;color:var(--fg-3);}
.listing-card.featured .intel-val{font-family:var(--font-display);font-size:17px;font-weight:700;letter-spacing:-.02em;color:var(--ink);line-height:1.05;}
.listing-card.featured .listing-cta-row{display:flex;margin-top:18px;}
.listing-card.featured .listing-cta{display:inline-flex;align-items:center;gap:8px;background:var(--accent);color:#fff;font-family:var(--font-sans);font-size:13px;font-weight:600;letter-spacing:.02em;padding:11px 18px;border-radius:6px;transition:background .18s,box-shadow .18s,transform .12s;}
.listing-card.featured:hover .listing-cta{background:var(--accent-hover);box-shadow:0 8px 22px rgba(190,30,45,.32);}
.listing-card.featured .listing-cta svg{transition:transform .2s;}
.listing-card.featured:hover .listing-cta svg{transform:translateX(3px);}
.listing-card.featured .listing-brokerage{padding:18px 28px 22px;font-size:11.5px;}
.listing-card.featured .sold-price-row{margin-bottom:14px;}
.listing-card.featured .sold-price{font-size:30px;}
.listing-card.featured .sold-list-price{font-size:18px;}
/* ─── Area pulse: per-card neighbourhood readout (city-level live stats) ─── */
.listing-pulse{display:flex;flex-wrap:wrap;align-items:baseline;column-gap:7px;row-gap:4px;margin-top:12px;padding-top:12px;border-top:1px dashed rgba(24,26,34,.10);font-family:var(--font-mono);font-size:10px;letter-spacing:.10em;text-transform:uppercase;line-height:1.25;color:var(--fg-2);}
.listing-pulse[data-loading]{opacity:.55;}
.listing-pulse[data-empty]{display:none;}
.pulse-eyebrow{color:var(--accent);font-weight:700;letter-spacing:.18em;font-size:9px;padding:2px 6px;border:1px solid currentColor;border-radius:3px;line-height:1;}
.pulse-loc{color:var(--ink);font-weight:700;letter-spacing:.14em;}
.pulse-sep{color:var(--fg-3);opacity:.55;font-weight:400;}
.pulse-stat{display:inline-flex;align-items:baseline;gap:4px;color:var(--ink);}
.pulse-num{font-weight:700;font-size:11px;letter-spacing:.04em;}
.pulse-lbl{color:var(--fg-3);font-weight:500;letter-spacing:.10em;font-size:9.5px;}
.listing-card.featured .listing-pulse{font-size:11px;margin-top:14px;padding-top:14px;column-gap:10px;}
.listing-card.featured .pulse-num{font-size:13px;}
.listing-card.featured .pulse-eyebrow{font-size:10px;}
/* ─── View Transitions: cross-document morph from card → listing detail ─── */
@view-transition{ navigation:auto; }
::view-transition-old(root),
::view-transition-new(root){animation-duration:380ms;animation-timing-function:cubic-bezier(.22,1,.36,1);}
.vt-hero-photo{view-transition-name:hero-photo;}
.vt-hero-address{view-transition-name:hero-address;}
.vt-hero-price{view-transition-name:hero-price;}
::view-transition-old(hero-photo),
::view-transition-new(hero-photo){animation-duration:560ms;animation-timing-function:cubic-bezier(.22,1,.36,1);}
::view-transition-old(hero-address),
::view-transition-new(hero-address){animation-duration:480ms;animation-timing-function:cubic-bezier(.22,1,.36,1);}
::view-transition-old(hero-price),
::view-transition-new(hero-price){animation-duration:480ms;animation-timing-function:cubic-bezier(.22,1,.36,1);}
@media(prefers-reduced-motion:reduce){
  @view-transition{ navigation:none; }
}
/* Photo carousel + overlays (matches listings-page pattern) */
.listing-slides{display:flex;width:100%;height:100%;transition:transform .35s cubic-bezier(.4,0,.2,1);}
.listing-slide{flex:0 0 100%;width:100%;height:100%;background-position:center;background-size:cover;}
.listing-arrows{position:absolute;inset:0;display:flex;align-items:center;justify-content:space-between;padding:0 8px;pointer-events:none;opacity:0;transition:opacity .15s;z-index:2;}
.listing-card:hover .listing-arrows{opacity:1;}
.listing-arr{width:28px;height:28px;border-radius:50%;background:rgba(255,255,255,.92);border:0;cursor:pointer;display:flex;align-items:center;justify-content:center;pointer-events:auto;box-shadow:0 1px 4px rgba(0,0,0,.18);color:var(--ink);transition:background .2s,transform .2s,opacity .2s;}
.listing-arr:hover{background:#fff;transform:scale(1.08);}
.listing-arr:disabled{opacity:.35;cursor:default;}
.listing-arr svg{display:block;}
.listing-dots{position:absolute;bottom:10px;left:50%;transform:translateX(-50%);display:flex;gap:5px;z-index:2;pointer-events:none;}
.listing-dot{display:inline-block;flex:0 0 auto;width:6px;height:6px;padding:0;border-radius:50%;background:rgba(255,255,255,.55);transition:background .2s,width .2s;}
/* padding:0 + explicit display: the Webflow shell has a global `.active` class
   (padding:.9em 1.8em;display:block) that bled in and blew the active dot up
   to a 58×29 white box on any card with ≤6 photos. */
.listing-dot.active{background:#fff;width:18px;height:6px;padding:0;display:inline-block;border-radius:3px;}
.listing-counter{position:absolute;bottom:10px;right:10px;background:rgba(0,0,0,.6);color:#fff;font-family:var(--font-mono);font-size:10px;font-weight:500;padding:3px 8px;border-radius:4px;z-index:2;letter-spacing:.04em;backdrop-filter:blur(2px);}
.listing-heart{position:absolute;top:10px;right:10px;width:32px;height:32px;border-radius:50%;background:rgba(24,26,34,.32);backdrop-filter:blur(6px);border:0;cursor:pointer;display:flex;align-items:center;justify-content:center;color:#fff;z-index:3;transition:background .2s,transform .2s;}
.listing-heart:hover{background:rgba(24,26,34,.55);transform:scale(1.1);}
.listing-heart svg{display:block;}
.listing-heart.is-fav{background:rgba(255,255,255,.95);color:var(--accent);}
.listing-heart.is-fav svg{fill:var(--accent);}
.listing-heart.is-fav:hover{background:#fff;}
.badge-tour{background:rgba(24,26,34,.85);color:#fff;font-size:10px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;padding:5px 10px;border-radius:999px;display:inline-flex;align-items:center;gap:5px;backdrop-filter:blur(4px);cursor:pointer;transition:background .15s,transform .15s;}
.badge-tour:hover{background:var(--accent);transform:translateY(-1px);}
.badge-tour svg{width:11px;height:11px;}
.listing-brokerage{padding:0 22px 18px;font-family:var(--font-mono);font-size:11px;color:var(--fg-3);letter-spacing:.05em;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
/* Live market feed (Just Missed section) */
.mf-panel{position:relative;background:var(--ink);border:1px solid var(--graphite-2);border-top:2px solid var(--accent);border-radius:8px;overflow:hidden;max-width:920px;margin:0 auto 56px;font-family:var(--font-mono);box-shadow:0 18px 40px rgba(24,26,34,.25);}
.mf-header{display:flex;align-items:center;justify-content:space-between;padding:11px 16px;background:rgba(0,0,0,.32);border-bottom:1px solid rgba(255,255,255,.06);}
.mf-tlights{display:flex;gap:6px;}
.mf-tl{width:11px;height:11px;border-radius:50%;}
.mf-tl-r{background:#E55353;box-shadow:inset 0 0 0 1px rgba(0,0,0,.15);}
.mf-tl-y{background:#E0A93A;box-shadow:inset 0 0 0 1px rgba(0,0,0,.15);}
.mf-tl-g{background:#52C775;box-shadow:inset 0 0 0 1px rgba(0,0,0,.15);}
.mf-label{font-size:11px;color:rgba(255,255,255,.5);letter-spacing:.06em;}
.mf-status{display:flex;align-items:center;gap:7px;font-size:10px;font-weight:700;letter-spacing:.14em;color:rgba(255,255,255,.88);}
.mf-live-dot{width:7px;height:7px;border-radius:50%;background:#52C775;animation:mfLivePulse 1.8s ease-in-out infinite;}
@keyframes mfLivePulse{0%,100%{box-shadow:0 0 0 0 rgba(82,199,117,.55);}50%{box-shadow:0 0 0 6px rgba(82,199,117,0);}}
.mf-colhdr{display:flex;align-items:center;gap:14px;padding:10px 18px 8px;font-size:9.5px;letter-spacing:.16em;color:rgba(255,255,255,.34);font-weight:600;text-transform:uppercase;border-bottom:1px dashed rgba(255,255,255,.07);}
.mf-list{list-style:none;padding:12px 18px 36px;margin:0;height:300px;overflow:hidden;display:flex;flex-direction:column;gap:9px;}
.mf-line{display:flex;align-items:center;gap:14px;font-size:12.5px;color:rgba(255,255,255,.85);animation:mfSlideIn .42s cubic-bezier(.34,1.4,.64,1) both;font-family:var(--font-mono);transition:background 160ms;border-radius:4px;padding:1px 4px;margin:-1px -4px;}
.mf-line[data-mls]:hover{background:rgba(255,255,255,.05);}
.mf-c-time{flex:0 0 64px;color:rgba(255,255,255,.4);font-size:11px;letter-spacing:.04em;}
.mf-c-status{flex:0 0 72px;}
.mf-status-pill{font-size:9.5px;font-weight:700;letter-spacing:.12em;padding:3px 8px;border-radius:3px;text-transform:uppercase;font-family:var(--font-mono);text-align:center;display:inline-block;width:100%;box-sizing:border-box;}
.mf-status-sold{background:rgba(190,30,45,.18);color:#FF7280;border:1px solid rgba(190,30,45,.35);}
.mf-status-pending{background:rgba(217,119,6,.18);color:#F4A23A;border:1px solid rgba(217,119,6,.35);}
.mf-c-addr{flex:1;min-width:0;color:rgba(255,255,255,.94);font-weight:500;font-family:var(--font-sans);font-size:13px;letter-spacing:-.005em;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.mf-c-hood{flex:0 0 100px;color:rgba(255,255,255,.42);font-size:11px;text-align:right;letter-spacing:.04em;}
.mf-c-list{flex:0 0 74px;text-align:right;color:rgba(255,255,255,.75);font-size:12px;}
.mf-c-sold{flex:0 0 78px;text-align:right;color:rgba(255,255,255,.95);font-size:12.5px;font-weight:600;}
.mf-c-psf{flex:0 0 60px;text-align:right;color:rgba(255,255,255,.6);font-size:11.5px;}
.mf-c-ratio{flex:0 0 64px;text-align:right;font-size:11.5px;font-weight:600;}
.mf-ratio-up{color:#5DCC8A;}
.mf-ratio-down{color:#FF8E6D;}
.mf-ratio-flat{color:rgba(255,255,255,.55);}
.mf-na{color:rgba(255,255,255,.25);}
.mf-blur{filter:blur(4.5px);cursor:pointer;user-select:none;transition:filter .15s;}
.mf-blur:hover{filter:blur(3px);}
body.is-vow-member .mf-blur{filter:none;cursor:default;user-select:auto;}
.mf-fade{position:absolute;left:0;right:0;bottom:0;height:80px;background:linear-gradient(to top,var(--ink) 5%,rgba(24,26,34,.7) 60%,transparent);pointer-events:none;}
@keyframes mfSlideIn{from{opacity:0;transform:translateX(-22px);}to{opacity:1;transform:translateX(0);}}
@media (prefers-reduced-motion:reduce){.mf-line{animation:none;}.mf-live-dot{animation:none;}}
/* Tablet (≤920): drop Area, List, $/sqft — keep Sold + Ratio as the story */
@media(max-width:920px){
  .mf-c-hood,.mf-c-list,.mf-c-psf{display:none;}
  .mf-line,.mf-colhdr{gap:12px;}
  .mf-panel{margin-bottom:48px;}
}
/* Phone (≤620): compress paddings, fonts, and pill — keep Time + Ratio so the story still reads */
@media(max-width:620px){
  .mf-header{padding:9px 12px;}
  .mf-label{font-size:10px;}
  .mf-status{font-size:9px;letter-spacing:.12em;gap:6px;}
  .mf-list{height:280px;padding:10px 12px 36px;gap:8px;}
  .mf-colhdr{padding:8px 12px 6px;gap:10px;font-size:8.5px;letter-spacing:.14em;}
  .mf-line{font-size:12px;gap:10px;}
  .mf-c-time{flex-basis:48px;font-size:10.5px;}
  .mf-c-status{flex-basis:58px;}
  .mf-status-pill{font-size:8.5px;padding:3px 5px;letter-spacing:.08em;}
  .mf-c-addr{font-size:12.5px;}
  .mf-c-sold{flex-basis:70px;font-size:12px;}
  .mf-c-ratio{flex-basis:56px;font-size:11px;display:block;}
  .mf-blur{padding:2px 4px;margin:-2px -4px;border-radius:3px;}
  .mf-blur:active{background:rgba(255,255,255,.04);}
  .mf-fade{height:64px;}
}
/* Tiny phones (≤420): drop the time column + file label */
@media(max-width:420px){
  .mf-label{display:none;}
  .mf-c-time{display:none;}
  .mf-line,.mf-colhdr{gap:8px;}
  .mf-c-status{flex-basis:54px;}
  .mf-status-pill{font-size:8px;padding:2.5px 4px;}
  .mf-c-addr{font-size:12px;}
  .mf-c-sold{flex-basis:64px;font-size:11.5px;}
  .mf-c-ratio{flex-basis:50px;font-size:10.5px;}
  .mf-list{height:296px;padding:10px 11px 32px;}
  .mf-colhdr{padding:8px 11px 6px;}
}
/* Featured grid: 1 large + 2 small */
.feat-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:16px;align-items:stretch;}
@media(max-width:1100px){.feat-grid{grid-template-columns:repeat(2,1fr);}}
/* Legacy wrappers kept only for backwards-compat — empty divs are harmless */
.feat-right{display:contents;}
/* Condo + Homes grid */
.condos-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:16px;}
.homes-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:16px;}
/* Horizontal scroller for Latest sections */
.ls-scroller{position:relative;margin:0 -16px;}
.ls-scroll{display:flex;gap:16px;overflow-x:auto;overflow-y:visible;scroll-snap-type:x mandatory;scroll-behavior:smooth;-webkit-overflow-scrolling:touch;padding:8px 16px 16px;scrollbar-width:none;}
.ls-scroll::-webkit-scrollbar{display:none;}
.ls-scroll .listing-card{flex:0 0 300px;scroll-snap-align:start;}
@media(min-width:900px){.ls-scroll .listing-card{flex-basis:calc((100% - 48px)/4);}}
@media(min-width:600px) and (max-width:899px){.ls-scroll .listing-card{flex-basis:calc((100% - 32px)/3);}}
@media(max-width:599px){.ls-scroll .listing-card{flex-basis:80%;}}
.ls-head{flex-wrap:wrap;gap:16px;}
.ls-head-actions{display:flex;align-items:center;gap:14px;}
.ls-arrows{display:flex;gap:8px;}
.ls-arrow{width:36px;height:36px;border-radius:50%;border:1.5px solid var(--border);background:var(--white);color:var(--ink);display:flex;align-items:center;justify-content:center;cursor:pointer;transition:border-color .2s,background .2s,color .2s,opacity .2s;font-size:0;}
.ls-arrow svg{width:16px;height:16px;}
.ls-arrow:hover{border-color:var(--ink);background:var(--ink);color:#fff;}
.ls-arrow:disabled{opacity:.3;cursor:default;}
.ls-arrow:disabled:hover{border-color:var(--border);background:var(--white);color:var(--ink);}
@media(hover:none){.ls-arrows{display:none;}}
/* Just missed */
.sold-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:16px;}
.sold-card .listing-slides{filter:saturate(0.35);}
.sold-price-row{display:flex;align-items:baseline;gap:10px;flex-wrap:wrap;}
.sold-price{font-family:var(--font-display);font-size:23px;font-weight:800;color:var(--accent);letter-spacing:-.025em;line-height:1.1;}
.sold-list-price{font-family:var(--font-mono);font-size:12px;color:var(--fg-3);letter-spacing:.04em;text-decoration:line-through;}
.sold-days{font-family:var(--font-mono);font-size:11px;color:var(--jade);letter-spacing:.06em;margin-top:6px;font-weight:500;}
.sold-days.sold-under{color:#D97706;}

/* ── BLOG ───────────────────────────────────────────────── */
.blog-sec{padding:96px 0;background:var(--white);border-top:1px solid var(--border);}
.blog-head{margin-bottom:48px;}
.blog-head .lede{font-size:16px;line-height:1.7;color:var(--fg-1);max-width:560px;margin-top:12px;}
.blog-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:24px;}
.blog-card{background:var(--paper);border:1px solid var(--border);border-radius:8px;overflow:hidden;transition:border-color .2s,transform .3s;cursor:pointer;}
a.blog-card{text-decoration:none;color:inherit;display:block;}
a.blog-card:hover,a.blog-card:focus,a.blog-card:visited{text-decoration:none;color:inherit;}
.blog-card .bc-hero{background-size:cover !important;background-position:center !important;background-repeat:no-repeat !important;}
.blog-head{display:flex;align-items:flex-end;justify-content:space-between;gap:24px;flex-wrap:wrap;}
.blog-head .blog-head-text{flex:1 1 auto;min-width:240px;}
.blog-head .blog-all{font-family:var(--font-mono);font-size:11px;letter-spacing:.12em;text-transform:uppercase;color:var(--ink);text-decoration:none;border-bottom:1px solid var(--ink);padding-bottom:2px;transition:color .2s,border-color .2s;}
.blog-head .blog-all:hover{color:var(--accent);border-bottom-color:var(--accent);}
.blog-card:hover{border-color:var(--ink);transform:translateY(-4px);}
.bc-hero{height:180px;position:relative;overflow:hidden;}
.bc-meta{display:flex;align-items:center;gap:8px;padding:20px 20px 0;}
.bc-cat{font-family:var(--font-mono);font-size:9px;letter-spacing:.12em;text-transform:uppercase;color:var(--accent);background:var(--accent-soft);padding:4px 9px;border-radius:999px;}
.bc-date{font-family:var(--font-mono);font-size:9px;letter-spacing:.08em;color:var(--fg-3);}
.bc-body{padding:16px 20px 24px;}
.bc-title{font-family:var(--font-display);font-weight:700;font-size:18px;letter-spacing:-.02em;line-height:1.25;color:var(--ink);margin-bottom:10px;text-wrap:pretty;}
.bc-excerpt{font-size:13.5px;line-height:1.7;color:var(--fg-2);margin-bottom:16px;}
.bc-read{font-size:12px;font-weight:600;color:var(--ink);text-transform:lowercase;letter-spacing:.02em;display:flex;align-items:center;gap:5px;transition:color .2s;}
.blog-card:hover .bc-read{color:var(--accent);}

/* ── ABOUT (meaning + meet dustin + contact) ────────────── */
.about-sec{position:relative;background:var(--ivory);overflow:hidden;padding:104px 0 0;}
.about-sec .about-bg{position:absolute;inset:0;background-image:radial-gradient(circle,rgba(24,26,34,.08) 1px,transparent 1px);background-size:26px 26px;-webkit-mask-image:linear-gradient(180deg,transparent 0,#000 14%,#000 86%,transparent 100%);mask-image:linear-gradient(180deg,transparent 0,#000 14%,#000 86%,transparent 100%);pointer-events:none;}
.about-sec .about-frame{position:absolute;inset:64px 32px;border:1px dashed rgba(24,26,34,.14);pointer-events:none;}
.about-sec .about-frame::before,.about-sec .about-frame::after,.about-sec .about-frame > i:nth-child(1),.about-sec .about-frame > i:nth-child(2){content:"";position:absolute;width:8px;height:8px;background:var(--accent);border-radius:50%;}
.about-sec .about-frame::before{top:-4px;left:-4px;}
.about-sec .about-frame::after{top:-4px;right:-4px;}
.about-sec .about-frame > i:nth-child(1){bottom:-4px;left:-4px;}
.about-sec .about-frame > i:nth-child(2){bottom:-4px;right:-4px;}

.about-head{position:relative;z-index:2;text-align:center;max-width:760px;margin:0 auto 80px;padding:0 24px;}
.about-head .a-ey{display:inline-flex;align-items:center;gap:10px;font-family:var(--font-sans);font-size:12px;font-weight:600;letter-spacing:.22em;text-transform:lowercase;color:var(--accent);margin-bottom:22px;}
.about-head .a-ey::before,.about-head .a-ey::after{content:"";width:28px;height:1px;background:currentColor;opacity:.55;}
.about-head h2{font-family:var(--font-display);font-weight:700;font-size:clamp(32px,4vw,54px);letter-spacing:-.032em;line-height:1.04;color:var(--ink);}
.about-head h2 em{font-family:var(--font-serif);font-style:italic;font-weight:400;color:var(--accent);}
.about-head .a-sub{font-size:16px;line-height:1.65;color:var(--fg-2);margin:18px auto 0;max-width:560px;}

.about-grid{position:relative;z-index:2;display:grid;grid-template-columns:minmax(0,1.05fr) minmax(0,1fr);align-items:stretch;}
.about-grid.rev{grid-template-columns:minmax(0,1fr) minmax(0,1.05fr);}
.about-grid + .about-grid{margin-top:0;}

.about-pane{padding:88px clamp(40px,5vw,80px);display:flex;flex-direction:column;justify-content:center;position:relative;overflow:hidden;}
.about-pane::before{content:attr(data-glyph);position:absolute;font-family:var(--font-cjk);font-weight:700;font-size:clamp(280px,38vw,520px);color:var(--accent);opacity:.045;line-height:.82;pointer-events:none;user-select:none;}
.about-pane.glyph-br::before{right:-60px;bottom:-80px;}
.about-pane.glyph-bl::before{left:-60px;bottom:-80px;}
.about-eyebrow{display:inline-flex;align-items:center;gap:8px;font-family:var(--font-mono);font-size:10px;letter-spacing:.22em;text-transform:uppercase;color:var(--accent);margin-bottom:22px;}
.about-eyebrow::before{content:"";width:18px;height:1px;background:currentColor;opacity:.7;}
.about-h{font-family:var(--font-display);font-weight:700;font-size:clamp(30px,3.6vw,50px);letter-spacing:-.03em;line-height:1.04;color:var(--ink);margin-bottom:22px;}
.about-h em{font-family:var(--font-serif);font-style:italic;font-weight:400;color:var(--accent);}
.about-body{font-size:16px;line-height:1.75;color:var(--fg-1);max-width:480px;}
.about-body p+p{margin-top:14px;}
.about-note{margin-top:28px;font-family:var(--font-mono);font-size:10px;letter-spacing:.16em;text-transform:uppercase;color:var(--fg-3);}
.about-link{display:inline-flex;align-items:center;gap:10px;margin-top:24px;font-family:var(--font-sans);font-size:14px;font-weight:600;letter-spacing:.01em;text-transform:lowercase;color:var(--ink);padding:12px 20px 12px 22px;border:1.5px solid var(--ink);border-radius:999px;background:transparent;transition:background .2s,color .2s,transform .2s,box-shadow .2s;align-self:flex-start;}
.about-link:hover{background:var(--ink);color:#fff;transform:translateY(-1px);box-shadow:0 8px 22px rgba(24,26,34,.18);}
.about-link svg{transition:transform .25s var(--ease-out);}
.about-link:hover svg{transform:translateX(3px);}
.about-link .lbl-prefix{color:var(--accent);font-family:var(--font-mono);font-size:10px;letter-spacing:.18em;text-transform:uppercase;border-right:1px solid currentColor;padding-right:12px;margin-right:4px;opacity:.85;}
.about-link:hover .lbl-prefix{color:#fff;}

.about-photo{position:relative;overflow:hidden;min-height:540px;}
.about-photo img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:center 30%;}
.about-grid.rev .about-photo img{object-position:55% 22%;}
.about-photo::after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,transparent 55%,rgba(24,26,34,.32) 100%);}
.about-photo .photo-tag{position:absolute;bottom:22px;left:22px;font-family:var(--font-mono);font-size:10px;letter-spacing:.18em;text-transform:uppercase;color:#fff;background:rgba(24,26,34,.5);backdrop-filter:saturate(140%) blur(8px);-webkit-backdrop-filter:saturate(140%) blur(8px);padding:7px 12px;border:1px solid rgba(255,255,255,.18);border-radius:4px;z-index:2;}
.about-photo .photo-corner{position:absolute;width:14px;height:14px;border:1.5px solid rgba(255,255,255,.55);z-index:2;}
.about-photo .photo-corner.tl{top:14px;left:14px;border-right:0;border-bottom:0;}
.about-photo .photo-corner.tr{top:14px;right:14px;border-left:0;border-bottom:0;}
.about-photo .photo-corner.bl{bottom:14px;left:14px;border-right:0;border-top:0;}
.about-photo .photo-corner.br{bottom:14px;right:14px;border-left:0;border-top:0;}

/* small typographic seal between the two photo rows */
.about-rule{position:relative;z-index:3;height:0;display:flex;justify-content:center;pointer-events:none;}
.about-rule .glyph{position:absolute;top:50%;transform:translateY(-50%);background:var(--ivory);width:56px;height:56px;border-radius:50%;border:1px solid rgba(24,26,34,.14);display:flex;align-items:center;justify-content:center;font-family:var(--font-cjk);font-weight:600;font-size:22px;color:var(--accent);box-shadow:0 1px 0 rgba(255,255,255,.6) inset;}
.about-rule .dot{display:none;}

/* contact form — editorial, no card chrome */
.about-form{margin-top:28px;width:100%;max-width:520px;}
.cf-row{display:grid;grid-template-columns:1fr 1fr;gap:24px;margin-bottom:8px;}
.cf-field{display:flex;flex-direction:column;gap:8px;margin-bottom:22px;}
.cf-label{font-family:var(--font-mono);font-size:10px;font-weight:600;letter-spacing:.18em;text-transform:uppercase;color:var(--fg-2);}
.cf-input,.cf-textarea{width:100%;padding:10px 0 12px;border:0;border-bottom:1.5px solid rgba(24,26,34,.18);border-radius:0;font-family:var(--font-sans);font-size:15px;background:transparent;color:var(--ink);transition:border-color .2s,box-shadow .2s;}
.cf-input::placeholder,.cf-textarea::placeholder{color:rgba(24,26,34,.32);}
.cf-input:focus,.cf-textarea:focus{outline:0;border-bottom-color:var(--accent);box-shadow:0 1px 0 0 var(--accent);}
.cf-textarea{min-height:96px;resize:vertical;}
.cf-submit{margin-top:10px;background:var(--accent);color:#fff;padding:14px 28px;border-radius:4px;font-size:14px;font-weight:600;letter-spacing:.02em;text-transform:lowercase;border:0;cursor:pointer;transition:background .2s,transform .15s,box-shadow .2s;display:inline-flex;align-items:center;gap:10px;}
.cf-submit:hover{background:var(--accent-hover);transform:translateY(-1px);box-shadow:0 10px 24px rgba(190,30,45,.28);}
.cf-submit svg{transition:transform .2s var(--ease-out);}
.cf-submit:hover svg{transform:translateX(3px);}

/* spacer at the bottom of the about section before next section */
.about-foot{height:96px;}

/* ── TESTIMONIALS ───────────────────────────────────────── */
.testimonials{padding:112px 0;background:var(--ink);color:#fff;position:relative;overflow:hidden;}
.testimonials::before{content:"\201C";position:absolute;top:24px;left:50%;transform:translateX(-50%);font-family:var(--font-serif);font-size:280px;color:var(--accent);opacity:.08;line-height:1;pointer-events:none;}
.testim-wrap{max-width:820px;margin:0 auto;text-align:center;position:relative;z-index:1;}
.testim-ey{color:rgba(255,255,255,.55);margin-bottom:28px;justify-content:center;display:inline-flex;}
.testim-ey::before{background:var(--accent);opacity:1;}
.testim-quote{font-family:var(--font-serif);font-style:italic;font-size:clamp(20px,2.4vw,30px);line-height:1.38;color:#fff;margin:0 0 32px;letter-spacing:-.005em;min-height:144px;transition:opacity .28s;}
.testim-attr{font-size:14px;color:rgba(255,255,255,.55);letter-spacing:.04em;}
.testim-attr strong{color:#fff;font-weight:600;}
.testim-avatars{display:flex;justify-content:center;gap:12px;margin-top:28px;}
.testim-avatar{width:52px;height:52px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-family:var(--font-display);font-weight:700;font-size:14px;color:#fff;background:var(--graphite-2);border:2px solid transparent;cursor:pointer;opacity:.45;transition:opacity .25s,border-color .25s,transform .25s;}
.testim-avatar:hover{opacity:.85;}
.testim-avatar.active{opacity:1;border-color:var(--accent);transform:scale(1.08);}
.testim-dots{display:flex;justify-content:center;gap:6px;margin-top:16px;}
.testim-dots .testim-dot{display:inline-block !important;flex:0 0 auto !important;width:6px !important;height:6px !important;min-width:0 !important;min-height:0 !important;max-height:6px !important;padding:0 !important;border:0 !important;border-radius:50% !important;background:rgba(255,255,255,.2) !important;cursor:pointer;transition:width .2s,background .2s,border-radius .2s;box-sizing:border-box !important;}
.testim-dots .testim-dot.active{width:24px !important;height:6px !important;max-height:6px !important;background:var(--accent) !important;border-radius:4px !important;}

/* ── CTA ────────────────────────────────────────────────── */
.cta-sec{background:var(--ink);position:relative;overflow:hidden;}
.cta-inner{display:grid;grid-template-columns:1fr 1fr;min-height:580px;}
.cta-content{padding:96px 72px;display:flex;flex-direction:column;justify-content:center;position:relative;}
.cta-content::before{content:"";position:absolute;right:0;top:10%;bottom:10%;width:1px;background:linear-gradient(180deg,transparent,rgba(255,255,255,.1),transparent);}
.cta-ey{color:var(--accent);margin-bottom:20px;}
.cta-ey::before{background:var(--accent);opacity:1;}
.cta-h{font-family:var(--font-display);font-weight:700;font-size:clamp(34px,4.4vw,56px);line-height:1.04;letter-spacing:-.035em;color:#fff;margin-bottom:18px;}
.cta-h em{font-family:var(--font-serif);font-style:italic;font-weight:400;}
.cta-sub{font-size:16px;color:rgba(255,255,255,.62);margin-bottom:32px;line-height:1.65;max-width:460px;}
.cta-btns{display:flex;flex-wrap:wrap;gap:12px;}
.cta-contacts{display:flex;flex-wrap:wrap;gap:20px;margin-top:24px;}
.cta-contacts a{font-size:14px;color:rgba(255,255,255,.55);display:flex;align-items:center;gap:8px;transition:color .2s;}
.cta-contacts a:hover{color:#fff;}
.cta-photo{position:relative;overflow:hidden;background:#000;}
.cta-photo img,.cta-photo video{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:center;}
.cta-photo::after{content:"";position:absolute;inset:0;background:linear-gradient(90deg,rgba(24,26,34,.55) 0%,transparent 40%),linear-gradient(0deg,rgba(24,26,34,.7) 0%,transparent 50%);pointer-events:none;}
.cta-photo-meta{position:absolute;bottom:28px;left:28px;z-index:2;}
.cta-photo-name{font-family:var(--font-display);font-weight:700;font-size:18px;color:#fff;}
.cta-photo-role{font-family:var(--font-mono);font-size:10px;color:rgba(255,255,255,.5);letter-spacing:.14em;text-transform:uppercase;margin-top:4px;}

/* FOOTER */
.site-footer{background:#050507;padding:64px 0 28px;}
.footer-top{display:grid;grid-template-columns:1.4fr 2fr;gap:60px;padding-bottom:44px;border-bottom:1px solid rgba(255,255,255,.06);}
.footer-logo{display:inline-block;}
.footer-logo img{width:72px;height:72px;opacity:.85;display:block;}
.footer-tagline{font-family:var(--font-serif);font-style:italic;font-size:16px;color:rgba(255,255,255,.44);margin-top:18px;line-height:1.6;max-width:280px;}
.footer-tagline .cjk{font-family:var(--font-cjk);font-style:normal;color:var(--accent);}
.footer-cols{display:grid;grid-template-columns:1fr 1fr 1fr;gap:40px;}
.footer-col-title{font-family:var(--font-mono);font-size:10px;font-weight:500;letter-spacing:.18em;text-transform:uppercase;color:rgba(255,255,255,.3);margin-bottom:14px;}
.footer-col a{display:block;color:rgba(255,255,255,.58);font-size:13.5px;font-weight:500;padding:4px 0;text-transform:lowercase;transition:color .2s;}
.footer-col a:hover{color:#fff;}
.footer-bottom{display:flex;justify-content:space-between;align-items:center;padding-top:24px;}
.footer-copy{font-family:var(--font-mono);font-size:10px;color:rgba(255,255,255,.28);letter-spacing:.08em;}
.footer-legal{display:flex;gap:22px;}
.footer-legal a{color:rgba(255,255,255,.38);font-size:12px;letter-spacing:.04em;transition:color .2s;}
.footer-legal a:hover{color:rgba(255,255,255,.7);}

/* TWEAKS */
#tw{display:none;position:fixed;bottom:20px;right:20px;z-index:400;width:240px;background:var(--white);border:1px solid var(--fog);border-radius:12px;padding:18px 20px;box-shadow:0 24px 56px -12px rgba(10,10,10,.22);font-family:var(--font-sans);}
#tw.vis{display:block;}
.tw-hd{font-size:10px;font-weight:700;letter-spacing:.14em;text-transform:uppercase;color:var(--slate-2);padding-bottom:12px;border-bottom:1px solid var(--fog);margin-bottom:14px;display:flex;justify-content:space-between;align-items:center;}
.tw-close{background:none;border:0;cursor:pointer;color:var(--slate-2);font-size:18px;line-height:1;padding:0;}
.tw-lbl{font-size:10px;font-weight:600;color:var(--slate);text-transform:uppercase;letter-spacing:.08em;margin-bottom:6px;}
.tw-row{display:flex;gap:4px;margin-bottom:14px;}
.tw-btn{flex:1;background:var(--white);border:1px solid var(--fog);border-radius:4px;padding:7px 4px;font-size:10px;font-weight:600;color:var(--slate);cursor:pointer;text-transform:lowercase;transition:all .15s;}
.tw-btn.on{background:var(--ink);color:#fff;border-color:var(--ink);}

/* ── HERO OVERLAY (globe → Victoria map) ────────────────── */
.hero-overlay{
  position:absolute;inset:0;z-index:20;background:#0A0C10;
  clip-path:circle(0px at var(--oc-x,80%) var(--oc-y,50%));
  transition:clip-path 1.6s cubic-bezier(0.22,1,0.36,1);
  pointer-events:none;overflow:hidden;
}
.hero-overlay.open{
  clip-path:circle(200% at var(--oc-x,80%) var(--oc-y,50%));
  pointer-events:all;
}
.ho-nav{
  position:absolute;top:0;left:0;right:0;z-index:10;height:60px;
  display:flex;align-items:center;gap:20px;padding:0 40px;
  background:rgba(7,8,16,.9);border-bottom:1px solid rgba(255,255,255,.06);
  backdrop-filter:blur(10px);
}
.ho-back{
  font-family:var(--font-mono);font-size:11px;letter-spacing:.1em;
  color:rgba(255,255,255,.5);cursor:pointer;transition:color .2s;
  display:flex;align-items:center;gap:7px;
}
.ho-back:hover{color:#fff;}
.ho-badge-ov{
  font-family:var(--font-mono);font-size:10px;letter-spacing:.16em;
  text-transform:uppercase;color:var(--accent);
}
.ho-badge-ov::before{content:"●";margin-right:6px;font-size:8px;}
.ho-nav-space{flex:1;}
.ho-mpl{font-size:12px;font-weight:600;color:rgba(255,255,255,.5);text-transform:lowercase;letter-spacing:.03em;border-bottom:1.5px solid var(--accent);padding-bottom:2px;transition:color .2s;}
.ho-mpl:hover{color:#fff;}
.ho-inner{
  display:grid;grid-template-columns:380px 1fr;height:100%;
  position:relative;z-index:2;padding-top:60px;
}
/* Map background layer */
.ho-map-bg{
  position:absolute;inset:0;z-index:0;
  background-image:linear-gradient(rgba(255,255,255,.018) 1px,transparent 1px),
    linear-gradient(90deg,rgba(255,255,255,.018) 1px,transparent 1px);
  background-size:56px 56px;
}
.ho-map-bg::after{
  content:"";position:absolute;inset:0;
  background:url('assets/victoria-mapbox-dark.png') center/cover no-repeat;
  opacity:.2;mix-blend-mode:luminosity;
}
/* Left data panel */
.ho-panel{
  position:relative;z-index:5;padding:40px 44px 44px;
  display:flex;flex-direction:column;gap:16px;
  background:linear-gradient(90deg,rgba(7,8,14,.97) 0%,rgba(7,8,14,.72) 100%);
  backdrop-filter:blur(4px);
  opacity:0;transform:translateX(-22px);
  transition:opacity .6s var(--ease-out) .55s,transform .6s var(--ease-out) .55s;
  overflow-y:auto;
}
.hero-overlay.open .ho-panel{opacity:1;transform:none;}
.ho-eyebrow-ov{font-family:var(--font-mono);font-size:10px;letter-spacing:.18em;text-transform:uppercase;color:var(--accent);}
.ho-headline{font-family:var(--font-display);font-weight:800;font-size:clamp(28px,3.6vw,48px);letter-spacing:-.045em;line-height:.92;color:#fff;}
.ho-headline em{font-family:var(--font-serif);font-style:italic;font-weight:400;}
.ho-meta-ov{font-family:var(--font-mono);font-size:10px;letter-spacing:.08em;color:rgba(255,255,255,.24);}
.ho-search-ov input{
  width:100%;background:rgba(255,255,255,.07);border:1px solid rgba(255,255,255,.14);
  border-radius:6px;padding:11px 16px;color:#fff;
  font-family:var(--font-sans);font-size:13px;outline:0;transition:border-color .2s;
}
.ho-search-ov input::placeholder{color:rgba(255,255,255,.3);}
.ho-search-ov input:focus{border-color:rgba(255,255,255,.4);}
.ho-data-ov{flex:1;}
.ho-prompt-ov{
  font-family:var(--font-mono);font-size:10px;letter-spacing:.1em;
  text-transform:uppercase;color:rgba(255,255,255,.22);
  display:flex;align-items:center;gap:8px;padding:14px 0;
  border-top:1px solid rgba(255,255,255,.08);
}
.ho-prompt-ov::before{content:"↗";color:var(--accent);font-size:13px;}
.ho-rname{font-family:var(--font-display);font-weight:700;font-size:clamp(18px,2.4vw,28px);letter-spacing:-.03em;color:#fff;margin-bottom:4px;line-height:1.1;}
.ho-rhoods{font-family:var(--font-mono);font-size:9px;color:rgba(255,255,255,.36);letter-spacing:.07em;margin-bottom:14px;line-height:1.65;text-transform:uppercase;}
.ho-rstat-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-bottom:12px;}
.ho-rstat{background:rgba(255,255,255,.04);border:1px solid rgba(255,255,255,.07);border-radius:6px;padding:10px 12px;}
.ho-rstat-v{font-family:var(--font-mono);font-size:16px;font-weight:500;color:#fff;line-height:1;margin-bottom:3px;}
.ho-rstat-l{font-family:var(--font-mono);font-size:9px;letter-spacing:.1em;text-transform:uppercase;color:rgba(255,255,255,.28);}
.ho-rnote{font-size:12px;color:rgba(255,255,255,.42);line-height:1.7;margin-bottom:12px;}
.ho-rctas{display:flex;gap:8px;flex-wrap:wrap;}
.ho-rcta-p{background:var(--accent);color:#fff;padding:9px 18px;border-radius:4px;font-size:12px;font-weight:600;text-transform:lowercase;transition:background .2s;}
.ho-rcta-p:hover{background:var(--accent-hover);}
.ho-rcta-g{background:transparent;color:rgba(255,255,255,.6);border:1px solid rgba(255,255,255,.18);padding:8px 18px;border-radius:4px;font-size:12px;font-weight:600;text-transform:lowercase;transition:all .2s;}
.ho-rcta-g:hover{color:#fff;border-color:rgba(255,255,255,.5);}
/* SVG map in overlay */
.ho-map-svg{position:absolute;right:0;top:60px;width:calc(100% - 380px);height:calc(100% - 60px);z-index:1;}
.ho-map-svg svg{width:100%;height:100%;display:block;opacity:0;transform:scale(.97);transition:opacity .8s .65s,transform .8s .65s;}
.hero-overlay.open .ho-map-svg svg{opacity:1;transform:scale(1);}
.ho-poly{cursor:pointer;transition:fill-opacity .2s,stroke-opacity .2s;}
.ho-poly:hover{fill-opacity:.24!important;}
.ho-north{position:absolute;top:74px;right:18px;z-index:8;font-family:var(--font-mono);font-size:9px;letter-spacing:.12em;color:rgba(255,255,255,.18);text-align:center;display:flex;flex-direction:column;align-items:center;gap:4px;}
.ho-north-arr{width:1px;height:16px;background:linear-gradient(to top,transparent,rgba(255,255,255,.25));}
@media(max-width:900px){
  .ho-inner{grid-template-columns:1fr;}
  .ho-map-svg{display:none;}
  .ho-panel{padding:32px 20px;}
}

/* RESPONSIVE */
@media(max-width:1100px){
  .hero-cols{padding-left:44px;padding-right:44px;}.hero-globe-col{display:none;}
  .svc-head,.footer-top{grid-template-columns:1fr;gap:32px;}
  .rs-body{grid-template-columns:1fr;}
  .cta-inner{grid-template-columns:1fr;}
  .cta-photo{display:none;}
  .cta-content{padding:64px 40px;}
  .about-grid,.about-grid.rev{grid-template-columns:1fr;}
  .about-pane{padding:64px 40px;}
  .about-photo{min-height:420px;order:-1;}
  .about-grid.rev .about-photo{order:0;}
  .about-sec .about-frame{inset:48px 20px;}
  .sold-grid,.blog-grid{grid-template-columns:1fr 1fr;}
}
@media(max-width:900px){
  .svc-grid,.homes-grid,.sold-grid,.blog-grid{grid-template-columns:1fr 1fr;}
  .condos-grid{grid-template-columns:1fr 1fr;}
  .results-grid{grid-template-columns:1fr 1fr;gap:24px 0;}
  .mpt-kpi-grid{grid-template-columns:1fr 1fr;}
  .mpt-kpi-hero{grid-column:1 / -1;}
  .mpt-price-hero{grid-template-columns:1fr;gap:14px;padding:18px 20px;}
  .mpt-price-hero::after{display:none;}
  .mpt-price-hero-cell{padding:0;}
  .mpt-price-hero-cell + .mpt-price-hero-cell{padding-top:14px;border-top:1px solid rgba(255,255,255,.08);}
  .mpt-demand-row{grid-template-columns:1fr 1fr;}
  .mpt-inv-grid{grid-template-columns:1fr 1fr;}
  .mpt-inv-card.supply{grid-column:1 / -1;}
  .mpt-band,.mpt-inv-block{padding:16px 18px 18px;}
  .mpt-band-head,.mpt-inv-head{flex-direction:column;align-items:flex-start;gap:8px;margin-bottom:14px;padding-bottom:12px;}
  .mpt-band-sub,.mpt-inv-sub{max-width:100%;}
  .mpt-chart-row{grid-template-columns:1fr;gap:18px;}
  .mpt-chart-stats{margin-top:12px;}
  .mpt-sec{padding:72px 0 60px;}
  .mpt-head{flex-direction:column;align-items:flex-start;}
  .mpt-cta-link{align-self:flex-start;margin-top:6px;}
  .mpt-tab-note{margin-left:0;flex-basis:100%;margin-top:6px;}
}
@media(max-width:640px){
  .svc-grid,.homes-grid,.sold-grid,.blog-grid,.condos-grid{grid-template-columns:1fr;}
  /* Stats: 2x2 grid on narrow screens so cols 3+4 don't squish or misalign with cols 1+2 */
  .hs-row{grid-template-columns:1fr 1fr;gap:14px 18px;justify-content:stretch;}
  .h-stat{padding:14px 0 0;border-left:0;border-top:1px solid rgba(255,255,255,.10);}
  .h-stat:first-child,.h-stat:nth-child(2){padding-top:0;border-top:0;}
  .h-sv{font-size:17px;}
  .h-sl{font-size:8.5px;}
  .v2-nav{padding:0 6px 0 14px;gap:8px;width:calc(100% - 16px);height:56px;border-radius:14px;}
  .v2-nav.scrolled{height:52px;}
  .nav-links{display:none;}
  .v2-nav > .nav-actions .nav-mi,.v2-nav > .nav-actions .nav-login,.v2-nav > .nav-actions .nav-divider{display:none;}
  .nav-logo img{height:36px;}
  .nav-burger{display:inline-flex;}
  .nav-auth{padding:8px 12px;font-size:12.5px;}
  .nav-signup svg{display:none;}
  body.nav-open{overflow:hidden;}
  .hero-cols{padding:calc(var(--nav-height)+24px) 20px 60px;}.hero-text{max-width:100%;}
  .about-sec{padding-top:72px;}
  .about-head{margin-bottom:48px;}
  .about-pane{padding:48px 24px;}
  .about-photo{min-height:340px;}
  .cf-row{grid-template-columns:1fr;gap:0;}
  .about-rule{margin:0 24px;}
  .about-foot{height:64px;}
  .ls-head{flex-direction:column;align-items:flex-start;gap:12px;}
  .mpt-kpi-grid{grid-template-columns:1fr;gap:8px;}
  .mpt-kpi-hero{grid-column:auto;}
  .mpt-demand-row{grid-template-columns:1fr;}
  .mpt-inv-grid{grid-template-columns:1fr;}
  .mpt-inv-card.supply{grid-column:auto;}
  .mpt-band,.mpt-inv-block,.mpt-trend{padding:14px 16px 16px;}
  .mpt-band-title,.mpt-inv-title,.mpt-trend-title{font-size:18px;}
  .mpt-band-sub,.mpt-inv-sub,.mpt-trend-sub{font-size:12.5px;}
  .mpt-price-num{font-size:clamp(28px,8vw,38px);}
  .mpt-tab{font-size:12.5px;padding:9px 14px;}
  .mpt-chart-stats{gap:20px;}
  .mpt-chart-area{height:220px;padding-left:46px;padding-bottom:22px;}
  .mpt-chart-svg-wrap{left:46px;}
  .mpt-y-labels{width:42px;}
  .mpt-y-labels .ylbl{font-size:9.5px;}
  .mpt-x-labels{left:46px;}
  .mpt-x-labels .xlbl{font-size:9.5px;}
  .mpt-zone-labels{left:46px;}
  .mpt-zone-labels .zlbl{font-size:8.5px;}
  .mpt-chart-expand{display:inline-flex;}
  .mpt-trend-summary{flex-direction:column;align-items:flex-start;gap:4px;text-align:left;}
  .mpt-trend-now-v{font-size:22px;}
  .mpt-metric-tab{font-size:12px;padding:7px 14px;flex:0 0 auto;}
  /* Mobile: metric pills get the full row and scroll horizontally as a flat strip.
     Range pills wrap to the row below. */
  .mpt-trend-controls{flex-wrap:wrap;gap:10px 14px;align-items:flex-start;}
  .mpt-metric-tabs{
    flex:1 1 100%;width:100%;min-width:0;
    display:flex;flex-wrap:nowrap;gap:6px;
    overflow-x:auto;overflow-y:hidden;
    -webkit-overflow-scrolling:touch;
    scrollbar-width:none;
    padding:2px 16px 6px 0;
    scroll-snap-type:x proximity;
  }
  .mpt-metric-tabs::-webkit-scrollbar{display:none;}
  .mpt-metric-tab{scroll-snap-align:start;}
  .mpt-range{flex:0 0 auto;align-self:flex-start;}
  .mpt-chart-row{padding:18px 18px;}
  .mpt-kpi{padding:16px 16px;}
  .mpt-kpi-hero{padding:18px 18px;}
}
/* ─── MOBILE TREND CHART — Apple Stocks rebuild ───────────────────────
   • Fixed 220px height inline. In the modal: stretches to fill.
   • Y-axis labels on the RIGHT (Apple / Yahoo Finance pattern), 56px gutter.
   • X-axis labels at the bottom, horizontal text — no rotation, sparse density.
   • No horizontal scroll on mobile (chart compresses to viewport).
   ──────────────────────────────────────────────────────────────────── */
@media(max-width:640px){
  .mpt-chart-area{
    height:220px!important;
    padding:0 56px 24px 0!important;
    box-sizing:border-box;
    position:relative;
  }
  /* In the fullscreen modal, chart-area stretches to fill the available space
     but keeps the same Y-right / X-bottom layout. */
  .mpt-chart-modal-body .mpt-chart-area{
    height:auto!important;flex:1!important;min-height:0!important;
    padding:0 56px 24px 0!important;
  }
  /* Y-axis labels on the right edge, aligned to the SVG plot top/bottom. */
  .mpt-y-labels{
    left:auto!important;right:0!important;
    width:50px!important;top:0!important;bottom:24px!important;
  }
  .mpt-y-labels .ylbl{
    left:8px!important;right:auto!important;
    font-size:10.5px;color:rgba(255,255,255,.55);letter-spacing:.02em;
  }
  /* Plot area: full chart-area minus right gutter (Y labels) and bottom strip
     (X labels). No horizontal scroll. */
  .mpt-chart-svg-wrap{
    left:0!important;right:56px!important;
    top:0!important;bottom:24px!important;
    /* overflow is controlled by JS forceMobileChartLayout (auto for swipe) */
  }
  .mpt-chart-scroll-inner{
    /* width / min-width are set by JS forceMobileChartLayout in explicit px */
    height:100%!important;
  }
  .mpt-chart-svg-wrap svg.mpt-chart{
    width:100%!important;height:100%!important;
  }
  /* X-axis labels at the bottom of chart-area, horizontal text. */
  .mpt-x-labels{
    left:0!important;right:56px!important;
    bottom:0!important;height:24px!important;
  }
  .mpt-x-labels .xlbl{
    transform:translateX(-50%)!important;
    transform-origin:center!important;
    bottom:4px;font-size:10px;color:rgba(255,255,255,.55);letter-spacing:.04em;
  }
  /* Zone labels aligned to the plot. */
  .mpt-zone-labels{
    left:0!important;right:56px!important;
    top:0!important;bottom:24px!important;
  }
  /* No edge-fade pseudo (no horizontal scroll). */
  .mpt-chart-area::after{display:none!important;}
}
/* ── MOBILE ADAPT (audit fixes, 2026-05-26) ─────────────────────────── */
@media(max-width:768px){
  /* Featured big card: keep description readable but bounded, intel chips 2-col, CTA full-width */
  .listing-card.featured .listing-body{padding:22px 22px 18px;}
  .listing-card.featured .listing-address{font-size:23px;}
  .listing-card.featured .listing-price{font-size:28px;}
  .listing-card.featured .listing-desc{
    font-size:14.5px;line-height:1.6;margin-top:16px;
    display:-webkit-box;-webkit-line-clamp:8;-webkit-box-orient:vertical;overflow:hidden;
    position:relative;
  }
  .listing-card.featured .listing-desc.expanded{display:block;-webkit-line-clamp:none;}
  .listing-card.featured .listing-desc-toggle{
    display:inline-block;margin-top:8px;font-family:var(--font-mono);font-size:11px;
    letter-spacing:.12em;text-transform:uppercase;color:var(--accent);font-weight:600;
    background:none;border:0;padding:0;cursor:pointer;
  }
  .listing-card.featured .listing-intel{grid-template-columns:repeat(2,1fr);gap:10px 16px;padding:14px 0;margin-top:16px;}
  .listing-card.featured .intel-val{font-size:15.5px;}
  .listing-card.featured .listing-cta{width:100%;justify-content:center;padding:13px 18px;}
  .listing-card.featured .listing-cta-row{margin-top:16px;}
  .listing-card.featured .listing-brokerage{padding:14px 22px 18px;}
}
/* Featured grid on tablet/mobile: horizontal scroller matching .ls-scroll, with the
   featured large-card extras (desc / intel chips / CTA) suppressed so all four tiles
   read as regular listing cards. */
@media(max-width:899px){
  .feat-grid{
    display:flex;grid-template-columns:none;gap:16px;
    overflow-x:auto;overflow-y:visible;
    scroll-snap-type:x mandatory;scroll-behavior:smooth;
    -webkit-overflow-scrolling:touch;
    padding:8px 16px 16px;margin:0 -16px;
    scrollbar-width:none;
  }
  .feat-grid::-webkit-scrollbar{display:none;}
  .feat-grid > .listing-card{flex:0 0 calc((100% - 32px)/3);scroll-snap-align:start;}
  .feat-grid .listing-card.featured{border-top:none;border-radius:8px;display:block;}
  .feat-grid .listing-card.featured .listing-photo{aspect-ratio:4/3;}
  .feat-grid .listing-card.featured .listing-body{padding:18px 18px 16px;}
  .feat-grid .listing-card.featured .listing-eyebrow{font-size:11px;margin-bottom:8px;}
  .feat-grid .listing-card.featured .listing-address{font-size:19px;letter-spacing:-.02em;margin-bottom:6px;}
  .feat-grid .listing-card.featured .listing-meta{font-size:13px;margin-bottom:12px;}
  .feat-grid .listing-card.featured .listing-price{font-size:23px;letter-spacing:-.02em;}
  .feat-grid .listing-card.featured .listing-desc,
  .feat-grid .listing-card.featured .listing-desc-toggle,
  .feat-grid .listing-card.featured .listing-intel,
  .feat-grid .listing-card.featured .listing-cta-row{display:none;}
  .feat-grid .listing-card.featured .listing-brokerage{padding:0 18px 14px;margin-top:0;font-size:11px;}
  .feat-grid .listing-card.featured .sold-price-row{margin-bottom:0;}
  .feat-grid .listing-card.featured .sold-price{font-size:23px;}
  .feat-grid .listing-card.featured .sold-list-price{font-size:12px;}
}
@media(max-width:599px){
  .feat-grid > .listing-card{flex:0 0 80%;}
}
/* Just Missed (sold) grid: same horizontal scroller pattern on tablet/mobile so
   the four sold cards don't stack into a long vertical scroll. */
@media(max-width:899px){
  .sold-grid{
    display:flex;grid-template-columns:none;gap:16px;
    overflow-x:auto;overflow-y:visible;
    scroll-snap-type:x mandatory;scroll-behavior:smooth;
    -webkit-overflow-scrolling:touch;
    padding:8px 16px 16px;margin:0 -16px;
    scrollbar-width:none;
  }
  .sold-grid::-webkit-scrollbar{display:none;}
  .sold-grid > .listing-card{flex:0 0 calc((100% - 32px)/3);scroll-snap-align:start;}
}
@media(max-width:599px){
  .sold-grid > .listing-card{flex:0 0 80%;}
}
/* Touch-input adaptations: always-visible carousel arrows + larger tap target. Covers phones + touch laptops. */
@media(hover:none),(pointer:coarse){
  .listing-arrows{opacity:1;padding:0 10px;}
  .listing-arr{width:38px;height:38px;background:rgba(255,255,255,.94);}
  .listing-arr:active{background:#fff;transform:scale(.96);}
}
/* Even tighter for tiny phones */
@media(max-width:380px){
  .listing-card.featured .listing-body{padding:18px 18px 14px;}
  .listing-card.featured .listing-address{font-size:21px;}
  .listing-card.featured .listing-price{font-size:26px;}
  .listing-card.featured .listing-desc{font-size:14px;-webkit-line-clamp:7;}
  /* Hero compactness for iPhone SE so stats sit above the fold */
  .hero-inner{padding:calc(var(--nav-h) + 8px) 18px 12px 18px;}
  .hero-cjk{font-size:26px;margin-bottom:2px;}
  .hero-h1{font-size:clamp(28px,8.6vw,34px);margin-bottom:12px;}
  .hero-search{margin-bottom:10px;}
  .hero-ctas{margin-bottom:12px;}
  .btn-p{padding:11px 18px;font-size:13px;}
  .hero-stats{padding-top:10px;}
  .h-sv{font-size:13.5px;}
  .h-sl{font-size:7.5px;}
  .hs-meta{font-size:7.5px;margin-top:8px;}
}

/* ── NAV MEGA X — minimal numbered-rows dropdown w/ open-frame hover ──────────
   8X brand signature: lowercase eyebrows, mono index numbers, and the open red
   frame motif (top + right + left + partial bottom — one corner intentionally
   left open, echoing the 8X logo's red square frame). */
.nav-mega-x{min-width:460px;max-width:520px;padding:0;overflow:hidden;}
.nav-mega-x::before,
.nav-mega-x::after{display:none!important;}

/* Header — lowercase wide-tracked eyebrow per 8X tone */
.nmx-head{position:relative;z-index:2;padding:22px 24px 14px;display:flex;
  align-items:baseline;justify-content:space-between;gap:12px;}
.nmx-title{font-family:var(--font-mono);font-size:11px;font-weight:500;
  letter-spacing:.26em;text-transform:lowercase;color:rgba(255,255,255,.78);}
.nmx-meta{font-family:var(--font-mono);font-size:10px;letter-spacing:.18em;
  text-transform:lowercase;color:rgba(255,255,255,.36);}

.nmx-rule{position:relative;z-index:2;margin:0 24px 6px;height:1px;
  background:linear-gradient(90deg,rgba(255,255,255,.16) 0%,rgba(255,255,255,.04) 60%,transparent 100%);}

.nmx-list{list-style:none;margin:0;padding:6px 12px 16px;position:relative;z-index:2;}
.nmx-list li{padding:0;}

.nmx-row{position:relative;display:grid;grid-template-columns:30px 1fr 18px;
  gap:14px;align-items:center;padding:14px 14px;border-radius:4px;
  color:inherit;text-decoration:none;
  transition:background 200ms cubic-bezier(.22,1,.36,1);}
.nmx-row:hover{background:rgba(255,255,255,.025);}
.nmx-row:focus-visible{outline:none;background:rgba(255,255,255,.04);}

/* Open frame — the 8X logo's signature red square w/ one corner deliberately
   open. Two SVG paths: TR (top + partial right) and BL (left + partial bottom).
   They meet at top-left + leave the bottom-right corner OPEN. */
.nmx-frame{position:absolute;inset:4px;width:calc(100% - 8px);height:calc(100% - 8px);
  pointer-events:none;}
.nmx-frame path{stroke:#BE1E2D;stroke-width:1;fill:none;
  vector-effect:non-scaling-stroke;
  stroke-dasharray:400;stroke-dashoffset:400;
  transition:stroke-dashoffset 320ms cubic-bezier(.22,1,.36,1);}
.nmx-row:hover .nmx-frame path,
.nmx-row:focus-visible .nmx-frame path{stroke-dashoffset:0;}
.nmx-row:hover .nmx-frame .nmf-b,
.nmx-row:focus-visible .nmx-frame .nmf-b{transition-delay:70ms;}

/* Index number — mono, dim, goes red on hover */
.nmx-num{font-family:var(--font-mono);font-size:10.5px;font-weight:600;
  letter-spacing:.06em;color:rgba(255,255,255,.32);
  transition:color 180ms cubic-bezier(.22,1,.36,1);
  align-self:start;padding-top:2px;}
.nmx-row:hover .nmx-num{color:#BE1E2D;}

/* Name — sentence case, sans, bright */
.nmx-name{font-family:var(--font-sans);font-size:15px;font-weight:600;
  color:#fff;letter-spacing:-.008em;line-height:1.2;}
.nmx-tag{font-size:12.5px;color:rgba(255,255,255,.5);line-height:1.45;
  margin-top:5px;letter-spacing:-.003em;}

.nmx-chev{color:rgba(255,255,255,.3);width:14px;height:14px;
  transition:transform 220ms cubic-bezier(.22,1,.36,1),color 180ms;
  align-self:center;}
.nmx-row:hover .nmx-chev{color:#BE1E2D;transform:translate(3px,-3px);}

/* Tighter at tablet width */
@media(max-width:820px){
  .nav-mega-x{min-width:380px;}
  .nmx-head{padding:18px 18px 10px;}
  .nmx-rule{margin:0 18px 6px;}
  .nmx-list{padding:6px 10px 14px;}
  .nmx-row{padding:12px;grid-template-columns:24px 1fr 16px;gap:12px;}
  .nmx-name{font-size:14px;}
  .nmx-tag{font-size:12px;}
}

/* Reduced motion */
@media(prefers-reduced-motion:reduce){
  .nmx-row,.nmx-frame path,.nmx-num,.nmx-chev{transition:none!important;}
  .nmx-frame path{stroke-dashoffset:0;opacity:0;}
  .nmx-row:hover .nmx-frame path{opacity:1;}
}

/* ═══════════════════════════════════════════════════════════
   MOBILE HERO — OPTION B (map-first, scoped under .mh-b)
   Shown only ≤768px. Replaces the legacy mobile hero markup.
   ═══════════════════════════════════════════════════════════ */
.mh-b{display:none;}
@media(max-width:768px){
  /* The mh-b shell is TRANSPARENT — the existing Mapbox #mapStage shows through
     the .mh-map area so we get the same satellite map + flyTo animation + region
     overlays as desktop/tablet. .mh-head still paints opaque so the search/h1
     read against the dark inky panel. */
  .mh-b{display:block;position:absolute;inset:0;z-index:6;color:#fff;font-family:var(--font-sans);pointer-events:none;}
  .mh-b > *{pointer-events:auto;}
  /* Keep #mapStage visible on mobile, override the legacy mobile flex rules */
  .hero > #mapStage{position:absolute!important;inset:0!important;z-index:1!important;display:block!important;}
  /* Suppress Mapbox's "Use two fingers to move the map" overlay — the
     map gating is intentional and the chips already explain the UX. */
  .hero .mapboxgl-cooperative-gesture-screen{display:none!important;}
  .hero > .hero-inner,.hero > .hero-grad,.hero > .hero-frame,
  .hero > .map-hint,.hero > .scroll-ind,.hero .map-fs-btn{display:none!important;}
  .mh-b .mh-screen{display:flex;flex-direction:column;height:100%;width:100%;position:relative;pointer-events:none;}
  .mh-b .mh-screen > *{pointer-events:auto;}
  /* HEAD ZONE — full-bleed dark panel that ALSO covers the v2-nav area at
     top (nav stays clickable on z-index:200). Map below the head only. */
  .mh-b .mh-head{flex:none;display:flex;flex-direction:column;gap:9px;padding:calc(var(--nav-height) + 4px) 15px 13px;background:#060c18;position:relative;z-index:20;}
  .mh-b .mh-head-top{display:flex;align-items:center;gap:11px;}
  .mh-b .mh-cjk{font-family:var(--font-cjk);font-weight:600;color:var(--accent);font-size:24px;line-height:.9;flex:none;}
  .mh-b .mh-h1{font-family:var(--font-display);font-weight:700;font-size:15px;line-height:1.14;letter-spacing:-.02em;color:#fff;text-wrap:balance;}
  .mh-b .mh-h1 em{font-family:var(--font-serif);font-style:italic;font-weight:400;color:#fff;}
  /* SEARCH — match the desktop .hs-wrap focus aesthetic: dark fill + soft
     white border, red accent on the icon line, NO red ring on the input
     itself (the global :focus-visible --ring would otherwise paint a red
     box around the search bar). */
  .mh-b .mh-search{position:relative;display:flex;align-items:center;background:rgba(255,255,255,.09);border:1px solid rgba(255,255,255,.18);border-radius:999px;padding:3px 4px 3px 15px;gap:9px;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);transition:background 280ms cubic-bezier(.16,1,.3,1),border-color 280ms cubic-bezier(.16,1,.3,1),box-shadow 280ms cubic-bezier(.16,1,.3,1);}
  .mh-b .mh-search:focus-within{background:rgba(10,12,16,.62);border-color:rgba(255,255,255,.26);box-shadow:0 0 0 1px rgba(255,255,255,.08),0 14px 38px -10px rgba(0,0,0,.55);}
  .mh-b .mh-search-ic{flex:none;display:flex;align-items:center;color:rgba(255,255,255,.55);transition:color .2s;}
  .mh-b .mh-search:focus-within .mh-search-ic{color:#fff;}
  .mh-b .mh-search-ic svg{width:18px;height:18px;}
  .mh-b .mh-search-in{flex:1;min-width:0;background:none;border:0;color:#fff;font-family:var(--font-sans);font-weight:500;font-size:15px;outline:0;padding:9px 0;}
  .mh-b .mh-search-in:focus-visible{box-shadow:none;outline:0;}
  .mh-b .mh-search-in::placeholder{color:rgba(255,255,255,.34);font-size:14px;font-weight:400;transition:color 280ms cubic-bezier(.16,1,.3,1);}
  .mh-b .mh-search:focus-within .mh-search-in::placeholder{color:rgba(255,255,255,.5);}
  .mh-b .mh-search-go{flex:none;background:var(--accent);color:#fff;display:flex;align-items:center;justify-content:center;width:36px;height:36px;border-radius:999px;}
  .mh-b .mh-search-go:focus-visible{box-shadow:0 0 0 3px rgba(255,255,255,.22);}
  .mh-b .mh-search-go:active{background:var(--brand-red-600);}
  .mh-b .mh-search-go svg{width:18px;height:18px;}
  /* MAP — transparent so the underlying #mapStage (Mapbox) shows through.
     pointer-events:none lets taps reach the canvas region click handler;
     descendants (chips, stats, fs, veil) opt back in to pointer-events:auto. */
  .mh-b .mh-map{position:relative;flex:1 1 auto;min-height:0;overflow:hidden;pointer-events:none;}
  .mh-b .mh-map-veil{position:absolute;inset:0;pointer-events:none;background:linear-gradient(to top,rgba(6,12,24,.62) 0%,rgba(6,12,24,.12) 26%,transparent 46%),radial-gradient(120% 70% at 50% 30%,transparent 60%,rgba(6,12,24,.4));}
  /* CHIPS — floating on map (swipe to scroll horizontally) */
  .mh-b .mh-chips{display:flex;flex-wrap:nowrap;gap:8px;overflow-x:auto;overflow-y:hidden;-webkit-overflow-scrolling:touch;touch-action:pan-x;scrollbar-width:none;}
  .mh-b .mh-chips::-webkit-scrollbar{display:none;height:0;}
  .mh-b .mh-chip{flex:0 0 auto;font-family:var(--font-sans);font-weight:600;font-size:12px;color:rgba(255,255,255,.72);background:rgba(8,12,22,.74);border:1px solid rgba(255,255,255,.18);padding:7px 13px;border-radius:999px;white-space:nowrap;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);transition:background .18s,border-color .18s,color .18s,box-shadow .18s,transform .12s;}
  .mh-b .mh-chip:active{transform:scale(.96);}
  .mh-b .mh-chip.is-active{background:var(--accent);border-color:var(--accent);color:#fff;box-shadow:0 4px 14px -4px rgba(230,46,45,.7);}
  .mh-b .mh-chips-map{position:absolute;top:11px;left:11px;right:11px;z-index:16;padding:1px 2px;pointer-events:auto;-webkit-mask-image:linear-gradient(to right,transparent 0,#000 12px,#000 calc(100% - 18px),transparent 100%);mask-image:linear-gradient(to right,transparent 0,#000 12px,#000 calc(100% - 18px),transparent 100%);}
  /* Hint */
  .mh-b .mh-hint{position:absolute;top:60px;left:50%;transform:translateX(-50%);z-index:15;background:rgba(8,12,22,.9);color:#fff;font-family:var(--font-mono);font-size:11px;letter-spacing:.04em;padding:8px 15px;border-radius:999px;display:flex;align-items:center;gap:8px;white-space:nowrap;pointer-events:none;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);transition:opacity .35s;}
  .mh-b .mh-hint.hidden{opacity:0;}
  .mh-b .mh-hint-ic{display:flex;}
  .mh-b .mh-hint-ic svg{width:14px;height:14px;animation:mhBPulse 2s ease-in-out infinite;}
  @keyframes mhBPulse{0%,100%{opacity:.4;}50%{opacity:1;}}
  /* FS button */
  .mh-b .mh-fs{position:absolute;top:58px;right:11px;z-index:18;width:38px;height:38px;border-radius:10px;background:rgba(8,12,22,.84);border:1px solid rgba(255,255,255,.16);color:#fff;display:flex;align-items:center;justify-content:center;pointer-events:auto;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);}
  .mh-b .mh-fs svg{width:18px;height:18px;}
  /* STATS — floating draggable-style card (collapsible) */
  .mh-b .mh-stats{position:absolute;left:11px;right:11px;bottom:11px;z-index:19;padding:12px 16px 15px;border-radius:18px;border:1px solid rgba(255,255,255,.13);background:rgba(10,15,26,.84);box-shadow:0 20px 48px -12px rgba(0,0,0,.66);pointer-events:auto;-webkit-backdrop-filter:blur(18px) saturate(140%);backdrop-filter:blur(18px) saturate(140%);transition:padding .28s ease,border-radius .28s ease,background .28s ease;}
  .mh-b .mh-stats-grip{position:relative;display:flex;align-items:center;justify-content:center;gap:9px;width:100%;padding:6px 0 11px;background:transparent;border:0;cursor:pointer;font-family:var(--font-mono);font-weight:600;font-size:9.5px;letter-spacing:.14em;text-transform:uppercase;color:rgba(255,255,255,.55);transition:color .18s;}
  .mh-b .mh-stats-grip::before{content:'';display:block;width:44px;height:5px;border-radius:999px;background:rgba(255,255,255,.28);transition:background .18s;position:absolute;top:0;left:50%;transform:translateX(-50%);}
  .mh-b .mh-stats-grip:hover,.mh-b .mh-stats-grip:focus-visible{color:rgba(255,255,255,.85);}
  .mh-b .mh-stats-grip:hover::before,.mh-b .mh-stats-grip:active::before{background:rgba(255,255,255,.45);}
  .mh-b .mh-stats-grip-label{opacity:0;transition:opacity .2s ease;}
  /* COLLAPSED: card shrinks to a slim handle pill — entire map visible. */
  .mh-b .mh-stats.is-collapsed{padding:0;border-radius:999px;background:rgba(10,15,26,.78);left:50%;right:auto;transform:translateX(-50%);min-width:170px;}
  .mh-b .mh-stats.is-collapsed .mh-stats-grip{padding:11px 22px 9px;}
  .mh-b .mh-stats.is-collapsed .mh-stats-grip-label{opacity:1;}
  .mh-b .mh-stats.is-collapsed .mh-ctx,
  .mh-b .mh-stats.is-collapsed .mh-types,
  .mh-b .mh-stats.is-collapsed .mh-stat-grid,
  .mh-b .mh-stats.is-collapsed .mh-meta{display:none;}
  .mh-b .mh-ctx{font-family:var(--font-mono);font-weight:600;font-size:9.5px;letter-spacing:.12em;text-transform:uppercase;color:rgba(255,255,255,.55);margin-bottom:11px;display:flex;flex-wrap:wrap;gap:5px;align-items:baseline;line-height:1.35;transition:margin-bottom .2s ease;}
  .mh-b .mh-ctx-name{color:#fff;letter-spacing:.15em;}
  .mh-b .mh-ctx-sub{color:rgba(255,255,255,.6);text-transform:none;font-weight:400;letter-spacing:.02em;}
  .mh-b .mh-ctx-sub::before{content:'· ';color:rgba(255,255,255,.3);}
  /* property-type filter — segmented control with spring-driven indicator + drag-to-swipe */
  .mh-b .mh-types{position:relative;display:grid;grid-template-columns:repeat(4,1fr);gap:0;margin-bottom:13px;padding:3px;border-radius:12px;background:rgba(255,255,255,.05);box-shadow:inset 0 0 0 1px rgba(255,255,255,.08);touch-action:pan-y;user-select:none;-webkit-user-select:none;cursor:grab;}
  .mh-b .mh-types.is-dragging{cursor:grabbing;}
  .mh-b .mh-type-ind{position:absolute;top:3px;bottom:3px;left:0;width:0;border-radius:9px;background:rgba(255,255,255,.13);box-shadow:0 3px 10px -3px rgba(0,0,0,.55),inset 0 0 0 1px rgba(255,255,255,.07);transform:translateX(3px);z-index:0;pointer-events:none;transition:transform .36s cubic-bezier(.34,1.32,.5,1),width .36s cubic-bezier(.34,1.32,.5,1);}
  .mh-b .mh-type{position:relative;z-index:1;display:flex;align-items:center;justify-content:center;gap:6px;padding:8px 4px;border:0;background:transparent;border-radius:9px;cursor:inherit;color:rgba(255,255,255,.56);transition:color .22s;}
  .mh-b .mh-type-ic{display:flex;flex:none;color:currentColor;}
  .mh-b .mh-type-ic svg{width:14px;height:14px;display:block;}
  .mh-b .mh-type-l{font-family:var(--font-mono);font-weight:500;font-size:9.5px;letter-spacing:.05em;text-transform:uppercase;white-space:nowrap;line-height:1;}
  .mh-b .mh-type.is-active{color:#fff;}
  .mh-b .mh-stat-grid.mh-anim{animation:mhBStatIn .34s cubic-bezier(.22,1,.36,1);}
  @keyframes mhBStatIn{0%{opacity:.3;transform:translateY(5px);}100%{opacity:1;transform:none;}}
  .mh-b .mh-stat-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px 16px;}
  .mh-b .mh-stat{min-width:0;}
  .mh-b .mh-sv{font-family:var(--font-display);font-weight:700;font-size:21px;letter-spacing:-.03em;color:#fff;line-height:1;display:flex;align-items:baseline;gap:7px;white-space:nowrap;}
  .mh-b .mh-yoy{font-family:var(--font-mono);font-weight:500;font-size:9.5px;color:rgba(255,255,255,.45);letter-spacing:.01em;}
  .mh-b .mh-yoy.up{color:#5fd29a;}
  .mh-b .mh-yoy.down{color:#f08a8a;}
  .mh-b .mh-sl{font-family:var(--font-mono);font-size:8.5px;letter-spacing:.1em;text-transform:uppercase;color:rgba(255,255,255,.6);margin-top:5px;}
  .mh-b .mh-meta{font-family:var(--font-mono);font-size:8px;letter-spacing:.14em;text-transform:uppercase;color:rgba(255,255,255,.55);margin-top:12px;display:flex;align-items:center;}
  .mh-b .mh-live{width:7px;height:7px;border-radius:50%;background:#22c55e;margin-right:8px;box-shadow:0 0 0 0 rgba(34,197,94,.7);animation:mhBLive 1.7s ease-out infinite;}
  @keyframes mhBLive{0%{box-shadow:0 0 0 0 rgba(34,197,94,.7);background:#22c55e;}70%{box-shadow:0 0 0 7px rgba(34,197,94,0);background:#4ade80;}100%{box-shadow:0 0 0 0 rgba(34,197,94,0);background:#22c55e;}}
  /* Map-max (full-bleed via FS button) */
  .mh-b.map-max .mh-head{display:none;}
  @media(prefers-reduced-motion:reduce){
    .mh-b .mh-live,.mh-b .mh-hint-ic svg{animation:none;}
  }
}

/* ════════════════════════════════════════════════════════════
   MARKET PULSE V2 — refined design (mobile + tablet + desktop)
   Single section #market-mobile; legacy .mpt-sec retired.
   ════════════════════════════════════════════════════════════ */
.mpt-sec{display:none !important;}

#market-mobile{
  --mp2-ink:#0B0C10;
  --mp2-surface:#14161D;
  --mp2-surface-2:#1B1E27;
  --mp2-surface-3:#22262F;
  --mp2-line:rgba(255,255,255,.075);
  --mp2-line-2:rgba(255,255,255,.14);
  --mp2-txt:#FFFFFF;
  --mp2-txt-2:rgba(255,255,255,.60);
  --mp2-txt-3:rgba(255,255,255,.38);
  --mp2-red:#BE1E2D;
  --mp2-red-bright:#FF5666;
  --mp2-up:#22D88A;
  --mp2-up-soft:rgba(34,216,138,.14);
  --mp2-down:#FF6B7A;
  --mp2-down-soft:rgba(255,107,122,.14);
  --mp2-gold:#C9A24B;
  --mp2-jade:#5FB39B;
  --mp2-mk-seller:#D86670;
  --mp2-mk-balanced:#C9A24B;
  --mp2-mk-buyer:#5FB39B;
  position:relative;
  background:radial-gradient(120% 80% at 50% -10%, #1A1C24 0%, #0B0C10 55%);
  color:var(--mp2-txt);
  font-family:'Hanken Grotesk',ui-sans-serif,system-ui,sans-serif;
  -webkit-font-smoothing:antialiased;
  padding:0 0 40px;
  overflow:hidden;
}
#market-mobile *{box-sizing:border-box;}

/* Section header — matches the homepage .h2 pattern (eyebrow + h2 + meta) */
#market-mobile .mp2-appbar{
  padding:28px 18px 18px;
  border-bottom:1px solid var(--mp2-line);
}
#market-mobile .mp2-eyebrow{color:var(--mp2-red-bright);margin-bottom:14px;}
#market-mobile .mp2-h2{
  font-family:'Poppins','Hanken Grotesk',sans-serif;
  font-weight:700;
  font-size:clamp(28px,8vw,38px);
  line-height:1.04;
  letter-spacing:-.03em;
  color:#fff;
  display:flex;
  align-items:center;
  gap:12px;
  flex-wrap:wrap;
  margin:0;
}
#market-mobile .mp2-h2 > span:not(.mp2-live-pill){flex:0 1 auto;}
#market-mobile .mp2-ecg{width:42px;height:26px;overflow:visible;display:block;flex:0 0 auto;}
#market-mobile .mp2-ecg path{fill:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;vector-effect:non-scaling-stroke;}
#market-mobile .mp2-ecg-trace{stroke:rgba(190,30,45,.28);}
#market-mobile .mp2-ecg-scan{stroke:var(--mp2-red);stroke-dasharray:10 120;stroke-dashoffset:130;filter:drop-shadow(0 0 3px rgba(190,30,45,.75));animation:mp2EcgSweep 1.7s linear infinite;}
@keyframes mp2EcgSweep{from{stroke-dashoffset:130;}to{stroke-dashoffset:0;}}
#market-mobile .mp2-appbar-sub{font-size:12px;color:var(--mp2-txt-3);margin-top:12px;letter-spacing:.01em;font-family:'JetBrains Mono',monospace;}
#market-mobile .mp2-appbar-sub time{color:var(--mp2-txt-2);}
#market-mobile .mp2-live-pill{flex:0 0 auto;display:inline-flex;align-items:center;gap:6px;
  font-family:'JetBrains Mono',ui-monospace,'SF Mono',Menlo,monospace;
  font-size:10px;font-weight:600;letter-spacing:.14em;
  color:var(--mp2-up);background:var(--mp2-up-soft);border:1px solid rgba(34,216,138,.28);
  padding:5px 9px;border-radius:999px;text-transform:uppercase;
  align-self:center;position:relative;top:-2px;}
#market-mobile .mp2-live-dot{width:6px;height:6px;border-radius:50%;background:var(--mp2-up);
  box-shadow:0 0 0 0 rgba(34,216,138,.6);animation:mp2LivePulse 2.4s cubic-bezier(.22,1,.36,1) infinite;}
@keyframes mp2LivePulse{0%{box-shadow:0 0 0 0 rgba(34,216,138,.55);}70%{box-shadow:0 0 0 7px rgba(34,216,138,0);}100%{box-shadow:0 0 0 0 rgba(34,216,138,0);}}

/* Sections */
#market-mobile .mp2-sect{padding:0 18px;}
#market-mobile .mp2-sect + .mp2-sect{margin-top:22px;}

/* Property type tabs */
#market-mobile .mp2-typebar{position:sticky;top:0;z-index:20;}
#market-mobile .mp2-typebar-inner{
  display:flex;gap:8px;overflow-x:auto;scrollbar-width:none;
  padding:13px 18px 13px;
}
#market-mobile .mp2-typebar-inner::-webkit-scrollbar{display:none;}
#market-mobile .mp2-type-chip{
  flex:0 0 auto;font-family:'Hanken Grotesk',sans-serif;font-weight:600;font-size:13px;
  color:var(--mp2-txt-2);background:var(--mp2-surface-2);border:1px solid var(--mp2-line);
  padding:8px 15px;border-radius:999px;cursor:pointer;white-space:nowrap;
  transition:background .18s ease, color .18s ease, border-color .18s ease;
}
#market-mobile .mp2-type-chip[aria-selected="true"]{background:var(--mp2-red);color:#fff;border-color:var(--mp2-red);
  box-shadow:0 4px 14px -4px rgba(190,30,45,.6);}
#market-mobile .mp2-type-chip:active{transform:translateY(1px);}

/* Trend explorer (hero) */
#market-mobile .mp2-trend{
  background:linear-gradient(180deg, var(--mp2-surface) 0%, #101218 100%);
  border:1px solid var(--mp2-line);
  border-top:2px solid var(--mp2-red);
  border-radius:18px;
  padding:18px 16px 14px;
  position:relative;
  overflow:hidden;
}
#market-mobile .mp2-trend-eyebrow{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:10px;}
#market-mobile .mp2-trend-metric-name{font-size:13px;font-weight:600;color:var(--mp2-txt-2);letter-spacing:.01em;}
#market-mobile .mp2-trend-eyebrow-r{display:flex;align-items:center;gap:12px;}
#market-mobile .mp2-trend-scope{font-family:'JetBrains Mono',monospace;font-size:9.5px;letter-spacing:.12em;text-transform:uppercase;color:var(--mp2-txt-3);}
#market-mobile .mp2-chart-expand{display:inline-grid;place-items:center;width:28px;height:28px;border-radius:8px;
  background:var(--mp2-surface-2);border:1px solid var(--mp2-line);color:var(--mp2-txt-2);cursor:pointer;flex:0 0 auto;
  transition:background .18s,color .18s,border-color .18s;-webkit-tap-highlight-color:transparent;}
#market-mobile .mp2-chart-expand:active{transform:translateY(1px);}
#market-mobile .mp2-chart-expand svg{width:14px;height:14px;}
#market-mobile .mp2-chart-expand.is-on{background:var(--mp2-red);color:#fff;border-color:var(--mp2-red);}

#market-mobile .mp2-trend-value{font-family:'Poppins',sans-serif;font-weight:700;font-size:46px;line-height:.95;
  letter-spacing:-.025em;font-variant-numeric:tabular-nums;display:flex;align-items:baseline;gap:8px;color:#fff;}
#market-mobile .mp2-trend-value .unit{font-size:20px;font-weight:600;color:var(--mp2-txt-2);letter-spacing:0;}

#market-mobile .mp2-trend-change{display:flex;align-items:center;gap:9px;margin-top:9px;min-height:22px;flex-wrap:wrap;}
#market-mobile .mp2-tc-delta{display:inline-flex;align-items:center;gap:5px;font-family:'JetBrains Mono',monospace;
  font-weight:600;font-size:14px;font-variant-numeric:tabular-nums;letter-spacing:-.01em;
  padding:3px 9px 3px 7px;border-radius:7px;}
#market-mobile .mp2-tc-delta .arrow{font-size:11px;line-height:1;}
#market-mobile .mp2-tc-delta.up{color:var(--mp2-up);background:var(--mp2-up-soft);}
#market-mobile .mp2-tc-delta.down{color:var(--mp2-down);background:var(--mp2-down-soft);}
#market-mobile .mp2-tc-delta.flat{color:var(--mp2-txt-2);background:rgba(255,255,255,.07);}
#market-mobile .mp2-tc-delta .pct{opacity:.8;font-weight:500;}
#market-mobile .mp2-tc-sep{width:3px;height:3px;border-radius:50%;background:var(--mp2-txt-3);flex:0 0 auto;}
#market-mobile .mp2-tc-period{font-size:12.5px;color:var(--mp2-txt-3);font-weight:500;}
#market-mobile .mp2-tc-period strong{color:var(--mp2-txt-2);font-weight:600;}

#market-mobile .mp2-chart-wrap{position:relative;margin:14px -2px 0;height:218px;touch-action:pan-y;cursor:crosshair;}
#market-mobile .mp2-chart-wrap:focus{outline:none;}
#market-mobile .mp2-chart-wrap:focus-visible{outline:2px solid var(--mp2-red);outline-offset:4px;border-radius:10px;}
#market-mobile .mp2-chart-svg{position:absolute;inset:0;width:100%;height:100%;display:block;overflow:visible;}
#market-mobile .mp2-chart-grid line{stroke:var(--mp2-line);stroke-width:1;}
#market-mobile .mp2-chart-baseline{stroke:var(--mp2-txt-3);stroke-width:1;stroke-dasharray:2 4;opacity:.5;}
#market-mobile .mp2-chart-area{transition:opacity .2s ease;}
#market-mobile .mp2-chart-line{fill:none;stroke-width:2.25;stroke-linecap:round;stroke-linejoin:round;}
#market-mobile .mp2-chart-hilo-dot{stroke:var(--mp2-ink);stroke-width:1.5;}
#market-mobile .mp2-chart-node{fill:var(--mp2-ink);stroke-width:2;}
#market-mobile .mp2-chart-tick{stroke:rgba(255,255,255,.16);stroke-width:1;}
#market-mobile .mp2-chart-tick.major{stroke:rgba(255,255,255,.34);}
#market-mobile .mp2-zone-lbl{font-family:'JetBrains Mono',monospace;font-size:9px;font-weight:600;letter-spacing:.12em;text-transform:uppercase;opacity:.92;}
#market-mobile .mp2-zone-thr{font-family:'JetBrains Mono',monospace;font-size:9px;font-weight:500;letter-spacing:.04em;fill:var(--mp2-txt-3);}

#market-mobile .mp2-cross-line{position:absolute;top:0;bottom:22px;width:1px;background:var(--mp2-line-2);
  transform:translateX(-.5px);opacity:0;transition:opacity .12s ease;pointer-events:none;}
#market-mobile .mp2-cross-dot{position:absolute;width:13px;height:13px;border-radius:50%;background:var(--mp2-txt);
  border:3px solid var(--mp2-ink);box-shadow:0 0 0 1px var(--mp2-line-2),0 2px 8px rgba(0,0,0,.5);
  transform:translate(-50%,-50%);opacity:0;transition:opacity .12s ease;pointer-events:none;z-index:4;}
#market-mobile .mp2-cross-flag{position:absolute;top:-2px;transform:translateX(-50%);pointer-events:none;
  font-family:'JetBrains Mono',monospace;font-size:10px;font-weight:600;color:var(--mp2-txt);
  background:var(--mp2-surface-3);border:1px solid var(--mp2-line-2);border-radius:6px;
  padding:3px 7px;white-space:nowrap;opacity:0;transition:opacity .12s ease;z-index:5;}
#market-mobile .mp2-chart-xlabels{position:absolute;left:0;right:0;bottom:0;height:16px;pointer-events:none;}
#market-mobile .mp2-chart-xlabels span{position:absolute;transform:translateX(-50%);font-family:'JetBrains Mono',monospace;
  font-size:9.5px;letter-spacing:.04em;color:var(--mp2-txt-3);white-space:nowrap;}
#market-mobile .mp2-chart-edge{position:absolute;right:2px;transform:translateY(-50%);font-family:'JetBrains Mono',monospace;
  font-size:10px;font-weight:600;color:var(--mp2-txt-2);background:rgba(11,12,16,.7);padding:1px 4px;border-radius:4px;
  pointer-events:none;white-space:nowrap;letter-spacing:.01em;}
#market-mobile .mp2-chart-edge .cap{color:var(--mp2-txt-3);font-weight:500;margin-right:3px;}
#market-mobile .mp2-chart-open-pill{position:absolute;left:2px;transform:translateY(-50%);font-family:'JetBrains Mono',monospace;
  font-size:10px;font-weight:600;color:var(--mp2-txt-2);background:var(--mp2-surface-3);border:1px solid var(--mp2-line);
  padding:2px 7px;border-radius:999px;pointer-events:none;white-space:nowrap;z-index:2;}

#market-mobile .mp2-range-row{display:flex;gap:4px;margin-top:16px;background:var(--mp2-surface-2);
  border:1px solid var(--mp2-line);border-radius:11px;padding:4px;}
#market-mobile .mp2-range-row button{flex:1;font-family:'JetBrains Mono',monospace;font-weight:600;font-size:12px;letter-spacing:.04em;
  color:var(--mp2-txt-2);background:transparent;border:0;border-radius:8px;padding:8px 0;cursor:pointer;
  transition:background .18s ease,color .18s ease;}
#market-mobile .mp2-range-row button[aria-pressed="true"]{background:var(--mp2-red);color:#fff;box-shadow:0 2px 8px -2px rgba(190,30,45,.7);}

#market-mobile .mp2-metricbar{display:flex;gap:7px;overflow-x:auto;scrollbar-width:none;margin-top:12px;padding-bottom:2px;}
#market-mobile .mp2-metricbar::-webkit-scrollbar{display:none;}
#market-mobile .mp2-metric-chip{flex:0 0 auto;font-family:'Hanken Grotesk',sans-serif;font-weight:600;font-size:12.5px;
  color:var(--mp2-txt-2);background:transparent;border:1px solid var(--mp2-line-2);
  padding:7px 13px;border-radius:999px;cursor:pointer;white-space:nowrap;
  transition:background .18s,color .18s,border-color .18s;}
#market-mobile .mp2-metric-chip[aria-selected="true"]{background:#fff;color:var(--mp2-ink);border-color:#fff;}
#market-mobile .mp2-metric-chip:active{transform:translateY(1px);}

#market-mobile .mp2-range-bar{margin-top:15px;padding-top:14px;border-top:1px solid var(--mp2-line);}
#market-mobile .mp2-range-bar-cap{display:flex;align-items:center;justify-content:space-between;
  font-family:'JetBrains Mono',monospace;font-size:9.5px;letter-spacing:.12em;text-transform:uppercase;color:var(--mp2-txt-3);margin-bottom:9px;}
#market-mobile .mp2-range-bar-cap .now{color:var(--mp2-txt-2);}
#market-mobile .mp2-range-bar-track{position:relative;height:5px;border-radius:999px;
  background:linear-gradient(90deg, #0FA968 0%, #C9A24B 52%, #BE1E2D 100%);}
#market-mobile .mp2-range-bar-dot{position:absolute;top:50%;width:13px;height:13px;border-radius:50%;background:#fff;
  transform:translate(-50%,-50%);box-shadow:0 0 0 3px var(--mp2-surface),0 2px 7px rgba(0,0,0,.6);
  transition:left .5s cubic-bezier(.22,1,.36,1);z-index:2;}
#market-mobile .mp2-range-bar-labels{display:flex;justify-content:space-between;margin-top:9px;}
#market-mobile .mp2-range-bar-labels .rbl{font-family:'JetBrains Mono',monospace;font-size:9.5px;letter-spacing:.06em;text-transform:uppercase;color:var(--mp2-txt-3);}
#market-mobile .mp2-range-bar-labels .rbl b{display:block;font-family:'Poppins',sans-serif;font-weight:600;font-size:13px;
  letter-spacing:-.01em;color:var(--mp2-txt);text-transform:none;margin-top:2px;font-variant-numeric:tabular-nums;}
#market-mobile .mp2-range-bar-labels .hi{text-align:right;}

#market-mobile .mp2-chart-note{font-family:'JetBrains Mono',monospace;font-size:10px;letter-spacing:.04em;color:var(--mp2-txt-3);
  margin-top:12px;text-align:center;line-height:1.5;}
#market-mobile .mp2-chart-note .cn-range{display:block;margin-top:3px;color:var(--mp2-txt-2);}

/* Section heads */
#market-mobile .mp2-sec-head{display:flex;align-items:baseline;justify-content:space-between;gap:10px;
  margin:26px 0 12px;}
#market-mobile .mp2-sec-eyebrow{font-family:'JetBrains Mono',monospace;font-size:10px;font-weight:600;letter-spacing:.16em;
  text-transform:uppercase;color:var(--mp2-red-bright);}
#market-mobile .mp2-sec-title{font-family:'Poppins',sans-serif;font-weight:600;font-size:18px;letter-spacing:-.01em;margin-top:5px;color:#fff;}
#market-mobile .mp2-sec-title em{font-style:italic;font-family:'Instrument Serif',Georgia,serif;font-weight:400;}
#market-mobile .mp2-sec-sub{font-size:12px;color:var(--mp2-txt-3);max-width:60%;text-align:right;line-height:1.4;}

/* Market state gauge */
#market-mobile .mp2-gauge{background:var(--mp2-surface);border:1px solid var(--mp2-line);border-radius:16px;padding:17px 16px 15px;}
#market-mobile .mp2-gauge-top{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;margin-bottom:16px;}
#market-mobile .mp2-gauge-statelbl{font-size:11.5px;color:var(--mp2-txt-3);margin-top:3px;}
#market-mobile .mp2-gauge-val{text-align:right;flex:0 0 auto;}
#market-mobile .mp2-gauge-val b{font-family:'Poppins',sans-serif;font-weight:700;font-size:26px;font-variant-numeric:tabular-nums;letter-spacing:-.02em;color:#fff;}
#market-mobile .mp2-gauge-val span{display:block;font-size:10px;color:var(--mp2-txt-3);font-family:'JetBrains Mono',monospace;letter-spacing:.1em;text-transform:uppercase;margin-top:1px;}
#market-mobile .mp2-gauge-track{position:relative;height:8px;border-radius:999px;display:flex;gap:3px;}
#market-mobile .mp2-gauge-track .z{height:100%;border-radius:3px;background:rgba(255,255,255,.10);transition:background .35s ease;}
#market-mobile .mp2-gauge-track .z.seller{flex:4;background:linear-gradient(90deg,rgba(190,30,45,.5),rgba(216,102,112,.4));}
#market-mobile .mp2-gauge-track .z.balanced{flex:3;background:linear-gradient(90deg,rgba(201,162,75,.46),rgba(201,162,75,.32));}
#market-mobile .mp2-gauge-track .z.buyer{flex:3;background:linear-gradient(90deg,rgba(15,169,104,.44),rgba(95,179,155,.3));}
#market-mobile .mp2-gauge-track.seller .z.seller{background:linear-gradient(90deg,#BE1E2D,#E0727A);}
#market-mobile .mp2-gauge-track.balanced .z.balanced{background:linear-gradient(90deg,#C9A24B,#DCBF74);}
#market-mobile .mp2-gauge-track.buyer .z.buyer{background:linear-gradient(90deg,#0FA968,#4FC79A);}
#market-mobile .mp2-gauge-marker{position:absolute;top:50%;width:3px;height:19px;background:#fff;border-radius:2px;
  transform:translate(-50%,-50%);box-shadow:0 0 0 2px var(--mp2-ink),0 2px 6px rgba(0,0,0,.6);
  transition:left .5s cubic-bezier(.22,1,.36,1);}
#market-mobile .mp2-gauge-labels{display:flex;justify-content:space-between;margin-top:9px;
  font-family:'JetBrains Mono',monospace;font-size:9.5px;letter-spacing:.08em;text-transform:uppercase;color:var(--mp2-txt-3);}
#market-mobile .mp2-gauge-labels span.on{color:var(--mp2-txt);}
#market-mobile .mp2-gauge-badge{display:inline-flex;align-items:center;gap:9px;font-family:'Poppins',sans-serif;font-weight:600;
  font-size:19px;letter-spacing:-.012em;line-height:1;color:var(--mp2-txt);background:none;padding:0;}
#market-mobile .mp2-gauge-badge .gb-dot{width:7px;height:7px;border-radius:50%;flex:0 0 auto;}
#market-mobile .mp2-gauge-badge.seller .gb-dot{background:var(--mp2-mk-seller);}
#market-mobile .mp2-gauge-badge.balanced .gb-dot{background:var(--mp2-gold);}
#market-mobile .mp2-gauge-badge.buyer .gb-dot{background:var(--mp2-mk-buyer);}

/* Trend declaration (MoI only) */
#market-mobile .mp2-trend-declare{display:none;margin-top:13px;}
#market-mobile .mp2-trend-declare.show{display:block;}
#market-mobile .mp2-trend-declare .td-top{display:flex;align-items:center;gap:8px;}
#market-mobile .mp2-trend-declare .td-dot{width:7px;height:7px;border-radius:50%;flex:0 0 auto;}
#market-mobile .mp2-trend-declare b{color:var(--mp2-txt);font-weight:600;font-family:'Poppins',sans-serif;font-size:15px;letter-spacing:-.01em;}
#market-mobile .mp2-trend-declare .td-exp{display:block;margin-top:4px;color:var(--mp2-txt-3);font-size:12px;line-height:1.4;}
#market-mobile .mp2-trend-declare.seller .td-dot{background:var(--mp2-mk-seller);}
#market-mobile .mp2-trend-declare.balanced .td-dot{background:var(--mp2-mk-balanced);}
#market-mobile .mp2-trend-declare.buyer .td-dot{background:var(--mp2-mk-buyer);}

/* KPI grid */
#market-mobile .mp2-kpi-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px;}
#market-mobile .mp2-kpi{background:var(--mp2-surface);border:1px solid var(--mp2-line);border-radius:14px;padding:13px 13px 11px;
  cursor:pointer;position:relative;overflow:hidden;transition:border-color .18s ease, background .18s ease;
  -webkit-tap-highlight-color:transparent;}
#market-mobile .mp2-kpi:active{transform:translateY(1px);}
#market-mobile .mp2-kpi.is-active{border-color:rgba(255,255,255,.34);background:var(--mp2-surface-2);}
#market-mobile .mp2-kpi.is-active::before{content:"";position:absolute;left:0;top:0;bottom:0;width:3px;background:var(--mp2-red);}
#market-mobile .mp2-kpi-wide{grid-column:1 / -1;}
#market-mobile .mp2-kpi-lbl{font-size:11.5px;color:var(--mp2-txt-2);font-weight:500;line-height:1.25;}
#market-mobile .mp2-kpi-val{font-family:'Poppins',sans-serif;font-weight:700;font-size:25px;letter-spacing:-.02em;
  font-variant-numeric:tabular-nums;margin-top:7px;line-height:1;display:flex;align-items:baseline;gap:4px;color:#fff;}
#market-mobile .mp2-kpi-val .u{font-size:13px;font-weight:600;color:var(--mp2-txt-3);letter-spacing:0;}
#market-mobile .mp2-kpi-foot{display:flex;align-items:center;justify-content:space-between;gap:6px;margin-top:9px;}
#market-mobile .mp2-kpi-chg{font-family:'JetBrains Mono',monospace;font-size:11px;font-weight:600;font-variant-numeric:tabular-nums;}
#market-mobile .mp2-kpi-chg.up{color:var(--mp2-up);}
#market-mobile .mp2-kpi-chg.down{color:var(--mp2-down);}
#market-mobile .mp2-kpi-chg.neu{color:var(--mp2-txt-3);}
#market-mobile .mp2-kpi-spark{width:48px;height:18px;flex:0 0 auto;overflow:visible;}
#market-mobile .mp2-kpi-spark path{fill:none;stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round;}

/* Submarkets */
#market-mobile .mp2-subs{background:var(--mp2-surface);border:1px solid var(--mp2-line);border-radius:16px;overflow:hidden;}
#market-mobile .mp2-subs-colhdr{display:flex;align-items:center;justify-content:space-between;padding:12px 15px 10px;
  border-bottom:1px solid var(--mp2-line);font-family:'JetBrains Mono',monospace;font-size:9.5px;font-weight:600;
  letter-spacing:.12em;text-transform:uppercase;color:var(--mp2-txt-3);}
#market-mobile .mp2-sub-row{display:flex;align-items:center;gap:12px;padding:14px 15px;cursor:pointer;
  border-bottom:1px solid var(--mp2-line);-webkit-tap-highlight-color:transparent;transition:background .15s;
  text-decoration:none;color:inherit;}
#market-mobile .mp2-sub-row:last-of-type{border-bottom:0;}
#market-mobile .mp2-sub-row:active{background:var(--mp2-surface-2);}
#market-mobile .mp2-sub-main{flex:1 1 auto;min-width:0;}
#market-mobile .mp2-sub-name{font-weight:600;font-size:14.5px;letter-spacing:-.005em;color:#fff;}
#market-mobile .mp2-sub-meta{font-size:11px;color:var(--mp2-txt-3);margin-top:3px;font-family:'JetBrains Mono',monospace;letter-spacing:.02em;}
#market-mobile .mp2-sub-spark{width:54px;height:24px;flex:0 0 auto;overflow:visible;}
#market-mobile .mp2-sub-spark path{fill:none;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round;}
#market-mobile .mp2-sub-right{text-align:right;flex:0 0 auto;}
#market-mobile .mp2-sub-priceline{display:flex;align-items:baseline;justify-content:flex-end;gap:6px;}
#market-mobile .mp2-sub-price{font-family:'Poppins',sans-serif;font-weight:600;font-size:15px;font-variant-numeric:tabular-nums;letter-spacing:-.01em;color:#fff;}
#market-mobile .mp2-sub-yoy{font-family:'JetBrains Mono',monospace;font-size:10.5px;font-weight:600;font-variant-numeric:tabular-nums;}
#market-mobile .mp2-sub-yoy.up{color:var(--mp2-up);}
#market-mobile .mp2-sub-yoy.down{color:var(--mp2-down);}
#market-mobile .mp2-sub-badge{display:inline-block;margin-top:4px;font-family:'JetBrains Mono',monospace;font-size:9px;font-weight:600;
  letter-spacing:.08em;text-transform:uppercase;padding:2px 6px;border-radius:5px;}
#market-mobile .mp2-sub-badge.seller{color:var(--mp2-mk-seller);background:rgba(216,102,112,.13);}
#market-mobile .mp2-sub-badge.balanced{color:var(--mp2-gold);background:rgba(201,162,75,.15);}
#market-mobile .mp2-sub-badge.buyer{color:var(--mp2-jade);background:rgba(95,179,155,.14);}
#market-mobile .mp2-sub-chev{width:16px;height:16px;flex:0 0 auto;color:var(--mp2-txt-3);transition:transform .18s ease,color .18s ease;}
#market-mobile .mp2-sub-row:active .mp2-sub-chev{transform:translateX(2px);color:var(--mp2-txt-2);}
#market-mobile .mp2-subs-explore{display:flex;align-items:center;justify-content:center;gap:8px;padding:14px;
  font-family:'Hanken Grotesk',sans-serif;font-weight:600;font-size:13px;color:var(--mp2-red-bright);text-decoration:none;
  border-top:1px solid var(--mp2-line);-webkit-tap-highlight-color:transparent;transition:background .15s;}
#market-mobile .mp2-subs-explore:active{background:var(--mp2-surface-2);}
#market-mobile .mp2-subs-explore svg{width:14px;height:14px;}

/* Analyst note */
#market-mobile .mp2-note{background:linear-gradient(135deg, rgba(190,30,45,.12), rgba(190,30,45,.02) 60%);
  border:1px solid rgba(190,30,45,.28);border-radius:16px;padding:17px 17px 16px;position:relative;}
#market-mobile .mp2-note-eyebrow{display:flex;align-items:center;gap:8px;font-family:'JetBrains Mono',monospace;font-size:10px;
  font-weight:600;letter-spacing:.14em;text-transform:uppercase;color:var(--mp2-red-bright);margin-bottom:9px;}
#market-mobile .mp2-note-eyebrow .cjk{font-family:'Instrument Serif',serif;font-size:14px;letter-spacing:0;color:var(--mp2-gold);text-transform:none;}
#market-mobile .mp2-note-body{font-size:14.5px;line-height:1.55;color:rgba(255,255,255,.86);}
#market-mobile .mp2-note-body strong{color:#fff;font-weight:700;}
#market-mobile .mp2-note-foot{margin-top:12px;font-size:11px;color:var(--mp2-txt-3);font-family:'JetBrains Mono',monospace;letter-spacing:.04em;}

/* CTA + footer */
#market-mobile .mp2-cta{display:flex;align-items:center;justify-content:center;gap:9px;width:100%;
  font-family:'Hanken Grotesk',sans-serif;font-weight:600;font-size:15px;color:#fff;background:var(--mp2-red);
  border:0;border-radius:13px;padding:16px;cursor:pointer;margin-top:8px;
  box-shadow:0 8px 24px -8px rgba(190,30,45,.7);transition:background .18s ease;text-decoration:none;}
#market-mobile .mp2-cta:active{transform:translateY(1px);background:var(--mp2-red-bright);}
#market-mobile .mp2-cta svg{width:16px;height:16px;}
#market-mobile .mp2-foot{padding:22px 18px 8px;text-align:center;}
#market-mobile .mp2-foot-sources{font-family:'JetBrains Mono',monospace;font-size:10px;letter-spacing:.06em;color:var(--mp2-txt-3);line-height:1.6;}
#market-mobile .mp2-foot-disc{font-size:10.5px;color:var(--mp2-txt-3);margin-top:10px;line-height:1.5;max-width:300px;margin-inline:auto;}

/* Reveal */
#market-mobile .mp2-rv{opacity:0;transform:translateY(14px);}
#market-mobile .mp2-rv.in{opacity:1;transform:none;transition:opacity .5s cubic-bezier(.22,1,.36,1),transform .5s cubic-bezier(.22,1,.36,1);}
@media (prefers-reduced-motion:reduce){
  #market-mobile *{animation-duration:.001ms !important;transition-duration:.001ms !important;}
  #market-mobile .mp2-rv{opacity:1;transform:none;}
}

/* In-place zoom (chart fullscreen-within-section) */
#market-mobile.mp2-zoom .mp2-appbar{display:none;}
#market-mobile.mp2-zoom .mp2-typebar{display:none;}
#market-mobile.mp2-zoom .mp2-sect:not(.mp2-trend-section){display:none;}
#market-mobile.mp2-zoom .mp2-trend-section{margin-top:0;}
#market-mobile.mp2-zoom .mp2-trend{background:transparent;border:0;border-top:0;padding:6px 4px 0;}
#market-mobile.mp2-zoom .mp2-trend .mp2-range-bar,
#market-mobile.mp2-zoom .mp2-trend .mp2-chart-note{display:none;}
#market-mobile.mp2-zoom .mp2-trend .mp2-chart-wrap{height:min(56vh,500px);margin-top:18px;}
#market-mobile.mp2-zoom .mp2-trend .mp2-trend-value{font-size:40px;}
#market-mobile.mp2-zoom .mp2-trend .mp2-metricbar{margin-top:20px;}

/* ════════════════════════════════════════════════════════════
   Desktop + tablet layout (mp2 desktop = "mpw" namespace).
   At ≤768px these styles are inert; the mp2-appbar + typebar drive.
   At 769–1079px we use a stacked layout with the sticky web bar.
   At ≥1080px we go 2-column: trend+subs left, gauge/demand/supply/note right.
   ════════════════════════════════════════════════════════════ */

/* mobile-only chrome */
#market-mobile .mpw-top,
#market-mobile .mpw-bg{display:none;}
/* desktop+tablet — show web chrome, hide mobile chrome */
@media (min-width:769px){
  #market-mobile{position:relative;background:radial-gradient(120% 70% at 50% -8%, #16181f 0%, #0b0c10 58%);overflow:hidden;}
  #market-mobile .mp2-appbar,
  #market-mobile .mp2-typebar{display:none;}
  #market-mobile .mpw-top,
  #market-mobile .mpw-bg{display:block;}
}

/* Interactive grid backdrop (decorative; rebuilt by JS on resize) */
#market-mobile .mpw-bg{position:absolute;inset:0;z-index:0;pointer-events:none;}
#market-mobile .mp2-grid{position:absolute;inset:0;width:100%;height:100%;z-index:0;
  mask-image:radial-gradient(ellipse 88% 72% at 50% 42%,#000 28%,transparent 100%);
  -webkit-mask-image:radial-gradient(ellipse 88% 72% at 50% 42%,#000 28%,transparent 100%);}
#market-mobile .mp2-grid .mp2-grid-frame{fill:none;stroke:rgba(255,255,255,.05);stroke-width:1;pointer-events:none;}
#market-mobile .mp2-grid .mp2-grid-cell{fill:rgba(255,255,255,0);pointer-events:auto;cursor:default;
  transition:fill 240ms cubic-bezier(.22,1,.36,1);}
#market-mobile .mp2-grid .mp2-grid-cell:hover{fill:rgba(255,255,255,.13);transition-duration:0ms;}
#market-mobile .mp2-grid .mp2-grid-acc{fill:rgba(190,30,45,.20);pointer-events:none;}
/* Let the mouse fall through gutters to the grid; cards remain interactive */
@media (min-width:769px){
  #market-mobile .mpw-main{position:relative;z-index:1;pointer-events:none;}
  #market-mobile .mpw-main button,
  #market-mobile .mpw-main a,
  #market-mobile .mpw-main .mp2-chart-wrap,
  #market-mobile .mpw-main .mp2-kpi,
  #market-mobile .mpw-main .mp2-sub-row,
  #market-mobile .mpw-main .mp2-gauge,
  #market-mobile .mpw-main .mp2-note,
  #market-mobile .mpw-main .mp2-trend{pointer-events:auto;}
  /* Allow the .mpw-bg svg to receive pointer events for cell hover */
  #market-mobile .mpw-bg{pointer-events:auto;}
}

/* ---------- Top (stacked head matching .h2; tabs row below) ---------- */
#market-mobile .mpw-top{border-bottom:1px solid var(--mp2-line);position:relative;z-index:2;}
#market-mobile .mpw-top-in{max-width:1320px;margin:0 auto;padding:44px 36px 22px;
  display:flex;flex-direction:column;align-items:stretch;gap:24px;}
#market-mobile .mpw-head{display:flex;flex-direction:column;align-items:flex-start;gap:0;}
#market-mobile .mpw-head-row{display:flex;align-items:center;justify-content:space-between;gap:16px;width:100%;margin-bottom:14px;}
#market-mobile .mpw-eyebrow{color:var(--mp2-red-bright);}
#market-mobile .mpw-h2{
  font-family:'Poppins','Hanken Grotesk',sans-serif;
  font-weight:700;
  font-size:clamp(28px,3.4vw,46px);
  line-height:1.08;
  letter-spacing:-.03em;
  color:#fff;
  display:flex;
  align-items:center;
  gap:18px;
  margin:0;
}
#market-mobile .mpw-h2 .mp2-ecg{width:54px;height:32px;flex:0 0 auto;overflow:visible;display:block;}
#market-mobile .mpw-sub{font-size:13px;color:var(--mp2-txt-3);margin-top:14px;font-family:'JetBrains Mono',monospace;letter-spacing:.01em;}
#market-mobile .mpw-sub time{color:var(--mp2-txt-2);}
#market-mobile .mpw-tabs-wrap{display:flex;}

/* ---------- Segmented pill tabs with sliding thumb ---------- */
#market-mobile .mpw-tabs{position:relative;display:flex;gap:2px;background:var(--mp2-surface-2);
  border:1px solid var(--mp2-line);border-radius:999px;padding:4px;}
#market-mobile .mpw-type-chip{position:relative;z-index:2;display:inline-flex;align-items:center;gap:7px;
  background:transparent;border:0;border-radius:999px;padding:9px 16px;color:var(--mp2-txt-2);
  font-family:'Hanken Grotesk',sans-serif;font-weight:600;font-size:13px;cursor:pointer;white-space:nowrap;
  transition:color .35s ease;-webkit-tap-highlight-color:transparent;}
#market-mobile .mpw-type-chip svg{width:15px;height:15px;fill:none;stroke:currentColor;stroke-width:1.8;
  stroke-linecap:round;stroke-linejoin:round;opacity:.8;
  transition:transform .4s cubic-bezier(.5,1.3,.4,1),opacity .35s ease;}
#market-mobile .mpw-type-chip[aria-selected="true"]{color:#fff;}
#market-mobile .mpw-type-chip[aria-selected="true"] svg{opacity:1;transform:scale(1.1);}
#market-mobile .mpw-type-chip:not([aria-selected="true"]):hover{color:var(--mp2-txt);}
#market-mobile .mpw-type-chip:active{transform:translateY(1px);}
#market-mobile .mpw-tabs-thumb{position:absolute;top:4px;bottom:4px;left:0;width:0;border-radius:999px;
  background:linear-gradient(135deg,#D8313F,#BE1E2D);
  box-shadow:0 6px 18px -6px rgba(190,30,45,.85), inset 0 1px 0 rgba(255,255,255,.16);
  transform:translateX(0);z-index:1;
  transition:transform .46s cubic-bezier(.5,1.25,.4,1), width .46s cubic-bezier(.5,1.25,.4,1);}
#market-mobile .mpw-live{flex:0 0 auto;}

/* ---------- Grid (single-column default; 2-col at ≥1080) ---------- */
#market-mobile .mpw-main{max-width:1320px;margin:0 auto;padding:0;}
#market-mobile .mpw-grid{display:flex;flex-direction:column;align-items:stretch;gap:22px;}
/* Mobile + tablet: columns collapse, children flow into .mpw-grid */
#market-mobile .mpw-col-main,
#market-mobile .mpw-rail{display:contents;}
#market-mobile .mpw-chart-sec {order:1;}
#market-mobile .mpw-gauge-sec {order:2;}
#market-mobile .mpw-demand-sec{order:3;}
#market-mobile .mpw-supply-sec{order:4;}
#market-mobile .mpw-subs-sec  {order:5;}
#market-mobile .mpw-note-sec  {order:6;}
#market-mobile .mpw-note-col{display:flex;flex-direction:column;gap:16px;}

@media (min-width:1080px){
  #market-mobile .mpw-main{padding:26px 36px 70px;}
  #market-mobile .mpw-grid{flex-direction:row;align-items:flex-start;}
  #market-mobile .mpw-col-main{display:flex;flex:1.7 1 0;min-width:0;flex-direction:column;gap:22px;}
  #market-mobile .mpw-rail    {display:flex;flex:1   1 0;min-width:0;flex-direction:column;gap:22px;}
  /* Columns hold their own children in desktop — let intrinsic order win */
  #market-mobile .mpw-chart-sec,
  #market-mobile .mpw-gauge-sec,
  #market-mobile .mpw-demand-sec,
  #market-mobile .mpw-supply-sec,
  #market-mobile .mpw-subs-sec,
  #market-mobile .mpw-note-sec{order:initial;}
}

/* Tighter section heads on desktop */
@media (min-width:769px){
  #market-mobile .mp2-sect + .mp2-sect{margin-top:0;}  /* gaps handled by flex gap */
  #market-mobile .mp2-sect{padding:0;}
  #market-mobile .mp2-sec-head{margin:0 0 12px;}
  #market-mobile .mpw-rail .mp2-sec-sub{display:none;}
  /* The right rail looks more dashboard-y with tighter sec-eyebrow + caps */
  #market-mobile .mpw-rail .mp2-sec-eyebrow{text-transform:uppercase;}
}

/* ---------- Chart card (hero) ---------- */
@media (min-width:769px){
  #market-mobile .mpw-chart-sec .mp2-trend{border-radius:18px;padding:24px 22px 20px;height:100%;}
  #market-mobile .mpw-chart-sec .mp2-trend-eyebrow{margin-bottom:12px;}
  #market-mobile .mpw-chart-sec .mp2-trend-metric-name{font-size:14px;}
  #market-mobile .mpw-chart-sec .mp2-trend-value{font-size:56px;}
  #market-mobile .mpw-chart-sec .mp2-trend-value .unit{font-size:24px;}
  #market-mobile .mpw-chart-sec .mp2-chart-wrap{height:clamp(320px,42vh,440px);margin-top:18px;}
  #market-mobile .mpw-chart-sec .mp2-metricbar{flex-wrap:wrap;overflow:visible;}
  #market-mobile .mpw-main .mp2-chart-expand{display:none;}
  #market-mobile .mpw-chart-sec .mp2-range-bar{max-width:100%;}
}

/* Right rail tightening */
@media (min-width:769px){
  #market-mobile .mpw-rail .mp2-gauge,
  #market-mobile .mpw-rail .mp2-kpi-grid{margin-top:0;}
}

/* Submarkets roomier */
@media (min-width:769px){
  #market-mobile .mpw-subs-sec .mp2-sub-row{padding:15px 18px;}
  #market-mobile .mpw-subs-sec .mp2-sub-spark{width:84px;height:26px;}
  #market-mobile .mpw-subs-sec .mp2-sub-name{font-size:15.5px;}
}

/* Note column */
@media (min-width:769px){
  #market-mobile .mpw-note-col .mp2-note{flex:0 0 auto;}
  #market-mobile .mpw-note-col .mp2-foot{text-align:left;padding:6px 2px 0;}
  #market-mobile .mpw-note-col .mp2-foot-disc{margin-inline:0;}
}

/* Subs-explore — shimmer + dual-arrow on hover (desktop polish) */
@media (min-width:769px){
  #market-mobile .mp2-subs-explore{position:relative;display:flex;align-items:center;justify-content:space-between;gap:14px;
    margin:12px;padding:14px 14px 14px 18px;overflow:hidden;text-decoration:none;border-radius:12px;border-top:0;
    border:1px solid rgba(190,30,45,.28);background:linear-gradient(180deg,rgba(190,30,45,.09),rgba(255,255,255,.015));
    color:rgba(255,255,255,.92);
    -webkit-tap-highlight-color:transparent;transition:border-color .25s ease,box-shadow .25s ease,transform .12s ease;}
  #market-mobile .mp2-subs-explore::before{content:"";position:absolute;inset:0;pointer-events:none;
    background:linear-gradient(115deg,transparent 32%,rgba(255,255,255,.11) 50%,transparent 68%);
    transform:translateX(-130%);transition:transform .7s cubic-bezier(.22,1,.36,1);}
  #market-mobile .mp2-subs-explore:hover{border-color:rgba(216,49,63,.6);box-shadow:0 10px 26px -10px rgba(190,30,45,.65);}
  #market-mobile .mp2-subs-explore:hover::before{transform:translateX(130%);}
  #market-mobile .mp2-subs-explore:active{transform:translateY(1px);}
  #market-mobile .mp2-subs-explore svg{flex:0 0 auto;color:#fff;background:linear-gradient(135deg,#D8313F,#BE1E2D);
    width:34px;height:34px;padding:9px;border-radius:50%;box-shadow:0 4px 12px -3px rgba(190,30,45,.7);}
}

/* ---------- Tablet (769–1079px): smaller chart hero + container padding ---------- */
@media (min-width:769px) and (max-width:1079px){
  #market-mobile .mpw-chart-sec .mp2-trend-value{font-size:46px;}
  #market-mobile .mpw-chart-sec .mp2-chart-wrap{height:clamp(300px,40vh,380px);}
  #market-mobile .mpw-top-in,
  #market-mobile .mpw-main{padding-left:26px;padding-right:26px;}
}

/* ---------- Mobile (≤768): restore .mp2-sect padding so chart card has gutter ---------- */
@media (max-width:768px){
  #market-mobile .mpw-main{padding:0;}
  #market-mobile .mp2-sect{padding:0 18px;}
}

/* ============================================================
   CJK ACCENT POPOVERS — hover the Chinese accent glyphs
   ============================================================ */
.cjk-interactive{
  cursor:pointer;
  position:relative;
  text-decoration:underline;
  text-decoration-color:var(--accent);
  text-underline-offset:3px;
  text-decoration-thickness:1px;
}
/* Hero glyph is large + atmospheric — keep the pointer, drop the underline */
.hero-cjk.cjk-interactive{text-decoration:none;}

/* Popover (appended to body, position: fixed) */
.cjk-popover{
  position:fixed;
  width:220px;
  background:#111;
  border:1px solid var(--accent);
  padding:16px 18px;
  pointer-events:none;
  opacity:0;
  transform:translateY(6px);
  transition:opacity 180ms ease-out, transform 180ms ease-out;
  z-index:10000;
  box-shadow:0 8px 32px rgba(0,0,0,.45);
}
.cjk-popover.open{opacity:1;transform:translateY(0);pointer-events:auto;}

/* Arrow — points down toward the character (popover above) */
.cjk-popover::after{
  content:'';position:absolute;top:100%;left:var(--arrow-x,50%);
  transform:translateX(-50%);
  border:6px solid transparent;border-top-color:var(--accent);
}
/* Flip variant — popover appears below the character */
.cjk-popover.flip{transform:translateY(-6px);}
.cjk-popover.flip.open{transform:translateY(0);}
.cjk-popover.flip::after{
  top:auto;bottom:100%;left:var(--arrow-x,50%);
  border-top-color:transparent;border-bottom-color:var(--accent);
}

.cjk-popover-char{font-family:var(--font-cjk);font-size:2.4rem;font-weight:700;color:var(--accent);line-height:1;margin-bottom:4px;}
.cjk-popover-pinyin{font-family:var(--font-mono);font-size:.65rem;letter-spacing:.12em;text-transform:uppercase;color:rgba(255,255,255,.4);margin-bottom:10px;}
.cjk-popover-meaning{font-family:var(--font-sans);font-size:.82rem;font-weight:500;color:#fff;margin-bottom:10px;}
.cjk-popover-divider{height:1px;background:rgba(255,255,255,.1);margin-bottom:10px;}
.cjk-popover-context{font-family:var(--font-serif);font-size:.78rem;font-style:italic;color:rgba(255,255,255,.55);line-height:1.5;}

/* ═══════════════════════════════════════════════════════════════════════
   Explore mega-menu v2 — "anchor & regions" (replaces the 9-tile photo wall)
   One photograph (Victoria, the only shot that identifies itself) anchors a
   left rail; the other twelve municipalities are text rows grouped by region.
   The condo directory sits in the rail as its own card so it can never read
   as the tail of whichever region group it happens to sit beside.
   Rows keep .et[data-muni] + [data-et-meta] so the existing hover-hydrate
   from 8x-muni-stats keeps working unchanged.
   ═══════════════════════════════════════════════════════════════════════ */
.nav-mega-b{min-width:940px;}
.explore-b{position:relative;display:grid;grid-template-columns:296px 1fr;gap:16px;padding:16px;}

.eb-rail{display:flex;flex-direction:column;gap:10px;min-width:0;}
.eb-rail .et.featured{grid-column:auto;grid-row:auto;flex:1;min-height:228px;}

.et.eb-dir{display:flex;align-items:center;gap:12px;padding:12px 13px;border-radius:10px;
  text-decoration:none;flex:none;
  border:1px solid rgba(190,30,45,.34);
  background:linear-gradient(135deg,rgba(190,30,45,.14),rgba(190,30,45,.03) 70%);
  transition:border-color .16s ease,background .16s ease;}
.et.eb-dir:hover,.et.eb-dir:focus-visible{border-color:rgba(190,30,45,.72);
  background:linear-gradient(135deg,rgba(190,30,45,.22),rgba(190,30,45,.05) 70%);}
.eb-dir-glyph{flex:none;width:38px;height:38px;border-radius:8px;display:grid;place-items:center;
  background:rgba(190,30,45,.17);color:#f2606d;}
.eb-dir-txt{display:flex;flex-direction:column;gap:1px;min-width:0;}
.eb-dir-eyebrow{font-family:var(--font-mono);font-size:9px;font-weight:600;letter-spacing:.14em;
  text-transform:uppercase;color:#f2606d;}
.eb-dir-name{font-size:14px;font-weight:700;letter-spacing:-.01em;color:#fff;line-height:1.25;}
.eb-dir-meta{font-family:var(--font-mono);font-size:10px;letter-spacing:.05em;color:rgba(255,255,255,.6);}
.eb-dir-arrow{margin-left:auto;flex:none;color:#f2606d;font-size:15px;opacity:.85;}

.eb-regions{display:grid;grid-template-columns:1fr 1fr;gap:12px 20px;align-content:start;min-width:0;}
.eb-group{display:flex;flex-direction:column;min-width:0;}
.eb-glabel{font-family:var(--font-mono);font-size:9px;font-weight:600;letter-spacing:.16em;
  text-transform:uppercase;color:rgba(255,255,255,.4);padding:0 8px 6px;
  border-bottom:1px solid rgba(255,255,255,.09);margin-bottom:4px;}

/* .et.eb-row deliberately out-specifies the .et tile rules above */
.et.eb-row{position:relative;display:flex;align-items:baseline;gap:10px;
  padding:7px 8px;min-height:0;border:0;border-radius:6px;background:transparent;
  overflow:visible;text-decoration:none;transition:background .13s ease;}
.et.eb-row:hover,.et.eb-row:focus-visible{background:rgba(255,255,255,.075);}
.et.eb-row .eb-name{font-size:13px;font-weight:600;letter-spacing:-.01em;color:#fff;white-space:nowrap;}
.et.eb-row .eb-meta{margin-left:auto;font-family:var(--font-mono);font-size:10px;letter-spacing:.04em;
  color:rgba(255,255,255,.56);white-space:nowrap;}

@media(max-width:1080px){
  .nav-mega-b{min-width:0;}
  .explore-b{grid-template-columns:248px 1fr;gap:12px;}
  .eb-rail .et.featured{min-height:196px;}
}
@media(max-width:860px){
  .explore-b{grid-template-columns:1fr;}
  .eb-rail .et.featured{min-height:150px;}
}
@media(max-width:560px){
  .eb-regions{grid-template-columns:1fr;}
}
@media(prefers-reduced-motion:reduce){
  .et.eb-dir,.et.eb-row{transition:none;}
}
