:root {

    /* Typography. */

    --font-sans: "Helvetica Neue", "Segoe UI", "Calibri Light", "Liberation Sans", "sans-serif";
    --font-serif:               serif;
    --font-mono:                monospace;

    --font-size:                15px;

    --line-height-compact:      1;
    --line-height-condensed:    1.3;
    --line-height:              1.6;
    --line-height-airy:         1.65;
    --line-height-spacious:     1.7;
    --line-height-headings:     var(--line-height-condensed);


    /* Colors. */

    --color-text:               #333;
    --color-text-strong:        #111;
    --color-text-shy:           #555;
    --color-text-weak:          #777;
    --color-text-invert:        #fff;
    --color-text-invert-rgb:    255, 255, 255;

    --color-brand:              #5a5aa6;
    --color-brand-rgb:          90, 90, 166;
    --color-accent-1:           #b34db3;
    --color-accent-2:           #24a8a8;

    --color-link:               var(--color-brand);
    --color-link-visited:       #ba5eba;
    --color-link-hover:         #4c4c8d;
    --color-link-visited-hover: #a145a1;

    --color-blockfill:          #efefef;
    --color-bg-dark:            #383838;
    --color-bg-dark-rgb:        51, 51, 51;
    --color-border:             #777;

    --color-info:               #515195;
    --color-info-light:         #eeeef6;
    --color-success:            #297d4e;
    --color-success-light:      #eaf3ee;
    --color-warning:            #815e08;
    --color-warning-light:      #f4edda;
    --color-alert:              #b01030;
    --color-alert-light:        #f8d0d8;


    /* Layouts. */

    --page-min-width:           300px;
    --content-area-max-width:   1000px;

    --grid-gutter-width:        1.5rem;

    --gap-micro:                0.5rem;
    --gap-small:                0.75rem;
    --gap:                      var(--grid-gutter-width);
    --gap-large:                3rem;
    --gap-mega:                 5rem;

    --vari-gap-micro:           var(--gap-micro);
    --vari-gap-small:           var(--gap-small);
    --vari-gap:                 var(--gap);
    --vari-gap-large:           var(--gap-large);
    --vari-gap-mega:            var(--gap-mega);

    --squeeze-width:            100%;
}

@media (min-width: 500px) {
    :root {
        --vari-gap-micro:       0.75rem;
        --vari-gap-small:       1.25rem;
        --vari-gap:             2.25rem;
        --vari-gap-large:       4rem;
        --vari-gap-mega:        6rem;
    }
}

@media (min-width: 800px) {
    :root {
        --font-size:            16px;

        --vari-gap-micro:       1rem;
        --vari-gap-small:       1.5rem;
        --vari-gap:             2.75rem;
        --vari-gap-large:       5rem;
        --vari-gap-mega:        7rem;
    }
}

*,
*::before,
*::after {
    box-sizing: border-box;
}

html,
body {
    margin: 0;
    padding: 0;
}

html {
    font-family: var(--font-sans);
    font-size: var(--font-size);
    line-height: var(--line-height);

    background: white;
    color: var(--color-text);
}

body {
    background: white;
    color: var(--color-text);
}

p {
    margin: 1em 0;
}

a {
  text-decoration: none;
  border-bottom: 1px solid currentColor;
}
a,
a:active {
    color: var(--color-link);
}
a:focus {
    outline: 1px dotted currentColor;
    outline-offset: 1px;
}
a:visited {
    color: var(--color-link-visited);
}
a:hover {
    color: var(--color-link-hover);
}
a:visited:hover {
    color: var(--color-link-visited-hover);
}

strong {
    color: var(--color-text-strong);
}

ul {
    padding-left: 1em;
}

ol {
    padding-left: 1.35em;
}

dl {

}

dt {
    color: var(--color-text-strong);
    font-weight: 700;
}
dd + dt {
    margin-top: 0.3em;
}

dd {
    margin-left: 1em;
}

blockquote {
  margin: 2em 0 2em 2em;
  padding: 1.5em 0 1.5em 1.5em;

  border-left: 2px solid var(--color-border);
}

pre,
code,
kbd,
samp {
  font-family: var(--font-mono);

  background: var(--color-blockfill);
}

pre {
  padding: 1em;
}

code {
  /*Don't wrap, not even at hyphens.*/
  hyphens: none;
  white-space: nowrap;
}

pre code {
    display: block;
    max-width: 100%;
    overflow: auto;

    hyphens: initial;
    word-wrap: normal;
    white-space: pre;

    font-size: 0.9em;
}

