Configuration by {author}
@@ -44,43 +51,105 @@ const videos = [ diff --git a/src/styles/components/featurelist.css b/src/styles/components/featurelist.css index 52fd3a2..2837aea 100644 --- a/src/styles/components/featurelist.css +++ b/src/styles/components/featurelist.css @@ -59,6 +59,53 @@ border-radius: 0.681rem; } +.feature-showcase.cloud { + position: relative; + max-width: 345.717px; + border-radius: 100vh; + animation: spin 40s linear infinite; + + & .cloud-item { + position: absolute; + display: flex; + align-items: center; + justify-content: center; + width: 60px; + height: 60px; + animation: counter-spin 40s linear infinite; + &.hyprland { + left: 60px; + top: 60px; + } + &.wayland { + right: 60px; + top: 60px; + } + & img { + width: 60px; + height: 60px; + } + } +} + +@keyframes spin { + from { + transform: rotate(0deg); + } + to { + transform: rotate(360deg); + } +} + +@keyframes counter-spin { + from { + transform: rotate(0deg); + } + to { + transform: rotate(-360deg); + } +} + @media (min-width: 68rem) { .featurelist { max-width: 75rem; diff --git a/src/styles/components/marquee.css b/src/styles/components/marquee.css new file mode 100644 index 0000000..5ac2fa8 --- /dev/null +++ b/src/styles/components/marquee.css @@ -0,0 +1,91 @@ +.marquee-buttons { + display: flex; + flex-wrap: wrap; + justify-content: center; + gap: 2.217rem; + font-size: 1.874rem; + font-weight: 600; + margin-inline: 0.618rem; +} + +.marquee-button { + all: unset; + position: relative; + color: hsl(var(--accent-400)); + + &::before { + content: ""; + position: absolute; + bottom: 3px; + left: 2px; + right: 2px; + height: 3px; + background-color: hsla(var(--accent-400) / 0.3); + z-index: -1; + } +} +.marquee { + position: relative; + width: 100%; + margin-block: 1.618rem; +} + +.marquee-content { + width: 100%; + height: 100%; + overflow: hidden; + display: flex; +} + +.marquee-item { + flex: 1 0 100%; + transition: transform 0.3s cubic-bezier(0.46, 0.03, 0.52, 0.96); + transform: translateX(var(--scroll)); + display: flex; + justify-content: center; +} + +.marquee-item-spacing { + width: 75svw; + max-width: 75rem; + aspect-ratio: 16 / 9; +} + +.marquee-item-content { + border-radius: 6px; +} + +.marquee-scroll { + position: absolute; + width: 100%; + height: 100%; + display: flex; + justify-content: center; + align-items: center; + transition: background-color 0.3s, opacity 0.3s; + z-index: 10; + user-select: none; + align-items: stretch; + pointer-events: none; +} + +.marquee-scroll-arrow { + flex-grow: 1; + max-width: 8rem; + font-size: 2rem; + pointer-events: all; +} + +.marquee-scroll-arrow > div { + height: 100%; + display: flex; + align-items: center; + justify-content: center; + opacity: 0.5; + transition: opacity 0.3s ease; + + &:hover { + opacity: 0.9; + cursor: pointer; + } +} diff --git a/src/styles/global.css b/src/styles/global.css index 9870f7a..ffc1699 100644 --- a/src/styles/global.css +++ b/src/styles/global.css @@ -12,6 +12,7 @@ @import "./docs/collapsible.css"; @import "./components/featurelist.css"; +@import "./components/marquee.css"; .changing-theme * { transition: none !important; diff --git a/src/styles/main-page.css b/src/styles/main-page.css index d55c75c..419c2e3 100644 --- a/src/styles/main-page.css +++ b/src/styles/main-page.css @@ -48,98 +48,6 @@ h1.gradient-text { } } -.marquee-buttons { - display: flex; - flex-wrap: wrap; - justify-content: center; - gap: 2.217rem; - font-size: 1.874rem; - font-weight: 600; - margin-inline: 0.618rem; -} - -.marquee-button { - all: unset; - position: relative; - color: hsl(var(--accent-400)); - - &::before { - content: ""; - position: absolute; - bottom: 3px; - left: 2px; - right: 2px; - height: 3px; - background-color: hsla(var(--accent-400) / 0.3); - z-index: -1; - } -} - -.marquee { - position: relative; - width: 100%; - margin-block: 1.618rem; -} - -.marquee-content { - width: 100%; - height: 100%; - overflow: hidden; - display: flex; -} - -.marquee-item { - flex: 1 0 100%; - transition: transform 0.3s cubic-bezier(0.46, 0.03, 0.52, 0.96); - transform: translateX(var(--scroll)); - display: flex; - justify-content: center; -} - -.marquee-item-spacing { - width: 75svw; - max-width: 75rem; - aspect-ratio: 16 / 9; -} - -.marquee-item-content { - border-radius: 6px; -} - -.marquee-scroll { - position: absolute; - width: 100%; - height: 100%; - display: flex; - justify-content: center; - align-items: center; - transition: background-color 0.3s, opacity 0.3s; - z-index: 10; - user-select: none; - align-items: stretch; - pointer-events: none; -} - -.marquee-scroll-arrow { - flex-grow: 1; - max-width: 8rem; - font-size: 2rem; - pointer-events: all; -} - -.marquee-scroll-arrow > div { - height: 100%; - display: flex; - align-items: center; - justify-content: center; - opacity: 0.5; - transition: opacity 0.3s ease; - - &:hover { - opacity: 0.9; - } -} - .main-page_links { display: flex; flex-direction: row;