You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

1061 lines
22 KiB

/********************************************************************************/
/*General css*/
a {
color: #0e6ab9;
text-decoration: none;
}
section {
width: 80%;
margin-bottom: 40px;
}
aside {
float: right;
width: 20%;
height: 400px;
}
#profile {
border-radius : 50%;
overflow: hidden; /* Ensures content fits the circular shape */
width: 350px; /* Set a fixed width */
height: 350px; /* Set the height equal to the width */
object-fit: cover; /* Ensures the image scales correctly within the circle */
border: 3px solid #fff; /* Dark line around the profile */
}
@keyframes spin {
0% {
transform: rotate(0deg);
}
100% {
transform: rotate(360deg);
}
}
/* Initial spin: 2 seconds per rotation */
#profile:hover {
animation: spin 2s linear infinite;
transition: animation-duration 0.2s linear;
transform-origin: center center;
}
table, td, th {
border: solid;
border-collapse: collapse;
}
body.dark-mode {
font-family: Arial, sans-serif;
background-color: #323438;
color: #f1f1f1;
}
/* Light Mode Styles */
body.light-mode {
background-color: #fcf0fa; /* Soft white background */
color: #333333; /* Dark gray text for better readability */
font-family: Arial, sans-serif;
}
/* Light mode headings */
body.light-mode h1,
body.light-mode h2:not(.exclude),
body.light-mode h3:not(.exclude) {
color: #222222; /* Slightly darker headings */
}
body.light-mode p {
color: #444444;
}
/* Light mode navbar */
body.light-mode .navbar {
background: linear-gradient(135deg, #e0eaff, #d1eaff); /* Light blue gradient */
box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1); /* Subtle shadow */
}
body.light-mode .navbar-list a {
color: #0056b3; /* Deep blue for links */
}
body.light-mode .navbar-list a:hover {
background-color: #f1f5ff; /* Pale blue hover */
color: #004080; /* Darker blue */
}
/* Dropdown content for light mode */
body.light-mode .dropdown-content {
background-color: #ffffff; /* Clean white */
border: 1px solid #dcdcdc; /* Subtle border */
}
body.light-mode .dropdown-content a {
color: #0056b3;
}
body.light-mode .dropdown-content a:hover {
background-color: #f1f5ff;
color: #004080;
}
/* Light mode for gallery */
body.light-mode .gallery a {
border-color: #e0e0e0;
}
body.light-mode .gallery a:hover {
border-color: #004080; /* Highlight border */
}
body.light-mode .gallery img {
border: 2px solid #e0eaff;
}
/* Light mode table */
body.light-mode table,
body.light-mode td,
body.light-mode th {
border: 1px solid #dcdcdc;
color: #333333;
background-color: #ffffff;
}
/* Light mode timeline */
body.light-mode .timeline::after {
background-color: #cccccc;
}
body.light-mode .container::after {
background-color: #ffffff;
border-color: #ffc107; /* Golden circles */
}
body.light-mode .content {
background-color: #ffffff;
color: #333333;
box-shadow: 0px 4px 6px rgba(0, 0, 0, 0.1);
}
/* Light mode switch styling */
body.light-mode .slider {
--background: #cce4ff; /* Light blue slider */
background-color: var(--background);
}
body.light-mode .slider:before {
box-shadow: inset 8px -4px 0px 0px #ffe066; /* Light yellow shadow */
background: var(--background);
}
body.light-mode input:checked + .slider {
background-color: #99d4ff; /* Slightly darker blue */
}
body.light-mode input:checked + .slider:before {
box-shadow: inset 15px -4px 0px 15px #ffc107; /* Golden shadow when active */
}
/* Footer Light mode */
body.light-mode footer {
background-color: #f1f1f1;
color: #333333;
border-top: 1px solid #dcdcdc;
text-align: center;
padding: 10px;
}
body.light-mode #profile {
border-radius: 50%;
/* Keeps the element circular */
overflow: hidden; /* Ensures content fits the circular shape */
width: 350px; /* Set a fixed width */
height: 350px; /* Set the height equal to the width */
object-fit: cover; /* Ensures the image scales correctly within the circle */
border: 3px solid #333333; /* Dark line around the profile */
}
body.light-mode .example-2 .icon-content a {
position: relative;
overflow: hidden;
display: flex;
justify-content: center;
align-items: center;
width: 50px;
height: 50px;
border-radius: 50%;
color: #fff;
background-color: #444;
transition: all 0.3s ease-in-out;
}
/* Light Mode Contact Form */
body.light-mode .bg-gray-800 {
background-color: #f9f9f9; /* Light gray background */
color: #333333; /* Dark gray text */
}
body.light-mode .bg-gray-700 {
background-color: #e6e6e6; /* Light input fields */
}
body.light-mode .text-white {
color: #333333; /* Dark text for labels and headings */
}
body.light-mode .focus\:ring-yellow-300:focus {
--tw-ring-color: #ffd966; /* Light yellow focus ring */
}
body.light-mode .w-full.bg-yellow-300 {
background-color: #ffeb99; /* Lighter yellow button */
color: #444444; /* Darker text */
}
body.light-mode .w-full.bg-yellow-300:hover {
background-color: #ffdd66; /* Slightly darker hover effect */
}
body.light-mode .timeline::after {
background-color: #d1d1d1; /* Light gray vertical line */
}
body.light-mode .content{
background-color: #4444;
}
body.light-mode .left::before {
border-color: transparent transparent transparent #cccccc; /* Light gray for left triangle */
}
body.light-mode .right::before {
border-color: transparent #cccccc transparent transparent; /* Light gray for right triangle */
}
h1, h2:not(.exclude), h3:not(.exclude) {
color: #ffffff;
}
p {
font-size: 1.1em;
line-height: 1.6;
}
figure {
text-align: center;
margin: 50px auto;
}
figure img {
max-width: 100%;
height: auto;
border: 3px solid #333;
}
figcaption {
font-size: 1.2em;
margin-top: 10px;
}
/********************************************************************************/
/*Navbar css*/
/* Style général de la navbar */
.navbar {
background: linear-gradient(135deg, #0e6ab9, #4782b6);
padding: 15px;
display: flex;
justify-content: center;
position: sticky;
top: 0;
z-index: 1000;
box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1);
}
.navbar-list {
list-style-type: none;
margin: 0;
padding: 0;
display: flex;
gap: 20px;
}
.navbar-list li {
position: relative; /* Permet à l'élément dropdown de se positionner par rapport au parent */
}
.navbar-list a {
color: white;
text-decoration: none;
font-size: 1.2em;
padding: 10px 15px;
border-radius: 5px;
transition: background-color 0.3s ease;
}
.navbar-list a:hover {
background-color: #fff;
color: #0e6ab9;
}
/* Style pour le menu déroulant */
/* Espacement entre les éléments du menu déroulant */
.dropdown-content li {
display: block;
margin: 10px 0; /* Ajoute de l'espace vertical entre les éléments */
}
/* Ajuster la largeur du menu déroulant à celle de "Gallerie" */
.dropdown-content {
display: none;
position: absolute;
background-color: #fff;
min-width: 100%; /* S'assure que la largeur correspond à celle du parent */
border-radius: 8px;
box-shadow: 0px 8px 16px rgba(0, 0, 0, 0.3);
padding: 12px 0;
z-index: 10;
top: 130%; /* Pour le placer juste en dessous de l'élément parent */
left: 0; /* Aligne le menu déroulant avec le parent */
}
.dropdown-content a {
padding: 10px 20px;
color: #0e6ab9;
text-decoration: none;
font-size: 1em;
transition: background-color 0.3s ease;
}
.dropdown-content a:hover {
background-color: #0e6ab9;
color: #fff;
}
/* Montre le menu dropdown au survol */
.dropdown:hover .dropdown-content {
display: block;
opacity: 0;
animation: dropdownFade 0.7s forwards ease-in-out;
}
/* Ajout d'une animation douce */
@keyframes dropdownFade {
from {
opacity: 0;
transform: translateY(-10px);
}
to {
opacity: 1;
transform: translateY(0);
}
}
/********************************************************************************/
/* Css for the gallery (general) */
.title_gallery {
font-size: 2rem;
color: #f0f0f0;
text-transform: uppercase;
letter-spacing: 2px;
text-align: center;
margin-bottom: 20px;
text-shadow: 2px 2px 5px rgba(0, 0, 0, 0.7);
}
.title_gallery::after {
content: '';
display: block;
width: 80px;
height: 4px;
background-color: #f0f0f0;
margin: 10px auto 0;
}
.title_gallery {
background: rgba(184, 165, 165, 0.3);
padding: 10px 20px;
border-radius: 5px;
}
.gallery {
display: flex;
flex-wrap: wrap;
justify-content: center;
gap: 15px;
padding: 20px;
}
.gallery_video {
display: flex;
justify-content: space-around;
flex-wrap: wrap;
position: relative;
}
.gallery a {
display: inline-block;
border: 2px solid #ccc;
padding: 5px;
transition: transform 0.3s ease, border-color 0.3s ease;
}
.gallery a:hover {
transform: scale(1.1);
border-color: #333;
}
.gallery img {
display: block;
width: 150px;
height: 100px;
object-fit: cover;
}
.video-item {
width: 400px;
height: 240px;
margin: 10px;
overflow: hidden;
position: relative;
z-index: 1;
}
.video-item video {
width: 100%;
height: 100%;
transition: transform 0.3s ease, z-index 0.3s ease;
cursor: pointer;
position: relative;
z-index: 1;
}
.video-item:hover video {
width: 1200px;
height: 700px;
position: fixed;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
z-index: 10;
box-shadow: 0px 0px 20px rgba(0, 0, 0, 0.5);
}
.video-item:not(:hover) {
z-index: 0;
}
.gallery_video figcaption {
text-align: left;
color: white;
}
#video_categorie {
text-align: center;
margin-top: 20px;
}
/********************************************************************************/
/* Css for the timeline (general) */
#titre_cursus {
text-align: center;
margin-top: 20px;
}
* {
box-sizing: border-box;
}
/* Set a background color */
body {
background-color: #474e5d;
font-family: Helvetica, sans-serif;
}
/* The actual timeline (the vertical ruler) */
.timeline {
position: relative;
max-width: 1200px;
margin: 0 auto;
}
/* The actual timeline (the vertical ruler) */
.timeline::after {
content: '';
position: absolute;
width: 6px;
background-color: white;
top: 0;
bottom: 0;
left: 50%;
margin-left: -3px;
}
/* Container around content */
.container {
padding: 10px 40px;
position: relative;
background-color: inherit;
width: 50%;
}
/* The circles on the timeline */
/* Place the container to the left */
.left {
left: 0;
}
/* Place the container to the right */
.right {
left: 50%;
}
/* Add arrows to the left container (pointing right) */
.left::before {
content: " ";
height: 0;
position: absolute;
top: 22px;
width: 0;
z-index: 1;
right: 30px;
border: medium solid white;
border-width: 10px 0 10px 10px;
border-color: transparent transparent transparent white;
}
/* Add arrows to the right container (pointing left) */
.right::before {
content: " ";
height: 0;
position: absolute;
top: 22px;
width: 0;
z-index: 1;
left: 30px;
border: medium solid white;
border-width: 10px 10px 10px 0;
border-color: transparent white transparent transparent;
}
/* Fix the circle for containers on the right side */
.right::after {
left: -16px;
}
/* The actual content */
.content {
padding: 20px 30px;
background-color: white;
position: relative;
border-radius: 6px;
color: #333;
}
/* Media queries - Responsive timeline on screens less than 600px wide */
@media screen and (max-width: 600px) {
/* Place the timelime to the left */
.timeline::after {
left: 31px;
}
/* Full-width containers */
.container {
width: 100%;
padding-left: 70px;
padding-right: 25px;
}
/* Make sure that all arrows are pointing leftwards */
.container::before {
left: 60px;
border: medium solid white;
border-width: 10px 10px 10px 0;
border-color: transparent white transparent transparent;
}
/* Make sure all circles are at the same spot */
.left::after, .right::after {
left: 15px;
}
/* Make all right containers behave like the left ones */
.right {
left: 0%;
}
}
/* additional requests */
#planning{
font-family: 'Roboto', Arial, sans-serif;
}
/********************************************************************************/
/* Dark mode switch */
/* The switch - the box around the slider */
.switch {
font-size: 17px;
position: relative;
display: inline-block;
width: 3.5em;
height: 2em;
}
/* Hide default HTML checkbox */
.switch input {
opacity: 0;
width: 0;
height: 0;
}
/* The slider */
.slider {
--background: #28096b;
position: absolute;
cursor: pointer;
top: 0;
left: 0;
right: 0;
bottom: 0;
background-color: var(--background);
transition: .5s;
border-radius: 30px;
}
.slider:before {
position: absolute;
content: "";
height: 1.4em;
width: 1.4em;
border-radius: 50%;
left: 10%;
bottom: 15%;
box-shadow: inset 8px -4px 0px 0px #fff000;
background: var(--background);
transition: .5s;
}
input:checked + .slider {
background-color: #522ba7;
}
input:checked + .slider:before {
transform: translateX(100%);
box-shadow: inset 15px -4px 0px 15px #fff000;
}
/*******************************************************************************/
/* Social networks icons */
ul {
list-style: none;
}
.example-2 {
display: flex;
justify-content: center;
align-items: center;
flex-direction: column;
}
.example-2 .icon-content {
margin: 0 10px;
position: relative;
padding: 0.5rem;
}
.example-2 .icon-content .tooltip {
position: absolute;
top: 100%;
right: 110%;
transform: translateY(200%);
color: #fff;
padding: 6px 10px;
border-radius: 5px;
opacity: 0;
visibility: hidden;
font-size: 14px;
transition: all 0.3s ease;
}
.example-2 .icon-content:hover .tooltip {
opacity: 1;
visibility: visible;
top: -50px;
}
.example-2 .icon-content a {
position: relative;
overflow: hidden;
display: flex;
justify-content: center;
align-items: center;
width: 50px;
height: 50px;
border-radius: 50%;
color: #444;
background-color: #fff;
transition: all 0.3s ease-in-out;
}
.example-2 .icon-content a:hover {
box-shadow: 3px 2px 45px 0px rgb(0 0 0 / 12%);
}
.example-2 .icon-content a svg {
position: relative;
z-index: 1;
width: 30px;
height: 30px;
}
.example-2 .icon-content a:hover {
color: white;
}
.example-2 .icon-content a .filled {
position: absolute;
top: auto;
bottom: 0;
left: 0;
width: 100%;
height: 0;
background-color: #000;
transition: all 0.3s ease-in-out;
}
.example-2 .icon-content a:hover .filled {
height: 100%;
}
.example-2 .icon-content a[data-social="linkedin"] .filled,
.example-2 .icon-content a[data-social="linkedin"] ~ .tooltip {
background-color: #0274b3;
}
.example-2 .icon-content a[data-social="github"] .filled,
.example-2 .icon-content a[data-social="github"] ~ .tooltip {
background-color: #24262a;
}
.example-2 .icon-content a[data-social="instagram"] .filled,
.example-2 .icon-content a[data-social="instagram"] ~ .tooltip {
background: linear-gradient(
45deg,
#405de6,
#5b51db,
#b33ab4,
#c135b4,
#e1306c,
#fd1f1f
);
}
.example-2 .icon-content a[data-social="youtube"] .filled,
.example-2 .icon-content a[data-social="youtube"] ~ .tooltip {
background-color: #ff0000;
}
/* Gallerie projet */
.article-wrapper {
width: 250px;
-webkit-transition: 0.15s all ease-in-out;
transition: 0.15s all ease-in-out;
border-radius: 10px;
padding: 5px;
border: 4px solid transparent;
cursor: pointer;
background-color: white;
}
.article-wrapper:hover {
-webkit-box-shadow: 10px 10px 0 #4e84ff, 20px 20px 0 #4444bd;
box-shadow: 10px 10px 0 #4e84ff, 20px 20px 0 #4444bd;
border-color: #0578c5;
-webkit-transform: translate(-20px, -20px);
-ms-transform: translate(-20px, -20px);
transform: translate(-20px, -20px);
}
.article-wrapper:active {
-webkit-box-shadow: none;
box-shadow: none;
-webkit-transform: translate(0, 0);
-ms-transform: translate(0, 0);
transform: translate(0, 0);
}
.types {
gap: 10px;
display: -webkit-box;
display: -ms-flexbox;
display: flex;
place-content: flex-start;
}
.rounded-lg {
/* class tailwind */
border-radius: 10px;
}
.article-wrapper:hover .project-hover {
-webkit-transform: rotate(-45deg);
-ms-transform: rotate(-45deg);
transform: rotate(-45deg);
background-color: #a6c2f0;
}
.project-info {
padding-top: 20px;
padding: 10px;
display: -webkit-box;
display: -ms-flexbox;
display: flex;
-webkit-box-orient: vertical;
-webkit-box-direction: normal;
-ms-flex-direction: column;
flex-direction: column;
gap: 20px;
}
.project-title {
font-size: 2em;
margin: 0;
font-weight: 600;
/* depend de la font */
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
color: black;
}
.flex-pr {
display: -webkit-box;
display: -ms-flexbox;
display: flex;
-webkit-box-pack: justify;
-ms-flex-pack: justify;
justify-content: space-between;
-webkit-box-align: center;
-ms-flex-align: center;
align-items: center;
}
.project-type {
background: #b2b2fd;
color: #1a41cd;
font-weight: bold;
padding: 0.3em 0.7em;
border-radius: 15px;
font-size: 12px;
letter-spacing: -0.6px
}
.project-hover {
border-radius: 50%;
width: 50px;
height: 50px;
padding: 9px;
-webkit-transition: all 0.3s ease;
transition: all 0.3s ease;
}
.container-project {
width: 100%;
height: 170px;
background: gray;
}
/* Dark Mode for Project Gallery */
body.light-mode .article-wrapper {
background-color: #9c8d8d;
border-color: #555;
}
body.light-mode .article-wrapper:hover {
box-shadow: 10px 10px 0 #6a5acd, 20px 20px 0 #483d8b;
border-color: #6a5acd;
}
body.light-mode .project-info {
color: #f1f1f1;
}
body.light-mode .project-title {
color: #fff;
}
body.light-mode .project-hover {
background-color: #444;
}
body.light-mode .project-type {
background: #555;
color: #bbb;
}
/* Click effect */
.article-wrapper.clicked {
transform: scale(0.9);
opacity: 0;
transition: transform 0.6s ease, opacity 0.6s ease;
}
/* Smooth page fade-in */
body {
opacity: 1;
transition: opacity 0.3s ease-in-out;
}
body.fade-out {
opacity: 0;
}
/* General Styling for Project Page */
.project-header {
text-align: center;
margin: 40px auto;
animation: fadeIn 0.8s ease-in-out;
}
.project-subtitle {
font-size: 1.2em;
color: #aaa;
margin-bottom: 20px;
}
.project-content, .project-gallery, .project-tech {
width: 80%;
margin: 20px auto;
text-align: center;
animation: slideUp 0.8s ease-in-out;
}
/* Center and style images */
.project-gallery img {
width: 100%;
max-width: 600px;
height: auto;
border-radius: 10px;
transition: transform 0.3s ease, box-shadow 0.3s ease;
cursor: pointer;
}
.project-gallery img:hover {
transform: scale(1.1);
box-shadow: 0 4px 10px rgba(255, 255, 255, 0.3);
}
.tech-icons {
display: flex;
gap: 15px;
justify-content: center;
flex-wrap: wrap;
padding: 20px;
}
/* Language/Tech Boxes */
.tech-box {
display: flex;
align-items: center;
justify-content: center;
gap: 10px;
padding: 10px 15px;
border-radius: 10px;
font-weight: bold;
color: white;
font-size: 1.1em;
transition: transform 0.3s ease, box-shadow 0.3s ease;
border: 2px solid rgba(255, 255, 255, 0.3);
}
.tech-box img {
width: 35px;
height: 35px;
object-fit: contain;
background: transparent;
border-radius: 5px;
padding: 2px;
}
.tech-box:hover {
transform: scale(1.1);
box-shadow: 0 4px 10px rgba(255, 255, 255, 0.5);
}
/* Colors for Technologies */
.html-box { background: #E34F26; border-color: #b3391d; }
.css-box { background: #1572B6; border-color: #0d5ea0; }
.js-box { background: #F7DF1E; color: #333; border-color: #c2b000; }
.react-box { background: #61DAFB; color: #000; border-color: #48bcd1; }
.nodejs-box { background: #83CD29; border-color: #639b1e; }
.python-box { background: #3776AB; border-color: #255680; }
.sql-box { background: #4479A1; border-color: #325d78; }
.php-box { background: #777BB3; border-color: #5a5f9e; }
.java-box { background: #ED8B00; border-color: #b35d00; }
.csharp-box { background: #00599C; border-color: #003d6a; }
.xaml-box { background: #FFC107; color: #333; border-color: #c2b000; }
.json-box { background: #E34F26; border-color: #b3391d; }
/* Animations */
@keyframes fadeIn {
from { opacity: 0; transform: translateY(-10px); }
to { opacity: 1; transform: translateY(0); }
}
@keyframes slideUp {
from { opacity: 0; transform: translateY(20px); }
to { opacity: 1; transform: translateY(0); }
}