// Personal — radial mind-map. Center "me / CORE", six branches with sub-leaves.
// Map rotates gently with cursor parallax. Click a branch chip to zoom into its detail.

const { useState: useStateP, useEffect: useEffectP, useRef: useRefP } = React;

const BRANCHES = [
  {
    id: "origins", n: "01", label: "Origins",
    blurb: "Places that shaped me.",
    leaves: [
      { name: "Millburn, NJ", cap: "Hometown · Millburn High School · cross country + track. Where the trading habit started." },
      { name: "Europe",       cap: "First FinTech internship abroad. First time acclimating to a culture not my own." },
      { name: "+",            cap: "Another place — to be added.", placeholder: true },
    ],
  },
  {
    id: "people", n: "02", label: "People",
    blurb: "Formative figures.",
    leaves: [
      { name: "Parents", cap: "They broke the delusion that asking for help was an admission of inferiority. The humility lesson came from them." },
      { name: "Cross country teammates", cap: "The first real taste of camaraderie. Strenuous practice, mutual respect, friendships forged in shared difficulty." },
      { name: "+", cap: "Another figure — to be added.", placeholder: true },
    ],
  },
  {
    id: "reading", n: "03", label: "Reading",
    blurb: "Authors and books I return to.",
    leaves: [
      { name: "Marcus Aurelius", cap: "Meditations. The Stoic spine." },
      { name: "Friedrich Nietzsche", cap: "Beyond Good and Evil · Thus Spoke Zarathustra. Where ‘invent yourself' comes from." },
      { name: "Edwin Lefèvre", cap: "Reminiscences of a Stock Operator. The trader's canon — patience, discipline, accepting outcomes." },
    ],
    bench: ["Robert Greene — Mastery", "Daniel Kahneman — Thinking Fast and Slow", "David Goggins — Can't Hurt Me", "John Cochrane — Asset Pricing"],
  },
  {
    id: "habits", n: "04", label: "Habits",
    blurb: "Small recurring rituals.",
    leaves: [
      { name: "Long-distance running", cap: "First sport where the results of effort were tangible. No shortcuts to physical labor." },
      { name: "Reading biographies",  cap: "Primary-source human experience, mined for anything useful." },
      { name: "Writing",              cap: "Essays, worldview drafts, manuscript pages. Not a hobby — a tool." },
    ],
  },
  {
    id: "curiosities", n: "05", label: "Curiosities",
    blurb: "Current rabbit holes.",
    leaves: [
      { name: "Markets in motion",    cap: "Valuation, market dynamics, the social physics of investing." },
      { name: "Forensic accounting",  cap: "Beneish M-Score, footnote archaeology, earnings-quality detection." },
      { name: "Local-first AI",       cap: "Real models running on my own metal. Jarvis is the artifact." },
    ],
  },
  {
    id: "convictions", n: "06", label: "Convictions",
    blurb: "Beliefs, briefly.",
    leaves: [
      { name: '"The greatest limits are those self-imposed."', cap: "Held without exception. The first lock is always inside." },
      { name: '"You don\'t find yourself. You invent yourself."', cap: "Nietzsche, by way of years of stubborn evidence." },
      { name: "De omnibus dubitandum est", cap: "‘To have conviction, I must first doubt endlessly.' Inscribed on the kill-file." },
    ],
    bench: [
      '"Self-interest is the driver of every human action."',
      '"The only true constant is change."',
      '"Conviction without risk management is just a story."',
    ],
  },
];

window.BRANCHES = BRANCHES;

