:root{--cat-cinema: #7b61ff;--cat-resto: #ff6b6b;--cat-bar: #ffa94d;--cat-cafe: #a47148;--cat-concert: #9c3fe8;--cat-expo: #5f27cd;--cat-nocturne: #341f97;--cat-sport: #00d2d3;--cat-gaming: #a29bfe;--cat-rando: #26de81;--cat-atelier: #fd9644;--cat-apero: #f8b400;--cat-jeux: #45aaf2;--cat-spectacle: #fc5c65;--cat-voyage: #2bcbba;--cat-etude: #3b5ba5;--cat-autre: #778ca3}:where(.hub,.inv) :focus-visible{outline:2px solid var(--color-action-on-dark);outline-offset:2px;box-shadow:none}.hub .visually-hidden,.inv .visually-hidden{position:absolute;inline-size:1px;block-size:1px;overflow:hidden;clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap}.hub .skip-link,.inv .skip-link{position:absolute;z-index:100;inset-block-start:var(--s-3);inset-inline-start:var(--s-3);transform:translateY(-200%);background:var(--color-ink-2);color:var(--color-text-primary);padding:var(--s-3) var(--s-5);border-radius:var(--r-md);font:var(--text-label);transition:transform var(--dur-fast) var(--ease-out-soft)}.hub .skip-link:focus-visible,.inv .skip-link:focus-visible{transform:translateY(0)}.hub .glass,.inv .glass{background:var(--color-glass-fill);border:1px solid var(--color-glass-border);border-radius:var(--r-card);box-shadow:var(--el-1)}.hub-aurora{position:fixed;inset:0;z-index:-1;pointer-events:none;overflow:hidden}.hub-aurora__blob{position:absolute;inline-size:90vmax;block-size:90vmax;border-radius:50%;opacity:.3;will-change:transform;animation:hub-drift var(--dur-ambient) ease-in-out infinite alternate}.hub-aurora__blob--violet{inset-block-start:-45vmax;inset-inline-start:-30vmax;background:radial-gradient(circle at center,var(--color-aurora-violet) 0%,transparent 60%)}.hub-aurora__blob--cyan{inset-block-end:-50vmax;inset-inline-end:-35vmax;background:radial-gradient(circle at center,var(--color-aurora-cyan) 0%,transparent 60%);opacity:.22;animation-direction:alternate-reverse}@keyframes hub-drift{0%{transform:translateZ(0)}to{transform:translate3d(4vmax,3vmax,0)}}@media(prefers-reduced-motion:reduce){.hub-aurora__blob{animation:none}}.js-reveal{opacity:0;transform:translateY(20px);transition:opacity var(--dur-slow) var(--ease-out-soft),transform var(--dur-slow) var(--ease-out-soft);transition-delay:calc(var(--dur-stagger) * var(--reveal-index, 0))}.js-reveal.is-revealed{opacity:1;transform:none}@media(prefers-reduced-motion:reduce){.js-reveal{opacity:1;transform:none;transition-delay:0s}}
