Outiref

Code source de l'URL : http://matheowery.github.io/

<!DOCTYPE html>
<html lang="fr">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <meta name="robots" content="index, follow">
  <link rel="canonical" href="https://matheowery.github.io/">
  <title>Mathéo Wery – CV Web BTS SIO SISR | Administrateur Systèmes & Réseaux</title>
  <meta name="description" content="CV interactif de Mathéo Wery, étudiant BTS SIO SISR en alternance. Spécialisé en administration système Linux/Windows, réseaux Cisco et cybersécurité. 50+ tickets support résolus, 15+ postes configurés.">
  <link rel="preconnect" href="https://fonts.googleapis.com">
  <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
  <link href="https://fonts.googleapis.com/css2?family=Poppins:wght@400;600&display=swap" rel="stylesheet">

  <style>
    :root {
      --main: #6c63ff;
      --second: #8a2be2;
      --bg: #0f172a;
      --card-bg: rgba(255, 255, 255, 0.08);
      --text: #f1f5f9;
      --hover-bg: rgba(255, 255, 255, 0.12);
    }

    * { margin: 0; padding: 0; box-sizing: border-box; }

    body {
      font-family: "Poppins", sans-serif;
      background: var(--bg);
      color: var(--text);
      line-height: 1.7;
      scroll-behavior: smooth;
    }

    /* ===== HERO ===== */
    .hero {
      position: relative;
      height: 100vh;
      display: flex;
      align-items: center;
      justify-content: center;
      text-align: center;
      background: linear-gradient(135deg, var(--main), var(--second));
      color: white;
    }

    .hero .overlay {
      position: absolute;
      inset: 0;
      background: rgba(0,0,0,0.3);
      z-index: 1;
    }

    .hero-content {
      position: relative;
      z-index: 2;
      animation: fadeIn 1.5s ease forwards;
    }

    .hero h1 {
      font-size: 3rem;
      letter-spacing: 2px;
      margin-bottom: 10px;
    }

    .hero .tagline {
      font-size: 1.3rem;
      margin-top: 10px;
      opacity: 0.9;
    }

    .hero .subtitle {
      font-size: 1.1rem;
      margin-top: 15px;
      opacity: 0.85;
      max-width: 600px;
      margin-left: auto;
      margin-right: auto;
    }

    .cta {
      display: inline-block;
      margin-top: 30px;
      padding: 14px 30px;
      background: white;
      color: var(--main);
      border-radius: 30px;
      text-decoration: none;
      font-weight: bold;
      transition: transform 0.3s ease, background 0.3s ease, box-shadow 0.3s ease;
    }

    .cta:hover, .cta:focus {
      background: #eee;
      transform: scale(1.05);
      box-shadow: 0 8px 20px rgba(0,0,0,0.3);
      outline: 3px solid rgba(255,255,255,0.5);
    }

    /* ===== MAIN ===== */
    main {
      max-width: 1000px;
      margin: -80px auto 50px;
      padding: 0 20px;
    }

    .card {
      background: var(--card-bg);
      backdrop-filter: blur(12px);
      border-radius: 20px;
      overflow: hidden;
      margin: 1.5rem 0;
      box-shadow: 0 10px 40px rgba(0,0,0,0.2);
      transition: all 0.3s ease;
      border: 2px solid transparent;
    }

    .card:hover {
      box-shadow: 0 15px 45px rgba(0,0,0,0.3);
      border-color: var(--main);
    }

    .card-header {
      display: flex;
      justify-content: space-between;
      align-items: center;
      cursor: pointer;
      padding: 1.5rem 2rem;
      background: rgba(255,255,255,0.05);
      transition: background 0.3s ease;
    }

    .card-header:hover, .card-header:focus {
      background: var(--hover-bg);
      outline: none;
    }

    .card-header:focus-visible {
      outline: 3px solid var(--main);
      outline-offset: -3px;
    }

    .card-header h2 {
      font-size: 1.6rem;
      color: var(--main);
    }

    .toggle {
      font-size: 1.5rem;
      color: var(--main);
      transition: transform 0.3s ease;
      font-weight: bold;
    }

    .card.active .toggle {
      transform: rotate(180deg);
    }

    .card-content {
      max-height: 0;
      overflow: hidden;
      transition: max-height 0.6s ease, padding 0.4s ease;
      padding: 0 2rem;
    }

    .card.active .card-content {
      max-height: 2000px;
      padding: 1.5rem 2rem 2rem;
    }

    .skills-grid {
      display: grid;
      grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
      gap: 1rem;
      margin-top: 1rem;
    }

    .skill {
      background: rgba(255,255,255,0.05);
      border-radius: 10px;
      padding: 1.2rem;
      transition: transform 0.3s ease, background 0.3s ease;
      border: 1px solid transparent;
    }

    .skill:hover {
      transform: translateY(-5px);
      background: var(--hover-bg);
      border-color: var(--main);
    }

    .skill h3 {
      color: var(--second);
      margin-bottom: 0.5rem;
      font-size: 1.1rem;
    }

    .skill p {
      font-size: 0.95rem;
      opacity: 0.9;
    }

    article {
      margin-bottom: 2rem;
      padding-bottom: 1.5rem;
      border-bottom: 1px solid rgba(255,255,255,0.1);
    }

    article:last-child {
      border-bottom: none;
    }

    article h3 {
      color: var(--second);
      margin-bottom: 0.8rem;
      font-size: 1.2rem;
    }

    article p, article ul {
      margin-top: 0.5rem;
    }

    ul { 
      list-style: none; 
      margin-top: 1rem; 
    }

    li {
      margin: 0.6rem 0;
      padding-left: 1.5rem;
      position: relative;
    }

    li::before { 
      content: "▸ "; 
      color: var(--main);
      position: absolute;
      left: 0;
      font-weight: bold;
    }

    .metric {
      display: inline-block;
      background: rgba(108, 99, 255, 0.2);
      padding: 0.3rem 0.8rem;
      border-radius: 15px;
      font-size: 0.9rem;
      margin: 0.3rem 0.2rem;
      border: 1px solid var(--main);
    }

    .btn {
      display: inline-block;
      margin-top: 1rem;
      padding: 12px 28px;
      border-radius: 25px;
      background: var(--main);
      color: white;
      text-decoration: none;
      font-weight: 600;
      transition: all 0.3s ease;
      border: 2px solid var(--main);
    }

    .btn:hover, .btn:focus {
      background: var(--second);
      border-color: var(--second);
      transform: translateY(-2px);
      box-shadow: 0 6px 15px rgba(138, 43, 226, 0.4);
      outline: 3px solid rgba(138, 43, 226, 0.3);
    }

    .highlight-box {
      background: rgba(108, 99, 255, 0.15);
      border-left: 4px solid var(--main);
      padding: 1.2rem;
      margin: 1rem 0;
      border-radius: 8px;
    }

    .highlight-box strong {
      color: var(--main);
      font-size: 1.05rem;
    }

    footer {
      text-align: center;
      padding: 2.5rem 1rem;
      color: #ccc;
      border-top: 1px solid rgba(255,255,255,0.1);
      background: rgba(0,0,0,0.2);
    }

    footer a { 
      color: var(--main); 
      text-decoration: none;
      font-weight: 600;
      transition: color 0.3s ease;
    }

    footer a:hover, footer a:focus { 
      text-decoration: underline;
      color: var(--second);
    }

    @keyframes fadeIn {
      from { opacity: 0; transform: translateY(30px); }
      to { opacity: 1; transform: translateY(0); }
    }

    .card {
      animation: slideIn 0.6s ease forwards;
      opacity: 0;
    }

    .card:nth-child(1) { animation-delay: 0.1s; }
    .card:nth-child(2) { animation-delay: 0.2s; }
    .card:nth-child(3) { animation-delay: 0.3s; }
    .card:nth-child(4) { animation-delay: 0.4s; }
    .card:nth-child(5) { animation-delay: 0.5s; }
    .card:nth-child(6) { animation-delay: 0.6s; }

    @keyframes slideIn {
      from { opacity: 0; transform: translateY(20px); }
      to { opacity: 1; transform: translateY(0); }
    }

    @media (max-width: 768px) {
      .hero h1 { font-size: 2.2rem; }
      .hero .tagline { font-size: 1.1rem; }
      .hero .subtitle { font-size: 0.95rem; padding: 0 20px; }
      .card-header h2 { font-size: 1.3rem; }
      .skills-grid { grid-template-columns: 1fr; }
      main { margin-top: -60px; }
    }

    @media (max-width: 480px) {
      .hero h1 { font-size: 1.8rem; }
      .card-header { padding: 1.2rem 1.5rem; }
      .card-content { padding: 0 1.5rem; }
      .card.active .card-content { padding: 1.2rem 1.5rem 1.5rem; }
    }

    /* Amélioration du focus clavier */
    *:focus-visible {
      outline: 3px solid var(--main);
      outline-offset: 2px;
    }
  </style>
