// plant.jsx — Interactive isometric 3D infographic of a gold processing plant.
// Composes equipment groups from plant-equipment.jsx, adds surroundings
// (distant hills, tailings dam, access road, perimeter fence), and wraps
// everything in an interactive explorer with four discipline toggles.

const { useState: useState_pl, useMemo: useMemo_pl } = React;

// ── Discipline data ────────────────────────────────────────────────────────
const DISCIPLINES = [
{
  id: 'electrical',
  label: 'Electrical & Control',
  tag: 'MV · LV · I&C',
  blurb: 'Medium-voltage reticulation, protection coordination, MCCs, drive packages and SCADA integration — for greenfield builds and live brownfield upgrades.',
  capabilities: [
  'Medium-voltage reticulation (11 / 22 / 33 kV)',
  'Protection coordination & arc-flash studies',
  'Motor control centres & VSD packages',
  'Cable routing, racking & containment',
  'Substation & transformer design',
  'SCADA, PLC & instrumentation',
  'Power-quality & harmonic studies',
  'Earthing & lightning protection']

},
{
  id: 'bulk',
  label: 'Bulk Material Handling',
  tag: 'Conveyors · Crushing · Screening',
  blurb: 'Materials handling from ROM tip through to product stockpile. Conveyor design, transfer chute engineering, crushing & screening circuits and stockpile reclaim.',
  capabilities: [
  'Conveyor design (CEMA / DIN 22101)',
  'Transfer chute engineering (DEM analysis)',
  'Crushing — primary, secondary, tertiary',
  'Screening & classification',
  'Feeders, hoppers & surge bins',
  'Stockpile geometry & reclaim systems',
  'Stackers & boom conveyors',
  'Dust management & enclosure']

},
{
  id: 'civils',
  label: 'Civils & Structural',
  tag: 'Foundations · Steel · Concrete',
  blurb: 'Earthworks through to the steel and concrete that carries the plant. Heavy industrial structures designed to category-4 standards.',
  capabilities: [
  'Earthworks, bulk & detail',
  'Reinforced-concrete foundations',
  'Heavy industrial steel structures',
  'Mill, crusher & tank foundations',
  'Conveyor gantries & support trestles',
  'Buildings, control rooms & substations',
  'Stormwater & containment',
  'Geotechnical interface design']

},
{
  id: 'mechanical',
  label: 'Mechanical',
  tag: 'Rotating · Static · Process',
  blurb: 'Rotating and static equipment for mineral processing — mill packages, pump systems, leach & adsorption tanks, thickening and the piping that ties it together.',
  capabilities: [
  'Mill packages (SAG, ball, regrind)',
  'Slurry & process pump systems',
  'Leach & CIL/CIP adsorption circuits',
  'Thickeners & clarifiers',
  'Cyclone clusters & classification',
  'Elution & electrowinning circuits',
  'Static equipment — tanks, vessels, hoppers',
  'Piping, valves, FEA & CFD']

}];


// ── Surroundings ──────────────────────────────────────────────────────────
// Distant mountain ranges — drawn in SVG coordinates (not iso-projected).
// Two ranges with different shade for depth perception.
function SurroundingHills() {
  return (
    <g>
      {/* Sky atmospheric haze band */}
      <rect x="-700" y="-540" width="3700" height="200" fill="url(#plantHaze)" opacity="0.5" />
      {/* Far range — darker, almost silhouette */}
      <path
        d="M -700 -260 L -400 -380 L -100 -340 L 200 -420 L 500 -370 L 800 -460 L 1100 -390 L 1450 -480 L 1750 -400 L 2100 -460 L 2400 -390 L 2700 -440 L 3000 -380 L 3000 -260 Z"
        fill="#0e131a" stroke="none" opacity="0.85" />
      
      {/* Near range */}
      <path
        d="M -700 -200 L -400 -300 L -100 -260 L 200 -330 L 400 -280 L 700 -350 L 1000 -290 L 1300 -370 L 1600 -300 L 1900 -340 L 2200 -290 L 2500 -320 L 2800 -270 L 3000 -300 L 3000 -200 Z"
        fill="#161b22" stroke="none" opacity="0.75" />
      
      {/* Ridgeline accents */}
      <path
        d="M 100 -290 L 250 -350 L 350 -310 M 1200 -340 L 1320 -380 L 1400 -340 M 2050 -300 L 2180 -340 L 2300 -300"
        stroke="#1f2630" strokeWidth="0.6" fill="none" opacity="0.6" />
      
    </g>);

}

