New design.

This commit is contained in:
2026-10-14 19:29:31 +02:00
parent 047adf7b92
commit 6e60f1c117
51 changed files with 2598 additions and 2606 deletions
+38 -1
View File
@@ -1 +1,38 @@
console.log("Hi!");
import { initNav } from "./nav.js";
import { initReveal } from "./reveal.js";
import { initTimecode } from "./timecode.js";
document.documentElement.classList.add("js");
const components = {
nav: initNav,
reveal: initReveal,
timecode: initTimecode,
};
function init(root = document) {
root.querySelectorAll("[data-component]").forEach((el) => {
if (el.dataset.componentReady) {
return;
}
const fn = components[el.dataset.component];
if (fn) {
fn(el);
el.dataset.componentReady = "true";
}
});
}
if (document.readyState === "loading") {
document.addEventListener("DOMContentLoaded", start);
} else {
start();
}
function start() {
init();
// the admin UI swaps element HTML in place after edits
new MutationObserver(() => init()).observe(document.body, { childList: true, subtree: true });
}
+21
View File
@@ -0,0 +1,21 @@
export function initNav(el) {
const toggle = el.querySelector(".nav__toggle");
if (!toggle) {
return;
}
const setOpen = (open) => {
el.classList.toggle("nav--open", open);
toggle.setAttribute("aria-expanded", String(open));
};
toggle.addEventListener("click", () => setOpen(!el.classList.contains("nav--open")));
el.querySelectorAll(".nav__link").forEach((link) => link.addEventListener("click", () => setOpen(false)));
el.addEventListener("keydown", (e) => {
if (e.key === "Escape") {
setOpen(false);
toggle.focus();
}
});
}
+25
View File
@@ -0,0 +1,25 @@
let observer = null;
function getObserver() {
if (!observer) {
observer = new IntersectionObserver((entries) => {
entries.forEach((entry) => {
if (entry.isIntersecting) {
entry.target.classList.add("is-visible");
observer.unobserve(entry.target);
}
});
}, { rootMargin: "0px 0px -8% 0px", threshold: 0.05 });
}
return observer;
}
export function initReveal(el) {
if (!("IntersectionObserver" in window)) {
el.classList.add("is-visible");
return;
}
getObserver().observe(el);
}
+25
View File
@@ -0,0 +1,25 @@
const FPS = 25;
function pad(n) {
return String(n).padStart(2, "0");
}
export function initTimecode(el) {
const start = performance.now();
const tick = (now) => {
if (!el.isConnected) {
return;
}
const frames = Math.floor(((now - start) / 1000) * FPS);
const f = frames % FPS;
const s = Math.floor(frames / FPS) % 60;
const m = Math.floor(frames / (FPS * 60)) % 60;
const h = Math.floor(frames / (FPS * 3600));
el.textContent = `${pad(h)}:${pad(m)}:${pad(s)}:${pad(f)}`;
requestAnimationFrame(tick);
};
requestAnimationFrame(tick);
}
+204
View File
@@ -0,0 +1,204 @@
@use "variables" as *;
:root {
--beige: #{$beige};
--yellow: #{$yellow};
--orange: #{$orange};
--red: #{$red};
--pink: #{$pink};
--purple: #{$purple};
--ink: #{$ink};
}
*,
*::before,
*::after {
box-sizing: border-box;
}
html {
scroll-behavior: smooth;
scroll-padding-top: 88px;
}
body {
min-height: 100vh;
color: $ink;
background: $beige;
font-family: "Manrope", -apple-system, system-ui, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif;
font-size: 18px;
line-height: 1.6;
font-weight: 500;
overflow-x: hidden;
// film grain
&::after {
content: "";
position: fixed;
inset: -50%;
z-index: 9999;
pointer-events: none;
opacity: 0.07;
background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='160' height='160'><filter id='n'><feTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='3' stitchTiles='stitch'/></filter><rect width='100%' height='100%' filter='url(%23n)'/></svg>");
animation: grain 0.8s steps(4) infinite;
}
}
@keyframes grain {
0% { transform: translate(0, 0); }
25% { transform: translate(-3%, 2%); }
50% { transform: translate(2%, -3%); }
75% { transform: translate(-2%, -1%); }
100% { transform: translate(1%, 3%); }
}
img,
video,
iframe {
display: block;
max-width: 100%;
}
a {
color: inherit;
}
strong, b { font-weight: 700; }
em, i { font-style: italic; }
::selection {
background: $yellow;
color: $ink;
}
:focus-visible {
outline: 3px solid $orange;
outline-offset: 3px;
}
.visually-hidden {
position: absolute;
width: 1px;
height: 1px;
overflow: hidden;
clip: rect(0 0 0 0);
white-space: nowrap;
}
// shared section title: "01 Gewerke"
.section-title {
display: flex;
align-items: flex-start;
gap: 16px;
font-size: clamp(40px, 7vw, 88px);
line-height: 1;
font-weight: 800;
letter-spacing: -0.03em;
&__nr {
flex: none;
margin-top: 0.35em;
padding: 4px 10px;
border: 2px solid currentColor;
border-radius: 999px;
font-size: 14px;
line-height: 1;
font-weight: 700;
letter-spacing: 0.1em;
font-variant-numeric: tabular-nums;
}
&--light {
color: $beige;
}
}
// buttons
.button {
display: inline-flex;
align-items: center;
gap: 12px;
padding: 16px 28px 16px 18px;
border: 3px solid $ink;
border-radius: 999px;
font-size: 18px;
font-weight: 700;
text-decoration: none;
cursor: pointer;
box-shadow: 4px 4px 0 $ink;
transition: transform 0.25s $ease, box-shadow 0.25s $ease;
&:hover {
transform: translate(-2px, -2px) rotate(-1.5deg);
box-shadow: 7px 7px 0 $ink;
}
&:active {
transform: translate(3px, 3px);
box-shadow: 0 0 0 $ink;
}
&--yellow {
background: $yellow;
color: $ink;
}
&--outline {
background: transparent;
padding: 12px 22px;
font-size: 16px;
}
&__play {
position: relative;
width: 32px;
height: 32px;
flex: none;
border-radius: 50%;
background: $ink;
transition: transform 0.4s $ease;
&::after {
content: "";
position: absolute;
top: 50%;
left: 55%;
transform: translate(-50%, -50%);
border-style: solid;
border-width: 6px 0 6px 10px;
border-color: transparent transparent transparent $yellow;
}
}
&:hover &__play {
transform: rotate(360deg) scale(1.1);
}
}
// scroll reveal (only hidden once JS is running)
.js [data-component~="reveal"] {
opacity: 0;
transform: translateY(40px) rotate(1deg);
transition: opacity 0.8s $ease-out, transform 0.9s $ease-out;
&.is-visible {
opacity: 1;
transform: none;
}
}
@media (prefers-reduced-motion: reduce) {
*,
*::before,
*::after {
animation-duration: 0.01ms !important;
animation-iteration-count: 1 !important;
transition-duration: 0.01ms !important;
scroll-behavior: auto !important;
}
.js [data-component~="reveal"] {
opacity: 1;
transform: none;
}
}
+137
View File
@@ -0,0 +1,137 @@
@use "variables" as *;
.footer {
position: relative;
overflow: hidden;
padding: 120px 0 32px;
background: $red;
color: $cream;
border-top: 3px solid $ink;
@include md {
padding-top: 160px;
}
// big rotating "film reel" decoration
&::before {
content: "";
position: absolute;
right: -160px;
top: -160px;
width: 480px;
height: 480px;
border-radius: 50%;
background:
radial-gradient(circle at 50% 50%, $red 0 34px, transparent 35px),
radial-gradient(circle at 50% 22%, $red 0 46px, transparent 47px),
radial-gradient(circle at 50% 78%, $red 0 46px, transparent 47px),
radial-gradient(circle at 22% 50%, $red 0 46px, transparent 47px),
radial-gradient(circle at 78% 50%, $red 0 46px, transparent 47px),
$ink;
opacity: 0.25;
animation: reel 18s linear infinite;
pointer-events: none;
}
&__inner {
@include inner;
position: relative;
}
&__headline {
font-size: clamp(56px, 12vw, 180px);
line-height: 0.9;
font-weight: 800;
letter-spacing: -0.05em;
color: $cream;
}
&__text {
max-width: 32ch;
margin-top: 24px;
font-size: clamp(20px, 2.4vw, 28px);
font-weight: 600;
}
&__mail {
margin-top: 40px;
font-size: clamp(16px, 2vw, 22px);
}
&__bottom {
display: flex;
flex-wrap: wrap;
justify-content: space-between;
gap: 16px;
margin-top: 96px;
padding-top: 24px;
border-top: 2px solid rgba($cream, 0.35);
font-size: 15px;
}
&__legal {
display: flex;
gap: 24px;
a {
text-decoration: none;
&:hover {
text-decoration: underline wavy;
text-underline-offset: 4px;
}
}
}
}
// end-credits style contact list
.credits {
display: grid;
gap: 4px;
max-width: 640px;
margin: 96px 0 0;
&__row {
display: flex;
align-items: baseline;
gap: 12px;
font-size: clamp(18px, 2vw, 22px);
&::before {
content: "";
order: 1;
flex: 1;
border-bottom: 2px dotted rgba($cream, 0.5);
transform: translateY(-5px);
}
dt {
order: 0;
font-size: 13px;
font-weight: 700;
letter-spacing: 0.14em;
text-transform: uppercase;
opacity: 0.8;
}
dd {
order: 2;
margin: 0;
font-weight: 700;
a {
text-decoration: none;
background: linear-gradient($yellow, $yellow) 0 100% / 0 3px no-repeat;
transition: background-size 0.3s $ease-out;
&:hover {
background-size: 100% 3px;
}
}
}
}
}
@keyframes reel {
to { transform: rotate(360deg); }
}
-966
View File
@@ -1,966 +0,0 @@
.container {
max-width: 1600px;
width: 100%;
margin-right: auto;
margin-left: auto;
position: relative;
box-sizing: border-box;
}
.row {
box-sizing: border-box;
display: -webkit-box;
display: -ms-flexbox;
display: flex;
-webkit-box-flex: 0;
-ms-flex: 0 1 auto;
flex: 0 1 auto;
-webkit-box-orient: horizontal;
-webkit-box-direction: normal;
-ms-flex-direction: row;
flex-direction: row;
-ms-flex-wrap: wrap;
flex-wrap: wrap;
}
.row.reverse {
-webkit-box-orient: horizontal;
-webkit-box-direction: reverse;
-ms-flex-direction: row-reverse;
flex-direction: row-reverse;
}
.col.reverse {
-webkit-box-orient: vertical;
-webkit-box-direction: reverse;
-ms-flex-direction: column-reverse;
flex-direction: column-reverse;
}
.col-xs,
.col-xs-1,
.col-xs-2,
.col-xs-3,
.col-xs-4,
.col-xs-5,
.col-xs-6,
.col-xs-7,
.col-xs-8,
.col-xs-9,
.col-xs-10,
.col-xs-11,
.col-xs-12,
.col-xs-offset-0,
.col-xs-offset-1,
.col-xs-offset-2,
.col-xs-offset-3,
.col-xs-offset-4,
.col-xs-offset-5,
.col-xs-offset-6,
.col-xs-offset-7,
.col-xs-offset-8,
.col-xs-offset-9,
.col-xs-offset-10,
.col-xs-offset-11,
.col-xs-offset-12 {
box-sizing: border-box;
-webkit-box-flex: 0;
-ms-flex: 0 0 auto;
flex: 0 0 auto;
}
.col-xs {
-webkit-box-flex: 1;
-ms-flex-positive: 1;
flex-grow: 1;
-ms-flex-preferred-size: 0;
flex-basis: 0;
max-width: 100%;
}
.col-xs-1 {
-ms-flex-preferred-size: 8.33333333%;
flex-basis: 8.33333333%;
max-width: 8.33333333%;
}
.col-xs-2 {
-ms-flex-preferred-size: 16.66666667%;
flex-basis: 16.66666667%;
max-width: 16.66666667%;
}
.col-xs-3 {
-ms-flex-preferred-size: 25%;
flex-basis: 25%;
max-width: 25%;
}
.col-xs-4 {
-ms-flex-preferred-size: 33.33333333%;
flex-basis: 33.33333333%;
max-width: 33.33333333%;
}
.col-xs-5 {
-ms-flex-preferred-size: 41.66666667%;
flex-basis: 41.66666667%;
max-width: 41.66666667%;
}
.col-xs-6 {
-ms-flex-preferred-size: 50%;
flex-basis: 50%;
max-width: 50%;
}
.col-xs-7 {
-ms-flex-preferred-size: 58.33333333%;
flex-basis: 58.33333333%;
max-width: 58.33333333%;
}
.col-xs-8 {
-ms-flex-preferred-size: 66.66666667%;
flex-basis: 66.66666667%;
max-width: 66.66666667%;
}
.col-xs-9 {
-ms-flex-preferred-size: 75%;
flex-basis: 75%;
max-width: 75%;
}
.col-xs-10 {
-ms-flex-preferred-size: 83.33333333%;
flex-basis: 83.33333333%;
max-width: 83.33333333%;
}
.col-xs-11 {
-ms-flex-preferred-size: 91.66666667%;
flex-basis: 91.66666667%;
max-width: 91.66666667%;
}
.col-xs-12 {
-ms-flex-preferred-size: 100%;
flex-basis: 100%;
max-width: 100%;
}
.col-xs-offset-0 {
margin-left: 0;
}
.col-xs-offset-1 {
margin-left: 8.33333333%;
}
.col-xs-offset-2 {
margin-left: 16.66666667%;
}
.col-xs-offset-3 {
margin-left: 25%;
}
.col-xs-offset-4 {
margin-left: 33.33333333%;
}
.col-xs-offset-5 {
margin-left: 41.66666667%;
}
.col-xs-offset-6 {
margin-left: 50%;
}
.col-xs-offset-7 {
margin-left: 58.33333333%;
}
.col-xs-offset-8 {
margin-left: 66.66666667%;
}
.col-xs-offset-9 {
margin-left: 75%;
}
.col-xs-offset-10 {
margin-left: 83.33333333%;
}
.col-xs-offset-11 {
margin-left: 91.66666667%;
}
.start-xs {
-webkit-box-pack: start;
-ms-flex-pack: start;
justify-content: flex-start;
text-align: start;
}
.center-xs {
-webkit-box-pack: center;
-ms-flex-pack: center;
justify-content: center;
text-align: center;
}
.end-xs {
-webkit-box-pack: end;
-ms-flex-pack: end;
justify-content: flex-end;
text-align: end;
}
.top-xs {
-webkit-box-align: start;
-ms-flex-align: start;
align-items: flex-start;
}
.middle-xs {
-webkit-box-align: center;
-ms-flex-align: center;
align-items: center;
}
.bottom-xs {
-webkit-box-align: end;
-ms-flex-align: end;
align-items: flex-end;
}
.around-xs {
-ms-flex-pack: distribute;
justify-content: space-around;
}
.between-xs {
-webkit-box-pack: justify;
-ms-flex-pack: justify;
justify-content: space-between;
}
.first-xs {
-webkit-box-ordinal-group: 0;
-ms-flex-order: -1;
order: -1;
}
.last-xs {
-webkit-box-ordinal-group: 2;
-ms-flex-order: 1;
order: 1;
}
@media only screen and (max-width: 511px) {
.hide-xs {
display: none !important;
}
}
@media only screen and (min-width: 512px) {
.col-sm,
.col-sm-1,
.col-sm-2,
.col-sm-3,
.col-sm-4,
.col-sm-5,
.col-sm-6,
.col-sm-7,
.col-sm-8,
.col-sm-9,
.col-sm-10,
.col-sm-11,
.col-sm-12,
.col-sm-offset-0,
.col-sm-offset-1,
.col-sm-offset-2,
.col-sm-offset-3,
.col-sm-offset-4,
.col-sm-offset-5,
.col-sm-offset-6,
.col-sm-offset-7,
.col-sm-offset-8,
.col-sm-offset-9,
.col-sm-offset-10,
.col-sm-offset-11,
.col-sm-offset-12 {
box-sizing: border-box;
-webkit-box-flex: 0;
-ms-flex: 0 0 auto;
flex: 0 0 auto;
}
.col-sm {
-webkit-box-flex: 1;
-ms-flex-positive: 1;
flex-grow: 1;
-ms-flex-preferred-size: 0;
flex-basis: 0;
max-width: 100%;
}
.col-sm-1 {
-ms-flex-preferred-size: 8.33333333%;
flex-basis: 8.33333333%;
max-width: 8.33333333%;
}
.col-sm-2 {
-ms-flex-preferred-size: 16.66666667%;
flex-basis: 16.66666667%;
max-width: 16.66666667%;
}
.col-sm-3 {
-ms-flex-preferred-size: 25%;
flex-basis: 25%;
max-width: 25%;
}
.col-sm-4 {
-ms-flex-preferred-size: 33.33333333%;
flex-basis: 33.33333333%;
max-width: 33.33333333%;
}
.col-sm-5 {
-ms-flex-preferred-size: 41.66666667%;
flex-basis: 41.66666667%;
max-width: 41.66666667%;
}
.col-sm-6 {
-ms-flex-preferred-size: 50%;
flex-basis: 50%;
max-width: 50%;
}
.col-sm-7 {
-ms-flex-preferred-size: 58.33333333%;
flex-basis: 58.33333333%;
max-width: 58.33333333%;
}
.col-sm-8 {
-ms-flex-preferred-size: 66.66666667%;
flex-basis: 66.66666667%;
max-width: 66.66666667%;
}
.col-sm-9 {
-ms-flex-preferred-size: 75%;
flex-basis: 75%;
max-width: 75%;
}
.col-sm-10 {
-ms-flex-preferred-size: 83.33333333%;
flex-basis: 83.33333333%;
max-width: 83.33333333%;
}
.col-sm-11 {
-ms-flex-preferred-size: 91.66666667%;
flex-basis: 91.66666667%;
max-width: 91.66666667%;
}
.col-sm-12 {
-ms-flex-preferred-size: 100%;
flex-basis: 100%;
max-width: 100%;
}
.col-sm-offset-0 {
margin-left: 0;
}
.col-sm-offset-1 {
margin-left: 8.33333333%;
}
.col-sm-offset-2 {
margin-left: 16.66666667%;
}
.col-sm-offset-3 {
margin-left: 25%;
}
.col-sm-offset-4 {
margin-left: 33.33333333%;
}
.col-sm-offset-5 {
margin-left: 41.66666667%;
}
.col-sm-offset-6 {
margin-left: 50%;
}
.col-sm-offset-7 {
margin-left: 58.33333333%;
}
.col-sm-offset-8 {
margin-left: 66.66666667%;
}
.col-sm-offset-9 {
margin-left: 75%;
}
.col-sm-offset-10 {
margin-left: 83.33333333%;
}
.col-sm-offset-11 {
margin-left: 91.66666667%;
}
.start-sm {
-webkit-box-pack: start;
-ms-flex-pack: start;
justify-content: flex-start;
text-align: start;
}
.center-sm {
-webkit-box-pack: center;
-ms-flex-pack: center;
justify-content: center;
text-align: center;
}
.end-sm {
-webkit-box-pack: end;
-ms-flex-pack: end;
justify-content: flex-end;
text-align: end;
}
.top-sm {
-webkit-box-align: start;
-ms-flex-align: start;
align-items: flex-start;
}
.middle-sm {
-webkit-box-align: center;
-ms-flex-align: center;
align-items: center;
}
.bottom-sm {
-webkit-box-align: end;
-ms-flex-align: end;
align-items: flex-end;
}
.around-sm {
-ms-flex-pack: distribute;
justify-content: space-around;
}
.between-sm {
-webkit-box-pack: justify;
-ms-flex-pack: justify;
justify-content: space-between;
}
.first-sm {
-webkit-box-ordinal-group: 0;
-ms-flex-order: -1;
order: -1;
}
.last-sm {
-webkit-box-ordinal-group: 2;
-ms-flex-order: 1;
order: 1;
}
.show-xs {
display: none !important;
}
}
@media only screen and (max-width: 767px) {
.hide-sm {
display: none !important;
}
}
@media only screen and (min-width: 768px) {
.col-md,
.col-md-1,
.col-md-2,
.col-md-3,
.col-md-4,
.col-md-5,
.col-md-6,
.col-md-7,
.col-md-8,
.col-md-9,
.col-md-10,
.col-md-11,
.col-md-12,
.col-md-offset-0,
.col-md-offset-1,
.col-md-offset-2,
.col-md-offset-3,
.col-md-offset-4,
.col-md-offset-5,
.col-md-offset-6,
.col-md-offset-7,
.col-md-offset-8,
.col-md-offset-9,
.col-md-offset-10,
.col-md-offset-11,
.col-md-offset-12 {
box-sizing: border-box;
-webkit-box-flex: 0;
-ms-flex: 0 0 auto;
flex: 0 0 auto;
}
.col-md {
-webkit-box-flex: 1;
-ms-flex-positive: 1;
flex-grow: 1;
-ms-flex-preferred-size: 0;
flex-basis: 0;
max-width: 100%;
}
.col-md-1 {
-ms-flex-preferred-size: 8.33333333%;
flex-basis: 8.33333333%;
max-width: 8.33333333%;
}
.col-md-2 {
-ms-flex-preferred-size: 16.66666667%;
flex-basis: 16.66666667%;
max-width: 16.66666667%;
}
.col-md-3 {
-ms-flex-preferred-size: 25%;
flex-basis: 25%;
max-width: 25%;
}
.col-md-4 {
-ms-flex-preferred-size: 33.33333333%;
flex-basis: 33.33333333%;
max-width: 33.33333333%;
}
.col-md-5 {
-ms-flex-preferred-size: 41.66666667%;
flex-basis: 41.66666667%;
max-width: 41.66666667%;
}
.col-md-6 {
-ms-flex-preferred-size: 50%;
flex-basis: 50%;
max-width: 50%;
}
.col-md-7 {
-ms-flex-preferred-size: 58.33333333%;
flex-basis: 58.33333333%;
max-width: 58.33333333%;
}
.col-md-8 {
-ms-flex-preferred-size: 66.66666667%;
flex-basis: 66.66666667%;
max-width: 66.66666667%;
}
.col-md-9 {
-ms-flex-preferred-size: 75%;
flex-basis: 75%;
max-width: 75%;
}
.col-md-10 {
-ms-flex-preferred-size: 83.33333333%;
flex-basis: 83.33333333%;
max-width: 83.33333333%;
}
.col-md-11 {
-ms-flex-preferred-size: 91.66666667%;
flex-basis: 91.66666667%;
max-width: 91.66666667%;
}
.col-md-12 {
-ms-flex-preferred-size: 100%;
flex-basis: 100%;
max-width: 100%;
}
.col-md-offset-0 {
margin-left: 0;
}
.col-md-offset-1 {
margin-left: 8.33333333%;
}
.col-md-offset-2 {
margin-left: 16.66666667%;
}
.col-md-offset-3 {
margin-left: 25%;
}
.col-md-offset-4 {
margin-left: 33.33333333%;
}
.col-md-offset-5 {
margin-left: 41.66666667%;
}
.col-md-offset-6 {
margin-left: 50%;
}
.col-md-offset-7 {
margin-left: 58.33333333%;
}
.col-md-offset-8 {
margin-left: 66.66666667%;
}
.col-md-offset-9 {
margin-left: 75%;
}
.col-md-offset-10 {
margin-left: 83.33333333%;
}
.col-md-offset-11 {
margin-left: 91.66666667%;
}
.start-md {
-webkit-box-pack: start;
-ms-flex-pack: start;
justify-content: flex-start;
text-align: start;
}
.center-md {
-webkit-box-pack: center;
-ms-flex-pack: center;
justify-content: center;
text-align: center;
}
.end-md {
-webkit-box-pack: end;
-ms-flex-pack: end;
justify-content: flex-end;
text-align: end;
}
.top-md {
-webkit-box-align: start;
-ms-flex-align: start;
align-items: flex-start;
}
.middle-md {
-webkit-box-align: center;
-ms-flex-align: center;
align-items: center;
}
.bottom-md {
-webkit-box-align: end;
-ms-flex-align: end;
align-items: flex-end;
}
.around-md {
-ms-flex-pack: distribute;
justify-content: space-around;
}
.between-md {
-webkit-box-pack: justify;
-ms-flex-pack: justify;
justify-content: space-between;
}
.first-md {
-webkit-box-ordinal-group: 0;
-ms-flex-order: -1;
order: -1;
}
.last-md {
-webkit-box-ordinal-group: 2;
-ms-flex-order: 1;
order: 1;
}
.show-sm {
display: none !important;
}
}
@media only screen and (max-width: 1023px) {
.hide-md {
display: none !important;
}
}
@media only screen and (min-width: 1024px) {
.col-lg,
.col-lg-1,
.col-lg-2,
.col-lg-3,
.col-lg-4,
.col-lg-5,
.col-lg-6,
.col-lg-7,
.col-lg-8,
.col-lg-9,
.col-lg-10,
.col-lg-11,
.col-lg-12,
.col-lg-offset-0,
.col-lg-offset-1,
.col-lg-offset-2,
.col-lg-offset-3,
.col-lg-offset-4,
.col-lg-offset-5,
.col-lg-offset-6,
.col-lg-offset-7,
.col-lg-offset-8,
.col-lg-offset-9,
.col-lg-offset-10,
.col-lg-offset-11,
.col-lg-offset-12 {
box-sizing: border-box;
-webkit-box-flex: 0;
-ms-flex: 0 0 auto;
flex: 0 0 auto;
}
.col-lg {
-webkit-box-flex: 1;
-ms-flex-positive: 1;
flex-grow: 1;
-ms-flex-preferred-size: 0;
flex-basis: 0;
max-width: 100%;
}
.col-lg-1 {
-ms-flex-preferred-size: 8.33333333%;
flex-basis: 8.33333333%;
max-width: 8.33333333%;
}
.col-lg-2 {
-ms-flex-preferred-size: 16.66666667%;
flex-basis: 16.66666667%;
max-width: 16.66666667%;
}
.col-lg-3 {
-ms-flex-preferred-size: 25%;
flex-basis: 25%;
max-width: 25%;
}
.col-lg-4 {
-ms-flex-preferred-size: 33.33333333%;
flex-basis: 33.33333333%;
max-width: 33.33333333%;
}
.col-lg-5 {
-ms-flex-preferred-size: 41.66666667%;
flex-basis: 41.66666667%;
max-width: 41.66666667%;
}
.col-lg-6 {
-ms-flex-preferred-size: 50%;
flex-basis: 50%;
max-width: 50%;
}
.col-lg-7 {
-ms-flex-preferred-size: 58.33333333%;
flex-basis: 58.33333333%;
max-width: 58.33333333%;
}
.col-lg-8 {
-ms-flex-preferred-size: 66.66666667%;
flex-basis: 66.66666667%;
max-width: 66.66666667%;
}
.col-lg-9 {
-ms-flex-preferred-size: 75%;
flex-basis: 75%;
max-width: 75%;
}
.col-lg-10 {
-ms-flex-preferred-size: 83.33333333%;
flex-basis: 83.33333333%;
max-width: 83.33333333%;
}
.col-lg-11 {
-ms-flex-preferred-size: 91.66666667%;
flex-basis: 91.66666667%;
max-width: 91.66666667%;
}
.col-lg-12 {
-ms-flex-preferred-size: 100%;
flex-basis: 100%;
max-width: 100%;
}
.col-lg-offset-0 {
margin-left: 0;
}
.col-lg-offset-1 {
margin-left: 8.33333333%;
}
.col-lg-offset-2 {
margin-left: 16.66666667%;
}
.col-lg-offset-3 {
margin-left: 25%;
}
.col-lg-offset-4 {
margin-left: 33.33333333%;
}
.col-lg-offset-5 {
margin-left: 41.66666667%;
}
.col-lg-offset-6 {
margin-left: 50%;
}
.col-lg-offset-7 {
margin-left: 58.33333333%;
}
.col-lg-offset-8 {
margin-left: 66.66666667%;
}
.col-lg-offset-9 {
margin-left: 75%;
}
.col-lg-offset-10 {
margin-left: 83.33333333%;
}
.col-lg-offset-11 {
margin-left: 91.66666667%;
}
.start-lg {
-webkit-box-pack: start;
-ms-flex-pack: start;
justify-content: flex-start;
text-align: start;
}
.center-lg {
-webkit-box-pack: center;
-ms-flex-pack: center;
justify-content: center;
text-align: center;
}
.end-lg {
-webkit-box-pack: end;
-ms-flex-pack: end;
justify-content: flex-end;
text-align: end;
}
.top-lg {
-webkit-box-align: start;
-ms-flex-align: start;
align-items: flex-start;
}
.middle-lg {
-webkit-box-align: center;
-ms-flex-align: center;
align-items: center;
}
.bottom-lg {
-webkit-box-align: end;
-ms-flex-align: end;
align-items: flex-end;
}
.around-lg {
-ms-flex-pack: distribute;
justify-content: space-around;
}
.between-lg {
-webkit-box-pack: justify;
-ms-flex-pack: justify;
justify-content: space-between;
}
.first-lg {
-webkit-box-ordinal-group: 0;
-ms-flex-order: -1;
order: -1;
}
.last-lg {
-webkit-box-ordinal-group: 2;
-ms-flex-order: 1;
order: 1;
}
.show-md {
display: none !important;
}
}
+38
View File
@@ -0,0 +1,38 @@
@use "variables" as *;
.insta {
padding: 120px 0;
@include md {
padding: 160px 0;
}
&__inner {
@include inner;
}
&__head {
display: flex;
flex-wrap: wrap;
align-items: flex-end;
justify-content: space-between;
gap: 24px;
margin-bottom: 56px;
}
&__frame {
padding: 16px;
border: 3px solid $ink;
border-radius: $radius-lg;
background: $cream;
box-shadow: 10px 10px 0 $pink;
transform: rotate(-0.75deg);
}
&__widget {
width: 100%;
border: 0;
overflow: hidden;
border-radius: $radius - 6px;
}
}
+267
View File
@@ -0,0 +1,267 @@
@use "variables" as *;
.intro {
position: relative;
padding: 48px 0 0;
@include md {
padding-top: 72px;
}
&__inner {
@include inner;
position: relative;
}
&__kicker {
display: inline-flex;
align-items: center;
gap: 10px;
margin-bottom: 20px;
padding: 6px 14px;
border-radius: 999px;
background: $ink;
color: $beige;
font-size: 14px;
font-weight: 700;
letter-spacing: 0.08em;
text-transform: uppercase;
rotate: -2deg;
}
&__kicker-dot {
width: 8px;
height: 8px;
border-radius: 50%;
background: $red;
animation: blink 1s steps(1) infinite;
}
&__headline {
max-width: 12ch;
font-size: clamp(52px, 11vw, 168px);
line-height: 0.92;
// background-clip: text only paints inside the box; keep descenders (g, p, …) visible
padding-bottom: 0.3em;
margin-bottom: -0.3em;
font-weight: 800;
letter-spacing: -0.045em;
background: linear-gradient(100deg, $ink 0 48%, $red 68%, $orange 88%);
-webkit-background-clip: text;
background-clip: text;
color: transparent;
-webkit-text-fill-color: transparent;
}
&__cta {
margin-top: 32px;
@include md {
position: absolute;
top: 0;
right: 48px;
margin: 0;
rotate: 4deg;
transition: rotate 0.4s $ease, opacity 0.8s $ease-out, transform 0.9s $ease-out;
&:hover {
rotate: -2deg;
}
}
}
}
@keyframes blink {
50% { opacity: 0; }
}
.viewfinder {
position: relative;
margin-top: 48px;
overflow: hidden;
border: 3px solid $ink;
border-radius: $radius-lg;
background: $ink;
box-shadow: 10px 10px 0 $orange;
aspect-ratio: 16 / 9;
min-height: 320px;
@include md {
margin-top: 64px;
box-shadow: 16px 16px 0 $orange;
}
&__video {
width: 100%;
height: 100%;
object-fit: cover;
}
&__overlay {
position: absolute;
inset: 0;
pointer-events: none;
color: #fff;
font-family: ui-monospace, "SFMono-Regular", Menlo, Consolas, monospace;
font-size: 13px;
font-weight: 600;
letter-spacing: 0.08em;
text-shadow: 0 1px 3px rgba(0, 0, 0, 0.6);
@include md {
font-size: 16px;
}
}
&__corner {
position: absolute;
width: 36px;
height: 36px;
border: 0 solid rgba(#fff, 0.9);
&--tl { top: 20px; left: 20px; border-top-width: 3px; border-left-width: 3px; }
&--tr { top: 20px; right: 20px; border-top-width: 3px; border-right-width: 3px; }
&--bl { bottom: 20px; left: 20px; border-bottom-width: 3px; border-left-width: 3px; }
&--br { bottom: 20px; right: 20px; border-bottom-width: 3px; border-right-width: 3px; }
}
&__rec {
position: absolute;
top: 30px;
left: 70px;
display: flex;
align-items: center;
gap: 8px;
&::before {
content: "";
width: 12px;
height: 12px;
border-radius: 50%;
background: $red;
animation: blink 1s steps(1) infinite;
}
}
&__timecode {
position: absolute;
top: 30px;
right: 70px;
font-variant-numeric: tabular-nums;
}
&__meta {
position: absolute;
bottom: 30px;
left: 70px;
opacity: 0.85;
}
&__battery {
position: absolute;
right: 74px;
bottom: 32px;
width: 30px;
height: 14px;
border: 2px solid #fff;
border-radius: 3px;
&::before {
content: "";
position: absolute;
inset: 2px 30% 2px 2px;
background: #fff;
}
&::after {
content: "";
position: absolute;
top: 3px;
right: -5px;
width: 3px;
height: 4px;
background: #fff;
}
}
&__focus {
position: absolute;
top: 50%;
left: 50%;
width: 64px;
height: 64px;
transform: translate(-50%, -50%);
border: 2px solid rgba($yellow, 0.9);
animation: focus-hunt 5s $ease infinite;
&::before,
&::after {
content: "";
position: absolute;
background: rgba($yellow, 0.9);
}
&::before { top: 50%; left: 50%; width: 12px; height: 2px; transform: translate(-50%, -50%); }
&::after { top: 50%; left: 50%; width: 2px; height: 12px; transform: translate(-50%, -50%); }
}
@media (max-width: 639px) {
&__meta,
&__battery {
display: none;
}
&__rec { left: 32px; top: 28px; }
&__timecode { right: 32px; top: 28px; }
&__corner { width: 22px; height: 22px; }
}
}
@keyframes focus-hunt {
0%, 100% { transform: translate(-50%, -50%) scale(1); }
10% { transform: translate(-50%, -50%) scale(1.25); }
18% { transform: translate(-50%, -50%) scale(0.9); }
24% { transform: translate(-50%, -50%) scale(1); }
60% { transform: translate(-30%, -60%) scale(1); }
70% { transform: translate(-30%, -60%) scale(1.2); }
76% { transform: translate(-30%, -60%) scale(1); }
}
.ticker {
position: relative;
z-index: 2;
margin: 72px -5vw 0;
padding: 18px 0;
overflow: hidden;
border-block: 3px solid $ink;
background: $yellow;
transform: rotate(-2deg);
@include md {
margin-top: 96px;
}
&__track {
display: flex;
width: max-content;
animation: ticker 40s linear infinite;
span {
padding-right: 0.5em;
white-space: nowrap;
font-size: clamp(24px, 4vw, 44px);
line-height: 1;
font-weight: 800;
letter-spacing: -0.02em;
text-transform: uppercase;
}
}
&:hover &__track {
animation-play-state: paused;
}
}
@keyframes ticker {
to { transform: translateX(-50%); }
}
+167
View File
@@ -0,0 +1,167 @@
@use "variables" as *;
.nav {
position: sticky;
top: 0;
z-index: 100;
padding: 12px 0;
transition: padding 0.3s $ease-out;
&__inner {
@include inner;
display: flex;
align-items: center;
justify-content: space-between;
gap: 24px;
}
&__brand {
display: inline-flex;
align-items: center;
gap: 10px;
padding: 10px 18px;
border: 3px solid $ink;
border-radius: 999px;
background: $cream;
box-shadow: 4px 4px 0 $ink;
text-decoration: none;
font-size: 22px;
font-weight: 800;
letter-spacing: -0.02em;
transition: transform 0.3s $ease;
&:hover {
transform: rotate(-3deg) scale(1.04);
}
}
&__rec {
width: 12px;
height: 12px;
border-radius: 50%;
background: $red;
box-shadow: 0 0 0 0 rgba($red, 0.6);
animation: rec-pulse 1.6s infinite;
}
&__word {
display: inline-flex;
align-items: center;
}
&__cut {
display: inline-block;
margin: 0 1px;
color: $orange;
font-size: 0.75em;
transform: rotate(-90deg);
transition: transform 0.5s $ease;
}
&__brand:hover &__cut {
transform: rotate(-90deg) translateY(-3px) scaleX(0.6);
}
&__toggle {
display: inline-flex;
flex-direction: column;
justify-content: center;
gap: 6px;
width: 52px;
height: 52px;
padding: 0 14px;
border: 3px solid $ink;
border-radius: 50%;
background: $yellow;
box-shadow: 4px 4px 0 $ink;
cursor: pointer;
@include md {
display: none;
}
}
&__toggle-bar {
display: block;
height: 3px;
border-radius: 3px;
background: $ink;
transition: transform 0.3s $ease;
}
&--open &__toggle-bar:first-child { transform: translateY(4.5px) rotate(45deg); }
&--open &__toggle-bar:nth-child(2) { transform: translateY(-4.5px) rotate(-45deg); }
&__links {
display: none;
gap: 8px;
padding: 6px;
border: 3px solid $ink;
border-radius: 999px;
background: $cream;
box-shadow: 4px 4px 0 $ink;
@include md {
display: flex;
}
}
&__link {
position: relative;
padding: 8px 18px;
border-radius: 999px;
font-size: 16px;
font-weight: 700;
text-decoration: none;
transition: background 0.2s, transform 0.3s $ease;
&:hover {
background: $ink;
color: $beige;
transform: rotate(-2deg);
}
&--cta {
background: $red;
color: $cream;
}
}
// mobile overlay menu
&--open &__links {
position: fixed;
inset: 84px 16px auto;
display: flex;
flex-direction: column;
gap: 4px;
padding: 16px;
border-radius: $radius-lg;
animation: menu-pop 0.4s $ease;
.nav__link {
padding: 16px 20px;
font-size: 28px;
font-weight: 800;
&::before {
content: attr(data-nr);
margin-right: 12px;
font-size: 14px;
vertical-align: middle;
opacity: 0.5;
}
}
}
}
@keyframes rec-pulse {
0% { box-shadow: 0 0 0 0 rgba($red, 0.6); opacity: 1; }
50% { opacity: 0.35; }
70% { box-shadow: 0 0 0 10px rgba($red, 0); }
100% { box-shadow: 0 0 0 0 rgba($red, 0); opacity: 1; }
}
@keyframes menu-pop {
from { opacity: 0; transform: scale(0.9) rotate(-2deg); }
to { opacity: 1; transform: none; }
}
+1 -3
View File
@@ -14,7 +14,6 @@ time, mark, audio, video {
margin: 0;
padding: 0;
border: 0;
outline: none;
font: inherit;
text-decoration: none;
vertical-align: baseline;
@@ -54,5 +53,4 @@ table {
}
textarea:focus, input:focus, button:focus {
outline: none;
}
}
+99
View File
@@ -0,0 +1,99 @@
@use "variables" as *;
.service {
padding: 120px 0;
@include md {
padding: 160px 0;
}
&__inner {
@include inner;
}
&__head {
display: grid;
gap: 24px;
margin-bottom: 64px;
@include md {
grid-template-columns: 1fr 1fr;
align-items: end;
}
}
&__text {
max-width: 46ch;
font-size: 20px;
}
&__grid {
display: grid;
gap: 56px;
@include md {
grid-template-columns: 5fr 7fr;
align-items: start;
gap: 64px;
}
}
&__items {
display: grid;
gap: 32px;
}
}
.polaroid {
position: relative;
margin: 0;
padding: 16px 16px 72px;
border: 3px solid $ink;
background: $cream;
box-shadow: 10px 10px 0 $ink;
rotate: 2.5deg;
transition: rotate 0.5s $ease, scale 0.5s $ease, opacity 0.8s $ease-out, transform 0.9s $ease-out;
@include md {
position: sticky;
top: 120px;
}
&:hover {
rotate: -1deg;
scale: 1.02;
}
// tape
&::before {
content: "";
position: absolute;
top: -18px;
left: 50%;
width: 140px;
height: 36px;
transform: translateX(-50%) rotate(-4deg);
background: rgba($yellow, 0.85);
border: 2px dashed rgba($ink, 0.25);
}
&__image {
width: 100%;
aspect-ratio: 4 / 3;
object-fit: cover;
object-position: center 33%;
border: 3px solid $ink;
}
&__caption {
position: absolute;
right: 16px;
bottom: 18px;
left: 16px;
font-size: 18px;
font-weight: 700;
font-style: italic;
text-align: center;
transform: rotate(-1deg);
}
}
+125
View File
@@ -0,0 +1,125 @@
@use "variables" as *;
.slate {
--slate-color: #{$red};
position: relative;
counter-increment: slate;
padding-top: 30px;
@each $name, $color in $colors {
&--#{$name} {
--slate-color: #{$color};
}
}
&__clapper {
position: absolute;
top: 0;
left: 0;
right: 0;
height: 34px;
border: 3px solid $ink;
border-radius: 10px 10px 0 0;
background: repeating-linear-gradient(
-55deg,
var(--slate-color) 0 20px,
$ink 20px 40px
);
transform-origin: 6px 100%;
transform: rotate(-9deg);
transition: transform 0.35s $ease;
// hinge
&::before {
content: "";
position: absolute;
left: 2px;
bottom: -9px;
width: 12px;
height: 12px;
border: 3px solid $ink;
border-radius: 50%;
background: $cream;
}
}
&:hover &__clapper {
animation: clap 0.45s $ease;
transform: rotate(0);
}
&__body {
position: relative;
padding: 28px 28px 28px;
border: 3px solid $ink;
border-radius: 0 0 $radius $radius;
background: $ink;
color: $beige;
box-shadow: 8px 8px 0 var(--slate-color);
transition: transform 0.35s $ease, box-shadow 0.35s $ease;
// top stripe bar of the slate body
&::before {
content: "";
position: absolute;
top: 0;
left: 0;
right: 0;
height: 14px;
background: repeating-linear-gradient(
-55deg,
var(--slate-color) 0 20px,
$ink 20px 40px
);
border-bottom: 3px solid $ink;
}
// "SCENE 01"
&::after {
content: "Szene 0" counter(slate);
position: absolute;
top: 30px;
right: 24px;
font-family: ui-monospace, "SFMono-Regular", Menlo, Consolas, monospace;
font-size: 12px;
letter-spacing: 0.12em;
text-transform: uppercase;
opacity: 0.6;
}
}
&:hover &__body {
transform: translate(-3px, -3px);
box-shadow: 12px 12px 0 var(--slate-color);
}
&__title {
margin-top: 12px;
font-size: clamp(32px, 4vw, 48px);
line-height: 1.1;
font-weight: 800;
letter-spacing: -0.03em;
color: var(--slate-color);
}
&__text {
margin-top: 8px;
font-size: 18px;
color: rgba($beige, 0.85);
}
// playful alternating tilt
&:nth-child(odd) { rotate: -1deg; }
&:nth-child(even) { rotate: 1deg; }
}
.service__items {
counter-reset: slate;
}
@keyframes clap {
0% { transform: rotate(-9deg); }
40% { transform: rotate(-22deg); }
70% { transform: rotate(1deg); }
100% { transform: rotate(0); }
}
+37
View File
@@ -0,0 +1,37 @@
@use "variables" as *;
.text {
padding: 72px 0 120px;
&__inner {
@include inner;
max-width: 880px;
}
h3 {
margin-bottom: 40px;
font-size: clamp(40px, 6vw, 72px);
line-height: 1;
font-weight: 800;
letter-spacing: -0.03em;
}
h4 {
display: inline-block;
margin: 40px 0 12px;
padding: 4px 12px;
background: $yellow;
border: 2px solid $ink;
border-radius: 8px;
font-size: 18px;
font-weight: 800;
transform: rotate(-1deg);
}
p {
margin-bottom: 16px;
font-size: 17px;
line-height: 1.7;
hyphens: auto;
}
}
+55
View File
@@ -0,0 +1,55 @@
$beige: #f7eee0;
$cream: #fff8ec;
$yellow: #febb28;
$orange: #fe6732;
$red: #f5303c;
$pink: #ce2867;
$purple: #571b47;
$ink: #0e0c0b;
$grey: #3d3d3d;
$max-width: 1440px;
$radius: 20px;
$radius-lg: 32px;
$ease: cubic-bezier(0.34, 1.56, 0.64, 1); // springy
$ease-out: cubic-bezier(0.22, 1, 0.36, 1);
$shadow: 6px 6px 0 $ink;
$colors: (
"red": $red,
"orange": $orange,
"yellow": $yellow,
"pink": $pink,
"purple": $purple
);
@mixin sm {
@media (min-width: 640px) { @content; }
}
@mixin md {
@media (min-width: 900px) { @content; }
}
@mixin lg {
@media (min-width: 1200px) { @content; }
}
@mixin inner {
width: 100%;
max-width: $max-width;
margin: 0 auto;
padding: 0 20px;
@include md {
padding: 0 48px;
}
}
@mixin stripes($color, $size: 22px) {
background: repeating-linear-gradient(
-45deg,
$color 0 $size,
$ink $size ($size * 2)
);
}
+61
View File
@@ -0,0 +1,61 @@
@use "variables" as *;
.work {
position: relative;
padding: 0;
background: $ink;
color: $beige;
counter-reset: take;
&__inner {
@include inner;
padding-top: 120px;
padding-bottom: 120px;
@include md {
padding-top: 160px;
padding-bottom: 160px;
}
}
&__head {
display: grid;
gap: 24px;
margin-bottom: 80px;
@include md {
grid-template-columns: 1fr 1fr;
align-items: end;
}
}
&__text {
max-width: 46ch;
font-size: 20px;
color: rgba($beige, 0.8);
}
&__list {
display: grid;
gap: 96px;
@include md {
gap: 140px;
}
}
}
// sprocket holes
.filmstrip {
height: 44px;
background-color: $ink;
background-image: radial-gradient(ellipse 9px 8px at center, $beige 96%, transparent 100%);
background-size: 40px 20px;
background-position: 0 12px;
background-repeat: repeat-x;
animation: filmstrip 2s linear infinite;
}
@keyframes filmstrip {
to { background-position: 40px 12px; }
}
+95
View File
@@ -0,0 +1,95 @@
@use "variables" as *;
.take {
counter-increment: take;
display: grid;
gap: 32px;
align-items: center;
@include md {
grid-template-columns: 4fr 8fr;
gap: 64px;
&:nth-child(even) {
grid-template-columns: 8fr 4fr;
.take__info { order: 2; }
.take__screen { order: 1; transform: rotate(1.5deg); }
}
}
&__info {
position: relative;
}
&__label {
display: inline-flex;
align-items: center;
gap: 8px;
padding: 6px 14px;
border: 2px solid $beige;
border-radius: 8px;
font-family: ui-monospace, "SFMono-Regular", Menlo, Consolas, monospace;
font-size: 13px;
letter-spacing: 0.12em;
text-transform: uppercase;
&::after {
content: counter(take, decimal-leading-zero);
padding-left: 8px;
border-left: 2px solid $beige;
color: $yellow;
}
}
&__title {
margin-top: 20px;
font-size: clamp(32px, 4.5vw, 56px);
line-height: 1.05;
font-weight: 800;
letter-spacing: -0.03em;
}
&__text {
margin-top: 16px;
color: rgba($beige, 0.75);
}
&__screen {
position: relative;
aspect-ratio: 16 / 9;
border: 3px solid $beige;
border-radius: $radius;
overflow: hidden;
background: #000;
transform: rotate(-1.5deg);
transition: transform 0.5s $ease, box-shadow 0.5s $ease;
box-shadow: 10px 10px 0 var(--take-color, #{$red});
}
&:hover &__screen {
transform: rotate(0) scale(1.02);
box-shadow: 16px 16px 0 var(--take-color, #{$red});
}
&:nth-child(4n+1) { --take-color: #{$pink}; }
&:nth-child(4n+2) { --take-color: #{$red}; }
&:nth-child(4n+3) { --take-color: #{$orange}; }
&:nth-child(4n+4) { --take-color: #{$yellow}; }
&:hover &__title {
color: var(--take-color);
}
&__title {
transition: color 0.3s;
}
&__video {
position: absolute;
inset: 0;
width: 100%;
height: 100%;
border: 0;
}
}
+11 -832
View File
@@ -1,833 +1,12 @@
@import "_reset.scss";
@import "_grid.scss";
@use "reset";
@use "base";
@use "nav";
@use "intro";
@use "service";
@use "service_item";
@use "work";
@use "work_entry";
@use "insta";
@use "footer";
@use "text";
* {
color: var(--black);
box-sizing: border-box;
}
html {
color: var(--black);
font-family: "Manrope", -apple-system, system-ui, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";
--white: #fff;
--beige: #f7eee0;
--yellow: #febb28;
--orange: #fe6732;
--red: #f5303c;
--pink: #ce2867;
--purple: #571b47;
--grey: #3d3d3d;
--black: #000;
}
body {
background-color: var(--beige);
padding: 0 16px;
overflow-x: hidden;
}
section {
width: 100%;
}
h1, h2, h3, h4, p {
margin-block-start: 0;
margin-block-end: 0;
line-height: 1.5;
}
h1, h2, h3 {
font-weight: 500;
}
h1 {
font-size: 96px;
}
h2 {
font-size: 48px;
}
h3 {
font-size: 32px;
}
h4 {
font-size: 20px;
font-weight: 600;
}
p {
font-size: 18px;
font-weight: 500;
a {
color: var(--red);
&:hover {
text-decoration: underline;
}
}
}
button, a.button {
font-size: 18px;
font-weight: 600;
padding: 16px 24px;
cursor: pointer;
}
[data-aos="fade-in"] {
opacity: 0;
transition-property: opacity;
&.aos-animate {
opacity: 1;
}
}
.header {
position: sticky;
top: 0;
left: 0;
height: 64px;
width: 100%;
background-color: var(--beige);
z-index: 100;
-webkit-backface-visibility: hidden; /* Correct fixed positioning on mobile */
.container {
height: 100%;
display: flex;
align-items: center;
.wordmark {
font-size: 24px;
font-weight: 700;
cursor: pointer;
}
ul {
display: flex;
flex: 1;
justify-content: flex-end;
text-align: right;
li {
position: relative;
display: inline-flex;
margin-left: 48px;
font-size: 18px;
line-height: 1.5;
font-weight: 500;
color: inherit;
cursor: pointer;
&:nth-of-type(1):hover::before {
background-color: var(--pink);
}
&:nth-of-type(2):hover::before {
background-color: var(--red);
}
&:nth-of-type(3):hover::before {
background-color: var(--orange);
}
&:nth-of-type(4):hover::before {
background-color: var(--yellow);
}
&::before {
content: "";
position: absolute;
right: 0;
bottom: 0;
left: 0;
height: 2px;
z-index: -1;
}
}
}
}
}
.mobile-menu {
position: fixed;
top: 0;
right: 0;
bottom: 0;
left: 0;
display: flex;
justify-content: center;
align-items: center;
background-color: rgba(0, 0, 0, 0.8);
z-index: 1000;
animation: fade-in 0.2s ease-in-out;
-webkit-backface-visibility: hidden; /* Correct fixed positioning on mobile */
@keyframes fade-in {
from {
opacity: 0;
}
to {
opacity: 1;
}
}
li {
color: white;
font-size: 24px;
line-height: 64px;
font-weight: 600;
text-align: center;
cursor: pointer;
}
}
.section-start {
padding: 128px 0;
.headline {
display: flex;
margin-bottom: 96px;
h1 {
flex: 1;
a {
color: var(--red);
}
}
img {
cursor: pointer;
}
}
.hero {
width: 100%;
max-width: 100%;
overflow: hidden;
z-index: 1;
video {
height: 100%;
min-height: 512px;
width: 100%;
object-fit: cover;
transform: scale(1.004);
}
}
}
.section-service {
padding: 128px 0;
h2 {
margin: 0 64px 24px 0;
padding-bottom: 12px;
border-bottom: 8px solid;
&:nth-of-type(1) {
border-color: var(--red);
}
&:nth-of-type(2) {
border-color: var(--orange);
}
&:nth-of-type(3) {
border-color: var(--yellow);
}
}
p {
margin: 0 64px 64px 0;
&:last-of-type {
margin-bottom: 16px;
}
}
.img {
min-height: 512px;
background-image: url("1.jpg");
background-position: center 33%;
background-size: cover;
overflow: hidden;
}
}
.section-work {
padding: 128px 0;
.video {
margin-bottom: 128px;
&:nth-of-type(4n+1) h2 {
border-color: var(--pink);
}
&:nth-of-type(4n+2) h2 {
border-color: var(--red);
}
&:nth-of-type(4n+3) h2 {
border-color: var(--orange);
}
&:nth-of-type(4n+4) h2 {
border-color: var(--yellow);
}
&:last-of-type {
margin-bottom: 0;
}
}
h2 {
margin: 0 0 24px 64px;
padding-bottom: 12px;
border-bottom: 8px solid;
}
p {
margin-left: 64px;
}
}
.section-rental {
padding: 128px 0;
.square {
position: sticky;
top: 128px;
padding: 32px 0;
h2 {
margin-bottom: 24px;
padding-bottom: 12px;
border-bottom: 8px solid var(--red);
}
button, a.button {
display: inline-flex;
color: var(--black);
margin: 48px 12px 0 0;
&:hover {
box-shadow: inset 0 0 0 2px var(--black);
}
&.primary {
background-color: var(--yellow);
}
&.secondary {
background-color: var(--orange);
}
}
}
.parts {
position: relative;
max-width: 720px;
min-height: 256px;
margin: 0 auto;
img:not(#part0) {
position: absolute;
filter: contrast(1.3) saturate(0.6);
}
#part0 {
width: 100%;
}
#part1 {
width: 29%;
left: 34%;
}
#part2 {
width: 8.5%;
left: 24%;
margin-top: 2%;
}
#part3 {
width: 19%;
left: 0;
margin-top: 2%;
}
#part4 {
width: 17%;
left: 2%;
margin-top: 15%;
}
#part5 {
width: 5.5%;
left: 70%;
margin-top: 9%;
}
#part6 {
width: 22%;
left: 64%;
margin-top: 1%;
}
#part7 {
width: 12.5%;
left: 87.5%;
margin-top: 1%;
}
#part8 {
width: 37%;
left: 30%;
margin-top: 28%;
}
#part9 {
width: 22.5%;
left: 0;
margin-top: 28%;
}
#part10 {
width: 49%;
left: 20%;
margin-top: 40%;
}
#part11 {
width: 14%;
left: 2%;
margin-top: 36%;
}
#part12 {
width: 27%;
left: 72%;
margin-top: 31%;
}
#part13 {
width: 24%;
left: 48%;
margin-top: 48%;
}
#part14 {
width: 19%;
left: 24%;
margin-top: 48%;
}
#part15 {
width: 4.5%;
left: 15%;
margin-top: 47%;
}
#part16 {
width: 24%;
left: 75%;
margin-top: 48%;
}
#part17 {
width: 7.5%;
left: 2%;
margin-top: 44%;
}
#part18-1 {
width: 14%;
left: 46%;
margin-top: 72%;
}
#part18-2 {
width: 14%;
left: 46%;
margin-top: 86%;
}
#part19-1 {
width: 17%;
left: 22%;
margin-top: 70%;
}
#part19-2 {
width: 17%;
left: 22%;
margin-top: 84%;
}
#part20 {
width: 13.5%;
left: 66%;
margin-top: 73%;
}
#part21 {
width: 11.5%;
left: 6%;
margin-top: 73%;
}
#part22 {
width: 13.5%;
left: 84%;
margin-top: 73%;
}
#part23 {
width: 28%;
left: 22%;
margin-top: 102%;
}
#part24 {
width: 37.5%;
left: 60%;
margin-top: 100%;
}
#part25 {
width: 20%;
left: 14%;
margin-top: 105%;
}
#part26 {
width: 40%;
left: 43%;
margin-top: 106%;
}
#part27 {
width: 22.5%;
left: 20%;
margin-top: 115%;
}
#part28 {
width: 22%;
left: 47%;
margin-top: 130%;
}
#part29-1 {
width: 3%;
left: 4%;
margin-top: 106%;
}
#part29-2 {
width: 3%;
left: 8%;
margin-top: 106%;
}
#part30 {
width: 19%;
left: 70%;
margin-top: 116%;
}
#part31-1 {
width: 2.5%;
left: 13%;
margin-top: 125.5%;
}
#part31-2 {
width: 2.5%;
left: 16%;
margin-top: 125.5%;
}
#part32-1 {
width: 2.75%;
left: 20%;
margin-top: 126%;
}
#part32-2 {
width: 2.75%;
left: 24%;
margin-top: 126%;
}
}
}
.section-instagram {
padding: 128px 0;
}
.section-text {
padding: 128px 0;
h3 {
margin-bottom: 32px;
}
h4 {
margin: 16px 0 12px;
}
p {
margin-bottom: 12px;
}
}
footer {
padding: 128px 0;
ul {
display: flex;
justify-content: space-between;
li {
font-size: 18px;
line-height: 1.5;
font-weight: 500;
&:first-of-type {
flex: 1;
}
&:not(:first-of-type) {
margin-left: 48px;
}
&:nth-of-type(4n+1):hover a::before {
background-color: var(--pink);
}
&:nth-of-type(4n+2):hover a::before {
background-color: var(--red);
}
&:nth-of-type(4n+3):hover a::before {
background-color: var(--orange);
}
&:nth-of-type(4n+4):hover a::before {
background-color: var(--yellow);
}
a {
position: relative;
&::before {
content: "";
position: absolute;
right: 0;
bottom: 0;
left: 0;
height: 2px;
z-index: -1;
}
}
}
}
}
@media only screen and (max-width: 1023px) {
h1 {
font-size: 64px;
}
h2 {
font-size: 36px;
}
h3 {
font-size: 24px;
}
h4 {
font-size: 20px;
}
.section-start {
padding: 64px 0;
.headline {
margin-bottom: 64px;
}
}
.section-service {
padding: 64px 0;
h2 {
margin: 0 32px 24px 0;
}
p {
margin: 0 32px 32px 0;
}
.img {
margin-top: 64px;
}
}
.section-work {
padding: 64px 0;
h2 {
margin: 0 0 24px 0;
}
p {
margin: 0 0 32px 0;
}
.video {
margin-bottom: 64px;
}
}
.section-rental {
padding: 64px 0;
overflow-x: hidden;
.square {
padding: 0;
h2 {
margin: 0 0 24px 0;
}
}
.parts {
margin: 64px 0 0;
overflow: hidden;
}
}
.section-instagram {
padding: 64px 0;
}
.section-text {
padding: 64px 0;
}
footer {
padding: 64px 0;
ul {
display: block;
li {
margin: 12px 0 !important;
}
}
}
}
@media only screen and (max-width: 767px) {
.section-service {
h2 {
margin: 0 0 16px 0;
padding-bottom: 8px;
}
p {
margin: 0 0 24px 0;
}
}
.section-work {
h2 {
margin: 0 0 16px 0;
padding-bottom: 8px;
}
p {
margin: 0 0 24px 0;
}
}
.section-rental {
.square h2 {
margin: 0 0 16px 0;
padding-bottom: 8px;
}
}
}
@media only screen and (max-width: 511px) {
h1 {
font-size: 40px;
}
h2 {
font-size: 32px;
}
.section-start {
padding: 32px 0 0;
.headline {
margin-bottom: 32px;
}
}
.section-service {
padding: 64px 0 0;
h2 {
border-bottom: 4px solid;
}
.img {
margin-top: 32px;
}
}
.section-work {
padding: 64px 0 0;
.video {
margin-bottom: 32px;
}
h2 {
border-bottom: 4px solid;
}
}
.section-rental {
padding: 64px 0 0;
.square h2 {
border-bottom: 4px solid var(--red);
}
}
.section-instagram {
padding: 32px 0;
}
.section-text {
padding: 32px 0;
}
footer {
padding: 32px 0;
}
}