hr {
  margin-top: var(--gap-small);
  margin-bottom: var(--gap-small);

  height: 0;
  background: 0;
  border: 0;
  border-top: 1px solid var(--color-border);
}

::selection {
  background: rgba(var(--color-brand-rgb), 1);
  color: var(--color-text-invert);
}
::-moz-selection {
  background: rgba(var(--color-brand-rgb), 1);
  color: var(--color-text-invert);
}

img {
    max-width: 100%;
    height: auto;
}


.color-zone--brand {
    background-color: var(--color-brand);
    color: rgba(var(--color-text-invert-rgb), 0.95);

    -webkit-tap-highlight-color: rgba(var(--color-brand-rgb), 0.25);
}

.color-zone--brand a:not(.button),
.color-zone--brand a:not(.button):active,
.color-zone--brand a:not(.button):visited {
    color: rgba(var(--color-text-invert-rgb), 0.95);
}
.color-zone--brand a:not(.button):hover,
.color-zone--brand a:not(.button):visited:hover {
    color: rgba(var(--color-text-invert-rgb), 0.95);
}

.color-zone--brand::selection,
.color-zone--brand ::selection {
    background: rgba(var(--color-bg-dark-rgb), 0.5);
    color: var(--color-text-invert);
}
.color-zone--brand::-moz-selection,
.color-zone--brand ::-moz-selection {
    background: rgba(var(--color-bg-dark-rgb), 0.5);
    color: var(--color-text-invert);
}







.color-zone--accent-1 {
  /*@include color-zone-accent-1();*/
}






.color-zone--accent-2 {
  /*@include color-zone-accent-2();*/
}






.color-zone--dark {
    background-color: var(--color-bg-dark);
    color: rgba(var(--color-text-invert-rgb), 0.95);
}
.color-zone--dark a:not(.button),
.color-zone--dark a:not(.button):active,
.color-zone--dark a:not(.button):visited {
    color: rgba(var(--color-text-invert-rgb), 0.95);
}
.color-zone--dark a:not(.button):hover,
.color-zone--dark a:not(.button):visited:hover {
    color: rgba(var(--color-text-invert-rgb), 0.95);
}





.color-zone--blockfill {
    background: var(--color-blockfill);
    color: var(--color-text-strong);
}






.color-zone:not(.color-zone--blockfill) strong,
.color-zone:not(.color-zone--blockfill) dt,
.color-zone:not(.color-zone--blockfill) h1,
.color-zone:not(.color-zone--blockfill) h2,
.color-zone:not(.color-zone--blockfill) h3,
.color-zone:not(.color-zone--blockfill) h4,
.color-zone:not(.color-zone--blockfill) h5,
.color-zone:not(.color-zone--blockfill) h6,
.color-zone:not(.color-zone--blockfill) .pseudo-heading,
.color-zone:not(.color-zone--blockfill) .box__title {
    color: var(--color-text-invert);
}

/**
 * Layouts' shared rules.
 */

/*See http://nicolasgallagher.com/micro-clearfix-hack/ .*/
/*WARNING: This rule interferes with ::before and ::after pseudo-elements.*/
/*Take that into account when applying this anywhere.*/
.micro-clearfix::before,
.micro-clearfix::after {
    content: '';
    display: table;
}
.micro-clearfix::after {
    clear: both;
}



.fit-content > *:first-child {
    margin-top: 0;
}
.fit-content > *:last-child {
    margin-bottom: 0;
}


.grid-item + .grid-item {
    margin-top: var(--grid-gutter-width);
}

@media(min-width: 600px) {
    .grid {
        display: flex;
        flex-direction: row;
        flex-wrap: wrap;

        align-items: stretch;

        margin-left: calc(var(--grid-gutter-width) * -0.5);
        margin-right: calc(var(--grid-gutter-width) * -0.5);
    }

    .grid-item {
        flex: 1 1 auto;

        padding-left: calc(var(--grid-gutter-width) * 0.5);
        padding-right: calc(var(--grid-gutter-width) * 0.5);
    }

    /* Default grid provides 2-cols, without any further declarations. */
    .grid-item:nth-child(-n + 2) {
        margin-top: 0;
    }
    .grid-item {
        width: 50%;
    }
}


@media(min-width: 1000px) {

    /* 3-column grid. */

    .grid--cols-3 .grid-item {
        flex: 0 1 auto;
    }
    .grid--cols-3 .grid-item:nth-child(-n + 3) {
        margin-top: 0;
    }
    .grid--cols-3 .grid-item {
        width: 33.3%;
    }
}