// Distant tailings storage facility — a long embankment dam silhouette
// drawn in iso world space at high y, beyond the plant.
function SurroundingTSF() {
  // Embankment wall as a long box at very high y, low z.
  const x0 = 1800,y0 = 480,w = 1100,d = 80,h = 36;
  return (
    <g opacity="0.6">
      <IsoBox x={x0} y={y0} z={0} w={w} d={d} h={h}
      top="#1a2028" right="#11161d" front="#0a0d12" edge="#2a313b" edgeWidth={0.5} />
      {/* Suggestion of impounded slurry behind the wall (back side) */}
      {(() => {
        const a = iso(x0, y0, h),b = iso(x0 + w, y0, h);
        const c = iso(x0 + w, y0 - 200, h),d2 = iso(x0, y0 - 200, h);
        return <polygon points={`${a.X},${a.Y} ${b.X},${b.Y} ${c.X},${c.Y} ${d2.X},${d2.Y}`}
        fill="#1c2128" stroke="#2a313b" strokeWidth="0.4" opacity="0.5" />;
      })()}
      {/* Two haul-truck dots on top of dam (for scale) */}
      {[[x0 + 300, y0 + 30], [x0 + 700, y0 + 30]].map(([x, y], i) => {
        const a = iso(x, y, h);
        return <rect key={i} x={a.X - 3} y={a.Y - 3} width={6} height={3} fill="#2a313b" />;
      })}
      {(() => {const lp = iso(x0 + w / 2, y0 + d + 20, h + 4);return (
          <text x={lp.X} y={lp.Y} textAnchor="middle" fontSize="8" fontFamily="'Source Sans 3'" fill="#3a4250" letterSpacing="0.08em">TAILINGS STORAGE FACILITY</text>);
      })()}
    </g>);

}

// Distant mine pit hint — small concentric ellipses on the upper-left,
// rendered in screen-space.
function SurroundingMinePit() {
  return (
    <g opacity="0.7">
      <ellipse cx="-300" cy="-130" rx="200" ry="40" fill="#0a0d12" stroke="#1a2028" strokeWidth="0.7" />
      <ellipse cx="-300" cy="-130" rx="160" ry="32" fill="none" stroke="#1f2630" strokeWidth="0.5" />
      <ellipse cx="-300" cy="-130" rx="120" ry="24" fill="none" stroke="#1f2630" strokeWidth="0.5" />
      <ellipse cx="-300" cy="-130" rx="80" ry="16" fill="none" stroke="#1f2630" strokeWidth="0.5" />
      {/* Switchback haul road */}
      <path d="M -480 -150 Q -400 -190 -250 -160 Q -150 -130 -100 -90" stroke="#2a313b" strokeWidth="1" fill="none" opacity="0.6" strokeDasharray="3 3" />
      <text x="-300" y="-180" textAnchor="middle" fontSize="9" fontFamily="'Source Sans 3'" fill="#3a4250" letterSpacing="0.08em">MINE PIT</text>
    </g>);

}

// Access road — flat strip on ground plane connecting plant to off-screen.
function SurroundingRoad() {
  // World-space strip following y at ground level
  const a = iso(-200, 220, 0),b = iso(-50, 230, 0),c = iso(-50, 270, 0),d = iso(-200, 260, 0);
  const a2 = iso(180, 230, 0),b2 = iso(560, 240, 0),c2 = iso(560, 280, 0),d2 = iso(180, 270, 0);
  return (
    <g>
      <polygon points={`${a.X},${a.Y} ${b.X},${b.Y} ${c.X},${c.Y} ${d.X},${d.Y}`}
      fill="#161b22" stroke="#2a313b" strokeWidth="0.4" opacity="0.6" />
      <polygon points={`${a2.X},${a2.Y} ${b2.X},${b2.Y} ${c2.X},${c2.Y} ${d2.X},${d2.Y}`}
      fill="#161b22" stroke="#2a313b" strokeWidth="0.4" opacity="0.6" />
      {/* Centre dashed line */}
      {[
      [[-180, 245], [-65, 250]],
      [[195, 250], [545, 260]]].
      map(([a, b], i) => {
        const pa = iso(a[0], a[1], 0),pb = iso(b[0], b[1], 0);
        return <line key={i} x1={pa.X} y1={pa.Y} x2={pb.X} y2={pb.Y} stroke="#3a4250" strokeWidth="0.4" strokeDasharray="8 6" opacity="0.5" />;
      })}
    </g>);

}

