:root{--surface-page: #eceff3;--surface: #ffffff;--surface-haute: #f4f6f8;--bordure: #d9dee4;--texte: #16191d;--texte-doux: #57606a;--texte-faible: #8c959f;--accent: #d7261c;--accent-texte: #ffffff;--succes: #1a7f37;--attention: #9a6700;--code-mot: #cf222e;--code-type: #953800;--code-chaine: #0a3069;--code-methode: #8250df;--code-valeur: #0550ae;--ombre: 0 1px 2px rgb(22 25 29 / 6%), 0 8px 24px rgb(22 25 29 / 6%);--police-sans: "Segoe UI Variable Display", "Segoe UI", Inter, -apple-system, BlinkMacSystemFont, "Helvetica Neue", Arial, sans-serif;--police-mono: "JetBrains Mono", "Cascadia Code", "SF Mono", Consolas, "Liberation Mono", Menlo, monospace;--rayon: 14px;--hauteur-entete: 64px;color-scheme:light}@media(prefers-color-scheme:dark){:root:not([data-theme=clair]){--surface-page: #0b0e13;--surface: #12161d;--surface-haute: #1a2029;--bordure: #2a313c;--texte: #e8ecf1;--texte-doux: #9ba5b3;--texte-faible: #5f6977;--accent: #ff3b30;--succes: #3fb950;--attention: #d29922;--code-mot: #ff7b72;--code-type: #ffa657;--code-chaine: #a5d6ff;--code-methode: #d2a8ff;--code-valeur: #79c0ff;--ombre: 0 1px 2px rgb(0 0 0 / 40%), 0 8px 24px rgb(0 0 0 / 35%);color-scheme:dark}}:root[data-theme=sombre]{--surface-page: #0b0e13;--surface: #12161d;--surface-haute: #1a2029;--bordure: #2a313c;--texte: #e8ecf1;--texte-doux: #9ba5b3;--texte-faible: #5f6977;--accent: #ff3b30;--succes: #3fb950;--attention: #d29922;--code-mot: #ff7b72;--code-type: #ffa657;--code-chaine: #a5d6ff;--code-methode: #d2a8ff;--code-valeur: #79c0ff;--ombre: 0 1px 2px rgb(0 0 0 / 40%), 0 8px 24px rgb(0 0 0 / 35%);color-scheme:dark}*,*:before,*:after{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:calc(var(--hauteur-entete) + 16px)}body{margin:0;background:var(--surface-page);color:var(--texte);font-family:var(--police-sans);font-size:1.0625rem;line-height:1.65;-webkit-font-smoothing:antialiased}h1,h2,h3{line-height:1.2;margin:0 0 .5em;letter-spacing:-.01em}h1{font-size:clamp(2.4rem,6vw,4rem);font-weight:800}h2{font-size:clamp(1.6rem,3.4vw,2.1rem);font-weight:750}h3{font-size:1.2rem;font-weight:700}p{margin:0 0 1em}a{color:inherit}ul,ol{margin:0;padding:0;list-style:none}:focus-visible{outline:3px solid var(--accent);outline-offset:3px;border-radius:6px}.lien-evitement{position:absolute;left:16px;top:-100px;z-index:100;padding:10px 16px;background:var(--accent);color:var(--accent-texte);border-radius:8px}.lien-evitement:focus{top:12px}.conteneur{width:min(1100px,100% - 32px);margin-inline:auto}.conteneur-etroit{width:min(820px,100% - 32px)}.section{padding-block:clamp(56px,9vw,104px)}.page-entete{padding-top:calc(var(--hauteur-entete) + 40px)}.page-intro{font-size:1.15rem;max-width:62ch}.texte-doux{color:var(--texte-doux)}.texte-faible{color:var(--texte-faible)}.surtitre{display:inline-block;margin:0;font-size:.78rem;font-weight:700;letter-spacing:.12em;text-transform:uppercase;color:var(--accent)}.sous-titre{margin-top:2.2em;font-size:1.4rem}.carte{background:var(--surface);border:1px solid var(--bordure);border-radius:var(--rayon);padding:24px;box-shadow:var(--ombre)}.bouton{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:44px;padding:10px 20px;border:1px solid var(--bordure);border-radius:999px;background:var(--surface);color:var(--texte);font:inherit;font-size:.95rem;font-weight:600;text-decoration:none;cursor:pointer;transition:transform .15s ease,border-color .15s ease,background .15s ease}.bouton:hover{transform:translateY(-2px);border-color:var(--accent)}.bouton-plein{background:var(--accent);border-color:var(--accent);color:var(--accent-texte)}.bouton-plein:hover{background:var(--accent);filter:brightness(1.1)}.pastille{display:inline-flex;align-items:center;gap:8px;padding:4px 12px;border:1px solid var(--bordure);border-radius:999px;background:var(--surface-haute);font-size:.85rem;font-weight:600}.pastille-point{width:9px;height:9px;border-radius:50%}.liste-pastilles{display:flex;flex-wrap:wrap;gap:8px}.statut{display:inline-block;padding:3px 12px;border-radius:999px;font-size:.78rem;font-weight:700;border:1px solid currentcolor;color:var(--texte-doux)}.statut[data-ton=succes]{color:var(--succes)}.statut[data-ton=attention]{color:var(--attention)}.entete{position:fixed;inset:0 0 auto;z-index:50;height:var(--hauteur-entete);background:color-mix(in srgb,var(--surface-page) 82%,transparent);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border-bottom:1px solid var(--bordure)}.entete-contenu{display:flex;align-items:center;justify-content:space-between;gap:16px;height:100%}.entete-logo{display:flex;align-items:center;gap:10px;font-weight:700;text-decoration:none}.entete-logo-marque{display:grid;place-items:center;width:34px;height:34px;border-radius:10px;background:var(--accent);color:var(--accent-texte);font-size:.85rem;font-weight:800}.entete-liens{display:flex;gap:4px}.entete-liens a{display:block;padding:8px 12px;border-radius:8px;color:var(--texte-doux);font-size:.95rem;font-weight:600;text-decoration:none}.entete-liens a:hover{color:var(--texte);background:var(--surface-haute)}.bouton-theme{display:grid;place-items:center;width:40px;height:40px;border:1px solid var(--bordure);border-radius:50%;background:var(--surface);color:var(--texte);font-size:1.1rem;cursor:pointer}.hero{padding-top:calc(var(--hauteur-entete) + clamp(40px,8vw,96px));padding-bottom:clamp(48px,8vw,96px);background:radial-gradient(60% 50% at 80% 0%,color-mix(in srgb,var(--accent) 14%,transparent),transparent),var(--surface-page)}.hero-contenu{display:grid;grid-template-columns:1.1fr 1fr;align-items:center;gap:clamp(32px,5vw,64px)}.hero-role{font-size:clamp(1.2rem,2.6vw,1.6rem);font-weight:650;margin-bottom:.6em}.hero-accroche{max-width:52ch;font-size:1.15rem}.hero-actions,.contact-actions,.carte-projet-actions{display:flex;flex-wrap:wrap;gap:12px;margin-top:24px}.fenetre-code{overflow:hidden;background:var(--surface);border:1px solid var(--bordure);border-radius:var(--rayon);box-shadow:var(--ombre)}.fenetre-code-barre{display:flex;align-items:center;gap:8px;padding:12px 16px;background:var(--surface-haute);border-bottom:1px solid var(--bordure)}.point{width:12px;height:12px;border-radius:50%}.point-rouge{background:#ff5f57}.point-jaune{background:#febc2e}.point-vert{background:#28c840}.fenetre-code-nom{margin-left:8px;font-family:var(--police-mono);font-size:.82rem;color:var(--texte-doux)}.code{margin:0;padding:20px;overflow-x:auto;font-family:var(--police-mono);font-size:.82rem;line-height:1.7;tab-size:4}.c-mot{color:var(--code-mot)}.c-type{color:var(--code-type)}.c-chaine{color:var(--code-chaine)}.c-methode{color:var(--code-methode)}.c-valeur{color:var(--code-valeur)}.titre-section{display:flex;align-items:center;gap:16px;margin-bottom:36px}.titre-section h2{margin:0}.titre-section-numero{font-family:var(--police-mono);font-size:.95rem;font-weight:700;color:var(--accent)}.titre-section-trait{flex:1;height:1px;background:var(--bordure)}.apropos-grille{display:grid;grid-template-columns:1.4fr 1fr;gap:32px;align-items:start}.fiche{margin:0}.fiche-ligne{display:flex;flex-direction:column;gap:2px;padding-block:12px;border-bottom:1px solid var(--bordure)}.fiche-ligne:first-child{padding-top:0}.fiche-ligne:last-child{padding-bottom:0;border-bottom:0}.fiche dt{font-size:.78rem;font-weight:700;letter-spacing:.1em;text-transform:uppercase;color:var(--texte-faible)}.fiche dd{margin:0;font-weight:600}.competences-grille{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:20px}.competences-categorie h3{margin-bottom:16px}.projets-liste{display:grid;gap:24px}.projets-grille{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:20px}.projets-suite{margin:32px 0 0;text-align:center}.carte-projet{display:flex;flex-direction:column;gap:12px;transition:transform .2s ease,border-color .2s ease}.carte-projet:hover{transform:translateY(-3px);border-color:color-mix(in srgb,var(--accent) 60%,var(--bordure))}.carte-projet h3,.carte-projet p{margin:0}.carte-phare{padding:32px}.carte-phare h3{font-size:1.6rem}.carte-projet-entete{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:8px}.carte-projet-actions{margin-top:auto;padding-top:8px}.filtres{display:flex;flex-wrap:wrap;gap:8px;margin-block:24px 8px}.filtre{padding:6px 16px;border:1px solid var(--bordure);border-radius:999px;background:var(--surface);color:var(--texte-doux);font:inherit;font-size:.9rem;font-weight:600;cursor:pointer}.filtre:hover{border-color:var(--accent)}.filtre-actif{background:var(--accent);border-color:var(--accent);color:var(--accent-texte)}.lien-retour{display:inline-block;margin-bottom:24px;color:var(--texte-doux);font-weight:600;text-decoration:none}.lien-retour:hover{color:var(--accent)}.liste-simple{display:grid;gap:8px;padding-left:1.2em;list-style:disc}.choix-liste{display:grid;gap:16px}.choix-liste h3,.choix-liste p{margin:0 0 6px}.contact{text-align:center;padding:clamp(32px,6vw,56px)}.contact-texte{max-width:54ch;margin-inline:auto;font-size:1.15rem}.contact-actions{justify-content:center}.pied{padding-block:32px;border-top:1px solid var(--bordure);text-align:center}.pied p{margin:0 0 4px}.apparition-prete:not(.visible){opacity:0;transform:translateY(24px)}.apparition-prete{transition:opacity .6s ease,transform .6s ease}@media(max-width:860px){.hero-contenu,.apropos-grille{grid-template-columns:1fr}.entete-liens{display:none}}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*{transition:none!important;animation:none!important}}:root{--fond-a: var(--surface-page);--fond-b: var(--surface);--fond-hero: #0b0e13;--pente: clamp(32px, 6vw, 80px)}.entete{--texte: #e8ecf1;--texte-doux: #9ba5b3;--bordure: #2a313c;--surface: #12161d;--surface-haute: #1a2029;background:#0b0e13c7;color:var(--texte)}.entete-contenu{justify-content:flex-start}.entete nav{flex:1}.entete-liens{justify-content:center}.hero{position:relative;display:flex;align-items:flex-start;min-height:100svh;padding-top:calc(var(--hauteur-entete) + clamp(48px,12vh,140px));padding-bottom:0;overflow:hidden;background:var(--fond-hero);color:#e8ecf1}.hero-vague{position:absolute;inset:auto 0 0;height:50%}.hero-contenu{position:relative;z-index:1;display:block}.hero .texte-doux,.hero-accroche{color:#9ba5b3}.hero-accroche{max-width:52ch;font-size:1.2rem}.hero h1{margin-bottom:.15em;background:linear-gradient(90deg,#fff 55%,#ff7a72);-webkit-background-clip:text;background-clip:text;color:transparent}.hero .bouton{--bordure: #2a313c}.bouton-fantome{background:transparent;border-color:#5f6977;color:#e8ecf1}.hero-defiler{position:absolute;bottom:20px;left:50%;z-index:2;display:grid;place-items:center;width:44px;height:44px;border:1px solid #5f6977;border-radius:50%;color:#e8ecf1;text-decoration:none;transform:translate(-50%);animation:rebond 2.2s ease-in-out infinite}@keyframes rebond{50%{transform:translate(-50%,6px)}}.section-diagonale{position:relative;padding-top:calc(clamp(56px,9vw,104px) + var(--pente));background:var(--fond)}.section-diagonale:before{content:"";position:absolute;inset:0 0 auto;height:var(--pente);background:var(--fond-precedent);clip-path:polygon(0 0,100% 0,0 100%)}.fond-a{--fond: var(--fond-a)}.fond-b{--fond: var(--fond-b)}.precede-a{--fond-precedent: var(--fond-a)}.precede-b{--fond-precedent: var(--fond-b)}.precede-hero{--fond-precedent: var(--fond-hero)}.fiche-inclinee{transform:perspective(1000px) rotateY(-9deg) rotateX(2deg);box-shadow:18px 18px color-mix(in srgb,var(--accent) 22%,transparent),var(--ombre);transition:transform .4s ease}.fiche-inclinee:hover{transform:perspective(1000px) rotateY(0) rotateX(0)}.competences-pile{display:grid;gap:40px}.competences-titre{margin-bottom:14px;font-size:1.15rem;text-align:center}.competences-halo{display:flex;flex-wrap:wrap;justify-content:center;gap:28px 40px;padding:28px;background:var(--surface);border:1px solid color-mix(in srgb,var(--accent) 30%,var(--bordure));border-radius:var(--rayon);box-shadow:0 0 36px color-mix(in srgb,var(--accent) 22%,transparent)}.tuile-techno{display:flex;flex-direction:column;align-items:center;gap:10px;width:92px}.tuile-techno-icone{display:grid;place-items:center;width:68px;height:68px;border:1px solid color-mix(in srgb,var(--couleur) 55%,transparent);border-radius:18px;background:color-mix(in srgb,var(--couleur) 16%,var(--surface));color:var(--couleur);font-family:var(--police-mono);font-size:1.35rem;font-weight:800;transition:transform .2s ease,box-shadow .2s ease}.tuile-techno:hover .tuile-techno-icone{transform:translateY(-5px) scale(1.06);box-shadow:0 8px 24px color-mix(in srgb,var(--couleur) 45%,transparent)}.tuile-techno-nom{font-size:.82rem;font-weight:600;text-align:center}.carte-phare{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.1fr);align-items:stretch;gap:0;padding:0;overflow:hidden;box-shadow:0 0 44px color-mix(in srgb,var(--couleur-projet) 26%,transparent),var(--ombre)}.carte-phare .carte-projet-corps{display:flex;flex-direction:column;gap:12px;padding:clamp(24px,4vw,40px)}.carte-inverse .projet-visuel{order:2}.projet-visuel{position:relative;display:grid;align-content:center;justify-items:center;gap:8px;min-height:300px;overflow:hidden;background:radial-gradient(circle at 25% 20%,color-mix(in srgb,var(--couleur-projet) 85%,#fff),transparent 60%),color-mix(in srgb,var(--couleur-projet) 40%,#0b0e13);color:#fff}.projet-visuel:before{content:"";position:absolute;inset:0;background-image:linear-gradient(rgb(255 255 255 / 10%) 1px,transparent 1px),linear-gradient(90deg,rgb(255 255 255 / 10%) 1px,transparent 1px);background-size:34px 34px;-webkit-mask-image:radial-gradient(circle at 50% 50%,#000,transparent 75%);mask-image:radial-gradient(circle at 50% 50%,#000,transparent 75%)}.projet-visuel-sigle{position:relative;font-size:clamp(4.5rem,10vw,7.5rem);font-style:italic;font-weight:900;letter-spacing:-.05em;line-height:1;text-shadow:0 10px 40px rgb(0 0 0 / 40%)}.projet-visuel-nom{position:relative;font-size:.85rem;font-weight:700;letter-spacing:.22em;text-transform:uppercase}.projets-grille .carte-phare{grid-template-columns:1fr}.projets-grille .projet-visuel{min-height:160px}.projets-liste{gap:40px}@media(max-width:860px){.carte-phare{grid-template-columns:1fr}.carte-inverse .projet-visuel{order:0}.projet-visuel{min-height:180px}.fiche-inclinee{transform:none}.hero-vague{height:45%}}.hero:before{content:"";position:absolute;inset:0;background:radial-gradient(45% 55% at 12% 18%,rgb(255 59 48 / 20%),transparent 70%),radial-gradient(35% 45% at 88% 8%,rgb(124 92 250 / 16%),transparent 70%),linear-gradient(rgb(255 255 255 / 4%) 1px,transparent 1px),linear-gradient(90deg,rgb(255 255 255 / 4%) 1px,transparent 1px);background-size:auto,auto,56px 56px,56px 56px;-webkit-mask-image:linear-gradient(#000 55%,transparent);mask-image:linear-gradient(#000 55%,transparent);pointer-events:none}.hero h1{font-size:clamp(2.8rem,8vw,5.6rem);letter-spacing:-.03em}.hero-role{font-size:clamp(1.3rem,3vw,1.9rem);color:#fff}.hero-defiler{bottom:72px}.bandeau{position:absolute;inset:auto 0 0;z-index:2;overflow:hidden;padding-block:16px;background:#0b0e13b8;border-top:1px solid #2a313c;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);-webkit-mask-image:linear-gradient(90deg,transparent,#000 8%,#000 92%,transparent);mask-image:linear-gradient(90deg,transparent,#000 8%,#000 92%,transparent)}.bandeau-piste{display:flex;width:max-content;animation:defilement 55s linear infinite}.bandeau-liste{display:flex;flex-shrink:0}.bandeau-liste li{display:flex;align-items:center;gap:40px;padding-right:40px;font-family:var(--police-mono);font-size:.85rem;font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:#9ba5b3}.bandeau-liste li:after{content:"";width:6px;height:6px;border-radius:50%;background:var(--accent)}@keyframes defilement{to{transform:translate(-50%)}}.titre-section h2{font-size:clamp(2rem,5vw,3.1rem);font-weight:800;letter-spacing:-.02em}.titre-section-numero{padding:4px 10px;border:1px solid var(--accent);border-radius:8px}.titre-section-trait{height:2px;background:linear-gradient(90deg,var(--accent),transparent)}.contact{position:relative;overflow:hidden;background:radial-gradient(60% 90% at 50% 0%,color-mix(in srgb,var(--accent) 18%,transparent),transparent 70%),var(--surface);border-color:color-mix(in srgb,var(--accent) 45%,var(--bordure));box-shadow:0 0 60px color-mix(in srgb,var(--accent) 22%,transparent),var(--ombre)}.contact-texte{font-size:clamp(1.2rem,2.6vw,1.6rem);font-weight:600}.bouton-plein{background:linear-gradient(135deg,var(--accent),color-mix(in srgb,var(--accent) 70%,#7c5cfa));box-shadow:0 6px 20px color-mix(in srgb,var(--accent) 35%,transparent)}.bouton-plein:hover{box-shadow:0 10px 30px color-mix(in srgb,var(--accent) 50%,transparent)}.pied{background:var(--fond-hero);border-top:0;color:#9ba5b3}@media(max-width:860px){.hero-defiler{display:none}}@media(max-width:860px){:root{--hauteur-entete: 108px}.entete-contenu{flex-wrap:wrap;align-content:center;justify-content:space-between;gap:4px 16px}.entete nav{flex-basis:100%;order:3;overflow-x:auto}.entete-liens{display:flex;justify-content:flex-start;white-space:nowrap}}.tuile-techno-logo{background:#f4f6f8;border-color:color-mix(in srgb,var(--couleur) 40%,#d9dee4)}.tuile-techno-logo img{display:block;width:40px;height:40px}.pastille-logo{display:grid;place-items:center;width:20px;height:20px;border-radius:6px;background:#f4f6f8}.pastille-logo img{display:block;width:14px;height:14px}.projet-visuel-image{display:block;min-height:0;background:#0b0e13}.projet-visuel-image:before{display:none}.projet-visuel-image img{display:block;width:100%;height:100%;min-height:260px;object-fit:cover;object-position:top left;transition:transform .5s ease}.carte-phare:hover .projet-visuel-image img{transform:scale(1.04)}.projets-grille .projet-visuel-image img{min-height:0;max-height:200px}.projet-capture{display:block;width:100%;height:auto;margin-block:24px;border:1px solid var(--bordure);border-radius:var(--rayon);box-shadow:var(--ombre)}.piste{display:grid;justify-items:center;gap:20px}.piste-borne{display:inline-flex;align-items:center;gap:10px;margin:0;padding:8px 20px;border:1px solid var(--accent);border-radius:999px;background:var(--surface-haute);font-family:var(--police-mono);font-size:.82rem;font-weight:700;letter-spacing:.14em;text-transform:uppercase}.piste-arrivee{background:var(--accent);color:var(--accent-texte)}.piste-corps{--progression: 0;position:relative;width:100%}.piste-trait{position:absolute;inset:0 auto 0 50%;width:6px;border-radius:3px;background:repeating-linear-gradient(var(--bordure) 0 14px,transparent 14px 24px);transform:translate(-50%)}.piste-progression{position:absolute;inset:0 0 auto;height:calc(var(--progression) * 100%);border-radius:3px;background:linear-gradient(var(--accent),#ff7a72);box-shadow:0 0 18px color-mix(in srgb,var(--accent) 70%,transparent)}.piste-voiture{position:absolute;top:calc(var(--progression) * 100%);left:50%;width:22px;height:22px;border:4px solid #fff;border-radius:50%;background:var(--accent);box-shadow:0 0 0 6px color-mix(in srgb,var(--accent) 30%,transparent),0 0 28px var(--accent);transform:translate(-50%,-50%)}.piste-liste{position:relative;display:grid;gap:44px;padding-block:12px}.piste-etape{position:relative;display:grid;grid-template-columns:1fr 1fr;column-gap:96px}.piste-carte{position:relative;grid-column:1;text-align:right;transition:transform .25s ease,box-shadow .25s ease,border-color .25s ease}.piste-etape-droite .piste-carte{grid-column:2;text-align:left}.piste-carte h3{margin:6px 0}.piste-carte p{margin:0}.piste-carte:after{content:"";position:absolute;top:34px;right:-48px;width:48px;height:3px;background:linear-gradient(90deg,var(--bordure),var(--accent))}.piste-etape-droite .piste-carte:after{right:auto;left:-48px;background:linear-gradient(270deg,var(--bordure),var(--accent))}.piste-virage{position:absolute;top:12px;left:50%;z-index:1;display:grid;place-items:center;width:46px;height:46px;border:2px solid var(--bordure);border-radius:50%;background:var(--surface);color:var(--texte-doux);font-family:var(--police-mono);font-size:.85rem;font-weight:800;transform:translate(-50%);transition:background .3s ease,border-color .3s ease,color .3s ease,box-shadow .3s ease}.piste-etape.passee .piste-virage{border-color:var(--accent);background:var(--accent);color:var(--accent-texte);box-shadow:0 0 0 6px color-mix(in srgb,var(--accent) 22%,transparent),0 0 24px color-mix(in srgb,var(--accent) 60%,transparent)}.piste-etape.passee .piste-carte{border-color:color-mix(in srgb,var(--accent) 55%,var(--bordure));box-shadow:0 0 30px color-mix(in srgb,var(--accent) 20%,transparent),var(--ombre)}@media(max-width:860px){.piste{justify-items:start}.piste-trait{left:22px}.piste-etape{grid-template-columns:1fr;padding-left:70px}.piste-carte,.piste-etape-droite .piste-carte{grid-column:1;text-align:left}.piste-virage{left:22px}.piste-carte:after,.piste-etape-droite .piste-carte:after{right:auto;left:-48px;width:24px;background:linear-gradient(270deg,var(--bordure),var(--accent))}}