.stackable--small {
    margin-top: var(--vari-gap-small);
    margin-bottom: var(--vari-gap-small);
}

.stackable {
    margin-top: var(--vari-gap);
    margin-bottom: var(--vari-gap);
}

.stackable--large {
    margin-top: var(--vari-large);
    margin-bottom: var(--vari-large);
}

.squeeze {
  margin-left: auto;
  margin-right: auto;

  max-width: var(--squeeze-width);
}

/**
Page levels and page centering.

Horizontal sections - often seen as full-width colourful stripes - on the page.
*/

.page-level {
    min-width: var(--page-min-width);

    padding-left: var(--vari-gap-small);
    padding-right: var(--vari-gap-small);
}

.page-level.has-bg {
    padding-top: var(--vari-gap-large);
    padding-bottom: var(--vari-gap-large);
}

.page-level__content {
    max-width: var(--content-area-max-width);

    margin-top: var(--vari-gap-large);
    margin-bottom: var(--vari-gap-large);
    margin-left: auto;
    margin-right: auto;
}

.has-bg .page-level__content {
    margin-top: 0;
    margin-bottom: 0;
}

.page-level__title,
.page-level-title-appearance {
  margin-top: 0;
  margin-bottom: var(--vari-gap);
}


.description-appearance {
  font-style: italic;
}
.description-appearance strong {
    color: currentColor;
}
.description-appearance p,
.description-appearance ul,
.description-appearance ol {
    margin-top: 0.5em;
    margin-bottom: 0.5em;

    line-height: var(--line-height-condensed);
}
.description-appearance em {
    /*To make it stand out in an all-italic text.*/
    font-style: normal;
}


h1,
h2,
h3,
h4,
h5,
h6,
.pseudo-heading {
    display: block;
    line-height: var(--line-height-headings);

    font-family: var(--font-sans);
    font-weight: normal;
    font-style: normal;
    text-rendering: optimizeLegibility;

    color: var(--color-text-strong);
}

h1,
.h1 {
    font-size: 2rem;
    margin-top: 2em;
    margin-bottom: 1em;
}
h2,
.h2 {
    font-size: 1.6rem;
    margin-top: 1.75em;
    margin-bottom: 0.85em;
}
h3,
.h3 {
    font-size: 1.45rem;
    margin-top: 1.75em;
    margin-bottom: 0.85em;
}
h4,
.h4 {
    font-size: 1.3rem;
    margin-top: 1.5em;
    margin-bottom: 0.65em;
}
h5,
.h5 {
    font-size: 1.15rem;
    margin-top: 1.5em;
    margin-bottom: 0.65em;
}
h6,
.h6 {
    font-size: 1.05rem;
    margin-top: 1.5em;
    margin-bottom: 0.6em;
}

h2.underlined,
.h2.underlined {
    font-size: 1.6rem;
    margin-top: 1.75em;
    padding-bottom: 0.25em;
    margin-bottom: 0.85em;

    border-bottom: 1px solid var(--color-border);
}


.hero,
.hero p,
.hero li {
    line-height: var(--line-height);
}
.hero p {
    margin: 1em 0;
}

.cta-tile {
    display: block;

    background-color: var(--color-blockfill);
    background-size: cover;
    background-position: center center;
    background-repeat: no-repeat;
    background-attachment: scroll;

    border: none;
    text-decoration: none;
}

.cta-tile__aspect-ratio {
    position: relative;

    display: block;
    padding-top: 70%;
}

.cta-tile__label {
    position: absolute;
    bottom: 0;
    left: 0;
    right: 0;

    display: block;
    padding: 0.5rem 1em;

    font-size: 1.05em;
    font-weight: 700;

    background: rgba(255, 255, 255, 0.8);
    color: var(--color-text-shy);
    text-align: center;
}

@media (min-width: 500px) {
    .cta-tile__label {
        font-size: 1em;
    }
}

.cta-tile--mountains {
    background-position: center bottom;
    background-size: cover;
}

.cta-tile--mobile-cranes {
    /*background-position: center bottom;*/
    background-position: 60% bottom;
    background-size: 123%;
}

.cta-tile--drawings {
    background-position: 20% 61%;
    background-size: 160%;
}

@media (min-width: 1000px) {
    .cta-tile__label {
        padding: 1rem;

        font-size: 1.2rem;
        line-height: 1;
    }
}

.textbox {

}

.textbox--highlight {

}

.textbox--note {

}

/* FIXME. */
.notification .svg-icon {
    display: none;
}
.notification,
.sys-note {
    padding: var(--gap-small);
}

