Current directory: /home/klas4s23/domains/585455.klas4s23.mid-ica.nl/public_html/Gastenboek/uploads
* {
margin: 0;
padding: 0;
box-sizing: border-box;
}
h1::selection,
h2::selection,
h3::selection,
h4::selection,
h5::selection,
h6::selection {
background: transparent;
color: #ffffff;
text-shadow: 5px 5px 0 #024e9b;
}
body {
font-family: 'Inter', Helvetica, Arial, sans-serif;
background-color: #000;
color: #fff;
overflow-x: hidden;
}
/* --- LOADER --- */
#loader {
position: fixed;
top: 0;
left: 0;
width: 100%;
height: 100%;
background-color: #000000;
z-index: 9999;
display: flex;
justify-content: center;
align-items: center;
transition: opacity 0.8s ease-out, visibility 0.8s ease-out;
}
#loader.hidden {
opacity: 0;
visibility: hidden;
pointer-events: none;
}
.loader-content {
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
}
.text-line {
overflow: hidden;
position: relative;
margin-bottom: 10px;
}
.loader-name {
font-family: 'Inter', sans-serif;
font-size: 6vw;
font-weight: 900;
letter-spacing: -0.04em;
margin: 0;
color: #ffffff;
line-height: 1.1;
white-space: pre;
}
.loader-percentage {
position: absolute;
bottom: 30px;
right: 30px;
font-family: 'Inter', sans-serif;
font-size: 2rem;
font-weight: 700;
color: #fff;
font-variant-numeric: tabular-nums;
}
.loader-title {
font-family: 'Inter', sans-serif;
font-size: 0.8rem;
letter-spacing: 0.4em;
margin: 0;
color: #666;
text-transform: uppercase;
font-weight: 600;
transform: translateY(100%);
line-height: 1.5;
}
@media (max-width: 768px) {
.loader-name {
font-size: 12vw;
letter-spacing: -0.02em;
}
.loader-title {
font-size: 0.7rem;
letter-spacing: 0.2em;
}
}
/* --- NAVBAR --- */
.navbar {
position: fixed;
top: 0;
left: 0;
width: 100%;
padding: 20px 50px;
display: flex;
justify-content: center;
align-items: center;
z-index: 100;
mix-blend-mode: difference;
gap: 45vw;
}
.nav-logo {
font-size: 1.2rem;
font-weight: 700;
text-transform: uppercase;
letter-spacing: 1px;
color: #fff;
text-decoration: none;
}
.nav-links {
display: flex;
gap: 40px;
}
.rolling-link {
position: relative;
display: inline-block;
overflow: hidden;
text-decoration: none;
color: #fff;
font-size: 0.9rem;
text-transform: uppercase;
letter-spacing: 1px;
font-weight: 400;
height: 1.2em;
line-height: 1.2em;
}
.rolling-link span {
display: block;
transition: transform 200ms cubic-bezier(0.5, 0, 0.2, 1);
position: relative;
}
.rolling-link span::after {
content: attr(data-text);
position: absolute;
top: 100%;
left: 0;
width: 100%;
height: 100%;
}
.rolling-link:hover span {
transform: translateY(-100%);
}
@media (max-width: 768px) {
.navbar {
padding: 20px;
gap: 20px;
}
.nav-links {
gap: 20px;
}
}
/* --- HERO SECTION --- */
.hero-container {
position: fixed;
top: 0;
left: 0;
width: 100%;
height: 100vh;
z-index: -1;
display: flex;
justify-content: center;
align-items: center;
overflow: hidden;
}
.hero-container video {
position: absolute;
top: 50%;
left: 50%;
min-width: 100%;
min-height: 100%;
width: auto;
height: auto;
transform: translate(-50%, -50%);
object-fit: cover;
}
.video-overlay {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
background: rgba(0, 0, 0, 0.4);
}
.hero-text {
position: relative;
z-index: 1;
text-align: center;
color: #fff;
padding: 0 20px;
}
.hero-text h1 {
font-size: 8vw;
font-weight: 900;
line-height: 0.9;
text-transform: uppercase;
letter-spacing: -0.04em;
margin-bottom: 20px;
}
.word-mask {
display: inline-block;
height: 1em;
overflow: hidden;
vertical-align: bottom;
position: relative;
}
.word-track {
display: flex;
flex-direction: column;
will-change: transform;
}
.word-track span {
display: block;
height: 100%;
line-height: 1;
}
.hero-text p {
font-size: 1.2rem;
text-transform: uppercase;
letter-spacing: 0.4em;
font-weight: 600;
margin-top: 20px;
opacity: 0.8;
}
/* --- PAGE WRAPPER --- */
.page-wrapper {
position: relative;
z-index: 2;
margin-top: 100vh;
background-color: #000;
}
/* --- SKILLS SECTION --- */
.skills-section {
padding-bottom: 200px;
}
.skills-grid {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
gap: 60px;
margin-top: 80px;
}
.skill-category h3 {
font-size: 1.5rem;
color: #fff;
margin-bottom: 20px;
text-transform: uppercase;
letter-spacing: 1px;
border-bottom: 1px solid rgba(255, 255, 255, 0.2);
padding-bottom: 10px;
}
.skill-list {
list-style: none;
}
.skill-list li {
font-size: 1.1rem;
color: #aaa;
margin-bottom: 10px;
line-height: 1.4;
}
.skill-list li strong {
color: #fff;
font-weight: 600;
}
/* --- CONTENT SECTION --- */
.content-section {
background-color: #050505;
/* Slightly lighter black for contrast */
min-height: 100vh;
padding: 150px 5%;
}
.content-wrapper {
max-width: 1600px;
margin: 0 auto;
}
/* --- ABOUT SECTION --- */
.about-section {
display: grid;
grid-template-columns: 1fr 1fr;
gap: 80px;
margin-bottom: 200px;
align-items: center;
}
.about-image {
width: 100%;
max-width: 400px;
aspect-ratio: 1/1;
border-radius: 5px;
overflow: hidden;
filter: grayscale(100%);
transition: filter 0.5s ease;
}
.about-image:hover {
filter: grayscale(0%);
}
.about-image img {
width: 100%;
height: 100%;
object-fit: cover;
}
.about-text h2 {
font-size: 4rem;
font-weight: 800;
margin-bottom: 40px;
line-height: 1;
letter-spacing: -0.02em;
background: linear-gradient(to right, #fff, #666);
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
}
.about-text p {
font-size: 1.25rem;
line-height: 1.6;
color: #999;
max-width: 600px;
}
.section-header {
font-size: 10rem;
font-weight: 900;
color: #1a1a1a;
line-height: 0.8;
letter-spacing: -0.05em;
margin-bottom: -4rem;
position: relative;
z-index: 0;
user-select: none;
pointer-events: none;
overflow: hidden;
}
/* --- PROJECT GALLERY --- */
.projects-grid {
display: flex;
flex-direction: column;
gap: 150px;
position: relative;
z-index: 1;
}
.project-card {
display: grid;
grid-template-columns: 1.5fr 1fr;
gap: 40px;
align-items: center;
text-decoration: none;
color: #fff;
position: relative;
padding-bottom: 40px;
border-bottom: 1px solid rgba(255, 255, 255, 0.1);
}
.project-card:nth-child(even) {
grid-template-columns: 1fr 1.5fr;
text-align: right;
}
.project-card:nth-child(even) .project-number {
left: auto;
right: 0;
}
.project-card:nth-child(even) .project-content {
order: 2;
}
.project-card:nth-child(even) .image-wrapper {
order: 1;
}
.image-wrapper {
width: 100%;
aspect-ratio: 16/9;
overflow: hidden;
position: relative;
border-radius: 4px;
}
.image-wrapper img {
width: 100%;
height: 100%;
object-fit: cover;
transition: transform 0.7s cubic-bezier(0.2, 0.8, 0.2, 1), filter 0.5s ease;
filter: grayscale(100%) contrast(1.1);
}
.project-card:hover .image-wrapper img {
transform: scale(1.05);
filter: grayscale(0%) contrast(1);
}
.project-content {
position: relative;
}
.project-number {
font-size: 8rem;
font-weight: 900;
color: transparent;
-webkit-text-stroke: 1px rgba(255, 255, 255, 0.2);
position: absolute;
top: -4rem;
left: 0;
line-height: 1;
z-index: -1;
transition: -webkit-text-stroke 0.3s ease, color 0.3s ease;
}
.project-card:hover .project-number {
-webkit-text-stroke: 1px rgba(255, 255, 255, 0.6);
/* color: rgba(255,255,255,0.05); */
}
.project-title {
font-size: 3.5rem;
font-weight: 800;
margin-bottom: 15px;
line-height: 1;
letter-spacing: -0.02em;
}
.project-type {
font-family: 'Inter', monospace;
font-size: 1rem;
color: #aaa;
text-transform: uppercase;
letter-spacing: 1px;
display: block;
margin-bottom: 20px;
}
.project-description {
font-size: 1.1rem;
color: #888;
line-height: 1.5;
max-width: 400px;
transition: color 0.3s ease;
}
.project-card:hover .project-description {
color: #ccc;
}
.project-card .bracket-button-wrapper {
margin-top: 30px;
opacity: 0;
transform: translateY(20px);
transition: all 0.5s ease;
}
.project-card:hover .bracket-button-wrapper {
opacity: 1;
transform: translateY(0);
}
/* --- VISIBLE ON SCROLL --- */
.reveal-on-scroll {
opacity: 0;
transform: translateY(50px);
transition: all 1s ease;
}
.reveal-on-scroll.active {
opacity: 1;
transform: translateY(0);
}
@media (max-width: 768px) {
.hero-text h1 {
font-size: 14vw;
}
.content-section {
padding: 100px 5%;
}
.about-section {
grid-template-columns: 1fr;
gap: 40px;
text-align: left;
}
.about-image {
max-width: 100%;
}
.section-header {
font-size: 15vw;
margin-bottom: -5vw;
margin-left: -2vw;
}
.project-card,
.project-card:nth-child(even) {
grid-template-columns: 1fr;
gap: 20px;
text-align: left;
padding-bottom: 60px;
}
.project-card:nth-child(even) .image-wrapper {
order: 0;
}
.project-card:nth-child(even) .project-content {
order: 1;
}
.project-number {
font-size: 4rem;
top: -2rem;
}
.project-title {
font-size: 2rem;
}
.view-case {
opacity: 1;
transform: translateY(0);
}
}
@property --border-angle {
syntax: '<angle>';
initial-value: 0deg;
inherits: false;
}
@keyframes border-rotate {
from {
--border-angle: 0deg;
}
to {
--border-angle: 360deg;
}
}
/* --- CONTACT SECTION --- */
.contact-section {
position: relative;
margin: 25px;
margin-bottom: 0;
height: calc(100vh - 50px);
display: flex;
flex-direction: column;
/* Moving Glow Border */
border: 1px solid transparent;
border-radius: 20px;
background-image: linear-gradient(#000, #000), conic-gradient(from var(--border-angle), #111 0%, #fff 50%, #111 100%);
background-origin: padding-box, border-box;
background-clip: padding-box, border-box;
animation: border-rotate 4s linear infinite;
overflow: hidden;
box-sizing: border-box;
}
.corner-glow {
position: absolute;
top: -150px;
right: -150px;
width: 500px;
height: 500px;
background: radial-gradient(circle, rgba(255, 255, 255, 0.15) 0%, rgba(0, 0, 0, 0) 70%);
filter: blur(60px);
z-index: 0;
pointer-events: none;
}
.contact-header {
font-size: 1rem;
color: #fff;
margin-bottom: 20px;
letter-spacing: 2px;
text-transform: uppercase;
text-align: center;
margin-top: auto;
position: relative;
z-index: 2;
}
.bracket-button-wrapper {
position: relative;
display: inline-block;
padding: 10px 15px;
margin: 0 auto auto auto;
cursor: pointer;
z-index: 2;
}
.bracket-button-wrapper::before {
content: '';
position: absolute;
top: 0;
left: 0;
width: 10px;
height: 10px;
border-top: 2px solid white;
border-left: 2px solid white;
transition: all 0.3s ease;
}
.bracket-button-wrapper::after {
content: '';
position: absolute;
bottom: 0;
right: 0;
width: 10px;
height: 10px;
border-bottom: 2px solid white;
border-right: 2px solid white;
transition: all 0.3s ease;
}
.moving-glow {
position: absolute;
width: 500px;
height: 500px;
background: radial-gradient(circle, rgba(255, 255, 255, 0.25), rgba(255, 255, 255, 0));
border-radius: 50%;
filter: blur(80px);
pointer-events: none;
z-index: 1;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
opacity: 0.8;
mix-blend-mode: screen;
}
.contact-title {
font-family: 'Inter', sans-serif;
font-size: 7vw;
font-weight: 900;
line-height: 1;
margin-bottom: 5vh;
letter-spacing: -0.04em;
text-transform: uppercase;
color: #fff;
text-align: center;
position: relative;
z-index: 2;
}
.contact-circle {
width: 160px;
height: 160px;
border: 1px solid rgba(255, 255, 255, 0.3);
border-radius: 50%;
display: flex;
align-items: center;
justify-content: center;
margin: 0 auto auto auto;
text-decoration: none;
color: #fff;
font-size: 0.9rem;
text-align: center;
text-transform: uppercase;
letter-spacing: 1px;
transition: all 0.3s ease;
position: relative;
overflow: hidden;
z-index: 2;
}
.contact-circle span {
position: relative;
z-index: 2;
}
.contact-circle::after {
content: '';
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
background: #fff;
border-radius: 50%;
transform: scale(0);
transition: transform 0.4s cubic-bezier(0.16, 1, 0.3, 1);
z-index: 1;
}
.contact-circle:hover {
border-color: #fff;
color: #000;
}
.contact-circle:hover::after {
transform: scale(1);
}
.contact-footer {
display: flex;
justify-content: space-around;
align-items: flex-end;
padding: 30px;
width: 100%;
border-top: 1px solid rgba(255, 255, 255, 0.1);
font-size: 0.8rem;
color: #888;
text-transform: uppercase;
letter-spacing: 1px;
box-sizing: border-box;
}
.footer-links {
display: flex;
gap: 40px;
}
.footer-links a {
color: #fff;
text-decoration: none;
transition: color 0.3s ease;
position: relative;
}
.footer-links a::after {
content: '';
position: absolute;
width: 0;
height: 1px;
bottom: -2px;
left: 0;
background-color: #fff;
transition: width 0.3s ease;
}
.footer-links a:hover::after {
width: 100%;
}
@media (max-width: 768px) {
.contact-title {
font-size: 12vw;
}
.contact-footer {
flex-direction: column;
align-items: center;
gap: 20px;
text-align: center;
}
.footer-links {
gap: 20px;
}
}
/* --- GLOBAL FOOTER --- */
.global-footer {
padding: 20px 0 40px 0;
text-align: center;
font-size: 0.75rem;
color: #444;
text-transform: uppercase;
letter-spacing: 2px;
background-color: #000;
width: 100%;
}
/* --- HAMBURGER MENU --- */
.hamburger-menu {
display: none;
/* Hidden on desktop */
flex-direction: column;
justify-content: space-between;
width: 30px;
height: 14px;
cursor: pointer;
z-index: 200;
/* Above overlay */
mix-blend-mode: difference;
}
.hamburger-menu span {
display: block;
width: 100%;
height: 2px;
background-color: #fff;
transition: all 0.3s cubic-bezier(0.645, 0.045, 0.355, 1);
}
/* Hamburger Animation */
.hamburger-menu.active span:nth-child(1) {
transform: translateY(6px) rotate(45deg);
}
.hamburger-menu.active span:nth-child(2) {
transform: translateY(-6px) rotate(-45deg);
}
/* --- MOBILE NAV OVERLAY --- */
.mobile-nav-overlay {
position: fixed;
top: 0;
left: 0;
width: 100%;
height: 100vh;
background-color: #000;
z-index: 150;
/* Below hamburger, above content */
display: flex;
align-items: center;
justify-content: center;
opacity: 0;
visibility: hidden;
pointer-events: none;
transition: opacity 0.5s ease, visibility 0.5s ease;
}
.mobile-nav-overlay.active {
opacity: 1;
visibility: visible;
pointer-events: all;
}
.mobile-nav-links {
display: flex;
flex-direction: column;
align-items: center;
gap: 40px;
}
.mobile-link {
font-family: 'Inter', sans-serif;
font-size: 3rem;
font-weight: 900;
color: #fff;
text-decoration: none;
text-transform: uppercase;
overflow: hidden;
position: relative;
transform: translateY(20px);
opacity: 0;
transition: all 0.5s ease;
}
/* Hover effect for mobile links */
.mobile-link:hover {
color: #ccc;
-webkit-text-stroke: 1px #fff;
color: transparent;
}
@media (max-width: 768px) {
.navbar {
justify-content: space-between;
/* Space out logo and hamburger */
gap: 0;
/* Reset gap */
}
.nav-links {
display: none;
/* Hide desktop links */
}
.hamburger-menu {
display: flex;
}
}