diff --git a/src/index.njk b/src/index.njk
index 396eba8..e9c5139 100644
--- a/src/index.njk
+++ b/src/index.njk
@@ -33,7 +33,7 @@ eleventyComputed:
{{ nextRising.date | formatDate(locale) }} · {{ nextRising.time }}
diff --git a/src/styles/app.css b/src/styles/app.css
index e081c55..fc12e56 100644
--- a/src/styles/app.css
+++ b/src/styles/app.css
@@ -17,3 +17,4 @@
@import "./components/associations.css" layer(components);
@import "./components/islands.css" layer(components);
@import "./components/wave-badges.css" layer(components);
+@import "./components/comet-ring.css" layer(components);
diff --git a/src/styles/components/comet-ring.css b/src/styles/components/comet-ring.css
new file mode 100644
index 0000000..d13554e
--- /dev/null
+++ b/src/styles/components/comet-ring.css
@@ -0,0 +1,40 @@
+/* Anneau comète — bordure en conic-gradient tournante, technique d'unabyss.com
+ (masque XOR pour ne garder que l'anneau). Respecte prefers-reduced-motion
+ via le kill-switch global de tokens.css (figé, anneau statique). */
+@property --comet-angle {
+ syntax: "";
+ inherits: false;
+ initial-value: 0deg;
+}
+
+.comet-ring {
+ position: relative;
+ isolation: isolate;
+}
+
+.comet-ring::before {
+ content: "";
+ position: absolute;
+ inset: -3px;
+ border-radius: inherit;
+ padding: 2px;
+ background: conic-gradient(
+ from var(--comet-angle),
+ transparent 0deg,
+ transparent 250deg,
+ var(--gold-surface) 300deg,
+ var(--coral-surface) 330deg,
+ var(--gold-surface) 350deg,
+ transparent 360deg
+ );
+ -webkit-mask: linear-gradient(#fff 0 0) padding-box, linear-gradient(#fff 0 0);
+ -webkit-mask-composite: xor;
+ mask-composite: exclude;
+ animation: comet-spin 7s linear infinite;
+ pointer-events: none;
+ z-index: -1;
+}
+
+@keyframes comet-spin {
+ to { --comet-angle: 360deg; }
+}