<!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 Days Online 2020</title>
	<meta name="description"
		content="Capella Day is a one-day event dedicated to Capella open source model-based systems engineering tool.">
	<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">
								Capella Days<br>
							</h1>
						</section> <!-- cd-intro -->
						<h2 class="wow fadeInUp animated" data-wow-delay=".6s">
							Where Capella Community Meets
						</h2>
						<p></p>
					</div>
				</div>
			</div>
		</div>
	</section>
	<!--/#intro_banner-->
	<section id="overview">
		<div class="container">
			<div class="row wow fadeInDown" data-wow-delay=".3s">
				<h2>What is Capella Days?</h2>
				<p>This event regularly brings together the community of Capella and Arcadia:</p>
				<ul>
					<li>creators of this innovative systems engineering solution,</li>
					<li>providers of Capella add-ons and services,</li>
					<li>MBSE experts and industrial users.</li>
				</ul>
				<p>Capella Days is your opportunity to learn from Capella ecosystem members.</p>
				<ul>
					<li>Discover the roadmap, get insights about methodology, MBSE trends and latest Capella features.</li>
					<li>Benefit from the experience of industrial adopters who have sucessfully deployed an MBSE approach with Arcadia and Capella on their projects.</li>
				</ul>
			</div>
			<div class="row wow fadeInDown" data-wow-delay=".3s">
				<h2>Stay tuned!</h2>
				<p>To be informed about next edition, follow us on <a href="https://www.linkedin.com/in/capella-mbse-tool/" target="_blank">LinkedIn</a> and then ask to be added to the mailing list.</p>

			</div>
			<div class="row wow fadeInDown" data-wow-delay=".3s">
				<h2>Previous editions</h2>
				<ul>
					<li><a href="capella_days_2020.html">Capella Days Online 2020</a></li>
					<li><a href="capella_day_munich_2019.html" >Capella Day Munich 2019</a></li>
					<li><a href="https://wiki.eclipse.org/Capella_Day_Stuttgart_2018" target="_blank">Capella Day Stuttgart 2018</a></li>
					<li><a href="https://www.eclipsecon.org/france2017/capella-day" target="_blank">Capella Day Toulouse 2017</a></li>
				</ul>
			</div>
			</div>
		</div>
	</section>



	<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>
	<!--
        ==================================================
        Call To Action Section Start
        ================================================== -->
	<ng-include src="'angular/blocks/call2action_capella_day.html'"></ng-include>
	<!--
        ==================================================
        Footer Section
        ================================================== -->
	<ng-include src="'angular/blocks/footer.html'"></ng-include>
	<script async src="js/googleAnalytics.js"></script>
</body>
</html>