// Perimeter fence — thin lines around the plant boundary.
function SurroundingFence() {
  // Simple rectangular fence around main plant footprint.
  // Drawn as low height (8 units) all the way around.
  const x1 = -240,x2 = 2960,y1 = -100,y2 = 410;
  const corners = [[x1, y1], [x2, y1], [x2, y2], [x1, y2]];
  const lines = [];
  // Top rail
  corners.forEach((p, i) => {
    const np = corners[(i + 1) % 4];
    const a = iso(p[0], p[1], 12),b = iso(np[0], np[1], 12);
    lines.push(<line key={`top${i}`} x1={a.X} y1={a.Y} x2={b.X} y2={b.Y} stroke="#2a313b" strokeWidth="0.4" opacity="0.7" />);
  });
  // Posts every 80 along each edge
  for (let xx = x1; xx <= x2; xx += 80) {
    const a = iso(xx, y1, 0),b = iso(xx, y1, 12);
    lines.push(<line key={`p1-${xx}`} x1={a.X} y1={a.Y} x2={b.X} y2={b.Y} stroke="#2a313b" strokeWidth="0.4" opacity="0.6" />);
    const c = iso(xx, y2, 0),d = iso(xx, y2, 12);
    lines.push(<line key={`p2-${xx}`} x1={c.X} y1={c.Y} x2={d.X} y2={d.Y} stroke="#2a313b" strokeWidth="0.4" opacity="0.6" />);
  }
  for (let yy = y1; yy <= y2; yy += 80) {
    const a = iso(x1, yy, 0),b = iso(x1, yy, 12);
    lines.push(<line key={`p3-${yy}`} x1={a.X} y1={a.Y} x2={b.X} y2={b.Y} stroke="#2a313b" strokeWidth="0.4" opacity="0.6" />);
    const c = iso(x2, yy, 0),d = iso(x2, yy, 12);
    lines.push(<line key={`p4-${yy}`} x1={c.X} y1={c.Y} x2={d.X} y2={d.Y} stroke="#2a313b" strokeWidth="0.4" opacity="0.6" />);
  }
  // Gate opening on the left (where the road comes in)
  // Just skip a post — visually the road already shows the entry point.
  return <g>{lines}</g>;
}