function Personal({ initialDetail, onNavigate, fromHome }) {
  const [zoomed, setZoomed] = useStateP(initialDetail || null);
  const [hover, setHover] = useStateP(null);
  const [hoverLeaf, setHoverLeaf] = useStateP(null);
  const [cursor, setCursor] = useStateP({ x: 0, y: 0 });
  const [coreScreen, setCoreScreen] = useStateP({ x: "50%", y: "50%" });
  const mapRef = useRefP(null);
  const rootRef = useRefP(null);

  useEffectP(() => { setZoomed(initialDetail || null); }, [initialDetail]);

  // Measure the actual "me" core screen position so the entry animation's
  // mask center and the rays' origin both anchor to it exactly.
  useEffectP(() => {
    if (!fromHome || zoomed) return;
    let raf = 0;
    const measure = () => {
      const el = document.querySelector("[data-personal-core]");
      if (!el) { raf = requestAnimationFrame(measure); return; }
      const r = el.getBoundingClientRect();
      const cx = (r.left + r.right) / 2;
      const cy = (r.top + r.bottom) / 2;
      setCoreScreen({ x: `${cx}px`, y: `${cy}px` });
    };
    raf = requestAnimationFrame(measure);
    return () => cancelAnimationFrame(raf);
  }, [fromHome, zoomed]);

  const open = (id) => { setZoomed(id); onNavigate({ world: "personal", detail: id }); };
  const close = () => { setZoomed(null); onNavigate({ world: "personal" }); };

  // cursor parallax for whole map
  useEffectP(() => {
    if (zoomed) return;
    const el = mapRef.current;
    if (!el) return;
    const onMove = (e) => {
      const r = el.getBoundingClientRect();
      const x = ((e.clientX - r.left) / r.width  - 0.5) * 2;
      const y = ((e.clientY - r.top)  / r.height - 0.5) * 2;
      setCursor({ x, y });
    };
    el.addEventListener("mousemove", onMove);
    return () => el.removeEventListener("mousemove", onMove);
  }, [zoomed]);

  // build positions
  const CX = 600, CY = 380, R1 = 220, R2 = 360;
  const branches = BRANCHES.map((b, i) => {
    const angle = (-Math.PI / 2) + (i / BRANCHES.length) * Math.PI * 2;
    return {
      ...b,
      angle,
      x: CX + Math.cos(angle) * R1,
      y: CY + Math.sin(angle) * R1,
      leaves: b.leaves.map((leaf, j) => {
        const aSpread = 0.45;
        const a = angle + ((b.leaves.length === 1 ? 0 : (j / (b.leaves.length - 1)) - 0.5)) * aSpread;
        return { ...leaf, x: CX + Math.cos(a) * R2, y: CY + Math.sin(a) * R2, a };
      }),
    };
  });

  const zoomedBranch = zoomed ? branches.find(b => b.id === zoomed) : null;

  return (
    <div ref={rootRef} className={`world-enter ${fromHome ? "entry-fresh" : ""}`} data-world="personal" style={{
      ...pmStyles.root,
      "--mask-cx": coreScreen.x,
      "--mask-cy": coreScreen.y,
    }}>
      {fromHome && (
        <div data-anim="rays-container" style={{
          position: "fixed",
          left: coreScreen.x,
          top: coreScreen.y,
          width: 0, height: 0,
          pointerEvents: "none",
          zIndex: 95,
        }}>
          {/* Spark dot at origin */}
          <div data-anim="spark-dot" />
          {/* Six rays radiating outward */}
          {Array.from({ length: 6 }).map((_, i) => (
            <div key={i} data-anim="ray-css" style={{
              "--ray-i": i,
              "--ray-rot": `${-90 + (i / 6) * 360}deg`,
            }} />
          ))}
        </div>
      )}
      <Backdrop />
      <ConstellationDots />

      {/* header */}
      <header style={pmStyles.header}>
        <div>
          <div className="mono" style={{ color: "var(--phosphor)", fontSize: 11, letterSpacing: ".22em" }}>
            // WORLD 04 — PERSONAL
          </div>
          <h1 style={pmStyles.h1}>The mind-map</h1>
          <p style={pmStyles.lede}>
            A radial constellation. Center is <em>me</em>. Six branches reach out — origins, people,
            reading, habits, curiosities, convictions. Hover the leaves; click a branch to zoom.
          </p>
        </div>
        <div style={pmStyles.legend}>
          <PMField label="BRANCHES" value="6" />
          <PMField label="LEAVES"   value={String(branches.reduce((a, b) => a + b.leaves.length, 0))} />
          <PMField label="CORE"     value="● me" valueStyle={{ color: "var(--amber)" }} />
          <PMField label="MODE"     value={zoomed ? `ZOOMED · ${zoomedBranch.label.toUpperCase()}` : "MAP"} />
        </div>
      </header>

      {/* main */}
      <div ref={mapRef} style={pmStyles.stage}>
        {!zoomed ? (
          <svg viewBox="0 0 1200 760" width="100%" height="100%" style={{ display: "block", overflow: "visible" }}>
            <defs>
              <radialGradient id="centerGlow" cx="50%" cy="50%" r="50%">
                <stop offset="0%" stopColor="oklch(80% 0.14 70 / 0.7)" />
                <stop offset="60%" stopColor="oklch(60% 0.10 70 / 0.18)" />
                <stop offset="100%" stopColor="oklch(40% 0.04 70 / 0)" />
              </radialGradient>
              <radialGradient id="branchGlow" cx="50%" cy="50%" r="50%">
                <stop offset="0%" stopColor="oklch(75% 0.12 250 / 0.5)" />
                <stop offset="100%" stopColor="oklch(50% 0.06 250 / 0)" />
              </radialGradient>
            </defs>

            <g style={{ transform: `translate(${cursor.x * -12}px, ${cursor.y * -12}px) rotate(${cursor.x * 1.2}deg)`, transformOrigin: "600px 380px", transition: "transform 220ms ease-out" }}>
              {/* orbital rings */}
              <circle cx={CX} cy={CY} r={R1} fill="none" stroke="var(--line)" strokeDasharray="2 6" strokeOpacity="0.5"/>
              <circle cx={CX} cy={CY} r={R2} fill="none" stroke="var(--line)" strokeDasharray="2 6" strokeOpacity="0.35"/>
              <circle cx={CX} cy={CY} r={R1 - 70} fill="none" stroke="var(--line)" strokeDasharray="2 6" strokeOpacity="0.25"/>

              {/* branch threads + leaves */}
              {branches.map((b) => {
                const isHov = hover === b.id;
                const isDim = hover && !isHov;
                return (
                  <g key={b.id}>
                    <line x1={CX} y1={CY} x2={b.x} y2={b.y}
                      stroke={isHov ? "var(--amber)" : "var(--line-2)"}
                      strokeWidth={isHov ? 1.4 : 1}
                      strokeOpacity={isDim ? 0.22 : 0.85}/>

                    {b.leaves.map((l, j) => (
                      <g key={j}>
                        <line x1={b.x} y1={b.y} x2={l.x} y2={l.y}
                          stroke="var(--line)" strokeWidth="0.8"
                          strokeOpacity={isDim ? 0.1 : 0.6}
                          strokeDasharray="3 4"/>
                        <g style={{ cursor: "default" }}
                           onMouseEnter={() => setHoverLeaf({ branch: b.id, idx: j })}
                           onMouseLeave={() => setHoverLeaf(null)}>
                          <circle cx={l.x} cy={l.y} r={l.placeholder ? 5 : 7}
                            fill={l.placeholder ? "oklch(15% 0.012 240)" : "oklch(20% 0.02 245)"}
                            stroke={l.placeholder ? "var(--dim)" : "var(--line-2)"}
                            strokeWidth="1" strokeDasharray={l.placeholder ? "2 2" : null}
                            opacity={isDim ? 0.5 : 1}/>
                          <text x={l.x} y={l.y + 22} textAnchor="middle"
                            fontFamily="var(--mono)" fontSize="10"
                            fill={l.placeholder ? "var(--dim)" : "var(--muted)"}
                            opacity={isDim ? 0.35 : 1}
                            letterSpacing="1">{truncate(l.name, 22)}</text>
                        </g>
                      </g>
                    ))}
                  </g>
                );
              })}

              {/* center node */}
              <circle cx={CX} cy={CY} r="100" fill="url(#centerGlow)"/>
              <circle data-personal-core cx={CX} cy={CY} r="52" fill="oklch(13% 0.014 65)" stroke="oklch(80% 0.14 70)" strokeWidth="1.5"/>
              <circle cx={CX} cy={CY} r="52" fill="none" stroke="oklch(80% 0.14 70 / 0.3)" strokeWidth="8"/>
              <text x={CX} y={CY - 6} textAnchor="middle"
                fontFamily="var(--serif)" fontStyle="italic" fontSize="26"
                fill="var(--fg)">me</text>
              <text x={CX} y={CY + 16} textAnchor="middle"
                fontFamily="var(--mono)" fontSize="9" fill="var(--amber)" letterSpacing="2">CORE</text>

              {/* branch chips */}
              {branches.map((b) => {
                const isHov = hover === b.id;
                const isDim = hover && !isHov;
                return (
                  <g key={`chip-${b.id}`} style={{ cursor: "pointer" }}
                     onMouseEnter={() => setHover(b.id)}
                     onMouseLeave={() => setHover(null)}
                     onClick={() => open(b.id)}>
                    <circle cx={b.x} cy={b.y} r={isHov ? 38 : 32} fill="url(#branchGlow)"
                            opacity={isHov ? 1 : 0.5}/>
                    <circle cx={b.x} cy={b.y} r="22"
                            fill="oklch(15% 0.018 65)"
                            stroke={isHov ? "oklch(80% 0.14 70)" : "oklch(60% 0.08 240)"}
                            strokeWidth={isHov ? 1.8 : 1.2}
                            opacity={isDim ? 0.45 : 1}/>
                    <text x={b.x} y={b.y - 36} textAnchor="middle"
                          fontFamily="var(--serif)" fontStyle="italic" fontSize="22"
                          fill={isHov ? "var(--amber)" : "var(--fg)"}
                          opacity={isDim ? 0.4 : 1}>
                      {b.label}
                    </text>
                    <text x={b.x} y={b.y + 4} textAnchor="middle" fontFamily="var(--mono)" fontSize="11"
                          fill={isHov ? "var(--amber)" : "var(--muted)"} letterSpacing="2"
                          opacity={isDim ? 0.45 : 1}>{b.n}</text>
                  </g>
                );
              })}
            </g>
          </svg>
        ) : (
          <BranchDetail branch={zoomedBranch} onClose={close} />
        )}

        {/* hover caption strip (over the map) */}
        {!zoomed && hoverLeaf && (
          <div style={pmStyles.captionStrip}>
            {(() => {
              const b = branches.find(x => x.id === hoverLeaf.branch);
              const l = b.leaves[hoverLeaf.idx];
              return (
                <>
                  <div className="mono" style={{ color: "var(--amber)", fontSize: 10, letterSpacing: ".22em" }}>
                    {b.n} / {b.label.toUpperCase()} · {l.placeholder ? "PLACEHOLDER" : "LEAF"}
                  </div>
                  <div style={{ fontFamily: "var(--serif)", fontStyle: "italic", fontSize: 22, marginTop: 4, color: "var(--fg)" }}>
                    {l.name}
                  </div>
                  <div style={{ marginTop: 6, fontFamily: "var(--serif)", fontSize: 15, color: "var(--fg-2)", lineHeight: 1.5 }}>
                    {l.cap}
                  </div>
                </>
              );
            })()}
          </div>
        )}

        {!zoomed && (
          <div className="mono" style={pmStyles.footnote}>
            HOVER LEAVES FOR CAPTIONS · CLICK A BRANCH TO ZOOM IN
          </div>
        )}
      </div>
    </div>
  );
}