.notification + .notification,
.sys-note + .sys-note {
    margin-top: var(--gap-micro);
}


/* FIXME. */

.notification--info,
.sys-note--info {
    background: var(--color-info-light);
    color: var(--color-info);
}

.notification--success,
.sys-note--success {
    background: var(--color-success-light);
    color: var(--color-success);
}

.notification--warning,
.sys-note--warning {
    background: var(--color-warning-light);
    color: var(--color-warning);
}

.notification--alert,
.sys-note--alert {
    background: var(--color-alert-light);
    color: var(--color-alert);
}


.c-images-display__description {
    margin-bottom: 2.5rem;
}

.c-images-display__image-frame {
    text-align: center;
}

.c-images-display__image-caption {
    margin-top: 0.5rem;
    padding: 0 5%;

    text-align: center;
}

.c-images-display__item + .c-images-display__item {
    margin-top: 1.5rem;
}

.c-images-display .img-v {
    width: 720px;
    max-width: 100%;
}

/*.c-images-display__image-frame + .c-images-display__image-frame {*/
    /*margin-top: 1.66rem;*/
/*}*/

@media (min-width: 600px) {
    .c-images-display__image-frame + .c-images-display__image-frame {
        margin-top: 3rem;
    }
}

@media (min-width: 1200px) {
    .c-images-display__image-frame + .c-images-display__image-frame {
        margin-top: 4.5rem;
    }
}


.c-copyright-note {
    --copyright-note-display-width: 162px;
    --copyright-note-display-height: 18px;
}

.c-copyright-note__text {
    display: inline-block;
    font-size: 14px;
}

.c-copyright-note__display__wrap {
    width: var(--copyright-note-display-width);
    height: var(--copyright-note-display-height);

    display: flex;
    flex-wrap: nowrap;
    align-items: center;
    align-content: center;

    margin: 0.33rem 0 0;
}

.c-copyright-note__display__prefix {
    flex: 0 0 auto;

    margin-right: 0.33em;
}

.c-copyright-note__display {
    height: var(--copyright-note-display-height);

    flex: 1 1 auto;

    background-size: contain;
    background-attachment: scroll;
    background-repeat: no-repeat;
    background-position: center center;

    background-image: url('/files-payload/misc-content/copyright-1.png'), url('/files-payload/misc-content/copyright-2.png');
}

@media (min-width: 600px) {
    .c-copyright-note {
        text-align: center;
    }

    .c-copyright-note__display__wrap {
        margin-left: auto;
        margin-right: auto;
    }
}


.string-hash {
    position: relative;

    min-height: 1.5em;
    min-width: 24em; /* Manual setting based on data-longest-string attribute. */

    font-size: 0.7em;
    font-family: monospace;
    font-weight: bold;
}

.string-hash.has-rows-1 {
  min-height: 2.5em;
}

.string-hash.has-rows-2 {
  min-height: 4em;
}

.string-hash.has-rows-3 {
  min-height: 5em;
}

.string-hash.has-rows-4 {
  min-height: 6.5em;
}

.string-hash.has-rows-5 {
  min-height: 7.5em;
}

.string-hash.has-rows-6 {
  min-height: 9em;
}

.string-hash:after {
  background: transparent;
  bottom: 0;
  content: ' ';
  display: block;
  left: 0;
  position: absolute;
  right: 0;
  top: 0;
  z-index: 200;
}

.string-hash span {
  display: inline-block;
  position: absolute;
  width: 1em;
}

.string-hash span:before {
  content: attr(data-data);
  display: inline-block;
  font-size: 1.6em; /* Hack helping with kerning. */
  text-align: center;
  width: 1em;
}

.string-hash span.highlighted:before {
  border-radius: 0.05em;

  background: #ddd;
  box-shadow: 0 0 0 0.15em #ddd;
}

.sh__r--1 {
  top: 0;
}
.sh__r--2 {
  top: 1.5em;
}
.sh__r--3 {
  top: 3em;
}
.sh__r--4 {
  top: 4.5em;
}
.sh__r--5 {
  top: 6em;
}
.sh__r--6 {
  top: 7.5em;
}

