Infrastructure model src

---
config:
  flowchart:
    defaultRenderer: elk
  layout: elk
---
flowchart LR
 subgraph OBS["Observatory"]
    direction TB
        OBS_TELS["Telescopes"]
        OBS_DEVS["Devices"]
  end
 subgraph TEL["Telescope"]
    direction TB
        n3["Devices"]
  end
 subgraph OPT["Optical Devices"]
    direction TB
        OTA["Optical Tube Assembly (OTA)"]
        FOC["Focuser"]
        FW["Filter Wheel(s)"]
        CAM["Camera"]
        ROT["Rotator"]
        n7["Camera"]
        n8["Focuser"]
        n12["Optical Tube Assembly (OTA)"]
  end
 subgraph RAD["Radio Devices"]
    direction TB
        ANT["Antenna"]
        RCV["Receiver"]
        RBE["Radio Backend"]
  end
 subgraph OBSDEV["Observatory Devices"]
    direction TB
        WSD["Weather Sensor"]
        OLD["Operator Lockout"]
  end
    OBS --> OBS_TELS & OBS_DEVS
    OBS_TELS --> TEL
    OBS_DEVS --> OBSDEV
    n3 --> OPT & RAD & n4["Mount"] & n11["Enclosure"]
    ANT --> n9["Radio Spectrometer"]
    FW --> n5["Primary Optical Imager"]
    CAM --> n5
    OTA --> n5
    n7 --> n6["Wide Field Optical Imager"]
    FOC --> n5
    ROT --> n5
    n8 --> n6
    RCV --> n9
    RBE --> n9
    TEL --> n10["Instrument Selector"]
    n12 --> n6
    n3@{ shape: rect}
    n7@{ shape: rect}
    n8@{ shape: rect}
    n12@{ shape: rect}
    n4@{ shape: rect}
    n11@{ shape: rect}
    n9@{ shape: rect}
    n5@{ shape: rect}
    n6@{ shape: rect}
    n10@{ shape: rect}
     OBS_TELS:::group
     OBS_DEVS:::group
     n3:::group
     OTA:::type
     FOC:::type
     FW:::type
     CAM:::type
     ROT:::type
     n7:::type
     n8:::type
     n12:::type
     ANT:::type
     RCV:::type
     RBE:::type
     WSD:::type
     OLD:::type
     OBS:::root
     TEL:::root
     OPT:::group
     RAD:::group
     n4:::type
     n11:::type
     n9:::group
     n5:::group
     n6:::group
     n10:::type
    classDef root fill:#f0f4ff,stroke:#365cf5,stroke-width:1.5px
    classDef group fill:#f8fafc,stroke:#64748b,stroke-width:1px
    classDef type fill:#ffffff, stroke:#94a3b8, stroke-dasharray:3 3, stroke-width:1px
    style WSD stroke-width:2px,stroke-dasharray: 2
    style n4 stroke-width:2px,stroke-dasharray: 2
    style n11 stroke-width:2px,stroke-dasharray: 2
    style n10 stroke-width:2px,stroke-dasharray: 2