// ---- atoms ---------------------------------------------------------------

function PMField({ label, value, valueStyle }) {
  return (
    <>
      <div className="mono" style={{ fontSize: 9, letterSpacing: ".22em", color: "var(--muted)" }}>{label}</div>
      <div className="mono" style={{ fontSize: 11, letterSpacing: ".06em", color: "var(--fg)", ...(valueStyle || {}) }}>{value}</div>
    </>
  );
}

function truncate(s, n) {
  if (!s) return "";
  return s.length > n ? s.slice(0, n - 1) + "…" : s;
}

// ---- branch detail (zoomed-in view) --------------------------------------

function BranchDetail({ branch, onClose }) {
  return (
    <div style={bdStyles.wrap}>
      <button onClick={onClose} className="mono" style={bdStyles.back}>
        ← BACK TO MAP
      </button>

      <div style={bdStyles.layout}>
        {/* left: focused radial visual */}
        <div style={bdStyles.visual}>
          <svg viewBox="0 0 600 600" width="100%" height="100%" style={{ display: "block" }}>
            <defs>
              <radialGradient id={`bd-glow-${branch.id}`} cx="50%" cy="50%" r="50%">
                <stop offset="0%" stopColor="oklch(80% 0.14 70 / 0.55)" />
                <stop offset="100%" stopColor="oklch(50% 0.06 70 / 0)" />
              </radialGradient>
            </defs>
            <circle cx="300" cy="300" r="240" fill="none" stroke="var(--line)" strokeDasharray="2 6" strokeOpacity="0.4"/>
            <circle cx="300" cy="300" r="160" fill="none" stroke="var(--line)" strokeDasharray="2 6" strokeOpacity="0.3"/>

            {branch.leaves.map((l, j) => {
              const angle = -Math.PI/2 + (j / branch.leaves.length) * Math.PI * 2;
              const x = 300 + Math.cos(angle) * 200;
              const y = 300 + Math.sin(angle) * 200;
              return (
                <g key={j}>
                  <line x1="300" y1="300" x2={x} y2={y} stroke="var(--line-2)" strokeWidth="1" strokeDasharray="3 4"/>
                  <circle cx={x} cy={y} r="10" fill="oklch(18% 0.02 245)" stroke={l.placeholder ? "var(--dim)" : "var(--amber)"} strokeWidth="1.5" strokeDasharray={l.placeholder ? "2 2" : null}/>
                  <text x={x} y={y + 28} textAnchor="middle" fontFamily="var(--mono)" fontSize="11" letterSpacing="1" fill={l.placeholder ? "var(--dim)" : "var(--fg-2)"}>{truncate(l.name, 22)}</text>
                </g>
              );
            })}

            <circle cx="300" cy="300" r="100" fill={`url(#bd-glow-${branch.id})`}/>
            <circle cx="300" cy="300" r="50" fill="oklch(13% 0.014 65)" stroke="oklch(80% 0.14 70)" strokeWidth="2"/>
            <text x="300" y="293" textAnchor="middle" fontFamily="var(--mono)" fontSize="11" letterSpacing="2" fill="var(--amber)">{branch.n}</text>
            <text x="300" y="318" textAnchor="middle" fontFamily="var(--serif)" fontStyle="italic" fontSize="22" fill="var(--fg)">{branch.label}</text>
          </svg>
        </div>

        {/* right: leaf list */}
        <aside style={bdStyles.list}>
          <div className="mono" style={{ color: "var(--amber)", fontSize: 11, letterSpacing: ".22em" }}>
            BRANCH {branch.n} · {branch.label.toUpperCase()}
          </div>
          <p style={bdStyles.blurb}>{branch.blurb}</p>

          <hr style={{ border: 0, borderTop: "1px dashed var(--line-2)", margin: "20px 0" }} />

          {branch.leaves.map((l, j) => (
            <article key={j} style={{ ...bdStyles.leafCard, opacity: l.placeholder ? 0.65 : 1 }}>
              <div style={bdStyles.leafHead}>
                <span className="mono" style={{ fontSize: 10, color: l.placeholder ? "var(--dim)" : "var(--amber)", letterSpacing: ".22em" }}>
                  LEAF {String(j + 1).padStart(2, "0")} {l.placeholder ? "· PLACEHOLDER" : ""}
                </span>
              </div>
              <h3 style={bdStyles.leafTitle}>{l.name}</h3>
              <p style={bdStyles.leafCap}>{l.cap}</p>
            </article>
          ))}

          {branch.bench && (
            <>
              <hr style={{ border: 0, borderTop: "1px dashed var(--line-2)", margin: "24px 0 14px" }} />
              <div className="mono" style={{ fontSize: 10, letterSpacing: ".22em", color: "var(--muted)", marginBottom: 8 }}>BENCH · ROTATING</div>
              <ul style={bdStyles.bench}>
                {branch.bench.map((b, i) => (
                  <li key={i} style={bdStyles.benchItem}>{b}</li>
                ))}
              </ul>
            </>
          )}
        </aside>
      </div>
    </div>
  );
}

