So many stuphs
7
public/assets/.meta/logo2.svg.yaml
Normal file
@ -0,0 +1,7 @@
|
||||
data: { }
|
||||
size: 1078
|
||||
last_modified: 1768916584
|
||||
width: '1697'
|
||||
height: '1870'
|
||||
mime_type: image/svg+xml
|
||||
duration: null
|
||||
7
public/assets/.meta/logo_black_no_logo_v2.svg.yaml
Normal file
@ -0,0 +1,7 @@
|
||||
data: { }
|
||||
size: 44375
|
||||
last_modified: 1768916437
|
||||
width: '1388.712891'
|
||||
height: '475.344849'
|
||||
mime_type: image/svg+xml
|
||||
duration: null
|
||||
88
public/assets/js/main.js
Normal file
@ -0,0 +1,88 @@
|
||||
document.addEventListener('DOMContentLoaded', () => {
|
||||
// Video fixed BG
|
||||
const reelEl = document.getElementById('reel');
|
||||
if (!reelEl) return;
|
||||
|
||||
const video = reelEl.tagName.toLowerCase() === 'video' ? reelEl : reelEl.querySelector('video');
|
||||
if (!video) return;
|
||||
|
||||
function tryPlay() {
|
||||
const playPromise = video.play();
|
||||
if (playPromise !== undefined) {
|
||||
playPromise.catch(() => {
|
||||
// Autoplay bloqué : passer en muet et retenter
|
||||
video.muted = true;
|
||||
video.play().catch(() => {});
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
function handleVisibility(visible) {
|
||||
console.log('Visibility changed, playing:', visible);
|
||||
if (visible) {
|
||||
// make visible the video element
|
||||
video.style.visibility = 'visible';
|
||||
tryPlay();
|
||||
}
|
||||
else {
|
||||
video.style.visibility = 'hidden';
|
||||
video.pause();
|
||||
}
|
||||
}
|
||||
|
||||
if ('IntersectionObserver' in window) {
|
||||
const observer = new IntersectionObserver((entries) => {
|
||||
entries.forEach(entry => {
|
||||
handleVisibility(entry.intersectionRatio >= 0.01);
|
||||
});
|
||||
}, { threshold: [0, 0.01, 1] });
|
||||
observer.observe(reelEl);
|
||||
} else {
|
||||
// Fallback simple : vérification sur scroll/resize
|
||||
let ticking = false;
|
||||
const check = () => {
|
||||
ticking = false;
|
||||
const rect = reelEl.getBoundingClientRect();
|
||||
const vh = window.innerHeight || document.documentElement.clientHeight;
|
||||
// Visible si une partie quelconque est dans la fenêtre
|
||||
const visible = rect.bottom > 0 && rect.top < vh;
|
||||
handleVisibility(visible);
|
||||
};
|
||||
const onScroll = () => {
|
||||
if (!ticking) {
|
||||
ticking = true;
|
||||
requestAnimationFrame(check);
|
||||
}
|
||||
};
|
||||
onScroll();
|
||||
window.addEventListener('scroll', onScroll, { passive: true });
|
||||
window.addEventListener('resize', onScroll);
|
||||
}
|
||||
|
||||
document.addEventListener('visibilitychange', () => {
|
||||
if (document.hidden) video.pause();
|
||||
});
|
||||
|
||||
// Cursor tracking
|
||||
//track the cursor position and set CSS variables --cursor-x and --cursor-y on the body element
|
||||
let x = 0;
|
||||
let y = 0;
|
||||
document.addEventListener('mousemove', (e) => {
|
||||
x = Math.round(((e.clientX / window.innerWidth) * 2 - 1) * 10000) / 10000;
|
||||
y = Math.round(((e.clientY / window.innerHeight) * 2 - 1) * 10000) / 10000;
|
||||
});
|
||||
|
||||
let lastUpdate = 0;
|
||||
const FRAME_INTERVAL = 1000 / 60;
|
||||
const updateTwist = (timestamp) => {
|
||||
if (!timestamp) timestamp = performance.now();
|
||||
if (timestamp - lastUpdate >= FRAME_INTERVAL) {
|
||||
document.body.style.setProperty('--cursor-x', x);
|
||||
document.body.style.setProperty('--cursor-y', y);
|
||||
lastUpdate = timestamp;
|
||||
}
|
||||
requestAnimationFrame(updateTwist);
|
||||
}
|
||||
updateTwist();
|
||||
|
||||
});
|
||||
11
public/assets/logo2.svg
Normal file
@ -0,0 +1,11 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
|
||||
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
|
||||
<svg width="100%" height="100%" viewBox="0 0 1697 1870" version="1.1" xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" xmlns:serif="http://www.serif.com/"
|
||||
style="fill-rule:evenodd;clip-rule:evenodd;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:1.5;">
|
||||
<g>
|
||||
<path d="M848.439,125c245.079,107.6 485.699,246.522 701.423,404.967c29.355,266.045 29.355,543.888 0,809.933c-215.724,158.445 -456.343,297.367 -701.423,404.967c-245.079,-107.6 -485.699,-246.522 -701.423,-404.967c-29.355,-266.045 -29.355,-543.888 -0,-809.933c215.724,-158.445 456.343,-297.367 701.423,-404.967Z" style="fill:none;stroke:#ffd600;stroke-width:250px;"/>
|
||||
<path d="M973.439,1409.335l-0,335.531c-0,68.989 -56.011,125 -125,125c-68.989,-0 -125,-56.011 -125,-125l0,-335.531c39.913,10.504 81.808,16.098 125,16.098c43.192,0 85.087,-5.595 125,-16.098Z" style="fill:#ffd600"/>
|
||||
<circle cx="848.439" cy="934.933" r="349.33" style="fill:#ffd600"/>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 1.1 KiB |
1
public/assets/logo2_black.svg
Normal file
|
After Width: | Height: | Size: 1.1 KiB |
4
public/assets/logo_black_no_logo_v2.svg
Normal file
|
After Width: | Height: | Size: 43 KiB |
1
public/assets/pattern.svg
Normal file
|
After Width: | Height: | Size: 262 KiB |
0
public/assets/photos/.gitkeep
Normal file
@ -0,0 +1,7 @@
|
||||
data: { }
|
||||
size: 260582
|
||||
last_modified: 1768903789
|
||||
width: 2048
|
||||
height: 1365
|
||||
mime_type: image/jpeg
|
||||
duration: null
|
||||
@ -0,0 +1,7 @@
|
||||
data: { }
|
||||
size: 216710
|
||||
last_modified: 1768903790
|
||||
width: 2048
|
||||
height: 1365
|
||||
mime_type: image/jpeg
|
||||
duration: null
|
||||
@ -0,0 +1,7 @@
|
||||
data: { }
|
||||
size: 264086
|
||||
last_modified: 1768903791
|
||||
width: 2048
|
||||
height: 1365
|
||||
mime_type: image/jpeg
|
||||
duration: null
|
||||
@ -0,0 +1,7 @@
|
||||
data: { }
|
||||
size: 212186
|
||||
last_modified: 1768903792
|
||||
width: 2048
|
||||
height: 1365
|
||||
mime_type: image/jpeg
|
||||
duration: null
|
||||
@ -0,0 +1,7 @@
|
||||
data: { }
|
||||
size: 200136
|
||||
last_modified: 1768903792
|
||||
width: 2048
|
||||
height: 1365
|
||||
mime_type: image/jpeg
|
||||
duration: null
|
||||
@ -0,0 +1,7 @@
|
||||
data: { }
|
||||
size: 93981
|
||||
last_modified: 1768903793
|
||||
width: 2048
|
||||
height: 1365
|
||||
mime_type: image/jpeg
|
||||
duration: null
|
||||
@ -0,0 +1,7 @@
|
||||
data: { }
|
||||
size: 170545
|
||||
last_modified: 1768903794
|
||||
width: 2048
|
||||
height: 1365
|
||||
mime_type: image/jpeg
|
||||
duration: null
|
||||
@ -0,0 +1,7 @@
|
||||
data: { }
|
||||
size: 269447
|
||||
last_modified: 1768903795
|
||||
width: 2048
|
||||
height: 1365
|
||||
mime_type: image/jpeg
|
||||
duration: null
|
||||
@ -0,0 +1,7 @@
|
||||
data: { }
|
||||
size: 399965
|
||||
last_modified: 1768903795
|
||||
width: 2048
|
||||
height: 1365
|
||||
mime_type: image/jpeg
|
||||
duration: null
|
||||
|
After Width: | Height: | Size: 254 KiB |
|
After Width: | Height: | Size: 212 KiB |
|
After Width: | Height: | Size: 258 KiB |
|
After Width: | Height: | Size: 207 KiB |
|
After Width: | Height: | Size: 195 KiB |
|
After Width: | Height: | Size: 92 KiB |
|
After Width: | Height: | Size: 166 KiB |
|
After Width: | Height: | Size: 263 KiB |
|
After Width: | Height: | Size: 391 KiB |
BIN
public/assets/video/reel.mp4
Normal file
@ -1,14 +1,140 @@
|
||||
@import url('https://fonts.googleapis.com/css2?family=Inter:ital,opsz,wght@0,14..32,100..900;1,14..32,100..900&display=swap');
|
||||
|
||||
/*Bulma variables override*/
|
||||
/*Bulma variables override and hacks*/
|
||||
:root{
|
||||
--bulma-primary-h: 50deg;
|
||||
--bulma-primary-l: 50%;
|
||||
--bulma-scheme-h: 0;
|
||||
--bulma-scheme-s: 0%;
|
||||
--bulma-scheme-l: 6%;
|
||||
--bulma-body-line-height: 1;
|
||||
--bulma-black-h: 0;
|
||||
--bulma-black-s: 0%;
|
||||
--bulma-black-l: 6%;
|
||||
}
|
||||
.has-text-weight-bold {
|
||||
font-weight: 600 !important;
|
||||
}
|
||||
.has-text-weight-bolder {
|
||||
font-weight: 1000 !important;
|
||||
}
|
||||
html{
|
||||
scroll-behavior: smooth;
|
||||
scrollbar-color: var(--bulma-background) var(--bulma-primary);
|
||||
}
|
||||
body{
|
||||
--cursor-x:0;
|
||||
--cursor-y:0;
|
||||
}
|
||||
#nav{
|
||||
--bulma-navbar-item-img-max-height: 2.5rem;
|
||||
}
|
||||
#hero{
|
||||
justify-content:center;
|
||||
}
|
||||
#hero .hero-body{
|
||||
flex-direction: column;flex-grow:0;
|
||||
}
|
||||
/* -----------------------------------------------*/
|
||||
|
||||
/*Custom classes*/
|
||||
video{
|
||||
#nav{
|
||||
background: transparent;
|
||||
mix-blend-mode: difference;
|
||||
}
|
||||
|
||||
#hero::before{
|
||||
background:url('/assets/pattern.svg');
|
||||
content:'';
|
||||
position:absolute;
|
||||
top:-100px;
|
||||
left:-100px;
|
||||
width:calc(100% + 200px);
|
||||
height:calc(100% + 200px);
|
||||
opacity:0.04;
|
||||
}
|
||||
|
||||
#reel{
|
||||
width:100%;
|
||||
height:100vh;
|
||||
position: relative;
|
||||
background: none;
|
||||
}
|
||||
video{
|
||||
position: fixed;
|
||||
top: 0;
|
||||
right: 0;
|
||||
bottom: 0;
|
||||
left: 0;
|
||||
height:100vh;
|
||||
width:100%;
|
||||
object-fit: cover;
|
||||
z-index:-20;
|
||||
}
|
||||
.squircle{
|
||||
border-radius: 50%;
|
||||
corner-shape: squircle;
|
||||
aspect-ratio: 1;
|
||||
}
|
||||
#gallery{
|
||||
position:relative;
|
||||
}
|
||||
.photo{
|
||||
background: var(--bulma-white);
|
||||
padding:1rem;
|
||||
cursor:pointer;
|
||||
}
|
||||
.photo.full{
|
||||
position:absolute;
|
||||
top:0;
|
||||
height:100vh;
|
||||
padding:2rem;
|
||||
}
|
||||
/*#tournaments*/
|
||||
.tournament-block{
|
||||
display:grid;
|
||||
place-items: center;
|
||||
transition: transform 0.3s ease-out;
|
||||
}
|
||||
.tournament-block img{
|
||||
transition: transform 0.3s ease-out;
|
||||
}
|
||||
.tournament-block:hover img{
|
||||
transform: scale(1.2);
|
||||
}
|
||||
.tournament-block:hover{
|
||||
transform: scale(0.9);
|
||||
}
|
||||
|
||||
/*Twist animation*/
|
||||
.twist{
|
||||
/* 3D transform pivot on Y axis*/
|
||||
/*transition: transform ease-out;*/
|
||||
transform-style: preserve-3d;
|
||||
transform-origin: center center -100px;
|
||||
transform: translateZ(-500px) rotateY(calc(20deg * var(--cursor-x))) rotateX(calc(-10deg * var(--cursor-y)));
|
||||
/*perspective: 1000px;*/
|
||||
/*perspective-origin: center;*/
|
||||
}
|
||||
.twist.middle{
|
||||
transform: translateZ(0px) rotateY(calc(20deg * var(--cursor-x))) rotateX(calc(-10deg * var(--cursor-y)));
|
||||
}
|
||||
.twist-fore{
|
||||
transform: translateZ(-100px);
|
||||
}
|
||||
/*.twist::after{*/
|
||||
/* content: '';*/
|
||||
/* position: absolute;*/
|
||||
/* top: 50%;*/
|
||||
/* left: 50%;*/
|
||||
/* background: red;*/
|
||||
/* height:20px;*/
|
||||
/* width:20px;*/
|
||||
/* pointer-events: none;*/
|
||||
/* transform: translateZ(200px);*/
|
||||
/*}*/
|
||||
.twist-fore{
|
||||
transform: translateZ(200px);
|
||||
}
|
||||
|
||||
/*View transition experiments*/
|
||||
|
||||