openvibers/openvibe.tools Commits
Nothing spins on the tools: each spinner is a full ring that pulses out (#166)
Changes
@@@ -359,13 +359,12 @@ a:hover { color: var(--accent-hover); }.spinner {width: 48px;height: 48px;-- border: 4px solid var(--border);-- border-top-color: var(--accent);++ border: 4px solid var(--accent); --spin-c: var(--accent);border-radius: 50%;-- animation: spin .8s linear infinite;++ animation: spin 1.4s ease-out infinite;margin: 0 auto 16px;}--@keyframes spin { to { transform: rotate(360deg); } }++@keyframes spin { from { box-shadow: 0 0 0 0 color-mix(in srgb, var(--spin-c, var(--accent, #3b82f6)) 50%, transparent); } to { box-shadow: 0 0 0 10px transparent; } } /* "spin" pulses out now: nothing spins (design lint, plan L45) */@keyframes fadeIn { from { opacity: 0; transform: translateY(6px); } to { opacity: 1; transform: none; } }/* ---------- Result Panel ---------- */@@@ -337,13 +337,12 @@ body {.spinner {width: 48px;height: 48px;-- border: 4px solid var(--border);-- border-top-color: var(--accent);++ border: 4px solid var(--accent); --spin-c: var(--accent);border-radius: 50%;-- animation: spin .8s linear infinite;++ animation: spin 1.4s ease-out infinite;margin: 0 auto 16px;}--@keyframes spin { to { transform: rotate(360deg); } }++@keyframes spin { from { box-shadow: 0 0 0 0 color-mix(in srgb, var(--spin-c, var(--accent, #3b82f6)) 50%, transparent); } to { box-shadow: 0 0 0 10px transparent; } } /* "spin" pulses out now: nothing spins (design lint, plan L45) *//* ── Result Panel ───────────────────────────────────────────── */.result-panel {@@@ -209,10 +209,10 @@ body { min-height:100%; font-family:var(--font); background:var(--bg); color:var.leaflet-popup-content { font-family:var(--font) !important; font-size:12px !important; }/* Spinner */--.spinner { width:24px; height:24px; border:3px solid var(--border); border-top-color:var(--green); border-radius:50%; animation:spin 0.8s linear infinite; margin:0 auto; }++.spinner { width:24px; height:24px; border: 3px solid var(--green); --spin-c: var(--green); border-radius:50%; animation: spin 1.4s ease-out infinite; margin:0 auto; }.loading-state { text-align:center; padding:32px; }.loading-state p { font-size:12px; color:var(--text-muted); margin-top:8px; }--@keyframes spin { to { transform:rotate(360deg); } }++@keyframes spin { from { box-shadow: 0 0 0 0 color-mix(in srgb, var(--spin-c, var(--accent, #3b82f6)) 50%, transparent); } to { box-shadow: 0 0 0 10px transparent; } } /* "spin" pulses out now: nothing spins (design lint, plan L45) *//* Footer *//* Data attribution line above the shared footer (OpenVibeFooter mounts on #ov-footer) */@@@ -330,13 +330,13 @@ body {.spinner {width: 48px;height: 48px;-- border: 4px solid var(--border);++ border: 4px solid var(--accent); --spin-c: var(--accent);border-top: 4px solid var(--accent);border-radius: 50%;margin: 0 auto 16px;-- animation: spin .8s linear infinite;++ animation: spin 1.4s ease-out infinite;}--@keyframes spin { to { transform: rotate(360deg); } }++@keyframes spin { from { box-shadow: 0 0 0 0 color-mix(in srgb, var(--spin-c, var(--accent, #3b82f6)) 50%, transparent); } to { box-shadow: 0 0 0 10px transparent; } } /* "spin" pulses out now: nothing spins (design lint, plan L45) *//* ── Result Panel ───────────────────────────────────────────── */.result-panel {@@@ -60,7 +60,7 @@ body {@keyframes fadeIn { from { opacity: 0; transform: translateY(10px); } to { opacity: 1; transform: none; } }@keyframes fadeOut { to { opacity: 0; } }@keyframes float { 0%, 100% { transform: translateY(0); } 50% { transform: translateY(-8px); } }--@keyframes spin { to { transform: rotate(360deg); } }++@keyframes spin { from { box-shadow: 0 0 0 0 color-mix(in srgb, var(--spin-c, var(--accent, #3b82f6)) 50%, transparent); } to { box-shadow: 0 0 0 10px transparent; } } /* "spin" pulses out now: nothing spins (design lint, plan L45) *//* ── Disclaimer ── */#disclaimer-overlay {@@@ -504,7 +504,7 @@ body {/* Search progress */.search-progress { padding: 16px; text-align: center; }--.search-progress .spinner { width: 24px; height: 24px; border: 3px solid var(--border); border-top-color: var(--green); border-radius: 50%; animation: spin 0.8s linear infinite; margin: 0 auto 8px; }++.search-progress .spinner { width: 24px; height: 24px; border: 3px solid var(--green); --spin-c: var(--green); border-radius: 50%; animation: spin 1.4s ease-out infinite; margin: 0 auto 8px; }.search-progress p { font-size: 12px; color: var(--text-muted); }/* ── Source progress panel (streaming search) ── */@@@ -167,13 +167,12 @@ a:hover { text-decoration: underline; }.spinner {width: 48px;height: 48px;-- border: 4px solid var(--border);-- border-top-color: var(--accent);++ border: 4px solid var(--accent); --spin-c: var(--accent);border-radius: 50%;-- animation: spin 0.8s linear infinite;++ animation: spin 1.4s ease-out infinite;margin: 0 auto 16px;}--@keyframes spin { to { transform: rotate(360deg); } }++@keyframes spin { from { box-shadow: 0 0 0 0 color-mix(in srgb, var(--spin-c, var(--accent, #3b82f6)) 50%, transparent); } to { box-shadow: 0 0 0 10px transparent; } } /* "spin" pulses out now: nothing spins (design lint, plan L45) *//* Video Card */.video-card {
@@ -359,13 +359,12 @@ a:hover { color: var(--accent-hover); }
@@ -359,13 +359,12 @@ a:hover { color: var(--accent-hover); }
.spinner {
.spinner {
width: 48px;
width: 48px;
height: 48px;
height: 48px;
- border: 4px solid var(--border);
- border-top-color: var(--accent);
+ border: 4px solid var(--accent); --spin-c: var(--accent);
border-radius: 50%;
border-radius: 50%;
- animation: spin .8s linear infinite;
+ animation: spin 1.4s ease-out infinite;
margin: 0 auto 16px;
margin: 0 auto 16px;
}
}
-@keyframes spin { to { transform: rotate(360deg); } }
+@keyframes spin { from { box-shadow: 0 0 0 0 color-mix(in srgb, var(--spin-c, var(--accent, #3b82f6)) 50%, transparent); } to { box-shadow: 0 0 0 10px transparent; } } /* "spin" pulses out now: nothing spins (design lint, plan L45) */
@keyframes fadeIn { from { opacity: 0; transform: translateY(6px); } to { opacity: 1; transform: none; } }
@keyframes fadeIn { from { opacity: 0; transform: translateY(6px); } to { opacity: 1; transform: none; } }
/* ---------- Result Panel ---------- */
/* ---------- Result Panel ---------- */
@@ -337,13 +337,12 @@ body {
@@ -337,13 +337,12 @@ body {
.spinner {
.spinner {
width: 48px;
width: 48px;
height: 48px;
height: 48px;
- border: 4px solid var(--border);
- border-top-color: var(--accent);
+ border: 4px solid var(--accent); --spin-c: var(--accent);
border-radius: 50%;
border-radius: 50%;
- animation: spin .8s linear infinite;
+ animation: spin 1.4s ease-out infinite;
margin: 0 auto 16px;
margin: 0 auto 16px;
}
}
-@keyframes spin { to { transform: rotate(360deg); } }
+@keyframes spin { from { box-shadow: 0 0 0 0 color-mix(in srgb, var(--spin-c, var(--accent, #3b82f6)) 50%, transparent); } to { box-shadow: 0 0 0 10px transparent; } } /* "spin" pulses out now: nothing spins (design lint, plan L45) */
/* ── Result Panel ───────────────────────────────────────────── */
/* ── Result Panel ───────────────────────────────────────────── */
.result-panel {
.result-panel {
@@ -209,10 +209,10 @@ body { min-height:100%; font-family:var(--font); background:var(--bg); color:var
@@ -209,10 +209,10 @@ body { min-height:100%; font-family:var(--font); background:var(--bg); color:var
.leaflet-popup-content { font-family:var(--font) !important; font-size:12px !important; }
.leaflet-popup-content { font-family:var(--font) !important; font-size:12px !important; }
/* Spinner */
/* Spinner */
-.spinner { width:24px; height:24px; border:3px solid var(--border); border-top-color:var(--green); border-radius:50%; animation:spin 0.8s linear infinite; margin:0 auto; }
+.spinner { width:24px; height:24px; border: 3px solid var(--green); --spin-c: var(--green); border-radius:50%; animation: spin 1.4s ease-out infinite; margin:0 auto; }
.loading-state { text-align:center; padding:32px; }
.loading-state { text-align:center; padding:32px; }
.loading-state p { font-size:12px; color:var(--text-muted); margin-top:8px; }
.loading-state p { font-size:12px; color:var(--text-muted); margin-top:8px; }
-@keyframes spin { to { transform:rotate(360deg); } }
+@keyframes spin { from { box-shadow: 0 0 0 0 color-mix(in srgb, var(--spin-c, var(--accent, #3b82f6)) 50%, transparent); } to { box-shadow: 0 0 0 10px transparent; } } /* "spin" pulses out now: nothing spins (design lint, plan L45) */
/* Footer */
/* Footer */
/* Data attribution line above the shared footer (OpenVibeFooter mounts on #ov-footer) */
/* Data attribution line above the shared footer (OpenVibeFooter mounts on #ov-footer) */
@@ -330,13 +330,13 @@ body {
@@ -330,13 +330,13 @@ body {
.spinner {
.spinner {
width: 48px;
width: 48px;
height: 48px;
height: 48px;
- border: 4px solid var(--border);
+ border: 4px solid var(--accent); --spin-c: var(--accent);
border-top: 4px solid var(--accent);
border-top: 4px solid var(--accent);
border-radius: 50%;
border-radius: 50%;
margin: 0 auto 16px;
margin: 0 auto 16px;
- animation: spin .8s linear infinite;
+ animation: spin 1.4s ease-out infinite;
}
}
-@keyframes spin { to { transform: rotate(360deg); } }
+@keyframes spin { from { box-shadow: 0 0 0 0 color-mix(in srgb, var(--spin-c, var(--accent, #3b82f6)) 50%, transparent); } to { box-shadow: 0 0 0 10px transparent; } } /* "spin" pulses out now: nothing spins (design lint, plan L45) */
/* ── Result Panel ───────────────────────────────────────────── */
/* ── Result Panel ───────────────────────────────────────────── */
.result-panel {
.result-panel {
@@ -60,7 +60,7 @@ body {
@@ -60,7 +60,7 @@ body {
@keyframes fadeIn { from { opacity: 0; transform: translateY(10px); } to { opacity: 1; transform: none; } }
@keyframes fadeIn { from { opacity: 0; transform: translateY(10px); } to { opacity: 1; transform: none; } }
@keyframes fadeOut { to { opacity: 0; } }
@keyframes fadeOut { to { opacity: 0; } }
@keyframes float { 0%, 100% { transform: translateY(0); } 50% { transform: translateY(-8px); } }
@keyframes float { 0%, 100% { transform: translateY(0); } 50% { transform: translateY(-8px); } }
-@keyframes spin { to { transform: rotate(360deg); } }
+@keyframes spin { from { box-shadow: 0 0 0 0 color-mix(in srgb, var(--spin-c, var(--accent, #3b82f6)) 50%, transparent); } to { box-shadow: 0 0 0 10px transparent; } } /* "spin" pulses out now: nothing spins (design lint, plan L45) */
/* ── Disclaimer ── */
/* ── Disclaimer ── */
#disclaimer-overlay {
#disclaimer-overlay {
@@ -504,7 +504,7 @@ body {
@@ -504,7 +504,7 @@ body {
/* Search progress */
/* Search progress */
.search-progress { padding: 16px; text-align: center; }
.search-progress { padding: 16px; text-align: center; }
-.search-progress .spinner { width: 24px; height: 24px; border: 3px solid var(--border); border-top-color: var(--green); border-radius: 50%; animation: spin 0.8s linear infinite; margin: 0 auto 8px; }
+.search-progress .spinner { width: 24px; height: 24px; border: 3px solid var(--green); --spin-c: var(--green); border-radius: 50%; animation: spin 1.4s ease-out infinite; margin: 0 auto 8px; }
.search-progress p { font-size: 12px; color: var(--text-muted); }
.search-progress p { font-size: 12px; color: var(--text-muted); }
/* ── Source progress panel (streaming search) ── */
/* ── Source progress panel (streaming search) ── */
@@ -167,13 +167,12 @@ a:hover { text-decoration: underline; }
@@ -167,13 +167,12 @@ a:hover { text-decoration: underline; }
.spinner {
.spinner {
width: 48px;
width: 48px;
height: 48px;
height: 48px;
- border: 4px solid var(--border);
- border-top-color: var(--accent);
+ border: 4px solid var(--accent); --spin-c: var(--accent);
border-radius: 50%;
border-radius: 50%;
- animation: spin 0.8s linear infinite;
+ animation: spin 1.4s ease-out infinite;
margin: 0 auto 16px;
margin: 0 auto 16px;
}
}
-@keyframes spin { to { transform: rotate(360deg); } }
+@keyframes spin { from { box-shadow: 0 0 0 0 color-mix(in srgb, var(--spin-c, var(--accent, #3b82f6)) 50%, transparent); } to { box-shadow: 0 0 0 10px transparent; } } /* "spin" pulses out now: nothing spins (design lint, plan L45) */
/* Video Card */
/* Video Card */
.video-card {
.video-card {