// ---- backdrop + drift particles ------------------------------------------

function Backdrop() {
  return <div style={pmStyles.starfield} />;
}

function ConstellationDots() {
  // a fixed but pseudo-random sprinkle of faint dots, plus a few brighter ones
  const dots = React.useMemo(() => {
    const arr = [];
    let seed = 7;
    const rand = () => { seed = (seed * 9301 + 49297) % 233280; return seed / 233280; };
    for (let i = 0; i < 90; i++) {
      arr.push({ x: rand() * 100, y: rand() * 100, r: rand() * 1.3 + 0.4, op: rand() * 0.45 + 0.1 });
    }
    return arr;
  }, []);
  return (
    <svg style={pmStyles.constellation} viewBox="0 0 100 100" preserveAspectRatio="none">
      {dots.map((d, i) => (
        <circle key={i} cx={d.x} cy={d.y} r={d.r * 0.06} fill="oklch(90% 0.014 80)" opacity={d.op}/>
      ))}
    </svg>
  );
}

// ---- styles --------------------------------------------------------------

const pmStyles = {
  root: { position: "absolute", inset: 0, overflow: "hidden" },
  starfield: {
    position: "absolute", inset: 0, zIndex: -2,
    background:
      "radial-gradient(ellipse at 50% 40%, oklch(18% 0.02 260 / 0.7) 0%, transparent 60%)," +
      "radial-gradient(ellipse at 10% 10%, oklch(22% 0.03 250 / 0.55) 0%, transparent 35%)," +
      "linear-gradient(180deg, oklch(12% 0.015 260), oklch(10% 0.012 250))",
  },
  constellation: {
    position: "absolute", inset: 0, zIndex: -1, pointerEvents: "none",
  },
  header: {
    padding: "44px 56px 12px",
    display: "grid", gridTemplateColumns: "1fr auto", gap: 40, alignItems: "end",
  },
  h1: { fontFamily: "var(--serif)", fontSize: "clamp(36px, 4.0vw, 50px)", fontStyle: "italic", fontWeight: 400, margin: "16px 0 10px", letterSpacing: "-0.01em", lineHeight: 1.05 },
  lede: { margin: 0, fontFamily: "var(--serif)", fontSize: "clamp(15px, 1.1vw, 17px)", lineHeight: 1.5, color: "var(--fg-2)", maxWidth: "62ch" },
  legend: {
    display: "grid", gridTemplateColumns: "auto 1fr", gap: "4px 18px",
    padding: "14px 18px", border: "1px solid var(--line)", background: "oklch(13% 0.014 60 / 0.7)", minWidth: 320,
  },
  stage: {
    position: "relative",
    minHeight: 620,
    height: "max(620px, calc(100vh - 240px))",
    padding: "0 56px",
  },
  captionStrip: {
    position: "absolute",
    left: 80, bottom: 28,
    maxWidth: 460,
    padding: "12px 16px",
    background: "oklch(12% 0.012 60 / 0.85)",
    border: "1px solid var(--line)",
    backdropFilter: "blur(8px)",
    WebkitBackdropFilter: "blur(8px)",
    pointerEvents: "none",
  },
  footnote: {
    position: "absolute",
    right: 80, bottom: 32,
    fontSize: 10, letterSpacing: ".22em", color: "var(--muted)",
    pointerEvents: "none",
  },
};

