Commits: 3

Change the legal address in privacy policy

index a251b55..e9dfd58 100644
--- a/content/market-research/_index.md
+++ b/content/market-research/_index.md
@@ -46,7 +46,7 @@ Privacy Policy for Tad Market Research
=     * Correct any inaccurate information.
=     * Withdraw the data processing consent at any time.
=
-   To exercise these rights, email us at <data@tad-lispy.com>
+   To exercise these rights, email us at <legal@tad-lispy.com>
=
=6. Data Security
=

Shift the clients tiles initial position a bit

for more natural look

index 9066fdc..dd76de7 100644
--- a/sass/style.scss
+++ b/sass/style.scss
@@ -272,6 +272,7 @@ ul.client-logos {
=            rem(var(--step-count), 1.0)
=            * var(--step-length)
=            * -1
+            - 5rem
=        ));
=        order: rem(
=            calc(var(--tile-index) - var(--step-count) - var(--tiles-count)),

Animate client quotes

index 485a34b..3201b16 100644
--- a/content/works/_index.md
+++ b/content/works/_index.md
@@ -24,6 +24,7 @@ I have over 15 years of experience in software development and training. Over th
=
=Here is what some of my clients have to say about me:
=
+{\% wrap_with(class="client-quotes") %}
=> I've been working with Tad on a range of software development and security trainings. The labs were creative and fun. I can definitely recommend him and I'll be happy to work with him again.
=>
=> <cite>Maaike van Putten, (Virtual) Trainer and developer</cite>
@@ -43,6 +44,7 @@ Here is what some of my clients have to say about me:
=> Tad understands technology well, listens carefully and communicates very clearly. Many times he helped us find pragmatic, simple and elegant solutions. We are glad to have him as a consultant.
=>
=> <cite>Neyts Zupan, Open Source geek & founder, Niteo</cite>
+{\% end %}
=
=Most of my work revolves around software development - custom work for clients, free software projects or training. Except for proprietary client projects, I publish most of it on [Codeberg](https://codeberg.org/tad-lispy), [GitLab](https://gitlab.com/dashboard/projects/member) or [GitHub](https://github.com/tad-lispy?tab=repositories). Below are selected examples of my work.
=
index dd76de7..335ae7d 100644
--- a/sass/style.scss
+++ b/sass/style.scss
@@ -294,3 +294,76 @@ ul.client-logos {
=    }
=
=}
+
+
+.client-quotes {
+    --quotes-count: 5;
+    --pace: 10s;
+
+	margin: 1rem auto;
+	font-size: .9rem;
+	display: flex;
+	overflow: hidden visible;
+	position: relative;
+    align-items: center;
+
+    @keyframes count-steps {
+        from {
+            --step-count: 0;
+        }
+        to {
+            --step-count: 5; // TODO: This must match --quotes-count, but using a variable here doesn't work. Why?
+        }
+    }
+
+    animation-name: count-steps;
+    animation-duration: calc(var(--pace) * var(--quotes-count));
+    animation-iteration-count: infinite;
+    animation-timing-function: steps(var(--quotes-count));
+
+    &> * {
+        // opacity: 0;
+
+        transform: translate(calc(
+            -100% * var(--step-count)
+        ));
+
+        @keyframes pulse {
+            0% {
+                opacity: 0%;
+            }
+            20% {
+                opacity: 100%;
+            }
+            80% {
+                opacity: 100%;
+            }
+            100% {
+                opacity: 0%;
+            }
+        }
+
+        animation-name: pulse;
+        animation-duration: var(--pace);
+        animation-iteration-count: infinite;
+        animation-timing-function: linear;
+
+        flex-shrink: 0;
+        width: 100%;
+        text-decoration: none;
+        transition: opacity 1s, margin-left 0s 1s;
+        display: block;
+
+        p {
+            font-size: 1.2rem;
+            font-style: italic;
+            line-height: 2;
+        }
+
+        cite {
+            font-style: initial;
+            font-weight: bold;
+        }
+    }
+}
+