// Viewpoint — the architect plan and three geographically anchored public-road
// cameras on the left, source-locked before/after comparisons on the right.
function Radar() {
  const pins = [
    { id: 'south', x: 47.64, y: 92.19, heading: 0, name: 'South Frontage', from: 'County Line Rd · looking north', dist: '0.8 mi',
      before: '/images/piedmont-g01-south-before-v2.webp', patch: '/images/piedmont-g01-south-patch-v2.webp' },
    { id: 'west', x: 25.50, y: 78.10, heading: 90, name: 'West Frontage', from: 'N 2910 Rd · looking east', dist: '0.7 mi',
      before: '/images/piedmont-g02-west-before.webp', patch: '/images/piedmont-g02-west-patch.webp' },
    { id: 'east', x: 73.97, y: 50.85, heading: 270, name: 'East Frontage', from: 'N 2920 Rd · looking west', dist: '0.5 mi',
      before: '/images/piedmont-g04-east-before.webp', patch: '/images/piedmont-g04-east-patch.webp' },
  ];
  const [active, setActive] = useState(pins[0].id);
  const activePin = pins.find(p => p.id === active);
  const [split, setSplit] = useState(55);
  const dragging = useRef(false);
  const onMove = useCallback((clientX, rect) => {
    const pct = Math.max(2, Math.min(98, ((clientX - rect.left) / rect.width) * 100));
    setSplit(pct);
  }, []);
  const baRef = useRef(null);
  useEffect(() => {
    const up = () => { dragging.current = false; document.body.style.cursor = ''; };
    const move = (e) => {
      if (!dragging.current || !baRef.current) return;
      const rect = baRef.current.getBoundingClientRect();
      const cx = e.touches ? e.touches[0].clientX : e.clientX;
      onMove(cx, rect);
    };
    window.addEventListener('mousemove', move); window.addEventListener('mouseup', up);
    window.addEventListener('touchmove', move, { passive: true }); window.addEventListener('touchend', up);
    return () => { window.removeEventListener('mousemove', move); window.removeEventListener('mouseup', up); window.removeEventListener('touchmove', move); window.removeEventListener('touchend', up); };
  }, [onMove]);
  useEffect(() => { setSplit(50); }, [active]);

  const onSliderKeyDown = (e) => {
    let next = split;
    if (e.key === 'ArrowLeft' || e.key === 'ArrowDown') next -= 5;
    else if (e.key === 'ArrowRight' || e.key === 'ArrowUp') next += 5;
    else if (e.key === 'Home') next = 2;
    else if (e.key === 'End') next = 98;
    else return;
    e.preventDefault();
    setSplit(Math.max(2, Math.min(98, next)));
  };

  // SVG arc path for the direction wedge (cone). Compass: 0° = N (up), CW.
  const wedgePath = (headingDeg, fovDeg, radius) => {
    const start = ((headingDeg - fovDeg / 2 - 90) * Math.PI) / 180;
    const end   = ((headingDeg + fovDeg / 2 - 90) * Math.PI) / 180;
    const x1 = (radius * Math.cos(start)).toFixed(2);
    const y1 = (radius * Math.sin(start)).toFixed(2);
    const x2 = (radius * Math.cos(end)).toFixed(2);
    const y2 = (radius * Math.sin(end)).toFixed(2);
    const largeArc = fovDeg > 180 ? 1 : 0;
    return `M 0 0 L ${x1} ${y1} A ${radius} ${radius} 0 ${largeArc} 1 ${x2} ${y2} Z`;
  };

  return (
    <section id="viewpoint" className="rd-section">
      <div className="container-x">
        <div className="rd-intro">
          <div>
            <Reveal><div className="eyebrow"><span className="kicker-num">05</span><span className="dot" /> Visual impact</div></Reveal>
            <Reveal delay={1}>
              <h2 className="h2 rd-heading">
                See the campus <span className="civic-emphasis">from the roads around it.</span>
              </h2>
            </Reveal>
          </div>
          <Reveal delay={2}>
            <p className="rd-deck">
              Three mapped public-road views. Choose a road, then drag the photograph to compare today&rsquo;s rural context with the illustrative campus layer.
            </p>
          </Reveal>
        </div>

        <Reveal>
          <div className="rd-explorer">
            <div className="rd-viewbar">
              <div className="rd-viewbar-copy">
                <span className="rd-label">Choose a road view</span>
                <span className="rd-viewbar-note">The map and photograph update together.</span>
              </div>
              <div className="rd-viewtabs" role="group" aria-label="Choose a mapped road viewpoint">
                {pins.map((p, i) => {
                  const isActive = p.id === active;
                  return (
                    <button key={p.id} className={`rd-viewtab${isActive ? ' is-active' : ''}`}
                      onClick={() => setActive(p.id)} aria-pressed={isActive}>
                      <span className="rd-viewtab-number" aria-hidden="true">{i + 1}</span>
                      <span className="rd-viewtab-name">{p.name.replace(' Frontage', '')}</span>
                      <span className="rd-viewtab-dist">{p.dist}</span>
                    </button>
                  );
                })}
              </div>
            </div>

            <div className="rd-layout">
              <article className="rd-compare-pane">
                <header className="rd-compare-header">
                  <div>
                    <div className="rd-label">View {pins.findIndex(p => p.id === active) + 1} · {activePin.name}</div>
                    <div className="rd-location">{activePin.from}</div>
                  </div>
                  <div className="rd-compare-action">
                    <StatusBadge status="illustrative" />
                    <span>Drag to compare</span>
                  </div>
                </header>

                <div ref={baRef} className="ba-wrap rd-comparison" style={{ '--split': `${split}%` }}
                  role="slider" tabIndex="0"
                  aria-label={`Compare existing context and illustrative campus at ${activePin.name}`}
                  aria-valuemin="2" aria-valuemax="98" aria-valuenow={Math.round(split)}
                  aria-valuetext={`${Math.round(split)} percent existing context`}
                  onKeyDown={onSliderKeyDown}
                  onMouseDown={(e) => { dragging.current = true; document.body.style.cursor = 'ew-resize'; onMove(e.clientX, e.currentTarget.getBoundingClientRect()); }}
                  onTouchStart={(e) => { dragging.current = true; onMove(e.touches[0].clientX, e.currentTarget.getBoundingClientRect()); }}>
                  <div className="rd-image-layer">
                    <img src={activePin.before} alt={`${activePin.name} — existing rural context`} loading="lazy" decoding="async" />
                    <div className="ba-label ba-label--existing"><span className="ba-label-long">Existing context</span><span className="ba-label-short">Existing</span></div>
                  </div>
                  <div className="ba-after">
                    <img src={activePin.before} alt={`${activePin.name} — illustrative campus view`} loading="lazy" decoding="async" />
                    <img src={activePin.patch} alt="" aria-hidden="true" loading="lazy" decoding="async" />
                    <div className="ba-label ba-label--campus"><span className="ba-label-long">Campus concept</span><span className="ba-label-short">Campus</span></div>
                  </div>
                  <div className="ba-handle" />
                  <div className="ba-knob" aria-hidden="true">
                    <svg width="16" height="16" viewBox="0 0 16 16" fill="none"><path d="M6 3 L2 8 L6 13 M10 3 L14 8 L10 13" stroke="var(--ink)" strokeWidth="1.6" strokeLinecap="round" strokeLinejoin="round" /></svg>
                  </div>
                </div>

                <div className="rd-stats" aria-label="Viewpoint evidence summary">
                  {[
                    { k: '19', v: 'Plan-traced buildings' },
                    { k: '3', v: 'Mapped road views' },
                    { k: '1:1', v: 'Same source frame' },
                  ].map((s, i) => (
                    <div key={i} className="rd-stat">
                      <div className="rd-stat-value">{s.k}</div>
                      <div className="rd-stat-label">{s.v}</div>
                    </div>
                  ))}
                </div>
              </article>

              <aside className="rd-plan-pane" aria-label="Architect plan and mapped viewpoint">
                <header className="rd-plan-header">
                  <span className="rd-label">Architect plan · July 17</span>
                  <span className="rd-plan-count">{pins.length} mapped views</span>
                </header>
                <div className="rd-plan-image">
                  <img src="/images/piedmont-plan-authority.webp" alt="Architect site plan with the 19-building campus and three mapped road viewpoint markers" loading="lazy" decoding="async" />
                  {pins.map((p, i) => {
                    const isActive = p.id === active;
                    const headingRad = (p.heading * Math.PI) / 180;
                    const needleX = (52.8 * Math.sin(headingRad)).toFixed(2);
                    const needleY = (-52.8 * Math.cos(headingRad)).toFixed(2);
                    return (
                      <button key={p.id} className="rd-map-pin" onClick={() => setActive(p.id)}
                        aria-label={`Viewpoint ${i + 1}: ${p.name}`} aria-pressed={isActive}
                        style={{ left: `${p.x}%`, top: `${p.y}%`, '--pin-scale': isActive ? 1.14 : 1 }}>
                        <svg aria-hidden="true" viewBox="-110 -110 220 220">
                          <defs>
                            <radialGradient id={`wedge-cone-${p.id}`} cx="0" cy="0" r="88" gradientUnits="userSpaceOnUse">
                              <stop offset="0%" stopColor="#ffffff" stopOpacity={isActive ? 0.85 : 0.32} />
                              <stop offset="60%" stopColor="#ffffff" stopOpacity={isActive ? 0.22 : 0.08} />
                              <stop offset="100%" stopColor="#ffffff" stopOpacity="0" />
                            </radialGradient>
                          </defs>
                          <path d={wedgePath(p.heading, isActive ? 72 : 60, 88)} fill={`url(#wedge-cone-${p.id})`} />
                          <line x1="0" y1="0" x2={needleX} y2={needleY} stroke="rgba(8,14,11,.7)" strokeWidth="1.5" strokeLinecap="round" strokeOpacity={isActive ? 0.95 : 0.55} />
                        </svg>
                        <span>{i + 1}</span>
                      </button>
                    );
                  })}
                </div>
                <div className="rd-active-view" aria-live="polite">
                  <span className="rd-active-number" aria-hidden="true">{pins.findIndex(p => p.id === active) + 1}</span>
                  <div>
                    <strong>{activePin.name}</strong>
                    <span>{activePin.from}</span>
                  </div>
                  <div className="rd-active-distance"><strong>{activePin.dist}</strong><span>to campus center</span></div>
                </div>
              </aside>
            </div>

            <div className="rd-proof-note">
              <div>
                <span className="rd-label">What is mapped</span>
                <p>Camera origins, road directions, and positions on the same 19-building plan.</p>
              </div>
              <p className="rd-limit">The rural plates and campus layer are rights-safe visualizations for scale and direction—not survey-grade visibility studies or final architecture.</p>
            </div>
          </div>
        </Reveal>
      </div>

      <style>{`
        #viewpoint.rd-section {
          padding: 116px 0 104px;
          background: var(--paper-warm);
          border-top: 1px solid var(--paper-warm-line);
          overflow-x: clip;
        }
        #viewpoint .rd-intro {
          display: grid;
          grid-template-columns: minmax(0, 1.18fr) minmax(320px, .82fr);
          gap: clamp(48px, 7vw, 104px);
          align-items: end;
          margin-bottom: 40px;
        }
        #viewpoint .rd-heading { max-width: 720px; margin-top: 18px; }
        #viewpoint .rd-deck {
          max-width: 490px;
          color: var(--slate-700);
          font-size: 16px;
          line-height: 1.7;
        }
        #viewpoint .rd-explorer {
          overflow: hidden;
          background: var(--white);
          border: 1px solid var(--paper-warm-line);
          border-radius: var(--r-md);
          box-shadow: var(--shadow-lg);
        }
        #viewpoint .rd-label,
        #viewpoint .rd-plan-count,
        #viewpoint .rd-compare-action,
        #viewpoint .rd-stat-label {
          font-family: var(--font-body);
          font-size: 10px;
          font-weight: 600;
          letter-spacing: .18em;
          text-transform: uppercase;
        }
        #viewpoint .rd-label,
        #viewpoint .rd-stat-label { color: var(--slate-500); }
        #viewpoint .rd-viewbar {
          display: flex;
          align-items: center;
          justify-content: space-between;
          gap: 28px;
          padding: 18px 28px;
          background: color-mix(in srgb, var(--paper-warm) 64%, white);
          border-bottom: 1px solid rgba(20,32,27,.1);
        }
        #viewpoint .rd-viewbar-copy { display: flex; flex-direction: column; gap: 4px; flex: 0 0 auto; }
        #viewpoint .rd-viewbar-note { color: var(--slate-500); font-size: 12px; }
        #viewpoint .rd-viewtabs { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 8px; width: min(100%, 660px); }
        #viewpoint .rd-viewtab {
          min-width: 0;
          min-height: 48px;
          padding: 8px 12px;
          display: grid;
          grid-template-columns: 24px minmax(0, 1fr) auto;
          align-items: center;
          gap: 8px;
          border: 1px solid rgba(20,32,27,.12);
          border-radius: var(--r-xs);
          background: rgba(255,255,255,.74);
          color: var(--slate-700);
          font-family: var(--font-body);
          cursor: pointer;
          transition: background .2s ease, border-color .2s ease, color .2s ease, box-shadow .2s ease;
        }
        #viewpoint .rd-viewtab:hover { border-color: rgba(11,58,109,.32); background: white; }
        #viewpoint .rd-viewtab:focus-visible,
        #viewpoint .rd-map-pin:focus-visible,
        #viewpoint .rd-comparison:focus-visible { outline: 3px solid var(--wheat-400); outline-offset: 3px; }
        #viewpoint .rd-viewtab.is-active {
          background: var(--ink-navy);
          border-color: var(--ink-navy);
          color: var(--white);
          box-shadow: 0 5px 16px rgba(10,26,46,.15);
        }
        #viewpoint .rd-viewtab-number {
          width: 24px; height: 24px;
          display: inline-flex; align-items: center; justify-content: center;
          border-radius: 50%;
          background: rgba(11,58,109,.1);
          color: var(--accent-deep);
          font-size: 11px; font-weight: 700;
        }
        #viewpoint .rd-viewtab.is-active .rd-viewtab-number { background: rgba(255,255,255,.14); color: white; }
        #viewpoint .rd-viewtab-name { overflow: hidden; text-overflow: ellipsis; text-align: left; font-size: 13px; font-weight: 650; white-space: nowrap; }
        #viewpoint .rd-viewtab-dist { font-size: 10px; letter-spacing: .1em; text-transform: uppercase; opacity: .74; white-space: nowrap; }
        #viewpoint .rd-layout {
          display: grid;
          grid-template-columns: minmax(0, 1.38fr) minmax(330px, .72fr);
          gap: 30px;
          align-items: stretch;
          padding: 30px;
        }
        #viewpoint .rd-compare-pane { min-width: 0; }
        #viewpoint .rd-compare-header,
        #viewpoint .rd-plan-header {
          min-height: 48px;
          display: flex;
          justify-content: space-between;
          align-items: flex-start;
          gap: 16px;
          margin-bottom: 14px;
        }
        #viewpoint .rd-location {
          margin-top: 5px;
          color: var(--ink);
          font-family: var(--font-display);
          font-size: 17px;
          font-weight: 650;
        }
        #viewpoint .rd-compare-action { display: flex; align-items: center; gap: 10px; color: var(--accent-deep); white-space: nowrap; }
        #viewpoint .rd-comparison {
          aspect-ratio: 16 / 9;
          cursor: ew-resize;
          touch-action: pan-y;
          background: var(--cream-50);
          border: 1px solid rgba(20,32,27,.14);
          border-radius: var(--r-xs);
        }
        #viewpoint .rd-image-layer { position: absolute; inset: 0; }
        #viewpoint .rd-image-layer img,
        #viewpoint .ba-after img {
          position: absolute; inset: 0;
          width: 100%; height: 100%;
          object-fit: cover; display: block;
        }
        #viewpoint .ba-label {
          position: absolute; top: 16px;
          padding: 6px 12px;
          background: rgba(20,32,27,.76);
          color: var(--cream-50);
          font-family: var(--font-body);
          font-size: 10px;
          font-weight: 600;
          letter-spacing: .18em;
          text-transform: uppercase;
        }
        #viewpoint .ba-label--existing { left: 16px; }
        #viewpoint .ba-label--campus { right: 16px; background: var(--forest-900); }
        #viewpoint .ba-label-short { display: none; }
        #viewpoint .rd-comparison .ba-handle { background: var(--cream-50); box-shadow: 0 0 0 1px rgba(20,32,27,.3); }
        #viewpoint .rd-comparison .ba-knob { background: var(--cream-50); border-radius: 0; }
        #viewpoint .rd-stats {
          display: grid;
          grid-template-columns: repeat(3, minmax(0, 1fr));
          margin-top: 20px;
          border-top: 1px solid rgba(20,32,27,.12);
          border-bottom: 1px solid rgba(20,32,27,.12);
        }
        #viewpoint .rd-stat { min-width: 0; padding: 16px; border-right: 1px solid rgba(20,32,27,.09); }
        #viewpoint .rd-stat:first-child { padding-left: 0; }
        #viewpoint .rd-stat:last-child { border-right: 0; padding-right: 0; }
        #viewpoint .rd-stat-value { color: var(--ink); font-family: var(--font-display); font-size: 25px; font-weight: 650; letter-spacing: -.01em; }
        #viewpoint .rd-stat-label { margin-top: 4px; line-height: 1.4; letter-spacing: .12em; }
        #viewpoint .rd-plan-pane {
          min-width: 0;
          padding: 20px;
          display: flex;
          flex-direction: column;
          background: color-mix(in srgb, var(--paper-warm) 56%, white);
          border: 1px solid rgba(20,32,27,.1);
          border-radius: var(--r-sm);
        }
        #viewpoint .rd-plan-header { min-height: auto; align-items: center; margin-bottom: 14px; }
        #viewpoint .rd-plan-count { color: var(--accent-deep); white-space: nowrap; }
        #viewpoint .rd-plan-image { position: relative; aspect-ratio: 1920 / 1745; overflow: hidden; background: var(--cream-50); }
        #viewpoint .rd-plan-image > img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: contain; display: block; }
        #viewpoint .rd-map-pin {
          --pin-scale: 1;
          position: absolute;
          z-index: 2;
          width: 30px; height: 30px;
          padding: 0;
          transform: translate(-50%,-50%) scale(var(--pin-scale));
          display: flex; align-items: center; justify-content: center;
          border: 2px solid rgba(255,255,255,.84);
          border-radius: 50%;
          background: var(--accent-deep);
          color: #f8f6f0;
          box-shadow: 0 4px 12px rgba(0,0,0,.28);
          font-family: var(--font-body);
          font-size: 12px; font-weight: 700; line-height: 1;
          cursor: pointer;
          touch-action: manipulation;
          transition: transform .18s ease, box-shadow .18s ease;
        }
        #viewpoint .rd-map-pin[aria-pressed="true"] { box-shadow: 0 1px 0 rgba(0,0,0,.35), 0 7px 18px rgba(0,0,0,.36); }
        #viewpoint .rd-map-pin svg { position: absolute; left: 50%; top: 50%; width: 220px; height: 220px; transform: translate(-50%,-50%); overflow: visible; mix-blend-mode: overlay; pointer-events: none; }
        #viewpoint .rd-map-pin > span { position: relative; z-index: 3; transform: translateY(-.5px); }
        #viewpoint .rd-active-view {
          display: grid;
          grid-template-columns: 30px minmax(0, 1fr) auto;
          gap: 10px;
          align-items: center;
          margin-top: auto;
          padding-top: 14px;
          border-top: 1px solid rgba(20,32,27,.12);
        }
        #viewpoint .rd-active-number {
          width: 28px; height: 28px;
          display: inline-flex; align-items: center; justify-content: center;
          border-radius: 50%;
          background: var(--accent-deep); color: white;
          font-size: 11px; font-weight: 700;
        }
        #viewpoint .rd-active-view strong,
        #viewpoint .rd-active-view span { display: block; }
        #viewpoint .rd-active-view > div > strong { color: var(--ink); font-family: var(--font-display); font-size: 14px; }
        #viewpoint .rd-active-view > div > span { margin-top: 3px; color: var(--slate-500); font-size: 11px; line-height: 1.35; }
        #viewpoint .rd-active-distance { text-align: right; }
        #viewpoint .rd-active-distance strong { color: var(--accent-deep) !important; font-size: 12px !important; text-transform: uppercase; letter-spacing: .08em; }
        #viewpoint .rd-active-distance span { font-size: 9px !important; text-transform: uppercase; letter-spacing: .08em; }
        #viewpoint .rd-proof-note {
          display: grid;
          grid-template-columns: minmax(260px, .7fr) minmax(0, 1.3fr);
          gap: 36px;
          align-items: start;
          padding: 22px 30px 24px;
          background: color-mix(in srgb, var(--paper-warm) 42%, white);
          border-top: 1px solid rgba(20,32,27,.1);
        }
        #viewpoint .rd-proof-note p { margin-top: 5px; color: var(--slate-700); font-size: 13px; line-height: 1.55; }
        #viewpoint .rd-proof-note .rd-limit { margin-top: 0; color: var(--slate-500); }

        @media (max-width: 1060px) {
          #viewpoint .rd-layout { grid-template-columns: 1fr; }
          #viewpoint .rd-plan-pane { display: grid; grid-template-columns: minmax(0, 1.35fr) minmax(220px, .65fr); gap: 18px; align-items: center; }
          #viewpoint .rd-plan-header { grid-column: 1 / -1; margin-bottom: 0; }
          #viewpoint .rd-active-view { margin-top: 0; padding-top: 0; border-top: 0; grid-template-columns: 30px 1fr; align-content: center; }
          #viewpoint .rd-active-distance { grid-column: 2; text-align: left; padding-top: 10px; margin-top: 6px; border-top: 1px solid rgba(20,32,27,.1); }
        }
        @media (max-width: 900px) {
          #viewpoint .rd-intro { grid-template-columns: 1fr; gap: 18px; align-items: start; margin-bottom: 32px; }
          #viewpoint .rd-deck { max-width: 640px; }
          #viewpoint .rd-viewbar { align-items: flex-start; flex-direction: column; gap: 14px; }
          #viewpoint .rd-viewtabs { width: 100%; }
        }
        @media (max-width: 720px) {
          #viewpoint.rd-section { padding: 84px 0 72px; }
          #viewpoint .rd-intro { margin-bottom: 28px; }
          #viewpoint .rd-heading { margin-top: 16px; }
          #viewpoint .rd-deck { font-size: 15px; line-height: 1.65; }
          #viewpoint .rd-explorer { border-radius: var(--r-sm); }
          #viewpoint .rd-viewbar { padding: 12px; }
          #viewpoint .rd-viewbar-copy { display: none; }
          #viewpoint .rd-viewtabs { gap: 4px; padding: 4px; border-radius: var(--r-xs); background: rgba(20,32,27,.055); }
          #viewpoint .rd-viewtab { min-height: 48px; grid-template-columns: 22px 1fr; gap: 6px; padding: 8px 6px; border: 0; background: transparent; }
          #viewpoint .rd-viewtab-number { width: 22px; height: 22px; }
          #viewpoint .rd-viewtab-name { font-size: 12px; }
          #viewpoint .rd-viewtab-dist { display: none; }
          #viewpoint .rd-layout { padding: 16px; gap: 24px; }
          #viewpoint .rd-compare-header { min-height: auto; align-items: flex-start; flex-direction: column; gap: 10px; margin-bottom: 12px; }
          #viewpoint .rd-location { font-size: 16px; }
          #viewpoint .rd-compare-action { width: 100%; justify-content: space-between; }
          #viewpoint .rd-comparison { border-radius: 0; }
          #viewpoint .ba-label { top: 10px; padding: 5px 8px; font-size: 8px; letter-spacing: .14em; }
          #viewpoint .ba-label--existing { left: 10px; }
          #viewpoint .ba-label--campus { right: 10px; }
          #viewpoint .ba-label-long { display: none; }
          #viewpoint .ba-label-short { display: inline; }
          #viewpoint .rd-stats { margin-top: 14px; }
          #viewpoint .rd-stat { padding: 12px 9px; }
          #viewpoint .rd-stat:first-child { padding-left: 0; }
          #viewpoint .rd-stat:last-child { padding-right: 0; }
          #viewpoint .rd-stat-value { font-size: 21px; }
          #viewpoint .rd-stat-label { font-size: 8px; letter-spacing: .08em; line-height: 1.35; }
          #viewpoint .rd-plan-pane { display: block; padding: 14px; }
          #viewpoint .rd-plan-header { margin-bottom: 12px; }
          #viewpoint .rd-map-pin { width: 44px; height: 44px; }
          #viewpoint .rd-active-view { margin-top: 12px; padding-top: 12px; border-top: 1px solid rgba(20,32,27,.12); grid-template-columns: 30px minmax(0, 1fr) auto; }
          #viewpoint .rd-active-distance { grid-column: auto; text-align: right; margin: 0; padding: 0; border: 0; }
          #viewpoint .rd-active-distance span { display: none; }
          #viewpoint .rd-proof-note { grid-template-columns: 1fr; gap: 12px; padding: 18px 16px 20px; }
          #viewpoint .rd-proof-note p { font-size: 12.5px; }
        }
        @media (max-width: 380px) {
          #viewpoint .rd-viewtab { grid-template-columns: 1fr; justify-items: center; gap: 3px; }
          #viewpoint .rd-viewtab-number { display: none; }
          #viewpoint .rd-plan-count { display: none; }
        }
      `}</style>
    </section>
  );
}
window.Radar = Radar;