const bdStyles = {
  wrap: { position: "relative", padding: "8px 0 calc(var(--terminal-h) + 24px)", height: "100vh", overflowY: "auto" },
  back: {
    background: "transparent", border: "1px solid var(--line-2)", color: "var(--muted)",
    padding: "8px 14px", fontSize: 11, letterSpacing: ".22em", cursor: "pointer", marginBottom: 18,
  },
  layout: {
    display: "grid",
    gridTemplateColumns: "minmax(0, 1fr) minmax(0, 1.2fr)",
    gap: 36,
    alignItems: "start",
  },
  visual: { position: "sticky", top: 0 },
  list: { display: "flex", flexDirection: "column", gap: 14, paddingTop: 4 },
  blurb: { margin: "10px 0 0", fontFamily: "var(--serif)", fontSize: 26, fontStyle: "italic", lineHeight: 1.3, color: "var(--fg)" },
  leafCard: {
    padding: "14px 16px",
    border: "1px solid var(--line)",
    background: "oklch(15% 0.018 250 / 0.55)",
  },
  leafHead: { display: "flex", justifyContent: "space-between", alignItems: "center" },
  leafTitle: {
    margin: "6px 0 8px",
    fontFamily: "var(--serif)",
    fontStyle: "italic",
    fontSize: 24,
    fontWeight: 400,
    color: "var(--fg)",
    lineHeight: 1.2,
  },
  leafCap: { margin: 0, fontFamily: "var(--serif)", fontSize: 15.5, lineHeight: 1.55, color: "var(--fg-2)" },
  bench: { listStyle: "none", padding: 0, margin: 0, display: "grid", gap: 6 },
  benchItem: {
    fontFamily: "var(--mono)",
    fontSize: 12,
    color: "var(--muted)",
    paddingLeft: 14,
    position: "relative",
  },
};

window.Personal = Personal;