// ── Master plant scene ─────────────────────────────────────────────────────
function PlantScene({ active }) {
  const styleFor = (discs) => {
    if (!active) return { opacity: 1, filter: 'none' };
    const on = discs.split(' ').includes(active);
    return {
      opacity: on ? 1 : 0.16,
      filter: on ? 'url(#plantGlow)' : 'none',
      transition: 'opacity .55s, filter .55s'
    };
  };
  return (
    <svg viewBox="-820 -350 3580 2520" preserveAspectRatio="xMidYMid meet"
    width="100%" height="100%"
    style={{ display: 'block' }}>
      <defs>
        <filter id="plantGlow" x="-30%" y="-30%" width="160%" height="160%">
          <feGaussianBlur stdDeviation="2.5" result="b1" />
          <feFlood floodColor="#fbbf24" floodOpacity="0.95" result="c1" />
          <feComposite in="c1" in2="b1" operator="in" result="g1" />
          <feGaussianBlur in="g1" stdDeviation="5" result="g2" />
          <feMerge>
            <feMergeNode in="g2" />
            <feMergeNode in="g1" />
            <feMergeNode in="SourceGraphic" />
          </feMerge>
        </filter>
        <linearGradient id="plantSky" x1="0" y1="0" x2="0" y2="1">
          <stop offset="0%" stopColor="#0e131a" />
          <stop offset="50%" stopColor="#0a0d12" />
          <stop offset="100%" stopColor="#070a0e" />
        </linearGradient>
        <linearGradient id="plantHaze" x1="0" y1="0" x2="0" y2="1">
          <stop offset="0%" stopColor="#1a2028" stopOpacity="0.6" />
          <stop offset="100%" stopColor="#0a0d12" stopOpacity="0" />
        </linearGradient>
      </defs>

      <rect x="-820" y="-540" width="3580" height="3450" fill="url(#plantSky)" />

      {/* Distant atmosphere & landscape — drawn first, behind everything */}
      <SurroundingHills />

      {/* Subtle floor grid */}
      <g opacity="0.18">
        {Array.from({ length: 25 }).map((_, i) => {
          const wx = i * 130 - 100;
          const a = iso(wx, -100, 0),b = iso(wx, 410, 0);
          return <line key={`gx${i}`} x1={a.X} y1={a.Y} x2={b.X} y2={b.Y} stroke="#1a1f28" strokeWidth="0.4" />;
        })}
        {Array.from({ length: 6 }).map((_, i) => {
          const wy = i * 100 - 100;
          const a = iso(-200, wy, 0),b = iso(2950, wy, 0);
          return <line key={`gy${i}`} x1={a.X} y1={a.Y} x2={b.X} y2={b.Y} stroke="#1a1f28" strokeWidth="0.4" />;
        })}
      </g>

      {/* Access road from outside the plant */}
      <SurroundingRoad />
      <SurroundingFence />

      {/* Underground cutaway — drawn FIRST so surface buildings (yard, workshop,
          admin, etc.) sit on top of it. The cavity's back wall extends across
          the full plant width in screen space; rendering it first prevents it
          from masking the back-row buildings. */}
      <Equip_Underground3D styleFor={styleFor} />

      {/* Back-row buildings (high y, drawn before front equipment) */}
      <Equip_EskomYard styleFor={styleFor} />
      <Equip_Workshop styleFor={styleFor} />
      <Equip_AdminOffice styleFor={styleFor} />
      <Equip_Substation styleFor={styleFor} />
      <Equip_SwitchRoom styleFor={styleFor} />
      <Equip_ControlRoom styleFor={styleFor} />
      <Equip_Lab styleFor={styleFor} />
      <Equip_LeachMCC styleFor={styleFor} />
      <Equip_ReagentStorage styleFor={styleFor} />
      <Equip_AirCompressor styleFor={styleFor} />
      <Equip_WaterTanks styleFor={styleFor} />
      <Equip_LimeSilo styleFor={styleFor} />
      <Equip_CarbonRegen styleFor={styleFor} />

      {/* Process chain, left → right (front of plant) */}
      <Equip_ROM styleFor={styleFor} />
      <Equip_CrusherHouse styleFor={styleFor} />
      <Equip_Screen styleFor={styleFor} />
      <Equip_Conv1 styleFor={styleFor} />
      <Equip_Stockpile styleFor={styleFor} />
      <Equip_Conv2 styleFor={styleFor} />

      <Equip_MillHouse styleFor={styleFor} />
      <Equip_BallMill styleFor={styleFor} />
      <Equip_PebbleCrusher styleFor={styleFor} />
      <Equip_MillPump styleFor={styleFor} />

      <Equip_CycloneTower styleFor={styleFor} />
      <Equip_PreLeachThickener styleFor={styleFor} />
      <Equip_LeachTanks styleFor={styleFor} />
      <Equip_CILTanks styleFor={styleFor} />
      <Equip_ElutionColumn styleFor={styleFor} />
      <Equip_GoldRoom styleFor={styleFor} />
      <Equip_TailingsThickener styleFor={styleFor} />

      {/* Mine — headgear, winder house, ore-extraction conveyor (LEFT side of
          plant). Underground itself is now rendered earlier, before the
          back-row surface buildings, so the cutaway's back wall doesn't mask
          the yard. */}
      <Equip_Headframe styleFor={styleFor} />
      <Equip_WinderHouse styleFor={styleFor} />
      <Equip_OreExtractionConveyor styleFor={styleFor} />

      {/* Overhead infrastructure — drawn last so it sits on top */}
      <Equip_PipeRack styleFor={styleFor} />
      <Equip_CableRack styleFor={styleFor} />
      <Equip_Lighting styleFor={styleFor} />

      {/* Living-plant motion overlays — drawn last */}
      <PlantLifeOverlays styleFor={styleFor} />
    </svg>);

}

