Fix/optimizations (#3)

* revamped js/css asset build

* update favicon compilation and color; cleanup package.json

* fix spacing

* update social media display and references

* adjust about page sizing and mobile display

* update jobs and page titles

* abstract links to single source, small style fixes

* adjust footer

* update pro viddeo page and seo

* seo and video fixes

* fix seo display

* move tor link to footer

* sizing adjustments and add hosted video

* video and sizing adjustments

* wip video

* final video

* update pro link

* temp fix for ticker start

* update link, add auto orient, remove video border

* fix contact form submission and mobile submit
This commit is contained in:
Lucy C
2022-11-08 13:31:00 -07:00
committed by GitHub
parent 78b5014be8
commit b495794a03
81 changed files with 3340 additions and 5566 deletions

Binary file not shown.

Before

Width:  |  Height:  |  Size: 87 KiB

View File

@@ -1,26 +0,0 @@
//////////////////////////////////////////
// HEADER
gsap.to("header", {
duration: 0.5,
backgroundColor: "rgba(0,0,0,0.1)",
backdropFilter: "blur(10px)",
scrollTrigger: {
trigger: "#hero-image",
scrub: true,
start: "center top", // "triggerElement page"
end: "bottom top", // "triggerElement page"
},
});
gsap.to(".header__logo", {
duration: 0.5,
opacity: "1",
filter: "blur(0px)",
scrollTrigger: {
trigger: "#hero-image",
scrub: true,
start: "center top", // "triggerElement page"
end: "bottom top", // "triggerElement page"
},
});

View File

@@ -1,11 +1,13 @@
/************************************************/
/* SECTION, LINE, AND TEXT APPEARANCE ANIMATION */
/************************************************/
import { gsap } from "gsap";
//////////////////////////////////////////
// HERO
const defaultActions = "play none none none";
// line animation
gsap.from("#hero-to-pitch path:first-child", {
drawSVG: 0,
@@ -101,29 +103,31 @@ gsap.from("#products-to-info path:first-child", {
//////////////////////////////////////////
// INFOGRAPHICS
// object animation
gsap.from("#infographics .subsection--trust", {
duration: 0.5,
opacity: 0,
outline: "1px solid rgba(255,255,255,1)",
scrollTrigger: {
trigger: "#infographics .subsection--trust",
start: "top 75%", // "triggerElement page"
toggleActions: defaultActions,
},
});
if (document.querySelector("#infographics .subsection--control")) {
// object animation
gsap.from("#infographics .subsection--trust", {
duration: 0.5,
opacity: 0,
outline: "1px solid rgba(255,255,255,1)",
scrollTrigger: {
trigger: "#infographics .subsection--trust",
start: "top 75%", // "triggerElement page"
toggleActions: defaultActions,
},
});
// object animation
gsap.from("#infographics .subsection--control", {
duration: 0.5,
opacity: 0,
outline: "1px solid rgba(255,255,255,1)",
scrollTrigger: {
trigger: "#infographics .subsection--control",
start: "top 75%", // "triggerElement page"
toggleActions: defaultActions,
},
});
// object animation
gsap.from("#infographics .subsection--control", {
duration: 0.5,
opacity: 0,
outline: "1px solid rgba(255,255,255,1)",
scrollTrigger: {
trigger: "#infographics .subsection--control",
start: "top 75%", // "triggerElement page"
toggleActions: defaultActions,
},
});
}
//////////////////////////////////////////
// BITCOIN
@@ -221,52 +225,55 @@ gsap.from("#be-to-powered path", {
//////////////////////////////////////////
// POWERED
gsap.from("#powered-by h1", {
duration: 0.5,
y: "-5rem",
opacity: 0,
scrollTrigger: {
trigger: "#powered-by h1",
start: "top 75%", // "triggerElement page"
toggleActions: defaultActions,
},
});
if (document.querySelector("#powered-by") && document.querySelector("#powered-by svg")) {
gsap.from("#powered-by h1", {
duration: 0.5,
y: "-5rem",
opacity: 0,
scrollTrigger: {
trigger: "#powered-by h1",
start: "top 75%", // "triggerElement page"
toggleActions: defaultActions,
},
});
// object animation
gsap.from("#powered-by p", {
duration: 0.5,
filter: "blur(10px)",
opacity: 0,
scrollTrigger: {
trigger: "#powered-by h1",
start: "top 75%", // "triggerElement page"
toggleActions: defaultActions,
},
});
// object animation
gsap.from("#powered-by p", {
duration: 0.5,
filter: "blur(10px)",
opacity: 0,
scrollTrigger: {
trigger: "#powered-by h1",
start: "top 75%", // "triggerElement page"
toggleActions: defaultActions,
},
});
// object animation
gsap.from("#powered-by svg", {
duration: 1,
filter: "blur(20px)",
opacity: 0,
scrollTrigger: {
trigger: "#powered-by svg",
start: "top 75%", // "triggerElement page"
toggleActions: defaultActions,
},
});
// line animation
gsap.from("#powered-to-support path", {
drawSVG: 0,
ease: "none",
scrollTrigger: {
trigger: "#powered-to-support path",
scrub: true,
start: "top 75%",
end: "bottom 75%",
},
});
}
// object animation
gsap.from("#powered-by svg", {
duration: 1,
filter: "blur(20px)",
opacity: 0,
scrollTrigger: {
trigger: "#powered-by svg",
start: "top 75%", // "triggerElement page"
toggleActions: defaultActions,
},
});
// line animation
gsap.from("#powered-to-support path", {
drawSVG: 0,
ease: "none",
scrollTrigger: {
trigger: "#powered-to-support path",
scrub: true,
start: "top 75%",
end: "bottom 75%",
},
});
//////////////////////////////////////////
// SUPPORT

View File

@@ -1,24 +1,25 @@
/********************************************/
/* BITCOIN SECTION FLOATING ICONS ANIMATION */
/********************************************/
import { gsap } from "gsap";
//////////////////////////////////////////
// DATA
// TODO: pull this from data js instead
const bitcoinServices = [
"bitcoind",
"btcpay",
"cln",
"electrs",
"lnd",
"lit",
"mempool",
"rtl",
"spark",
"specter",
"sphinx",
"thunderhub",
];
"bitcoind",
"btcpay",
"cln",
"electrs",
"lnd",
"lit",
"mempool",
"rtl",
"spark",
"specter",
"sphinx",
"thunderhub",
];
function getRandomInt(min, max) {
min = Math.ceil(min);
@@ -30,7 +31,7 @@ function getRandomNumber(min, max) {
return Math.random() * (max - min) + min;
}
function positionServiceIcons() {
export function positionServiceIcons() {
bitcoinServices.forEach((service, i) => {
var serviceClass = ".service-icon--" + service;

79
src/assets/js/contact.js Normal file
View File

@@ -0,0 +1,79 @@
/********************************************/
/* CONTACT POST */
/********************************************/
const emailError = document.getElementById("emailError")
const emailSuccess = document.getElementById("emailSuccess")
const errorMsg = "Something's not working. If you keep getting this error, try us at <a href='https://t.me/start9_lab' rel='noopener noreferrer' target='_blank'>Telegram</a> instead."
function showSuccess(message) {
hideError();
emailSuccess.classList.add("form-alert--visible");
emailSuccess.innerHTML = message
}
function hideSuccess() {
emailError.classList.remove("form-alert--visible");
}
function showError(message) {
hideSuccess();
emailError.classList.add("form-alert--visible");
emailError.innerHTML = message;
}
function hideError() {
emailError.classList.remove("form-alert--visible");
}
function clear(){
document.getElementById("subscribeForm").reset()
}
document.getElementById("contactSubmit").addEventListener("click", function (e) {
const fromEmail = document.getElementById("fromEmail");
e.preventDefault()
if (
/(?:[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*|"(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21\x23-\x5b\x5d-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])*")@(?:(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?|\[(?:(?:(2(5[0-5]|[0-4][0-9])|1[0-9][0-9]|[1-9]?[0-9]))\.){3}(?:(2(5[0-5]|[0-4][0-9])|1[0-9][0-9]|[1-9]?[0-9])|[a-z0-9-]*[a-z0-9]:(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21-\x5a\x53-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])+)\])/.test(
fromEmail.value
)
) {
hideError();
try {
var body = {
customer: {
email: fromEmail.value,
accepts_marketing: true,
verified_email: true,
},
};
fetch("https://start9.com/api/subscribe", {
method: "POST",
headers: {
"Content-Type": "application/json",
},
body: JSON.stringify(body),
}).then((response) => {
clear()
if (response.ok) {
showSuccess("Thanks for subscribing!");
} else {
if (response.status === 422) {
showError("Already subscribed!")
} else {
console.error(`Error code: ${response.status} - Details: ${response.statusText}`)
showError(errorMsg);
}
}
});
} catch (error) {
clear()
console.error(error)
showError(errMsg);
}
} else {
showError("Sorry, you must use a valid email address.");
}
});

View File

@@ -1,10 +0,0 @@
const fetch = require("node-fetch");
module.exports = async function() {
return fetch(url)
.then(res => res.json()) // node-fetch option to transform to json
.then(json => {
return {
teamMembers: json
};
}).then(json => console.log(json));;
}

27
src/assets/js/header.js Normal file
View File

@@ -0,0 +1,27 @@
//////////////////////////////////////////
// HEADER
import { gsap } from "gsap";
gsap.to("header", {
duration: 0.5,
backgroundColor: "rgba(0,0,0,0.1)",
backdropFilter: "blur(10px)",
scrollTrigger: {
trigger: "#hero-image",
scrub: true,
start: "center top", // "triggerElement page"
end: "bottom top", // "triggerElement page"
},
});
gsap.to(".header__logo", {
duration: 0.5,
opacity: "1",
filter: "blur(0px)",
scrollTrigger: {
trigger: "#hero-image",
scrub: true,
start: "center top", // "triggerElement page"
end: "bottom top", // "triggerElement page"
},
});

View File

@@ -1,5 +1,6 @@
//////////////////////////////////////////
// HERO
import { gsap } from "gsap";
gsap.to("#hero-image", {
duration: 1,
@@ -9,6 +10,7 @@ gsap.to("#hero-image", {
filter: "blur(0px)",
delay: 0.5,
});
gsap.to("#logo", {
duration: 0.5,
y: 0,

View File

@@ -1,10 +1,6 @@
//////////////////////////////////////////
// GSAP ACTIONS
// options: "play", "pause", "resume", "reset", "restart", "complete", "reverse", and "none"
// arguments: onEnter, onLeave, onEnterBack, and onLeaveBack
const defaultActions = "play none none none";
import { gsap } from "gsap";
import { positionServiceIcons } from '/@root/src/assets/js/bitcoin-animation.js'
import { initializeSizes, tick, next } from '/@root/src/assets/js/ticker-animation.js'
//////////////////////////////////////////
// RE-RENDER COMPLEX ANIMATIONS ON WINDOW RESIZE
@@ -12,53 +8,16 @@ const defaultActions = "play none none none";
function onResizeComplete() {
positionServiceIcons();
initializeSizes();
// initialize ticker
gsap.delayedCall(next, tick);
}
var resizeTimeout = setTimeout(onResizeComplete, 400);
let resizeTimeout = setTimeout(onResizeComplete, 400);
window.onresize = function () {
clearTimeout(resizeTimeout);
resizeTimeout = setTimeout(onResizeComplete, 400);
};
//////////////////////////////////////////
// AUTO APPLY URL ANCHORS
// // TODO: pull this from data js instead
// const sections = [
// "pitch",
// "products",
// "infographics",
// "bitcoin",
// "be-your-own",
// "powered-by",
// "support",
// "dev",
// "community",
// ];
// setTimeout(function () {
// // timeout to allow initial load to redirect to anchor
// // TODO: maybe apply the scroll-behavior: smooth to HTML after a timeout
// sections.forEach((slug) => {
// ScrollTrigger.create({
// trigger: "#" + slug,
// start: "top 25%",
// end: "bottom 25%",
// //markers: { startColor: "white", endColor: "white" },
// onEnter: () => {
// window.location.href = "#" + slug;
// },
// onEnterBack: () => {
// window.location.href = "#" + slug;
// },
// });
// });
// }, 2000);
//////////////////////////////////////////
// SHADOW PARALLAX

View File

@@ -1,81 +0,0 @@
/********************************************/
/* CONTACT POST */
/********************************************/
const emailError = document.getElementById("emailError")
const emailSuccess = document.getElementById("emailSuccess")
function showSuccess(message) {
hideError();
emailSuccess.classList.add("form-alert--visible");
emailSuccess.innerHTML = message
}
function hideSuccess() {
emailError.classList.remove("form-alert--visible");
}
function showError(message) {
hideSuccess();
emailError.classList.add("form-alert--visible");
emailError.innerHTML = message;
}
function hideError() {
emailError.classList.remove("form-alert--visible");
}
function clear(){
document.getElementById("subscribeForm").reset()
}
document.getElementById("contactSubmit").addEventListener("click", function (e) {
const fromEmail = document.getElementById("fromEmail");
e.preventDefault()
if (
/(?:[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*|"(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21\x23-\x5b\x5d-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])*")@(?:(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?|\[(?:(?:(2(5[0-5]|[0-4][0-9])|1[0-9][0-9]|[1-9]?[0-9]))\.){3}(?:(2(5[0-5]|[0-4][0-9])|1[0-9][0-9]|[1-9]?[0-9])|[a-z0-9-]*[a-z0-9]:(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21-\x5a\x53-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])+)\])/.test(
fromEmail.value
)
) {
hideError();
try {
var body = {
customer: {
email: fromEmail.value,
accepts_marketing: true,
verified_email: true,
},
};
fetch("https://start9.com/api/subscribe", {
method: "POST",
headers: {
"Content-Type": "application/json",
},
body: JSON.stringify(body),
}).then((response) => {
clear()
if (response.ok) {
showSuccess("Thanks for subscribing!");
} else {
if (response.status = 422) {
showError("Already subscribed!")
} else {
console.error(`Error code: ${response.status} - Details: ${response.statusText}`)
showError(
"Something's not working. If you keep getting this error, try us at <a href='https://twitter.com/start9labs' rel='noopener noreferrer' target='_blank'>Twitter</a> instead."
);
}
}
});
} catch (error) {
clear()
console.error(error)
showError(
"Something's not working. If you keep getting this error, try us at <a href='https://twitter.com/start9labs' rel='noopener noreferrer' target='_blank'>Twitter</a> instead."
);
}
} else {
showError("Sorry, you must use a valid email address.");
}
});

4
src/assets/js/main.js Normal file
View File

@@ -0,0 +1,4 @@
import { gsap } from "gsap";
import { CustomEase } from "gsap/CustomEase";
gsap.registerPlugin(CustomEase, window.DrawSVGPlugin, ScrollTrigger);

View File

@@ -1,5 +1,6 @@
//////////////////////////////////////////
// MENU
import { gsap } from "gsap";
let menuOpen = document.getElementById("menu-open"),
menuClose = document.getElementById("menu-close"),
@@ -9,7 +10,7 @@ let menuOpen = document.getElementById("menu-open"),
menuOpen.addEventListener("click", (e) => openMenu(e));
menuClose.addEventListener("click", (e) => closeMenu(e));
function openMenu(e) {
export default function openMenu(e) {
e.preventDefault();
gsap.to("#menu", { y: "0vh" });
gsap.to("main", { y: "100vh" });

View File

@@ -1,21 +1,19 @@
//////////////////////////////////////////
// GSAP ACTIONS
// options: "play", "pause", "resume", "reset", "restart", "complete", "reverse", and "none"
// arguments: onEnter, onLeave, onEnterBack, and onLeaveBack
import { gsap } from "gsap";
const defaultActions = "play none none none";
gsap.from("section#hero+section", {
duration: 0.5,
y: "5rem",
opacity: 0,
delay: 1,
filter: "blur(10px)",
scrollTrigger: {
trigger: "section#hero+section",
start: "top 75%", // "triggerElement page"
toggleActions: defaultActions,
},
});
duration: 0.5,
y: "5rem",
opacity: 0,
delay: 1,
filter: "blur(10px)",
scrollTrigger: {
trigger: "section#hero+section",
start: "top 75%", // "triggerElement page"
toggleActions: defaultActions,
},
});
const sections = document.querySelectorAll("section:not(#hero):not(#blurb):not(#menu)");

View File

@@ -5,14 +5,17 @@
const tickerTL = gsap.timeline();
let pseudoserviceArray = gsap.utils.toArray(".pseudoservice"),
next = 4,
itemHeight,
listHeight,
windowHeight,
kerplunk,
kerplunk2;
windowHeight;
function initializeSizes() {
export const next = 4
const kerplunk2 = CustomEase.create(
"custom",
"M0,0 C0.126,0.382 0.178,0.802 0.288,1.052 0.303,1.088 0.372,0.99 0.434,0.99 0.502,0.99 0.497,1 0.524,1 0.664,1 0.863,1 1,1 "
);
export function initializeSizes() {
itemHeight = document
.querySelector(".pseudoservice")
.getBoundingClientRect().height;
@@ -24,18 +27,8 @@ function initializeSizes() {
windowHeight = document.getElementById("ticker__window").clientHeight;
}
kerplunk = CustomEase.create(
"custom",
"M0,0 C0.126,0.382 0.066,0.863 0.198,1.036 0.25,1.104 0.264,0.982 0.326,0.982 0.344,0.982 0.489,0.998 0.516,1 0.65,1.007 0.863,1 1,1 "
);
kerplunk2 = CustomEase.create(
"custom",
"M0,0 C0.126,0.382 0.178,0.802 0.288,1.052 0.303,1.088 0.372,0.99 0.434,0.99 0.502,0.99 0.497,1 0.524,1 0.664,1 0.863,1 1,1 "
);
function tick() {
// init()
export function tick() {
let action = tickerTL
.to(pseudoserviceArray, {
id: "thunk",
@@ -48,39 +41,49 @@ function tick() {
pseudoserviceArray.push(pseudoserviceArray.shift());
const startIndex = window.screen.width < 1300 ? 1 : 2
let thisPseudoservice = pseudoserviceArray[startIndex].innerHTML
let thisServiceElement = document.querySelector(".service-container--" + thisPseudoservice.toLowerCase().replace(" ", "-"));
if (thisServiceElement) {
document.querySelectorAll(".service-container").forEach(a => a.style.display = "none")
thisServiceElement.style.display = "flex";
}
// start endless run
gsap.delayedCall(next, tick);
}
function init() {
// initially start ticker at i=2, which is where bar is positioned to start
let thisPseudoservice = pseudoserviceArray[2].innerHTML
let thisElement = document.querySelector(
".service-container--" + thisPseudoservice.toLowerCase().replace(" ", "-")
);
let thisServiceElement = document.querySelector(".service-container--" + thisPseudoservice.toLowerCase().replace(" ", "-"));
var slidesContainerArray = document.querySelectorAll(".service-container");
slidesContainerArray.forEach((thisContainer) => {
thisContainer.style.display = "none";
});
if (thisElement) {
thisElement.style.display = "flex";
if (thisServiceElement) {
document.querySelectorAll(".service-container").forEach(a => a.style.display = "none")
thisServiceElement.style.display = "flex";
}
}
// initialize
gsap.delayedCall(next, tick);
// @NOTE in progress implementation - do not remove
function moveTick(service) {
let thisPseudoservice = pseudoserviceArray.slice().filter(a => a.innerHTML === service)[0].innerHTML
let thisElement = document.querySelector(".service-container--" + thisPseudoservice.toLowerCase().replace(" ", "-"));
// get index of current tick
// let current = Array.from(Array.from(document.querySelectorAll(".service-container")).filter(a => a.style.display === 'flex')[0].classList).filter(a => a.includes("--"))[0].split("--")[1]
// let currentIndex = pseudoserviceArray.findIndex(a => a.innerHTML.toLowerCase() === current)
let current = pseudoserviceArray[2].innerHTML
let currentIndex = 2
// get index of current tick
const item = Array.from(document.querySelectorAll(".service-container")).filter(a => a.style.display === 'flex')
if (item.length > 0) {
current = Array.from(item[0].classList).filter(a => a.includes("--"))[0].split("--")[1]
currentIndex = pseudoserviceArray.findIndex(a => a.innerHTML.toLowerCase() === current)
thisPseudoservice = pseudoserviceArray[currentIndex].innerHTML
}
let i = pseudoserviceArray.findIndex(a => a.innerHTML === service)
console.log(i)
let diff = Math.abs(currentIndex - i)
@@ -107,5 +110,4 @@ function moveTick(service) {
if (thisElement) {
thisElement.style.display = "flex";
}
}

View File

@@ -82,12 +82,21 @@ section#community {
a {
&:hover svg path{
fill: var(--c-text-accent);
transform: scale(0.9);
}
svg {
width: 3rem;
path{
transition: var(--t-simple);
path {
transition: var(--t-simple);
}
}
}
}
@media only screen and (max-width: 500px) {
section#community {
input[type=email] {
width: 23rem;
}
}
}

View File

@@ -7,6 +7,7 @@
src: url(../fonts/montserrat/v25/JTUQjIg1_i6t8kCHKm459WxRxC7mw9c.woff2) format('woff2');
unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;
}
/* cyrillic */
@font-face {
font-family: 'Montserrat';
@@ -16,6 +17,7 @@
src: url(../fonts/montserrat/v25/JTUQjIg1_i6t8kCHKm459WxRzS7mw9c.woff2) format('woff2');
unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
}
/* vietnamese */
@font-face {
font-family: 'Montserrat';
@@ -25,6 +27,7 @@
src: url(../fonts/montserrat/v25/JTUQjIg1_i6t8kCHKm459WxRxi7mw9c.woff2) format('woff2');
unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+1EA0-1EF9, U+20AB;
}
/* latin-ext */
@font-face {
font-family: 'Montserrat';
@@ -34,6 +37,7 @@
src: url(../fonts/montserrat/v25/JTUQjIg1_i6t8kCHKm459WxRxy7mw9c.woff2) format('woff2');
unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
/* latin */
@font-face {
font-family: 'Montserrat';
@@ -43,6 +47,7 @@
src: url(../fonts/montserrat/v25/JTUQjIg1_i6t8kCHKm459WxRyS7m.woff2) format('woff2');
unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
/* cyrillic-ext */
@font-face {
font-family: 'Montserrat';
@@ -52,6 +57,7 @@
src: url(../fonts/montserrat/v25/JTUQjIg1_i6t8kCHKm459WxRxC7mw9c.woff2) format('woff2');
unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;
}
/* cyrillic */
@font-face {
font-family: 'Montserrat';
@@ -61,6 +67,7 @@
src: url(../fonts/montserrat/v25/JTUQjIg1_i6t8kCHKm459WxRzS7mw9c.woff2) format('woff2');
unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
}
/* vietnamese */
@font-face {
font-family: 'Montserrat';
@@ -70,6 +77,7 @@
src: url(../fonts/montserrat/v25/JTUQjIg1_i6t8kCHKm459WxRxi7mw9c.woff2) format('woff2');
unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+1EA0-1EF9, U+20AB;
}
/* latin-ext */
@font-face {
font-family: 'Montserrat';
@@ -79,6 +87,7 @@
src: url(../fonts/montserrat/v25/JTUQjIg1_i6t8kCHKm459WxRxy7mw9c.woff2) format('woff2');
unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
/* latin */
@font-face {
font-family: 'Montserrat';
@@ -88,6 +97,7 @@
src: url(../fonts/montserrat/v25/JTUQjIg1_i6t8kCHKm459WxRyS7m.woff2) format('woff2');
unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
/* cyrillic-ext */
@font-face {
font-family: 'Montserrat';
@@ -97,6 +107,7 @@
src: url(../fonts/montserrat/v25/JTUQjIg1_i6t8kCHKm459WxRxC7mw9c.woff2) format('woff2');
unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;
}
/* cyrillic */
@font-face {
font-family: 'Montserrat';
@@ -106,6 +117,7 @@
src: url(../fonts/montserrat/v25/JTUQjIg1_i6t8kCHKm459WxRzS7mw9c.woff2) format('woff2');
unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
}
/* vietnamese */
@font-face {
font-family: 'Montserrat';
@@ -115,6 +127,7 @@
src: url(../fonts/montserrat/v25/JTUQjIg1_i6t8kCHKm459WxRxi7mw9c.woff2) format('woff2');
unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+1EA0-1EF9, U+20AB;
}
/* latin-ext */
@font-face {
font-family: 'Montserrat';
@@ -124,6 +137,7 @@
src: url(../fonts/montserrat/v25/JTUQjIg1_i6t8kCHKm459WxRxy7mw9c.woff2) format('woff2');
unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
/* latin */
@font-face {
font-family: 'Montserrat';
@@ -133,6 +147,7 @@
src: url(../fonts/montserrat/v25/JTUQjIg1_i6t8kCHKm459WxRyS7m.woff2) format('woff2');
unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
/* cyrillic-ext */
@font-face {
font-family: 'Montserrat';
@@ -142,6 +157,7 @@
src: url(../fonts/montserrat/v25/JTUQjIg1_i6t8kCHKm459WxRxC7mw9c.woff2) format('woff2');
unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;
}
/* cyrillic */
@font-face {
font-family: 'Montserrat';
@@ -151,6 +167,7 @@
src: url(../fonts/montserrat/v25/JTUQjIg1_i6t8kCHKm459WxRzS7mw9c.woff2) format('woff2');
unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
}
/* vietnamese */
@font-face {
font-family: 'Montserrat';
@@ -160,6 +177,7 @@
src: url(../fonts/montserrat/v25/JTUQjIg1_i6t8kCHKm459WxRxi7mw9c.woff2) format('woff2');
unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+1EA0-1EF9, U+20AB;
}
/* latin-ext */
@font-face {
font-family: 'Montserrat';
@@ -169,6 +187,7 @@
src: url(../fonts/montserrat/v25/JTUQjIg1_i6t8kCHKm459WxRxy7mw9c.woff2) format('woff2');
unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
/* latin */
@font-face {
font-family: 'Montserrat';
@@ -178,6 +197,7 @@
src: url(../fonts/montserrat/v25/JTUQjIg1_i6t8kCHKm459WxRyS7m.woff2) format('woff2');
unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
/* cyrillic-ext */
@font-face {
font-family: 'Montserrat';
@@ -187,6 +207,7 @@
src: url(../fonts/montserrat/v25/JTUQjIg1_i6t8kCHKm459WxRxC7mw9c.woff2) format('woff2');
unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;
}
/* cyrillic */
@font-face {
font-family: 'Montserrat';
@@ -196,6 +217,7 @@
src: url(../fonts/montserrat/v25/JTUQjIg1_i6t8kCHKm459WxRzS7mw9c.woff2) format('woff2');
unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
}
/* vietnamese */
@font-face {
font-family: 'Montserrat';
@@ -205,6 +227,7 @@
src: url(../fonts/montserrat/v25/JTUQjIg1_i6t8kCHKm459WxRxi7mw9c.woff2) format('woff2');
unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+1EA0-1EF9, U+20AB;
}
/* latin-ext */
@font-face {
font-family: 'Montserrat';
@@ -214,6 +237,7 @@
src: url(../fonts/montserrat/v25/JTUQjIg1_i6t8kCHKm459WxRxy7mw9c.woff2) format('woff2');
unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
/* latin */
@font-face {
font-family: 'Montserrat';
@@ -223,6 +247,7 @@
src: url(../fonts/montserrat/v25/JTUQjIg1_i6t8kCHKm459WxRyS7m.woff2) format('woff2');
unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
/* cyrillic-ext */
@font-face {
font-family: 'Montserrat';
@@ -232,6 +257,7 @@
src: url(../fonts/montserrat/v25/JTUQjIg1_i6t8kCHKm459WxRxC7mw9c.woff2) format('woff2');
unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;
}
/* cyrillic */
@font-face {
font-family: 'Montserrat';
@@ -241,6 +267,7 @@
src: url(../fonts/montserrat/v25/JTUQjIg1_i6t8kCHKm459WxRzS7mw9c.woff2) format('woff2');
unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
}
/* vietnamese */
@font-face {
font-family: 'Montserrat';
@@ -250,6 +277,7 @@
src: url(../fonts/montserrat/v25/JTUQjIg1_i6t8kCHKm459WxRxi7mw9c.woff2) format('woff2');
unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+1EA0-1EF9, U+20AB;
}
/* latin-ext */
@font-face {
font-family: 'Montserrat';
@@ -259,6 +287,7 @@
src: url(../fonts/montserrat/v25/JTUQjIg1_i6t8kCHKm459WxRxy7mw9c.woff2) format('woff2');
unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
/* latin */
@font-face {
font-family: 'Montserrat';
@@ -268,6 +297,7 @@
src: url(../fonts/montserrat/v25/JTUQjIg1_i6t8kCHKm459WxRyS7m.woff2) format('woff2');
unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
/* cyrillic-ext */
@font-face {
font-family: 'Montserrat';
@@ -277,6 +307,7 @@
src: url(../fonts/montserrat/v25/JTUQjIg1_i6t8kCHKm459WxRxC7mw9c.woff2) format('woff2');
unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;
}
/* cyrillic */
@font-face {
font-family: 'Montserrat';
@@ -286,6 +317,7 @@
src: url(../fonts/montserrat/v25/JTUQjIg1_i6t8kCHKm459WxRzS7mw9c.woff2) format('woff2');
unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
}
/* vietnamese */
@font-face {
font-family: 'Montserrat';
@@ -295,6 +327,7 @@
src: url(../fonts/montserrat/v25/JTUQjIg1_i6t8kCHKm459WxRxi7mw9c.woff2) format('woff2');
unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+1EA0-1EF9, U+20AB;
}
/* latin-ext */
@font-face {
font-family: 'Montserrat';
@@ -304,6 +337,7 @@
src: url(../fonts/montserrat/v25/JTUQjIg1_i6t8kCHKm459WxRxy7mw9c.woff2) format('woff2');
unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
/* latin */
@font-face {
font-family: 'Montserrat';
@@ -313,6 +347,7 @@
src: url(../fonts/montserrat/v25/JTUQjIg1_i6t8kCHKm459WxRyS7m.woff2) format('woff2');
unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
/* cyrillic-ext */
@font-face {
font-family: 'Montserrat';
@@ -322,6 +357,7 @@
src: url(../fonts/montserrat/v25/JTUQjIg1_i6t8kCHKm459WxRxC7mw9c.woff2) format('woff2');
unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;
}
/* cyrillic */
@font-face {
font-family: 'Montserrat';
@@ -331,6 +367,7 @@
src: url(../fonts/montserrat/v25/JTUQjIg1_i6t8kCHKm459WxRzS7mw9c.woff2) format('woff2');
unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
}
/* vietnamese */
@font-face {
font-family: 'Montserrat';
@@ -340,6 +377,7 @@
src: url(../fonts/montserrat/v25/JTUQjIg1_i6t8kCHKm459WxRxi7mw9c.woff2) format('woff2');
unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+1EA0-1EF9, U+20AB;
}
/* latin-ext */
@font-face {
font-family: 'Montserrat';
@@ -349,6 +387,7 @@
src: url(../fonts/montserrat/v25/JTUQjIg1_i6t8kCHKm459WxRxy7mw9c.woff2) format('woff2');
unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
/* latin */
@font-face {
font-family: 'Montserrat';
@@ -358,6 +397,7 @@
src: url(../fonts/montserrat/v25/JTUQjIg1_i6t8kCHKm459WxRyS7m.woff2) format('woff2');
unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
/* cyrillic-ext */
@font-face {
font-family: 'Montserrat';
@@ -367,6 +407,7 @@
src: url(../fonts/montserrat/v25/JTUQjIg1_i6t8kCHKm459WxRxC7mw9c.woff2) format('woff2');
unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;
}
/* cyrillic */
@font-face {
font-family: 'Montserrat';
@@ -376,6 +417,7 @@
src: url(../fonts/montserrat/v25/JTUQjIg1_i6t8kCHKm459WxRzS7mw9c.woff2) format('woff2');
unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
}
/* vietnamese */
@font-face {
font-family: 'Montserrat';
@@ -385,6 +427,7 @@
src: url(../fonts/montserrat/v25/JTUQjIg1_i6t8kCHKm459WxRxi7mw9c.woff2) format('woff2');
unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+1EA0-1EF9, U+20AB;
}
/* latin-ext */
@font-face {
font-family: 'Montserrat';
@@ -394,6 +437,7 @@
src: url(../fonts/montserrat/v25/JTUQjIg1_i6t8kCHKm459WxRxy7mw9c.woff2) format('woff2');
unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
/* latin */
@font-face {
font-family: 'Montserrat';
@@ -403,6 +447,7 @@
src: url(../fonts/montserrat/v25/JTUQjIg1_i6t8kCHKm459WxRyS7m.woff2) format('woff2');
unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
/* cyrillic-ext */
@font-face {
font-family: 'Montserrat';
@@ -412,6 +457,7 @@
src: url(../fonts/montserrat/v25/JTUSjIg1_i6t8kCHKm459WRhyzbi.woff2) format('woff2');
unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;
}
/* cyrillic */
@font-face {
font-family: 'Montserrat';
@@ -421,6 +467,7 @@
src: url(../fonts/montserrat/v25/JTUSjIg1_i6t8kCHKm459W1hyzbi.woff2) format('woff2');
unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
}
/* vietnamese */
@font-face {
font-family: 'Montserrat';
@@ -430,6 +477,7 @@
src: url(../fonts/montserrat/v25/JTUSjIg1_i6t8kCHKm459WZhyzbi.woff2) format('woff2');
unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+1EA0-1EF9, U+20AB;
}
/* latin-ext */
@font-face {
font-family: 'Montserrat';
@@ -439,6 +487,7 @@
src: url(../fonts/montserrat/v25/JTUSjIg1_i6t8kCHKm459Wdhyzbi.woff2) format('woff2');
unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
/* latin */
@font-face {
font-family: 'Montserrat';
@@ -448,6 +497,7 @@
src: url(../fonts/montserrat/v25/JTUSjIg1_i6t8kCHKm459Wlhyw.woff2) format('woff2');
unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
/* cyrillic-ext */
@font-face {
font-family: 'Montserrat';
@@ -457,6 +507,7 @@
src: url(../fonts/montserrat/v25/JTUSjIg1_i6t8kCHKm459WRhyzbi.woff2) format('woff2');
unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;
}
/* cyrillic */
@font-face {
font-family: 'Montserrat';
@@ -466,6 +517,7 @@
src: url(../fonts/montserrat/v25/JTUSjIg1_i6t8kCHKm459W1hyzbi.woff2) format('woff2');
unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
}
/* vietnamese */
@font-face {
font-family: 'Montserrat';
@@ -475,6 +527,7 @@
src: url(../fonts/montserrat/v25/JTUSjIg1_i6t8kCHKm459WZhyzbi.woff2) format('woff2');
unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+1EA0-1EF9, U+20AB;
}
/* latin-ext */
@font-face {
font-family: 'Montserrat';
@@ -484,6 +537,7 @@
src: url(../fonts/montserrat/v25/JTUSjIg1_i6t8kCHKm459Wdhyzbi.woff2) format('woff2');
unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
/* latin */
@font-face {
font-family: 'Montserrat';
@@ -493,6 +547,7 @@
src: url(../fonts/montserrat/v25/JTUSjIg1_i6t8kCHKm459Wlhyw.woff2) format('woff2');
unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
/* cyrillic-ext */
@font-face {
font-family: 'Montserrat';
@@ -502,6 +557,7 @@
src: url(../fonts/montserrat/v25/JTUSjIg1_i6t8kCHKm459WRhyzbi.woff2) format('woff2');
unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;
}
/* cyrillic */
@font-face {
font-family: 'Montserrat';
@@ -511,6 +567,7 @@
src: url(../fonts/montserrat/v25/JTUSjIg1_i6t8kCHKm459W1hyzbi.woff2) format('woff2');
unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
}
/* vietnamese */
@font-face {
font-family: 'Montserrat';
@@ -520,6 +577,7 @@
src: url(../fonts/montserrat/v25/JTUSjIg1_i6t8kCHKm459WZhyzbi.woff2) format('woff2');
unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+1EA0-1EF9, U+20AB;
}
/* latin-ext */
@font-face {
font-family: 'Montserrat';
@@ -529,6 +587,7 @@
src: url(../fonts/montserrat/v25/JTUSjIg1_i6t8kCHKm459Wdhyzbi.woff2) format('woff2');
unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
/* latin */
@font-face {
font-family: 'Montserrat';
@@ -538,6 +597,7 @@
src: url(../fonts/montserrat/v25/JTUSjIg1_i6t8kCHKm459Wlhyw.woff2) format('woff2');
unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
/* cyrillic-ext */
@font-face {
font-family: 'Montserrat';
@@ -547,6 +607,7 @@
src: url(../fonts/montserrat/v25/JTUSjIg1_i6t8kCHKm459WRhyzbi.woff2) format('woff2');
unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;
}
/* cyrillic */
@font-face {
font-family: 'Montserrat';
@@ -556,6 +617,7 @@
src: url(../fonts/montserrat/v25/JTUSjIg1_i6t8kCHKm459W1hyzbi.woff2) format('woff2');
unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
}
/* vietnamese */
@font-face {
font-family: 'Montserrat';
@@ -565,6 +627,7 @@
src: url(../fonts/montserrat/v25/JTUSjIg1_i6t8kCHKm459WZhyzbi.woff2) format('woff2');
unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+1EA0-1EF9, U+20AB;
}
/* latin-ext */
@font-face {
font-family: 'Montserrat';
@@ -574,6 +637,7 @@
src: url(../fonts/montserrat/v25/JTUSjIg1_i6t8kCHKm459Wdhyzbi.woff2) format('woff2');
unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
/* latin */
@font-face {
font-family: 'Montserrat';
@@ -584,6 +648,56 @@
unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
/* cyrillic-ext */
@font-face {
font-family: 'Montserrat';
font-style: normal;
font-weight: 500;
font-display: swap;
src: url(../fonts/montserrat/v25/JTUSjIg1_i6t8kCHKm459WRhyzbi.woff2) format('woff2');
unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;
}
/* cyrillic */
@font-face {
font-family: 'Montserrat';
font-style: normal;
font-weight: 500;
font-display: swap;
src: url(../fonts/montserrat/v25/JTUSjIg1_i6t8kCHKm459W1hyzbi.woff2) format('woff2');
unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
}
/* vietnamese */
@font-face {
font-family: 'Montserrat';
font-style: normal;
font-weight: 500;
font-display: swap;
src: url(../fonts/montserrat/v25/JTUSjIg1_i6t8kCHKm459WZhyzbi.woff2) format('woff2');
unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+1EA0-1EF9, U+20AB;
}
/* latin-ext */
@font-face {
font-family: 'Montserrat';
font-style: normal;
font-weight: 500;
font-display: swap;
src: url(../fonts/montserrat/v25/JTUSjIg1_i6t8kCHKm459Wdhyzbi.woff2) format('woff2');
unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
/* latin */
@font-face {
font-family: 'Montserrat';
font-style: normal;
font-weight: 500;
font-display: swap;
src: url(../fonts/montserrat/v25/JTUSjIg1_i6t8kCHKm459Wlhyw.woff2) format('woff2');
unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
/* cyrillic-ext */
@font-face {
font-family: 'Montserrat';
@@ -593,6 +707,7 @@
src: url(../fonts/montserrat/v25/JTUSjIg1_i6t8kCHKm459WRhyzbi.woff2) format('woff2');
unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;
}
/* cyrillic */
@font-face {
font-family: 'Montserrat';
@@ -602,6 +717,7 @@
src: url(../fonts/montserrat/v25/JTUSjIg1_i6t8kCHKm459W1hyzbi.woff2) format('woff2');
unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
}
/* vietnamese */
@font-face {
font-family: 'Montserrat';
@@ -611,6 +727,7 @@
src: url(../fonts/montserrat/v25/JTUSjIg1_i6t8kCHKm459WZhyzbi.woff2) format('woff2');
unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+1EA0-1EF9, U+20AB;
}
/* latin-ext */
@font-face {
font-family: 'Montserrat';
@@ -620,6 +737,7 @@
src: url(../fonts/montserrat/v25/JTUSjIg1_i6t8kCHKm459Wdhyzbi.woff2) format('woff2');
unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
/* latin */
@font-face {
font-family: 'Montserrat';
@@ -629,6 +747,7 @@
src: url(../fonts/montserrat/v25/JTUSjIg1_i6t8kCHKm459Wlhyw.woff2) format('woff2');
unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
/* cyrillic-ext */
@font-face {
font-family: 'Montserrat';
@@ -638,6 +757,7 @@
src: url(../fonts/montserrat/v25/JTUSjIg1_i6t8kCHKm459WRhyzbi.woff2) format('woff2');
unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;
}
/* cyrillic */
@font-face {
font-family: 'Montserrat';
@@ -647,6 +767,7 @@
src: url(../fonts/montserrat/v25/JTUSjIg1_i6t8kCHKm459W1hyzbi.woff2) format('woff2');
unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
}
/* vietnamese */
@font-face {
font-family: 'Montserrat';
@@ -656,6 +777,7 @@
src: url(../fonts/montserrat/v25/JTUSjIg1_i6t8kCHKm459WZhyzbi.woff2) format('woff2');
unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+1EA0-1EF9, U+20AB;
}
/* latin-ext */
@font-face {
font-family: 'Montserrat';
@@ -665,6 +787,7 @@
src: url(../fonts/montserrat/v25/JTUSjIg1_i6t8kCHKm459Wdhyzbi.woff2) format('woff2');
unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
/* latin */
@font-face {
font-family: 'Montserrat';
@@ -674,6 +797,7 @@
src: url(../fonts/montserrat/v25/JTUSjIg1_i6t8kCHKm459Wlhyw.woff2) format('woff2');
unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
/* cyrillic-ext */
@font-face {
font-family: 'Montserrat';
@@ -683,6 +807,7 @@
src: url(../fonts/montserrat/v25/JTUSjIg1_i6t8kCHKm459WRhyzbi.woff2) format('woff2');
unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;
}
/* cyrillic */
@font-face {
font-family: 'Montserrat';
@@ -692,6 +817,7 @@
src: url(../fonts/montserrat/v25/JTUSjIg1_i6t8kCHKm459W1hyzbi.woff2) format('woff2');
unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
}
/* vietnamese */
@font-face {
font-family: 'Montserrat';
@@ -701,6 +827,7 @@
src: url(../fonts/montserrat/v25/JTUSjIg1_i6t8kCHKm459WZhyzbi.woff2) format('woff2');
unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+1EA0-1EF9, U+20AB;
}
/* latin-ext */
@font-face {
font-family: 'Montserrat';
@@ -710,6 +837,7 @@
src: url(../fonts/montserrat/v25/JTUSjIg1_i6t8kCHKm459Wdhyzbi.woff2) format('woff2');
unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
/* latin */
@font-face {
font-family: 'Montserrat';
@@ -719,6 +847,7 @@
src: url(../fonts/montserrat/v25/JTUSjIg1_i6t8kCHKm459Wlhyw.woff2) format('woff2');
unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
/* cyrillic-ext */
@font-face {
font-family: 'Montserrat';
@@ -728,6 +857,7 @@
src: url(../fonts/montserrat/v25/JTUSjIg1_i6t8kCHKm459WRhyzbi.woff2) format('woff2');
unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F;
}
/* cyrillic */
@font-face {
font-family: 'Montserrat';
@@ -737,6 +867,7 @@
src: url(../fonts/montserrat/v25/JTUSjIg1_i6t8kCHKm459W1hyzbi.woff2) format('woff2');
unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
}
/* vietnamese */
@font-face {
font-family: 'Montserrat';
@@ -746,6 +877,7 @@
src: url(../fonts/montserrat/v25/JTUSjIg1_i6t8kCHKm459WZhyzbi.woff2) format('woff2');
unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+1EA0-1EF9, U+20AB;
}
/* latin-ext */
@font-face {
font-family: 'Montserrat';
@@ -755,6 +887,7 @@
src: url(../fonts/montserrat/v25/JTUSjIg1_i6t8kCHKm459Wdhyzbi.woff2) format('woff2');
unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
/* latin */
@font-face {
font-family: 'Montserrat';
@@ -763,4 +896,4 @@
font-display: swap;
src: url(../fonts/montserrat/v25/JTUSjIg1_i6t8kCHKm459Wlhyw.woff2) format('woff2');
unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
}

View File

@@ -4,28 +4,38 @@ footer {
font-weight: 400;
color: gray;
background-color: black;
.footer__copyright, .footer__donate {
font-size: max(10px, 0.8rem);
.footer__copyright {
font-size: max(8px, 0.6rem);
}
.footer__content {
display: flex;
.header {
align-self: flex-start;
margin: 1.8rem 0 0 5rem;
flex-direction: column;
svg {
width: 12rem;
width: 10rem;
}
p {
font-size: max(12px, 0.9rem);
}
}
.footer__donate {
margin-top: 3rem;
.footer__btns {
display: flex;
flex-direction: row;
align-items: center;
align-self: center;
gap: 0.7rem;
margin-top: 1.2rem;
.btn {
padding: 0.5rem 1.5rem;
padding: 0.5rem 1.2rem;
color: var(--c-text-bright);
background-color: var(--c-accent);
border: 0;
font-family: var(--f-accent);
font-weight: 300;
font-size: 1rem;
font-size: max(13px, 1rem);
text-decoration: none;
box-shadow: 0 1rem 1rem -0.5rem var(--c-shadow-3);
border-radius: 34px;
@@ -35,9 +45,22 @@ footer {
filter: brightness(120%);
}
}
a {
&:hover svg path {
fill: var(--c-text-accent);
}
svg {
width: 2.3rem !important;
path {
transition: var(--t-simple);
}
}
}
}
}
.groups{
margin-left: 10%;
display: flex;
flex-wrap: wrap;
grid-template-columns: 1fr 1fr 1fr;
@@ -105,18 +128,18 @@ footer {
.footer__canary{
text-align: center;
padding: 2rem;
color: var(--c-gray3)
}
}
@media only screen and (max-width: 1200px) {
footer .groups li > a {
font-size: 2vw;
font-size: 1.6vw;
}
}
@media only screen and (max-width: 650px) {
footer .footer__content {
flex-direction: column;
.header {
@@ -132,8 +155,9 @@ footer {
}
.groups li > a {
font-size: 3.5vmin;
}
}
.groups {
margin-left: 0;
display: grid;
grid-template-columns: 1fr 1fr;
grid-template-rows: 1fr 1fr 1fr;

View File

@@ -74,7 +74,7 @@ section#infographics{
}
}
@media only screen and (max-width: 500px) {
@media only screen and (max-width: 400px) and (min-width: 375px) {
.subsction:first-child {
padding-left: 0;
}

View File

@@ -399,6 +399,10 @@ nav {
align-self: center;
}
.text-center {
text-align: center;
}
@media only screen and (max-width: 500px) {
.header__logo img {
width: 11rem !important;
@@ -449,3 +453,7 @@ nav {
}
}
}
.pb1 {
padding-bottom: 1rem;
}

View File

@@ -1,103 +1,103 @@
#menu{
position: fixed;
z-index: 1;
padding: 0;
width: 100vw;
height:100vh;
transform: translateY(-100vh);
.menu-content{
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
height: 100vh;
.header{
align-self: flex-start;
margin: 5rem 0 0 5rem;
svg{
width: 12rem;
}
}
position: fixed;
z-index: 1;
padding: 0;
width: 100vw;
height:100vh;
transform: translateY(-100vh);
.menu-content{
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
height: 100vh;
.header{
align-self: flex-start;
margin: 5rem 0 0 5rem;
svg{
width: 12rem;
}
}
background-color: var(--c-bkg);
.groups{
display: grid;
grid-template-columns: 1fr 1fr 1fr;
grid-template-rows: 1fr 1fr;
.half {
grid-row: span 1;
}
.full {
grid-row: span 2;
}
& > li {
padding: 2.5rem 2.5rem;
&:nth-child(-n+2){
border-right: var(--b-secondary);
}
}
}
background-color: var(--c-bkg);
.groups{
display: grid;
grid-template-columns: 1fr 1fr 1fr;
grid-template-rows: 1fr 1fr;
.half {
grid-row: span 1;
// to keep border from overlapping
margin-bottom: 2px;
}
h1{
font-family: var(--f-accent-bold);
font-size: 1rem;
color: var(--c-text-primary);
margin-bottom: 1.7rem;
.full {
grid-row: span 2;
}
.groups li > a {
font-family: var(--f-accent);
font-size: 1.9rem;
line-height: 1.5;
font-weight: 100;
text-transform: uppercase;
letter-spacing: .1em;
color: var(--c-text-primary);
position: relative;
display: flex;
flex-direction: column;
display: inline-block;
white-space: nowrap;
--hover-padding: .5rem;
--hover-width: calc(100% + (2 * var(--hover-padding)));
--hover-nudge: calc(-1 * var(--hover-padding));
&::after{
content: '';
position: absolute;
transition: var(--t-simple);
display: inline-block;
width:0;
height: 84%;
top: 6%;
left: 50%;
opacity: 0;
}
&:hover {
&::after{
border: var(--b-primary);
width: var(--hover-width);
left: var(--hover-nudge);
opacity: 1;
}
}
&.highlight{
color: var(--c-text-bright);
font-weight: 300;
&::before{
content: '';
z-index: -1;
//border: var(--b-primary);
background-color: var(--c-text-accent);
width: var(--hover-width);
left: var(--hover-nudge);
top: 6%;
display: inline-block;
height: 85%;
position: absolute;
}
}
& > li {
padding: 2.5rem 2.5rem;
&:nth-child(-n+2),&:nth-child(4){
border-right: var(--b-secondary);
}
}
}
h1{
font-family: var(--f-accent-bold);
font-size: 1rem;
color: var(--c-text-primary);
margin-bottom: 1.7rem;
}
.groups li > a {
font-family: var(--f-accent);
font-size: 1.9rem;
line-height: 1.5;
font-weight: 100;
text-transform: uppercase;
letter-spacing: .1em;
color: var(--c-text-primary);
position: relative;
display: flex;
flex-direction: column;
display: inline-block;
white-space: nowrap;
--hover-padding: .5rem;
--hover-width: calc(100% + (2 * var(--hover-padding)));
--hover-nudge: calc(-1 * var(--hover-padding));
&::after{
content: '';
position: absolute;
transition: var(--t-simple);
display: inline-block;
width:0;
height: 84%;
top: 6%;
left: 50%;
opacity: 0;
}
&:hover {
&::after{
border: var(--b-primary);
width: var(--hover-width);
left: var(--hover-nudge);
opacity: 1;
}
}
&.highlight{
color: var(--c-text-bright);
font-weight: 300;
&::before{
content: '';
z-index: -1;
//border: var(--b-primary);
background-color: var(--c-text-accent);
width: var(--hover-width);
left: var(--hover-nudge);
top: 6%;
display: inline-block;
height: 85%;
position: absolute;
}
}
}
}
@media only screen and (max-width: 1200px) {
@@ -106,28 +106,28 @@
}
}
@media only screen and (max-width: 650px) {
#menu .groups li > a {
font-size: 3.5vmin;
}
#menu .groups{
display: grid;
grid-template-columns: 1fr 1fr;
grid-template-rows: 1fr 1fr 1fr;
}
#menu .groups li {
border: 0 !important;
}
@media only screen and (max-width: 650px) {
#menu .groups li > a {
font-size: 3.5vmin;
}
#menu .groups{
display: grid;
grid-template-columns: 1fr 1fr;
grid-template-rows: 1fr 1fr 1fr;
}
@media only screen and (max-width: 500px) {
#menu .groups li > a {
font-size: 4vmin;
}
#menu .groups{
display: grid;
grid-template-columns: 1fr 1fr;
grid-template-rows: auto;
}
}
#menu .groups li {
border: 0 !important;
}
}
@media only screen and (max-width: 500px) {
#menu .groups li > a {
font-size: 4vmin;
}
#menu .groups{
display: grid;
grid-template-columns: 1fr 1fr;
grid-template-rows: auto;
}
}

View File

@@ -19,12 +19,12 @@ main {
}
section {
--width: 42ch;
--width: 60ch;
--width-full: calc(100vw - (2 * var(--side-padding)));
--side-padding: 3rem;
font-family: "Montserrat";
font-weight: 300;
font-size: 1rem;
font-size: 1.1rem;
width: var(--width);
padding: 7rem var(--side-padding);
position: relative;
@@ -55,7 +55,7 @@ section {
margin: 2rem 0 4rem 0;
position: relative;
img {
width: 50%;
width: 30%;
}
.img-shadow {
top: 3rem;
@@ -88,16 +88,16 @@ section#hero {
}
}
@media only screen and (max-width: 1245px) {
section#hero {
flex-direction: column;
margin-bottom: 6rem;
section#mission {
--width: 38ch;
img {
width: 50%;
}
}
section#virtues {
.section__image img {
width: 75%;
width: 40%;
}
}
@@ -178,7 +178,8 @@ h3 {
}
h4 {
font-weight: 800;
font-weight: 700;
font-size: 1.3rem;
}
h3,
@@ -208,7 +209,7 @@ p {
font-family: "Montserrat";
font-weight: 300;
line-height: 1.9rem;
font-size: 1rem;
font-size: 1.1rem;
margin-top: 0.5rem;
margin-bottom: 2.5rem;
@@ -312,7 +313,7 @@ section#news {
background-color: var(--c-text-accent);
color: var(--c-text-primary);
padding: 0.2em 0.5em;
font-size: 0.8rem;
font-size: 1rem;
font-weight: 500;
opacity: 0.6;
}
@@ -369,20 +370,21 @@ section#news {
}
h3 {
font-size: max(28px, 1.6rem);
font-size: max(26px, 1.4rem);
}
p {
color: var(--c-gray5);
margin-top: -1.5rem;
margin-bottom: 2rem;
line-height: 1.4;
font-size: max(14px, 0.8rem);
font-size: max(18px, 0.9rem);
}
time {
margin-top: -1.5rem;
color: var(--c-text-accent);
font-weight: 600;
color: var(--c-accent);
font-weight: 500;
font-size: 0.9rem;
text-transform: uppercase;
}
}
@@ -399,3 +401,93 @@ section#contact {
margin: 0;
}
}
#pro-tagline {
display: flex;
flex-direction: column;
align-items: center;
gap: 1rem;
.btn {
text-align: center;
padding: 1rem 1.3rem;
color: var(--c-text-bright);
background-color: var(--c-accent);
border: 0;
font-family: var(--f-accent);
font-weight: 300;
font-size: 1.2rem;
text-decoration: none;
box-shadow: 0 1rem 1rem -0.5rem var(--c-shadow-3);
border-radius: 34px;
&:hover {
transform: scale(1.03);
filter: brightness(120%);
}
}
p {
text-align: center;
margin: 0;
font-size: 1.4rem;
}
}
section#pro-video {
width: 80vw;
height: 80vh;
display: flex;
justify-content: center;
align-items: center;
.flowplayer {
width: 63vw;
// border-radius: 2px;
// border: 2px solid var(--c-gray5);
}
}
@media only screen and (max-width: 1245px) {
section#hero {
flex-direction: column;
margin-bottom: 6rem;
}
}
@media only screen and (max-width: 500px) {
section {
--width: 40ch;
--width-full: calc(100vw - (2 * var(--side-padding)));
}
section#mission {
--width: 32ch;
img {
width: 36%;
}
.section__double-image .section__image--left {
left: -94%;
}
.section__double-image .section__image--right {
right: -91%;
}
.section__double-image .section__image {
top: -148%;
}
}
#pro-tagline {
.btn {
font-size: 1.5rem;
}
p {
font-size: 1.7rem;
}
}
section#pro-video {
width: 90vw;;
height: 20vh;
}
}

View File

@@ -76,7 +76,7 @@ section#powered-by {
background-color: var(--c-text-accent);
border-radius: 999px;
padding: .15em .6em;
transition: var(--t-simple);
transition: var(--t-simple);
white-space: nowrap;
}
&:hover{
@@ -92,9 +92,8 @@ section#powered-by {
}
}
svg|a:link,
svg|a:visited {
svg a:link,
svg a:visited {
cursor: pointer;
}

View File

@@ -67,8 +67,6 @@ section#products {
h1 {
text-transform: uppercase;
}
.product__subheader {
}
background: var(--c-glass);
svg {
width: var(--img-width);
@@ -110,14 +108,4 @@ section#products {
}
}
}
// &::after{
// content: '';
// left:0;
// right:0;
// display: block;
// background-color: blue;
// transform: rotateX(90deg);
// height: 4rem;
// z-index: -1;
// }
}