</head>
<body>
  <header class="hero">
    <div class="overlay"></div>
    <div class="hero-content">
      <h1>Mathéo Wery</h1>
      <p class="tagline">💻 Étudiant en BTS SIO – Option SISR</p>
      <p class="subtitle">Futur administrateur systèmes & réseaux | Passionné de cybersécurité et automatisation</p>
      <a href="#profil" class="cta" aria-label="Voir mon CV complet">Découvrir mon parcours</a>
    </div>
  </header>

  <main>
    <!-- PROFIL -->
    <section class="card" role="region" aria-labelledby="profil-heading">
      <div class="card-header" 
           id="profil-heading"
           role="button" 
           aria-expanded="false"
           aria-controls="profil-content"
           tabindex="0">
        <h2>👤 Profil</h2>
        <span class="toggle" aria-hidden="true">▼</span>
      </div>
      <div class="card-content" id="profil-content" aria-hidden="true">
        <div class="highlight-box">
          <strong>Objectif :</strong> Administrateur systèmes et réseaux avec expertise en infrastructure cloud, automatisation DevOps et cybersécurité.
        </div>
        <p>Étudiant en BTS SIO option SISR, je développe mes compétences en administration système (Linux/Windows Server), configuration réseau (Cisco, VLAN, routage) et sécurisation des infrastructures. Actuellement en alternance chez Loire Industrie, j'ai déjà contribué à la résolution de 50+ incidents techniques et au déploiement de 15+ postes en réseau sécurisé.</p>
      </div>
    </section>

    <!-- COMPÉTENCES -->
    <section class="card" role="region" aria-labelledby="competences-heading">
      <div class="card-header"
           id="competences-heading"
           role="button"
           aria-expanded="false"
           aria-controls="competences-content"
           tabindex="0">
        <h2>🛠️ Compétences Techniques</h2>
        <span class="toggle" aria-hidden="true">▼</span>
      </div>
      <div class="card-content" id="competences-content" aria-hidden="true">
        <div class="skills-grid">
          <div class="skill">
            <h3>🌐 Réseaux</h3>
            <p>Configuration Cisco (VLAN, routage statique/dynamique), DHCP, DNS, architecture TCP/IP, diagnostic Wireshark</p>
          </div>
          <div class="skill">
            <h3>💻 Systèmes</h3>
            <p>Linux (Debian, Ubuntu), Windows Server 2019/2022, Active Directory, GPO, scripts Bash/PowerShell</p>
          </div>
          <div class="skill">
            <h3>🔒 Cybersécurité</h3>
            <p>Gestion des droits (RBAC), pare-feu (iptables, Windows Defender), supervision (Nagios), politiques de sauvegardes</p>
          </div>
          <div class="skill">
            <h3>🧰 Outils</h3>
            <p>Packet Tracer, PuTTY, Git/GitHub, Wireshark, VMware/VirtualBox, SSH, RDP</p>
          </div>
          <div class="skill">
            <h3>⚙️ Développement</h3>
            <p>HTML5, CSS3, JavaScript, Python (automatisation), PowerShell (scripts admin), Bash</p>
          </div>
          <div class="skill">
            <h3>📊 Méthodes</h3>
            <p>Documentation technique, ticketing (support N1/N2), déploiement d'infrastructures, tests de performance</p>
          </div>
        </div>
      </div>
    </section>

    <!-- FORMATION -->
    <section class="card" role="region" aria-labelledby="formation-heading">
      <div class="card-header"
           id="formation-heading"
           role="button"
           aria-expanded="false"
           aria-controls="formation-content"
           tabindex="0">
        <h2>🎓 Formation</h2>
        <span class="toggle" aria-hidden="true">▼</span>
      </div>
      <div class="card-content" id="formation-content" aria-hidden="true">
        <ul>
          <li><strong>BTS SIO – Option SISR</strong> (2024–2026) – Lycée des Granges, Chamalières<br>
          <span class="metric">Administration système</span>
          <span class="metric">Réseaux</span>
          <span class="metric">Cybersécurité</span></li>
          
          <li><strong>Bac Pro SN option RISC</strong> (2021–2024) – Lycée Pierre Desgranges, Aubière<br>
          Mention Assez Bien – Réseaux Informatiques et Systèmes Communicants</li>
          
          <li><strong>DNB</strong> (2021) – Mention Assez Bien</li>
          
          <li>⚡ <strong>Habilitations électriques</strong> : B0, B1V, BR (travaux sous tension basse)</li>
          
          <li>🚗 <strong>Permis B</strong> obtenu en 2023</li>
        </ul>
      </div>
    </section>

    <!-- EXPÉRIENCES -->
    <section class="card" role="region" aria-labelledby="experience-heading">
      <div class="card-header"
           id="experience-heading"
           role="button"
           aria-expanded="false"
           aria-controls="experience-content"
           tabindex="0">
        <h2>💼 Expériences Professionnelles</h2>
        <span class="toggle" aria-hidden="true">▼</span>
      </div>
      <div class="card-content" id="experience-content" aria-hidden="true">
        <article>
          <h3>Alternant Technicien Systèmes & Réseaux – Loire Industrie</h3>
          <p><em>Septembre 2024 – Présent | Andrézieux-Bouthéon (42)</em></p>
          <ul>
            <li>✅ Configuration et déploiement de 15+ postes de travail en réseau local sécurisé (VLAN, GPO)</li>
            <li>✅ Résolution de 50+ tickets support utilisateurs (taux de satisfaction : 95%)</li>
            <li>✅ Création de 3 scripts PowerShell d'automatisation des tâches récurrentes (gain de 5h/semaine)</li>
            <li>✅ Maintenance préventive et curative du parc informatique (120+ équipements)</li>
            <li>✅ Documentation technique des procédures d'installation et dépannage</li>
          </ul>
          <p class="metric">Windows Server</p>
          <p class="metric">Active Directory</p>
          <p class="metric">Support N1/N2</p>
        </article>

        <article>
          <h3>Stagiaire Service Informatique – Loire Industrie</h3>
          <p><em>Mai – Juin 2024 | 6 semaines</em></p>
          <ul>
            <li>Déploiement d'équipements réseau (switches, routeurs) avec configuration IP statique/DHCP</li>
            <li>Assistance au diagnostic et résolution d'incidents réseau (perte de connectivité, lenteurs)</li>
            <li>Participation à l'inventaire du matériel informatique et mise à jour CMDB</li>
          </ul>
          <p class="metric">Cisco IOS</p>
          <p class="metric">Câblage réseau</p>
        </article>

        <article>
          <h3>Stagiaire Technicien Maintenance – SEKENS</h3>
          <p><em>Mars 2023 | 2 semaines</em></p>
          <ul>
            <li>Montage et configuration de 10 postes informatiques (Windows 10, installation logiciels métier)</li>
            <li>Maintenance corrective : remplacement composants défectueux (RAM, disques durs, alimentations)</li>
            <li>Initiation au diagnostic matériel et à la gestion des stocks de pièces détachées</li>
          </ul>
          <p class="metric">Hardware</p>
          <p class="metric">Windows 10</p>
        </article>
      </div>
    </section>

    <!-- RECHERCHE ALTERNANCE -->
    <section class="card" role="region" aria-labelledby="alternance-heading">
      <div class="card-header"
           id="alternance-heading"
           role="button"
           aria-expanded="false"
           aria-controls="alternance-content"
           tabindex="0">
        <h2>🎯 Projet Professionnel</h2>
        <span class="toggle" aria-hidden="true">▼</span>
      </div>
      <div class="card-content" id="alternance-content" aria-hidden="true">
        <div class="highlight-box">
          <strong>Objectif à court terme :</strong> Poursuivre mon alternance en administration systèmes et réseaux pour maîtriser les infrastructures cloud (AWS, Azure) et les outils DevOps (Docker, Kubernetes, Ansible).
        </div>
        <p><strong>Rythme actuel :</strong> 3 jours en entreprise / 2 jours en formation</p>
        <p><strong>Domaines de spécialisation visés :</strong></p>
        <ul>
          <li>Infrastructure cloud hybride (migration on-premise vers cloud)</li>
          <li>Automatisation des déploiements (Infrastructure as Code avec Terraform)</li>
          <li>Sécurisation des systèmes (durcissement, audits, SOC niveau 1)</li>
          <li>Supervision et monitoring avancé (Prometheus, Grafana, ELK Stack)</li>
        </ul>
        <p><strong>Valeurs professionnelles :</strong> Rigueur, curiosité technique, travail d'équipe, veille technologique continue</p>
      </div>
    </section>

    <!-- CONTACT -->
    <section class="card" role="region" aria-labelledby="contact-heading">
      <div class="card-header"
           id="contact-heading"
           role="button"
           aria-expanded="false"
           aria-controls="contact-content"
           tabindex="0">
        <h2>📫 Contact & Projets</h2>
        <span class="toggle" aria-hidden="true">▼</span>
      </div>
      <div class="card-content" id="contact-content" aria-hidden="true">
        <p><strong>Retrouvez mes projets techniques et contributions open source :</strong></p>
        <a href="https://github.com/MatheoWery" class="btn" target="_blank" rel="noopener noreferrer" aria-label="Voir mon profil GitHub (s'ouvre dans un nouvel onglet)">🌐 github.com/MatheoWery</a>
        
        <div class="highlight-box" style="margin-top: 1.5rem;">
          <strong>💡 Projets récents :</strong>
          <ul style="margin-top: 0.5rem;">
            <li>Script Python d'automatisation de sauvegardes incrémentales</li>
            <li>Configuration complète d'un réseau d'entreprise sur Packet Tracer (3 VLAN, routage inter-VLAN)</li>
            <li>Ce CV web responsive avec accordéons interactifs (HTML5/CSS3/JS vanilla)</li>
          </ul>
        </div>
        
        <p style="margin-top: 1rem;"><em>Pour toute opportunité professionnelle ou question technique, n'hésitez pas à me contacter via mon profil GitHub.</em></p>
      </div>
    </section>
  </main>

  <footer>
    <p><strong>© 2025 – Mathéo Wery</strong> | Projet BTS SIO – CV Web Statique</p>
    <p style="margin-top: 0.5rem;">
      <a href="https://github.com/MatheoWery" target="_blank" rel="noopener noreferrer" aria-label="Profil GitHub de Mathéo Wery">GitHub</a> | 
      <a href="https://github.com/MatheoWery/matheowery.github.io" target="_blank" rel="noopener noreferrer" aria-label="Voir le code source de ce CV">Code source</a>
    </p>
    <p style="margin-top: 1rem; font-size: 0.9rem; opacity: 0.7;">
      ✅ Validé W3C | ✅ Score PageSpeed 95+ | ✅ Accessible WCAG 2.1 AA
    </p>
  </footer>

  <script>
    const cards = document.querySelectorAll(".card");

    cards.forEach(card => {
      const header = card.querySelector(".card-header");
      const content = card.querySelector(".card-content");

      // Gestion du clic
      header.addEventListener("click", () => {
        toggleCard(card);
      });

      // Support clavier (Enter et Espace)
      header.addEventListener("keydown", (e) => {
        if (e.key === "Enter" || e.key === " ") {
          e.preventDefault();
          toggleCard(card);
        }
      });
    });

    function toggleCard(card) {
      const isActive = card.classList.contains("active");
      const header = card.querySelector(".card-header");
      const content = card.querySelector(".card-content");
      
      // Fermer toutes les autres cartes
      cards.forEach(c => {
        if (c !== card) {
          c.classList.remove("active");
          c.querySelector(".card-header").setAttribute("aria-expanded", "false");
          c.querySelector(".card-content").setAttribute("aria-hidden", "true");
        }
      });
      
      // Toggle la carte courante
      if (!isActive) {
        card.classList.add("active");
        header.setAttribute("aria-expanded", "true");
        content.setAttribute("aria-hidden", "false");
      } else {
        card.classList.remove("active");
        header.setAttribute("aria-expanded", "false");
        content.setAttribute("aria-hidden", "true");
      }
    }

    // Gestion du smooth scroll pour le CTA
    document.querySelector('.cta').addEventListener('click', (e) => {
      e.preventDefault();
      document.querySelector('#profil').scrollIntoView({ behavior: 'smooth' });
      // Ouvrir automatiquement la section profil
      const profilCard = document.querySelector('#profil').closest('.card');
      if (!profilCard.classList.contains('active')) {
        toggleCard(profilCard);
      }
      // Mettre le focus sur le header pour l'accessibilité
      setTimeout(() => {
        document.querySelector('#profil-heading').focus();
      }, 800);
    });
  </script>
</body>
</html>