// Cols.
.sh__c--1 {
  left: 0;
}
.sh__c--2 {
  left: 1em;
}
.sh__c--3 {
  left: 2em;
}
.sh__c--4 {
  left: 3em;
}
.sh__c--5 {
  left: 4em;
}
.sh__c--6 {
  left: 5em;
}
.sh__c--7 {
  left: 6em;
}
.sh__c--8 {
  left: 7em;
}
.sh__c--9 {
  left: 8em;
}
.sh__c--10 {
  left: 9em;
}
.sh__c--11 {
  left: 10em;
}
.sh__c--12 {
  left: 11em;
}
.sh__c--13 {
  left: 12em;
}
.sh__c--14 {
  left: 13em;
}
.sh__c--15 {
  left: 14em;
}
.sh__c--16 {
  left: 15em;
}
.sh__c--17 {
  left: 16em;
}
.sh__c--18 {
  left: 17em;
}
.sh__c--19 {
  left: 18em;
}
.sh__c--20 {
  left: 19em;
}
.sh__c--21 {
  left: 20em;
}
.sh__c--22 {
  left: 21em;
}
.sh__c--23 {
  left: 22em;
}
.sh__c--24 {
  left: 23em;
}
.sh__c--25 {
  left: 24em;
}
.sh__c--26 {
  left: 25em;
}
.sh__c--27 {
  left: 26em;
}
.sh__c--28{
  left: 27em;
}
.sh__c--29 {
  left: 28em;
}
.sh__c--30 {
  left: 29em;
}
.sh__c--31 {
  left: 30em;
}
.sh__c--32 {
  left: 31em;
}
.sh__c--33 {
  left: 32em;
}
.sh__c--34 {
  left: 33em;
}
.sh__c--35 {
  left: 34em;
}
.sh__c--36 {
  left: 35em;
}
.sh__c--37 {
  left: 36em;
}
.sh__c--38 {
  left: 37em;
}
.sh__c--39{
  left: 38em;
}
.sh__c--40 {
  left: 39em;
}

/* Page header and footer. */

.page__header,
.page__footer {
    padding: var(--vari-gap-small);
}

.page__header {
    padding-top: var(--vari-gap);
    padding-bottom: var(--vari-gap);
}

@media (min-width: 800px) {
	.page__header {
		padding-top: var(--vari-gap-small);
		padding-bottom: var(--vari-gap-small);
	}
}


/* Page main. */

.page__title,
.page-title-appearance {
    margin-top: 0;
    margin-bottom: var(--vari-gap);
}

.system-notifications {
    @include squeeze();
}


/* Page footer. */

:root {
    --footer-height: 7em;
}

html,
body {
    height: 100%;
}

.page__wrap {
    min-height: 100%;
    margin-bottom: calc(var(--footer-height) * -1);
}

.footer__room-preserve,
.page__footer {
    height: var(--footer-height);
}


/* Misc. */

#svg-sprite-housing {
    position: absolute;
    left: -10000em;
}



.page-header__site-name {
  font-weight: 700;
  font-size: 1.15em;
  letter-spacing: 0.075em;
}

.page-header__site-name,
.page-header__site-name a {
    text-decoration: none;
    border: none;
}

.page-header__site-tagline {
  margin-left: 0.75em;
  font-size: 0.9em;

  font-style: italic;
}


.page__footer {
    display: flex;

    align-items: center;
}

.page__footer > * {
    flex: 0 1 auto;
}

@media (min-width: 600px) {
    .page__footer {
        justify-content: center;
    }
}


.homepage-content__wrapper {
    padding-left: 10%;
    padding-right: 10%;
}

@media (min-width: 600px) {
    .homepage-content__wrapper {
        padding-top: 12%;
    }
}

@media (min-width: 1000px) {
    .homepage-content__wrapper {
        /*padding-top: 6%;*/

        padding-left: 0;
        padding-right: 0;
    }
}


.text-largish {
    font-size: 1.1em !important;
}

.text-smallish {
	font-size: 0.95em !important;
}
	
.text-strong {
    color: var(--color-text-strong) !important;
}

.text-compact {
    line-height: var(--line-height-compact) !important;
}

.text-condensed {
    line-height: var(--line-height-condensed) !important;
}

.text-airy {
    line-height: var(--line-height-airy) !important;
}

.text-spacious {
    line-height: var(--line-height-spacious) !important;
}

.color-text-weak {
    color: var(--color-text-weak) !important;
}

.color-text-shy {
    color: var(--color-text-shy) !important;
}


@media (min-width: 800px) {
	.text-smallish {
		font-size: 0.9em !important;
	}
}


.app-menu-toggle {
    background: var(--color-brand);
}


/* Meta-element for checking systems' wiring. */

.meta-check-systems-wiring--css-bg-image {
  padding-bottom: 66.7%;

  background: whitesmoke url('../../assets-static/demo/img3.png') scroll no-repeat center center;
  background-size: cover;
}
