/****************** Variables *******************/ /****************** couleurs ******************/ @primary :#00244e; @secondary : #1d2030; @text : #E6E6FA; @text-shadow : #ededff7d; /****************** autres ? ******************/ /****************** Général à toutes les pages ******************/ body,html{ cursor: none; margin: 0; padding: 0; font-family: "Raleway", sans-serif; color: @text; } .no-scroll { overflow: hidden; } .cursor { position: fixed; border-radius: 50%; transform: translateX(-50%) translateY(-50%); pointer-events: none; left: -100px; top: 50%; mix-blend-mode: difference; background-color: transparent; z-index: 10000; border: 2px solid rgb(255, 255, 255); height: 3.5vh; width: 3.5vh; transition: all 20ms ease-out; } .clickable { background-color: rgba(255, 255, 255, 0.5); } /****************** background ******************/ .background { position: fixed; top: 0; left: 0; width: 100%; height: 100%; z-index: -1; background: radial-gradient(ellipse at bottom, @primary 0%, @secondary 100%); } .star { position: absolute; background-color: @text; /* Couleur des étoiles */ border-radius: 50%; /* Forme des étoiles */ animation: twinkle 5s infinite, move-stars 20s linear infinite; /* Animation des étoiles */ } @keyframes twinkle { 0%, 100% { opacity: 1; /* Étoiles visibles */ } 50% { opacity: 0; /* Étoiles invisibles */ } } @keyframes move-stars { 0% { transform: translateY(0); /* Position initiale */ } 100% { transform: translateY(100vh); /* Position finale (bas de la fenêtre) */ } } /****************** scroll bar ******************/ @scrollbar-border-radius: 10px; ::-webkit-scrollbar { position: absolute; width: 5px; } /* Couleur de fond */ ::-webkit-scrollbar-track { background-color: @secondary; } /* Couleur de la poignée */ ::-webkit-scrollbar-thumb { background-color: #ffffff; border-radius: @scrollbar-border-radius; } /* survol poignée */ ::-webkit-scrollbar-thumb:hover { background-color: #ecf8ff; cursor: crosshair; } /****************** Header/ Menu ******************/ header { position: fixed; top: 24px; right: 24px; z-index: 2; } /****************** logo ******************/ .logo { z-index: 2; background-image: url(../images/logo_BN.png); height: 25vh; width: 25vh; position: fixed; background-size: contain; background-repeat: no-repeat; opacity: 0; /* Définit initialement l'opacité à 0 */ transition: opacity 2.5s ease; /* Transition pour l'opacité */ filter: brightness(0) invert(1) sepia(1) saturate(3) hue-rotate(220deg); /* Filtre pour changer la couleur */ } .logo.centered { top: calc(50% - 12.5vh); /* Moitié de la hauteur du logo (25vh / 2) */ left: calc(50% - 12.5vh); /* Moitié de la largeur du logo (25vw / 2) */ //transform: translate(-50%, -50%) scale(1); /* Pour le centrage au milieu */ } .inverted { filter: invert(1); } .logo.small { height: 48px; width: 48px; top: 24px; left: 24px; transition: transform 1s ease, opacity 2.5s ease; &:hover { cursor: crosshair; transform: scale(1.2); } } /****************** boutons ******************/ .buttonSubmit { font: italic 1.2em "Fira Sans", serif; background: none; padding: 12px 8px; border: 2px solid; border-radius: 30px; border-color: whitesmoke; color: whitesmoke; transition: all 500ms ease-in-out; min-width: 120%; min-height: 80%; } .buttonSubmit:hover, .buttonSubmitS:focus { transform: translateY(-1em) scale(120%); transition-duration: 500ms; box-shadow: 0 0.5em 0.5em -0.4em whitesmoke; background: none; border: 2px solid; line-height: 1; border-color: whitesmoke; color: @primary; background-color: whitesmoke; } /****************** menu ******************/ .menu-toggle { display: none; cursor: crosshair; transition: transform 1s ease; &:hover { transform: scale(1.2); } } .bar { width: 25px; height: 3px; background-color: @text; margin: 5px 0; transition: transform 1s; /* Transition pour le menu burger */ } .overlay { position: fixed; top: 0; left: 0; width: 100%; height: 100%; background-color: rgba(255, 255, 255, 0); /* Fond blanc transparent au départ */ z-index: 1; /* Assure que l'overlay est au-dessus du reste du contenu */ opacity: 0; /* Opacité à 0 au départ */ pointer-events: none; /* Désactive les interactions avec l'overlay par défaut */ transition: opacity 2s, background-color 2s; /* Animation de l'opacité et de la couleur de fond */ } .overlay.active { background-color: @text; /* Fond blanc avec opacité */ opacity: 1; /* Opacité à 1 lorsqu'activé */ pointer-events: auto; /* Active les interactions avec l'overlay */ } nav { display: none; position: fixed; top: 50%; left: 50%; text-align: center; padding: 20px; z-index: 2; /* Assure que le menu est au-dessus de l'overlay */ } nav.active { width: 100%; display: block; opacity: 1; transform: translate(-50%, -50%) scale(1); /* Fin de l'échelle à 1 */ ul { list-style-type: none; padding: 0; li { transition: transform 2s; /* Ajoutez la transition à chaque élément li */ a { color:#1b2735 ; text-decoration: none; &:hover{ cursor: crosshair; } } } li:not(.submenu) , p { margin: 10px 0; } color:#1b2735 ; } } .jeuxLink { margin-bottom: 4px; &:hover{ cursor: crosshair; } } .submenu { opacity: 0; margin-left: 51%; margin-top: 8px; margin-bottom: 8px; text-align: left; &.show { opacity: 1; } } /****************** ******************/ /****************** Contenu ******************/ /****************** titres ******************/ h1,h2 { text-align: center; } h1 { font-size: 2em; } /****************** arborescence ******************/ main { width: 80vw; margin-left: 10vw; opacity: 0; transition: opacity 1s ease; } section { height: 100vh; opacity: 0; transition: opacity 1s ease; display: flex; flex-direction: column; justify-content: center; align-items: center; overflow: hidden; &.show { opacity: 1; } } /****************** ******************/ .centered{ display: flex; flex-direction: column; align-items: center; } /****************** Index ******************/ /****************** chargement ******************/ #loading-screen { position: fixed; top: 0; left: 0; width: 100%; height: 100%; background-color: @primary; display: flex; justify-content: center; align-items: center; z-index: 9999; } #img_intro { max-width: 100%; max-height: 100%; z-index: 99999; } .loader { width: 0; height: 4.8px; display: inline-block; position: fixed; top: calc(50% + 12.5vh); left: calc(50% - 12.5vh) ; background: @text; box-shadow: 0 0 10px rgba(255, 255, 255, 0.5); opacity: 0; box-sizing: border-box; animation: animFw 5s linear infinite; transition: opacity 2.5s ease; /* Transition pour l'opacité */ } .loader::after, .loader::before { content: ''; width: 10px; height: 1px; background: @text; position: absolute; top: 9px; right: -2px; opacity: 0; transform: rotate(-45deg) translateX(0px); box-sizing: border-box; animation: coli1 0.3s linear 1; } .loader::before { top: -4px; transform: rotate(45deg); animation: coli2 0.3s linear infinite; } @keyframes animFw { 0% { width: 0; } 100% { width: 25vh; } } @keyframes coli1 { 0% { transform: rotate(-45deg) translateX(0px); opacity: 0.7; } 100% { transform: rotate(-45deg) translateX(-45px); opacity: 0; } } @keyframes coli2 { 0% { transform: rotate(45deg) translateX(0px); opacity: 1; } 100% { transform: rotate(45deg) translateX(-45px); opacity: 0.7; } } #scroll-indicator { position: absolute; top: calc(100vh - 50px); } .fa-angle-double-down { font-size: 30px; color: @text; animation: bounce 1s infinite alternate; } @keyframes bounce { from { transform: translateY(0); } to { transform: translateY(10px); } } /****************** ******************/ .presentation { display: flex; flex-direction: column; justify-content: center; align-items: center; } table { text-align: center; } #job-title { transition: transform 1s ease-in-out; } @keyframes rotate-out { from { transform: rotateX(0deg); opacity: 1; } to { transform: rotateX(-90deg); opacity: 1; } } @keyframes rotate-in { from { transform: rotateX(90deg); opacity: 1; } to { transform: rotateX(0deg); opacity: 1; } } /****************** ******************/ /****************** Projet Portfolio ******************/ .filter-button.selected { border: white 2px solid; } .portfolio-container { height: 90vh; width: 80%; margin: 0 auto; } .filter-bar { text-align: center; margin-bottom: 20px; } .filter-button { padding: 10px 20px; margin: 5px; border: none; background-color: #333; color: white; cursor: crosshair; border-radius: 5px; } .filter-button:hover { background-color: #555; } .portfolio-grid { max-height: 70%; display: flex; flex-wrap: wrap; gap: 20px; justify-content: center; overflow-y: scroll; padding-bottom:100px; a{ text-decoration: none; } } .portfolio-div { background-color: #f0f0f0; display: flex; align-items: center; justify-content: center; text-align: center; border-radius: 10px; background-size: contain; background-repeat: no-repeat; background-position: 50% 50%; color:@primary; h3{ opacity: 0; } &:hover{ h3 { border-radius: 10px; display: flex; justify-content: center; align-items: center; opacity: 1; background-color: rgba(255, 255, 255, 0.85); width: 100%; height: 100%; } } } @media (max-width: 768px) { .portfolio-div { width: 20vh; height: 20vh; } } @media (min-width: 769px) { .portfolio-div { width: 40vh; height: 40vh; } } /****************** Image projet proflio ******************/ .mm { background-image: url(../images/MM_flou.webp); } .loto-carsix { background-image: url(../images/affiche_carsix_loto_flouté.webp); } .billeterie { background-image: url(../images/MCD_BDD_NissRom.JPG); } .download-mm { background-image: url(../images/Affiche_100_dl.webp); } .film-noir { background-image: url(../images/locop_time.webp); } .task-me { background-image: url(../images/task-me.png); } .interview-loisir{ background-image: url(../images/Interview.png); } /****************** Image projet Portfolio ******************/ /****************** Pageprojet Portfolio ******************/ @media (max-width: 768px) { } @media (min-width: 769px) { .page-projet{ display: flex; margin-top: 100px; } .explication-projet { width: 60vw; margin-left: 10vw; margin-right: 10vw; } aside { position: fixed; right: 0; height: calc(100% - 200px); width: 20vw; background-color: rgba(255, 255, 255, 0.5); text-align: center; } .main-projet { width: 100%; margin: 0; } } .gallery { display: flex; flex-wrap: wrap; } .image-container { background-position: 50% 50%; background-size: cover; background-repeat: no-repeat; flex-grow: 1; margin: 10px; width: 15vw; min-width: 150px; } .image-container:nth-child(odd) { height: 10vw; } .image-container:nth-child(even) { height: 15vw; margin-top: -15px; } /****************** A propos ******************/ @media (max-width: 999px) { .profile-photo { min-height: 200px; height: 50%; } } @media (max-width: 600px) { .profile-photo { min-height: 150px; height: 25%; } } @media (min-width: 1000px) { .profile-photo { min-width: 200px; width: 50%; } } .about-container{ height: 80vh; margin-top: 10vh; display: flex; flex-direction: column; justify-content: space-between; } .about-div { display: flex; justify-content: space-around; gap: 24px; > * { width: 50%; display: flex; justify-content: center; text-align: center; align-items: center; word-break: break-word; } } .profile-photo { aspect-ratio: 1 / 1; border-radius: 50%; } /****************** Contact ******************/ .logo-reseaux { width: 48px; height: 48px; } #contact { ul { list-style-type: none; } } .textFormulaire { display: flex; flex-direction: column; align-items: center; width: 70%; text-align: center; } #contactForm { display: flex; flex-direction: column; gap: 24px; max-width: 70%; width: 70%; min-width: 70%; } #comment { max-width: 100%; width: 100%; min-width: 100%; } textarea,input:not([type="submit"]):not([type="radio"]):not([type="number"]) { width: 100%; max-width: 100%; min-width: 25vw; } input[type='radio']{ width: 25px; } textarea,input { background-color: @text; min-height: 3vh; max-height: 25vh; color: @primary; border: none; border-radius: 5px; } .topcontact { display: flex; justify-content: space-between; width: 100%; align-items: flex-start } .topcontact div { width: 100%; } .topcontact div:first-of-type { margin-right: 24px; } .error { color: red; } #btnFormulaire { margin: auto; width: 100px; } #typewriter::after { content: "_"; /* Ajoutez un curseur clignotant à la fin du texte */ animation: blink-caret 0.75s infinite; /* Animation du curseur clignotant */ color: @text; /* Couleur initiale du curseur */ } @keyframes blink-caret { from, to { opacity: 0; /* Rend le curseur transparent */ } 50% { opacity: 1; /* Rend le curseur visible */ } } .txtContact{ display: flex; } /****************** footer ******************/ footer { height: 100px; margin-top: -100px; div { display: flex; justify-content: space-around; align-items: flex-end; } } /****************** jeux ******************/ /****************** pendu ******************/ #saisieLettre{ font-size: xxx-large; margin: 24px; min-width: 50px !important; width: 50px !important; text-align: center; } #imagePendu { height: 25%; width: auto; } .pendu { height: 100vh; display: flex; flex-direction: column; align-items: center; gap: 10px; } /****************** memory ******************/ .memory-game { display: flex; flex-wrap: wrap; /* Permet aux cartes de revenir à la ligne si elles dépassent la largeur disponible */ justify-content: center; align-items: center; max-width: 80vw; margin: auto; /* Centre le conteneur sur la page */ } .cartes { display: flex; flex-wrap: wrap; max-width: 80vw; } .carte { width: 100px; height: 150px; margin: 10px; border: 2px solid black; background-color: lightgray; background-size: cover; background-position: 50% 50%; cursor: pointer; transition: transform 0.5s ease; position: relative; /* Assure que les pseudo-éléments sont positionnés correctement par rapport à la carte */ } .carte::before { content: ''; position: absolute; top: 0; left: 0; width: 100%; height: 100%; background-color: rgba(84, 84, 84, 1); opacity: 1; /* Définit l'opacité par défaut à 1 */ transition: opacity 0.3s ease; } .carte.retourne::before { opacity: 0; /* Réduit l'opacité lorsque la carte est retournée */ } .carte.retourne { transform: rotateY(180deg); } .carte.correspond { opacity: 0; } #essais-compteur { font-size: 1.5em; margin-top: 20px; text-align: center; color: #fff; /* Ajustez la couleur selon vos besoins */ } /****************** tir ******************/ #jeuTir { margin: 2.5vh 2.5vw 2.5vh 2.5vw; } #pseudo { width: 200px; } .bouttonJeu , #recommencer { background-color: @text; color: @primary; font-size: 16px; font-weight: bold; padding: 15px 20px; border-radius: 2em; cursor: pointer; transition: 0.1s ease; border-width: 0; box-shadow: 1px 5px 0 0 @text-shadow ; } .bouttonJeu:hover , #recommencer:hover { transform: translateY(-4px); box-shadow: 1px 9px 0 0 @text-shadow ; } .bouttonJeu:active , #recommencer:active { transform: translateY(4px); box-shadow: 0px 0px 0 0 @text-shadow ; } .jeu_de_tir { overflow: hidden; #commencerBtn{ position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%); } } .podium { display: flex; justify-content: center; align-items: flex-end; color:black; .first { background: gold; height: 200px; order: 1; } .second { background: silver; height: 175px; order: 0; } .third { background: sienna; height: 150px; order: 2; } } .podium div { width: 30%; border-radius: 10px; display: flex; justify-content: center; align-items: center; font-size: 20px; font-weight: bold; flex-direction: column; p { margin: 8px; word-break: break-all; } } .resultats7 { display: flex; flex-direction: column; align-items: center; } /****************** ******************/ /****************** Devinette ******************/ .choixDevine { display: flex; flex-direction: row-reverse; align-items: center; margin: 2vh; * { font-size: 200%; } } /****************** Alertes ******************/ .alert { padding: 20px; background-color: @primary; color: white; opacity: 1; margin-left: 20px; position: fixed; top: 20px; right: 20px; z-index: 1000; display: none; } .alert.success {background-color: #4CAF50;} /* Green */ .alert.error {background-color: #f44336;} /* Red */ .closebtn { margin-left: 15px; color: white; font-weight: bold; float: right; font-size: 22px; line-height: 20px; cursor: crosshair; transition: 0.3s; } .closebtn:hover { scale: (2); rotate: (180deg); }