<!doctype html>
<html lang="fr">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Rayan Abbes - CV Technicien Système et Réseau</title>
<meta name="description" content="CV de Rayan Abbes, Technicien Système et Réseau en alternance. Spécialisé en réseaux informatiques, support technique et systèmes d'exploitation.">
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-QWTKZyjpPEjISv5WaRU9OFeRpok6YctnYmDr5pNlyT2bRjXh0JMhjY6hW+ALEwIH" crossorigin="anonymous">
<style>
:root {
--primary-green: #2d6a4f;
--secondary-green: #40916c;
--light-green: #52b788;
--accent-green: #74c69d;
--matrix-green: #00ff41;
--dark-bg: #000000;
}
* {
margin: 0;
padding: 0;
box-sizing: border-box;
}
body {
min-height: 100vh;
display: flex;
flex-direction: column;
background: var(--dark-bg);
font-size: 16px;
font-family: system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;
position: relative;
overflow-x: hidden;
}
/* Canvas Matrix en arrière-plan - BIEN VISIBLE */
#matrixCanvas {
position: fixed;
top: 0;
left: 0;
width: 100%;
height: 100%;
z-index: 0;
opacity: 0.7;
}
main, header, footer {
position: relative;
z-index: 1;
}
main {
flex: 1 0 auto;
}
footer {
flex-shrink: 0;
}
/* Animations optimisées */
@keyframes fadeInUp {
from {
opacity: 0;
transform: translateY(20px);
}
to {
opacity: 1;
transform: translateY(0);
}
}
@keyframes slideIn {
from {
opacity: 0;
transform: translateX(-15px);
}
to {
opacity: 1;
transform: translateX(0);
}
}
/* Header - Fond opaque pour lisibilité */
header {
animation: fadeInUp 0.6s ease-out;
background: rgba(0, 0, 0, 0.95);
border-bottom: 3px solid var(--matrix-green);
box-shadow: 0 4px 20px rgba(0, 255, 65, 0.4);
}
header h1 {
font-weight: 800;
color: var(--matrix-green);
text-shadow:
0 0 15px var(--matrix-green),
0 0 30px var(--matrix-green),
0 0 45px rgba(0, 255, 65, 0.5),
2px 2px 4px rgba(0, 0, 0, 0.8);
letter-spacing: 2px;
}
header .lead {
color: #ffffff;
font-weight: 600;
text-shadow:
0 0 10px rgba(0, 255, 65, 0.8),
2px 2px 8px rgba(0, 0, 0, 0.9);
}
/* Sections - Fond foncé opaque pour contraste */
section {
animation: fadeInUp 0.6s ease-out both;
}
section:nth-child(1) { animation-delay: 0.1s; }
section:nth-child(2) { animation-delay: 0.2s; }
section:nth-child(3) { animation-delay: 0.3s; }
section:nth-child(4) { animation-delay: 0.4s; }
.section-card {
background: rgba(0, 0, 0, 0.92);
border: 2px solid rgba(0, 255, 65, 0.5);
border-radius: 15px;
padding: 2rem;
margin-bottom: 2rem;
transition: all 0.3s ease;
box-shadow:
0 4px 15px rgba(0, 0, 0, 0.8),
0 0 25px rgba(0, 255, 65, 0.2);
}
.section-card:hover {
transform: translateY(-5px);
border-color: var(--matrix-green);
box-shadow:
0 8px 30px rgba(0, 0, 0, 0.9),
0 0 40px rgba(0, 255, 65, 0.4),
inset 0 0 20px rgba(0, 255, 65, 0.1);
}
/* Titres */
.section-title {
position: relative;
display: inline-block;
color: var(--matrix-green);
font-weight: 700;
margin-bottom: 1.5rem;
padding-bottom: 0.5rem;
text-transform: uppercase;
letter-spacing: 2px;
text-shadow:
0 0 15px var(--matrix-green),
0 0 30px rgba(0, 255, 65, 0.6);
}
.section-title::after {
content: '';
position: absolute;
bottom: 0;
left: 0;
width: 50px;
height: 3px;
background: var(--matrix-green);
box-shadow: 0 0 10px var(--matrix-green);
transition: width 0.4s ease;
}
.section-card:hover .section-title::after {
width: 100%;
}
/* Articles */
article {
background: rgba(10, 25, 41, 0.8);
border-left: 4px solid var(--light-green);
padding: 1.5rem;
margin-bottom: 1.5rem;
border-radius: 8px;
transition: all 0.25s ease;
}
article:hover {
transform: translateX(8px);
border-left-color: var(--matrix-green);
background: rgba(0, 50, 30, 0.7);
box-shadow: -5px 5px 20px rgba(0, 255, 65, 0.2);
}
article h3 {
color: #ffffff;
font-size: 1.1rem;
font-weight: 600;
text-shadow: 0 0 8px rgba(0, 255, 65, 0.4);
}
/* Compétences */
.skill-item {
margin-bottom: 1.5rem;
animation: slideIn 0.5s ease-out both;
}
.skill-item:nth-child(1) { animation-delay: 0.2s; }
.skill-item:nth-child(2) { animation-delay: 0.3s; }
.skill-item:nth-child(3) { animation-delay: 0.4s; }
.skill-item:nth-child(4) { animation-delay: 0.5s; }
.skill-label {
color: var(--matrix-green);
font-weight: 600;
margin-bottom: 0.5rem;
font-size: 1rem;
text-transform: uppercase;
letter-spacing: 1px;
text-shadow:
0 0 10px var(--matrix-green),
0 0 20px rgba(0, 255, 65, 0.5);
}
.progress {
height: 28px;
background-color: rgba(0, 0, 0, 0.9);
border-radius: 50px;
overflow: hidden;
box-shadow:
inset 0 2px 8px rgba(0, 0, 0, 0.9),
0 0 15px rgba(0, 255, 65, 0.3);
border: 1px solid rgba(0, 255, 65, 0.5);
}
.progress-bar {
background: linear-gradient(90deg,
#004d00 0%,
var(--primary-green) 25%,
var(--light-green) 50%,
var(--matrix-green) 100%);
font-weight: 700;
display: flex;
align-items: center;
justify-content: center;
transition: width 1.2s cubic-bezier(0.4, 0, 0.2, 1);
box-shadow:
0 0 20px rgba(0, 255, 65, 0.6),
inset 0 2px 5px rgba(255, 255, 255, 0.2);
text-shadow: 1px 1px 3px rgba(0, 0, 0, 0.8);
}
/* Listes */
ul {
list-style: none;
padding-left: 0;
}
ul li {
padding-left: 1.5rem;
position: relative;
margin-bottom: 0.5rem;
line-height: 1.6;
transition: transform 0.2s ease;
color: #ffffff;
text-shadow: 1px 1px 3px rgba(0, 0, 0, 0.8);
}
ul li::before {
content: '▸';
position: absolute;
left: 0;
color: var(--matrix-green);
font-weight: bold;
font-size: 1.2rem;
text-shadow: 0 0 8px var(--matrix-green);
}
ul li:hover {
transform: translateX(5px);
color: var(--accent-green);
}
.list-unstyled li::before {
content: '●';
font-size: 0.8rem;
top: 0.4rem;
}
/* Footer */
footer {
background: rgba(0, 0, 0, 0.95);
border-top: 3px solid var(--matrix-green);
box-shadow: 0 -4px 20px rgba(0, 255, 65, 0.4);
}
footer a {
color: var(--matrix-green);
text-decoration: none;
font-weight: 700;
padding: 0.6rem 1.8rem;
border: 2px solid var(--matrix-green);
border-radius: 25px;
transition: all 0.3s ease;
display: inline-block;
background: rgba(0, 0, 0, 0.8);
text-shadow: 0 0 10px var(--matrix-green);
text-transform: uppercase;
letter-spacing: 1px;
}
footer a:hover {
background-color: var(--matrix-green);
color: #000000;
transform: translateY(-3px);
box-shadow:
0 5px 20px rgba(0, 255, 65, 0.6),
0 0 30px var(--matrix-green);
text-shadow: none;
}
/* Accessibilité */
a:focus, button:focus {
outline: 3px solid var(--matrix-green);
outline-offset: 3px;
box-shadow: 0 0 15px var(--matrix-green);
}
.text-muted-custom {
color: rgba(255, 255, 255, 0.85) !important;
text-shadow: 1px 1px 3px rgba(0, 0, 0, 0.8);
}
/* Responsive */
@media (max-width: 768px) {
body {
font-size: 15px;
}
.section-card {
padding: 1.5rem;
}
header h1 {
font-size: 2rem;
}
#matrixCanvas {
opacity: 0.5;
}
}
/* Réduire animations pour performances */
@media (prefers-reduced-motion: reduce) {
*,
*::before,
*::after {
animation-duration: 0.01ms !important;
animation-iteration-count: 1 !important;
transition-duration: 0.01ms !important;
}
}
</style>
</head>
<body class="text-white">
<!-- Canvas Matrix Rain - BIEN VISIBLE -->
<canvas id="matrixCanvas"></canvas>
<!-- En-tête principal -->
<header class="py-5">
<div class="container text-center">
<h1 class="mb-3 display-4">RAYAN ABBES</h1>
<p class="lead fs-4">Technicien Système et Réseau en alternance</p>
</div>
</header>
<!-- Contenu principal -->
<main class="container py-5">
<!-- Informations personnelles -->
<section class="section-card">
<h2 class="section-title h4">Informations personnelles</h2>
<ul class="list-unstyled">
<li>Né le 13/07/2006</li>
<li>Français</li>
<li>Permis B</li>
<li>Véhicule personnel</li>
</ul>
</section>
<!-- Diplômes et Formations -->
<section class="section-card">
<h2 class="section-title h4">Diplômes et Formations</h2>
<article>
<h3 class="fw-bold">BAC PRO - Systèmes numériques - Option C : RISC</h3>
<p class="text-muted-custom mb-0">2024, LE MARAIS-SAINTE THÉRÈSE, Saint-Étienne</p>
</article>
<article>
<h3 class="fw-bold">Diplôme de SST (Sauveteur Secouriste du Travail)</h3>
<p class="text-muted-custom mb-0">Février 2023, LE MARAIS-SAINTE THÉRÈSE, Saint-Étienne</p>
</article>
<article>
<h3 class="fw-bold">Habilitation électrique B1V</h3>
<p class="text-muted-custom mb-0">2022, LE MARAIS-SAINTE THÉRÈSE, Saint-Étienne</p>
</article>
<article>
<h3 class="fw-bold">Brevet des collèges</h3>
<p class="text-muted-custom mb-0">2021, Collège Notre-Dame D'Espérance, Saint-Étienne</p>
</article>
</section>
<!-- Expériences professionnelles -->
<section class="section-card">
<h2 class="section-title h4">Expériences professionnelles</h2>
<article>
<h3 class="fw-bold">Alternance Technicien Système et Réseau</h3>
<p class="text-muted-custom">2025, DSIN, Sainte-Étienne</p>
</article>
<article>
<h3 class="fw-bold">Employé Commercial Polyvalent</h3>
<p class="text-muted-custom mb-2">2025, Auchan Saint-Étienne</p>
<ul>
<li>Mise en rayon, gestion de stock, réassort</li>
<li>Utilisation de systèmes informatiques internes</li>
<li>Travail en équipe, gestion de la relation client</li>
</ul>
</article>
<article>
<h3 class="fw-bold">Employé polyvalent</h3>
<p class="text-muted-custom mb-0">2025, Burger King Villars</p>
</article>
<article>
<h3 class="fw-bold">Stage Technicien informatique dentaire</h3>
<p class="text-muted-custom mb-2">2024, SIGMA NET SANTE, Saint-Étienne</p>
<ul>
<li>Assistance téléphonique aux clients pour l'installation</li>
<li>Diagnostic et résolution de problèmes logiciels</li>
<li>Conseil maintenance des équipements informatiques</li>
<li>Assemblage et emballage des équipements</li>
<li>Test et contrôle qualité avant expédition</li>
<li>Suivi des niveaux de stock</li>
<li>Installation physique des équipements et logiciels</li>
</ul>
</article>
<article>
<h3 class="fw-bold">Stage Vendeur, Réparateur</h3>
<p class="text-muted-custom mb-0">2024, GSM Store, Saint-Étienne</p>
</article>
</section>
<!-- Compétences -->
<section class="section-card">
<h2 class="section-title h4">Compétences</h2>
<div class="skill-item">
<div class="skill-label">Réseaux informatiques</div>
<div class="progress">
<div class="progress-bar progress-bar-striped progress-bar-animated"
role="progressbar"
style="width: 90%;"
aria-valuenow="90"
aria-valuemin="0"
aria-valuemax="100"
aria-label="Réseaux informatiques - 90%">
90%
</div>
</div>
</div>
<div class="skill-item">
<div class="skill-label">Systèmes d'exploitation</div>
<div class="progress">
<div class="progress-bar progress-bar-striped progress-bar-animated"
role="progressbar"
style="width: 80%;"
aria-valuenow="80"
aria-valuemin="0"
aria-valuemax="100"
aria-label="Systèmes d'exploitation - 80%">
80%
</div>
</div>
</div>
<div class="skill-item">
<div class="skill-label">Support technique</div>
<div class="progress">
<div class="progress-bar progress-bar-striped progress-bar-animated"
role="progressbar"
style="width: 85%;"
aria-valuenow="85"
aria-valuemin="0"
aria-valuemax="100"
aria-label="Support technique - 85%">
85%
</div>
</div>
</div>
<div class="skill-item">
<div class="skill-label">Relation client</div>
<div class="progress">
<div class="progress-bar progress-bar-striped progress-bar-animated"
role="progressbar"
style="width: 75%;"
aria-valuenow="75"
aria-valuemin="0"
aria-valuemax="100"
aria-label="Relation client - 75%">
75%
</div>
</div>
</div>
</section>
</main>
<!-- Pied de page -->
<footer class="text-white py-4 mt-5">
<div class="container text-center">
<p class="mb-0">
<a href="https://github.com/rayan-145" aria-label="Profil GitHub de Rayan Abbes">
Voir mon profil GitHub
</a>
</p>
</div>
</footer>
<script>
// Matrix Rain Effect - Optimisé et BIEN VISIBLE
const canvas = document.getElementById('matrixCanvas');
const ctx = canvas.getContext('2d');
// Adapter taille canvas
canvas.width = window.innerWidth;
canvas.height = window.innerHeight;
// Caractères Matrix (binaire + hexadécimal + katakana)
const chars = '01010101アイウエオカキクケコABCDEF0123456789';
const charArray = chars.split('');
// Configuration pour PLUS DE VISIBILITÉ
const fontSize = 16;
const columns = canvas.width / fontSize;
const drops = [];
// Initialiser positions
for (let i = 0; i < columns; i++) {
drops[i] = Math.random() * -100;
}
// Fonction de dessin
function draw() {
// Fond noir semi-transparent pour effet de traînée VISIBLE
ctx.fillStyle = 'rgba(0, 0, 0, 0.04)';
ctx.fillRect(0, 0, canvas.width, canvas.height);
// Vert Matrix BRILLANT
ctx.fillStyle = '#00ff41';
ctx.font = 'bold ' + fontSize + 'px monospace';
// Dessiner les caractères avec glow
ctx.shadowBlur = 10;
ctx.shadowColor = '#00ff41';
for (let i = 0; i < drops.length; i++) {
const text = charArray[Math.floor(Math.random() * charArray.length)];
const x = i * fontSize;
const y = drops[i] * fontSize;
// Variation d'opacité pour effet de profondeur
const opacity = Math.min(1, drops[i] / 20);
ctx.globalAlpha = opacity;
ctx.fillText(text, x, y);
// Réinitialiser la goutte
if (y > canvas.height && Math.random() > 0.975) {
drops[i] = 0;
}
drops[i]++;
}
ctx.globalAlpha = 1;
}
// Animation à 30 FPS
setInterval(draw, 33);
// Redimensionnement responsive
window.addEventListener('resize', () => {
canvas.width = window.innerWidth;
canvas.height = window.innerHeight;
});
</script>
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/js/bootstrap.bundle.min.js" integrity="sha384-YvpcrYf0tY3lHB60NNkmXc5s9fDVZLESaAA55NDzOxhy9GkcIdslK1eN7N6jIeHz" crossorigin="anonymous" defer></script>
</body>
</html>