So many stuphs

This commit is contained in:
2026-01-20 16:18:31 +01:00
parent e07200e424
commit af9a4bf851
39 changed files with 586 additions and 39 deletions

View File

@ -0,0 +1,7 @@
data: { }
size: 1078
last_modified: 1768916584
width: '1697'
height: '1870'
mime_type: image/svg+xml
duration: null

View 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
View 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
View 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

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 1.1 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 43 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 262 KiB

View File

View File

@ -0,0 +1,7 @@
data: { }
size: 260582
last_modified: 1768903789
width: 2048
height: 1365
mime_type: image/jpeg
duration: null

View File

@ -0,0 +1,7 @@
data: { }
size: 216710
last_modified: 1768903790
width: 2048
height: 1365
mime_type: image/jpeg
duration: null

View File

@ -0,0 +1,7 @@
data: { }
size: 264086
last_modified: 1768903791
width: 2048
height: 1365
mime_type: image/jpeg
duration: null

View File

@ -0,0 +1,7 @@
data: { }
size: 212186
last_modified: 1768903792
width: 2048
height: 1365
mime_type: image/jpeg
duration: null

View File

@ -0,0 +1,7 @@
data: { }
size: 200136
last_modified: 1768903792
width: 2048
height: 1365
mime_type: image/jpeg
duration: null

View File

@ -0,0 +1,7 @@
data: { }
size: 93981
last_modified: 1768903793
width: 2048
height: 1365
mime_type: image/jpeg
duration: null

View File

@ -0,0 +1,7 @@
data: { }
size: 170545
last_modified: 1768903794
width: 2048
height: 1365
mime_type: image/jpeg
duration: null

View File

@ -0,0 +1,7 @@
data: { }
size: 269447
last_modified: 1768903795
width: 2048
height: 1365
mime_type: image/jpeg
duration: null

View File

@ -0,0 +1,7 @@
data: { }
size: 399965
last_modified: 1768903795
width: 2048
height: 1365
mime_type: image/jpeg
duration: null

Binary file not shown.

After

Width:  |  Height:  |  Size: 254 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 212 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 258 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 207 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 195 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 92 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 166 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 263 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 391 KiB

Binary file not shown.

View 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*/