// ── Plant Explorer container ───────────────────────────────────────────────
function PlantExplorer({ embedded = false }) {
  const [active, setActive] = useState_pl(null);
  const disc = useMemo_pl(() => DISCIPLINES.find((d) => d.id === active) || null, [active]);

  return (
    <section style={{
      position: 'relative',
      background: '#070a0e',
      color: '#f4f1ea',
      borderTop: embedded ? '1px solid rgba(255,255,255,0.08)' : 'none',
      borderBottom: embedded ? '1px solid rgba(255,255,255,0.08)' : 'none',
      paddingTop: embedded ? 130 : 140,
      paddingBottom: embedded ? 96 : 80,
      overflow: 'hidden'
    }}>
      <div style={{
        position: 'absolute', inset: 0,
        background: 'radial-gradient(ellipse at center, transparent 0%, rgba(0,0,0,0.55) 100%)',
        pointerEvents: 'none'
      }} />
      <div style={{ position: 'relative', maxWidth: 1680, margin: '0 auto', padding: '0 32px' }}>
        <div style={{
          display: 'grid', gridTemplateColumns: 'minmax(0, 1fr) minmax(0, 1fr)',
          gap: 40, alignItems: 'end', marginBottom: 32
        }} className="enq-2col">
          <div>
            <div style={{
              fontFamily: '"Source Sans 3", sans-serif', fontSize: 13, fontWeight: 600,
              letterSpacing: '0.14em', textTransform: 'uppercase', color: '#fbbf24',
              display: 'inline-flex', alignItems: 'center', gap: 10, whiteSpace: 'nowrap'
            }}>
              <span style={{ display: 'inline-block', width: 24, height: 1, background: 'currentColor', flexShrink: 0 }} />
              Enginuity engineering services
            </div>
            <h2 style={{
              fontFamily: '"Source Sans 3", sans-serif', fontWeight: 600,
              letterSpacing: '-0.02em',
              fontSize: 'clamp(36px, 4vw, 56px)', lineHeight: 1.05,
              margin: '20px 0 0', maxWidth: '22ch', color: '#f4f1ea'
            }}>See what we engineer across a typical processing plant.

            </h2>
          </div>
          <p style={{
            fontSize: 'clamp(15px, 1.1vw, 17px)', lineHeight: 1.55,
            color: 'rgba(244,241,234,0.7)', margin: 0, maxWidth: '50ch'
          }}>
            From the ROM tip through grinding, leaching, adsorption, elution and the
            gold room — select a discipline to highlight what we deliver, including the
            steel, the slurry circuit, the electrical reticulation and the support
            infrastructure.
          </p>
        </div>

        <div style={{
          display: 'grid', gridTemplateColumns: 'repeat(4, minmax(0, 1fr))', gap: 10,
          marginBottom: 20
        }} className="enq-plant-toggles">
          {DISCIPLINES.map((d) => {
            const on = active === d.id;
            return (
              <button key={d.id} onClick={() => setActive(on ? null : d.id)} style={{
                appearance: 'none',
                border: `1px solid ${on ? '#fbbf24' : 'rgba(255,255,255,0.18)'}`,
                background: on ? 'rgba(251,191,36,0.12)' : 'rgba(255,255,255,0.04)',
                color: on ? '#fbbf24' : '#f4f1ea',
                padding: '16px 20px', cursor: 'pointer', textAlign: 'left',
                display: 'flex', flexDirection: 'column', gap: 6,
                transition: 'all .2s', fontFamily: '"Source Sans 3", sans-serif'
              }}
              onMouseEnter={(e) => {if (!on) {e.currentTarget.style.background = 'rgba(255,255,255,0.08)';e.currentTarget.style.borderColor = 'rgba(255,255,255,0.3)';}}}
              onMouseLeave={(e) => {if (!on) {e.currentTarget.style.background = 'rgba(255,255,255,0.04)';e.currentTarget.style.borderColor = 'rgba(255,255,255,0.18)';}}}>
                
                <span style={{ fontSize: 11, fontWeight: 700, letterSpacing: '0.12em', textTransform: 'uppercase', opacity: on ? 1 : 0.6 }}>{d.tag}</span>
                <span style={{ fontSize: 17, fontWeight: 600, letterSpacing: '-0.005em' }}>{d.label}</span>
              </button>);

          })}
        </div>

        <div style={{ position: 'relative' }} className="enq-plant-stage">
        <div style={{
          position: 'relative',
          background: 'linear-gradient(to bottom, #0e131a 0%, #070a0e 100%)',
          border: '1px solid rgba(255,255,255,0.08)',
          aspectRatio: '3580 / 2520',
          overflow: 'hidden'
        }}>
          <PlantScene active={active} />

          {!active &&
          <div style={{
            position: 'absolute', bottom: 16, left: 16,
            padding: '10px 14px',
            background: 'rgba(0,0,0,0.6)',
            border: '1px solid rgba(255,255,255,0.12)',
            fontFamily: '"Source Sans 3", sans-serif',
            fontSize: 12, fontWeight: 500, letterSpacing: '0.04em',
            color: 'rgba(244,241,234,0.7)',
            backdropFilter: 'blur(8px)', WebkitBackdropFilter: 'blur(8px)'
          }}>
              Select a discipline above to highlight what we engineer.
            </div>
          }
        </div>

          {disc &&
          <div style={{
            position: 'absolute', top: 16, right: 16,
            width: 'min(28%, 360px)', maxHeight: 'min(85%, 500px)',
            background: '#0b0f15',
            border: '1px solid rgba(251,191,36,0.45)',
            padding: '20px 22px',
            display: 'flex', flexDirection: 'column', gap: 14,
            overflow: 'auto',
            boxShadow: '0 20px 60px rgba(0,0,0,0.5), 0 0 40px rgba(251,191,36,0.08)',
            animation: 'plant-pop-in .35s cubic-bezier(.2,.7,.2,1) both'
          }} className="enq-plant-popup">
              <div style={{ display: 'flex', justifyContent: 'space-between', alignItems: 'flex-start', gap: 12 }}>
                <span style={{
                fontSize: 11, fontWeight: 700, letterSpacing: '0.14em', textTransform: 'uppercase',
                color: '#fbbf24'
              }}>{disc.tag}</span>
                <button onClick={() => setActive(null)} aria-label="Close" style={{
                appearance: 'none', border: '1px solid rgba(255,255,255,0.2)', background: 'transparent',
                color: '#f4f1ea', width: 24, height: 24, padding: 0, cursor: 'pointer',
                fontSize: 13, display: 'flex', alignItems: 'center', justifyContent: 'center'
              }}>✕</button>
              </div>
              <h3 style={{
              margin: 0, fontFamily: '"Source Sans 3", sans-serif', fontWeight: 600,
              fontSize: 22, lineHeight: 1.15, letterSpacing: '-0.01em', color: '#f4f1ea'
            }}>{disc.label}</h3>
              <p style={{ margin: 0, fontSize: 13.5, lineHeight: 1.55, color: 'rgba(244,241,234,0.75)' }}>{disc.blurb}</p>
              <div style={{ borderTop: '1px solid rgba(255,255,255,0.1)', paddingTop: 12, display: 'flex', flexDirection: 'column', gap: 8 }}>
                <span style={{
                fontSize: 10.5, fontWeight: 600, letterSpacing: '0.12em', textTransform: 'uppercase',
                color: 'rgba(244,241,234,0.5)'
              }}>What we deliver</span>
                <ul style={{ listStyle: 'none', padding: 0, margin: 0, display: 'flex', flexDirection: 'column', gap: 7 }}>
                  {disc.capabilities.map((c, i) =>
                <li key={i} style={{
                  fontSize: 13, lineHeight: 1.5, color: 'rgba(244,241,234,0.85)',
                  display: 'flex', gap: 10, alignItems: 'baseline'
                }}>
                      <span style={{
                    flexShrink: 0, width: 4, height: 4, background: '#fbbf24',
                    transform: 'translateY(-2px)'
                  }} />
                      <span>{c}</span>
                    </li>
                )}
                </ul>
              </div>
            </div>
          }
        </div>

        <div style={{
          display: 'flex', justifyContent: 'flex-end', alignItems: 'center',
          marginTop: 18, flexWrap: 'wrap', gap: 12,
          color: 'rgba(244,241,234,0.5)',
          fontFamily: '"Source Sans 3", sans-serif', fontSize: 12
        }}>
          <div style={{ display: 'flex', alignItems: 'center', gap: 8 }}>
            <span style={{ width: 8, height: 8, background: '#fbbf24', display: 'inline-block' }} />
            <span style={{ color: '#fbbf24', fontWeight: 600 }}>Active discipline</span>
          </div>
        </div>
      </div>
    </section>);

}

function PlantPage({ onNav }) {
  return (
    <>
      <PlantExplorer embedded={false} />
      <ContactCTA onNav={onNav} />
    </>);

}

Object.assign(window, { PlantExplorer, PlantPage, PlantScene, DISCIPLINES });