@startuml(id=C4_Context)

' Colors
' ##################################

!define PERSON_BG_COLOR #FFFFFF
!define SYSTEM_BG_COLOR #EEEBDC
!define ELEMENT_FONT_COLOR #000000
!define BOUNDARY_LINE_COLOUR #000000
!define EXISTING_SYSTEM_LINE_COLOUR #9c2db7
!define NEW_SYSTEM_LINE_COLOUR #186321

' Layout
' ##################################

!define LAYOUT_TOP_DOWN top to bottom direction
!define LAYOUT_LEFT_RIGHT left to right direction

!definelong LAYOUT_WITH_LEGEND
legend right
|= Key             |= |
|<NEW_SYSTEM_LINE_COLOUR> | New system |
|<EXISTING_SYSTEM_LINE_COLOUR> | Existing system |
|<BOUNDARY_LINE_COLOUR> | Organisational boundary |
endlegend
!enddefinelong

' Elements
' ##################################

!define Person(e_alias, e_label) actor "==e_label" <<actor>> as e_alias
!define ExistingSystem(e_alias, e_label) rectangle "==e_label" <<existing-system>> as e_alias
!define NewSystem(e_alias, e_label) rectangle "==e_label" <<new-system>> as e_alias
!define SystemBoundary(e_alias, e_label) rectangle "==e_label" <<system-boundary>> as e_alias
!define Note(e_alias, e_label) rectangle "==e_label" <<note>> as e_alias

' Relationship
' ##################################

!define Rel_(e_alias1, e_alias2, e_label, e_direction="") e_alias1 e_direction e_alias2 : "===e_label"
!define Rel_(e_alias1, e_alias2, e_label, e_techn, e_direction="") e_alias1 e_direction e_alias2 : "===e_label\n//<size:TECHN_FONT_SIZE>[e_techn]</size>//"

!define Rel(e_from,e_to, e_label) Rel_(e_from,e_to, e_label, "-->")
!define Rel(e_from,e_to, e_label, e_techn) Rel_(e_from,e_to, e_label, e_techn, "-->")

!define Rel_Back(e_to, e_from, e_label) Rel_(e_to, e_from, e_label, "<--")
!define Rel_Back(e_to, e_from, e_label, e_techn) Rel_(e_to, e_from, e_label, e_techn, "<--")

!define Rel_Neighbor(e_from,e_to, e_label) Rel_(e_from,e_to, e_label, "->")
!define Rel_Neighbor(e_from,e_to, e_label, e_techn) Rel_(e_from,e_to, e_label, e_techn, "->")

!define Rel_Back_Neighbor(e_to, e_from, e_label) Rel_(e_to, e_from, e_label, "<-")
!define Rel_Back_Neighbor(e_to, e_from, e_label, e_techn) Rel_(e_to, e_from, e_label, e_techn, "<-")

!define Rel_D(e_from,e_to, e_label) Rel_(e_from,e_to, e_label, "-DOWN->")
!define Rel_D(e_from,e_to, e_label, e_techn) Rel_(e_from,e_to, e_label, e_techn, "-DOWN->")
!define Rel_Down(e_from,e_to, e_label) Rel_D(e_from,e_to, e_label)
!define Rel_Down(e_from,e_to, e_label, e_techn) Rel_D(e_from,e_to, e_label, e_techn)

!define Rel_U(e_from,e_to, e_label) Rel_(e_from,e_to, e_label, "-UP->")
!define Rel_U(e_from,e_to, e_label, e_techn) Rel_(e_from,e_to, e_label, e_techn, "-UP->")
!define Rel_Up(e_from,e_to, e_label) Rel_U(e_from,e_to, e_label)
!define Rel_Up(e_from,e_to, e_label, e_techn) Rel_U(e_from,e_to, e_label, e_techn)

!define Rel_L(e_from,e_to, e_label) Rel_(e_from,e_to, e_label, "-LEFT->")
!define Rel_L(e_from,e_to, e_label, e_techn) Rel_(e_from,e_to, e_label, e_techn, "-LEFT->")
!define Rel_Left(e_from,e_to, e_label) Rel_L(e_from,e_to, e_label)
!define Rel_Left(e_from,e_to, e_label, e_techn) Rel_L(e_from,e_to, e_label, e_techn)

!define Rel_R(e_from,e_to, e_label) Rel_(e_from,e_to, e_label, "-RIGHT->")
!define Rel_R(e_from,e_to, e_label, e_techn) Rel_(e_from,e_to, e_label, e_techn, "-RIGHT->")
!define Rel_Right(e_from,e_to, e_label) Rel_R(e_from,e_to, e_label)
!define Rel_Right(e_from,e_to, e_label, e_techn) Rel_R(e_from,e_to, e_label, e_techn)

skinparam Arrow {
    Color #000000
    FontColor #000000
    FontSize 12
}

skinparam actor<<actor>> {
    StereotypeFontColor ELEMENT_FONT_COLOR
    BackgroundColor PERSON_BG_COLOR
    BorderColor #000000
}

skinparam rectangle<<existing-system>> {
    StereotypeFontColor ELEMENT_FONT_COLOR
    FontColor ELEMENT_FONT_COLOR
    BackgroundColor CONTAINER_BG_COLOR
    BorderColor EXISTING_SYSTEM_LINE_COLOUR
}

skinparam rectangle<<new-system>> {
    StereotypeFontColor ELEMENT_FONT_COLOR
    FontColor ELEMENT_FONT_COLOR
    BackgroundColor CONTAINER_BG_COLOR
    BorderColor NEW_SYSTEM_LINE_COLOUR
}

skinparam rectangle<<system-boundary>> {
    StereotypeFontColor SYSTEM_BG_COLOR
    FontColor ELEMENT_FONT_COLOR
    BackgroundColor SYSTEM_BG_COLOR
    BorderColor #000000
	RoundCorner 25
}

skinparam rectangle<<note>> {
    StereotypeFontColor SYSTEM_BG_COLOR
    FontColor ELEMENT_FONT_COLOR
    BackgroundColor #efeee8
    BorderColor #000000
	FontColor #000000
    FontSize 10
}

scale 1
skinparam backgroundColor SYSTEM_BG_COLOR
skinparam titleBorderThickness 2
skinparam titleBorderColor black
skinparam titleBackgroundColor white
@enduml
