<!DOCTYPE html>
<html class="no-js">
    <head>
        <!-- Basic Page Needs
        ================================================== -->
        <meta charset="utf-8">
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
        <link rel="icon" type="image/png" href="images/favicon.ico">
        <title>Capella MBSE Tool - Contact</title>
        <meta name="description" content="">
        <meta name="keywords" content="">
        <meta name="author" content="">
        <!-- Mobile Specific Metas
        ================================================== -->
        <meta name="format-detection" content="telephone=no">
        <meta name="viewport" content="width=device-width, initial-scale=1">

        <!-- Template CSS Files
        ================================================== -->
        <!-- Twitter Bootstrs CSS -->
        <link rel="stylesheet" href="css/bootstrap.min.css">
        <!-- animate css -->
        <link rel="stylesheet" href="css/animate.css">
        <link rel="stylesheet" href="css/jquery.fancybox.css">
        <!-- template main css file -->
        <link rel="stylesheet" href="css/main.css">
        <!-- responsive css -->
        <link rel="stylesheet" href="css/responsive.css">
        <link rel="stylesheet" href="css/latofonts.css">

        <script src="https://use.fontawesome.com/b51f77a16a.js"></script>

        <!-- Cookie content -->
        <link rel="stylesheet" type="text/css" href="//www.eclipse.org/eclipse.org-common/themes/solstice/public/stylesheets/vendor/cookieconsent/cookieconsent.min.css" />
        <script src="//www.eclipse.org/eclipse.org-common/themes/solstice/public/javascript/vendor/cookieconsent/default.min.js"></script>

        <!-- Eclipse Foundation Google Tag Manager -->
		<script>(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':
		new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],
		j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src=
		'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);
		})(window,document,'script','dataLayer','GTM-5WLCZXC');</script>
		<!-- End Google Tag Manager -->

        <!-- Template Javascript Files
        ================================================== -->
		<!-- Angular -->
		<base href="/capella/">
		<script src="js/angular-1.7.8.min.js"></script>
		<script src="angular/capella.js"></script>

        <!-- modernizr js -->
        <script src="js/vendor/modernizr-2.6.2.min.js"></script>
        <!-- jquery -->
        <script src="js/jquery-3.4.1.min.js"></script>
        <!-- bootstrap js -->
		 <script src="js/bootstrap.min.js"></script>
        <!-- wow js -->
        <script src="js/wow.min.js"></script>
        <script src="js/jquery.fancybox.js"></script>
        <!-- template main js -->
        <script src="js/main.js"></script>
    </head>
    <body ng-app="capella" data-deferred-cloak>
       	<!--
        ==================================================
        Header Section
        ================================================== -->
    	<ng-include src="'angular/blocks/header.html'"></ng-include>
        <!--
        ==================================================
        Intro Section
        ================================================== -->
        <section class="hero-area contact">
            <div class="container">
                <div class="row">
                    <div class="col-md-12 text-center">
                        <div class="block wow fadeInUp" data-wow-delay=".3s">
                            <section class="cd-intro">
                                <h1 class="wow fadeInUp animated" data-wow-delay=".4s" >
                                	Contact
                                </h1>
                            </section> <!-- cd-intro -->
                            <h2 class="wow fadeInUp animated" data-wow-delay=".6s" >
								Behind the Eclipse Capella project there are MBSE experts<br>who will be pleased to answer to your questions</h2>
                        </div>
                    </div>
                </div>
            </div>
        </section><!--/#intro_banner-->
        <!--
        ==================================================
        Ecosystem
        ================================================== -->
        <section id="ecosystem" class="bg_lightest_grey text-center ecosystem">
            <div class="container">
                <div class="row">
                	<div class="col-sm-4 col-xs-12 wow fadeInLeft animated">
						<p><img src="images/icons/icon_forum.png" alt="Capella Community" ></a></p>
                            <div>
                                <h4>Community</h4>
                                <p>To ask technical questions or start<br>discussions about Capella or Arcadia</p>
                                <p><a href="https://forum.mbse-capella.org/" target="_blank">Forum <i class="fa fa-arrow-circle-right" aria-hidden="true"></i></a></p>
                                <p><a href="https://www.linkedin.com/in/capella-mbse-tool/" target="_blank">LinkedIn Account <i class="fa fa-linkedin" aria-hidden="true"></i></a></p>
                                <p><a href="https://www.linkedin.com/groups/8605600/profile" target="_blank">LinkedIn Group <i class="fa fa-linkedin" aria-hidden="true"></i></a></p>
                                <p><a href="https://www.youtube.com/EclipseCapella" target="_blank">Youtube Channel <i class="fa fa-youtube" aria-hidden="true"></i></a></p>
                            </div>
                    </div>
                    <div class="col-sm-4 col-xs-12 wow fadeInUp animated animated">
                        <p><a href="services.html"><img src="images/icons/icon_training.png" alt="Capella - Services Providers" ></a></p>
                            <div>
                                <h4>Services Providers</h4>
                                <p>To get advanced help<br>(training, coaching, integration, support, ...),
                                </p>
                     			<p><a href="services.html">Professional Services <i class="fa fa-arrow-circle-right" aria-hidden="true"></i></a></p>
                            </div>
                    </div>
                	<div class="col-sm-4 col-xs-12 wow fadeInLeft animated">
						<p><a href="https://github.com/eclipse/capella/wiki"><img src="images/icons/icon_adapt.png" alt="Development Team" ></a></p>
                            <div>
                                <h4>Development Team</h4>
                                <p>To ask questions about the project’s<br>roadmap or the source code</p>
                                <p><a href="https://github.com/eclipse/capella/wiki">Capella GitHub Wiki <i class="fa fa-github" aria-hidden="true"></i></a></p>
                            </div>
                    </div>
				</div>
            </div>
        </section><!--/#ecosystem-->

  		<div id="back-to-top" data-spy="affix" data-offset-top="100"
        		class="back-to-top hidden-xs hidden-sm affix-top">
        		<button class="btn btn-default" title="Back to Top">
        			<i class="fa fa-caret-up"></i>
        		</button>
        	</div>
        	<script type="text/javascript">
        	// Back to top
        		jQuery('#back-to-top').on('click', function() {
        			jQuery("html, body").animate({
        				scrollTop : 0
        			}, 500);
        			return false;
        		});
        	</script>

        <!--
        ==================================================
        Footer Section
        ================================================== -->
        <ng-include src="'angular/blocks/footer.html'"></ng-include>
        <script async src="js/googleAnalytics.js" ></script>
    </body>
</html>