Login
Dashboard
Saved Stitches
Stitch Catalog
Demo
All
E-Commerce
All
(4)
Collections
(3)
Featured Products
(0)
Hero
(0)
Pop Up Modals
(0)
Promotional CTA
(1)
Store Products
(0)
Buttons
All
(1)
Non Standard
(0)
Squared
(1)
Navigation
All
(2)
+ Dropdown
(1)
+ Top Bar
(0)
Double Dropdown
(0)
Standard
(1)
Top Bar + Dropdown
(0)
Hero Section
All
(7)
Centered
(2)
Grid
(0)
Landing + Services
(3)
Left Aligned
(1)
Right Aligned
(1)
Services
All
(16)
3 Card
(4)
4 Card
(4)
5 Card
(1)
6 Card
(2)
8 Card
(1)
Combo
(2)
Side By Side
(2)
Content Flair
All
(3)
Button Boxes
(1)
Content Groups
(1)
Lists
(1)
Quotes
(0)
Stats
(0)
Toppers
(0)
Side By Side
All
(34)
Combo
(0)
Non Standard
(1)
Reverse
(11)
Reverse Pair
(5)
Reverse Triplet
(3)
Standard
(14)
Gallery
All
(7)
4 Images
(1)
5 Images
(1)
6 Images
(1)
8 Images
(2)
Full Width
(0)
Mosaic
(0)
Multi Gallery
(1)
Simple
(1)
Meet Our Team
All
(5)
2 Card
(0)
3 Card
(1)
4 Card
(2)
5 Card
(1)
6 Card
(0)
7 Card
(0)
8 Card
(1)
Combo
(0)
Steps
All
(4)
3 Steps
(2)
4 Steps
(2)
5 Steps
(0)
Stats
All
(5)
2 Stats
(0)
3 Stats
(0)
4 Stats
(3)
Combos
(1)
Timeline
(1)
Pricing
All
(7)
2 Card
(0)
3 Card
(3)
Menu's
(2)
Price List
(0)
w/ Toggles
(2)
FAQ
All
(4)
Multi FAQ's
(0)
Side By Side
(2)
Standard
(2)
Why Choose Us
All
(11)
3 Card
(1)
4 Card
(1)
6 Card
(0)
Side By Side
(9)
Quotes
All
(0)
Single Quotes
(0)
MISC
All
(5)
Careers
(0)
Content
(0)
Locations
(1)
Logos
(1)
Maps
(0)
Popups
(0)
Tables
(1)
Video
(2)
Reviews
All
(14)
2 Card
(4)
3 Card
(3)
4 Card
(0)
8 Card
(0)
Full Width
(0)
Single Review
(7)
Slideshow
(0)
Forms & Contact
All
(8)
Contact Forms
(8)
Contact Info
(0)
Subscribe
(0)
Events
All
(3)
3 Card
(1)
4 Card
(0)
Side By Side
(2)
Blog
All
(3)
Recent Posts
(3)
Call To Action
All
(4)
Combos
(1)
Contained
(0)
Full Width
(2)
Subscribe Forms
(1)
Footer
All
(6)
2 Column
(0)
3 Column
(1)
4 Column
(2)
5 Column
(1)
Combo
(0)
Simple
(2)
Dark Mode
All
(1)
Standard
(1)
Interior Pages
All
(3)
About Page
(0)
Contact Page
(0)
Content Page
(1)
FAQ Page
(1)
Menus
(0)
Page Banners
(1)
Service Page
(0)
Multi Gallery
HTML
CSS
JS
Core Styles
Choose your preferred CSS
CSS
LESS
SCSS
CSS Dark
LESS Dark
SCSS Dark
Choose your preferred Core Styles CSS
CSS
LESS
SCSS
-
Dark Mode
+
Dark Mode
Copy
to Clipboard
<!-- ============================================ --> <!-- Gallery --> <!-- ============================================ --> <section id="gallery-404"> <div class="cs-container"> <div class="cs-content"> <div class="cs-flex"> <span class="cs-topper">Gallery</span> <h2 class="cs-title">Some Work from Our Previous Clients</h2> </div> <div class="cs-button-group"> <button class="cs-button" data-filter="one"> All </button> <button class="cs-button" data-filter="two"> Kitchen </button> <button class="cs-button" data-filter="three"> Office Cleaning </button> <button class="cs-button" data-filter="four"> Plumbing </button> <button class="cs-button" data-filter="five"> Window Cleaning </button> </div> </div> <div class="cs-gallery-wrapper"> <!--Gallery 1--> <div class="cs-gallery" data-category="one"> <!--Picture 1--> <picture class="cs-image"> <source media="(max-width: 600px)" srcset="https://csimg.nyc3.digitaloceanspaces.com/Gallery/gallery1.jpg"> <source media="(min-width: 601px)" srcset="https://csimg.nyc3.digitaloceanspaces.com/Gallery/gallery1.jpg"> <img loading="lazy" decoding="async" src="https://csimg.nyc3.digitaloceanspaces.com/Gallery/gallery1.jpg" alt="gallery" width="630" height="400"> </picture> <!--Picture 2--> <picture class="cs-image"> <source media="(max-width: 600px)" srcset="https://csimg.nyc3.digitaloceanspaces.com/Gallery/gallery2.jpg"> <source media="(min-width: 601px)" srcset="https://csimg.nyc3.digitaloceanspaces.com/Gallery/gallery2.jpg"> <img loading="lazy" decoding="async" src="https://csimg.nyc3.digitaloceanspaces.com/Gallery/gallery2.jpg" alt="gallery" width="305" height="400"> </picture> <!--Picture 3--> <picture class="cs-image"> <source media="(max-width: 600px)" srcset="https://csimg.nyc3.digitaloceanspaces.com/Gallery/gallery3.jpg"> <source media="(min-width: 601px)" srcset="https://csimg.nyc3.digitaloceanspaces.com/Gallery/gallery3.jpg"> <img loading="lazy" decoding="async" src="https://csimg.nyc3.digitaloceanspaces.com/Gallery/gallery3.jpg" alt="gallery" width="305" height="400"> </picture> <!--Picture 4--> <picture class="cs-image"> <source media="(max-width: 600px)" srcset="https://csimg.nyc3.digitaloceanspaces.com/Gallery/gallery4.jpg"> <source media="(min-width: 601px)" srcset="https://csimg.nyc3.digitaloceanspaces.com/Gallery/gallery4.jpg"> <img loading="lazy" decoding="async" src="https://csimg.nyc3.digitaloceanspaces.com/Gallery/gallery4.jpg" alt="gallery" width="305" height="400"> </picture> <!--Picture 5--> <picture class="cs-image"> <source media="(max-width: 600px)" srcset="https://csimg.nyc3.digitaloceanspaces.com/Gallery/gallery5.jpg"> <source media="(min-width: 601px)" srcset="https://csimg.nyc3.digitaloceanspaces.com/Gallery/gallery5.jpg"> <img loading="lazy" decoding="async" src="https://csimg.nyc3.digitaloceanspaces.com/Gallery/gallery5.jpg" alt="gallery" width="305" height="400"> </picture> <!--Picture 6--> <picture class="cs-image"> <source media="(max-width: 600px)" srcset="https://csimg.nyc3.digitaloceanspaces.com/Gallery/gallery6.jpg"> <source media="(min-width: 601px)" srcset="https://csimg.nyc3.digitaloceanspaces.com/Gallery/gallery6.jpg"> <img loading="lazy" decoding="async" src="https://csimg.nyc3.digitaloceanspaces.com/Gallery/gallery6.jpg" alt="gallery" width="630" height="400"> </picture> </div> <!--Gallery 2--> <div class="cs-gallery cs-hidden" data-category="two"> <!--Picture 4--> <picture class="cs-image"> <source media="(max-width: 600px)" srcset="https://csimg.nyc3.digitaloceanspaces.com/Gallery/gallery4.jpg"> <source media="(min-width: 601px)" srcset="https://csimg.nyc3.digitaloceanspaces.com/Gallery/gallery4.jpg"> <img loading="lazy" decoding="async" src="https://csimg.nyc3.digitaloceanspaces.com/Gallery/gallery4.jpg" alt="gallery" width="305" height="400"> </picture> <!--Picture 2--> <picture class="cs-image"> <source media="(max-width: 600px)" srcset="https://csimg.nyc3.digitaloceanspaces.com/Gallery/gallery5.jpg"> <source media="(min-width: 601px)" srcset="https://csimg.nyc3.digitaloceanspaces.com/Gallery/gallery5.jpg"> <img loading="lazy" decoding="async" src="https://csimg.nyc3.digitaloceanspaces.com/Gallery/gallery5.jpg" alt="gallery" width="305" height="400"> </picture> <!--Picture 3--> <picture class="cs-image"> <source media="(max-width: 600px)" srcset="https://csimg.nyc3.digitaloceanspaces.com/Gallery/gallery6.jpg"> <source media="(min-width: 601px)" srcset="https://csimg.nyc3.digitaloceanspaces.com/Gallery/gallery6.jpg"> <img loading="lazy" decoding="async" src="https://csimg.nyc3.digitaloceanspaces.com/Gallery/gallery6.jpg" alt="gallery" width="630" height="400"> </picture> <!--Picture 4--> <picture class="cs-image"> <source media="(max-width: 600px)" srcset="https://csimg.nyc3.digitaloceanspaces.com/Gallery/gallery1.jpg"> <source media="(min-width: 601px)" srcset="https://csimg.nyc3.digitaloceanspaces.com/Gallery/gallery1.jpg"> <img loading="lazy" decoding="async" src="https://csimg.nyc3.digitaloceanspaces.com/Gallery/gallery1.jpg" alt="gallery" width="630" height="400"> </picture> <!--Picture 5--> <picture class="cs-image"> <source media="(max-width: 600px)" srcset="https://csimg.nyc3.digitaloceanspaces.com/Gallery/gallery2.jpg"> <source media="(min-width: 601px)" srcset="https://csimg.nyc3.digitaloceanspaces.com/Gallery/gallery2.jpg"> <img loading="lazy" decoding="async" src="https://csimg.nyc3.digitaloceanspaces.com/Gallery/gallery2.jpg" alt="gallery" width="305" height="400"> </picture> <!--Picture 6--> <picture class="cs-image"> <source media="(max-width: 600px)" srcset="https://csimg.nyc3.digitaloceanspaces.com/Gallery/gallery3.jpg"> <source media="(min-width: 601px)" srcset="https://csimg.nyc3.digitaloceanspaces.com/Gallery/gallery3.jpg"> <img loading="lazy" decoding="async" src="https://csimg.nyc3.digitaloceanspaces.com/Gallery/gallery3.jpg" alt="gallery" width="305" height="400"> </picture> </div> <!--Gallery 3--> <div class="cs-gallery cs-hidden" data-category="three"> <!--Picture 1--> <picture class="cs-image"> <source media="(max-width: 600px)" srcset="https://csimg.nyc3.digitaloceanspaces.com/Gallery/gallery3.jpg"> <source media="(min-width: 601px)" srcset="https://csimg.nyc3.digitaloceanspaces.com/Gallery/gallery3.jpg"> <img loading="lazy" decoding="async" src="https://csimg.nyc3.digitaloceanspaces.com/Gallery/gallery3.jpg" alt="gallery" width="305" height="400"> </picture> <!--Picture 2--> <picture class="cs-image"> <source media="(max-width: 600px)" srcset="https://csimg.nyc3.digitaloceanspaces.com/Gallery/gallery4.jpg"> <source media="(min-width: 601px)" srcset="https://csimg.nyc3.digitaloceanspaces.com/Gallery/gallery4.jpg"> <img loading="lazy" decoding="async" src="https://csimg.nyc3.digitaloceanspaces.com/Gallery/gallery4.jpg" alt="gallery" width="305" height="400"> </picture> <!--Picture 3--> <picture class="cs-image"> <source media="(max-width: 600px)" srcset="https://csimg.nyc3.digitaloceanspaces.com/Gallery/gallery1.jpg"> <source media="(min-width: 601px)" srcset="https://csimg.nyc3.digitaloceanspaces.com/Gallery/gallery1.jpg"> <img loading="lazy" decoding="async" src="https://csimg.nyc3.digitaloceanspaces.com/Gallery/gallery1.jpg" alt="gallery" width="630" height="400"> </picture> <!--Picture 4--> <picture class="cs-image"> <source media="(max-width: 600px)" srcset="https://csimg.nyc3.digitaloceanspaces.com/Gallery/gallery2.jpg"> <source media="(min-width: 601px)" srcset="https://csimg.nyc3.digitaloceanspaces.com/Gallery/gallery2.jpg"> <img loading="lazy" decoding="async" src="https://csimg.nyc3.digitaloceanspaces.com/Gallery/gallery2.jpg" alt="gallery" width="305" height="400"> </picture> <!--Picture 5--> <picture class="cs-image"> <source media="(max-width: 600px)" srcset="https://csimg.nyc3.digitaloceanspaces.com/Gallery/gallery5.jpg"> <source media="(min-width: 601px)" srcset="https://csimg.nyc3.digitaloceanspaces.com/Gallery/gallery5.jpg"> <img loading="lazy" decoding="async" src="https://csimg.nyc3.digitaloceanspaces.com/Gallery/gallery5.jpg" alt="gallery" width="305" height="400"> </picture> <!--Picture 6--> <picture class="cs-image"> <source media="(max-width: 600px)" srcset="https://csimg.nyc3.digitaloceanspaces.com/Gallery/gallery6.jpg"> <source media="(min-width: 601px)" srcset="https://csimg.nyc3.digitaloceanspaces.com/Gallery/gallery6.jpg"> <img loading="lazy" decoding="async" src="https://csimg.nyc3.digitaloceanspaces.com/Gallery/gallery6.jpg" alt="gallery" width="630" height="400"> </picture> </div> <!--Gallery 4--> <div class="cs-gallery cs-hidden" data-category="four"> <!--Picture 1--> <picture class="cs-image"> <source media="(max-width: 600px)" srcset="https://csimg.nyc3.digitaloceanspaces.com/Gallery/gallery1.jpg"> <source media="(min-width: 601px)" srcset="https://csimg.nyc3.digitaloceanspaces.com/Gallery/gallery1.jpg"> <img loading="lazy" decoding="async" src="https://csimg.nyc3.digitaloceanspaces.com/Gallery/gallery1.jpg" alt="gallery" width="630" height="400"> </picture> <!--Picture 2--> <picture class="cs-image"> <source media="(max-width: 600px)" srcset="https://csimg.nyc3.digitaloceanspaces.com/Gallery/gallery5.jpg"> <source media="(min-width: 601px)" srcset="https://csimg.nyc3.digitaloceanspaces.com/Gallery/gallery5.jpg"> <img loading="lazy" decoding="async" src="https://csimg.nyc3.digitaloceanspaces.com/Gallery/gallery5.jpg" alt="gallery" width="305" height="400"> </picture> <!--Picture 3--> <picture class="cs-image"> <source media="(max-width: 600px)" srcset="https://csimg.nyc3.digitaloceanspaces.com/Gallery/gallery6.jpg"> <source media="(min-width: 601px)" srcset="https://csimg.nyc3.digitaloceanspaces.com/Gallery/gallery6.jpg"> <img loading="lazy" decoding="async" src="https://csimg.nyc3.digitaloceanspaces.com/Gallery/gallery6.jpg" alt="gallery" width="630" height="400"> </picture> <!--Picture 4--> <picture class="cs-image"> <source media="(max-width: 600px)" srcset="https://csimg.nyc3.digitaloceanspaces.com/Gallery/gallery2.jpg"> <source media="(min-width: 601px)" srcset="https://csimg.nyc3.digitaloceanspaces.com/Gallery/gallery2.jpg"> <img loading="lazy" decoding="async" src="https://csimg.nyc3.digitaloceanspaces.com/Gallery/gallery2.jpg" alt="gallery" width="305" height="400"> </picture> <!--Picture 5--> <picture class="cs-image"> <source media="(max-width: 600px)" srcset="https://csimg.nyc3.digitaloceanspaces.com/Gallery/gallery3.jpg"> <source media="(min-width: 601px)" srcset="https://csimg.nyc3.digitaloceanspaces.com/Gallery/gallery3.jpg"> <img loading="lazy" decoding="async" src="https://csimg.nyc3.digitaloceanspaces.com/Gallery/gallery3.jpg" alt="gallery" width="305" height="400"> </picture> <!--Picture 6--> <picture class="cs-image"> <source media="(max-width: 600px)" srcset="https://csimg.nyc3.digitaloceanspaces.com/Gallery/gallery4.jpg"> <source media="(min-width: 601px)" srcset="https://csimg.nyc3.digitaloceanspaces.com/Gallery/gallery4.jpg"> <img loading="lazy" decoding="async" src="https://csimg.nyc3.digitaloceanspaces.com/Gallery/gallery4.jpg" alt="gallery" width="305" height="400"> </picture> </div> <!--Gallery 5--> <div class="cs-gallery cs-hidden" data-category="five"> <!--Picture 1--> <picture class="cs-image"> <source media="(max-width: 600px)" srcset="https://csimg.nyc3.digitaloceanspaces.com/Gallery/gallery1.jpg"> <source media="(min-width: 601px)" srcset="https://csimg.nyc3.digitaloceanspaces.com/Gallery/gallery1.jpg"> <img loading="lazy" decoding="async" src="https://csimg.nyc3.digitaloceanspaces.com/Gallery/gallery1.jpg" alt="gallery" width="630" height="400"> </picture> <!--Picture 2--> <picture class="cs-image"> <source media="(max-width: 600px)" srcset="https://csimg.nyc3.digitaloceanspaces.com/Gallery/gallery4.jpg"> <source media="(min-width: 601px)" srcset="https://csimg.nyc3.digitaloceanspaces.com/Gallery/gallery4.jpg"> <img loading="lazy" decoding="async" src="https://csimg.nyc3.digitaloceanspaces.com/Gallery/gallery4.jpg" alt="gallery" width="305" height="400"> </picture> <!--Picture 3--> <picture class="cs-image"> <source media="(max-width: 600px)" srcset="https://csimg.nyc3.digitaloceanspaces.com/Gallery/gallery2.jpg"> <source media="(min-width: 601px)" srcset="https://csimg.nyc3.digitaloceanspaces.com/Gallery/gallery2.jpg"> <img loading="lazy" decoding="async" src="https://csimg.nyc3.digitaloceanspaces.com/Gallery/gallery2.jpg" alt="gallery" width="305" height="400"> </picture> <!--Picture 4--> <picture class="cs-image"> <source media="(max-width: 600px)" srcset="https://csimg.nyc3.digitaloceanspaces.com/Gallery/gallery3.jpg"> <source media="(min-width: 601px)" srcset="https://csimg.nyc3.digitaloceanspaces.com/Gallery/gallery3.jpg"> <img loading="lazy" decoding="async" src="https://csimg.nyc3.digitaloceanspaces.com/Gallery/gallery3.jpg" alt="gallery" width="305" height="400"> </picture> <!--Picture 5--> <picture class="cs-image"> <source media="(max-width: 600px)" srcset="https://csimg.nyc3.digitaloceanspaces.com/Gallery/gallery5.jpg"> <source media="(min-width: 601px)" srcset="https://csimg.nyc3.digitaloceanspaces.com/Gallery/gallery5.jpg"> <img loading="lazy" decoding="async" src="https://csimg.nyc3.digitaloceanspaces.com/Gallery/gallery5.jpg" alt="gallery" width="305" height="400"> </picture> <!--Picture 6--> <picture class="cs-image"> <source media="(max-width: 600px)" srcset="https://csimg.nyc3.digitaloceanspaces.com/Gallery/gallery6.jpg"> <source media="(min-width: 601px)" srcset="https://csimg.nyc3.digitaloceanspaces.com/Gallery/gallery6.jpg"> <img loading="lazy" decoding="async" src="https://csimg.nyc3.digitaloceanspaces.com/Gallery/gallery6.jpg" alt="gallery" width="630" height="400"> </picture> </div> </div> </div> </section>
/*-- -------------------------- --> <--- Gallery --> <--- -------------------------- -*/ /* Mobile - 360px */ @media only screen and (min-width: 0rem) { #gallery-404 { padding: var(--sectionPadding); overflow: hidden; position: relative; } #gallery-404 .cs-container { width: 100%; /* changes to 1280px at tablet */ max-width: 34.375rem; margin: auto; display: flex; flex-direction: column; align-items: center; /* 48px - 64px */ gap: clamp(3rem, 6vw, 4rem); position: relative; } #gallery-404 .cs-content { /* set text align to left if content needs to be left aligned */ text-align: center; width: 100%; display: flex; flex-direction: column; /* centers content horizontally, set to flex-start to left align */ align-items: center; } #gallery-404 .cs-title { max-width: 20ch; } #gallery-404 .cs-button-group { margin: 0; display: flex; justify-content: center; align-items: center; flex-wrap: wrap; row-gap: 0.5rem; column-gap: 2rem; } #gallery-404 .cs-button { font-size: 1rem; line-height: 1.5em; color: var(--bodyTextColor); background-color: transparent; border: none; transition: color 0.3s; } #gallery-404 .cs-button:hover { color: var(--primary); cursor: pointer; } #gallery-404 .cs-button.cs-active { color: var(--primary); } #gallery-404 .cs-gallery-wrapper { width: 100%; position: relative; z-index: 1; } #gallery-404 .cs-gallery { width: 100%; padding: 0; margin: 0; opacity: 1; visibility: visible; position: relative; display: flex; justify-content: center; align-items: center; flex-wrap: wrap; /* 16px - 20px */ gap: clamp(1rem, 1.5vw, 1.25rem); transition: transform 0.7s, opacity 0.3s, visibility 0.5s, top 0.3s, left 0.3s; /* makes the transform scaling origin the top left corner, dictates the direction by which the scale transforms animate towards */ transform-origin: left top; } #gallery-404 .cs-gallery.cs-hidden { /* by using visibility:hidden instead of display:none, we can see the animations from the opacity and transforms, display:none won't render animations. */ visibility: hidden; /* prevents the mouse from interacting with it */ pointer-events: none; /* hidden galleries have a 0 opacity, and we animate the opacity to 1 when they become active */ opacity: 0; /* this top and left value help control the animation, by setting it to position absolute and left 0, the gallery won't fly off screen to the left, it will stop its position to be at the left edge of the .cs-container (left: 0). Same for the top:0 value, the gallery won't go past that position when it animates */ top: 0; left: 0; position: absolute; /* prevents the hidden galleries from overflowing the section, and makes a nice animations to transition to and from */ transform: scaleY(0) scaleX(0); } #gallery-404 .cs-gallery.cs-hidden .cs-image { /* when gallery is hidden, add these styles to the cs-image to animate from when cs-hidden is removed from the .cs-gallery */ transform: translateY(2.1875rem); opacity: 0; } #gallery-404 .cs-image { border-radius: 1.25rem; width: 47%; aspect-ratio: 1; /* clips the image corners */ overflow: hidden; display: block; position: relative; /* when .cs-hidden is removed from the .cs-gallery, reset these values and animate between their hidden styles */ transform: translateY(0rem); opacity: 1; transition: opacity 0.6s, transform 0.6s; } #gallery-404 .cs-image:nth-of-type(1) { /* changes transition delays at desktop */ /* these delays stagger the reveal of each image so they all go one after the other and not all at once */ transition-delay: 0.15s; } #gallery-404 .cs-image:nth-of-type(2) { transition-delay: 0.3s; } #gallery-404 .cs-image:nth-of-type(3) { transition-delay: 0.45s; } #gallery-404 .cs-image:nth-of-type(4) { transition-delay: 0.6s; } #gallery-404 .cs-image:nth-of-type(5) { transition-delay: 0.75s; } #gallery-404 .cs-image:nth-of-type(6) { transition-delay: 0.9s; } #gallery-404 .cs-image img { position: absolute; top: 0; left: 0; height: 100%; width: 100%; /* makes it act like a background image */ object-fit: cover; } } /* Tablet - 768px */ @media only screen and (min-width: 48rem) { #gallery-404 .cs-container { max-width: 80rem; } #gallery-404 .cs-content { text-align: left; flex-direction: row; align-items: flex-end; justify-content: space-between; } #gallery-404 .cs-title { margin: 0; } #gallery-404 .cs-image { width: 31.8%; aspect-ratio: 1; } } /* Desktop - 1300px */ @media only screen and (min-width: 81.25rem) { #gallery-404 .cs-flex { max-width: 34.375rem; } #gallery-404 .cs-gallery { align-items: stretch; justify-content: center; } #gallery-404 .cs-image { width: 39.375rem; max-width: 100%; height: 25rem; } #gallery-404 .cs-image:nth-of-type(2), #gallery-404 .cs-image:nth-of-type(3), #gallery-404 .cs-image:nth-of-type(4), #gallery-404 .cs-image:nth-of-type(5) { width: 19.0625rem; } #gallery-404 .cs-image:nth-of-type(1) { /* these delays stagger the reveal of each image so they all go one after the other and not all at once */ transition-delay: 0.15s; } #gallery-404 .cs-image:nth-of-type(2) { transition-delay: 0.3s; } #gallery-404 .cs-image:nth-of-type(3) { transition-delay: 0.45s; } #gallery-404 .cs-image:nth-of-type(4) { transition-delay: 0.15s; } #gallery-404 .cs-image:nth-of-type(5) { transition-delay: 0.3s; } #gallery-404 .cs-image:nth-of-type(6) { transition-delay: 0.45s; } }
/*-- -------------------------- --> <--- Gallery --> <--- -------------------------- -*/ /* Mobile - 360px */ @media only screen and (min-width: 0rem) { #gallery-404 { padding: var(--sectionPadding); overflow: hidden; position: relative; } #gallery-404 .cs-container { width: 100%; /* changes to 1280px at tablet */ max-width: 34.375rem; margin: auto; display: flex; flex-direction: column; align-items: center; /* 48px - 64px */ gap: clamp(3rem, 6vw, 4rem); position: relative; } #gallery-404 .cs-content { /* set text align to left if content needs to be left aligned */ text-align: center; width: 100%; display: flex; flex-direction: column; /* centers content horizontally, set to flex-start to left align */ align-items: center; } #gallery-404 .cs-title { max-width: 20ch; } #gallery-404 .cs-button-group { margin: 0; display: flex; justify-content: center; align-items: center; flex-wrap: wrap; row-gap: 0.5rem; column-gap: 2rem; } #gallery-404 .cs-button { font-size: 1rem; line-height: 1.5em; color: var(--bodyTextColor); background-color: transparent; border: none; transition: color 0.3s; } #gallery-404 .cs-button:hover { color: var(--primary); cursor: pointer; } #gallery-404 .cs-button.cs-active { color: var(--primary); } #gallery-404 .cs-gallery-wrapper { width: 100%; position: relative; z-index: 1; } #gallery-404 .cs-gallery { width: 100%; padding: 0; margin: 0; opacity: 1; visibility: visible; position: relative; display: flex; justify-content: center; align-items: center; flex-wrap: wrap; /* 16px - 20px */ gap: clamp(1rem, 1.5vw, 1.25rem); transition: transform 0.7s, opacity 0.3s, visibility 0.5s, top 0.3s, left 0.3s; /* makes the transform scaling origin the top left corner, dictates the direction by which the scale transforms animate towards */ transform-origin: left top; } #gallery-404 .cs-gallery.cs-hidden { /* by using visibility:hidden instead of display:none, we can see the animations from the opacity and transforms, display:none won't render animations. */ visibility: hidden; /* prevents the mouse from interacting with it */ pointer-events: none; /* hidden galleries have a 0 opacity, and we animate the opacity to 1 when they become active */ opacity: 0; /* this top and left value help control the animation, by setting it to position absolute and left 0, the gallery won't fly off screen to the left, it will stop its position to be at the left edge of the .cs-container (left: 0). Same for the top:0 value, the gallery won't go past that position when it animates */ top: 0; left: 0; position: absolute; /* prevents the hidden galleries from overflowing the section, and makes a nice animations to transition to and from */ transform: scaleY(0) scaleX(0); } #gallery-404 .cs-gallery.cs-hidden .cs-image { /* when gallery is hidden, add these styles to the cs-image to animate from when cs-hidden is removed from the .cs-gallery */ transform: translateY(2.1875rem); opacity: 0; } #gallery-404 .cs-image { border-radius: 1.25rem; width: 47%; aspect-ratio: 1; /* clips the image corners */ overflow: hidden; display: block; position: relative; /* when .cs-hidden is removed from the .cs-gallery, reset these values and animate between their hidden styles */ transform: translateY(0rem); opacity: 1; transition: opacity 0.6s, transform 0.6s; } #gallery-404 .cs-image:nth-of-type(1) { /* changes transition delays at desktop */ /* these delays stagger the reveal of each image so they all go one after the other and not all at once */ transition-delay: 0.15s; } #gallery-404 .cs-image:nth-of-type(2) { transition-delay: 0.3s; } #gallery-404 .cs-image:nth-of-type(3) { transition-delay: 0.45s; } #gallery-404 .cs-image:nth-of-type(4) { transition-delay: 0.6s; } #gallery-404 .cs-image:nth-of-type(5) { transition-delay: 0.75s; } #gallery-404 .cs-image:nth-of-type(6) { transition-delay: 0.9s; } #gallery-404 .cs-image img { position: absolute; top: 0; left: 0; height: 100%; width: 100%; /* makes it act like a background image */ object-fit: cover; } } /* Tablet - 768px */ @media only screen and (min-width: 48rem) { #gallery-404 .cs-container { max-width: 80rem; } #gallery-404 .cs-content { text-align: left; flex-direction: row; align-items: flex-end; justify-content: space-between; } #gallery-404 .cs-title { margin: 0; } #gallery-404 .cs-image { width: 31.8%; aspect-ratio: 1; } } /* Desktop - 1300px */ @media only screen and (min-width: 81.25rem) { #gallery-404 .cs-flex { max-width: 34.375rem; } #gallery-404 .cs-gallery { align-items: stretch; justify-content: center; } #gallery-404 .cs-image { width: 39.375rem; max-width: 100%; height: 25rem; } #gallery-404 .cs-image:nth-of-type(2), #gallery-404 .cs-image:nth-of-type(3), #gallery-404 .cs-image:nth-of-type(4), #gallery-404 .cs-image:nth-of-type(5) { width: 19.0625rem; } #gallery-404 .cs-image:nth-of-type(1) { /* these delays stagger the reveal of each image so they all go one after the other and not all at once */ transition-delay: 0.15s; } #gallery-404 .cs-image:nth-of-type(2) { transition-delay: 0.3s; } #gallery-404 .cs-image:nth-of-type(3) { transition-delay: 0.45s; } #gallery-404 .cs-image:nth-of-type(4) { transition-delay: 0.15s; } #gallery-404 .cs-image:nth-of-type(5) { transition-delay: 0.3s; } #gallery-404 .cs-image:nth-of-type(6) { transition-delay: 0.45s; } } /* Dark Mode */ @media only screen and (min-width: 0rem) { body.dark-mode #gallery-404 .cs-topper { color: var(--primaryLight); } body.dark-mode #gallery-404 .cs-title, body.dark-mode #gallery-404 .cs-text, body.dark-mode #gallery-404 .cs-button { color: var(--bodyTextColorWhite); } body.dark-mode #gallery-404 .cs-button.cs-active { color: var(--primaryLight); } }
/*-- -------------------------- --> <--- Gallery --> <--- -------------------------- -*/ /* Mobile - 360px */ @media only screen and (min-width: 0rem) { #gallery-404 { padding: var(--sectionPadding); overflow: hidden; position: relative; .cs-container { width: 100%; /* changes to 1280px at tablet */ max-width: (550/16rem); margin: auto; display: flex; flex-direction: column; align-items: center; /* 48px - 64px */ gap: clamp(3rem, 6vw, 4rem); position: relative; } .cs-content { /* set text align to left if content needs to be left aligned */ text-align: center; width: 100%; display: flex; flex-direction: column; /* centers content horizontally, set to flex-start to left align */ align-items: center; } .cs-title { max-width: 20ch; } .cs-button-group { margin: 0; display: flex; justify-content: center; align-items: center; flex-wrap: wrap; row-gap: (8/16rem); column-gap: (32/16rem); } .cs-button { font-size: (16/16rem); line-height: 1.5em; color: var(--bodyTextColor); background-color: transparent; border: none; transition: color 0.3s; &:hover { color: var(--primary); cursor: pointer; } &.cs-active { color: var(--primary); } } .cs-gallery-wrapper { width: 100%; position: relative; z-index: 1; } .cs-gallery { width: 100%; padding: 0; margin: 0; opacity: 1; visibility: visible; position: relative; display: flex; justify-content: center; align-items: center; flex-wrap: wrap; /* 16px - 20px */ gap: clamp(1rem, 1.5vw, 1.25rem); transition: transform 0.7s, opacity 0.3s, visibility 0.5s, top 0.3s, left 0.3s; /* makes the transform scaling origin the top left corner, dictates the direction by which the scale transforms animate towards */ transform-origin: left top; &.cs-hidden { position: absolute; /* by using visibility:hidden instead of display:none, we can see the animations from the opacity and transforms, display:none won't render animations. */ visibility: hidden; /* prevents the mouse from interacting with it */ pointer-events: none; /* hidden galleries have a 0 opacity, and we animate the opacity to 1 when they become active */ opacity: 0; /* this top and left value help control the animation, by setting it to position absolute and left 0, the gallery won't fly off screen to the left, it will stop its position to be at the left edge of the .cs-container (left: 0). Same for the top:0 value, the gallery won't go past that position when it animates */ top: 0; left: 0; position: absolute; /* prevents the hidden galleries from overflowing the section, and makes a nice animations to transition to and from */ transform: scaleY(0) scaleX(0); .cs-image { /* when gallery is hidden, add these styles to the cs-image to animate from when cs-hidden is removed from the .cs-gallery */ transform: translateY(2.1875rem); opacity: 0; } } } .cs-image { border-radius: (20/16rem); width: 47%; aspect-ratio: 1; /* clips the image corners */ overflow: hidden; display: block; position: relative; /* when .cs-hidden is removed from the .cs-gallery, reset these values and animate between their hidden styles */ transform: translateY(0rem); opacity: 1; transition: opacity 0.6s, transform 0.6s; &:nth-of-type(1) { /* changes transition delays at desktop */ /* these delays stagger the reveal of each image so they all go one after the other and not all at once */ transition-delay: 0.15s; } &:nth-of-type(2) { transition-delay: 0.3s; } &:nth-of-type(3) { transition-delay: 0.45s; } &:nth-of-type(4) { transition-delay: 0.6s; } &:nth-of-type(5) { transition-delay: 0.75s; } &:nth-of-type(6) { transition-delay: 0.9s; } img { position: absolute; top: 0; left: 0; height: 100%; width: 100%; /* makes it act like a background image */ object-fit: cover; } } } } /* Tablet - 768px */ @media only screen and (min-width: 48rem) { #gallery-404 { .cs-container { max-width: (1280/16rem); } .cs-content { text-align: left; flex-direction: row; align-items: flex-end; justify-content: space-between; } .cs-title { margin: 0; } .cs-image { width: 31.8%; aspect-ratio: 1; } } } /* Desktop - 1300px */ @media only screen and (min-width: 81.25rem) { #gallery-404 { .cs-flex { max-width: (550/16rem); } .cs-gallery { align-items: stretch; justify-content: center; } .cs-image { width: (630/16rem); max-width: 100%; height: (400/16rem); &:nth-of-type(2), &:nth-of-type(3), &:nth-of-type(4), &:nth-of-type(5) { width: (305/16rem); } &:nth-of-type(1) { /* these delays stagger the reveal of each image so they all go one after the other and not all at once */ transition-delay: 0.15s; } &:nth-of-type(2) { transition-delay: 0.3s; } &:nth-of-type(3) { transition-delay: 0.45s; } &:nth-of-type(4) { transition-delay: 0.15s; } &:nth-of-type(5) { transition-delay: 0.3s; } &:nth-of-type(6) { transition-delay: 0.45s; } } } }
/*-- -------------------------- --> <--- Gallery --> <--- -------------------------- -*/ /* Mobile - 360px */ @media only screen and (min-width: 0rem) { #gallery-404 { padding: var(--sectionPadding); overflow: hidden; position: relative; .cs-container { width: 100%; /* changes to 1280px at tablet */ max-width: (550/16rem); margin: auto; display: flex; flex-direction: column; align-items: center; /* 48px - 64px */ gap: clamp(3rem, 6vw, 4rem); position: relative; } .cs-content { /* set text align to left if content needs to be left aligned */ text-align: center; width: 100%; display: flex; flex-direction: column; /* centers content horizontally, set to flex-start to left align */ align-items: center; } .cs-title { max-width: 20ch; } .cs-button-group { margin: 0; display: flex; justify-content: center; align-items: center; flex-wrap: wrap; row-gap: (8/16rem); column-gap: (32/16rem); } .cs-button { font-size: (16/16rem); line-height: 1.5em; color: var(--bodyTextColor); background-color: transparent; border: none; transition: color 0.3s; &:hover { color: var(--primary); cursor: pointer; } &.cs-active { color: var(--primary); } } .cs-gallery-wrapper { width: 100%; position: relative; z-index: 1; } .cs-gallery { width: 100%; padding: 0; margin: 0; opacity: 1; visibility: visible; position: relative; display: flex; justify-content: center; align-items: center; flex-wrap: wrap; /* 16px - 20px */ gap: clamp(1rem, 1.5vw, 1.25rem); transition: transform 0.7s, opacity 0.3s, visibility 0.5s, top 0.3s, left 0.3s; /* makes the transform scaling origin the top left corner, dictates the direction by which the scale transforms animate towards */ transform-origin: left top; &.cs-hidden { position: absolute; /* by using visibility:hidden instead of display:none, we can see the animations from the opacity and transforms, display:none won't render animations. */ visibility: hidden; /* prevents the mouse from interacting with it */ pointer-events: none; /* hidden galleries have a 0 opacity, and we animate the opacity to 1 when they become active */ opacity: 0; /* this top and left value help control the animation, by setting it to position absolute and left 0, the gallery won't fly off screen to the left, it will stop its position to be at the left edge of the .cs-container (left: 0). Same for the top:0 value, the gallery won't go past that position when it animates */ top: 0; left: 0; position: absolute; /* prevents the hidden galleries from overflowing the section, and makes a nice animations to transition to and from */ transform: scaleY(0) scaleX(0); .cs-image { /* when gallery is hidden, add these styles to the cs-image to animate from when cs-hidden is removed from the .cs-gallery */ transform: translateY(2.1875rem); opacity: 0; } } } .cs-image { border-radius: (20/16rem); width: 47%; aspect-ratio: 1; /* clips the image corners */ overflow: hidden; display: block; position: relative; /* when .cs-hidden is removed from the .cs-gallery, reset these values and animate between their hidden styles */ transform: translateY(0rem); opacity: 1; transition: opacity 0.6s, transform 0.6s; &:nth-of-type(1) { /* changes transition delays at desktop */ /* these delays stagger the reveal of each image so they all go one after the other and not all at once */ transition-delay: 0.15s; } &:nth-of-type(2) { transition-delay: 0.3s; } &:nth-of-type(3) { transition-delay: 0.45s; } &:nth-of-type(4) { transition-delay: 0.6s; } &:nth-of-type(5) { transition-delay: 0.75s; } &:nth-of-type(6) { transition-delay: 0.9s; } img { position: absolute; top: 0; left: 0; height: 100%; width: 100%; /* makes it act like a background image */ object-fit: cover; } } } } /* Tablet - 768px */ @media only screen and (min-width: 48rem) { #gallery-404 { .cs-container { max-width: (1280/16rem); } .cs-content { text-align: left; flex-direction: row; align-items: flex-end; justify-content: space-between; } .cs-title { margin: 0; } .cs-image { width: 31.8%; aspect-ratio: 1; } } } /* Desktop - 1300px */ @media only screen and (min-width: 81.25rem) { #gallery-404 { .cs-flex { max-width: (550/16rem); } .cs-gallery { align-items: stretch; justify-content: center; } .cs-image { width: (630/16rem); max-width: 100%; height: (400/16rem); &:nth-of-type(2), &:nth-of-type(3), &:nth-of-type(4), &:nth-of-type(5) { width: (305/16rem); } &:nth-of-type(1) { /* these delays stagger the reveal of each image so they all go one after the other and not all at once */ transition-delay: 0.15s; } &:nth-of-type(2) { transition-delay: 0.3s; } &:nth-of-type(3) { transition-delay: 0.45s; } &:nth-of-type(4) { transition-delay: 0.15s; } &:nth-of-type(5) { transition-delay: 0.3s; } &:nth-of-type(6) { transition-delay: 0.45s; } } } } /* Dark Mode */ @media only screen and (min-width: 0rem) { body.dark-mode { #gallery-404 { .cs-topper { color: var(--primaryLight); } .cs-title, .cs-text, .cs-button { color: var(--bodyTextColorWhite); } .cs-button { &.cs-active { color: var(--primaryLight); } } } } }
/*-- -------------------------- --> <--- Gallery --> <--- -------------------------- -*/ /* Mobile - 360px */ @media only screen and (min-width: 0rem) { #gallery-404 { padding: var(--sectionPadding); overflow: hidden; position: relative; .cs-container { width: 100%; /* changes to 1280px at tablet */ max-width: calc(550/16 * 1rem); margin: auto; display: flex; flex-direction: column; align-items: center; /* 48px - 64px */ gap: clamp(3rem, 6vw, 4rem); position: relative; } .cs-content { /* set text align to left if content needs to be left aligned */ text-align: center; width: 100%; display: flex; flex-direction: column; /* centers content horizontally, set to flex-start to left align */ align-items: center; } .cs-title { max-width: 20ch; } .cs-button-group { margin: 0; display: flex; justify-content: center; align-items: center; flex-wrap: wrap; row-gap: calc(8/16 * 1rem); column-gap: calc(32/16 * 1rem); } .cs-button { font-size: calc(16/16 * 1rem); line-height: 1.5em; color: var(--bodyTextColor); background-color: transparent; border: none; transition: color 0.3s; &:hover { color: var(--primary); cursor: pointer; } &.cs-active { color: var(--primary); } } .cs-gallery-wrapper { width: 100%; position: relative; z-index: 1; } .cs-gallery { width: 100%; padding: 0; margin: 0; opacity: 1; visibility: visible; position: relative; display: flex; justify-content: center; align-items: center; flex-wrap: wrap; /* 16px - 20px */ gap: clamp(1rem, 1.5vw, 1.25rem); transition: transform 0.7s, opacity 0.3s, visibility 0.5s, top 0.3s, left 0.3s; /* makes the transform scaling origin the top left corner, dictates the direction by which the scale transforms animate towards */ transform-origin: left top; &.cs-hidden { position: absolute; /* by using visibility:hidden instead of display:none, we can see the animations from the opacity and transforms, display:none won't render animations. */ visibility: hidden; /* prevents the mouse from interacting with it */ pointer-events: none; /* hidden galleries have a 0 opacity, and we animate the opacity to 1 when they become active */ opacity: 0; /* this top and left value help control the animation, by setting it to position absolute and left 0, the gallery won't fly off screen to the left, it will stop its position to be at the left edge of the .cs-container (left: 0). Same for the top:0 value, the gallery won't go past that position when it animates */ top: 0; left: 0; position: absolute; /* prevents the hidden galleries from overflowing the section, and makes a nice animations to transition to and from */ transform: scaleY(0) scaleX(0); .cs-image { /* when gallery is hidden, add these styles to the cs-image to animate from when cs-hidden is removed from the .cs-gallery */ transform: translateY(2.1875rem); opacity: 0; } } } .cs-image { border-radius: calc(20/16 * 1rem); width: 47%; aspect-ratio: 1; /* clips the image corners */ overflow: hidden; display: block; position: relative; /* when .cs-hidden is removed from the .cs-gallery, reset these values and animate between their hidden styles */ transform: translateY(0rem); opacity: 1; transition: opacity 0.6s, transform 0.6s; &:nth-of-type(1) { /* changes transition delays at desktop */ /* these delays stagger the reveal of each image so they all go one after the other and not all at once */ transition-delay: 0.15s; } &:nth-of-type(2) { transition-delay: 0.3s; } &:nth-of-type(3) { transition-delay: 0.45s; } &:nth-of-type(4) { transition-delay: 0.6s; } &:nth-of-type(5) { transition-delay: 0.75s; } &:nth-of-type(6) { transition-delay: 0.9s; } img { position: absolute; top: 0; left: 0; height: 100%; width: 100%; /* makes it act like a background image */ object-fit: cover; } } } } /* Tablet - 768px */ @media only screen and (min-width: 48rem) { #gallery-404 { .cs-container { max-width: calc(1280/16 * 1rem); } .cs-content { text-align: left; flex-direction: row; align-items: flex-end; justify-content: space-between; } .cs-title { margin: 0; } .cs-image { width: 31.8%; aspect-ratio: 1; } } } /* Desktop - 1300px */ @media only screen and (min-width: 81.25rem) { #gallery-404 { .cs-flex { max-width: calc(550/16 * 1rem); } .cs-gallery { align-items: stretch; justify-content: center; } .cs-image { width: calc(630/16 * 1rem); max-width: 100%; height: calc(400/16 * 1rem); &:nth-of-type(2), &:nth-of-type(3), &:nth-of-type(4), &:nth-of-type(5) { width: calc(305/16 * 1rem); } &:nth-of-type(1) { /* these delays stagger the reveal of each image so they all go one after the other and not all at once */ transition-delay: 0.15s; } &:nth-of-type(2) { transition-delay: 0.3s; } &:nth-of-type(3) { transition-delay: 0.45s; } &:nth-of-type(4) { transition-delay: 0.15s; } &:nth-of-type(5) { transition-delay: 0.3s; } &:nth-of-type(6) { transition-delay: 0.45s; } } } }
/*-- -------------------------- --> <--- Gallery --> <--- -------------------------- -*/ /* Mobile - 360px */ @media only screen and (min-width: 0rem) { #gallery-404 { padding: var(--sectionPadding); overflow: hidden; position: relative; .cs-container { width: 100%; /* changes to 1280px at tablet */ max-width: calc(550/16 * 1rem); margin: auto; display: flex; flex-direction: column; align-items: center; /* 48px - 64px */ gap: clamp(3rem, 6vw, 4rem); position: relative; } .cs-content { /* set text align to left if content needs to be left aligned */ text-align: center; width: 100%; display: flex; flex-direction: column; /* centers content horizontally, set to flex-start to left align */ align-items: center; } .cs-title { max-width: 20ch; } .cs-button-group { margin: 0; display: flex; justify-content: center; align-items: center; flex-wrap: wrap; row-gap: calc(8/16 * 1rem); column-gap: calc(32/16 * 1rem); } .cs-button { font-size: calc(16/16 * 1rem); line-height: 1.5em; color: var(--bodyTextColor); background-color: transparent; border: none; transition: color 0.3s; &:hover { color: var(--primary); cursor: pointer; } &.cs-active { color: var(--primary); } } .cs-gallery-wrapper { width: 100%; position: relative; z-index: 1; } .cs-gallery { width: 100%; padding: 0; margin: 0; opacity: 1; visibility: visible; position: relative; display: flex; justify-content: center; align-items: center; flex-wrap: wrap; /* 16px - 20px */ gap: clamp(1rem, 1.5vw, 1.25rem); transition: transform 0.7s, opacity 0.3s, visibility 0.5s, top 0.3s, left 0.3s; /* makes the transform scaling origin the top left corner, dictates the direction by which the scale transforms animate towards */ transform-origin: left top; &.cs-hidden { position: absolute; /* by using visibility:hidden instead of display:none, we can see the animations from the opacity and transforms, display:none won't render animations. */ visibility: hidden; /* prevents the mouse from interacting with it */ pointer-events: none; /* hidden galleries have a 0 opacity, and we animate the opacity to 1 when they become active */ opacity: 0; /* this top and left value help control the animation, by setting it to position absolute and left 0, the gallery won't fly off screen to the left, it will stop its position to be at the left edge of the .cs-container (left: 0). Same for the top:0 value, the gallery won't go past that position when it animates */ top: 0; left: 0; position: absolute; /* prevents the hidden galleries from overflowing the section, and makes a nice animations to transition to and from */ transform: scaleY(0) scaleX(0); .cs-image { /* when gallery is hidden, add these styles to the cs-image to animate from when cs-hidden is removed from the .cs-gallery */ transform: translateY(2.1875rem); opacity: 0; } } } .cs-image { border-radius: calc(20/16 * 1rem); width: 47%; aspect-ratio: 1; /* clips the image corners */ overflow: hidden; display: block; position: relative; /* when .cs-hidden is removed from the .cs-gallery, reset these values and animate between their hidden styles */ transform: translateY(0rem); opacity: 1; transition: opacity 0.6s, transform 0.6s; &:nth-of-type(1) { /* changes transition delays at desktop */ /* these delays stagger the reveal of each image so they all go one after the other and not all at once */ transition-delay: 0.15s; } &:nth-of-type(2) { transition-delay: 0.3s; } &:nth-of-type(3) { transition-delay: 0.45s; } &:nth-of-type(4) { transition-delay: 0.6s; } &:nth-of-type(5) { transition-delay: 0.75s; } &:nth-of-type(6) { transition-delay: 0.9s; } img { position: absolute; top: 0; left: 0; height: 100%; width: 100%; /* makes it act like a background image */ object-fit: cover; } } } } /* Tablet - 768px */ @media only screen and (min-width: 48rem) { #gallery-404 { .cs-container { max-width: calc(1280/16 * 1rem); } .cs-content { text-align: left; flex-direction: row; align-items: flex-end; justify-content: space-between; } .cs-title { margin: 0; } .cs-image { width: 31.8%; aspect-ratio: 1; } } } /* Desktop - 1300px */ @media only screen and (min-width: 81.25rem) { #gallery-404 { .cs-flex { max-width: calc(550/16 * 1rem); } .cs-gallery { align-items: stretch; justify-content: center; } .cs-image { width: calc(630/16 * 1rem); max-width: 100%; height: calc(400/16 * 1rem); &:nth-of-type(2), &:nth-of-type(3), &:nth-of-type(4), &:nth-of-type(5) { width: calc(305/16 * 1rem); } &:nth-of-type(1) { /* these delays stagger the reveal of each image so they all go one after the other and not all at once */ transition-delay: 0.15s; } &:nth-of-type(2) { transition-delay: 0.3s; } &:nth-of-type(3) { transition-delay: 0.45s; } &:nth-of-type(4) { transition-delay: 0.15s; } &:nth-of-type(5) { transition-delay: 0.3s; } &:nth-of-type(6) { transition-delay: 0.45s; } } } } /* Dark Mode */ @media only screen and (min-width: 0rem) { body.dark-mode { #gallery-404 { .cs-topper { color: var(--primaryLight); } .cs-title, .cs-text, .cs-button { color: var(--bodyTextColorWhite); } .cs-button { &.cs-active { color: var(--primaryLight); } } } } }
class CS_GalleryFilter { filtersSelector = '.cs-button'; galleriesSelector = '.cs-gallery'; activeClass = 'cs-active'; hiddenClass = 'cs-hidden'; constructor() { this.$galleries = document.querySelectorAll(this.galleriesSelector); const $filters = document.querySelectorAll(this.filtersSelector); this.onClick($filters[0]); for (const $filter of $filters) { $filter.addEventListener('click', () => this.onClick($filter)); } } onClick($filter) { this.filter($filter.dataset.filter); const { activeClass } = this; this.$activeFilter?.classList.remove(activeClass); $filter.classList.add(activeClass); this.$activeFilter = $filter; } filter(filter) { const showAll = filter == 'all'; const { hiddenClass } = this; for (const $gallery of this.$galleries) { const show = showAll || $gallery.dataset.category == filter; $gallery.classList.toggle(hiddenClass, !show); } } } new CS_GalleryFilter();
:root { /* Add these styles to your global stylesheet, which is used across all site pages. You only need to do this once. All elements in the library derive their variables and base styles from this central sheet, simplifying site-wide edits. For instance, if you want to modify how your h2's appear across the site, you just update it once in the global styles, and the changes apply everywhere. */ --primary: #ff6a3e; --primaryLight: #ffba43; --secondary: #ffba43; --secondaryLight: #ffba43; --headerColor: #1a1a1a; --bodyTextColor: #4e4b66; --bodyTextColorWhite: #fafbfc; /* 13px - 16px */ --topperFontSize: clamp(0.8125rem, 1.6vw, 1rem); /* 31px - 49px */ --headerFontSize: clamp(1.9375rem, 3.9vw, 3.0625rem); --bodyFontSize: 1rem; /* 60px - 100px top and bottom */ --sectionPadding: clamp(3.75rem, 7.82vw, 6.25rem) 1rem; } body { margin: 0; padding: 0; } *, *:before, *:after { /* prevents padding from affecting height and width */ box-sizing: border-box; } .cs-topper { font-size: var(--topperFontSize); line-height: 1.2em; text-transform: uppercase; text-align: inherit; letter-spacing: .1em; font-weight: 700; color: var(--primary); margin-bottom: 0.25rem; display: block; } .cs-title { font-size: var(--headerFontSize); font-weight: 900; line-height: 1.2em; text-align: inherit; max-width: 43.75rem; margin: 0 0 1rem 0; color: var(--headerColor); position: relative; } .cs-text { font-size: var(--bodyFontSize); line-height: 1.5em; text-align: inherit; width: 100%; max-width: 40.625rem; margin: 0; color: var(--bodyTextColor); }
:root { /* Add these styles to your global stylesheet, which is used across all site pages. You only need to do this once. All elements in the library derive their variables and base styles from this central sheet, simplifying site-wide edits. For instance, if you want to modify how your h2's appear across the site, you just update it once in the global styles, and the changes apply everywhere. */ --primary: #ff6a3e; --primaryLight: #ffba43; --secondary: #ffba43; --secondaryLight: #ffba43; --headerColor: #1a1a1a; --bodyTextColor: #4e4b66; --bodyTextColorWhite: #fafbfc; /* 13px - 16px */ --topperFontSize: clamp(0.8125rem, 1.6vw, 1rem); /* 31px - 49px */ --headerFontSize: clamp(1.9375rem, 3.9vw, 3.0625rem); --bodyFontSize: 1rem; /* 60px - 100px top and bottom */ --sectionPadding: clamp(3.75rem, 7.82vw, 6.25rem) 1rem; } body { margin: 0; padding: 0; } *, *:before, *:after { /* prevents padding from affecting height and width */ box-sizing: border-box; } .cs-topper { font-size: var(--topperFontSize); line-height: 1.2em; text-transform: uppercase; text-align: inherit; letter-spacing: .1em; font-weight: 700; color: var(--primary); margin-bottom: (4/16rem); display: block; } .cs-title { font-size: var(--headerFontSize); font-weight: 900; line-height: 1.2em; text-align: inherit; max-width: (700/16rem); margin: 0 0 (16/16rem) 0; color: var(--headerColor); position: relative; } .cs-text { font-size: var(--bodyFontSize); line-height: 1.5em; text-align: inherit; width: 100%; max-width: (650/16rem); margin: 0; color: var(--bodyTextColor); }
:root { /* Add these styles to your global stylesheet, which is used across all site pages. You only need to do this once. All elements in the library derive their variables and base styles from this central sheet, simplifying site-wide edits. For instance, if you want to modify how your h2's appear across the site, you just update it once in the global styles, and the changes apply everywhere. */ --primary: #ff6a3e; --primaryLight: #ffba43; --secondary: #ffba43; --secondaryLight: #ffba43; --headerColor: #1a1a1a; --bodyTextColor: #4e4b66; --bodyTextColorWhite: #fafbfc; /* 13px - 16px */ --topperFontSize: clamp(0.8125rem, 1.6vw, 1rem); /* 31px - 49px */ --headerFontSize: clamp(1.9375rem, 3.9vw, 3.0625rem); --bodyFontSize: 1rem; /* 60px - 100px top and bottom */ --sectionPadding: clamp(3.75rem, 7.82vw, 6.25rem) 1rem; } body { margin: 0; padding: 0; } *, *:before, *:after { /* prevents padding from affecting height and width */ box-sizing: border-box; } .cs-topper { font-size: var(--topperFontSize); line-height: 1.2em; text-transform: uppercase; text-align: inherit; letter-spacing: .1em; font-weight: 700; color: var(--primary); margin-bottom: calc(4 / 16 * 1rem); display: block; } .cs-title { font-size: var(--headerFontSize); font-weight: 900; line-height: 1.2em; text-align: inherit; max-width: calc(700 / 16 * 1rem); margin: 0 0 calc(16 / 16 * 1rem) 0; color: var(--headerColor); position: relative; } .cs-text { font-size: var(--bodyFontSize); line-height: 1.5em; text-align: inherit; width: 100%; max-width: calc(650 / 16 * 1rem); margin: 0; color: var(--bodyTextColor); }
Lorem Ipsum
Undo