/* Variables, reset, fond, grain */
:root{--bg:#05030b;--glass:rgba(22,10,44,.45);--fg:#efe9ff;--mut:#a99fc8;--p:#8b5cf6;--n:#c084fc;--m:#e879f9;--line:rgba(167,139,250,.26);--sheet:#fbfaff;--ink:#1a1328;color-scheme:dark;
--ff:"Syncopate","Arial Black",sans-serif;--fb:"Space Grotesk","Segoe UI",system-ui,sans-serif;--fm:"Courier New",ui-monospace,monospace;
box-sizing:border-box;padding-top:env(safe-area-inset-top,0px);padding-bottom:env(safe-area-inset-bottom,0px)}
*{box-sizing:border-box;margin:0}
html{scroll-behavior:smooth;scroll-padding-top:70px;background:var(--bg)}
body{color:var(--fg);font:300 16px/1.65 var(--fb);overflow-x:hidden}
a{color:inherit}:focus-visible{outline:2px solid var(--n);outline-offset:3px}
#bg{position:fixed;inset:0;width:100%;height:100%;z-index:-3}
.orb{position:fixed;border-radius:50%;filter:blur(90px);z-index:-2;opacity:.42;animation:drift 22s ease-in-out infinite alternate}
.o1{width:46vw;height:46vw;background:#6d28d9;top:-12vw;left:-10vw}.o2{width:38vw;height:38vw;background:#a21caf;bottom:-10vw;right:-8vw;animation-duration:28s}
@keyframes drift{to{transform:translate(8vw,6vh) scale(1.2)}}
.grain{position:fixed;inset:-50%;z-index:60;pointer-events:none;opacity:.07;background:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='200' height='200'%3E%3Cfilter id='n'%3E%3CfeTurbulence baseFrequency='.8' numOctaves='2'/%3E%3C/filter%3E%3Crect width='200' height='200' filter='url(%23n)'/%3E%3C/svg%3E");animation:grain 1s steps(4) infinite}
@keyframes grain{25%{transform:translate(-3%,2%)}50%{transform:translate(2%,-3%)}75%{transform:translate(-2%,-1%)}}
section{padding:100px 5vw 60px}
@media (prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}html{scroll-behavior:auto}}

/* Utilitaires partagés par toutes les pages */
.tagl{font:14px var(--fm);color:var(--m);display:block;margin-bottom:16px}
.glow{color:var(--n);text-shadow:0 0 22px var(--p),0 0 60px var(--p)}
@keyframes blink{50%{opacity:0}}
@keyframes scroll{to{transform:translateX(-50%)}}
