Compare commits

..

No commits in common. "b7b4ab13b098c8967d5807d85821ed0433d44952" and "4045502ed54de4d5fc471b88d231c57d51c3615c" have entirely different histories.

31 changed files with 1099 additions and 648 deletions

15
site/content/tech.md Normal file
View File

@ -0,0 +1,15 @@
---
title: 'tech'
date: 2018-11-14T19:02:50-07:00
draft: false
---
# [Victor Hugo](https://github.com/netlify-templates/victor-hugo)
## A Hugo boilerplate for creating truly epic websites
<img src="https://d33wubrfki0l68.cloudfront.net/30790d6888bd8af863fb2b5c33a7f337cdbda243/4e867/images/hugo-logo-wide.svg" style="width: 40%" />
This is a boilerplate for using [Hugo](https://gohugo.io/) as a static site generator and [Webpack](https://webpack.js.org/) as your asset pipeline. Victor Hugo setup to use [PostCSS](http://postcss.org/) and [Babel](https://babeljs.io/) for CSS and JavaScript compiling/transpiling. This project is released under the [MIT license](LICENSE). Please make sure you understand its implications and guarantees.
## Enjoy!! 😸

View File

@ -1,28 +1,54 @@
<article id="about">
<div class="l-section l-relative l-screen-min-full">
<section class="l-relative l-screen-min-full">
<div class="l-underlay about-bg"></div>
<div class="l-section-pad l-wrapper l-flex-2-col-m about-section">
<div class="about-section__info">
<div class="about-icon"></div>
<h2>About Heading One</h2>
<p>Lorem fuga cupiditate quidem quia earum, hic. Iusto id beatae sit similique sequi! Earum veritatis mollitia iste ipsam totam deleniti Nam cupiditate recusandae tempore ab magnam! Officiis maxime incidunt asperiores?</p>
<p>Amet sed ullam ea dolore corrupti sit. Alias aut doloribus explicabo perferendis fuga? Quas nostrum aut earum tempora voluptatem, magnam? Veritatis corrupti perspiciatis at aliquid perspiciatis Eligendi reprehenderit quidem veniam</p>
<p>Amet dolore atque iure inventore vitae Dolores fuga porro quo odit et autem. Sint est nesciunt unde non aliquid officiis fugit Repellat cum sequi cum fugiat fugit Voluptatem quaerat quibusdam.</p>
</div>
<div class="about-section__card">
<div class="c-img-card about-card">
<div class="c-img-card__header about-card-bg-img about-card-bg-img-1"></div>
<div class="c-img-card__body">
<div class="c-img-card__body-bg about-card-bg-1"></div>
<h3>Card Heading</h3>
<p>
Amet recusandae optio quia velit quisquam. Dolorem ipsam non modi est quisquam? Quia inventore neque amet laudantium impedit a, dignissimos. Repellendus vero animi saepe tempora quibusdam! Repudiandae esse ex adipisci
</p>
</div>
</div>
</div>
</div>
</section>
<h2 class="section-header">About</h2>
<section class="l-relative l-screen-min-full">
<div class="l-underlay about-bg about-bg--secondary"></div>
<div class="l-section-pad l-wrapper l-flex-2-col-m about-section about-section--swapped">
<div class="about-section__info">
<div class="about-icon"></div>
<h2>About Heading Two</h2>
<p>Lorem fuga cupiditate quidem quia earum, hic. Iusto id beatae sit similique sequi! Earum veritatis mollitia iste ipsam totam deleniti Nam cupiditate recusandae tempore ab magnam! Officiis maxime incidunt asperiores?</p>
<p>Amet sed ullam ea dolore corrupti sit. Alias aut doloribus explicabo perferendis fuga? Quas nostrum aut earum tempora voluptatem, magnam? Veritatis corrupti perspiciatis at aliquid perspiciatis Eligendi reprehenderit quidem veniam</p>
<p>Amet dolore atque iure inventore vitae Dolores fuga porro quo odit et autem. Sint est nesciunt unde non aliquid officiis fugit Repellat cum sequi cum fugiat fugit Voluptatem quaerat quibusdam.</p>
</div>
<div class="about-section__card">
<div class="c-img-card about-card">
<div class="c-img-card__header about-card-bg-img about-card-bg-img-2"></div>
<div class="c-img-card__body">
<div class="c-img-card__body-bg about-card-bg-2"></div>
<h3>Card Heading</h3>
<p>
Amet recusandae optio quia velit quisquam. Dolorem ipsam non modi est quisquam? Quia inventore neque amet laudantium impedit a, dignissimos. Repellendus vero animi saepe tempora quibusdam! Repudiandae esse ex adipisci
</p>
</div>
</div>
</div>
</div>
</section>
<div class="l-section-block about-section">
<div class="l-wrapper">
<p>An about Section.</p>
</div>
</div>
<div class="l-section-block is-wide about-section">
<div class="l-wrapper is-wide">
<p>A wide about Section and a wide wrapper.</p>
</div>
</div>
<div class="l-section-block is-full-width about-section">
<div class="l-wrapper is-full-width">
<p>A full width about section and a full width wrapper.</p>
</div>
</div>
</div>
</article>

View File

@ -0,0 +1,8 @@
<!-- TODO convert to proper template -->
<div class="js-block anim-block anim-block--4 anim-block-br block-styles">
<div class="c-block__img" style="background-image: url(/img/img.jpg)"></div>
</div>
<div class="js-block anim-block anim-block--5>
</div>

View File

@ -0,0 +1,15 @@
<!-- TODO convert to proper template -->
<div class="card-layout">
<div class="c-img-card about-card">
<div class="c-img-card__header background-image"></div>
<div class="c-img-card__body">
<div class="c-img-card__body-bg body-background"></div>
<h3>Card Heading</h3>
<p>
Amet recusandae optio quia velit quisquam. Dolorem ipsam non modi est quisquam? Quia inventore neque amet laudantium impedit a, dignissimos. Repellendus vero animi saepe tempora quibusdam! Repudiandae esse ex adipisci
</p>
</div>
</div>
</div>
</div>

View File

@ -1,14 +1,29 @@
<article id="contact" class="l-section l-relative l-screen-min-full">
<article id="contact" class="l-relative l-screen-min-full contact-bg">
<div class="l-section-pad l-wrapper">
<h2 class="l-section-header contact-heading">Contact Us</h2>
<p class="h5">Complete this form and we will get back to you within one working day.</p>
<form action="https://mailthis.to/remailthis" method="POST" encType="multipart/form-data">
<ul class="u-no-list">
<li>
<label for="name">Name</label>
<input id="name" type="text" name="name">
</li>
<li>
<label for="email">E-mail:</label>
<input id="email" type="email" name="_replyto">
</li>
<li>
<label for="msg">Message:</label>
<textarea id="msg" name="message"></textarea>
</li>
<li><input type="hidden" name="_subject" value="Contact Form Submission"></li>
<li><input type="hidden" name="_honeypot" value=""></li>
<li><input type="hidden" name="_confirmation" value="Thank you, your message has been sent."></li> <li> <button id="js-form-send" type="submit">Send</button>
</li>
</ul>
</form>
<div class="l-underlay contact-bg"></div>
<h2 class="section-header">Contact Us</h2>
<div class="l-section-block no-margin no-pad-top">
{{ partial "templates/contact/form-basic.html" . }}
</div>
<div class="l-section-block no-margin no-pad-top">
{{ partial "templates/map/mapbox-basic.html" . }}
<h3 class="h4">Remember to Generate Access Token for URL</h3>
<div id="mapbox"></div>
</div>
</article>

View File

@ -1,3 +1,40 @@
<footer class="footer transition-fade">
{{ partial "templates/footer/footer-2-1-1.html" . }}
<div class="l-underlay footer-bg"></div>
<div class="l-wrapper l-section-pad l-section-pad--pb-reduce">
<ul class="l-flex-list-row footer__body">
<li class="footer__body-section footer__body-section--m-left-align">
<h3 class="footer__heading">Let's keep in touch!</h3>
<p>Find us on any of these platforms. We respond in 1-2 business days.</p>
<ul class="l-flex-list-row footer__social-list">
<li><span class="social-icon"></span></li>
<li><span class="social-icon"></span></li>
<li><span class="social-icon"></span></li>
<li><span class="social-icon"></span></li>
</ul>
</li>
<li class="footer__body-section footer__body-section--m-left-align footer__body-section--narrow">
<h3 class="footer__heading--small footer__heading">Useful Links</h3>
<ul class="l-list-bare">
<li><a class="footer__link" href="#">Link One</a></li>
<li><a class="footer__link" href="#">Link Two</a></li>
<li><a class="footer__link" href="#">Link Three</a></li>
<li><a class="footer__link" href="#">Link Four</a></li>
</ul>
</li>
<li class="footer__body-section footer__body-section--m-left-align footer__body-section--narrow">
<h3 class="footer__heading--small footer__heading">Other Resources</h3>
<ul class="l-list-bare">
<li><a class="footer__link" href="#">Link One</a></li>
<li><a class="footer__link" href="#">Link Two</a></li>
<li><a class="footer__link" href="#">Link Three</a></li>
<li><a class="footer__link" href="#">Link Four</a></li>
</ul>
</li>
</ul>
<ul class="l-flex-list-row footer__footer">
<li class="footer__term"><a class="footer__link" href="{{ "terms-and-conditions" | relURL }}">Terms and Conditions</a></li>
<li class="footer__term"><a class="footer__link" href="{{ "privacy-policy" | relURL }}">Privacy Policy</a></li>
</ul>
<p class="footer__attr">Copyright &copy; <span id="js-copy-date">2019</span> &dash; <a class="footer__link" rel="nofollow" href="https://rayelliott.dev">rayelliott.dev</a></p>
</div>
</footer>

View File

@ -1 +1,18 @@
{{ partial "templates/header/header.html" . }}
<header class="header">
<div class="l-underlay body-bg header-bg"></div>
<div class="l-wrapper">
<nav class="nav site-nav">
<ul class="l-flex-list-row site-nav__title">
<li><a href="{{ .Site.BaseURL }}"><span class="site-title">{{ .Site.Title }}</span></a></li>
</ul>
<label class="c-menu-toggle site-nav__menu-btn" for="menu-toggle"><span class="site-nav__menu-btn-text menu-text a">Menu</span><span class="menu-icon"></span></label>
<input id="menu-toggle" class="c-menu-toggle__toggle" type="checkbox">
<ul class="l-flex-list-row nav__item c-menu-toggle__menu site-nav__nav-list">
<li><a class="nav__link nav-link" href="{{ .Site.BaseURL }}">Home</a></li>
<li><a class="nav__link nav-link" href="#about">About</a></li>
<li><a class="nav__link nav-link" href="#services">Services</a></li>
<li><a class="nav__link nav-link" href="#contact">Contact</a></li>
</ul>
</nav>
</div>
</header>

View File

@ -1,5 +1,43 @@
<article id="home">
<div class="l-screen-full hero-bg">
{{ partial "templates/hero/hero.html" . }}
<div class="hero">
<div class="hero__body">
<h2 class="hero-title">How Can We Help You?</h2>
<p class="h4 hero-sub-title">Lorem itaque a nesciunt neque porro! Hic at expedita dignissimos nostrum omnis.<p>
</div>
<div id="js-block-parent" class="hero__aside block-grid">
<div class="js-block anim-block anim-block--1 hero-block-1">
<div class="anim-block__img" style="background-image: url(/img/img.jpg)"></div>
</div>
<div class="js-block c-block c-block--2 hero-block-2">
<div class="c-block__img" style="background-image: url(/img/img.jpg)"></div>
</div>
<div class="js-block c-block c-block--3 hero-block-3">
</div>
<div class="js-block c-block c-block--4 hero-block-4">
</div>
<div class="js-block c-block c-block--5 hero-block-5">
<div class="c-block__img" style="background-image: url(/img/img.jpg)"></div>
</div>
<div class="js-block c-block c-block--6 hero-block-6">
</div>
<div class="js-block c-block c-block--7 hero-block-7">
<div class="c-block__img" style="background-image: url(/img/img.jpg)"></div>
</div>
<div class="js-block c-block c-block--8 hero-block-8">
</div>
<div class="js-block c-block c-block--9 hero-block-9">
<div class="c-block__img" style="background-image: url(/img/img.jpg)"></div>
</div>
</div>
</div>
</div>
</article>

View File

@ -1,20 +1,114 @@
<article id="services" class="l-section l-relative">
<div class="l-underlay services-bg"></div>
<h2 class="section-header">Services</h2>
<div class="l-section-block is-wide services-section">
<div class="l-wrapper">
<p>A wide Services Section and a wide wrapper.</p>
<article id="services" class="l-relative l-screen-min-full services-bg">
<div class="l-section-pad l-wrapper l-wrapper--wide">
<h2 class="l-section-header">Services</h2>
<ul class="l-flex-list-row service-list">
<li class="service">
<ul class="l-list-bare">
<li class="service__header">
<img class="service__img" src="https://via.placeholder.com/200" alt="SERVICE IMAGE">
</li>
<li>
<h3 class="service__heading h4">Service Heading One</h3>
<p class="h5">Service Sub-Heading</p>
</li>
<li class="service__body">
<p>
Dolor ad velit illum adipisicing laborum! Unde assumenda corporis dolore iure earum Sit ipsum exercitationem nisi dolore a repellendus! Nostrum accusamus laborum in sapiente velit Recusandae facere esse et natus.
</p>
<p>
Deleniti debitis reprehenderit est magni modi Veniam cumque officia quas ex veniam Voluptates molestias eaque dolorem ratione.
</p>
</li>
<li>
<ul class="l-flex-list-row service__social-list">
<li><span class="social-icon"></span></li>
<li><span class="social-icon"></span></li>
<li><span class="social-icon"></span></li>
</ul>
</li>
</ul>
</li>
<li class="service">
<ul class="l-list-bare">
<li class="service__header">
<img class="service__img" src="https://via.placeholder.com/200" alt="SERVICE IMAGE">
</li>
<li>
<h3 class="service__heading h4">Service Heading Two</h3>
<p class="h5">Service Sub-Heading</p>
</li>
<li class="service__body">
<p>
Dolor ad velit illum adipisicing laborum! Unde assumenda corporis dolore iure earum Sit ipsum exercitationem nisi dolore a repellendus! Nostrum accusamus laborum in sapiente velit Recusandae facere esse et natus.
</p>
<p>
Dolor ad velit illum adipisicing laborum! Unde assumenda corporis dolore iure earum Sit ipsum exercitationem nisi dolore a repellendus! Nostrum accusamus laborum in sapiente velit Recusandae facere esse et natus.
</p>
<p>
Deleniti debitis reprehenderit est magni modi Veniam cumque officia quas ex veniam Voluptates molestias eaque dolorem ratione.
</p>
</li>
<li>
<ul class="l-flex-list-row service__social-list">
<li><span class="social-icon"></span></li>
<li><span class="social-icon"></span></li>
<li><span class="social-icon"></span></li>
<li><span class="social-icon"></span></li>
<li><span class="social-icon"></span></li>
</ul>
</li>
</ul>
</li>
<li class="service">
<ul class="l-list-bare">
<li class="service__header">
<img class="service__img" src="https://via.placeholder.com/200" alt="SERVICE IMAGE">
</li>
<li>
<h3 class="service__heading h4">Service Heading Three</h3>
<p class="h5">Service Sub-Heading</p>
</li>
<li>
<p class="service__body">
Deleniti debitis reprehenderit est magni modi Veniam cumque officia quas ex veniam Voluptates molestias eaque dolorem ratione.
</p>
</li>
<li>
<ul class="l-flex-list-row service__social-list">
<li><span class="social-icon"></span></li>
<li><span class="social-icon"></span></li>
</ul>
</li>
</ul>
</li>
<li class="service">
<ul class="l-list-bare">
<li class="service__header">
<img class="service__img" src="https://via.placeholder.com/200" alt="SERVICE IMAGE">
</li>
<li>
<h3 class="service__heading h4">Service Heading Four</h3>
<p class="h5">Service Sub-Heading</p>
</li>
<li>
<p class="service__body">
Dolor ad velit illum adipisicing laborum! Unde assumenda corporis dolore iure earum Sit ipsum exercitationem nisi dolore a repellendus! Nostrum accusamus laborum in sapiente velit Recusandae facere esse et natus.
</p>
<p>
Deleniti debitis reprehenderit est magni modi Veniam cumque officia quas ex veniam Voluptates molestias eaque dolorem ratione.
</p>
</li>
<li>
<ul class="l-flex-list-row service__social-list">
<li><span class="social-icon"></span></li>
<li><span class="social-icon"></span></li>
<li><span class="social-icon"></span></li>
<li><span class="social-icon"></span></li>
</ul>
</li>
</ul>
</li>
</ul>
</div>
</div>
<div class="l-section-block is-full-width services-section">
<div class="l-wrapper">
<p>A full width Services section and a normal wrapper.</p>
</div>
</div>
</article>

View File

@ -1,24 +0,0 @@
<div class="l-wrapper contact-section">
<p class="h5">Complete this form and we will get back to you within one working day.</p>
<form action="https://mailthis.to/remailthis" method="POST" encType="multipart/form-data">
<ul class="u-no-list">
<li>
<label for="name">Name</label>
<input id="name" type="text" name="name">
</li>
<li>
<label for="email">E-mail:</label>
<input id="email" type="email" name="_replyto">
</li>
<li>
<label for="msg">Message:</label>
<textarea id="msg" name="message"></textarea>
</li>
<li><input type="hidden" name="_subject" value="Contact Form Submission"></li>
<li><input type="hidden" name="_honeypot" value=""></li>
<li><input type="hidden" name="_confirmation" value="Thank you, your message has been sent."></li> <li> <button id="js-form-send" type="submit">Send</button>
</li>
</ul>
</form>
</div>

View File

@ -1,47 +0,0 @@
<div class="l-underlay footer-bg"></div>
<div class="l-wrapper">
<ul class="l-flex-list-row footer__body">
<li class="footer__body-section footer__body-section--m-left-align footer-section">
<h3 class="footer__heading">Let's keep in touch!</h3>
<p>Find us on any of these platforms. We respond in 1-2 business days.</p>
<ul class="l-flex-list-row footer__social-list">
<li><span class="social-icon"></span></li>
<li><span class="social-icon"></span></li>
<li><span class="social-icon"></span></li>
<li><span class="social-icon"></span></li>
</ul>
</li>
<li class="footer__body-section footer__body-section--m-left-align footer__body-section--narrow footer-section">
<h3 class="footer__heading--small footer__heading">Useful Links</h3>
<ul class="l-list-bare">
<li><a class="footer__link" href="#">Link One</a></li>
<li><a class="footer__link" href="#">Link Two</a></li>
<li><a class="footer__link" href="#">Link Three</a></li>
<li><a class="footer__link" href="#">Link Four</a></li>
</ul>
</li>
<li class="footer__body-section footer__body-section--m-left-align footer__body-section--narrow footer-section">
<h3 class="footer__heading--small footer__heading">Other Resources</h3>
<ul class="l-list-bare">
<li><a class="footer__link" href="#">Link One</a></li>
<li><a class="footer__link" href="#">Link Two</a></li>
<li><a class="footer__link" href="#">Link Three</a></li>
<li><a class="footer__link" href="#">Link Four</a></li>
</ul>
</li>
</ul>
<ul class="l-flex-list-row footer__footer">
<li class="footer__term"><a class="footer__link" href="{{ "terms-and-conditions" | relURL }}">Terms and Conditions</a></li>
<li class="footer__term"><a class="footer__link" href="{{ "privacy-policy" | relURL }}">Privacy Policy</a></li>
</ul>
<p class="footer__attr">Copyright &copy; <span id="js-copy-date">2019</span> &dash; <a class="footer__link" rel="nofollow" href="https://rayelliott.dev">rayelliott.dev</a></p>
</div>

View File

@ -1,18 +0,0 @@
<header class="header is-fixed">
<div class="l-underlay body-bg header-bg"></div>
<div class="l-wrapper">
<nav class="nav site-nav">
<ul class="l-flex-list-row site-nav-title">
<li><a href="{{ .Site.BaseURL }}"><span class="site-title">{{ .Site.Title }}</span></a></li>
</ul>
<label class="menu-toggle site-nav-menu-btn" for="menu-toggle"><span class="site-nav-menu-btn-text menu-text a">Menu</span><span class="menu-icon"></span></label>
<input id="menu-toggle" class="menu-toggle-input" type="checkbox">
<ul class="l-flex-list-row nav-item menu-toggle-menu site-nav-nav-list">
<li><a class="nav-link nav-link" href="{{ .Site.BaseURL }}">Home</a></li>
<li><a class="nav-link nav-link" href="#about">About</a></li>
<li><a class="nav-link nav-link" href="#services">Services</a></li>
<li><a class="nav-link nav-link" href="#contact">Contact</a></li>
</ul>
</nav>
</div>
</header>

View File

@ -1,9 +0,0 @@
<div class="hero">
<div class="hero__fg">
<h1 class="hero-title">How Can We Help You?</h1>
<p class="h4 hero-sub-title">Lorem itaque a nesciunt neque porro! Hic at expedita dignissimos nostrum omnis.</p>
</div>
<div class="hero__bg">
</div>
</div>

View File

@ -1,5 +0,0 @@
<div class="l-wrapper contact-section">
<h3 class="h4">Remember to Generate Access Token for URL</h3>
<div id="mapbox"></div>
</div>

View File

@ -1,7 +0,0 @@
.about-bg {
background-color: rgba(red, 0.5);
}
.about-section {
background-color: rgba(red, 0.5);
}

View File

@ -3,11 +3,10 @@ body {
color: var(--color__body);
background-color: var(--color-bg);
font-size: $font-size-body--xxs;
line-height: $line-height-body;
font-size: 0.9em;
@media (min-width: $bp-xs) {
font-size: $font-size-body;
font-size: 1em;
}
}
@ -19,6 +18,6 @@ h3,
h4,
h5,
h6 {
@include font-title;
@include font-title($weight: 300);
}

View File

@ -0,0 +1,3 @@
@import "block";
@import "card";
@import "menu-toggle";

View File

@ -0,0 +1,58 @@
// units are the number of units that make up 100% of the container
// e.g., if there are 4 units then sizes, lengths, can be from 0 to 4
// corresponding to lengths of 0, 25%, 50%, 75% and 100%.
$units: 4;
$unit-size: 100% / $units;
%ab-layout {
position: relative;
&::before {
content: "";
display: block;
position: absolute;
width: $unit-size;
height: $unit-size;
transform-origin: 0 0;
transition: transform 0.3s linear;
}
}
// all blocks start out at 1 unit size in length and width.
// $x, $y are the starting coordinates
@mixin ab-set-layout($x, $y) {
@extend %ab-layout;
&::before {
left: $x * $unit-size;
top: $y * $unit-size;
}
}
@mixin ab-set-state($state-class, $width, $height) {
@at-root .state-#{$state-class} &::before {
transform: scale($width, $height);
}
}
.block-grid {
padding-top: 3rem;
}
.anim-block {
background-color: rgba(blue, 0.06);
}
.anim-block--1 {
@include ab-set-layout(2, 1);
@include ab-set-state(0, 1, 1);
@include ab-set-state(1, 2, 2);
@include ab-set-state(2, 2, 3);
@at-root &::before {
background-color: rgba(blue, 0.8);
}
}
// vim:set filetype=scss:

View File

@ -0,0 +1,74 @@
.c-img-card {
$bp-collapse: $bp-s;
z-index: 1;
position: relative;
border-radius: 8px;
overflow: hidden;
&__body {
padding: 32px 48px;
}
&__body-bg {
z-index: -1;
position: absolute;
width: 100%;
height: 100%;
top: 0;
left: 0;
}
@media (max-width: $bp-collapse) {
&__header,
&__body,
&__body-bg {
position: absolute;
width: 100%;
height: 100%;
top: 0;
left: 0;
}
&__header {
z-index: -1;
}
&__body {
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;
text-align: center;
}
&__body-bg {
opacity: 0.6;
}
}
@media (min-width: $bp-collapse) {
display: flex;
flex-direction: column;
&__header,
&__body {
display: flex;
flex-direction: column;
justify-content: center;
}
&__header {
flex: 0 1 50%;
}
&__body {
position: relative;
flex: 1 0 50%;
}
&__body-bg {
opacity: 1;
}
}
}

View File

@ -1,9 +1,11 @@
.menu-toggle {
$bp-menu-collpase: $bp-s;
.c-menu-toggle {
cursor: pointer;
}
input.menu-toggle-input[type="checkbox"],
input.menu-toggle-input[type="radio"] {
input.c-menu-toggle__toggle[type="checkbox"],
input.c-menu-toggle__toggle[type="radio"] {
// display: none;
position: fixed;
@ -20,24 +22,24 @@ input.menu-toggle-input[type="radio"] {
}
@media (max-width: $bp-menu-collpase) {
.menu-toggle {
.c-menu-toggle {
opacity: 1;
pointer-events: auto;
}
.menu-toggle-menu {
.c-menu-toggle__menu {
opacity: 0;
pointer-events: none;
}
.menu-toggle-input:checked ~ .menu-toggle-menu {
.c-menu-toggle__toggle:checked ~ .c-menu-toggle__menu {
opacity: 1;
pointer-events: auto;
}
}
@media (min-width: $bp-menu-collpase) {
.menu-toggle {
.c-menu-toggle {
display: none;
}
}

View File

@ -1,8 +0,0 @@
.contact-bg {
background-color: rgba(aqua, 0.5);
}
.contact-section {
// background-color: rgba(aqua, 0.5);
}

View File

@ -1 +0,0 @@
@import "templates/footer/footer-2-1-1";

View File

@ -1 +0,0 @@
@import "templates/header/header-checkbox";

View File

@ -1,14 +1,10 @@
$hero-bp: $bp-m;
.hero {
z-index: 1;
position: relative;
width: 100%;
height: 100%;
background-color: rgba(pink, 0.5);
&__fg {
&__body {
display: flex;
flex-direction: column;
justify-content: center;
@ -16,13 +12,11 @@ $hero-bp: $bp-m;
padding: 64px;
text-align: center;
background-color: rgba(pink, 0.5);
}
@media (max-width: $hero-bp) {
&__fg,
&__bg {
@media (max-width: $bp-hero) {
&__body,
&__aside {
position: absolute;
width: 100%;
height: 100%;
@ -30,23 +24,199 @@ $hero-bp: $bp-m;
left: 0;
}
&__fg {
&__body {
z-index: 10;
}
&__bg {
&__aside {
z-index: 5;
}
}
@media (min-width: $hero-bp) {
@media (min-width: $bp-hero) {
display: flex;
flex-direction: row;
&__fg,
&__bg {
&__body,
&__aside {
flex: 0 0 50%;
}
&__body {
}
&__aside {
}
}
}
.hero-title,
.hero-sub-title {
color: #fff;
}
.hero-title {
margin-bottom: 1.25rem;
@media (max-width: $bp-hero) {
font-size: 1.4em;
}
}
.hero-sub-title {
margin-bottom: 1.25rem;
@media (max-width: $bp-hero) {
font-size: 1.2em;
}
}
.hero__body {
}
.hero__aside {
}
.block-grid {
display: grid;
@media (max-width: $bp-hero) {
grid-template-columns: repeat(16, 1fr);
grid-template-rows: repeat(16, 1fr);
@media (max-width: $bp-hero) and (orientation: landscape) {
grid-template-columns: 1fr 1fr 1fr 1fr 1fr 1fr;
grid-template-rows: 1fr 1fr 1fr 1fr 1fr 1fr 1fr 1fr 1fr;
}
}
@media (min-width: $bp-hero) {
grid-template-columns: repeat(16, 1fr);
grid-template-rows: repeat(16, 1fr);
}
}
.c-block {
outline: 1px dotted red;
opacity: 0.8;
}
@media (max-width: $bp-hero) {
.hero-block-1 {
display: none;
}
.hero-block-2 {
display: none;
}
.hero-block-3 {
display: none;
}
.hero-block-4 {
display: none;
}
.hero-block-5 {
display: none;
}
.hero-block-6 {
display: none;
}
.hero-block-7 {
display: none;
}
.hero-block-8 {
display: none;
}
.hero-block-9 {
display: none;
}
}
@media (max-width: $bp-hero) and (orientation: landscape) {
.hero-block-1 {
}
.hero-block-2 {
}
.hero-block-3 {
}
.hero-block-4 {
}
.hero-block-5 {
}
.hero-block-6 {
}
.hero-block-7,
.hero-block-8,
.hero-block-9 {
@media (max-width: $bp-hero) {
display: none;
}
}
}
@media (min-width: $bp-hero) {
// row 1
////////
.hero-block-1 {
grid-column: 5/9;
grid-row: 5/9;
}
.hero-block-2 {
grid-column: 5/8;
grid-row: 1/5;
}
.hero-block-3 {
grid-column: 7/10;
grid-row: 1/4;
}
// row 2
////////
.hero-block-4 {
grid-column: 1/4;
grid-row: 4/7;
}
.hero-block-5 {
grid-column: 4/7;
grid-row: 4/7;
}
.hero-block-6 {
grid-column: 7/10;
grid-row: 4/7;
}
// row 3
////////
.hero-block-7 {
grid-column: 1/4;
grid-row: 7/10;
}
.hero-block-8 {
grid-column: 4/7;
grid-row: 7/10;
}
.hero-block-9 {
grid-column: 6/10;
grid-row: 6/10;
}
}

View File

@ -1,133 +1,66 @@
.l-wrapper {
width: $wrapper-width;
max-width: $wrapper-max-width;
width: 100%;
max-width: 80rem;
margin-left: auto;
margin-right: auto;
padding-left: $padding-horizontal-xs;
padding-right: $padding-horizontal-xs;
padding-left: 8px;
padding-right: 8px;
@media (min-width: $bp-s) {
padding-left: $padding-horizontal-s;
padding-right: $padding-horizontal-s;
padding-left: 32px;
padding-right: 32px;
}
@media (min-width: $bp-m) {
width: $wrapper-width-m;
padding-left: $padding-horizontal-m;
padding-right: $padding-horizontal-m;
padding-left: 64px;
padding-right: 64px;
}
@media (min-width: $bp-l) {
padding-left: $padding-horizontal-l;
padding-right: $padding-horizontal-l;
padding-left: 96px;
padding-right: 96px;
}
&.is-wide {
max-width: $wrapper-max-width--wide;
}
&.is-full-width {
max-width: initial;
}
@media (min-width: $wrapper-max-width) and (max-width: $wrapper-max-width--wide) {
padding-left: $padding-horizontal-s;
padding-right: $padding-horizontal-s;
}
@media (min-width: $wrapper-max-width--wide) {
width: 100%;
padding-left: $padding-horizontal-s;
padding-right: $padding-horizontal-s;
&--wide {
max-width: 110rem;
}
}
.l-section {
padding-top: $padding-vertical-xs;
padding-bottom: $padding-vertical-xs;
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;
.l-section-pad {
padding-top: 24px;
padding-bottom: 24px;
@media (min-width: $bp-s) {
padding-top: $padding-vertical-s;
padding-bottom: $padding-vertical-s;
padding-top: 32px;
padding-bottom: 32px;
}
@media (min-width: $bp-m) {
padding-top: $padding-vertical-m;
padding-bottom: $padding-vertical-m;
padding-top: 64px;
padding-bottom: 64px;
}
@media (min-width: $bp-l) {
padding-top: $padding-vertical-l;
padding-bottom: $padding-vertical-l;
}
padding-top: 96px;
padding-bottom: 96px;
}
.l-section-inline {
margin-bottom: $unit-size;
// reduce padding bottom
&--pb-reduce {
padding-bottom: 8px;
@media (min-width: $bp-m) {
margin-bottom: 2 * $unit-size;
padding-bottom: 16px;
}
&:last-child {
margin-bottom: 0;
}
}
.l-section-block {
margin-bottom: $unit-size;
padding-top: 0.5 * $unit-size;
padding-bottom: 0.5 * $unit-size;
width: 100%;
max-width: $wrapper-width;
@media (min-width: $bp-s) {
padding-top: $unit-size;
padding-bottom: $unit-size;
}
@media (min-width: $bp-m) {
margin-bottom: 2 * $unit-size;
padding-top: 2 * $unit-size;
padding-bottom: 2 * $unit-size;
}
@media (min-width: $bp-l) {
width: $wrapper-max-width;
}
&:last-child {
margin-bottom: 0;
}
&.is-wide {
width: $wrapper-max-width--wide;
}
&.is-full-width {
width: 100%;
max-width: initial;
}
&.no-pad-top {
padding-top: 0;
}
&.no-pad-bottom {
padding-bottom: 0;
}
&.no-margin,
> p:last-child,
> .l-wrapper > p:last-child {
margin-bottom: 0;
}
.l-section-header {
font-size: 2.875rem;
line-height: 1.2;
text-align: center;
margin-bottom: 3.75rem;
}
// #position
@ -140,14 +73,6 @@
position: relative;
}
.l-overlay {
position: absolute;
width: 100%;
height: 100%;
top: 0;
left: 0;
}
.l-underlay {
z-index: -1;
position: absolute;
@ -230,6 +155,10 @@
margin: 0;
}
.l-flex-list-col,
.l-flex-list-row {
}
.l-list-bare {
list-style: none;
padding-left: 0;

View File

@ -1,7 +0,0 @@
.services-bg {
background-color: rgba(green, 0.5);
}
.services-section {
background-color: rgba(green, 0.5);
}

View File

@ -1,103 +0,0 @@
$footer-bp-s: 28em;
$footer-bp-m: 60em;
$footer-attr-padding: $unit-size * 0.5;
.footer {
position: relative;
font-size: 0.9rem;
padding-top: $unit-size * 2;
padding-bottom: $footer-attr-padding;
}
.footer-bg {
background-color: rgba(indigo, 0.5);
}
.footer__term {
margin: 0 0.5em;
}
.footer__attr {
text-align: center;
margin-bottom: 0;
font-size: 0.8em;
}
.footer__body {
flex-direction: row;
flex-wrap: wrap;
justify-content: space-between;
text-align: center;
margin-bottom: $unit-size * 2;
}
.footer__body-section {
flex: 0 0 100%;
margin-bottom: 1.6rem;
@media (min-width: $footer-bp-s) {
&--narrow {
flex: 0 0 50%;
}
}
@media (min-width: $footer-bp-m) {
flex: 0 0 60%;
margin-bottom: 0;
padding: 0 0.8rem;
&:first-child {
padding-left: 0;
}
&:last-child {
padding-right: 0;
}
&--narrow {
flex: 0 1 20%;
}
&--m-left-align {
text-align: left;
.footer__social-list {
justify-content: left;
}
}
}
}
.footer__footer {
position: relative;
font-size: 0.9em;
padding-top: $footer-attr-padding;
&::before {
content: "";
position: absolute;
width: 100%;
height: 1px;
left: 0;
top: 0;
background-color: currentColor;
opacity: 0.2;
}
}
.footer__heading {
font-size: 2.25em;
&--small {
@include font-body(bold);
font-size: 1em;
text-transform: uppercase;
}
}
.footer__social-list {
font-size: 3em;
justify-content: center;
}

View File

@ -1,88 +0,0 @@
@import "menu-toggle";
.header-bg {
background-color: rgba(pink, 0.5);
opacity: 0.6;
}
.header {
z-index: $z-index__header;
position: relative;
top: 0;
left: 0;
width: 100%;
&.is-fixed {
position: fixed;
}
&.is-absolute {
position: absolute;
}
}
.nav {
display: flex;
flex-direction: row;
justify-content: space-between;
align-items: center;
li {
margin-bottom: 0;
}
}
.nav-item {
margin: 0;
}
.nav-link {
display: block;
padding: 0.5 * $unit-size $unit-size;
@media (min-width: $bp-m) {
padding: 0.5 * $unit-size 2 * $unit-size;
}
&:last-child {
padding-right: 0;
}
}
.site-nav {
&-menu-btn {
@media (max-width: $bp-s) {
margin: 0;
padding: 6px 0 6px;
display: flex;
flex-direction: row;
align-items: center;
}
}
&-nav-list {
@media (max-width: $bp-s) {
position: fixed;
top: 4rem;
bottom: 2rem;
left: 2rem;
right: 2rem;
background-color: rgba(pink, 0.5);
}
}
}
.menu-text {
margin-right: 0.5rem;
}
.menu-icon {
display: block;
height: 1.6rem;
width: 1.6rem;
border-radius: 3px;
background-color: currentColor;
}

View File

@ -1,126 +1,56 @@
// breakpoints
$bp-xs: 28em;
$bp-s: 40em;
$bp-m: 50em;
$bp-l: 80em;
// header menu collapse
$bp-menu-collpase: $bp-s;
$bp-footer-s: 28em;
$bp-footer-m: 60em;
$bp-hero: $bp-m;
$z-index__header: 100;
$font-size-body: 1em;
$font-size-body--xxs: 0.9em;
$line-height-body: 1.6;
$unit-size: 1.6rem;
$wrapper-width: calc(100vw - #{$unit-size / 2});
$wrapper-width-m: calc(100vw - #{$unit-size});
$wrapper-max-width: $bp-l;
$wrapper-max-width--wide: 110rem;
$font-size-h1--xs: 2.875rem;
$font-size-h1--s: 2.875rem;
$font-size-h1--m: 2.875rem;
$font-size-h1--l: 2.875rem;
// lerft, right padding of sections
$padding-horizontal-xs: 8px;
$padding-horizontal-s: 32px;
$padding-horizontal-m: 64px;
$padding-horizontal-l: 96px;
// top, bottom padding of sections
$padding-vertical-xs: 1 * $unit-size;
$padding-vertical-s: 1 * $unit-size;
$padding-vertical-m: 2 * $unit-size;
$padding-vertical-l: 2 * $unit-size;
$color-primary-100: #eff8ff;
$color-primary-200: #aad4f5;
$color-primary-300: #63a2d8;
$color-primary-400: #3183c8;
$color-primary-500: #2368a2;
$color-primary-600: #1a4971;
$color-primary-700: #203d54;
// $color-primary-800: #203d54;
// $color-primary-900: #203d54;
$color-neutral-100: #f8f9fa;
$color-neutral-200: #e1e7ec;
$color-neutral-300: #cfd6de;
$color-neutral-400: #b8c4ce;
$color-neutral-500: #8895a7;
$color-neutral-600: #5f6b7a;
$color-neutral-700: #212934;
// $color-neutral-800: #212934;
// $color-neutral-900: #212934;
$color-accent-primary-100: #e3fcec;
$color-accent-primary-200: #a8eec1;
$color-accent-primary-300: #74d99f;
$color-accent-primary-400: #38c172;
$color-accent-primary-500: #259d58;
$color-accent-primary-600: #197741;
$color-accent-primary-700: #145239;
// $color-accent-primary-800: #145239;
// $color-accent-primary-900: #145239;
$color-accent-secondary-100: #fce8e8;
$color-accent-secondary-200: #f5aaaa;
$color-accent-secondary-300: #e46464;
$color-accent-secondary-400: #dc3030;
$color-accent-secondary-500: #b82020;
$color-accent-secondary-600: #891b1b;
$color-accent-secondary-700: #611818;
// $color-accent-secondary-800: #611818;
// $color-accent-secondary-900: #611818;
// $color-accent-tertiary-100: #e7ffee;
// $color-accent-quaternary-100: #fffcf4;
// $color-accent-quinary-100: #ffeefc;
$color-color__body: $color-neutral-600;
$color-color-bg: $color-neutral-100;
:root {
--primary-100: #{$color-primary-100};
--primary-200: #{$color-primary-200};
--primary-300: #{$color-primary-300};
--primary-400: #{$color-primary-400};
--primary-500: #{$color-primary-500};
--primary-600: #{$color-primary-600};
--primary-700: #{$color-primary-700};
// --primary-800: #{$color-primary-800};
// --primary-900: #{$color-primary-900};
--neutral-100: #{$color-neutral-100};
--neutral-200: #{$color-neutral-200};
--neutral-300: #{$color-neutral-300};
--neutral-400: #{$color-neutral-400};
--neutral-500: #{$color-neutral-500};
--neutral-600: #{$color-neutral-600};
--neutral-700: #{$color-neutral-700};
// --neutral-800: #{$color-neutral-800};
// --neutral-900: #{$color-neutral-900};
--accent-primary-100: #{$color-accent-primary-100};
--accent-primary-200: #{$color-accent-primary-200};
--accent-primary-300: #{$color-accent-primary-300};
--accent-primary-400: #{$color-accent-primary-400};
--accent-primary-500: #{$color-accent-primary-500};
--accent-primary-600: #{$color-accent-primary-600};
--accent-primary-700: #{$color-accent-primary-700};
//--accent-primary-800: #{$color-accent-primary-800};
//--accent-primary-900: #{$color-accent-primary-900};
--accent-secondary-100: #{$color-accent-secondary-100};
--accent-secondary-200: #{$color-accent-secondary-200};
--accent-secondary-300: #{$color-accent-secondary-300};
--accent-secondary-400: #{$color-accent-secondary-400};
--accent-secondary-500: #{$color-accent-secondary-500};
--accent-secondary-600: #{$color-accent-secondary-600};
--accent-secondary-700: #{$color-accent-secondary-700};
//--accent-secondary-800: #{$color-accent-secondary-800};
//--accent-secondary-900: #{$color-accent-secondary-900};
--primary-100: #eff8ff;
--primary-200: #aad4f5;
--primary-300: #63a2d8;
--primary-400: #3183c8;
--primary-500: #2368a2;
--primary-600: #1a4971;
--primary-700: #203d54;
// --primary-800: #203d54;
// --primary-900: #203d54;
--neutral-100: #f8f9fa;
--neutral-200: #e1e7ec;
--neutral-300: #cfd6de;
--neutral-400: #b8c4ce;
--neutral-500: #8895a7;
--neutral-600: #5f6b7a;
--neutral-700: #212934;
// --neutral-800: #212934;
// --neutral-900: #212934;
--accent-primary-100: #e3fcec;
--accent-primary-200: #a8eec1;
--accent-primary-300: #74d99f;
--accent-primary-400: #38c172;
--accent-primary-500: #259d58;
--accent-primary-600: #197741;
--accent-primary-700: #145239;
// --accent-primary-800: #145239;
// --accent-primary-900: #145239;
--accent-secondary-100: #fce8e8;
--accent-secondary-200: #f5aaaa;
--accent-secondary-300: #e46464;
--accent-secondary-400: #dc3030;
--accent-secondary-500: #b82020;
--accent-secondary-600: #891b1b;
--accent-secondary-700: #611818;
// --accent-secondary-800: #611818;
// --accent-secondary-900: #611818;
//--accent-tertiary-100: #{$color-color-accent-tertiary-100};
//--accent-quaternary-100: #{$color-accent-quaternary-100};
//--accent-quinary-100: #{$color-accent-quinary-100};
// --accent-tertiary-100: #e7ffee;
// --accent-quaternary-100: #fffcf4;
// --accent-quinary-100: #ffeefc;
--color__body: var(--neutral-600);
--color-bg: var(--neutral-100);

View File

@ -1,4 +1,5 @@
@import "imports/reset.css";
// @import "milligram";
@import "imports/variables.scss";
@ -9,12 +10,9 @@
@import "imports/layout.scss";
@import "imports/utility.scss";
@import "imports/header.scss";
@import "imports/components/base.scss";
@import "imports/hero.scss";
@import "imports/about.scss";
@import "imports/services.scss";
@import "imports/contact.scss";
@import "imports/footer.scss";
@import "mapbox-gl/dist/mapbox-gl.css";
@ -28,32 +26,373 @@ html.is-animating .transition-fade {
opacity: 0;
}
.section-header {
font-size: $font-size-h1--xs;
line-height: 1.2;
text-align: center;
margin-bottom: $padding-vertical-xs;
@media (min-width: $bp-s) {
font-size: $font-size-h1--s;
margin-bottom: $padding-vertical-s;
}
@media (min-width: $bp-m) {
font-size: $font-size-h1--m;
margin-bottom: $padding-vertical-m;
}
@media (min-width: $bp-l) {
font-size: $font-size-h1--l;
margin-bottom: $padding-vertical-l;
}
}
// mapbox
.mapboxgl-map {
height: 18 * $unit-size;
height: 30em;
}
// header
.header-bg {
opacity: 0.6;
}
.header {
z-index: $z-index__header;
position: fixed;
top: 0;
left: 0;
width: 100%;
}
.nav {
display: flex;
flex-direction: row;
justify-content: space-between;
align-items: center;
li {
margin-bottom: 0;
}
}
.nav__item {
margin: 0;
}
.nav__link {
display: block;
padding: 0.6em 1.5em;
&:last-child {
padding-right: 0;
}
}
.site-nav {
&__title {
}
&__menu-btn {
@media (max-width: $bp-s) {
margin: 0;
padding: 6px 0 6px;
display: flex;
flex-direction: row;
align-items: center;
}
}
&__nav-list {
@media (max-width: $bp-s) {
position: fixed;
top: 4rem;
bottom: 2rem;
left: 2rem;
right: 2rem;
background-color: #fff;
}
}
}
.menu-text {
margin-right: 0.5rem;
}
.menu-icon {
display: block;
height: 1.1em;
width: 1.1em;
border-radius: 3px;
background-color: blue;
opacity: 0.5;
}
// footer
.footer {
position: relative;
font-size: 0.9rem;
color: var(--neutral-100);
}
.footer-bg {
background-color: var(--neutral-700);
}
.footer__term {
margin: 0 0.5em;
}
.footer__attr {
text-align: center;
margin-bottom: 0;
font-size: 0.8em;
}
.footer__body {
flex-direction: row;
flex-wrap: wrap;
justify-content: space-between;
text-align: center;
}
.footer__body-section {
flex: 0 0 100%;
margin-bottom: 1.6rem;
@media (min-width: $bp-footer-s) {
&--narrow {
flex: 0 0 50%;
}
}
@media (min-width: $bp-footer-m) {
flex: 0 0 60%;
margin-bottom: 0;
padding: 0 0.8rem;
&:first-child {
padding-left: 0;
}
&:last-child {
padding-right: 0;
}
&--narrow {
flex: 0 1 20%;
}
&--m-left-align {
text-align: left;
.footer__social-list {
justify-content: left;
}
}
}
}
.footer__footer {
position: relative;
font-size: 0.9em;
margin-top: 2.4rem;
&::before {
content: "";
position: absolute;
width: 100%;
height: 1px;
left: 0;
top: -1.2rem;
background-color: var(--neutral-400);
opacity: 0.2;
}
}
.footer__heading {
font-size: 2.25em;
&--small {
@include font-body(bold);
font-size: 1em;
text-transform: uppercase;
}
}
.footer__social-list {
font-size: 3em;
justify-content: center;
}
.footer__link {
color: var(--neutral-200);
text-decoration: none;
@include font-link(bold);
&:focus,
&:hover {
color: var(--neutral-400);
}
}
// hero
.hero-bg {
// background-color: var(--primary-500);
}
// about
.about-bg {
background-color: var(--page-bg);
&--secondary {
background-color: var(--neutral-200);
}
}
.about-section {
align-items: flex-end;
&__info {
padding: 0;
@media (min-width: $bp-m) {
padding-right: 64px;
}
}
&--swapped {
.about-section__info {
order: 2;
@media (min-width: $bp-m) {
padding-left: 64px;
}
}
.about-section__card {
order: 1;
}
}
}
.about-card {
height: 30em;
width: 100%;
max-width: 30em;
margin-left: auto;
margin-right: auto;
font-size: 0.9em;
@media (min-width: $bp-m) {
width: 100%;
max-width: 26em;
height: 40em;
margin-left: auto;
margin-right: initial;
}
}
.about-section--swapped .about-card {
@media (min-width: $bp-m) {
margin-left: initial;
margin-right: auto;
}
}
.about-card-bg-img {
background-size: cover;
background-position: center center;
}
.about-card-bg-1 {
background-color: pink;
}
.about-card-bg-img-1 {
background-image: url(https://via.placeholder.com/300x400);
}
.about-card-bg-2 {
background-color: lightblue;
}
.about-card-bg-img-2 {
background-image: url(https://via.placeholder.com/300x400);
}
.about-icon {
width: 4em;
height: 4em;
border-radius: 50%;
margin-bottom: 1.25rem;
background-color: blue;
opacity: 0.2;
}
// services
.services-bg {
color: var(--neutral-300);
background-color: var(--primary-700);
}
.service-list {
flex-wrap: wrap;
justify-content: space-between;
}
.service {
flex: 0 0 100%;
text-align: center;
margin-bottom: 2.5rem;
&:last-child {
margin-bottom: 0;
}
@media (min-width: $bp-m) {
flex: 0 0 calc(50% - 2.5rem);
}
@media (min-width: $bp-l) {
flex: 0 0 calc(25% - 2.5rem);
}
}
.service__header {
display: inline-block;
width: 7em;
height: 7em;
margin-bottom: 1.25rem;
}
.service__img {
width: 100%;
height: auto;
border-radius: 50%;
}
.service__heading {
margin-bottom: 0.125em;
}
.service__body {
@media (min-width: $bp-s) {
font-size: 0.9em;
}
}
.service__social-list {
font-size: 2em;
}
// contact
.contact-bg {
background-color: var(--primary-100);
}
.contact-heading {
text-align: left;
margin-bottom: 1.25rem;
}
// global
.site-title {
text-transform: capitalize;
}
.body-bg {
background-color: var(--color-bg);
}
.social-icon {

View File

@ -19,7 +19,7 @@ function initBlocks() {
let state = 0;
blockParent.classList.add(`state-${state}`);
document.getElementById("js-block-parent").addEventListener("click", () => {
document.querySelector("header").addEventListener("click", () => {
const from = state;
blockParent.classList.remove(`state-${state}`);
state = state < 2 ? state + 1 : 0;