diff --git a/README.md b/README.md index 128c156..f8d7a5c 100644 --- a/README.md +++ b/README.md @@ -6,7 +6,7 @@ We hope this app will give you a better understanding of how decoupling content Contentful is a content management platform for web applications, mobile apps and connected devices. It allows you to create, edit and manage content in the cloud and publish it anywhere via powerful API. Contentful offers tools for managing editorial teams and enabling cooperation between organizations. -Screenshot of the example app +Screenshot of the example app ## Requirements @@ -15,7 +15,15 @@ Contentful is a content management platform for web applications, mobile apps an Without any changes, this app is connected to a Contentful space that is not publicly accessible. The full end-to-end Contentful experience requires you to clone this space to your own Contentful account, and enables you to see how content editing in the Contentful web app and see those changes propagate to this running application. Signing up and getting started with our free plan is... free! -You can clone the space for this example app to your own Contentful account by following the instructions [here](https://github.com/contentful/content-models/tree/master/the-example-app/README.md). Once you’ve created a space, you can change the credentials in the variables.env. If you don’t feel like changing code immediately, you can also inject credentials via url parameters like so: +You can clone the space for this example app to your own Contentful account by using our CLI tool. + +``` +contentful space seed -s '' -t the-example-app +``` + +If you do not have the Contentful CLI installed you can find instructions on installation and usage [here](https://github.com/contentful/contentful-cli). For more information on the content model check out [this repo](https://github.com/contentful/content-models/tree/master/the-example-app/README.md). + +Once you’ve created a space, you can change the credentials in the variables.env. If you don’t feel like changing code immediately, you can also inject credentials via url parameters like so: ``` http://localhost:3000?space_id=&delivery_token=&preview_token= diff --git a/bin/vendor/analytics.html b/bin/vendor/analytics.html index 62da75f..50555ea 100644 --- a/bin/vendor/analytics.html +++ b/bin/vendor/analytics.html @@ -16,7 +16,7 @@ n.src=w;g.parentNode.insertBefore(n,g)}}(window,document,"script","//d1fc8wv8zag5ca.cloudfront.net/2.8.2/sp.js","snowplow")); snowplow('newTracker', 'defaultTracker', 'col.contentful.com', { - appId: 'the_example_app', + appId: 'the-example-app', platform: 'web', respectDoNotTrack: true, bufferSize: 1, diff --git a/i18n/i18n.js b/i18n/i18n.js index 91cd84a..0e5ba2a 100644 --- a/i18n/i18n.js +++ b/i18n/i18n.js @@ -14,6 +14,7 @@ module.exports.initializeTranslations = () => { try { const files = fs.readdirSync(localesPath) + .filter((filename) => filename.endsWith('.json')) files.forEach((file) => { const localeDict = require(path.join(localesPath, file)) diff --git a/i18n/locales/de-DE.json b/i18n/locales/de-DE.json index 076861f..9291c1e 100644 --- a/i18n/locales/de-DE.json +++ b/i18n/locales/de-DE.json @@ -5,7 +5,7 @@ "metaTwitterCard": "Dies ist die Beispielanwendung, eine Anwendung die Ihnen hilft Ihre eigene Anwendung mit Contentful zu bauen.", "metaImageAlt": "Dies ist die Beispielanwendung, eine Anwendung die Ihnen hilft Ihre eigene Anwendung mit Contentful zu bauen.", "metaImageDescription": "Dies ist die Beispielanwendung, eine Anwendung die Ihnen hilft Ihre eigene Anwendung mit Contentful zu bauen.", - "viewOnGithub": "GitHub", + "viewOnGithub": "Auf GitHub ansehen", "apiSwitcherHelp": "Ansehen des veröffentlichten und unveröffentlichten Inhalts durch Wechsel von Delivery und Preview APIs.", "contentDeliveryApiLabel": "Content Delivery API", "contentDeliveryApiHelp": "Diese API zeigt veröffentlichte Inhalte", @@ -21,9 +21,10 @@ "footerDisclaimer": "Powered by Contentful. Diese Website und deren Materialien existieren nur für Demonstrationszwecken. Sie können diese benutzen, um den Inhalt ihres Contentful Kontos anzusehen.", "imprintLabel": "Impressum", "contactUsLabel": "Kontakt", - "modalTitle": "Ein referenzierbares Beispiel für Entwickler, die Contentful benutzen.", - "modalIntro": "Dies ist die Beispielanwendung, eine Anwendung die Ihnen hilft Ihre eigene Anwendung mit Contentful zu bauen. Sie stellt eine Plattform fürs online Lernen dar, die mithilfe von Contentful gebaut wurde. (sehr meta!)", - "modalCodeIntro": "Wenn Sie es bevorzugen, sich die Hände schmutzig zu machen, sehen sie sich die Anwendung hier an", + "modalTitle": "Ein Beispiel für Entwickler, die Contentful benutzen.", + "modalIntro": "Dies ist \"The Example App\" in node.js. Während Sie Ihre eigenen Anwendungen mit Contentful bauen, können Sie dieses Beispiel als Referenz verwenden. Den Quellcode finden Sie auf", + "modalSpaceIntro": "Den Inhalt dieser Anwendung können Sie selbst bearbeiten. Dafür müssen Sie den \"The Example App\" space in Ihren Contentful Account importieren. Anleitung hierzu gibt es", + "modalSpaceLinkLabel": "hier", "modalCTALabel": "Gut, verstanden.", "editorialFeaturesHint": "Bearbeiten Sie diesen Eintrag in unserer Web App. Sie müssen sich eingelogged haben und Zugang zum Space haben, um diese Funktion nutzen zu können.", "draftLabel": "Entwurf", @@ -78,5 +79,5 @@ "previewKeyInvalidLabel": "Ihr Preview API Zugangsschlüssel ist ungültig.", "beginnerLabel": "Anfänger", "intermediateLabel": "Fortgeschrittener", - "advancedLabel": "Profi" + "advancedLabel": "Experte" } diff --git a/i18n/locales/en-US.json b/i18n/locales/en-US.json index d78eb2b..89d60ea 100644 --- a/i18n/locales/en-US.json +++ b/i18n/locales/en-US.json @@ -1,11 +1,11 @@ { "defaultTitle": "The Example App", "whatIsThisApp": "Help", - "metaDescription": "This is The Example App, an application built to serve you as a reference while building your own applications using Contentful.", - "metaTwitterCard": "This is The Example App, an application built to serve you as a reference while building your own applications using Contentful.", - "metaImageAlt": "This is The Example App, an application built to serve you as a reference while building your own applications using Contentful.", - "metaImageDescription": "This is The Example App, an application built to serve you as a reference while building your own applications using Contentful.", - "viewOnGithub": "GitHub", + "metaDescription": "This is \"The Example App\", a reference for building your own applications using Contentful.", + "metaTwitterCard": "This is \"The Example App\", a reference for building your own applications using Contentful.", + "metaImageAlt": "This is \"The Example App\", a reference for building your own applications using Contentful.", + "metaImageDescription": "This is \"The Example App\", a reference for building your own applications using Contentful.", + "viewOnGithub": "View on GitHub", "apiSwitcherHelp": "View the published or draft content by simply switching between the Deliver and Preview APIs.", "contentDeliveryApiLabel": "Content Delivery API", "contentDeliveryApiHelp": "This API fetches published content from the Content Delivery API", @@ -21,9 +21,10 @@ "footerDisclaimer": "Powered by Contentful. This website and the materials found on it are for demo purposes. You can use this to preview the content created on your Contentful account.", "imprintLabel": "Imprint", "contactUsLabel": "Contact us", - "modalTitle": "A referenceable example for developers using Contentful", - "modalIntro": "This is The Example App, an application built to serve you as a reference while building your own applications using Contentful. This app is an online learning platform which teaches you how Contentful was used to build this app (so meta)!", - "modalCodeIntro": "If you prefer to start by getting your hands dirty with code, check out this app on", + "modalTitle": "A reference for developers using Contentful", + "modalIntro": "This is \"The Example App\" in node.js. While building your own apps with Contentful, you can reference this app's code, found on", + "modalSpaceIntro": "You can also edit the content in the app by cloning the Contentful space to your own Contentful account by following the instructions", + "modalSpaceLinkLabel": "here", "modalCTALabel": "Ok, got it.", "editorialFeaturesHint": "Edit this entry in our web app. You have to be logged in and have access to the connected space to use this feature.", "draftLabel": "draft", diff --git a/public/stylesheets/style.css b/public/stylesheets/style.css index 11600d2..1d6b439 100644 --- a/public/stylesheets/style.css +++ b/public/stylesheets/style.css @@ -1 +1 @@ -/*! normalize.css v7.0.0 | MIT License | github.com/necolas/normalize.css */html{line-height:1.15;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}body{margin:0}article,aside,footer,header,nav,section{display:block}h1{font-size:2em;margin:.67em 0}figcaption,figure,main{display:block}figure{margin:1em 40px}hr{-webkit-box-sizing:content-box;box-sizing:content-box;height:0;overflow:visible}pre{font-family:monospace,monospace;font-size:1em}a{background-color:transparent;-webkit-text-decoration-skip:objects}abbr[title]{border-bottom:none;text-decoration:underline;-webkit-text-decoration:underline dotted;text-decoration:underline dotted}b,strong{font-weight:inherit;font-weight:bolder}code,kbd,samp{font-family:monospace,monospace;font-size:1em}dfn{font-style:italic}mark{background-color:#ff0;color:#000}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}audio,video{display:inline-block}audio:not([controls]){display:none;height:0}img{border-style:none}svg:not(:root){overflow:hidden}button,input,optgroup,select,textarea{font-family:sans-serif;font-size:100%;line-height:1.15;margin:0}button,input{overflow:visible}button,select{text-transform:none}[type=reset],[type=submit],button,html [type=button]{-webkit-appearance:button}[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner,button::-moz-focus-inner{border-style:none;padding:0}[type=button]:-moz-focusring,[type=reset]:-moz-focusring,[type=submit]:-moz-focusring,button:-moz-focusring{outline:1px dotted ButtonText}fieldset{padding:.35em .75em .625em}legend{-webkit-box-sizing:border-box;box-sizing:border-box;color:inherit;display:table;max-width:100%;white-space:normal}progress{display:inline-block;vertical-align:baseline}[type=checkbox],[type=radio]{-webkit-box-sizing:border-box;box-sizing:border-box;padding:0}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}[type=search]::-webkit-search-cancel-button,[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}details,menu{display:block}summary{display:list-item}canvas{display:inline-block}[hidden],template{display:none}@font-face{font-family:roboto;src:url(/fonts/roboto-regular-webfont.woff2) format("woff2"),url(/fonts/roboto-regular-webfont.woff) format("woff");font-weight:400;font-style:normal}@font-face{font-family:roboto;src:url(/fonts/roboto-italic-webfont.woff2) format("woff2"),url(/fonts/roboto-italic-webfont.woff) format("woff");font-weight:400;font-style:italic}@font-face{font-family:roboto;src:url(/fonts/roboto-bold-webfont.woff2) format("woff2"),url(/fonts/roboto-bold-webfont.woff) format("woff");font-weight:700;font-style:normal}@font-face{font-family:roboto;src:url(/fonts/roboto-bolditalic-webfont.woff2) format("woff2"),url(/fonts/roboto-bolditalic-webfont.woff) format("woff");font-weight:700;font-style:italic}@font-face{font-family:robotomedium;src:url(/fonts/roboto-medium-webfont.woff2) format("woff2"),url(/fonts/roboto-medium-webfont.woff) format("woff");font-weight:400;font-style:normal}@font-face{font-family:robotomedium;src:url(/fonts/roboto-mediumitalic-webfont.woff2) format("woff2"),url(/fonts/roboto-mediumitalic-webfont.woff) format("woff");font-weight:400;font-style:italic}.cta,button,fieldset,input,legend,optgroup,option,select,textarea{-webkit-box-sizing:border-box;box-sizing:border-box;outline:none;font-family:Raleway,sans-serif;font-size:16px;color:#536171;vertical-align:top;display:block;margin:32px 0;text-align:left}datalist{font-family:Raleway,sans-serif;font-size:16px}label{display:block;margin:32px 0 0;text-align:left;font-weight:700;font-size:.875em}label+input{margin-top:8px}input[type=checkbox],input[type=radio]{margin:0 0 4px!important}input[type=checkbox]+label,input[type=radio]+label{margin:0 0 0 8px;display:inline-block}input[list],input[type=color],input[type=date],input[type=datetime-local],input[type=email],input[type=file],input[type=month],input[type=number],input[type=password],input[type=search],input[type=tel],input[type=text],input[type=time],input[type=url],input[type=week],textarea{width:100%;max-width:100%;padding:8px;background-color:#fff;border-radius:5px;border:1px solid #d3dce0}input[list],input[type=color],input[type=date],input[type=datetime-local],input[type=email],input[type=month],input[type=number],input[type=password],input[type=search],input[type=tel],input[type=text],input[type=time],input[type=url],input[type=week]{height:40px;line-height:40px;-webkit-appearance:none}textarea{-webkit-appearance:none;overflow:auto}input[type=range]{height:40px;width:100%;max-width:100%}input[type=file]{min-height:40px}input[type=search]{height:40px;-webkit-appearance:none}input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none}input[type=checkbox],input[type=radio]{display:inline-block;vertical-align:middle}fieldset{padding:0;border:0}legend{padding:0;font-weight:inherit}.cta,button,input[type=button],input[type=image],input[type=reset],input[type=submit]{display:inline-block;height:40px;min-width:200px;background-color:#5c9fef;padding:0 2em;cursor:pointer;line-height:40px;color:#fff;font-weight:400;-webkit-appearance:none;-moz-appearance:none;border:none;border-radius:3px;text-align:center}input[type=image]{text-align:center;padding:8px}button[disabled],input[disabled],option[disabled],select[disabled],textarea[disabled]{cursor:not-allowed}input:focus,option:focus,select:focus,textarea:focus{border-color:#5c9fef;color:#536171}.cta:focus,button:focus{background-color:#3c80cf;color:#fff}input[type=checkbox]:focus,input[type=radio]:focus{outline:2px dashed #d3dce0;border-radius:4px}.cta:focus,.cta:hover,button:focus,button:hover,input[type=button]:focus,input[type=button]:hover,input[type=reset]:focus,input[type=reset]:hover,input[type=submit]:focus,input[type=submit]:hover{background-color:#3c80cf;color:#fff}.form-item+.form-item{margin-top:32px}.form-item input{margin:0 0 8px}.form-item__help-text{font-size:.875em;color:#8091a5}.form-item__error-wrapper{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.form-item__error-icon{width:12px;height:12px;padding-right:.3em;color:#cd3f39}.form-item__error-message{font-size:.875em;color:#cd3f39}.status-block{display:-webkit-box;display:-ms-flexbox;display:flex;margin:32px 0;padding:16px;border-radius:4px;font-size:.875em}.status-block--success{background:#f4fffb}.status-block--error{background:#fbe3e2}.status-block--info{background:#e8f7ff}.status-block__icon{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:24px;height:24px;margin-right:8px}.status-block__icon--success{color:#0eb87f}.status-block__icon--error{color:#cd3f39}.status-block__icon--info{color:#a9b9c0}.status-block__content{-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto}.status-block__title{font-weight:700;color:#2a3039}.status-block__message{color:#536171}table{width:100%;border:1px solid #e5ebed;border-collapse:collapse}td,th{padding:10px;line-height:1.5}td:not(:last-of-type),th:not(:last-of-type){border-right:1px solid #e5ebed}th{background-color:#f7f9fa;border-bottom:1px solid #e5ebed;color:#2a3039;font-weight:400;font-family:robotomedium,Helvetica,sans-serif;text-align:left}tbody td{border-bottom:1px dashed #e5ebed}h1,h2,h3,h4,h5,h6{font-family:robotomedium,Helvetica,sans-serif;font-weight:400;line-height:1.31;color:#2a3039}h1:first-child,h2:first-child,h3:first-child,h4:first-child,h5:first-child,h6:first-child{margin-top:0}a{color:inherit;text-decoration:none}.form-item a,label a,p a{color:#5c9fef;text-decoration:underline}.form-item a:hover,label a:hover,p a:hover{color:#3c80cf;text-decoration:underline}p:first-child{margin-top:0}p:last-child{margin-bottom:0}blockquote{margin:0;padding:0 0 0 16px;font-style:italic;border-left:4px solid #c3cfd5}.layout-centered{max-width:980px}.layout-centered,.layout-centered-small{-webkit-box-sizing:border-box;box-sizing:border-box;width:100%;margin:0 auto;padding:0 2vw}.layout-centered-small{max-width:620px}.layout-no-sidebar{padding:0 16px}.layout-no-sidebar,.layout-sidebar{-webkit-box-sizing:border-box;box-sizing:border-box;width:100%;max-width:980px;margin:0 auto}.layout-sidebar__sidebar-header{padding:16px;border-bottom:1px solid #eee}.layout-sidebar__sidebar-title{font-family:robotomedium,Helvetica,sans-serif;font-size:1.25em;font-weight:400;margin:0}.layout-sidebar__sidebar-content{background:#f7f9fa;padding:16px}.layout-sidebar__content{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;margin:16px 0 0;padding:0 16px}.layout-sidebar__content>*{max-width:732px;width:100%}.grid-list{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.grid-list__item{-webkit-box-flex:0;-ms-flex:0 0 100%;flex:0 0 100%;margin-bottom:32px}.header{margin-bottom:24px}.header__upper-wrapper{background:#536171;padding:8px 0;color:#b4c3ca}.header__upper-wrapper a.active,.header__upper-wrapper a:hover{color:#fff}.header__upper{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;font-size:.875em}.header__upper-copy{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;margin:0 0 8px}.header__upper-menu,.header__upper-title{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.header__upper-title{-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto;margin:0 0 8px}.header__upper-title img{display:inline-block;width:24px;height:auto;margin-right:8px}.header__upper-link{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.header__upper-icon{display:inline-block;width:20px;height:20px;margin-right:8px}.header__lower{-ms-flex-wrap:wrap;flex-wrap:wrap;-ms-flex-pack:center;padding-top:16px;padding-bottom:8px;border-bottom:1px solid #e5ebed}.header__logo,.header__lower{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;justify-content:center}.header__logo{-webkit-box-flex:0;-ms-flex:0 0 100%;flex:0 0 100%;-ms-flex-pack:center;margin:0 0 8px}.header__logo img{width:100%;height:auto;max-width:169px}.header__controls{-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-ms-flex-pack:center}.header__controls,.header__controls_group{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;justify-content:center;margin:0 0 8px}.header__controls_group{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;position:relative;-ms-flex-pack:center;border:none;border-radius:4px;color:inherit}.header__controls_group:last-child{margin:0}.header__controls_label{position:relative;z-index:5;cursor:pointer}.header__controls_label:hover{color:#fff}.header__controls_label:hover:after{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='10' height='5' viewBox='0 0 10 5' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill='%23fff' d='M0 0l5 5 5-5z'/%3E%3C/svg%3E")}.header__controls_label:after{content:"";display:inline-block;width:10px;height:5px;margin-left:8px;background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='10' height='5' viewBox='0 0 10 5' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill='%23B4C3CA' d='M0 0l5 5 5-5z'/%3E%3C/svg%3E");background-size:contain;background-position:50%;background-repeat:no-repeat;vertical-align:middle}.header__controls_dropdown{position:absolute;z-index:6;-webkit-box-sizing:border-box;box-sizing:border-box;right:0;width:260px;max-width:90vw;margin:12px 0 0;opacity:0;background:#fff;border-radius:2px;-webkit-box-shadow:0 1px 3px 1px rgba(0,0,0,.1);box-shadow:0 1px 3px 1px rgba(0,0,0,.1);-webkit-transition:opacity .3s ease;transition:opacity .3s ease;pointer-events:none}.header__controls_dropdown--active{opacity:1;pointer-events:all}.header__controls_dropdown--active:before{content:"";position:absolute;left:50%;top:-5px;width:10px;height:10px;background-color:inherit;-webkit-transform:translateX(-50%) rotate(45deg);transform:translateX(-50%) rotate(45deg)}.header__controls_help_text{padding:16px;color:#8091a5;line-height:1.29}.header__controls_button{-webkit-box-sizing:border-box;box-sizing:border-box;height:auto;width:100%;margin:0;padding:16px;border-radius:0;font-size:1em;text-align:left;line-height:1em}.header__controls_button,.header__controls_button:hover{background:#fff;color:#263545}.header__controls_button--active,.header__controls_button--active:hover{background:#d3dce0}.header__controls_button_help{display:inline-block;margin-top:8px;font-size:.875em;line-height:1.5em;color:#8091a5}.footer{padding:32px 0 16px}.footer p{margin:0}.footer__upper{-ms-flex-wrap:wrap;flex-wrap:wrap;min-height:80px;border-bottom:1px solid #e5ebed}.footer__upper,.footer__upper>*{display:-webkit-box;display:-ms-flexbox;display:flex}.footer__upper>*{-webkit-box-align:center;-ms-flex-align:center;align-items:center}.footer__navigation{-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto}.footer__apps{-webkit-box-flex:1;-ms-flex:1 0 auto;flex:1 0 auto;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.footer__apps a{display:inline-block;width:138px}.footer__apps a+a{margin-left:8px}.footer__apps a img{width:100%;height:auto}.footer__lower{display:-webkit-box;display:-ms-flexbox;display:flex;padding:16px 8px 0;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.footer__lower>*{margin:0 0 16px}.footer__logo{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:140px;height:28px;margin-right:16px}.footer__disclaimer-text{-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto;color:#a9b9c0;font-size:.75em;line-height:1.5;text-align:justify}.footer__social{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.footer__social a+a{margin-left:16px}.footer__social svg{color:#a9b9c0;width:24px;height:24px}.breadcrumb{margin-bottom:8px;font-size:.875em}.breadcrumb ul{display:-webkit-box;display:-ms-flexbox;display:flex;list-style:none;-ms-flex-wrap:wrap;flex-wrap:wrap;padding:0}.breadcrumb ul,.breadcrumb ul li{margin:0}.breadcrumb ul li:after{content:"";display:inline-block;background:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='5' height='8' viewBox='0 0 5 8'%3E%3Cpath fill='none' stroke='%23536171' stroke-width='1.5' d='M1 7l3-2.89L1 1'/%3E%3C/svg%3E");background-size:contain;background-position:50%;background-repeat:no-repeat;width:4px;height:8px;padding:0 8px}.breadcrumb ul li:last-child:after{display:none}.breadcrumb ul li a{display:inline-block}.breadcrumb ul li a:hover{color:#3c80cf}.editorial-features{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-ms-flex-line-pack:center;align-content:center;margin-bottom:16px}.editorial-features a{color:#5c9fef}.editorial-features__item{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-line-pack:center;align-content:center;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start;margin-right:8px}.editorial-features__item:last-child{margin-right:0}.editorial-features__hint-wrapper{position:relative;z-index:3;margin-left:8px}.editorial-features__hint-wrapper:hover>div{opacity:1;-webkit-transition-delay:0s;transition-delay:0s}.editorial-features__hint-icon{width:24px;height:24px;cursor:help}.editorial-features__hint-message{position:absolute;z-index:4;-webkit-box-sizing:border-box;box-sizing:border-box;top:24px;left:50%;-webkit-transform:translateX(-50%);transform:translateX(-50%);width:260px;max-width:90vw;margin:12px 0 0;padding:16px;background:#536171;border-radius:2px;-webkit-box-shadow:0 1px 3px 1px rgba(0,0,0,.1);box-shadow:0 1px 3px 1px rgba(0,0,0,.1);opacity:0;-webkit-transition:opacity .3s ease .3s;transition:opacity .3s ease .3s;pointer-events:none;font-size:.75em;line-height:1.5;color:#fff}.editorial-features__hint-message:before{content:"";position:absolute;left:50%;top:-5px;width:10px;height:10px;background-color:inherit;-webkit-transform:translateX(-50%) rotate(45deg);transform:translateX(-50%) rotate(45deg)}.main-navigation ul{display:-webkit-box;display:-ms-flexbox;display:flex;list-style:none;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;padding:0}.main-navigation ul,.main-navigation ul li{margin:0}.main-navigation ul li+li{margin-left:8px}.main-navigation ul li a{display:block;text-transform:uppercase;font-weight:700;padding:.7em 1em;color:#8091a5;border-radius:4px}.main-navigation ul li a.active,.main-navigation ul li a:hover{background:#f7f9fa}.main-navigation ul li a.active{color:#536171}.modal{display:none}.modal--visible{display:block}.modal__overlay{position:fixed;z-index:7;left:0;right:0;top:0;bottom:0;opacity:.3;background-color:#3b3d40;cursor:pointer}.modal__wrapper{position:fixed;z-index:8;left:50%;top:5vh;-webkit-transform:translateX(-50%);transform:translateX(-50%);-webkit-box-sizing:border-box;box-sizing:border-box;width:80vw;max-width:800px;max-height:90vh;overflow:auto;padding:32px;background-color:#fff;-webkit-box-shadow:0 1px 3px 1px rgba(0,0,0,.1);box-shadow:0 1px 3px 1px rgba(0,0,0,.1);border-radius:4px}.modal__title{margin-bottom:2vh;font-size:1em;text-align:center}.modal__content{color:#8091a5;font-size:.875em;line-height:1.3em}.modal__content a{color:#5c9fef;text-decoration:underline}.modal__content a:hover{color:#3c80cf}.modal__cta-wrapper{text-align:center;margin-top:32px}.modal__cta{display:inline-block;padding-bottom:.3em;border-bottom:1px solid #5c9fef;color:#5c9fef;font-size:.75em;font-weight:700;line-height:2.17;letter-spacing:2px;text-transform:uppercase}.modal__cta:hover{color:#3c80cf;border-bottom-color:#3c80cf}.modal__close-wrapper{position:absolute;z-index:9;top:16px;right:16px}.modal__close-button{display:block;width:18px;height:18px;color:#a9b9c0}.modal__close-button svg{width:100%;height:100%}.pill{display:inline-block;vertical-align:middle;padding:0 8px;background:#3c80cf;border-radius:4px;text-transform:uppercase;font-size:14px;font-size:.875rem;letter-spacing:1px;color:#fff}.pill--draft{background-color:#e6ae17}.pill--pending-changes{background-color:#3e97d6}.sidebar-menu__list{list-style:none;margin:0;padding:0}.sidebar-menu__item{margin:0 0 16px;padding:0;font-size:.9em;line-height:1.8}.sidebar-menu__link{display:block;color:#8091a5}.sidebar-menu__link.active,.sidebar-menu__link:hover{color:#536171}.sidebar-menu__link.active{font-family:robotomedium,Helvetica,sans-serif}.table-of-contents__list{list-style:none;margin:0;padding:0;padding-left:32px}.table-of-contents__item{margin:0 0 8px;padding:0;font-size:.9em;line-height:1.8}.table-of-contents__link{display:block;color:#8091a5}.table-of-contents__link.active,.table-of-contents__link:hover{color:#536171}.table-of-contents__link.active{position:relative;font-family:robotomedium,Helvetica,sans-serif}.table-of-contents__link.active:after,.table-of-contents__link.active:before{position:absolute;top:0}.table-of-contents__link.active:before{content:"";left:-48px;bottom:0;width:3px;background:#536171}.table-of-contents__link.visited{position:relative}.table-of-contents__link.visited:after,.table-of-contents__link.visited:before{position:absolute;top:0}.table-of-contents__link.visited:after{content:"";display:block;width:16px;height:16px;top:50%;left:-32px;-webkit-transform:translateY(-50%);transform:translateY(-50%);background:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='20' height='20' viewBox='0 0 20 20' fill='%23536171'%3E%3Cg fill='none' fill-rule='evenodd'%3E%3Cpath d='M0 0h20v20H0z'/%3E%3Cpath fill='%23A9B9C0' fill-rule='nonzero' d='M9.992 1.667c-4.6 0-8.325 3.733-8.325 8.333s3.725 8.333 8.325 8.333c4.608 0 8.341-3.733 8.341-8.333S14.6 1.667 9.992 1.667zm.008 15A6.665 6.665 0 0 1 3.333 10 6.665 6.665 0 0 1 10 3.333 6.665 6.665 0 0 1 16.667 10 6.665 6.665 0 0 1 10 16.667z'/%3E%3Cpath stroke='%23A9B9C0' stroke-width='1.333' d='M13.333 7.5l-5 5-1.666-1.786'/%3E%3C/g%3E%3C/svg%3E");background-size:contain;background-position:50%;background-repeat:no-repeat}body{background-color:#fff;color:#536171;font-family:roboto,Helvetica,sans-serif;font-size:16px;font-size:1rem;line-height:1.5em}.main{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;min-height:100vh}.main__header{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto}.main__content{-webkit-box-flex:1;-ms-flex:1 0 auto;flex:1 0 auto;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.main__footer{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto}.hljs{display:block;overflow-x:auto;padding:.5em;color:#333;background:#f8f8f8}.hljs-comment,.hljs-quote{color:#998;font-style:italic}.hljs-keyword,.hljs-selector-tag,.hljs-subst{color:#333;font-weight:700}.hljs-literal,.hljs-number,.hljs-tag .hljs-attr,.hljs-template-variable,.hljs-variable{color:teal}.hljs-doctag,.hljs-string{color:#d14}.hljs-section,.hljs-selector-id,.hljs-title{color:#900;font-weight:700}.hljs-subst{font-weight:400}.hljs-class .hljs-title,.hljs-type{color:#458;font-weight:700}.hljs-attribute,.hljs-name,.hljs-tag{color:navy;font-weight:400}.hljs-link,.hljs-regexp{color:#009926}.hljs-bullet,.hljs-symbol{color:#990073}.hljs-built_in,.hljs-builtin-name{color:#0086b3}.hljs-meta{color:#999;font-weight:700}.hljs-deletion{background:#fdd}.hljs-addition{background:#dfd}.hljs-emphasis{font-style:italic}.hljs-strong{font-weight:700}.course-card{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;padding:32px;border-radius:4px;-webkit-box-shadow:0 1px 3px 1px rgba(0,0,0,.1);box-shadow:0 1px 3px 1px rgba(0,0,0,.1)}.course-card__categories{-webkit-box-flex:0;-ms-flex:0 0 1.5em;flex:0 0 1.5em;margin-bottom:16px;height:1.5em}.course-card__category{display:inline-block;color:#8091a5;font-size:.75em;font-family:robotomedium,Helvetica,sans-serif}.course-card__category:after{content:" • ";display:inline-block;padding:0 .5em}.course-card__category:last-child:after{display:none}.course-card__category-link{display:inline-block;letter-spacing:2px}.course-card__title{-webkit-box-flex:0;-ms-flex:0 1 12vh;flex:0 1 12vh;max-height:120px;margin:0;overflow:hidden;padding-bottom:16px;margin-bottom:16px;border-bottom:1px solid #e5ebed;font-family:robotomedium,Helvetica,sans-serif;font-weight:400;font-size:1.625em;line-height:1.38}.course-card__title a:after{content:" "}.course-card__title .pill{margin-bottom:3px}.course-card__description{-webkit-box-flex:0;-ms-flex:0 1 18vh;flex:0 1 18vh;max-height:150px;overflow:hidden;margin:0 0 32px;line-height:1.63;color:#536171}.course-card__link-wrapper{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto}.course-card__link{display:inline-block;padding-bottom:.3em;border-bottom:1px solid #5c9fef;text-transform:uppercase;color:#5c9fef;font-size:.75em;line-height:2.17;letter-spacing:2px}.course-card__link:hover{color:#3c80cf;border-bottom-color:#3c80cf}.course__title{margin-bottom:32px}.course__overview{font-family:robotomedium,Helvetica,sans-serif}.course__overview-title{border-bottom:1px solid #eee;padding:16px 0;margin:0;line-height:1.31;font-weight:400;text-transform:uppercase;text-align:center}.course__overview-item{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding:16px;border-bottom:1px solid #eee;line-height:1.54;font-size:.8em}.course__overview-icon{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:24px;height:24px;padding-right:16px}.course__overview-value{-webkit-box-flex:1;-ms-flex:1 0 auto;flex:1 0 auto}.course__overview-cta-wrapper{padding:16px 0;text-align:center}.course__overview-cta{margin:0}.course__cta{margin-bottom:0}.module-copy img{display:block;max-width:100%;height:auto;margin:0 auto;-webkit-box-shadow:0 1px 3px 1px rgba(0,0,0,.1);box-shadow:0 1px 3px 1px rgba(0,0,0,.1)}.module-copy--emphasized{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-ms-flex-wrap:wrap;flex-wrap:wrap;padding:24px 0;background-color:#8091a5;border-radius:4px;color:#c3cfd5}.module-copy--emphasized a{color:inherit}.module-copy--emphasized a:hover{color:#fff}.module-copy__first--emphasized{-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto;width:50vw;padding:0 32px}.module-copy__second--emphasized{-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.module-copy__headline--emphasized{color:#fff;font-size:1.25em}.module-copy__copy--emphasized{font-size:.875em}.module-copy__cta--emphasized{background-color:#536171;color:#fff;margin-bottom:0}.module-hero-image__wrapper{position:relative;overflow:hidden;max-height:60vh;border-radius:4px}.module-hero-image__image{display:block;max-width:100%;height:auto;margin:0 auto}.module-hero-image__headline-wrapper{position:absolute;left:0;right:0;top:50%;-webkit-transform:translateY(-50%);transform:translateY(-50%)}.module-hero-image__headline{color:#fff;text-align:center;font-size:4.5vw;line-height:1;text-shadow:0 3px 0 #b2a98f,0 14px 10px rgba(0,0,0,.15),0 24px 2px rgba(0,0,0,.1),0 34px 30px rgba(0,0,0,.1)}.module-higlighted-course__wrapper{position:relative;overflow:hidden;height:50vh;min-height:250px;max-height:500px;border-radius:4px;background-size:cover;background-repeat:no-repeat;background-position:50%}.module-higlighted-course__overlay{z-index:1;position:absolute;left:0;right:0;top:0;bottom:0;opacity:.8;border-radius:4px;background-color:#3c3d41}.module-higlighted-course__content{z-index:2;position:absolute;left:0;right:0;top:50%;-webkit-transform:translateY(-50%);transform:translateY(-50%);display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;padding:32px 64px;color:#a9b9c0}.module-higlighted-course__categories{-webkit-box-flex:0;-ms-flex:0 0 1.5em;flex:0 0 1.5em}.module-higlighted-course__category{display:inline-block;margin-right:32px;font-size:.75em;letter-spacing:2px}.module-higlighted-course__title{-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto;margin:0 0 8px;color:#fff;font-size:2em;line-height:1.3;white-space:nowrap}.module-higlighted-course__description-wrapper{-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto;max-width:400px;line-height:1.3}.module-higlighted-course__description-wrapper p{margin:0}.module-higlighted-course__link-wrapper{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;margin-top:32px}.module-higlighted-course__link{display:inline-block;border-bottom:1px solid #fff;text-transform:uppercase;color:#fff;font-size:.75em;line-height:2.17;letter-spacing:2px}.module{-webkit-box-sizing:border-box;box-sizing:border-box;width:100%;max-width:980px;margin:0 auto 32px;padding:0 2vw}.module img{width:100%;height:auto}.module:last-child{margin-bottom:0}.modules-container{-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto}.lesson__title{margin-bottom:32px}.lesson__cta{margin-bottom:0}.lesson-module{margin-bottom:32px}.lesson-module:last-child{margin-bottom:0}.lesson-module-copy img{display:block;max-width:100%;height:auto;margin:0 auto;-webkit-box-shadow:0 1px 3px 1px rgba(0,0,0,.1);box-shadow:0 1px 3px 1px rgba(0,0,0,.1)}.lesson-module-code__header{white-space:nowrap;overflow:auto}.lesson-module-code__code-area{background:#f7f9fa}.lesson-module-code__trigger{display:inline-block;height:30px;padding:0 8px;margin-right:8px;background:#fff;border-top:3px solid transparent;line-height:30px;font-family:robotomedium,Helvetica,sans-serif;font-size:.875em;color:#8091a5;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.lesson-module-code__trigger:last-child{margin-right:0}.lesson-module-code__trigger:hover{color:#3c80cf}.lesson-module-code__trigger--active{background:#f7f9fa;color:#536171!important;cursor:default;border-color:#c3cfd5}.lesson-module-code__code{display:none}.lesson-module-code__code pre{margin:0}.lesson-module-code__code--active{display:block}.lesson-module-image__figure{margin:0}.lesson-module-image__image{display:block;max-width:100%;height:auto;margin:0 auto;-webkit-box-shadow:0 1px 3px 1px rgba(0,0,0,.1);box-shadow:0 1px 3px 1px rgba(0,0,0,.1)}.lesson-module-image__caption{margin-top:16px;font-style:italic;line-height:1.63;color:#a9b9c0}@media (min-width:700px){.layout-no-sidebar{padding-left:276px}.layout-sidebar{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start;padding:0 16px}.layout-sidebar__sidebar{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:228px;border-radius:4px;-webkit-box-shadow:0 1px 3px 1px rgba(0,0,0,.1);box-shadow:0 1px 3px 1px rgba(0,0,0,.1)}.layout-sidebar__content{-webkit-box-flex:0;-ms-flex:0 1 732px;flex:0 1 732px;width:100%;-webkit-box-sizing:border-box;box-sizing:border-box;margin:0 0 0 32px;padding:0}.grid-list{margin:0 -16px}.grid-list,.grid-list__item{-webkit-box-flex:0;-ms-flex:0 0 calc(50% - 32px);flex:0 0 calc(50% - 32px)}.grid-list__item{-webkit-box-sizing:border-box;box-sizing:border-box;margin:0 16px 32px}.header{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.header__upper{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.header__upper-copy{margin:0 16px 0 0}.header__upper-title{-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start;margin:0}.header__lower{-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.header__logo{-webkit-box-flex:0;-ms-flex:0 0 200px;flex:0 0 200px;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start;margin:0}.header__controls{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;-ms-flex-pack:distribute;justify-content:space-around}.header__controls,.header__controls_group{margin:0 16px 0 0}.footer__apps{-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end}.footer__lower{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;padding:16px 16px 0}.footer__disclaimer-text{text-align:normal}.footer__social{padding:0 0 0 32px}.main-navigation ul{-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end}.modal__wrapper{top:20vh;max-height:70vh;padding:64px 96px}.modal__title{margin-bottom:32px;font-size:1.25em}.modal__content{font-size:1em;line-height:1.5em}.modal__close-wrapper{top:32px;right:32px}.modal__close-button{width:24px;height:24px}.course__overview{float:right;border-radius:4px;-webkit-box-shadow:0 1px 3px 1px rgba(0,0,0,.1);box-shadow:0 1px 3px 1px rgba(0,0,0,.1);width:228px;margin:0 0 32px 32px}.module-copy--emphasized{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.module-copy__first--emphasized{padding-left:32px}.module-copy__second--emphasized{-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto;padding:0 32px;width:20vw}.module-hero-image__headline{font-size:4em}.module-higlighted-course__title{font-size:3.25em}.module-higlighted-course__description-wrapper{font-size:1.25em}} \ No newline at end of file +/*! normalize.css v7.0.0 | MIT License | github.com/necolas/normalize.css */html{line-height:1.15;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}body{margin:0}article,aside,footer,header,nav,section{display:block}h1{font-size:2em;margin:.67em 0}figcaption,figure,main{display:block}figure{margin:1em 40px}hr{-webkit-box-sizing:content-box;box-sizing:content-box;height:0;overflow:visible}pre{font-family:monospace,monospace;font-size:1em}a{background-color:transparent;-webkit-text-decoration-skip:objects}abbr[title]{border-bottom:none;text-decoration:underline;-webkit-text-decoration:underline dotted;text-decoration:underline dotted}b,strong{font-weight:inherit;font-weight:bolder}code,kbd,samp{font-family:monospace,monospace;font-size:1em}dfn{font-style:italic}mark{background-color:#ff0;color:#000}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}audio,video{display:inline-block}audio:not([controls]){display:none;height:0}img{border-style:none}svg:not(:root){overflow:hidden}button,input,optgroup,select,textarea{font-family:sans-serif;font-size:100%;line-height:1.15;margin:0}button,input{overflow:visible}button,select{text-transform:none}[type=reset],[type=submit],button,html [type=button]{-webkit-appearance:button}[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner,button::-moz-focus-inner{border-style:none;padding:0}[type=button]:-moz-focusring,[type=reset]:-moz-focusring,[type=submit]:-moz-focusring,button:-moz-focusring{outline:1px dotted ButtonText}fieldset{padding:.35em .75em .625em}legend{-webkit-box-sizing:border-box;box-sizing:border-box;color:inherit;display:table;max-width:100%;white-space:normal}progress{display:inline-block;vertical-align:baseline}[type=checkbox],[type=radio]{-webkit-box-sizing:border-box;box-sizing:border-box;padding:0}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}[type=search]::-webkit-search-cancel-button,[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}details,menu{display:block}summary{display:list-item}canvas{display:inline-block}[hidden],template{display:none}@font-face{font-family:roboto;src:url(/fonts/roboto-regular-webfont.woff2) format("woff2"),url(/fonts/roboto-regular-webfont.woff) format("woff");font-weight:400;font-style:normal}@font-face{font-family:roboto;src:url(/fonts/roboto-italic-webfont.woff2) format("woff2"),url(/fonts/roboto-italic-webfont.woff) format("woff");font-weight:400;font-style:italic}@font-face{font-family:roboto;src:url(/fonts/roboto-bold-webfont.woff2) format("woff2"),url(/fonts/roboto-bold-webfont.woff) format("woff");font-weight:700;font-style:normal}@font-face{font-family:roboto;src:url(/fonts/roboto-bolditalic-webfont.woff2) format("woff2"),url(/fonts/roboto-bolditalic-webfont.woff) format("woff");font-weight:700;font-style:italic}@font-face{font-family:robotomedium;src:url(/fonts/roboto-medium-webfont.woff2) format("woff2"),url(/fonts/roboto-medium-webfont.woff) format("woff");font-weight:400;font-style:normal}@font-face{font-family:robotomedium;src:url(/fonts/roboto-mediumitalic-webfont.woff2) format("woff2"),url(/fonts/roboto-mediumitalic-webfont.woff) format("woff");font-weight:400;font-style:italic}.cta,button,fieldset,input,legend,optgroup,option,select,textarea{-webkit-box-sizing:border-box;box-sizing:border-box;outline:none;font-family:Raleway,sans-serif;font-size:16px;color:#536171;vertical-align:top;display:block;margin:32px 0;text-align:left}datalist{font-family:Raleway,sans-serif;font-size:16px}label{display:block;margin:32px 0 0;text-align:left;font-weight:700;font-size:.875em}label+input{margin-top:8px}input[type=checkbox],input[type=radio]{margin:0 0 4px!important}input[type=checkbox]+label,input[type=radio]+label{margin:0 0 0 8px;display:inline-block}input[list],input[type=color],input[type=date],input[type=datetime-local],input[type=email],input[type=file],input[type=month],input[type=number],input[type=password],input[type=search],input[type=tel],input[type=text],input[type=time],input[type=url],input[type=week],textarea{width:100%;max-width:100%;padding:8px;background-color:#fff;border-radius:5px;border:1px solid #d3dce0}input[list],input[type=color],input[type=date],input[type=datetime-local],input[type=email],input[type=month],input[type=number],input[type=password],input[type=search],input[type=tel],input[type=text],input[type=time],input[type=url],input[type=week]{height:40px;line-height:40px;-webkit-appearance:none}textarea{-webkit-appearance:none;overflow:auto}input[type=range]{height:40px;width:100%;max-width:100%}input[type=file]{min-height:40px}input[type=search]{height:40px;-webkit-appearance:none}input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none}input[type=checkbox],input[type=radio]{display:inline-block;vertical-align:middle}fieldset{padding:0;border:0}legend{padding:0;font-weight:inherit}.cta,button,input[type=button],input[type=image],input[type=reset],input[type=submit]{display:inline-block;height:40px;min-width:200px;background-color:#5c9fef;padding:0 2em;cursor:pointer;line-height:40px;color:#fff;font-weight:400;-webkit-appearance:none;-moz-appearance:none;border:none;border-radius:3px;text-align:center}input[type=image]{text-align:center;padding:8px}button[disabled],input[disabled],option[disabled],select[disabled],textarea[disabled]{cursor:not-allowed}input:focus,option:focus,select:focus,textarea:focus{border-color:#5c9fef;color:#536171}.cta:focus,button:focus{background-color:#3c80cf;color:#fff}input[type=checkbox]:focus,input[type=radio]:focus{outline:2px dashed #d3dce0;border-radius:4px}.cta:focus,.cta:hover,button:focus,button:hover,input[type=button]:focus,input[type=button]:hover,input[type=reset]:focus,input[type=reset]:hover,input[type=submit]:focus,input[type=submit]:hover{background-color:#3c80cf;color:#fff}.form-item+.form-item{margin-top:32px}.form-item input{margin:0 0 8px}.form-item__help-text{font-size:.875em;color:#8091a5}.form-item__error-wrapper{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.form-item__error-icon{width:12px;height:12px;padding-right:.3em;color:#cd3f39}.form-item__error-message{font-size:.875em;color:#cd3f39}.status-block{display:-webkit-box;display:-ms-flexbox;display:flex;margin:32px 0;padding:16px;border-radius:4px;font-size:.875em}.status-block--success{background:#f4fffb}.status-block--error{background:#fbe3e2}.status-block--info{background:#e8f7ff}.status-block__icon{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:24px;height:24px;margin-right:8px}.status-block__icon--success{color:#0eb87f}.status-block__icon--error{color:#cd3f39}.status-block__icon--info{color:#a9b9c0}.status-block__content{-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto}.status-block__title{font-weight:700;color:#2a3039}.status-block__message{color:#536171}table{width:100%;border:1px solid #e5ebed;border-collapse:collapse}td,th{padding:10px;line-height:1.5}td:not(:last-of-type),th:not(:last-of-type){border-right:1px solid #e5ebed}th{background-color:#f7f9fa;border-bottom:1px solid #e5ebed;color:#2a3039;font-weight:400;font-family:robotomedium,Helvetica,sans-serif;text-align:left}tbody td{border-bottom:1px dashed #e5ebed}h1,h2,h3,h4,h5,h6{font-family:robotomedium,Helvetica,sans-serif;font-weight:400;line-height:1.31;color:#2a3039}h1:first-child,h2:first-child,h3:first-child,h4:first-child,h5:first-child,h6:first-child{margin-top:0}a{color:inherit;text-decoration:none}.form-item a,label a,p a{color:#5c9fef;text-decoration:underline}.form-item a:hover,label a:hover,p a:hover{color:#3c80cf;text-decoration:underline}p:first-child{margin-top:0}p:last-child{margin-bottom:0}blockquote{margin:0;padding:0 0 0 16px;font-style:italic;border-left:4px solid #c3cfd5}.layout-centered{max-width:980px}.layout-centered,.layout-centered-small{-webkit-box-sizing:border-box;box-sizing:border-box;width:100%;margin:0 auto;padding:0 2vw}.layout-centered-small{max-width:620px}.layout-no-sidebar{padding:0 16px}.layout-no-sidebar,.layout-sidebar{-webkit-box-sizing:border-box;box-sizing:border-box;width:100%;max-width:980px;margin:0 auto}.layout-sidebar__sidebar-header{padding:16px;border-bottom:1px solid #eee}.layout-sidebar__sidebar-title{font-family:robotomedium,Helvetica,sans-serif;font-size:1.25em;font-weight:400;margin:0}.layout-sidebar__sidebar-content{background:#f7f9fa;padding:16px}.layout-sidebar__content{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;margin:16px 0 0;padding:0 16px}.layout-sidebar__content>*{max-width:732px;width:100%}.grid-list{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.grid-list__item{-webkit-box-flex:0;-ms-flex:0 0 100%;flex:0 0 100%;margin-bottom:32px}.header{margin-bottom:24px}.header__upper-wrapper{background:#536171;padding:8px 0;color:#b4c3ca}.header__upper-wrapper a.active,.header__upper-wrapper a:hover{color:#fff}.header__upper{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;font-size:.875em}.header__upper-copy{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;margin:0 0 8px}.header__upper-menu,.header__upper-title{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.header__upper-title{-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;margin:0 0 8px}.header__upper-title img{display:inline-block;width:24px;height:auto;margin-right:8px}.header__upper-link{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.header__upper-icon{display:inline-block;width:20px;height:20px;margin-right:8px}.header__lower{-ms-flex-wrap:wrap;flex-wrap:wrap;-ms-flex-pack:center;padding-top:16px;padding-bottom:8px;border-bottom:1px solid #e5ebed}.header__logo,.header__lower{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;justify-content:center}.header__logo{-webkit-box-flex:0;-ms-flex:0 0 100%;flex:0 0 100%;-ms-flex-pack:center;margin:0 0 8px}.header__logo img{width:100%;height:auto;max-width:169px}.header__controls{-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-ms-flex-pack:center}.header__controls,.header__controls_group{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;justify-content:center;margin:0 0 8px}.header__controls_group{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;position:relative;-ms-flex-pack:center;border:none;border-radius:4px;color:inherit}.header__controls_group:last-child{margin:0}.header__controls_label{position:relative;z-index:5;cursor:pointer}.header__controls_label:hover{color:#fff}.header__controls_label:hover:after{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='10' height='5' viewBox='0 0 10 5' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill='%23fff' d='M0 0l5 5 5-5z'/%3E%3C/svg%3E")}.header__controls_label:after{content:"";display:inline-block;width:10px;height:5px;margin-left:8px;background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='10' height='5' viewBox='0 0 10 5' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill='%23B4C3CA' d='M0 0l5 5 5-5z'/%3E%3C/svg%3E");background-size:contain;background-position:50%;background-repeat:no-repeat;vertical-align:middle}.header__controls_dropdown{position:absolute;z-index:6;-webkit-box-sizing:border-box;box-sizing:border-box;right:0;width:260px;max-width:90vw;margin:12px 0 0;opacity:0;background:#fff;border-radius:2px;-webkit-box-shadow:0 1px 3px 1px rgba(0,0,0,.1);box-shadow:0 1px 3px 1px rgba(0,0,0,.1);-webkit-transition:opacity .3s ease;transition:opacity .3s ease;pointer-events:none}.header__controls_dropdown--active{opacity:1;pointer-events:all}.header__controls_dropdown--active:before{content:"";position:absolute;left:50%;top:-5px;width:10px;height:10px;background-color:inherit;-webkit-transform:translateX(-50%) rotate(45deg);transform:translateX(-50%) rotate(45deg)}.header__controls_help_text{padding:16px;color:#8091a5;line-height:1.29}.header__controls_button{-webkit-box-sizing:border-box;box-sizing:border-box;height:auto;width:100%;margin:0;padding:16px;border-radius:0;font-size:1em;text-align:left;line-height:1em}.header__controls_button,.header__controls_button:hover{background:#fff;color:#263545}.header__controls_button--active,.header__controls_button--active:hover{background:#d3dce0}.header__controls_button_help{display:inline-block;margin-top:8px;font-size:.875em;line-height:1.5em;color:#8091a5}.footer{padding:32px 0 16px}.footer p{margin:0}.footer__upper{-ms-flex-wrap:wrap;flex-wrap:wrap;min-height:80px;border-bottom:1px solid #e5ebed}.footer__upper,.footer__upper>*{display:-webkit-box;display:-ms-flexbox;display:flex}.footer__upper>*{-webkit-box-align:center;-ms-flex-align:center;align-items:center}.footer__navigation{-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto}.footer__apps{-webkit-box-flex:1;-ms-flex:1 0 auto;flex:1 0 auto;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.footer__apps a{display:inline-block;width:138px}.footer__apps a+a{margin-left:8px}.footer__apps a img{width:100%;height:auto}.footer__lower{display:-webkit-box;display:-ms-flexbox;display:flex;padding:16px 8px 0;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.footer__lower>*{margin:0 0 16px}.footer__logo{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:140px;height:28px;margin-right:16px}.footer__disclaimer-text{-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto;color:#a9b9c0;font-size:.75em;line-height:1.5;text-align:justify}.footer__social{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.footer__social a+a{margin-left:16px}.footer__social svg{color:#a9b9c0;width:24px;height:24px}.breadcrumb{margin-bottom:8px;font-size:.875em}.breadcrumb ul{display:-webkit-box;display:-ms-flexbox;display:flex;list-style:none;-ms-flex-wrap:wrap;flex-wrap:wrap;padding:0}.breadcrumb ul,.breadcrumb ul li{margin:0}.breadcrumb ul li:after{content:"";display:inline-block;background:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='5' height='8' viewBox='0 0 5 8'%3E%3Cpath fill='none' stroke='%23536171' stroke-width='1.5' d='M1 7l3-2.89L1 1'/%3E%3C/svg%3E");background-size:contain;background-position:50%;background-repeat:no-repeat;width:4px;height:8px;padding:0 8px}.breadcrumb ul li:last-child:after{display:none}.breadcrumb ul li a{display:inline-block}.breadcrumb ul li a:hover{color:#3c80cf}.editorial-features{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-ms-flex-line-pack:center;align-content:center;margin-bottom:16px}.editorial-features a{color:#5c9fef}.editorial-features__item{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-line-pack:center;align-content:center;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start;margin-right:8px}.editorial-features__item:last-child{margin-right:0}.editorial-features__hint-wrapper{position:relative;z-index:3;margin-left:8px}.editorial-features__hint-wrapper:hover>div{opacity:1;-webkit-transition-delay:0s;transition-delay:0s}.editorial-features__hint-icon{width:24px;height:24px;cursor:help}.editorial-features__hint-message{position:absolute;z-index:4;-webkit-box-sizing:border-box;box-sizing:border-box;top:24px;left:50%;-webkit-transform:translateX(-50%);transform:translateX(-50%);width:260px;max-width:90vw;margin:12px 0 0;padding:16px;background:#536171;border-radius:2px;-webkit-box-shadow:0 1px 3px 1px rgba(0,0,0,.1);box-shadow:0 1px 3px 1px rgba(0,0,0,.1);opacity:0;-webkit-transition:opacity .3s ease .3s;transition:opacity .3s ease .3s;pointer-events:none;font-size:.75em;line-height:1.5;color:#fff}.editorial-features__hint-message:before{content:"";position:absolute;left:50%;top:-5px;width:10px;height:10px;background-color:inherit;-webkit-transform:translateX(-50%) rotate(45deg);transform:translateX(-50%) rotate(45deg)}.main-navigation ul{display:-webkit-box;display:-ms-flexbox;display:flex;list-style:none;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;padding:0}.main-navigation ul,.main-navigation ul li{margin:0}.main-navigation ul li+li{margin-left:8px}.main-navigation ul li a{display:block;text-transform:uppercase;font-weight:700;padding:.7em 1em;color:#8091a5;border-radius:4px}.main-navigation ul li a.active,.main-navigation ul li a:hover{background:#f7f9fa}.main-navigation ul li a.active{color:#536171}.modal{display:none}.modal--visible{display:block}.modal__overlay{position:fixed;z-index:7;left:0;right:0;top:0;bottom:0;opacity:.3;background-color:#3b3d40;cursor:pointer}.modal__wrapper{position:fixed;z-index:8;left:50%;top:5vh;-webkit-transform:translateX(-50%);transform:translateX(-50%);-webkit-box-sizing:border-box;box-sizing:border-box;width:80vw;max-width:800px;max-height:90vh;overflow:auto;padding:32px;background-color:#fff;-webkit-box-shadow:0 1px 3px 1px rgba(0,0,0,.1);box-shadow:0 1px 3px 1px rgba(0,0,0,.1);border-radius:4px}.modal__title{margin-bottom:2vh;font-size:1em;text-align:center}.modal__content{color:#8091a5;font-size:.875em;line-height:1.3em}.modal__content a{color:#5c9fef;text-decoration:underline}.modal__content a:hover{color:#3c80cf}.modal__cta-wrapper{text-align:center;margin-top:32px}.modal__cta{display:inline-block;padding-bottom:.3em;border-bottom:1px solid #5c9fef;color:#5c9fef;font-size:.75em;font-weight:700;line-height:2.17;letter-spacing:2px;text-transform:uppercase}.modal__cta:hover{color:#3c80cf;border-bottom-color:#3c80cf}.modal__close-wrapper{position:absolute;z-index:9;top:16px;right:16px}.modal__close-button{display:block;width:18px;height:18px;color:#a9b9c0}.modal__close-button svg{width:100%;height:100%}.pill{display:inline-block;vertical-align:middle;padding:0 8px;background:#3c80cf;border-radius:4px;text-transform:uppercase;font-size:14px;font-size:.875rem;letter-spacing:1px;color:#fff}.pill--draft{background-color:#e6ae17}.pill--pending-changes{background-color:#3e97d6}.sidebar-menu__list{list-style:none;margin:0;padding:0}.sidebar-menu__item{margin:0 0 16px;padding:0;font-size:.9em;line-height:1.8}.sidebar-menu__link{display:block;color:#8091a5}.sidebar-menu__link.active,.sidebar-menu__link:hover{color:#536171}.sidebar-menu__link.active{font-family:robotomedium,Helvetica,sans-serif}.table-of-contents__list{list-style:none;margin:0;padding:0;padding-left:32px}.table-of-contents__item{margin:0 0 8px;padding:0;font-size:.9em;line-height:1.8}.table-of-contents__link{display:block;color:#8091a5}.table-of-contents__link.active,.table-of-contents__link:hover{color:#536171}.table-of-contents__link.active{position:relative;font-family:robotomedium,Helvetica,sans-serif}.table-of-contents__link.active:after,.table-of-contents__link.active:before{position:absolute;top:0}.table-of-contents__link.active:before{content:"";left:-48px;bottom:0;width:3px;background:#536171}.table-of-contents__link.visited{position:relative}.table-of-contents__link.visited:after,.table-of-contents__link.visited:before{position:absolute;top:0}.table-of-contents__link.visited:after{content:"";display:block;width:16px;height:16px;top:50%;left:-32px;-webkit-transform:translateY(-50%);transform:translateY(-50%);background:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='20' height='20' viewBox='0 0 20 20' fill='%23536171'%3E%3Cg fill='none' fill-rule='evenodd'%3E%3Cpath d='M0 0h20v20H0z'/%3E%3Cpath fill='%23A9B9C0' fill-rule='nonzero' d='M9.992 1.667c-4.6 0-8.325 3.733-8.325 8.333s3.725 8.333 8.325 8.333c4.608 0 8.341-3.733 8.341-8.333S14.6 1.667 9.992 1.667zm.008 15A6.665 6.665 0 0 1 3.333 10 6.665 6.665 0 0 1 10 3.333 6.665 6.665 0 0 1 16.667 10 6.665 6.665 0 0 1 10 16.667z'/%3E%3Cpath stroke='%23A9B9C0' stroke-width='1.333' d='M13.333 7.5l-5 5-1.666-1.786'/%3E%3C/g%3E%3C/svg%3E");background-size:contain;background-position:50%;background-repeat:no-repeat}body{background-color:#fff;color:#536171;font-family:roboto,Helvetica,sans-serif;font-size:16px;font-size:1rem;line-height:1.5em}.main{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;min-height:100vh}.main__header{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto}.main__content{-webkit-box-flex:1;-ms-flex:1 0 auto;flex:1 0 auto;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.main__footer{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto}.hljs{display:block;overflow-x:auto;padding:.5em;color:#333;background:#f8f8f8}.hljs-comment,.hljs-quote{color:#998;font-style:italic}.hljs-keyword,.hljs-selector-tag,.hljs-subst{color:#333;font-weight:700}.hljs-literal,.hljs-number,.hljs-tag .hljs-attr,.hljs-template-variable,.hljs-variable{color:teal}.hljs-doctag,.hljs-string{color:#d14}.hljs-section,.hljs-selector-id,.hljs-title{color:#900;font-weight:700}.hljs-subst{font-weight:400}.hljs-class .hljs-title,.hljs-type{color:#458;font-weight:700}.hljs-attribute,.hljs-name,.hljs-tag{color:navy;font-weight:400}.hljs-link,.hljs-regexp{color:#009926}.hljs-bullet,.hljs-symbol{color:#990073}.hljs-built_in,.hljs-builtin-name{color:#0086b3}.hljs-meta{color:#999;font-weight:700}.hljs-deletion{background:#fdd}.hljs-addition{background:#dfd}.hljs-emphasis{font-style:italic}.hljs-strong{font-weight:700}.course-card{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;padding:32px;border-radius:4px;-webkit-box-shadow:0 1px 3px 1px rgba(0,0,0,.1);box-shadow:0 1px 3px 1px rgba(0,0,0,.1)}.course-card__categories{-webkit-box-flex:0;-ms-flex:0 0 1.5em;flex:0 0 1.5em;margin-bottom:16px;height:1.5em}.course-card__category{display:inline-block;color:#8091a5;font-size:.75em;font-family:robotomedium,Helvetica,sans-serif}.course-card__category:after{content:" • ";display:inline-block;padding:0 .5em}.course-card__category:last-child:after{display:none}.course-card__category-link{display:inline-block;letter-spacing:2px}.course-card__title{-webkit-box-flex:0;-ms-flex:0 1 12vh;flex:0 1 12vh;max-height:120px;margin:0;overflow:hidden;padding-bottom:16px;margin-bottom:16px;border-bottom:1px solid #e5ebed;font-family:robotomedium,Helvetica,sans-serif;font-weight:400;font-size:1.625em;line-height:1.38}.course-card__title a:after{content:" "}.course-card__title .pill{margin-bottom:3px}.course-card__description{-webkit-box-flex:0;-ms-flex:0 1 18vh;flex:0 1 18vh;max-height:150px;overflow:hidden;margin:0 0 32px;line-height:1.63;color:#536171}.course-card__link-wrapper{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto}.course-card__link{display:inline-block;padding-bottom:.3em;border-bottom:1px solid #5c9fef;text-transform:uppercase;color:#5c9fef;font-size:.75em;line-height:2.17;letter-spacing:2px}.course-card__link:hover{color:#3c80cf;border-bottom-color:#3c80cf}.course__title{margin-bottom:32px}.course__overview{font-family:robotomedium,Helvetica,sans-serif}.course__overview-title{border-bottom:1px solid #eee;padding:16px 0;margin:0;line-height:1.31;font-weight:400;text-transform:uppercase;text-align:center}.course__overview-item{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding:16px;border-bottom:1px solid #eee;line-height:1.54;font-size:.8em}.course__overview-icon{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:24px;height:24px;padding-right:16px}.course__overview-value{-webkit-box-flex:1;-ms-flex:1 0 auto;flex:1 0 auto}.course__overview-cta-wrapper{padding:16px 0;text-align:center}.course__overview-cta{margin:0}.course__cta{margin-bottom:0}.module-copy img{display:block;max-width:100%;height:auto;margin:0 auto;-webkit-box-shadow:0 1px 3px 1px rgba(0,0,0,.1);box-shadow:0 1px 3px 1px rgba(0,0,0,.1)}.module-copy--emphasized{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-ms-flex-wrap:wrap;flex-wrap:wrap;padding:24px 0;background-color:#8091a5;border-radius:4px;color:#c3cfd5}.module-copy--emphasized a{color:inherit}.module-copy--emphasized a:hover{color:#fff}.module-copy__first--emphasized{-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto;width:50vw;padding:0 32px}.module-copy__second--emphasized{-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.module-copy__headline--emphasized{color:#fff;font-size:1.25em}.module-copy__copy--emphasized{font-size:.875em}.module-copy__cta--emphasized{background-color:#536171;color:#fff;margin-bottom:0}.module-hero-image__wrapper{position:relative;overflow:hidden;max-height:60vh;border-radius:4px}.module-hero-image__image{display:block;max-width:100%;height:auto;margin:0 auto}.module-hero-image__headline-wrapper{position:absolute;left:0;right:0;top:50%;-webkit-transform:translateY(-50%);transform:translateY(-50%)}.module-hero-image__headline{color:#fff;text-align:center;font-size:4.5vw;line-height:1;text-shadow:0 3px 0 #b2a98f,0 14px 10px rgba(0,0,0,.15),0 24px 2px rgba(0,0,0,.1),0 34px 30px rgba(0,0,0,.1)}.module-higlighted-course__wrapper{position:relative;overflow:hidden;height:50vh;min-height:250px;max-height:500px;border-radius:4px;background-size:cover;background-repeat:no-repeat;background-position:50%}.module-higlighted-course__overlay{z-index:1;position:absolute;left:0;right:0;top:0;bottom:0;opacity:.8;border-radius:4px;background-color:#3c3d41}.module-higlighted-course__content{z-index:2;position:absolute;left:0;right:0;top:50%;-webkit-transform:translateY(-50%);transform:translateY(-50%);display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;padding:32px 64px;color:#a9b9c0}.module-higlighted-course__categories{-webkit-box-flex:0;-ms-flex:0 0 1.5em;flex:0 0 1.5em}.module-higlighted-course__category{display:inline-block;margin-right:32px;font-size:.75em;letter-spacing:2px}.module-higlighted-course__title{-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto;margin:0 0 8px;color:#fff;font-size:2em;line-height:1.3;white-space:nowrap}.module-higlighted-course__description-wrapper{-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto;max-width:400px;line-height:1.3}.module-higlighted-course__description-wrapper p{margin:0}.module-higlighted-course__link-wrapper{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;margin-top:32px}.module-higlighted-course__link{display:inline-block;border-bottom:1px solid #fff;text-transform:uppercase;color:#fff;font-size:.75em;line-height:2.17;letter-spacing:2px}.module{-webkit-box-sizing:border-box;box-sizing:border-box;width:100%;max-width:980px;margin:0 auto 32px;padding:0 2vw}.module img{width:100%;height:auto}.module:last-child{margin-bottom:0}.modules-container{-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto}.lesson__title{margin-bottom:32px}.lesson__cta{margin-bottom:0}.lesson-module{margin-bottom:32px}.lesson-module:last-child{margin-bottom:0}.lesson-module-copy img{display:block;max-width:100%;height:auto;margin:0 auto;-webkit-box-shadow:0 1px 3px 1px rgba(0,0,0,.1);box-shadow:0 1px 3px 1px rgba(0,0,0,.1)}.lesson-module-code__header{white-space:nowrap;overflow:auto}.lesson-module-code__code-area{background:#f7f9fa}.lesson-module-code__trigger{display:inline-block;height:30px;padding:0 8px;margin-right:8px;background:#fff;border-top:3px solid transparent;line-height:30px;font-family:robotomedium,Helvetica,sans-serif;font-size:.875em;color:#8091a5;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.lesson-module-code__trigger:last-child{margin-right:0}.lesson-module-code__trigger:hover{color:#3c80cf}.lesson-module-code__trigger--active{background:#f7f9fa;color:#536171!important;cursor:default;border-color:#c3cfd5}.lesson-module-code__code{display:none}.lesson-module-code__code pre{margin:0}.lesson-module-code__code--active{display:block}.lesson-module-image__figure{margin:0}.lesson-module-image__image{display:block;max-width:100%;height:auto;margin:0 auto;-webkit-box-shadow:0 1px 3px 1px rgba(0,0,0,.1);box-shadow:0 1px 3px 1px rgba(0,0,0,.1)}.lesson-module-image__caption{margin-top:16px;font-style:italic;line-height:1.63;color:#a9b9c0}@media (min-width:700px){.layout-no-sidebar{padding-left:276px}.layout-sidebar{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start;padding:0 16px}.layout-sidebar__sidebar{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;width:228px;border-radius:4px;-webkit-box-shadow:0 1px 3px 1px rgba(0,0,0,.1);box-shadow:0 1px 3px 1px rgba(0,0,0,.1)}.layout-sidebar__content{-webkit-box-flex:0;-ms-flex:0 1 732px;flex:0 1 732px;width:100%;-webkit-box-sizing:border-box;box-sizing:border-box;margin:0 0 0 32px;padding:0}.grid-list{margin:0 -16px}.grid-list,.grid-list__item{-webkit-box-flex:0;-ms-flex:0 0 calc(50% - 32px);flex:0 0 calc(50% - 32px)}.grid-list__item{-webkit-box-sizing:border-box;box-sizing:border-box;margin:0 16px 32px}.header{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.header__upper{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.header__upper-copy{margin:0 0 0 16px;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.header__upper-title{-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start;margin:0}.header__lower{-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.header__logo{-webkit-box-flex:0;-ms-flex:0 0 200px;flex:0 0 200px;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start;margin:0}.header__controls{-webkit-box-flex:0;-ms-flex:0 0 auto;flex:0 0 auto;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;-ms-flex-pack:distribute;justify-content:space-around}.header__controls,.header__controls_group{margin:0 16px 0 0}.footer__apps{-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end}.footer__lower{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;padding:16px 16px 0}.footer__disclaimer-text{text-align:normal}.footer__social{padding:0 0 0 32px}.main-navigation ul{-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end}.modal__wrapper{top:20vh;max-height:70vh;padding:64px 96px}.modal__title{margin-bottom:32px;font-size:1.25em}.modal__content{font-size:1em;line-height:1.5em}.modal__close-wrapper{top:32px;right:32px}.modal__close-button{width:24px;height:24px}.course__overview{float:right;border-radius:4px;-webkit-box-shadow:0 1px 3px 1px rgba(0,0,0,.1);box-shadow:0 1px 3px 1px rgba(0,0,0,.1);width:228px;margin:0 0 32px 32px}.module-copy--emphasized{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.module-copy__first--emphasized{padding-left:32px}.module-copy__second--emphasized{-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto;padding:0 32px;width:20vw}.module-hero-image__headline{font-size:4em}.module-higlighted-course__title{font-size:3.25em}.module-higlighted-course__description-wrapper{font-size:1.25em}} \ No newline at end of file diff --git a/test/e2e/specs/the-example-app-spec.js b/test/e2e/specs/the-example-app-spec.js index ad18034..c38a928 100644 --- a/test/e2e/specs/the-example-app-spec.js +++ b/test/e2e/specs/the-example-app-spec.js @@ -6,9 +6,9 @@ describe('The Example App', () => { it('meta tags', () => { cy.title().should('equals', 'Home — The Example App', 'Home page should have correct meta title') - cy.get('meta[name="description"]').should('attr', 'content', 'This is The Example App, an application built to serve you as a reference while building your own applications using Contentful.') + cy.get('meta[name="description"]').should('attr', 'content', 'This is "The Example App", a reference for building your own applications using Contentful.') - cy.get('meta[name="twitter:card"]').should('attr', 'content', 'This is The Example App, an application built to serve you as a reference while building your own applications using Contentful.') + cy.get('meta[name="twitter:card"]').should('attr', 'content', 'This is "The Example App", a reference for building your own applications using Contentful.') cy.get('meta[property="og:title"]').should('attr', 'content', 'Home — The Example App') cy.get('meta[property="og:type"]').should('attr', 'content', 'article') @@ -17,7 +17,7 @@ describe('The Example App', () => { cy.get('meta[property="og:image:type"]').should('attr', 'content', 'image/jpeg') cy.get('meta[property="og:image:width"]').should('attr', 'content', '1200') cy.get('meta[property="og:image:height"]').should('attr', 'content', '1200') - cy.get('meta[property="og:description"]').should('attr', 'content', 'This is The Example App, an application built to serve you as a reference while building your own applications using Contentful.') + cy.get('meta[property="og:description"]').should('attr', 'content', 'This is "The Example App", a reference for building your own applications using Contentful.') cy.get('link[rel="apple-touch-icon"]') .should('attr', 'sizes', '120x120') @@ -46,8 +46,8 @@ describe('The Example App', () => { cy.get('section.modal .modal__wrapper').should('hidden') cy.get('.header__upper-title a').click() cy.get('section.modal .modal__wrapper').should('visible') - cy.get('section.modal .modal__title').should('contain', 'A referenceable example for developers using Contentful') - cy.get('section.modal .modal__content').should('contain', 'This is The Example App, an application built to serve you as a reference while building your own applications using Contentful.') + cy.get('section.modal .modal__title').should('contain', 'A reference for developers using Contentful') + cy.get('section.modal .modal__content').should('contain', 'This is "The Example App" in node.js. While building your own apps with Contentful,') // Close on background cy.get('section.modal .modal__overlay').click({force: true}) diff --git a/views/layout.pug b/views/layout.pug index 39d6635..90ee474 100644 --- a/views/layout.pug +++ b/views/layout.pug @@ -33,7 +33,7 @@ html use(xlink:href='/icons/icons.svg#info') span #{translate('whatIsThisApp', currentLocale.code)} .header__upper-copy - a.header__upper-link(href='https://images.contentful.com/82t39nctsu20/1JOkYZnY8YG0w88ImweME2/c8aef71dfe1ea633e16e17d99379416c/Github-repo_2x__1_.png' target='_blank' rel='noopener') + a.header__upper-link(href='https://github.com/contentful/the-example-app.nodejs' target='_blank' rel='noopener') svg.header__upper-icon use(xlink:href='/icons/icons.svg#github') | #{translate('viewOnGithub', currentLocale.code)} @@ -109,7 +109,7 @@ html .footer__disclaimer p.footer__disclaimer-text | #{translate('footerDisclaimer', currentLocale.code)}  - a(href='https://images.contentful.com/82t39nctsu20/1JOkYZnY8YG0w88ImweME2/c8aef71dfe1ea633e16e17d99379416c/Github-repo_2x__1_.png' target='_blank' rel='noopener') #{translate('viewOnGithub', currentLocale.code)} + a(href='https://github.com/contentful/the-example-app.nodejs' target='_blank' rel='noopener') #{translate('viewOnGithub', currentLocale.code)} | .  a(href=`/imprint${queryString}` ) #{translate('imprintLabel', currentLocale.code)} | .  @@ -131,11 +131,13 @@ html .modal__wrapper h1.modal__title #{translate('modalTitle', currentLocale.code)} .modal__content - p #{translate('modalIntro', currentLocale.code)} + p #{translate('modalIntro', currentLocale.code)}  + a(href='https://github.com/contentful/the-example-app.nodejs' target='_blank' rel='noopener') GitHub + | . p - | #{translate('modalCodeIntro', currentLocale.code)}  - a(href='https://github.com/contentful/the-example-app.nodejs' target='_blank' rel='noopener') Github - | . + | #{translate('modalSpaceIntro', currentLocale.code)}  + a(href='https://github.com/contentful/content-models/tree/master/the-example-app' target='_blank' rel='noopener')=translate('modalSpaceLinkLabel', currentLocale.code) + | . .modal__cta-wrapper a(href='#').modal__cta.close #{translate('modalCTALabel', currentLocale.code)} .modal__close-wrapper