/* Research page: the West Palm Beach early demo (#demo). Map on the left, the picked structure's panel on the right;
   the panel stacks under the map below 960 px. Data colors use the brand's diverging ramp (--div-neg / --div-mid / --div-pos). */
.wpb { display: grid; grid-template-columns: minmax(0, 1fr) minmax(280px, 330px); gap: clamp(24px, 3vw, 48px); align-items: start; }
.wpb-map { margin: 0; min-width: 0; }
.wpb-frame { position: relative; line-height: 0; cursor: crosshair; touch-action: manipulation; -webkit-tap-highlight-color: transparent; }
.wpb-frame img { width: 100%; height: auto; display: block; filter: grayscale(.72) contrast(.92) brightness(1.06); }
.wpb-frame canvas { position: absolute; inset: 0; width: 100%; height: 100%; max-width: none; }
.wpb-frame:focus-visible { outline: 2px solid var(--blue); outline-offset: 4px; }
.wpb-frame .fig-tag { left: 10px; top: 10px; }
.wpb-map .ramp-key i { width: 22px; }
.wpb-map .ramp-key .one { font-variant-numeric: lining-nums tabular-nums; margin: 0 6px; letter-spacing: .08em; }

.wpb-panel { background: var(--sheet); border-top: 2px solid var(--ink); padding: 18px 20px 20px; }
.wpb-panel .kicker { margin-bottom: 10px; }
.wpb-addr { font-size: clamp(20px, 1.6vw, 23px); line-height: 1.2; margin: 0 0 14px; min-height: 1.2em; }
.wpb-addr.none { color: var(--slate); font-style: italic; }
.wpb-fig { display: flex; align-items: baseline; gap: 12px; flex-wrap: wrap; padding-top: 14px; border-top: 1px solid var(--rule); }
.wpb-fig .stat { font-size: clamp(40px, 3.4vw, 50px); }
.wpb-fig .label { color: var(--slate); font-size: 10.5px; letter-spacing: .14em; line-height: 1.5; }
.wpb-band { margin: 10px 0 0; font-size: 16px; line-height: 1.45; color: var(--slate); }
.wpb-band b { font-weight: 500; color: var(--ink); font-variant-numeric: lining-nums tabular-nums; }
.wpb-rose { margin: 16px 0 0; padding-top: 14px; border-top: 1px solid var(--rule); }
.wpb-rose .label { display: block; color: var(--navy); font-size: 10.5px; letter-spacing: .14em; margin-bottom: 4px; }
.wpb-rose svg { width: 100%; max-width: 220px; height: auto; margin: 0 auto; overflow: visible; }
.wpb-rose .sec-w { stroke: rgba(22, 36, 61, .55); stroke-width: .8; stroke-linejoin: round; }
.wpb-rose .ring { fill: none; stroke: var(--rule-2); stroke-width: .8; }
.wpb-rose .ring.one { stroke: var(--ink); stroke-width: 1.3; stroke-dasharray: 3 2.5; }
.wpb-rose .spoke { stroke: var(--rule); stroke-width: .6; }
.wpb-rose text { font-family: var(--sans); font-weight: 600; font-size: 9px; letter-spacing: .08em; fill: var(--slate); text-anchor: middle; dominant-baseline: central; }
.wpb-rose text.n { font-size: 11px; fill: var(--ink); }
.wpb-rose text.rv { font-size: 8.5px; fill: var(--ink); paint-order: stroke; stroke: var(--sheet); stroke-width: 3px; }
.wpb-rose figcaption { margin-top: 6px; font-size: 14.5px; line-height: 1.45; color: var(--slate); }
.wpb-keys { display: none; margin: 14px 0 0; font-family: var(--sans); font-weight: 600; font-size: 10px; letter-spacing: .14em; text-transform: uppercase; color: var(--slate); }
.wpb:has(.wpb-frame:focus-visible) .wpb-keys { display: block; }

@media (max-width: 960px) {
  .wpb { grid-template-columns: 1fr; }
  .wpb-panel { min-height: 0; display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: 0 22px; }
  .wpb-panel > .kicker, .wpb-panel > .wpb-addr { grid-column: 1 / -1; }
  .wpb-panel > .wpb-fig, .wpb-panel > .wpb-band { grid-column: 1; align-self: start; }
  .wpb-panel > .wpb-rose { grid-column: 2; grid-row: 3 / span 3; margin-top: 0; }
  .wpb-panel > .wpb-keys { grid-column: 1; }
}
@media (max-width: 600px) {
  .wpb-panel { display: block; padding: 18px 16px 18px; }
  .wpb-rose { margin-top: 18px; }
  .wpb-rose svg { max-width: 210px; }
}
