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)
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)
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)
Standard
HTML
JS
CSS
Core Styles
Choose your preferred CSS
CSS
LESS
SCSS
CSS
LESS
SCSS
CSS
LESS
SCSS
CSS Dark
LESS Dark
SCSS Dark
CSS Dark
LESS Dark
SCSS Dark
CSS Dark
LESS Dark
SCSS Dark
Choose your preferred Core Styles CSS
CSS
LESS
SCSS
-
Dark Mode
+
Dark Mode
Copy
to Clipboard
<!-- ============================================ --> <!-- Navigation --> <!-- ============================================ --> <header id="cs-navigation"> <div class="cs-container"> <!--Nav Logo--> <a href="" class="cs-logo" aria-label="back to home"> <img src="https://csimg.nyc3.cdn.digitaloceanspaces.com/Icons%2Flogo-black.svg" alt="logo" width="210" height="29" aria-hidden="true" decoding="async"> </a> <!--Navigation List--> <nav class="cs-nav" role="navigation"> <!--Mobile Nav Toggle--> <button class="cs-toggle" aria-label="mobile menu toggle"> <div class="cs-box" aria-hidden="true"> <span class="cs-line cs-line1" aria-hidden="true"></span> <span class="cs-line cs-line2" aria-hidden="true"></span> <span class="cs-line cs-line3" aria-hidden="true"></span> </div> </button> <!-- We need a wrapper div so we can set a fixed height on the cs-ul in case the nav list gets too long from too many dropdowns being opened and needs to have an overflow scroll. This wrapper acts as the background so it can go the full height of the screen and not cut off any overflowing nav items while the cs-ul stops short of the bottom of the screen, which keeps all nav items in view no matter how mnay there are--> <div class="cs-ul-wrapper"> <ul id="cs-expanded" class="cs-ul" aria-expanded="false"> <li class="cs-li"> <a href="" class="cs-li-link cs-active"> Home </a> </li> <li class="cs-li"> <a href="" class="cs-li-link"> About </a> </li> <li class="cs-li"> <a href="" class="cs-li-link"> Services </a> </li> <li class="cs-li"> <a href="" class="cs-li-link"> About Us </a> </li> <li class="cs-li"> <a href="" class="cs-li-link"> FAQ </a> </li> </ul> </div> </nav> <a href="" class="cs-button-solid cs-nav-button">Contact Us</a> <!--Dark Mode toggle, uncomment button code if you want to enable a dark mode toggle--> <!-- <button id="dark-mode-toggle" aria-label="dark mode toggle"> <svg class="cs-moon" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 480 480" style="enable-background:new 0 0 480 480" xml:space="preserve"><path d="M459.782 347.328c-4.288-5.28-11.488-7.232-17.824-4.96-17.76 6.368-37.024 9.632-57.312 9.632-97.056 0-176-78.976-176-176 0-58.4 28.832-112.768 77.12-145.472 5.472-3.712 8.096-10.4 6.624-16.832S285.638 2.4 279.078 1.44C271.59.352 264.134 0 256.646 0c-132.352 0-240 107.648-240 240s107.648 240 240 240c84 0 160.416-42.688 204.352-114.176 3.552-5.792 3.04-13.184-1.216-18.496z"/></svg> <img class="cs-sun" aria-hidden="true" src="https://csimg.nyc3.cdn.digitaloceanspaces.com/Icons%2Fsun.svg" decoding="async" alt="moon" width="15" height="15"> </button> --> </div> </header>
// add classes for mobile navigation toggling var CSbody = document.querySelector('body'); const CSnavbarMenu = document.querySelector('#cs-navigation'); const CShamburgerMenu = document.querySelector('#cs-navigation .cs-toggle'); CShamburgerMenu.addEventListener('click', function () { CShamburgerMenu.classList.toggle('cs-active'); CSnavbarMenu.classList.toggle('cs-active'); CSbody.classList.toggle('cs-open'); // run the function to check the aria-expanded value ariaExpanded(); }); // checks the value of aria expanded on the cs-ul and changes it accordingly whether it is expanded or not function ariaExpanded() { const csUL = document.querySelector('#cs-expanded'); const csExpanded = csUL.getAttribute('aria-expanded'); if (csExpanded === 'false') { csUL.setAttribute('aria-expanded', 'true'); } else { csUL.setAttribute('aria-expanded', 'false'); } } // mobile nav toggle code const dropDowns = Array.from(document.querySelectorAll('#cs-navigation .cs-dropdown')); for (const item of dropDowns) { const onClick = () => { item.classList.toggle('cs-active'); }; item.addEventListener('click', onClick); }
/*-- -------------------------- --> <--- Mobile Navigation --> <--- -------------------------- -*/ /* Mobile - 1023px */ @media only screen and (max-width: 63.9375rem) { body.cs-open { overflow: hidden; } #cs-navigation { width: 100%; /* prevents padding and border from affecting height and width */ box-sizing: border-box; padding: 0.75rem 1rem; background-color: #fff; box-shadow: rgba(149, 157, 165, 0.2) 0px 8px 24px; position: fixed; z-index: 10000; } #cs-navigation:before { content: ""; width: 100%; height: 0vh; background: rgba(0, 0, 0, 0.6); opacity: 0; display: block; position: absolute; top: 100%; right: 0; z-index: -1100; transition: height 0.5s, opacity 0.5s; -webkit-backdrop-filter: blur(10px); backdrop-filter: blur(10px); } #cs-navigation.cs-active:before { height: 150vh; opacity: 1; } #cs-navigation.cs-active .cs-ul-wrapper { opacity: 1; transform: scaleY(1); transition-delay: 0.15s; } #cs-navigation.cs-active .cs-li { opacity: 1; transform: translateY(0); } #cs-navigation .cs-container { width: 100%; display: flex; justify-content: flex-end; align-items: center; } #cs-navigation .cs-logo { width: 40%; max-width: 9.125rem; height: 100%; margin: 0 auto 0 0; /* prevents padding and border from affecting height and width */ box-sizing: border-box; padding: 0; display: flex; justify-content: center; align-items: center; z-index: 10; } #cs-navigation .cs-logo img { width: 100%; height: 100%; /* ensures the image never overflows the container. It stays contained within it's width and height and expands to fill it then stops once it reaches an edge */ object-fit: contain; } #cs-navigation .cs-toggle { /* 44px - 48px */ width: clamp(2.75rem, 6vw, 3rem); height: clamp(2.75rem, 6vw, 3rem); margin: 0 0 0 auto; background-color: transparent; border: none; border-radius: 0.25rem; display: flex; justify-content: center; align-items: center; } #cs-navigation .cs-active .cs-line1 { top: 50%; transform: translate(-50%, -50%) rotate(225deg); } #cs-navigation .cs-active .cs-line2 { top: 50%; transform: translate(-50%, -50%) translateY(0) rotate(-225deg); transform-origin: center; } #cs-navigation .cs-active .cs-line3 { opacity: 0; bottom: 100%; } #cs-navigation .cs-box { /* 24px - 28px */ width: clamp(1.5rem, 2vw, 1.75rem); /* 14px - 16px */ height: clamp(0.875rem, 1.5vw, 1rem); position: relative; } #cs-navigation .cs-line { width: 100%; height: 2px; background-color: #1a1a1a; border-radius: 2px; position: absolute; left: 50%; transform: translateX(-50%); } #cs-navigation .cs-line1 { top: 0; transition: transform 0.5s, top 0.3s, left 0.3s; animation-duration: 0.7s; animation-timing-function: ease; animation-direction: normal; animation-fill-mode: forwards; transform-origin: center; } #cs-navigation .cs-line2 { top: 50%; transform: translateX(-50%) translateY(-50%); transition: top 0.3s, left 0.3s, transform 0.5s; animation-duration: 0.7s; animation-timing-function: ease; animation-direction: normal; animation-fill-mode: forwards; } #cs-navigation .cs-line3 { bottom: 0; transition: bottom 0.3s, opacity 0.3s; } #cs-navigation .cs-ul-wrapper { width: 100%; height: auto; padding-bottom: 2.4em; background-color: #fff; box-shadow: inset rgba(0, 0, 0, 0.2) 0px 8px 24px; opacity: 0; position: absolute; top: 100%; left: 0; z-index: -1; overflow: hidden; transform: scaleY(0); transition: transform 0.4s, opacity 0.3s; transform-origin: top; } #cs-navigation .cs-ul { width: 100%; height: auto; max-height: 65vh; margin: 0; padding: 3rem 0 0 0; display: flex; flex-direction: column; justify-content: flex-start; align-items: center; gap: 1.25rem; overflow: scroll; } #cs-navigation .cs-li { text-align: center; list-style: none; width: 100%; margin-right: 0; opacity: 0; /* transition from these values */ transform: translateY(-4.375rem); transition: transform 0.6s, opacity 0.9s; } #cs-navigation .cs-li:nth-of-type(1) { transition-delay: 0.05s; } #cs-navigation .cs-li:nth-of-type(2) { transition-delay: 0.1s; } #cs-navigation .cs-li:nth-of-type(3) { transition-delay: 0.15s; } #cs-navigation .cs-li:nth-of-type(4) { transition-delay: 0.2s; } #cs-navigation .cs-li:nth-of-type(5) { transition-delay: 0.25s; } #cs-navigation .cs-li:nth-of-type(6) { transition-delay: 0.3s; } #cs-navigation .cs-li:nth-of-type(7) { transition-delay: 0.35s; } #cs-navigation .cs-li:nth-of-type(8) { transition-delay: 0.4s; } #cs-navigation .cs-li:nth-of-type(9) { transition-delay: 0.45s; } #cs-navigation .cs-li:nth-of-type(10) { transition-delay: 0.5s; } #cs-navigation .cs-li:nth-of-type(11) { transition-delay: 0.55s; } #cs-navigation .cs-li:nth-of-type(12) { transition-delay: 0.6s; } #cs-navigation .cs-li:nth-of-type(13) { transition-delay: 0.65s; } #cs-navigation .cs-li-link { /* 16px - 24px */ font-size: clamp(1rem, 2.5vw, 1.5rem); line-height: 1.2em; text-decoration: none; margin: 0; color: var(--headerColor); display: inline-block; position: relative; } #cs-navigation .cs-li-link:before { /* active state underline */ content: ""; width: 100%; height: 1px; background: currentColor; opacity: 1; display: none; position: absolute; bottom: -0.125rem; left: 0; } #cs-navigation .cs-li-link.cs-active:before { display: block; } #cs-navigation .cs-button-solid { display: none; } } /*-- -------------------------- --> <--- Desktop Navigation --> <--- -------------------------- -*/ /* Small Desktop - 1024px */ @media only screen and (min-width: 64rem) { #cs-navigation { width: 100%; /* prevents padding and border from affecting height and width */ box-sizing: border-box; padding: 0 1rem; background-color: #fff; box-shadow: rgba(149, 157, 165, 0.2) 0px 8px 24px; position: fixed; z-index: 10000; } #cs-navigation .cs-container { width: 100%; max-width: 80rem; margin: auto; display: flex; justify-content: flex-end; align-items: center; gap: 1.5rem; } #cs-navigation .cs-toggle { display: none; } #cs-navigation .cs-logo { width: 18.4%; max-width: 21.875rem; height: 4.0625rem; /* margin-right auto pushes everything away from it to the right */ margin: 0 auto 0 0; padding: 0; display: flex; justify-content: center; align-items: center; z-index: 100; } #cs-navigation .cs-logo img { width: 100%; height: 100%; /* ensures the image never overflows the container. It stays contained within it's width and height and expands to fill it then stops once it reaches an edge */ object-fit: contain; } #cs-navigation .cs-ul { width: 100%; margin: 0; padding: 0; display: flex; justify-content: flex-start; align-items: center; /* 20px - 36px */ gap: clamp(1.25rem, 2.6vw, 2.25rem); } #cs-navigation .cs-li { list-style: none; padding: 2rem 0; /* prevent flexbox from squishing it */ flex: none; } #cs-navigation .cs-li-link { /* 14px - 16px */ font-size: clamp(0.875rem, 1vw, 1rem); line-height: 1.5em; text-decoration: none; margin: 0; color: var(--bodyTextColor); display: block; position: relative; } #cs-navigation .cs-li-link:hover:before { width: 100%; } #cs-navigation .cs-li-link.cs-active:before { width: 100%; } #cs-navigation .cs-li-link:before { /* active state underline */ content: ""; width: 0%; height: 2px; background: var(--primary); opacity: 1; display: block; position: absolute; bottom: 0rem; left: 0; transition: width 0.3s; } #cs-navigation .cs-button-solid { font-size: 1rem; font-weight: 700; /* 46px - 56px */ line-height: clamp(2.875em, 5.5vw, 3.5em); text-align: center; text-decoration: none; min-width: 9.375rem; margin: 0; /* prevents padding from adding to the width */ box-sizing: border-box; padding: 0 1.5rem; color: #fff; background-color: var(--primary); border-radius: 0.25rem; display: inline-block; position: relative; z-index: 1; } #cs-navigation .cs-button-solid:before { content: ""; width: 0%; height: 100%; background: #000; opacity: 1; border-radius: 0.25rem; position: absolute; top: 0; left: 0; z-index: -1; transition: width 0.3s; } #cs-navigation .cs-button-solid:hover:before { width: 100%; } }
/*-- -------------------------- --> <--- Dark Mode Toggle --> <--- -------------------------- -*/ /* Mobile - 360px */ @media only screen and (min-width: 0rem) { body.dark-mode #dark-mode-toggle .cs-sun { opacity: 1; transform: translate(-50%, -50%); } body.dark-mode #dark-mode-toggle .cs-moon { opacity: 0; transform: translate(-50%, -150%); fill: #fff; } #dark-mode-toggle { width: 3rem; height: 3rem; padding: 0; background: transparent; border: none; display: block; position: absolute; top: 0.625rem; right: 4.375rem; z-index: 1000; overflow: hidden; } #dark-mode-toggle img, #dark-mode-toggle svg { width: 1.25rem; height: 1.25rem; position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%); pointer-events: none; } #dark-mode-toggle .cs-moon { z-index: 2; transition: transform 0.3s, opacity 0.3s; } #dark-mode-toggle .cs-sun { opacity: 0; z-index: 1; transform: translate(-50%, 100%); transition: transform 0.3s, opacity 0.3s; } } /* Desktop - 1024px */ @media only screen and (min-width: 64rem) { #dark-mode-toggle { margin: 0; position: relative; top: auto; right: auto; transform: none; } #dark-mode-toggle:hover { cursor: pointer; } } /*-- -------------------------- --> <--- Mobile Navigation --> <--- -------------------------- -*/ /* Mobile - 1023px */ @media only screen and (max-width: 63.9375rem) { body.cs-open { overflow: hidden; } #cs-navigation { width: 100%; /* prevents padding and border from affecting height and width */ box-sizing: border-box; padding: 0.75rem 1rem; background-color: #fff; box-shadow: rgba(149, 157, 165, 0.2) 0px 8px 24px; position: fixed; z-index: 10000; } #cs-navigation:before { content: ""; width: 100%; height: 0vh; background: rgba(0, 0, 0, 0.6); opacity: 0; display: block; position: absolute; top: 100%; right: 0; z-index: -1100; transition: height 0.5s, opacity 0.5s; -webkit-backdrop-filter: blur(10px); backdrop-filter: blur(10px); } #cs-navigation.cs-active:before { height: 150vh; opacity: 1; } #cs-navigation.cs-active .cs-ul-wrapper { opacity: 1; transform: scaleY(1); transition-delay: 0.15s; } #cs-navigation.cs-active .cs-li { opacity: 1; transform: translateY(0); } #cs-navigation .cs-container { width: 100%; display: flex; justify-content: flex-end; align-items: center; } #cs-navigation .cs-logo { width: 40%; max-width: 9.125rem; height: 100%; margin: 0 auto 0 0; /* prevents padding and border from affecting height and width */ box-sizing: border-box; padding: 0; display: flex; justify-content: center; align-items: center; z-index: 10; } #cs-navigation .cs-logo img { width: 100%; height: 100%; /* ensures the image never overflows the container. It stays contained within it's width and height and expands to fill it then stops once it reaches an edge */ object-fit: contain; } #cs-navigation .cs-toggle { /* 44px - 48px */ width: clamp(2.75rem, 6vw, 3rem); height: clamp(2.75rem, 6vw, 3rem); margin: 0 0 0 auto; background-color: transparent; border: none; border-radius: 0.25rem; display: flex; justify-content: center; align-items: center; } #cs-navigation .cs-active .cs-line1 { top: 50%; transform: translate(-50%, -50%) rotate(225deg); } #cs-navigation .cs-active .cs-line2 { top: 50%; transform: translate(-50%, -50%) translateY(0) rotate(-225deg); transform-origin: center; } #cs-navigation .cs-active .cs-line3 { opacity: 0; bottom: 100%; } #cs-navigation .cs-box { /* 24px - 28px */ width: clamp(1.5rem, 2vw, 1.75rem); /* 14px - 16px */ height: clamp(0.875rem, 1.5vw, 1rem); position: relative; } #cs-navigation .cs-line { width: 100%; height: 2px; background-color: #1a1a1a; border-radius: 2px; position: absolute; left: 50%; transform: translateX(-50%); } #cs-navigation .cs-line1 { top: 0; transition: transform 0.5s, top 0.3s, left 0.3s; animation-duration: 0.7s; animation-timing-function: ease; animation-direction: normal; animation-fill-mode: forwards; transform-origin: center; } #cs-navigation .cs-line2 { top: 50%; transform: translateX(-50%) translateY(-50%); transition: top 0.3s, left 0.3s, transform 0.5s; animation-duration: 0.7s; animation-timing-function: ease; animation-direction: normal; animation-fill-mode: forwards; } #cs-navigation .cs-line3 { bottom: 0; transition: bottom 0.3s, opacity 0.3s; } #cs-navigation .cs-ul-wrapper { width: 100%; height: auto; padding-bottom: 2.4em; background-color: #fff; box-shadow: inset rgba(0, 0, 0, 0.2) 0px 8px 24px; opacity: 0; position: absolute; top: 100%; left: 0; z-index: -1; overflow: hidden; transform: scaleY(0); transition: transform 0.4s, opacity 0.3s; transform-origin: top; } #cs-navigation .cs-ul { width: 100%; height: auto; max-height: 65vh; margin: 0; padding: 3rem 0 0 0; display: flex; flex-direction: column; justify-content: flex-start; align-items: center; gap: 1.25rem; overflow: scroll; } #cs-navigation .cs-li { text-align: center; list-style: none; width: 100%; margin-right: 0; opacity: 0; /* transition from these values */ transform: translateY(-4.375rem); transition: transform 0.6s, opacity 0.9s; } #cs-navigation .cs-li:nth-of-type(1) { transition-delay: 0.05s; } #cs-navigation .cs-li:nth-of-type(2) { transition-delay: 0.1s; } #cs-navigation .cs-li:nth-of-type(3) { transition-delay: 0.15s; } #cs-navigation .cs-li:nth-of-type(4) { transition-delay: 0.2s; } #cs-navigation .cs-li:nth-of-type(5) { transition-delay: 0.25s; } #cs-navigation .cs-li:nth-of-type(6) { transition-delay: 0.3s; } #cs-navigation .cs-li:nth-of-type(7) { transition-delay: 0.35s; } #cs-navigation .cs-li:nth-of-type(8) { transition-delay: 0.4s; } #cs-navigation .cs-li:nth-of-type(9) { transition-delay: 0.45s; } #cs-navigation .cs-li:nth-of-type(10) { transition-delay: 0.5s; } #cs-navigation .cs-li:nth-of-type(11) { transition-delay: 0.55s; } #cs-navigation .cs-li:nth-of-type(12) { transition-delay: 0.6s; } #cs-navigation .cs-li:nth-of-type(13) { transition-delay: 0.65s; } #cs-navigation .cs-li-link { /* 16px - 24px */ font-size: clamp(1rem, 2.5vw, 1.5rem); line-height: 1.2em; text-decoration: none; margin: 0; color: var(--headerColor); display: inline-block; position: relative; } #cs-navigation .cs-li-link:before { /* active state underline */ content: ""; width: 100%; height: 1px; background: currentColor; opacity: 1; display: none; position: absolute; bottom: -0.125rem; left: 0; } #cs-navigation .cs-li-link.cs-active:before { display: block; } #cs-navigation .cs-button-solid { display: none; } } /* Dark Mode */ @media only screen and (max-width: 63.9375rem) { body.dark-mode #cs-navigation { background-color: var(--dark); } body.dark-mode #cs-navigation .cs-logo { /* makes it white */ filter: grayscale(1) brightness(1000%); } body.dark-mode #cs-navigation .cs-line { background-color: #fff; } body.dark-mode #cs-navigation .cs-ul-wrapper { background-color: var(--medium); } body.dark-mode #cs-navigation .cs-li-link { color: var(--bodyTextColorWhite); } } /*-- -------------------------- --> <--- Desktop Navigation --> <--- -------------------------- -*/ /* Small Desktop - 1024px */ @media only screen and (min-width: 64rem) { #cs-navigation { width: 100%; /* prevents padding and border from affecting height and width */ box-sizing: border-box; padding: 0 1rem; background-color: #fff; box-shadow: rgba(149, 157, 165, 0.2) 0px 8px 24px; position: fixed; z-index: 10000; } #cs-navigation .cs-container { width: 100%; max-width: 80rem; margin: auto; display: flex; justify-content: flex-end; align-items: center; gap: 1.5rem; } #cs-navigation .cs-toggle { display: none; } #cs-navigation .cs-logo { width: 18.4%; max-width: 21.875rem; height: 4.0625rem; /* margin-right auto pushes everything away from it to the right */ margin: 0 auto 0 0; padding: 0; display: flex; justify-content: center; align-items: center; z-index: 100; } #cs-navigation .cs-logo img { width: 100%; height: 100%; /* ensures the image never overflows the container. It stays contained within it's width and height and expands to fill it then stops once it reaches an edge */ object-fit: contain; } #cs-navigation .cs-ul { width: 100%; margin: 0; padding: 0; display: flex; justify-content: flex-start; align-items: center; /* 20px - 36px */ gap: clamp(1.25rem, 2.6vw, 2.25rem); } #cs-navigation .cs-li { list-style: none; padding: 2rem 0; /* prevent flexbox from squishing it */ flex: none; } #cs-navigation .cs-li-link { /* 14px - 16px */ font-size: clamp(0.875rem, 1vw, 1rem); line-height: 1.5em; text-decoration: none; margin: 0; color: var(--bodyTextColor); display: block; position: relative; } #cs-navigation .cs-li-link:hover:before { width: 100%; } #cs-navigation .cs-li-link.cs-active:before { width: 100%; } #cs-navigation .cs-li-link:before { /* active state underline */ content: ""; width: 0%; height: 2px; background: var(--primary); opacity: 1; display: block; position: absolute; bottom: 0rem; left: 0; transition: width 0.3s; } #cs-navigation .cs-button-solid { font-size: 1rem; font-weight: 700; /* 46px - 56px */ line-height: clamp(2.875em, 5.5vw, 3.5em); text-align: center; text-decoration: none; min-width: 9.375rem; margin: 0; /* prevents padding from adding to the width */ box-sizing: border-box; padding: 0 1.5rem; color: #fff; background-color: var(--primary); border-radius: 0.25rem; display: inline-block; position: relative; z-index: 1; } #cs-navigation .cs-button-solid:before { content: ""; width: 0%; height: 100%; background: #000; opacity: 1; border-radius: 0.25rem; position: absolute; top: 0; left: 0; z-index: -1; transition: width 0.3s; } #cs-navigation .cs-button-solid:hover:before { width: 100%; } } /* Dark Mode */ @media only screen and (min-width: 64rem) { body.dark-mode #cs-navigation { background-color: var(--dark); } body.dark-mode #cs-navigation .cs-logo { /* makes it turn white */ filter: grayscale(1) brightness(1000%); } body.dark-mode #cs-navigation .cs-li-link { color: var(--bodyTextColorWhite); } body.dark-mode #cs-navigation .cs-li-link:before { background-color: var(--primaryLight); } }
/*-- -------------------------- --> <--- Mobile Navigation --> <--- -------------------------- -*/ /* Mobile - 1023px */ @media only screen and (max-width: 63.9375rem) { body { &.cs-open { overflow: hidden; } } #cs-navigation { width: 100%; /* prevents padding and border from affecting height and width */ box-sizing: border-box; padding: (12/16rem) (16/16rem); background-color: #fff; box-shadow: rgba(149, 157, 165, 0.2) 0px 8px 24px; position: fixed; z-index: 10000; &:before { content: ""; width: 100%; height: 0vh; background: rgba(0, 0, 0, 0.6); opacity: 0; display: block; position: absolute; top: 100%; right: 0; z-index: -1100; transition: height 0.5s, opacity 0.5s; -webkit-backdrop-filter: blur(10px); backdrop-filter: blur(10px); } &.cs-active { &:before { height: 150vh; opacity: 1; } .cs-ul-wrapper { opacity: 1; transform: scaleY(1); transition-delay: 0.15s; } .cs-li { opacity: 1; transform: translateY(0); } } .cs-container { width: 100%; display: flex; justify-content: flex-end; align-items: center; } .cs-logo { width: 40%; max-width: (146/16rem); height: 100%; margin: 0 auto 0 0; /* prevents padding and border from affecting height and width */ box-sizing: border-box; padding: 0; display: flex; justify-content: center; align-items: center; z-index: 10; img { width: 100%; height: 100%; /* ensures the image never overflows the container. It stays contained within it's width and height and expands to fill it then stops once it reaches an edge */ object-fit: contain; } } .cs-toggle { /* 44px - 48px */ width: clamp(2.75rem, 6vw, 3rem); height: clamp(2.75rem, 6vw, 3rem); margin: 0 0 0 auto; background-color: transparent; border: none; border-radius: (4/16rem); display: flex; justify-content: center; align-items: center; } .cs-active { .cs-line1 { top: 50%; transform: translate(-50%, -50%) rotate(225deg); } .cs-line2 { top: 50%; transform: translate(-50%, -50%) translateY(0) rotate(-225deg); transform-origin: center; } .cs-line3 { opacity: 0; bottom: 100%; } } .cs-box { /* 24px - 28px */ width: clamp(1.5rem, 2vw, 1.75rem); /* 14px - 16px */ height: clamp(0.875rem, 1.5vw, 1rem); position: relative; } .cs-line { width: 100%; height: 2px; background-color: #1a1a1a; border-radius: 2px; position: absolute; left: 50%; transform: translateX(-50%); } .cs-line1 { top: 0; transition: transform 0.5s, top 0.3s, left 0.3s; animation-duration: 0.7s; animation-timing-function: ease; animation-direction: normal; animation-fill-mode: forwards; transform-origin: center; } .cs-line2 { top: 50%; transform: translateX(-50%) translateY(-50%); transition: top 0.3s, left 0.3s, transform 0.5s; animation-duration: 0.7s; animation-timing-function: ease; animation-direction: normal; animation-fill-mode: forwards; } .cs-line3 { bottom: 0; transition: bottom 0.3s, opacity 0.3s; } .cs-ul-wrapper { width: 100%; height: auto; padding-bottom: (48/20em); background-color: #fff; box-shadow: inset rgba(0, 0, 0, 0.2) 0px 8px 24px; opacity: 0; position: absolute; top: 100%; left: 0; z-index: -1; overflow: hidden; transform: scaleY(0); transition: transform 0.4s, opacity 0.3s; transform-origin: top; } .cs-ul { width: 100%; height: auto; max-height: 65vh; margin: 0; padding: (48/16rem) 0 0 0; display: flex; flex-direction: column; justify-content: flex-start; align-items: center; gap: (20/16rem); overflow: scroll; } .cs-li { text-align: center; list-style: none; width: 100%; margin-right: 0; opacity: 0; /* transition from these values */ transform: translateY(-4.375rem); transition: transform 0.6s, opacity 0.9s; &:nth-of-type(1) { transition-delay: 0.05s; } &:nth-of-type(2) { transition-delay: 0.1s; } &:nth-of-type(3) { transition-delay: 0.15s; } &:nth-of-type(4) { transition-delay: 0.2s; } &:nth-of-type(5) { transition-delay: 0.25s; } &:nth-of-type(6) { transition-delay: 0.3s; } &:nth-of-type(7) { transition-delay: 0.35s; } &:nth-of-type(8) { transition-delay: 0.4s; } &:nth-of-type(9) { transition-delay: 0.45s; } &:nth-of-type(10) { transition-delay: 0.5s; } &:nth-of-type(11) { transition-delay: 0.55s; } &:nth-of-type(12) { transition-delay: 0.6s; } &:nth-of-type(13) { transition-delay: 0.65s; } } .cs-li-link { /* 16px - 24px */ font-size: clamp(1rem, 2.5vw, 1.5rem); line-height: 1.2em; text-decoration: none; margin: 0; color: var(--headerColor); display: inline-block; position: relative; &:before { /* active state underline */ content: ""; width: 100%; height: 1px; background: currentColor; opacity: 1; display: none; position: absolute; bottom: (-2/16rem); left: 0; } &.cs-active { &:before { display: block; } } } .cs-button-solid { display: none; } } } /*-- -------------------------- --> <--- Desktop Navigation --> <--- -------------------------- -*/ /* Small Desktop - 1024px */ @media only screen and (min-width: 64rem) { #cs-navigation { width: 100%; /* prevents padding and border from affecting height and width */ box-sizing: border-box; padding: 0 (16/16rem); background-color: #fff; box-shadow: rgba(149, 157, 165, 0.2) 0px 8px 24px; position: fixed; z-index: 10000; .cs-container { width: 100%; max-width: (1280/16rem); margin: auto; display: flex; justify-content: flex-end; align-items: center; gap: (24/16rem); } .cs-toggle { display: none; } .cs-logo { width: 18.4%; max-width: (350/16rem); height: (65/16rem); /* margin-right auto pushes everything away from it to the right */ margin: 0 auto 0 0; padding: 0; display: flex; justify-content: center; align-items: center; z-index: 100; img { width: 100%; height: 100%; /* ensures the image never overflows the container. It stays contained within it's width and height and expands to fill it then stops once it reaches an edge */ object-fit: contain; } } .cs-ul { width: 100%; margin: 0; padding: 0; display: flex; justify-content: flex-start; align-items: center; /* 20px - 36px */ gap: clamp(1.25rem, 2.6vw, 2.25rem); } .cs-li { list-style: none; padding: (32/16rem) 0; /* prevent flexbox from squishing it */ flex: none; } .cs-li-link { /* 14px - 16px */ font-size: clamp(0.875rem, 1vw, 1rem); line-height: 1.5em; text-decoration: none; margin: 0; color: var(--bodyTextColor); display: block; position: relative; &:hover { &:before { width: 100%; } } &.cs-active { &:before { width: 100%; } } &:before { /* active state underline */ content: ""; width: 0%; height: 2px; background: var(--primary); opacity: 1; display: block; position: absolute; bottom: (0/16rem); left: 0; transition: width 0.3s; } } .cs-button-solid { font-size: (16/16rem); font-weight: 700; /* 46px - 56px */ line-height: clamp(2.875em, 5.5vw, 3.5em); text-align: center; text-decoration: none; min-width: (150/16rem); margin: 0; /* prevents padding from adding to the width */ box-sizing: border-box; padding: 0 (24/16rem); color: #fff; background-color: var(--primary); border-radius: (4/16rem); display: inline-block; position: relative; z-index: 1; &:before { content: ""; width: 0%; height: 100%; background: #000; opacity: 1; border-radius: (4/16rem); position: absolute; top: 0; left: 0; z-index: -1; transition: width 0.3s; } &:hover { &:before { width: 100%; } } } } }
/*-- -------------------------- --> <--- Dark Mode Toggle --> <--- -------------------------- -*/ /* Mobile - 360px */ @media only screen and (min-width: 0rem) { body.dark-mode { #dark-mode-toggle { .cs-sun { opacity: 1; transform: translate(-50%, -50%); } .cs-moon { opacity: 0; transform: translate(-50%, -150%); fill: #fff; } } } #dark-mode-toggle { width: (48/16rem); height: (48/16rem); padding: 0; background: transparent; border: none; display: block; position: absolute; top: (10/16rem); right: (70/16rem); z-index: 1000; overflow: hidden; img, svg { width: (20/16rem); height: (20/16rem); //center image inside button position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%); pointer-events: none; } .cs-moon { z-index: 2; // Transition properties transition: transform 0.3s, opacity 0.3s; // fill: yellow; --> uncomment to change the color of the moon if needed } .cs-sun { opacity: 0; z-index: 1; // Transition property transform: translate(-50%, 100%); transition: transform 0.3s, opacity 0.3s; } } } /* Desktop - 1024px */ @media only screen and (min-width: 64rem) { #dark-mode-toggle { margin: 0; position: relative; top: auto; right: auto; transform: none; &:hover { cursor: pointer; } } } /*-- -------------------------- --> <--- Mobile Navigation --> <--- -------------------------- -*/ /* Mobile - 1023px */ @media only screen and (max-width: 63.9375rem) { body { &.cs-open { overflow: hidden; } } #cs-navigation { width: 100%; /* prevents padding and border from affecting height and width */ box-sizing: border-box; padding: (12/16rem) (16/16rem); background-color: #fff; box-shadow: rgba(149, 157, 165, 0.2) 0px 8px 24px; position: fixed; z-index: 10000; &:before { content: ""; width: 100%; height: 0vh; background: rgba(0, 0, 0, 0.6); opacity: 0; display: block; position: absolute; top: 100%; right: 0; z-index: -1100; transition: height 0.5s, opacity 0.5s; -webkit-backdrop-filter: blur(10px); backdrop-filter: blur(10px); } &.cs-active { &:before { height: 150vh; opacity: 1; } .cs-ul-wrapper { opacity: 1; transform: scaleY(1); transition-delay: 0.15s; } .cs-li { opacity: 1; transform: translateY(0); } } .cs-container { width: 100%; display: flex; justify-content: flex-end; align-items: center; } .cs-logo { width: 40%; max-width: (146/16rem); height: 100%; margin: 0 auto 0 0; /* prevents padding and border from affecting height and width */ box-sizing: border-box; padding: 0; display: flex; justify-content: center; align-items: center; z-index: 10; img { width: 100%; height: 100%; /* ensures the image never overflows the container. It stays contained within it's width and height and expands to fill it then stops once it reaches an edge */ object-fit: contain; } } .cs-toggle { /* 44px - 48px */ width: clamp(2.75rem, 6vw, 3rem); height: clamp(2.75rem, 6vw, 3rem); margin: 0 0 0 auto; background-color: transparent; border: none; border-radius: (4/16rem); display: flex; justify-content: center; align-items: center; } .cs-active { .cs-line1 { top: 50%; transform: translate(-50%, -50%) rotate(225deg); } .cs-line2 { top: 50%; transform: translate(-50%, -50%) translateY(0) rotate(-225deg); transform-origin: center; } .cs-line3 { opacity: 0; bottom: 100%; } } .cs-box { /* 24px - 28px */ width: clamp(1.5rem, 2vw, 1.75rem); /* 14px - 16px */ height: clamp(0.875rem, 1.5vw, 1rem); position: relative; } .cs-line { width: 100%; height: 2px; background-color: #1a1a1a; border-radius: 2px; position: absolute; left: 50%; transform: translateX(-50%); } .cs-line1 { top: 0; transition: transform 0.5s, top 0.3s, left 0.3s; animation-duration: 0.7s; animation-timing-function: ease; animation-direction: normal; animation-fill-mode: forwards; transform-origin: center; } .cs-line2 { top: 50%; transform: translateX(-50%) translateY(-50%); transition: top 0.3s, left 0.3s, transform 0.5s; animation-duration: 0.7s; animation-timing-function: ease; animation-direction: normal; animation-fill-mode: forwards; } .cs-line3 { bottom: 0; transition: bottom 0.3s, opacity 0.3s; } .cs-ul-wrapper { width: 100%; height: auto; padding-bottom: (48/20em); background-color: #fff; box-shadow: inset rgba(0, 0, 0, 0.2) 0px 8px 24px; opacity: 0; position: absolute; top: 100%; left: 0; z-index: -1; overflow: hidden; transform: scaleY(0); transition: transform 0.4s, opacity 0.3s; transform-origin: top; } .cs-ul { width: 100%; height: auto; max-height: 65vh; margin: 0; padding: (48/16rem) 0 0 0; display: flex; flex-direction: column; justify-content: flex-start; align-items: center; gap: (20/16rem); overflow: scroll; } .cs-li { text-align: center; list-style: none; width: 100%; margin-right: 0; opacity: 0; /* transition from these values */ transform: translateY(-4.375rem); transition: transform 0.6s, opacity 0.9s; &:nth-of-type(1) { transition-delay: 0.05s; } &:nth-of-type(2) { transition-delay: 0.1s; } &:nth-of-type(3) { transition-delay: 0.15s; } &:nth-of-type(4) { transition-delay: 0.2s; } &:nth-of-type(5) { transition-delay: 0.25s; } &:nth-of-type(6) { transition-delay: 0.3s; } &:nth-of-type(7) { transition-delay: 0.35s; } &:nth-of-type(8) { transition-delay: 0.4s; } &:nth-of-type(9) { transition-delay: 0.45s; } &:nth-of-type(10) { transition-delay: 0.5s; } &:nth-of-type(11) { transition-delay: 0.55s; } &:nth-of-type(12) { transition-delay: 0.6s; } &:nth-of-type(13) { transition-delay: 0.65s; } } .cs-li-link { /* 16px - 24px */ font-size: clamp(1rem, 2.5vw, 1.5rem); line-height: 1.2em; text-decoration: none; margin: 0; color: var(--headerColor); display: inline-block; position: relative; &:before { /* active state underline */ content: ""; width: 100%; height: 1px; background: currentColor; opacity: 1; display: none; position: absolute; bottom: (-2/16rem); left: 0; } &.cs-active { &:before { display: block; } } } .cs-button-solid { display: none; } } } /* Dark Mode */ @media only screen and (max-width: 63.9375rem) { body.dark-mode { #cs-navigation { background-color: var(--dark); .cs-logo { /* makes it white */ filter: grayscale(1) brightness(1000%); } .cs-line { background-color: #fff; } .cs-ul-wrapper { background-color: var(--medium); } .cs-li-link { color: var(--bodyTextColorWhite); } } } } /*-- -------------------------- --> <--- Desktop Navigation --> <--- -------------------------- -*/ /* Small Desktop - 1024px */ @media only screen and (min-width: 64rem) { #cs-navigation { width: 100%; /* prevents padding and border from affecting height and width */ box-sizing: border-box; padding: 0 (16/16rem); background-color: #fff; box-shadow: rgba(149, 157, 165, 0.2) 0px 8px 24px; position: fixed; z-index: 10000; .cs-container { width: 100%; max-width: (1280/16rem); margin: auto; display: flex; justify-content: flex-end; align-items: center; gap: (24/16rem); } .cs-toggle { display: none; } .cs-logo { width: 18.4%; max-width: (350/16rem); height: (65/16rem); /* margin-right auto pushes everything away from it to the right */ margin: 0 auto 0 0; padding: 0; display: flex; justify-content: center; align-items: center; z-index: 100; img { width: 100%; height: 100%; /* ensures the image never overflows the container. It stays contained within it's width and height and expands to fill it then stops once it reaches an edge */ object-fit: contain; } } .cs-ul { width: 100%; margin: 0; padding: 0; display: flex; justify-content: flex-start; align-items: center; /* 20px - 36px */ gap: clamp(1.25rem, 2.6vw, 2.25rem); } .cs-li { list-style: none; padding: (32/16rem) 0; /* prevent flexbox from squishing it */ flex: none; } .cs-li-link { /* 14px - 16px */ font-size: clamp(0.875rem, 1vw, 1rem); line-height: 1.5em; text-decoration: none; margin: 0; color: var(--bodyTextColor); display: block; position: relative; &:hover { &:before { width: 100%; } } &.cs-active { &:before { width: 100%; } } &:before { /* active state underline */ content: ""; width: 0%; height: 2px; background: var(--primary); opacity: 1; display: block; position: absolute; bottom: (0/16rem); left: 0; transition: width 0.3s; } } .cs-button-solid { font-size: (16/16rem); font-weight: 700; /* 46px - 56px */ line-height: clamp(2.875em, 5.5vw, 3.5em); text-align: center; text-decoration: none; min-width: (150/16rem); margin: 0; /* prevents padding from adding to the width */ box-sizing: border-box; padding: 0 (24/16rem); color: #fff; background-color: var(--primary); border-radius: (4/16rem); display: inline-block; position: relative; z-index: 1; &:before { content: ""; width: 0%; height: 100%; background: #000; opacity: 1; border-radius: (4/16rem); position: absolute; top: 0; left: 0; z-index: -1; transition: width 0.3s; } &:hover { &:before { width: 100%; } } } } } /* Dark Mode */ @media only screen and (min-width: 64rem) { body.dark-mode { #cs-navigation { background-color: var(--dark); .cs-logo { /* makes it turn white */ filter: grayscale(1) brightness(1000%); } .cs-li-link { color: var(--bodyTextColorWhite); } .cs-li-link { &:before { background-color: var(--primaryLight); } } } } }
/*-- -------------------------- --> <--- Mobile Navigation --> <--- -------------------------- -*/ /* Mobile - 1023px */ @media only screen and (max-width: 63.9375rem) { body { &.cs-open { overflow: hidden; } } #cs-navigation { width: 100%; /* prevents padding and border from affecting height and width */ box-sizing: border-box; padding: calc(12 / 16 * 1rem) calc(16 / 16 * 1rem); background-color: #fff; box-shadow: rgba(149, 157, 165, 0.2) 0px 8px 24px; position: fixed; z-index: 10000; &:before { content: ""; width: 100%; height: 0vh; background: rgba(0, 0, 0, 0.6); opacity: 0; display: block; position: absolute; top: 100%; right: 0; z-index: -1100; transition: height 0.5s, opacity 0.5s; -webkit-backdrop-filter: blur(10px); backdrop-filter: blur(10px); } &.cs-active { &:before { height: 150vh; opacity: 1; } .cs-ul-wrapper { opacity: 1; transform: scaleY(1); transition-delay: 0.15s; } .cs-li { opacity: 1; transform: translateY(0); } } .cs-container { width: 100%; display: flex; justify-content: flex-end; align-items: center; } .cs-logo { width: 40%; max-width: calc(146 / 16 * 1rem); height: 100%; margin: 0 auto 0 0; /* prevents padding and border from affecting height and width */ box-sizing: border-box; padding: 0; display: flex; justify-content: center; align-items: center; z-index: 10; img { width: 100%; height: 100%; /* ensures the image never overflows the container. It stays contained within it's width and height and expands to fill it then stops once it reaches an edge */ object-fit: contain; } } .cs-toggle { /* 44px - 48px */ width: clamp(2.75rem, 6vw, 3rem); height: clamp(2.75rem, 6vw, 3rem); margin: 0 0 0 auto; background-color: transparent; border: none; border-radius: calc(4 / 16 * 1rem); display: flex; justify-content: center; align-items: center; } .cs-active { .cs-line1 { top: 50%; transform: translate(-50%, -50%) rotate(225deg); } .cs-line2 { top: 50%; transform: translate(-50%, -50%) translateY(0) rotate(-225deg); transform-origin: center; } .cs-line3 { opacity: 0; bottom: 100%; } } .cs-box { /* 24px - 28px */ width: clamp(1.5rem, 2vw, 1.75rem); /* 14px - 16px */ height: clamp(0.875rem, 1.5vw, 1rem); position: relative; } .cs-line { width: 100%; height: 2px; background-color: #1a1a1a; border-radius: 2px; position: absolute; left: 50%; transform: translateX(-50%); } .cs-line1 { top: 0; transition: transform 0.5s, top 0.3s, left 0.3s; animation-duration: 0.7s; animation-timing-function: ease; animation-direction: normal; animation-fill-mode: forwards; transform-origin: center; } .cs-line2 { top: 50%; transform: translateX(-50%) translateY(-50%); transition: top 0.3s, left 0.3s, transform 0.5s; animation-duration: 0.7s; animation-timing-function: ease; animation-direction: normal; animation-fill-mode: forwards; } .cs-line3 { bottom: 0; transition: bottom 0.3s, opacity 0.3s; } .cs-ul-wrapper { width: 100%; height: auto; padding-bottom: calc(48 / 20 * 1em); background-color: #fff; box-shadow: inset rgba(0, 0, 0, 0.2) 0px 8px 24px; opacity: 0; position: absolute; top: 100%; left: 0; z-index: -1; overflow: hidden; transform: scaleY(0); transition: transform 0.4s, opacity 0.3s; transform-origin: top; } .cs-ul { width: 100%; height: auto; max-height: 65vh; margin: 0; padding: calc(48 / 16 * 1rem) 0 0 0; display: flex; flex-direction: column; justify-content: flex-start; align-items: center; gap: calc(20 / 16 * 1rem); overflow: scroll; } .cs-li { text-align: center; list-style: none; width: 100%; margin-right: 0; opacity: 0; /* transition from these values */ transform: translateY(-4.375rem); transition: transform 0.6s, opacity 0.9s; &:nth-of-type(1) { transition-delay: 0.05s; } &:nth-of-type(2) { transition-delay: 0.1s; } &:nth-of-type(3) { transition-delay: 0.15s; } &:nth-of-type(4) { transition-delay: 0.2s; } &:nth-of-type(5) { transition-delay: 0.25s; } &:nth-of-type(6) { transition-delay: 0.3s; } &:nth-of-type(7) { transition-delay: 0.35s; } &:nth-of-type(8) { transition-delay: 0.4s; } &:nth-of-type(9) { transition-delay: 0.45s; } &:nth-of-type(10) { transition-delay: 0.5s; } &:nth-of-type(11) { transition-delay: 0.55s; } &:nth-of-type(12) { transition-delay: 0.6s; } &:nth-of-type(13) { transition-delay: 0.65s; } } .cs-li-link { /* 16px - 24px */ font-size: clamp(1rem, 2.5vw, 1.5rem); line-height: 1.2em; text-decoration: none; margin: 0; color: var(--headerColor); display: inline-block; position: relative; &:before { /* active state underline */ content: ""; width: 100%; height: 1px; background: currentColor; opacity: 1; display: none; position: absolute; bottom: calc(-2 / 16 * 1rem); left: 0; } &.cs-active { &:before { display: block; } } } .cs-button-solid { display: none; } } } /*-- -------------------------- --> <--- Desktop Navigation --> <--- -------------------------- -*/ /* Small Desktop - 1024px */ @media only screen and (min-width: 64rem) { #cs-navigation { width: 100%; /* prevents padding and border from affecting height and width */ box-sizing: border-box; padding: 0 calc(16 / 16 * 1rem); background-color: #fff; box-shadow: rgba(149, 157, 165, 0.2) 0px 8px 24px; position: fixed; z-index: 10000; .cs-container { width: 100%; max-width: calc(1280 / 16 * 1rem); margin: auto; display: flex; justify-content: flex-end; align-items: center; gap: calc(24 / 16 * 1rem); } .cs-toggle { display: none; } .cs-logo { width: 18.4%; max-width: calc(350 / 16 * 1rem); height: calc(65 / 16 * 1rem); /* margin-right auto pushes everything away from it to the right */ margin: 0 auto 0 0; padding: 0; display: flex; justify-content: center; align-items: center; z-index: 100; img { width: 100%; height: 100%; /* ensures the image never overflows the container. It stays contained within it's width and height and expands to fill it then stops once it reaches an edge */ object-fit: contain; } } .cs-ul { width: 100%; margin: 0; padding: 0; display: flex; justify-content: flex-start; align-items: center; /* 20px - 36px */ gap: clamp(1.25rem, 2.6vw, 2.25rem); } .cs-li { list-style: none; padding: calc(32 / 16 * 1rem) 0; /* prevent flexbox from squishing it */ flex: none; } .cs-li-link { /* 14px - 16px */ font-size: clamp(0.875rem, 1vw, 1rem); line-height: 1.5em; text-decoration: none; margin: 0; color: var(--bodyTextColor); display: block; position: relative; &:hover { &:before { width: 100%; } } &.cs-active { &:before { width: 100%; } } &:before { /* active state underline */ content: ""; width: 0%; height: 2px; background: var(--primary); opacity: 1; display: block; position: absolute; bottom: calc(0 / 16 * 1rem); left: 0; transition: width 0.3s; } } .cs-button-solid { font-size: calc(16 / 16 * 1rem); font-weight: 700; /* 46px - 56px */ line-height: clamp(2.875em, 5.5vw, 3.5em); text-align: center; text-decoration: none; min-width: calc(150 / 16 * 1rem); margin: 0; /* prevents padding from adding to the width */ box-sizing: border-box; padding: 0 calc(24 / 16 * 1rem); color: #fff; background-color: var(--primary); border-radius: calc(4 / 16 * 1rem); display: inline-block; position: relative; z-index: 1; &:before { content: ""; width: 0%; height: 100%; background: #000; opacity: 1; border-radius: calc(4 / 16 * 1rem); position: absolute; top: 0; left: 0; z-index: -1; transition: width 0.3s; } &:hover { &:before { width: 100%; } } } } }
/*-- -------------------------- --> <--- Dark Mode Toggle --> <--- -------------------------- -*/ /* Mobile - 360px */ @media only screen and (min-width: 0rem) { body.dark-mode { #dark-mode-toggle { .cs-sun { opacity: 1; transform: translate(-50%, -50%); } .cs-moon { opacity: 0; transform: translate(-50%, -150%); fill: #fff; } } } #dark-mode-toggle { width: calc(48 / 16 * 1rem); height: calc(48 / 16 * 1rem); padding: 0; background: transparent; border: none; display: block; position: absolute; top: calc(10 / 16 * 1rem); right: calc(70 / 16 * 1rem); z-index: 1000; overflow: hidden; img, svg { width: calc(20 / 16 * 1rem); height: calc(20 / 16 * 1rem); //center image inside button position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%); pointer-events: none; } .cs-moon { z-index: 2; // Transition properties transition: transform 0.3s, opacity 0.3s; // fill: yellow; --> uncomment to change the color of the moon if needed } .cs-sun { opacity: 0; z-index: 1; // Transition property transform: translate(-50%, 100%); transition: transform 0.3s, opacity 0.3s; } } } /* Desktop - 1024px */ @media only screen and (min-width: 64rem) { #dark-mode-toggle { margin: 0; position: relative; top: auto; right: auto; transform: none; &:hover { cursor: pointer; } } } /*-- -------------------------- --> <--- Mobile Navigation --> <--- -------------------------- -*/ /* Mobile - 1023px */ @media only screen and (max-width: 63.9375rem) { body { &.cs-open { overflow: hidden; } } #cs-navigation { width: 100%; /* prevents padding and border from affecting height and width */ box-sizing: border-box; padding: calc(12 / 16 * 1rem) calc(16 / 16 * 1rem); background-color: #fff; box-shadow: rgba(149, 157, 165, 0.2) 0px 8px 24px; position: fixed; z-index: 10000; &:before { content: ""; width: 100%; height: 0vh; background: rgba(0, 0, 0, 0.6); opacity: 0; display: block; position: absolute; top: 100%; right: 0; z-index: -1100; transition: height 0.5s, opacity 0.5s; -webkit-backdrop-filter: blur(10px); backdrop-filter: blur(10px); } &.cs-active { &:before { height: 150vh; opacity: 1; } .cs-ul-wrapper { opacity: 1; transform: scaleY(1); transition-delay: 0.15s; } .cs-li { opacity: 1; transform: translateY(0); } } .cs-container { width: 100%; display: flex; justify-content: flex-end; align-items: center; } .cs-logo { width: 40%; max-width: calc(146 / 16 * 1rem); height: 100%; margin: 0 auto 0 0; /* prevents padding and border from affecting height and width */ box-sizing: border-box; padding: 0; display: flex; justify-content: center; align-items: center; z-index: 10; img { width: 100%; height: 100%; /* ensures the image never overflows the container. It stays contained within it's width and height and expands to fill it then stops once it reaches an edge */ object-fit: contain; } } .cs-toggle { /* 44px - 48px */ width: clamp(2.75rem, 6vw, 3rem); height: clamp(2.75rem, 6vw, 3rem); margin: 0 0 0 auto; background-color: transparent; border: none; border-radius: calc(4 / 16 * 1rem); display: flex; justify-content: center; align-items: center; } .cs-active { .cs-line1 { top: 50%; transform: translate(-50%, -50%) rotate(225deg); } .cs-line2 { top: 50%; transform: translate(-50%, -50%) translateY(0) rotate(-225deg); transform-origin: center; } .cs-line3 { opacity: 0; bottom: 100%; } } .cs-box { /* 24px - 28px */ width: clamp(1.5rem, 2vw, 1.75rem); /* 14px - 16px */ height: clamp(0.875rem, 1.5vw, 1rem); position: relative; } .cs-line { width: 100%; height: 2px; background-color: #1a1a1a; border-radius: 2px; position: absolute; left: 50%; transform: translateX(-50%); } .cs-line1 { top: 0; transition: transform 0.5s, top 0.3s, left 0.3s; animation-duration: 0.7s; animation-timing-function: ease; animation-direction: normal; animation-fill-mode: forwards; transform-origin: center; } .cs-line2 { top: 50%; transform: translateX(-50%) translateY(-50%); transition: top 0.3s, left 0.3s, transform 0.5s; animation-duration: 0.7s; animation-timing-function: ease; animation-direction: normal; animation-fill-mode: forwards; } .cs-line3 { bottom: 0; transition: bottom 0.3s, opacity 0.3s; } .cs-ul-wrapper { width: 100%; height: auto; padding-bottom: calc(48 / 20 * 1em); background-color: #fff; box-shadow: inset rgba(0, 0, 0, 0.2) 0px 8px 24px; opacity: 0; position: absolute; top: 100%; left: 0; z-index: -1; overflow: hidden; transform: scaleY(0); transition: transform 0.4s, opacity 0.3s; transform-origin: top; } .cs-ul { width: 100%; height: auto; max-height: 65vh; margin: 0; padding: calc(48 / 16 * 1rem) 0 0 0; display: flex; flex-direction: column; justify-content: flex-start; align-items: center; gap: calc(20 / 16 * 1rem); overflow: scroll; } .cs-li { text-align: center; list-style: none; width: 100%; margin-right: 0; opacity: 0; /* transition from these values */ transform: translateY(-4.375rem); transition: transform 0.6s, opacity 0.9s; &:nth-of-type(1) { transition-delay: 0.05s; } &:nth-of-type(2) { transition-delay: 0.1s; } &:nth-of-type(3) { transition-delay: 0.15s; } &:nth-of-type(4) { transition-delay: 0.2s; } &:nth-of-type(5) { transition-delay: 0.25s; } &:nth-of-type(6) { transition-delay: 0.3s; } &:nth-of-type(7) { transition-delay: 0.35s; } &:nth-of-type(8) { transition-delay: 0.4s; } &:nth-of-type(9) { transition-delay: 0.45s; } &:nth-of-type(10) { transition-delay: 0.5s; } &:nth-of-type(11) { transition-delay: 0.55s; } &:nth-of-type(12) { transition-delay: 0.6s; } &:nth-of-type(13) { transition-delay: 0.65s; } } .cs-li-link { /* 16px - 24px */ font-size: clamp(1rem, 2.5vw, 1.5rem); line-height: 1.2em; text-decoration: none; margin: 0; color: var(--headerColor); display: inline-block; position: relative; &:before { /* active state underline */ content: ""; width: 100%; height: 1px; background: currentColor; opacity: 1; display: none; position: absolute; bottom: calc(-2 / 16 * 1rem); left: 0; } &.cs-active { &:before { display: block; } } } .cs-button-solid { display: none; } } } /* Dark Mode */ @media only screen and (max-width: 63.9375rem) { body.dark-mode { #cs-navigation { background-color: var(--dark); .cs-logo { /* makes it white */ filter: grayscale(1) brightness(1000%); } .cs-line { background-color: #fff; } .cs-ul-wrapper { background-color: var(--medium); } .cs-li-link { color: var(--bodyTextColorWhite); } } } } /*-- -------------------------- --> <--- Desktop Navigation --> <--- -------------------------- -*/ /* Small Desktop - 1024px */ @media only screen and (min-width: 64rem) { #cs-navigation { width: 100%; /* prevents padding and border from affecting height and width */ box-sizing: border-box; padding: 0 calc(16 / 16 * 1rem); background-color: #fff; box-shadow: rgba(149, 157, 165, 0.2) 0px 8px 24px; position: fixed; z-index: 10000; .cs-container { width: 100%; max-width: calc(1280 / 16 * 1rem); margin: auto; display: flex; justify-content: flex-end; align-items: center; gap: calc(24 / 16 * 1rem); } .cs-toggle { display: none; } .cs-logo { width: 18.4%; max-width: calc(350 / 16 * 1rem); height: calc(65 / 16 * 1rem); /* margin-right auto pushes everything away from it to the right */ margin: 0 auto 0 0; padding: 0; display: flex; justify-content: center; align-items: center; z-index: 100; img { width: 100%; height: 100%; /* ensures the image never overflows the container. It stays contained within it's width and height and expands to fill it then stops once it reaches an edge */ object-fit: contain; } } .cs-ul { width: 100%; margin: 0; padding: 0; display: flex; justify-content: flex-start; align-items: center; /* 20px - 36px */ gap: clamp(1.25rem, 2.6vw, 2.25rem); } .cs-li { list-style: none; padding: calc(32 / 16 * 1rem) 0; /* prevent flexbox from squishing it */ flex: none; } .cs-li-link { /* 14px - 16px */ font-size: clamp(0.875rem, 1vw, 1rem); line-height: 1.5em; text-decoration: none; margin: 0; color: var(--bodyTextColor); display: block; position: relative; &:hover { &:before { width: 100%; } } &.cs-active { &:before { width: 100%; } } &:before { /* active state underline */ content: ""; width: 0%; height: 2px; background: var(--primary); opacity: 1; display: block; position: absolute; bottom: calc(0 / 16 * 1rem); left: 0; transition: width 0.3s; } } .cs-button-solid { font-size: calc(16 / 16 * 1rem); font-weight: 700; /* 46px - 56px */ line-height: clamp(2.875em, 5.5vw, 3.5em); text-align: center; text-decoration: none; min-width: calc(150 / 16 * 1rem); margin: 0; /* prevents padding from adding to the width */ box-sizing: border-box; padding: 0 calc(24 / 16 * 1rem); color: #fff; background-color: var(--primary); border-radius: calc(4 / 16 * 1rem); display: inline-block; position: relative; z-index: 1; &:before { content: ""; width: 0%; height: 100%; background: #000; opacity: 1; border-radius: calc(4 / 16 * 1rem); position: absolute; top: 0; left: 0; z-index: -1; transition: width 0.3s; } &:hover { &:before { width: 100%; } } } } } /* Dark Mode */ @media only screen and (min-width: 64rem) { body.dark-mode { #cs-navigation { background-color: var(--dark); .cs-logo { /* makes it turn white */ filter: grayscale(1) brightness(1000%); } .cs-li-link { color: var(--bodyTextColorWhite); } .cs-li-link { &:before { background-color: var(--primaryLight); } } } } }
/*-- -------------------------- --> <--- Mobile Navigation --> <--- -------------------------- -*/ /* Mobile - 1023px */ @media only screen and (max-width: 63.9375rem) { body.cs-open { overflow: hidden; } #cs-navigation { width: 100%; /* prevents padding and border from affecting height and width */ box-sizing: border-box; padding: 0.75rem 1rem; background-color: #fff; box-shadow: rgba(149, 157, 165, 0.2) 0px 8px 24px; position: fixed; z-index: 10000; } #cs-navigation:before { /* black blurred overlay */ content: ""; width: 0%; height: 100vh; background: rgba(0, 0, 0, 0.6); opacity: 0; display: block; position: absolute; top: 100%; right: 0; z-index: -11; transition: width 0.5s, opacity 0.3s; -webkit-backdrop-filter: blur(10px); backdrop-filter: blur(10px); } #cs-navigation.cs-active:before { width: 100%; opacity: 1; } #cs-navigation.cs-active .cs-ul-wrapper { opacity: 1; transform: scaleX(1); transition-delay: 0.2s; } #cs-navigation.cs-active .cs-li { opacity: 1; transform: translateX(0); } #cs-navigation .cs-container { width: 100%; display: flex; justify-content: flex-end; align-items: center; } #cs-navigation .cs-logo { width: 40%; max-width: 9.125rem; height: 100%; margin: 0 auto 0 0; /* prevents padding and border from affecting height and width */ box-sizing: border-box; padding: 0; display: flex; justify-content: center; align-items: center; z-index: 10; } #cs-navigation .cs-logo img { width: 100%; height: 100%; /* ensures the image never overflows the container. It stays contained within it's width and height and expands to fill it then stops once it reaches an edge */ object-fit: contain; /* places the image to the left edge of the parent */ object-position: left; } #cs-navigation .cs-toggle { /* 44px - 48px */ width: clamp(2.75rem, 6vw, 3rem); height: clamp(2.75rem, 6vw, 3rem); margin: 0 0 0 auto; background-color: transparent; border: none; border-radius: 0.25rem; display: flex; justify-content: center; align-items: center; } #cs-navigation .cs-active .cs-line1 { top: 50%; transform: translate(-50%, -50%) rotate(225deg); } #cs-navigation .cs-active .cs-line2 { top: 50%; transform: translate(-50%, -50%) translateY(0) rotate(-225deg); transform-origin: center; } #cs-navigation .cs-active .cs-line3 { opacity: 0; bottom: 100%; } #cs-navigation .cs-box { /* 24px - 28px */ width: clamp(1.5rem, 2vw, 1.75rem); /* 14px - 16px */ height: clamp(0.875rem, 1.5vw, 1rem); position: relative; } #cs-navigation .cs-line { width: 100%; height: 2px; background-color: #1a1a1a; border-radius: 2px; position: absolute; left: 50%; transform: translateX(-50%); } #cs-navigation .cs-line1 { top: 0; transition: transform 0.5s, top 0.3s, left 0.3s; animation-duration: 0.7s; animation-timing-function: ease; animation-direction: normal; animation-fill-mode: forwards; transform-origin: center; } #cs-navigation .cs-line2 { top: 50%; transform: translateX(-50%) translateY(-50%); transition: top 0.3s, left 0.3s, transform 0.5s; animation-duration: 0.7s; animation-timing-function: ease; animation-direction: normal; animation-fill-mode: forwards; } #cs-navigation .cs-line3 { bottom: 0; transition: bottom 0.3s, opacity 0.3s; } #cs-navigation .cs-ul-wrapper { height: 100vh; background-color: #fff; box-shadow: inset rgba(0, 0, 0, 0.2) 0px 8px 24px; opacity: 0; position: absolute; top: 100%; right: 0; left: auto; z-index: -1; overflow: hidden; transform: scaleX(0); transition: transform 0.4s, opacity 0.3s; transform-origin: top right; } #cs-navigation .cs-ul { width: auto; min-width: 40%; height: 65vh; margin: 0; /* 28px - 40px */ padding: 3rem clamp(1.75rem, 3vw, 2.5rem) 2rem 4.375rem; display: flex; flex-direction: column; justify-content: flex-start; align-items: flex-end; gap: 1.25rem; overflow: scroll; } #cs-navigation .cs-li { text-align: right; list-style: none; width: 100%; margin-right: 0; opacity: 0; /* transition from these values */ transform: translateX(-2.5rem); transition: transform 0.6s, opacity 0.9s; } #cs-navigation .cs-li:nth-of-type(1) { transition-delay: 0.05s; } #cs-navigation .cs-li:nth-of-type(2) { transition-delay: 0.1s; } #cs-navigation .cs-li:nth-of-type(3) { transition-delay: 0.15s; } #cs-navigation .cs-li:nth-of-type(4) { transition-delay: 0.2s; } #cs-navigation .cs-li:nth-of-type(5) { transition-delay: 0.25s; } #cs-navigation .cs-li:nth-of-type(6) { transition-delay: 0.3s; } #cs-navigation .cs-li:nth-of-type(7) { transition-delay: 0.35s; } #cs-navigation .cs-li:nth-of-type(8) { transition-delay: 0.4s; } #cs-navigation .cs-li:nth-of-type(9) { transition-delay: 0.45s; } #cs-navigation .cs-li-link { /* 16px - 24px */ font-size: clamp(1rem, 2.5vw, 1.5rem); line-height: 1.2em; text-decoration: none; margin: 0; color: var(--headerColor); display: inline-block; position: relative; } #cs-navigation .cs-li-link:before { /* active state underline */ content: ""; width: 100%; height: 1px; background: currentColor; opacity: 1; display: none; position: absolute; bottom: -0.125rem; left: 0; } #cs-navigation .cs-li-link.cs-active:before { display: block; } #cs-navigation .cs-button-solid { display: none; } } /*-- -------------------------- --> <--- Desktop Navigation --> <--- -------------------------- -*/ /* Small Desktop - 1024px */ @media only screen and (min-width: 64rem) { #cs-navigation { width: 100%; /* prevents padding and border from affecting height and width */ box-sizing: border-box; padding: 0 1rem; background-color: #fff; box-shadow: rgba(149, 157, 165, 0.2) 0px 8px 24px; position: fixed; z-index: 10000; } #cs-navigation .cs-container { width: 100%; max-width: 80rem; margin: auto; display: flex; justify-content: flex-end; align-items: center; gap: 1.5rem; } #cs-navigation .cs-toggle { display: none; } #cs-navigation .cs-logo { width: 18.4%; max-width: 21.875rem; height: 4.0625rem; /* margin-right auto pushes everything away from it to the right */ margin: 0 auto 0 0; padding: 0; display: flex; justify-content: center; align-items: center; z-index: 100; } #cs-navigation .cs-logo img { width: 100%; height: 100%; /* ensures the image never overflows the container. It stays contained within it's width and height and expands to fill it then stops once it reaches an edge */ object-fit: contain; } #cs-navigation .cs-ul { width: 100%; margin: 0; padding: 0; display: flex; justify-content: flex-start; align-items: center; /* 20px - 36px */ gap: clamp(1.25rem, 2.6vw, 2.25rem); } #cs-navigation .cs-li { list-style: none; padding: 2rem 0; /* prevent flexbox from squishing it */ flex: none; } #cs-navigation .cs-li-link { /* 14px - 16px */ font-size: clamp(0.875rem, 1vw, 1rem); line-height: 1.5em; text-decoration: none; margin: 0; color: var(--bodyTextColor); display: block; position: relative; } #cs-navigation .cs-li-link:hover:before { width: 100%; } #cs-navigation .cs-li-link.cs-active:before { width: 100%; } #cs-navigation .cs-li-link:before { /* active state underline */ content: ""; width: 0%; height: 2px; background: var(--primary); opacity: 1; display: block; position: absolute; bottom: 0rem; left: 0; transition: width 0.3s; } #cs-navigation .cs-button-solid { font-size: 1rem; font-weight: 700; /* 46px - 56px */ line-height: clamp(2.875em, 5.5vw, 3.5em); text-align: center; text-decoration: none; min-width: 9.375rem; margin: 0; /* prevents padding from adding to the width */ box-sizing: border-box; padding: 0 1.5rem; color: #fff; background-color: var(--primary); border-radius: 0.25rem; display: inline-block; position: relative; z-index: 1; } #cs-navigation .cs-button-solid:before { content: ""; width: 0%; height: 100%; background: #000; opacity: 1; border-radius: 0.25rem; position: absolute; top: 0; left: 0; z-index: -1; transition: width 0.3s; } #cs-navigation .cs-button-solid:hover:before { width: 100%; } }
/*-- -------------------------- --> <--- Dark Mode Toggle --> <--- -------------------------- -*/ /* Mobile - 360px */ @media only screen and (min-width: 0rem) { body.dark-mode #dark-mode-toggle .cs-sun { opacity: 1; transform: translate(-50%, -50%); } body.dark-mode #dark-mode-toggle .cs-moon { opacity: 0; transform: translate(-50%, -150%); fill: #fff; } #dark-mode-toggle { width: 3rem; height: 3rem; padding: 0; background: transparent; border: none; display: block; position: absolute; top: 0.625rem; right: 4.375rem; z-index: 1000; overflow: hidden; } #dark-mode-toggle img, #dark-mode-toggle svg { width: 1.25rem; height: 1.25rem; position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%); pointer-events: none; } #dark-mode-toggle .cs-moon { z-index: 2; transition: transform 0.3s, opacity 0.3s; } #dark-mode-toggle .cs-sun { opacity: 0; z-index: 1; transform: translate(-50%, 100%); transition: transform 0.3s, opacity 0.3s; } } /* Desktop - 1024px */ @media only screen and (min-width: 64rem) { #dark-mode-toggle { margin: 0; position: relative; top: auto; right: auto; transform: none; } #dark-mode-toggle:hover { cursor: pointer; } } /*-- -------------------------- --> <--- Mobile Navigation --> <--- -------------------------- -*/ /* Mobile - 1023px */ @media only screen and (max-width: 63.9375rem) { body.cs-open { overflow: hidden; } #cs-navigation { width: 100%; /* prevents padding and border from affecting height and width */ box-sizing: border-box; padding: 0.75rem 1rem; background-color: #fff; box-shadow: rgba(149, 157, 165, 0.2) 0px 8px 24px; position: fixed; z-index: 10000; } #cs-navigation:before { /* black blurred overlay */ content: ""; width: 0%; height: 100vh; background: rgba(0, 0, 0, 0.6); opacity: 0; display: block; position: absolute; top: 100%; right: 0; z-index: -11; transition: width 0.5s, opacity 0.3s; -webkit-backdrop-filter: blur(10px); backdrop-filter: blur(10px); } #cs-navigation.cs-active:before { width: 100%; opacity: 1; } #cs-navigation.cs-active .cs-ul-wrapper { opacity: 1; transform: scaleX(1); transition-delay: 0.2s; } #cs-navigation.cs-active .cs-li { opacity: 1; transform: translateX(0); } #cs-navigation .cs-container { width: 100%; display: flex; justify-content: flex-end; align-items: center; } #cs-navigation .cs-logo { width: 40%; max-width: 9.125rem; height: 100%; margin: 0 auto 0 0; /* prevents padding and border from affecting height and width */ box-sizing: border-box; padding: 0; display: flex; justify-content: center; align-items: center; z-index: 10; } #cs-navigation .cs-logo img { width: 100%; height: 100%; /* ensures the image never overflows the container. It stays contained within it's width and height and expands to fill it then stops once it reaches an edge */ object-fit: contain; /* places the image to the left edge of the parent */ object-position: left; } #cs-navigation .cs-toggle { /* 44px - 48px */ width: clamp(2.75rem, 6vw, 3rem); height: clamp(2.75rem, 6vw, 3rem); margin: 0 0 0 auto; background-color: transparent; border: none; border-radius: 0.25rem; display: flex; justify-content: center; align-items: center; } #cs-navigation .cs-active .cs-line1 { top: 50%; transform: translate(-50%, -50%) rotate(225deg); } #cs-navigation .cs-active .cs-line2 { top: 50%; transform: translate(-50%, -50%) translateY(0) rotate(-225deg); transform-origin: center; } #cs-navigation .cs-active .cs-line3 { opacity: 0; bottom: 100%; } #cs-navigation .cs-box { /* 24px - 28px */ width: clamp(1.5rem, 2vw, 1.75rem); /* 14px - 16px */ height: clamp(0.875rem, 1.5vw, 1rem); position: relative; } #cs-navigation .cs-line { width: 100%; height: 2px; background-color: #1a1a1a; border-radius: 2px; position: absolute; left: 50%; transform: translateX(-50%); } #cs-navigation .cs-line1 { top: 0; transition: transform 0.5s, top 0.3s, left 0.3s; animation-duration: 0.7s; animation-timing-function: ease; animation-direction: normal; animation-fill-mode: forwards; transform-origin: center; } #cs-navigation .cs-line2 { top: 50%; transform: translateX(-50%) translateY(-50%); transition: top 0.3s, left 0.3s, transform 0.5s; animation-duration: 0.7s; animation-timing-function: ease; animation-direction: normal; animation-fill-mode: forwards; } #cs-navigation .cs-line3 { bottom: 0; transition: bottom 0.3s, opacity 0.3s; } #cs-navigation .cs-ul-wrapper { height: 100vh; background-color: #fff; box-shadow: inset rgba(0, 0, 0, 0.2) 0px 8px 24px; opacity: 0; position: absolute; top: 100%; right: 0; left: auto; z-index: -1; overflow: hidden; transform: scaleX(0); transition: transform 0.4s, opacity 0.3s; transform-origin: top right; } #cs-navigation .cs-ul { width: auto; min-width: 40%; height: 65vh; margin: 0; /* 28px - 40px */ padding: 3rem clamp(1.75rem, 3vw, 2.5rem) 2rem 4.375rem; display: flex; flex-direction: column; justify-content: flex-start; align-items: flex-end; gap: 1.25rem; overflow: scroll; } #cs-navigation .cs-li { text-align: right; list-style: none; width: 100%; margin-right: 0; opacity: 0; /* transition from these values */ transform: translateX(-2.5rem); transition: transform 0.6s, opacity 0.9s; } #cs-navigation .cs-li:nth-of-type(1) { transition-delay: 0.05s; } #cs-navigation .cs-li:nth-of-type(2) { transition-delay: 0.1s; } #cs-navigation .cs-li:nth-of-type(3) { transition-delay: 0.15s; } #cs-navigation .cs-li:nth-of-type(4) { transition-delay: 0.2s; } #cs-navigation .cs-li:nth-of-type(5) { transition-delay: 0.25s; } #cs-navigation .cs-li:nth-of-type(6) { transition-delay: 0.3s; } #cs-navigation .cs-li:nth-of-type(7) { transition-delay: 0.35s; } #cs-navigation .cs-li:nth-of-type(8) { transition-delay: 0.4s; } #cs-navigation .cs-li:nth-of-type(9) { transition-delay: 0.45s; } #cs-navigation .cs-li-link { /* 16px - 24px */ font-size: clamp(1rem, 2.5vw, 1.5rem); line-height: 1.2em; text-decoration: none; margin: 0; color: var(--headerColor); display: inline-block; position: relative; } #cs-navigation .cs-li-link:before { /* active state underline */ content: ""; width: 100%; height: 1px; background: currentColor; opacity: 1; display: none; position: absolute; bottom: -0.125rem; left: 0; } #cs-navigation .cs-li-link.cs-active:before { display: block; } #cs-navigation .cs-button-solid { display: none; } } /* Dark Mode */ @media only screen and (max-width: 63.9375rem) { body.dark-mode #cs-navigation { background-color: var(--dark); } body.dark-mode #cs-navigation .cs-logo { /* makes it white */ filter: grayscale(1) brightness(1000%); } body.dark-mode #cs-navigation .cs-line { background-color: #fff; } body.dark-mode #cs-navigation .cs-ul-wrapper { background-color: var(--medium); } body.dark-mode #cs-navigation .cs-li-link { color: var(--bodyTextColorWhite); } } /*-- -------------------------- --> <--- Desktop Navigation --> <--- -------------------------- -*/ /* Small Desktop - 1024px */ @media only screen and (min-width: 64rem) { #cs-navigation { width: 100%; /* prevents padding and border from affecting height and width */ box-sizing: border-box; padding: 0 1rem; background-color: #fff; box-shadow: rgba(149, 157, 165, 0.2) 0px 8px 24px; position: fixed; z-index: 10000; } #cs-navigation .cs-container { width: 100%; max-width: 80rem; margin: auto; display: flex; justify-content: flex-end; align-items: center; gap: 1.5rem; } #cs-navigation .cs-toggle { display: none; } #cs-navigation .cs-logo { width: 18.4%; max-width: 21.875rem; height: 4.0625rem; /* margin-right auto pushes everything away from it to the right */ margin: 0 auto 0 0; padding: 0; display: flex; justify-content: center; align-items: center; z-index: 100; } #cs-navigation .cs-logo img { width: 100%; height: 100%; /* ensures the image never overflows the container. It stays contained within it's width and height and expands to fill it then stops once it reaches an edge */ object-fit: contain; } #cs-navigation .cs-ul { width: 100%; margin: 0; padding: 0; display: flex; justify-content: flex-start; align-items: center; /* 20px - 36px */ gap: clamp(1.25rem, 2.6vw, 2.25rem); } #cs-navigation .cs-li { list-style: none; padding: 2rem 0; /* prevent flexbox from squishing it */ flex: none; } #cs-navigation .cs-li-link { /* 14px - 16px */ font-size: clamp(0.875rem, 1vw, 1rem); line-height: 1.5em; text-decoration: none; margin: 0; color: var(--bodyTextColor); display: block; position: relative; } #cs-navigation .cs-li-link:hover:before { width: 100%; } #cs-navigation .cs-li-link.cs-active:before { width: 100%; } #cs-navigation .cs-li-link:before { /* active state underline */ content: ""; width: 0%; height: 2px; background: var(--primary); opacity: 1; display: block; position: absolute; bottom: 0rem; left: 0; transition: width 0.3s; } #cs-navigation .cs-button-solid { font-size: 1rem; font-weight: 700; /* 46px - 56px */ line-height: clamp(2.875em, 5.5vw, 3.5em); text-align: center; text-decoration: none; min-width: 9.375rem; margin: 0; /* prevents padding from adding to the width */ box-sizing: border-box; padding: 0 1.5rem; color: #fff; background-color: var(--primary); border-radius: 0.25rem; display: inline-block; position: relative; z-index: 1; } #cs-navigation .cs-button-solid:before { content: ""; width: 0%; height: 100%; background: #000; opacity: 1; border-radius: 0.25rem; position: absolute; top: 0; left: 0; z-index: -1; transition: width 0.3s; } #cs-navigation .cs-button-solid:hover:before { width: 100%; } } /* Dark Mode */ @media only screen and (min-width: 64rem) { body.dark-mode #cs-navigation { background-color: var(--dark); } body.dark-mode #cs-navigation .cs-logo { /* makes it turn white */ filter: grayscale(1) brightness(1000%); } body.dark-mode #cs-navigation .cs-li-link { color: var(--bodyTextColorWhite); } body.dark-mode #cs-navigation .cs-li-link:before { background-color: var(--primaryLight); } }
/*-- -------------------------- --> <--- Mobile Navigation --> <--- -------------------------- -*/ /* Mobile - 1023px */ @media only screen and (max-width: 63.9375rem) { body { &.cs-open { overflow: hidden; } } #cs-navigation { width: 100%; /* prevents padding and border from affecting height and width */ box-sizing: border-box; padding: (12/16rem) (16/16rem); background-color: #fff; box-shadow: rgba(149, 157, 165, 0.2) 0px 8px 24px; position: fixed; z-index: 10000; &:before { /* black blurred overlay */ content: ""; width: 0%; height: 100vh; background: rgba(0, 0, 0, 0.6); opacity: 0; display: block; position: absolute; top: 100%; right: 0; z-index: -11; transition: width 0.5s, opacity 0.3s; -webkit-backdrop-filter: blur(10px); backdrop-filter: blur(10px); } &.cs-active { &:before { width: 100%; opacity: 1; } .cs-ul-wrapper { opacity: 1; transform: scaleX(1); transition-delay: 0.2s; } .cs-li { opacity: 1; transform: translateX(0); } } .cs-container { width: 100%; display: flex; justify-content: flex-end; align-items: center; } .cs-logo { width: 40%; max-width: (146/16rem); height: 100%; margin: 0 auto 0 0; /* prevents padding and border from affecting height and width */ box-sizing: border-box; padding: 0; display: flex; justify-content: center; align-items: center; z-index: 10; img { width: 100%; height: 100%; /* ensures the image never overflows the container. It stays contained within it's width and height and expands to fill it then stops once it reaches an edge */ object-fit: contain; /* places the image to the left edge of the parent */ object-position: left; } } .cs-toggle { /* 44px - 48px */ width: clamp(2.75rem, 6vw, 3rem); height: clamp(2.75rem, 6vw, 3rem); margin: 0 0 0 auto; background-color: transparent; border: none; border-radius: (4/16rem); display: flex; justify-content: center; align-items: center; } .cs-active { .cs-line1 { top: 50%; transform: translate(-50%, -50%) rotate(225deg); } .cs-line2 { top: 50%; transform: translate(-50%, -50%) translateY(0) rotate(-225deg); transform-origin: center; } .cs-line3 { opacity: 0; bottom: 100%; } } .cs-box { /* 24px - 28px */ width: clamp(1.5rem, 2vw, 1.75rem); /* 14px - 16px */ height: clamp(0.875rem, 1.5vw, 1rem); position: relative; } .cs-line { width: 100%; height: 2px; background-color: #1a1a1a; border-radius: 2px; position: absolute; left: 50%; transform: translateX(-50%); } .cs-line1 { top: 0; transition: transform 0.5s, top 0.3s, left 0.3s; animation-duration: 0.7s; animation-timing-function: ease; animation-direction: normal; animation-fill-mode: forwards; transform-origin: center; } .cs-line2 { top: 50%; transform: translateX(-50%) translateY(-50%); transition: top 0.3s, left 0.3s, transform 0.5s; animation-duration: 0.7s; animation-timing-function: ease; animation-direction: normal; animation-fill-mode: forwards; } .cs-line3 { bottom: 0; transition: bottom 0.3s, opacity 0.3s; } .cs-ul-wrapper { height: 100vh; background-color: #fff; box-shadow: inset rgba(0, 0, 0, 0.2) 0px 8px 24px; opacity: 0; position: absolute; top: 100%; right: 0; left: auto; z-index: -1; overflow: hidden; transform: scaleX(0); transition: transform 0.4s, opacity 0.3s; transform-origin: top right; } .cs-ul { width: auto; min-width: 40%; height: 65vh; margin: 0; /* 28px - 40px */ padding: (48/16rem) clamp(1.75rem, 3vw, 2.5rem) (32/16rem) (70/16rem); display: flex; flex-direction: column; justify-content: flex-start; align-items: flex-end; gap: (20/16rem); overflow: scroll; } .cs-li { text-align: right; list-style: none; width: 100%; margin-right: 0; opacity: 0; /* transition from these values */ transform: translateX(-2.5rem); transition: transform 0.6s, opacity 0.9s; &:nth-of-type(1) { transition-delay: 0.05s; } &:nth-of-type(2) { transition-delay: 0.1s; } &:nth-of-type(3) { transition-delay: 0.15s; } &:nth-of-type(4) { transition-delay: 0.2s; } &:nth-of-type(5) { transition-delay: 0.25s; } &:nth-of-type(6) { transition-delay: 0.3s; } &:nth-of-type(7) { transition-delay: 0.35s; } &:nth-of-type(8) { transition-delay: 0.4s; } &:nth-of-type(9) { transition-delay: 0.45s; } } .cs-li-link { /* 16px - 24px */ font-size: clamp(1rem, 2.5vw, 1.5rem); line-height: 1.2em; text-decoration: none; margin: 0; color: var(--headerColor); display: inline-block; position: relative; &:before { /* active state underline */ content: ""; width: 100%; height: 1px; background: currentColor; opacity: 1; display: none; position: absolute; bottom: (-2/16rem); left: 0; } &.cs-active { &:before { display: block; } } } .cs-button-solid { display: none; } } } /*-- -------------------------- --> <--- Desktop Navigation --> <--- -------------------------- -*/ /* Small Desktop - 1024px */ @media only screen and (min-width: 64rem) { #cs-navigation { width: 100%; /* prevents padding and border from affecting height and width */ box-sizing: border-box; padding: 0 (16/16rem); background-color: #fff; box-shadow: rgba(149, 157, 165, 0.2) 0px 8px 24px; position: fixed; z-index: 10000; .cs-container { width: 100%; max-width: (1280/16rem); margin: auto; display: flex; justify-content: flex-end; align-items: center; gap: (24/16rem); } .cs-toggle { display: none; } .cs-logo { width: 18.4%; max-width: (350/16rem); height: (65/16rem); /* margin-right auto pushes everything away from it to the right */ margin: 0 auto 0 0; padding: 0; display: flex; justify-content: center; align-items: center; z-index: 100; img { width: 100%; height: 100%; /* ensures the image never overflows the container. It stays contained within it's width and height and expands to fill it then stops once it reaches an edge */ object-fit: contain; } } .cs-ul { width: 100%; margin: 0; padding: 0; display: flex; justify-content: flex-start; align-items: center; /* 20px - 36px */ gap: clamp(1.25rem, 2.6vw, 2.25rem); } .cs-li { list-style: none; padding: (32/16rem) 0; /* prevent flexbox from squishing it */ flex: none; } .cs-li-link { /* 14px - 16px */ font-size: clamp(0.875rem, 1vw, 1rem); line-height: 1.5em; text-decoration: none; margin: 0; color: var(--bodyTextColor); display: block; position: relative; &:hover { &:before { width: 100%; } } &.cs-active { &:before { width: 100%; } } &:before { /* active state underline */ content: ""; width: 0%; height: 2px; background: var(--primary); opacity: 1; display: block; position: absolute; bottom: (0/16rem); left: 0; transition: width 0.3s; } } .cs-button-solid { font-size: (16/16rem); font-weight: 700; /* 46px - 56px */ line-height: clamp(2.875em, 5.5vw, 3.5em); text-align: center; text-decoration: none; min-width: (150/16rem); margin: 0; /* prevents padding from adding to the width */ box-sizing: border-box; padding: 0 (24/16rem); color: #fff; background-color: var(--primary); border-radius: (4/16rem); display: inline-block; position: relative; z-index: 1; &:before { content: ""; width: 0%; height: 100%; background: #000; opacity: 1; border-radius: (4/16rem); position: absolute; top: 0; left: 0; z-index: -1; transition: width 0.3s; } &:hover { &:before { width: 100%; } } } } }
/*-- -------------------------- --> <--- Dark Mode Toggle --> <--- -------------------------- -*/ /* Mobile - 360px */ @media only screen and (min-width: 0rem) { body.dark-mode { #dark-mode-toggle { .cs-sun { opacity: 1; transform: translate(-50%, -50%); } .cs-moon { opacity: 0; transform: translate(-50%, -150%); fill: #fff; } } } #dark-mode-toggle { width: (48/16rem); height: (48/16rem); padding: 0; background: transparent; border: none; display: block; position: absolute; top: (10/16rem); right: (70/16rem); z-index: 1000; overflow: hidden; img, svg { width: (20/16rem); height: (20/16rem); //center image inside button position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%); pointer-events: none; } .cs-moon { z-index: 2; // Transition properties transition: transform 0.3s, opacity 0.3s; // fill: yellow; --> uncomment to change the color of the moon if needed } .cs-sun { opacity: 0; z-index: 1; // Transition property transform: translate(-50%, 100%); transition: transform 0.3s, opacity 0.3s; } } } /* Desktop - 1024px */ @media only screen and (min-width: 64rem) { #dark-mode-toggle { margin: 0; position: relative; top: auto; right: auto; transform: none; &:hover { cursor: pointer; } } } /*-- -------------------------- --> <--- Mobile Navigation --> <--- -------------------------- -*/ /* Mobile - 1023px */ @media only screen and (max-width: 63.9375rem) { body { &.cs-open { overflow: hidden; } } #cs-navigation { width: 100%; /* prevents padding and border from affecting height and width */ box-sizing: border-box; padding: (12/16rem) (16/16rem); background-color: #fff; box-shadow: rgba(149, 157, 165, 0.2) 0px 8px 24px; position: fixed; z-index: 10000; &:before { /* black blurred overlay */ content: ""; width: 0%; height: 100vh; background: rgba(0, 0, 0, 0.6); opacity: 0; display: block; position: absolute; top: 100%; right: 0; z-index: -11; transition: width 0.5s, opacity 0.3s; -webkit-backdrop-filter: blur(10px); backdrop-filter: blur(10px); } &.cs-active { &:before { width: 100%; opacity: 1; } .cs-ul-wrapper { opacity: 1; transform: scaleX(1); transition-delay: 0.2s; } .cs-li { opacity: 1; transform: translateX(0); } } .cs-container { width: 100%; display: flex; justify-content: flex-end; align-items: center; } .cs-logo { width: 40%; max-width: (146/16rem); height: 100%; margin: 0 auto 0 0; /* prevents padding and border from affecting height and width */ box-sizing: border-box; padding: 0; display: flex; justify-content: center; align-items: center; z-index: 10; img { width: 100%; height: 100%; /* ensures the image never overflows the container. It stays contained within it's width and height and expands to fill it then stops once it reaches an edge */ object-fit: contain; /* places the image to the left edge of the parent */ object-position: left; } } .cs-toggle { /* 44px - 48px */ width: clamp(2.75rem, 6vw, 3rem); height: clamp(2.75rem, 6vw, 3rem); margin: 0 0 0 auto; background-color: transparent; border: none; border-radius: (4/16rem); display: flex; justify-content: center; align-items: center; } .cs-active { .cs-line1 { top: 50%; transform: translate(-50%, -50%) rotate(225deg); } .cs-line2 { top: 50%; transform: translate(-50%, -50%) translateY(0) rotate(-225deg); transform-origin: center; } .cs-line3 { opacity: 0; bottom: 100%; } } .cs-box { /* 24px - 28px */ width: clamp(1.5rem, 2vw, 1.75rem); /* 14px - 16px */ height: clamp(0.875rem, 1.5vw, 1rem); position: relative; } .cs-line { width: 100%; height: 2px; background-color: #1a1a1a; border-radius: 2px; position: absolute; left: 50%; transform: translateX(-50%); } .cs-line1 { top: 0; transition: transform 0.5s, top 0.3s, left 0.3s; animation-duration: 0.7s; animation-timing-function: ease; animation-direction: normal; animation-fill-mode: forwards; transform-origin: center; } .cs-line2 { top: 50%; transform: translateX(-50%) translateY(-50%); transition: top 0.3s, left 0.3s, transform 0.5s; animation-duration: 0.7s; animation-timing-function: ease; animation-direction: normal; animation-fill-mode: forwards; } .cs-line3 { bottom: 0; transition: bottom 0.3s, opacity 0.3s; } .cs-ul-wrapper { height: 100vh; background-color: #fff; box-shadow: inset rgba(0, 0, 0, 0.2) 0px 8px 24px; opacity: 0; position: absolute; top: 100%; right: 0; left: auto; z-index: -1; overflow: hidden; transform: scaleX(0); transition: transform 0.4s, opacity 0.3s; transform-origin: top right; } .cs-ul { width: auto; min-width: 40%; height: 65vh; margin: 0; /* 28px - 40px */ padding: (48/16rem) clamp(1.75rem, 3vw, 2.5rem) (32/16rem) (70/16rem); display: flex; flex-direction: column; justify-content: flex-start; align-items: flex-end; gap: (20/16rem); overflow: scroll; } .cs-li { text-align: right; list-style: none; width: 100%; margin-right: 0; opacity: 0; /* transition from these values */ transform: translateX(-2.5rem); transition: transform 0.6s, opacity 0.9s; &:nth-of-type(1) { transition-delay: 0.05s; } &:nth-of-type(2) { transition-delay: 0.1s; } &:nth-of-type(3) { transition-delay: 0.15s; } &:nth-of-type(4) { transition-delay: 0.2s; } &:nth-of-type(5) { transition-delay: 0.25s; } &:nth-of-type(6) { transition-delay: 0.3s; } &:nth-of-type(7) { transition-delay: 0.35s; } &:nth-of-type(8) { transition-delay: 0.4s; } &:nth-of-type(9) { transition-delay: 0.45s; } } .cs-li-link { /* 16px - 24px */ font-size: clamp(1rem, 2.5vw, 1.5rem); line-height: 1.2em; text-decoration: none; margin: 0; color: var(--headerColor); display: inline-block; position: relative; &:before { /* active state underline */ content: ""; width: 100%; height: 1px; background: currentColor; opacity: 1; display: none; position: absolute; bottom: (-2/16rem); left: 0; } &.cs-active { &:before { display: block; } } } .cs-button-solid { display: none; } } } /* Dark Mode */ @media only screen and (max-width: 63.9375rem) { body.dark-mode { #cs-navigation { background-color: var(--dark); .cs-logo { /* makes it white */ filter: grayscale(1) brightness(1000%); } .cs-line { background-color: #fff; } .cs-ul-wrapper { background-color: var(--medium); } .cs-li-link { color: var(--bodyTextColorWhite); } } } } /*-- -------------------------- --> <--- Desktop Navigation --> <--- -------------------------- -*/ /* Small Desktop - 1024px */ @media only screen and (min-width: 64rem) { #cs-navigation { width: 100%; /* prevents padding and border from affecting height and width */ box-sizing: border-box; padding: 0 (16/16rem); background-color: #fff; box-shadow: rgba(149, 157, 165, 0.2) 0px 8px 24px; position: fixed; z-index: 10000; .cs-container { width: 100%; max-width: (1280/16rem); margin: auto; display: flex; justify-content: flex-end; align-items: center; gap: (24/16rem); } .cs-toggle { display: none; } .cs-logo { width: 18.4%; max-width: (350/16rem); height: (65/16rem); /* margin-right auto pushes everything away from it to the right */ margin: 0 auto 0 0; padding: 0; display: flex; justify-content: center; align-items: center; z-index: 100; img { width: 100%; height: 100%; /* ensures the image never overflows the container. It stays contained within it's width and height and expands to fill it then stops once it reaches an edge */ object-fit: contain; } } .cs-ul { width: 100%; margin: 0; padding: 0; display: flex; justify-content: flex-start; align-items: center; /* 20px - 36px */ gap: clamp(1.25rem, 2.6vw, 2.25rem); } .cs-li { list-style: none; padding: (32/16rem) 0; /* prevent flexbox from squishing it */ flex: none; } .cs-li-link { /* 14px - 16px */ font-size: clamp(0.875rem, 1vw, 1rem); line-height: 1.5em; text-decoration: none; margin: 0; color: var(--bodyTextColor); display: block; position: relative; &:hover { &:before { width: 100%; } } &.cs-active { &:before { width: 100%; } } &:before { /* active state underline */ content: ""; width: 0%; height: 2px; background: var(--primary); opacity: 1; display: block; position: absolute; bottom: (0/16rem); left: 0; transition: width 0.3s; } } .cs-button-solid { font-size: (16/16rem); font-weight: 700; /* 46px - 56px */ line-height: clamp(2.875em, 5.5vw, 3.5em); text-align: center; text-decoration: none; min-width: (150/16rem); margin: 0; /* prevents padding from adding to the width */ box-sizing: border-box; padding: 0 (24/16rem); color: #fff; background-color: var(--primary); border-radius: (4/16rem); display: inline-block; position: relative; z-index: 1; &:before { content: ""; width: 0%; height: 100%; background: #000; opacity: 1; border-radius: (4/16rem); position: absolute; top: 0; left: 0; z-index: -1; transition: width 0.3s; } &:hover { &:before { width: 100%; } } } } } /* Dark Mode */ @media only screen and (min-width: 64rem) { body.dark-mode { #cs-navigation { background-color: var(--dark); .cs-logo { /* makes it turn white */ filter: grayscale(1) brightness(1000%); } .cs-li-link { color: var(--bodyTextColorWhite); } .cs-li-link { &:before { background-color: var(--primaryLight); } } } } }
/*-- -------------------------- --> <--- Mobile Navigation --> <--- -------------------------- -*/ /* Mobile - 1023px */ @media only screen and (max-width: 63.9375rem) { body { &.cs-open { overflow: hidden; } } #cs-navigation { width: 100%; /* prevents padding and border from affecting height and width */ box-sizing: border-box; padding: calc(12 / 16 * 1rem) calc(16 / 16 * 1rem); background-color: #fff; box-shadow: rgba(149, 157, 165, 0.2) 0px 8px 24px; position: fixed; z-index: 10000; &:before { /* black blurred overlay */ content: ""; width: 0%; height: 100vh; background: rgba(0, 0, 0, 0.6); opacity: 0; display: block; position: absolute; top: 100%; right: 0; z-index: -11; transition: width 0.5s, opacity 0.3s; -webkit-backdrop-filter: blur(10px); backdrop-filter: blur(10px); } &.cs-active { &:before { width: 100%; opacity: 1; } .cs-ul-wrapper { opacity: 1; transform: scaleX(1); transition-delay: 0.2s; } .cs-li { opacity: 1; transform: translateX(0); } } .cs-container { width: 100%; display: flex; justify-content: flex-end; align-items: center; } .cs-logo { width: 40%; max-width: calc(146 / 16 * 1rem); height: 100%; margin: 0 auto 0 0; /* prevents padding and border from affecting height and width */ box-sizing: border-box; padding: 0; display: flex; justify-content: center; align-items: center; z-index: 10; img { width: 100%; height: 100%; /* ensures the image never overflows the container. It stays contained within it's width and height and expands to fill it then stops once it reaches an edge */ object-fit: contain; /* places the image to the left edge of the parent */ object-position: left; } } .cs-toggle { /* 44px - 48px */ width: clamp(2.75rem, 6vw, 3rem); height: clamp(2.75rem, 6vw, 3rem); margin: 0 0 0 auto; background-color: transparent; border: none; border-radius: calc(4 / 16 * 1rem); display: flex; justify-content: center; align-items: center; } .cs-active { .cs-line1 { top: 50%; transform: translate(-50%, -50%) rotate(225deg); } .cs-line2 { top: 50%; transform: translate(-50%, -50%) translateY(0) rotate(-225deg); transform-origin: center; } .cs-line3 { opacity: 0; bottom: 100%; } } .cs-box { /* 24px - 28px */ width: clamp(1.5rem, 2vw, 1.75rem); /* 14px - 16px */ height: clamp(0.875rem, 1.5vw, 1rem); position: relative; } .cs-line { width: 100%; height: 2px; background-color: #1a1a1a; border-radius: 2px; position: absolute; left: 50%; transform: translateX(-50%); } .cs-line1 { top: 0; transition: transform 0.5s, top 0.3s, left 0.3s; animation-duration: 0.7s; animation-timing-function: ease; animation-direction: normal; animation-fill-mode: forwards; transform-origin: center; } .cs-line2 { top: 50%; transform: translateX(-50%) translateY(-50%); transition: top 0.3s, left 0.3s, transform 0.5s; animation-duration: 0.7s; animation-timing-function: ease; animation-direction: normal; animation-fill-mode: forwards; } .cs-line3 { bottom: 0; transition: bottom 0.3s, opacity 0.3s; } .cs-ul-wrapper { height: 100vh; background-color: #fff; box-shadow: inset rgba(0, 0, 0, 0.2) 0px 8px 24px; opacity: 0; position: absolute; top: 100%; right: 0; left: auto; z-index: -1; overflow: hidden; transform: scaleX(0); transition: transform 0.4s, opacity 0.3s; transform-origin: top right; } .cs-ul { width: auto; min-width: 40%; height: 65vh; margin: 0; /* 28px - 40px */ padding: calc(48 / 16 * 1rem) clamp(1.75rem, 3vw, 2.5rem) calc(32 / 16 * 1rem) calc(70 / 16 * 1rem); display: flex; flex-direction: column; justify-content: flex-start; align-items: flex-end; gap: calc(20 / 16 * 1rem); overflow: scroll; } .cs-li { text-align: right; list-style: none; width: 100%; margin-right: 0; opacity: 0; /* transition from these values */ transform: translateX(-2.5rem); transition: transform 0.6s, opacity 0.9s; &:nth-of-type(1) { transition-delay: 0.05s; } &:nth-of-type(2) { transition-delay: 0.1s; } &:nth-of-type(3) { transition-delay: 0.15s; } &:nth-of-type(4) { transition-delay: 0.2s; } &:nth-of-type(5) { transition-delay: 0.25s; } &:nth-of-type(6) { transition-delay: 0.3s; } &:nth-of-type(7) { transition-delay: 0.35s; } &:nth-of-type(8) { transition-delay: 0.4s; } &:nth-of-type(9) { transition-delay: 0.45s; } } .cs-li-link { /* 16px - 24px */ font-size: clamp(1rem, 2.5vw, 1.5rem); line-height: 1.2em; text-decoration: none; margin: 0; color: var(--headerColor); display: inline-block; position: relative; &:before { /* active state underline */ content: ""; width: 100%; height: 1px; background: currentColor; opacity: 1; display: none; position: absolute; bottom: calc(-2 / 16 * 1rem); left: 0; } &.cs-active { &:before { display: block; } } } .cs-button-solid { display: none; } } } /*-- -------------------------- --> <--- Desktop Navigation --> <--- -------------------------- -*/ /* Small Desktop - 1024px */ @media only screen and (min-width: 64rem) { #cs-navigation { width: 100%; /* prevents padding and border from affecting height and width */ box-sizing: border-box; padding: 0 calc(16 / 16 * 1rem); background-color: #fff; box-shadow: rgba(149, 157, 165, 0.2) 0px 8px 24px; position: fixed; z-index: 10000; .cs-container { width: 100%; max-width: calc(1280 / 16 * 1rem); margin: auto; display: flex; justify-content: flex-end; align-items: center; gap: calc(24 / 16 * 1rem); } .cs-toggle { display: none; } .cs-logo { width: 18.4%; max-width: calc(350 / 16 * 1rem); height: calc(65 / 16 * 1rem); /* margin-right auto pushes everything away from it to the right */ margin: 0 auto 0 0; padding: 0; display: flex; justify-content: center; align-items: center; z-index: 100; img { width: 100%; height: 100%; /* ensures the image never overflows the container. It stays contained within it's width and height and expands to fill it then stops once it reaches an edge */ object-fit: contain; } } .cs-ul { width: 100%; margin: 0; padding: 0; display: flex; justify-content: flex-start; align-items: center; /* 20px - 36px */ gap: clamp(1.25rem, 2.6vw, 2.25rem); } .cs-li { list-style: none; padding: calc(32 / 16 * 1rem) 0; /* prevent flexbox from squishing it */ flex: none; } .cs-li-link { /* 14px - 16px */ font-size: clamp(0.875rem, 1vw, 1rem); line-height: 1.5em; text-decoration: none; margin: 0; color: var(--bodyTextColor); display: block; position: relative; &:hover { &:before { width: 100%; } } &.cs-active { &:before { width: 100%; } } &:before { /* active state underline */ content: ""; width: 0%; height: 2px; background: var(--primary); opacity: 1; display: block; position: absolute; bottom: calc(0 / 16 * 1rem); left: 0; transition: width 0.3s; } } .cs-button-solid { font-size: calc(16 / 16 * 1rem); font-weight: 700; /* 46px - 56px */ line-height: clamp(2.875em, 5.5vw, 3.5em); text-align: center; text-decoration: none; min-width: calc(150 / 16 * 1rem); margin: 0; /* prevents padding from adding to the width */ box-sizing: border-box; padding: 0 calc(24 / 16 * 1rem); color: #fff; background-color: var(--primary); border-radius: calc(4 / 16 * 1rem); display: inline-block; position: relative; z-index: 1; &:before { content: ""; width: 0%; height: 100%; background: #000; opacity: 1; border-radius: calc(4 / 16 * 1rem); position: absolute; top: 0; left: 0; z-index: -1; transition: width 0.3s; } &:hover { &:before { width: 100%; } } } } }
/*-- -------------------------- --> <--- Dark Mode Toggle --> <--- -------------------------- -*/ /* Mobile - 360px */ @media only screen and (min-width: 0rem) { body.dark-mode { #dark-mode-toggle { .cs-sun { opacity: 1; transform: translate(-50%, -50%); } .cs-moon { opacity: 0; transform: translate(-50%, -150%); fill: #fff; } } } #dark-mode-toggle { width: calc(48 / 16 * 1rem); height: calc(48 / 16 * 1rem); padding: 0; background: transparent; border: none; display: block; position: absolute; top: calc(10 / 16 * 1rem); right: calc(70 / 16 * 1rem); z-index: 1000; overflow: hidden; img, svg { width: calc(20 / 16 * 1rem); height: calc(20 / 16 * 1rem); //center image inside button position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%); pointer-events: none; } .cs-moon { z-index: 2; // Transition properties transition: transform 0.3s, opacity 0.3s; // fill: yellow; --> uncomment to change the color of the moon if needed } .cs-sun { opacity: 0; z-index: 1; // Transition property transform: translate(-50%, 100%); transition: transform 0.3s, opacity 0.3s; } } } /* Desktop - 1024px */ @media only screen and (min-width: 64rem) { #dark-mode-toggle { margin: 0; position: relative; top: auto; right: auto; transform: none; &:hover { cursor: pointer; } } } /*-- -------------------------- --> <--- Mobile Navigation --> <--- -------------------------- -*/ /* Mobile - 1023px */ @media only screen and (max-width: 63.9375rem) { body { &.cs-open { overflow: hidden; } } #cs-navigation { width: 100%; /* prevents padding and border from affecting height and width */ box-sizing: border-box; padding: calc(12 / 16 * 1rem) calc(16 / 16 * 1rem); background-color: #fff; box-shadow: rgba(149, 157, 165, 0.2) 0px 8px 24px; position: fixed; z-index: 10000; &:before { /* black blurred overlay */ content: ""; width: 0%; height: 100vh; background: rgba(0, 0, 0, 0.6); opacity: 0; display: block; position: absolute; top: 100%; right: 0; z-index: -11; transition: width 0.5s, opacity 0.3s; -webkit-backdrop-filter: blur(10px); backdrop-filter: blur(10px); } &.cs-active { &:before { width: 100%; opacity: 1; } .cs-ul-wrapper { opacity: 1; transform: scaleX(1); transition-delay: 0.2s; } .cs-li { opacity: 1; transform: translateX(0); } } .cs-container { width: 100%; display: flex; justify-content: flex-end; align-items: center; } .cs-logo { width: 40%; max-width: calc(146 / 16 * 1rem); height: 100%; margin: 0 auto 0 0; /* prevents padding and border from affecting height and width */ box-sizing: border-box; padding: 0; display: flex; justify-content: center; align-items: center; z-index: 10; img { width: 100%; height: 100%; /* ensures the image never overflows the container. It stays contained within it's width and height and expands to fill it then stops once it reaches an edge */ object-fit: contain; /* places the image to the left edge of the parent */ object-position: left; } } .cs-toggle { /* 44px - 48px */ width: clamp(2.75rem, 6vw, 3rem); height: clamp(2.75rem, 6vw, 3rem); margin: 0 0 0 auto; background-color: transparent; border: none; border-radius: calc(4 / 16 * 1rem); display: flex; justify-content: center; align-items: center; } .cs-active { .cs-line1 { top: 50%; transform: translate(-50%, -50%) rotate(225deg); } .cs-line2 { top: 50%; transform: translate(-50%, -50%) translateY(0) rotate(-225deg); transform-origin: center; } .cs-line3 { opacity: 0; bottom: 100%; } } .cs-box { /* 24px - 28px */ width: clamp(1.5rem, 2vw, 1.75rem); /* 14px - 16px */ height: clamp(0.875rem, 1.5vw, 1rem); position: relative; } .cs-line { width: 100%; height: 2px; background-color: #1a1a1a; border-radius: 2px; position: absolute; left: 50%; transform: translateX(-50%); } .cs-line1 { top: 0; transition: transform 0.5s, top 0.3s, left 0.3s; animation-duration: 0.7s; animation-timing-function: ease; animation-direction: normal; animation-fill-mode: forwards; transform-origin: center; } .cs-line2 { top: 50%; transform: translateX(-50%) translateY(-50%); transition: top 0.3s, left 0.3s, transform 0.5s; animation-duration: 0.7s; animation-timing-function: ease; animation-direction: normal; animation-fill-mode: forwards; } .cs-line3 { bottom: 0; transition: bottom 0.3s, opacity 0.3s; } .cs-ul-wrapper { height: 100vh; background-color: #fff; box-shadow: inset rgba(0, 0, 0, 0.2) 0px 8px 24px; opacity: 0; position: absolute; top: 100%; right: 0; left: auto; z-index: -1; overflow: hidden; transform: scaleX(0); transition: transform 0.4s, opacity 0.3s; transform-origin: top right; } .cs-ul { width: auto; min-width: 40%; height: 65vh; margin: 0; /* 28px - 40px */ padding: calc(48 / 16 * 1rem) clamp(1.75rem, 3vw, 2.5rem) calc(32 / 16 * 1rem) calc(70 / 16 * 1rem); display: flex; flex-direction: column; justify-content: flex-start; align-items: flex-end; gap: calc(20 / 16 * 1rem); overflow: scroll; } .cs-li { text-align: right; list-style: none; width: 100%; margin-right: 0; opacity: 0; /* transition from these values */ transform: translateX(-2.5rem); transition: transform 0.6s, opacity 0.9s; &:nth-of-type(1) { transition-delay: 0.05s; } &:nth-of-type(2) { transition-delay: 0.1s; } &:nth-of-type(3) { transition-delay: 0.15s; } &:nth-of-type(4) { transition-delay: 0.2s; } &:nth-of-type(5) { transition-delay: 0.25s; } &:nth-of-type(6) { transition-delay: 0.3s; } &:nth-of-type(7) { transition-delay: 0.35s; } &:nth-of-type(8) { transition-delay: 0.4s; } &:nth-of-type(9) { transition-delay: 0.45s; } } .cs-li-link { /* 16px - 24px */ font-size: clamp(1rem, 2.5vw, 1.5rem); line-height: 1.2em; text-decoration: none; margin: 0; color: var(--headerColor); display: inline-block; position: relative; &:before { /* active state underline */ content: ""; width: 100%; height: 1px; background: currentColor; opacity: 1; display: none; position: absolute; bottom: calc(-2 / 16 * 1rem); left: 0; } &.cs-active { &:before { display: block; } } } .cs-button-solid { display: none; } } } /* Dark Mode */ @media only screen and (max-width: 63.9375rem) { body.dark-mode { #cs-navigation { background-color: var(--dark); .cs-logo { /* makes it white */ filter: grayscale(1) brightness(1000%); } .cs-line { background-color: #fff; } .cs-ul-wrapper { background-color: var(--medium); } .cs-li-link { color: var(--bodyTextColorWhite); } } } } /*-- -------------------------- --> <--- Desktop Navigation --> <--- -------------------------- -*/ /* Small Desktop - 1024px */ @media only screen and (min-width: 64rem) { #cs-navigation { width: 100%; /* prevents padding and border from affecting height and width */ box-sizing: border-box; padding: 0 calc(16 / 16 * 1rem); background-color: #fff; box-shadow: rgba(149, 157, 165, 0.2) 0px 8px 24px; position: fixed; z-index: 10000; .cs-container { width: 100%; max-width: calc(1280 / 16 * 1rem); margin: auto; display: flex; justify-content: flex-end; align-items: center; gap: calc(24 / 16 * 1rem); } .cs-toggle { display: none; } .cs-logo { width: 18.4%; max-width: calc(350 / 16 * 1rem); height: calc(65 / 16 * 1rem); /* margin-right auto pushes everything away from it to the right */ margin: 0 auto 0 0; padding: 0; display: flex; justify-content: center; align-items: center; z-index: 100; img { width: 100%; height: 100%; /* ensures the image never overflows the container. It stays contained within it's width and height and expands to fill it then stops once it reaches an edge */ object-fit: contain; } } .cs-ul { width: 100%; margin: 0; padding: 0; display: flex; justify-content: flex-start; align-items: center; /* 20px - 36px */ gap: clamp(1.25rem, 2.6vw, 2.25rem); } .cs-li { list-style: none; padding: calc(32 / 16 * 1rem) 0; /* prevent flexbox from squishing it */ flex: none; } .cs-li-link { /* 14px - 16px */ font-size: clamp(0.875rem, 1vw, 1rem); line-height: 1.5em; text-decoration: none; margin: 0; color: var(--bodyTextColor); display: block; position: relative; &:hover { &:before { width: 100%; } } &.cs-active { &:before { width: 100%; } } &:before { /* active state underline */ content: ""; width: 0%; height: 2px; background: var(--primary); opacity: 1; display: block; position: absolute; bottom: calc(0 / 16 * 1rem); left: 0; transition: width 0.3s; } } .cs-button-solid { font-size: calc(16 / 16 * 1rem); font-weight: 700; /* 46px - 56px */ line-height: clamp(2.875em, 5.5vw, 3.5em); text-align: center; text-decoration: none; min-width: calc(150 / 16 * 1rem); margin: 0; /* prevents padding from adding to the width */ box-sizing: border-box; padding: 0 calc(24 / 16 * 1rem); color: #fff; background-color: var(--primary); border-radius: calc(4 / 16 * 1rem); display: inline-block; position: relative; z-index: 1; &:before { content: ""; width: 0%; height: 100%; background: #000; opacity: 1; border-radius: calc(4 / 16 * 1rem); position: absolute; top: 0; left: 0; z-index: -1; transition: width 0.3s; } &:hover { &:before { width: 100%; } } } } } /* Dark Mode */ @media only screen and (min-width: 64rem) { body.dark-mode { #cs-navigation { background-color: var(--dark); .cs-logo { /* makes it turn white */ filter: grayscale(1) brightness(1000%); } .cs-li-link { color: var(--bodyTextColorWhite); } .cs-li-link { &:before { background-color: var(--primaryLight); } } } } }
/*-- -------------------------- --> <--- Mobile Navigation --> <--- -------------------------- -*/ body, html { /* reset margin and padding so there's no gap between the nav and the screen edges */ margin: 0; padding: 0; } /* Mobile - 1023px */ @media only screen and (max-width: 63.9375rem) { body.cs-open { overflow: hidden; } #cs-navigation { width: 100%; padding: 0.75rem 1rem; /* prevents padding and border from affecting height and width */ box-sizing: border-box; background-color: #fff; box-shadow: rgba(149, 157, 165, 0.2) 0px 8px 24px; position: fixed; z-index: 10000; } #cs-navigation.cs-active .cs-ul-wrapper { opacity: 1; transform: scaleY(1); } #cs-navigation.cs-active .cs-li { transform: translateY(0); opacity: 1; } #cs-navigation .cs-container { width: 100%; display: flex; justify-content: flex-end; align-items: center; } #cs-navigation .cs-logo { width: 40%; max-width: 9.125rem; height: 100%; margin: 0 auto 0 0; padding: 0; display: flex; justify-content: center; align-items: center; z-index: 10; } #cs-navigation .cs-logo img { width: 100%; height: 100%; /* ensures the image never overflows the container. It stays contained within it's width and height and expands to fill it then stops once it reaches an edge */ object-fit: contain; } #cs-navigation .cs-toggle { /* 44px - 48px */ width: clamp(2.75rem, 6vw, 3rem); height: clamp(2.75rem, 6vw, 3rem); margin: 0 0 0 auto; border-radius: 0.25rem; background-color: transparent; border: none; display: flex; justify-content: center; align-items: center; } #cs-navigation .cs-active .cs-line1 { top: 50%; transform: translate(-50%, -50%) rotate(225deg); } #cs-navigation .cs-active .cs-line2 { top: 50%; transform-origin: center; transform: translate(-50%, -50%) translateY(0) rotate(-225deg); } #cs-navigation .cs-active .cs-line3 { bottom: 100%; opacity: 0; } #cs-navigation .cs-box { /* 24px - 28px */ width: clamp(1.5rem, 2vw, 1.75rem); /* 14px - 16px */ height: clamp(0.875rem, 1.5vw, 1rem); position: relative; } #cs-navigation .cs-line { width: 100%; height: 2px; border-radius: 2px; background-color: #1a1a1a; position: absolute; left: 50%; transform: translateX(-50%); } #cs-navigation .cs-line1 { top: 0; transform-origin: center; transition: transform 0.5s, top 0.3s, left 0.3s; animation-duration: 0.7s; animation-timing-function: ease; animation-fill-mode: forwards; animation-direction: normal; } #cs-navigation .cs-line2 { top: 50%; transform: translateX(-50%) translateY(-50%); transition: top 0.3s, left 0.3s, transform 0.5s; animation-duration: 0.7s; animation-timing-function: ease; animation-fill-mode: forwards; animation-direction: normal; } #cs-navigation .cs-line3 { bottom: 0; transition: bottom 0.3s, opacity 0.3s; } #cs-navigation .cs-ul-wrapper { width: 100%; height: 100vh; padding-bottom: 2.4em; opacity: 0; background-color: #fff; box-shadow: inset rgba(0, 0, 0, 0.2) 0px 8px 24px; overflow: hidden; position: absolute; top: 100%; left: 0; z-index: -1; transform: scaleY(0); transform-origin: top; transition: transform 0.4s, opacity 0.3s; } #cs-navigation .cs-ul { margin: 0; padding: 3rem 0 0 0; width: 100%; height: auto; max-height: 65vh; overflow: scroll; display: flex; justify-content: flex-start; flex-direction: column; align-items: center; gap: 1.25rem; } #cs-navigation .cs-li { list-style: none; margin-right: 0; /* transition from these values */ transform: translateY(-4.375rem); opacity: 0; transition: transform 0.6s, opacity 0.9s; } #cs-navigation .cs-li:nth-of-type(1) { transition-delay: 0.05s; } #cs-navigation .cs-li:nth-of-type(2) { transition-delay: 0.1s; } #cs-navigation .cs-li:nth-of-type(3) { transition-delay: 0.15s; } #cs-navigation .cs-li:nth-of-type(4) { transition-delay: 0.2s; } #cs-navigation .cs-li:nth-of-type(5) { transition-delay: 0.25s; } #cs-navigation .cs-li:nth-of-type(6) { transition-delay: 0.3s; } #cs-navigation .cs-li:nth-of-type(7) { transition-delay: 0.35s; } #cs-navigation .cs-li:nth-of-type(8) { transition-delay: 0.4s; } #cs-navigation .cs-li:nth-of-type(9) { transition-delay: 0.45s; } #cs-navigation .cs-li-link { /* 16px - 24px */ font-size: clamp(1rem, 3vw, 1.5rem); line-height: 1.2em; text-decoration: none; margin: 0; color: var(--headerColor); display: inline-block; position: relative; } #cs-navigation .cs-li-link:before { /* active state underline */ content: ""; width: 100%; height: 1px; background: currentColor; opacity: 1; position: absolute; display: none; bottom: -0.125rem; left: 0; } #cs-navigation .cs-li-link.cs-active:before { display: block; } #cs-navigation .cs-button-solid { display: none; } } /*-- -------------------------- --> <--- Desktop Navigation --> <--- -------------------------- -*/ /* Small Desktop - 1024px */ @media only screen and (min-width: 64rem) { #cs-navigation { width: 100%; padding: 0 1rem; /* prevents padding and border from affecting height and width */ box-sizing: border-box; background-color: #fff; box-shadow: rgba(149, 157, 165, 0.2) 0px 8px 24px; position: fixed; z-index: 10000; } #cs-navigation .cs-container { width: 100%; max-width: 80rem; margin: auto; display: flex; justify-content: flex-end; align-items: center; gap: 1.5rem; } #cs-navigation .cs-toggle { display: none; } #cs-navigation .cs-logo { width: 18.4%; max-width: 21.875rem; height: 4.0625rem; /* margin-right auto pushes everything away from it to the right */ margin: 0 auto 0 0; padding: 0; display: flex; justify-content: center; align-items: center; z-index: 100; } #cs-navigation .cs-logo img { width: 100%; height: 100%; /* ensures the image never overflows the container. It stays contained within it's width and height and expands to fill it then stops once it reaches an edge */ object-fit: contain; } #cs-navigation .cs-ul { width: 100%; margin: 0; padding: 0; display: flex; justify-content: flex-start; align-items: center; /* 20px - 36px */ gap: clamp(1.25rem, 2.6vw, 2.25rem); } #cs-navigation .cs-li { list-style: none; padding: 2rem 0; /* prevent flexbox from squishing it */ flex: none; } #cs-navigation .cs-li-link { /* 14px - 16px */ font-size: clamp(0.875rem, 1vw, 1rem); line-height: 1.5em; text-decoration: none; margin: 0; color: var(--bodyTextColor); display: block; position: relative; } #cs-navigation .cs-li-link:hover:before { width: 100%; } #cs-navigation .cs-li-link.cs-active:before { width: 100%; } #cs-navigation .cs-li-link:before { /* active state underline */ content: ""; width: 0%; height: 2px; background: var(--primary); opacity: 1; position: absolute; display: block; bottom: 0rem; left: 0; transition: width 0.3s; } #cs-navigation .cs-button-solid { font-size: 1rem; /* 46px - 56px */ line-height: clamp(2.875em, 5.5vw, 3.5em); text-decoration: none; font-weight: 700; text-align: center; margin: 0; color: #fff; min-width: 9.375rem; padding: 0 1.5rem; background-color: var(--primary); border-radius: 0.25rem; display: inline-block; position: relative; z-index: 1; /* prevents padding from adding to the width */ box-sizing: border-box; } #cs-navigation .cs-button-solid:before { content: ""; position: absolute; height: 100%; width: 0%; background: #000; opacity: 1; top: 0; left: 0; z-index: -1; border-radius: 0.25rem; transition: width 0.3s; } #cs-navigation .cs-button-solid:hover:before { width: 100%; } }
/*-- -------------------------- --> <--- Dark Mode Toggle --> <--- -------------------------- -*/ /* Mobile -360px */ @media only screen and (min-width: 0rem) { body.dark-mode #dark-mode-toggle .cs-sun { transform: translate(-50%, -50%); opacity: 1; } body.dark-mode #dark-mode-toggle .cs-moon { transform: translate(-50%, -150%); opacity: 0; fill: #fff; } #dark-mode-toggle { display: block; position: absolute; top: 0.625rem; right: 4.375rem; width: 3rem; height: 3rem; background: transparent; border: none; overflow: hidden; padding: 0; z-index: 1000; } #dark-mode-toggle img, #dark-mode-toggle svg { position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%); width: 1.25rem; height: 1.25rem; pointer-events: none; } #dark-mode-toggle .cs-moon { z-index: 2; transition: transform 0.3s, opacity 0.3s; } #dark-mode-toggle .cs-sun { z-index: 1; transform: translate(-50%, 100%); opacity: 0; transition: transform 0.3s, opacity 0.3s; } } /* Desktop - 1024px */ @media only screen and (min-width: 64rem) { #dark-mode-toggle { position: relative; transform: none; top: auto; right: auto; margin: 0; } #dark-mode-toggle:hover { cursor: pointer; } } /*-- -------------------------- --> <--- Mobile Navigation --> <--- -------------------------- -*/ /* Mobile - 1023px */ @media only screen and (max-width: 63.9375rem) { body.cs-open { overflow: hidden; } #cs-navigation { width: 100%; padding: 0.75rem 1rem; /* prevents padding and border from affecting height and width */ box-sizing: border-box; background-color: #fff; box-shadow: rgba(149, 157, 165, 0.2) 0px 8px 24px; position: fixed; z-index: 10000; } #cs-navigation.cs-active .cs-ul-wrapper { opacity: 1; transform: scaleY(1); } #cs-navigation.cs-active .cs-li { transform: translateY(0); opacity: 1; } #cs-navigation .cs-container { width: 100%; display: flex; justify-content: flex-end; align-items: center; } #cs-navigation .cs-logo { width: 40%; max-width: 9.125rem; height: 100%; margin: 0 auto 0 0; padding: 0; display: flex; justify-content: center; align-items: center; z-index: 10; } #cs-navigation .cs-logo img { width: 100%; height: 100%; /* ensures the image never overflows the container. It stays contained within it's width and height and expands to fill it then stops once it reaches an edge */ object-fit: contain; } #cs-navigation .cs-toggle { /* 44px - 48px */ width: clamp(2.75rem, 6vw, 3rem); height: clamp(2.75rem, 6vw, 3rem); margin: 0 0 0 auto; border-radius: 0.25rem; background-color: transparent; border: none; display: flex; justify-content: center; align-items: center; } #cs-navigation .cs-active .cs-line1 { top: 50%; transform: translate(-50%, -50%) rotate(225deg); } #cs-navigation .cs-active .cs-line2 { top: 50%; transform-origin: center; transform: translate(-50%, -50%) translateY(0) rotate(-225deg); } #cs-navigation .cs-active .cs-line3 { bottom: 100%; opacity: 0; } #cs-navigation .cs-box { /* 24px - 28px */ width: clamp(1.5rem, 2vw, 1.75rem); /* 14px - 16px */ height: clamp(0.875rem, 1.5vw, 1rem); position: relative; } #cs-navigation .cs-line { width: 100%; height: 2px; border-radius: 2px; background-color: #1a1a1a; position: absolute; left: 50%; transform: translateX(-50%); } #cs-navigation .cs-line1 { top: 0; transform-origin: center; transition: transform 0.5s, top 0.3s, left 0.3s; animation-duration: 0.7s; animation-timing-function: ease; animation-fill-mode: forwards; animation-direction: normal; } #cs-navigation .cs-line2 { top: 50%; transform: translateX(-50%) translateY(-50%); transition: top 0.3s, left 0.3s, transform 0.5s; animation-duration: 0.7s; animation-timing-function: ease; animation-fill-mode: forwards; animation-direction: normal; } #cs-navigation .cs-line3 { bottom: 0; transition: bottom 0.3s, opacity 0.3s; } #cs-navigation .cs-ul-wrapper { width: 100%; height: 100vh; padding-bottom: 2.4em; opacity: 0; background-color: #fff; box-shadow: inset rgba(0, 0, 0, 0.2) 0px 8px 24px; overflow: hidden; position: absolute; top: 100%; left: 0; z-index: -1; transform: scaleY(0); transform-origin: top; transition: transform 0.4s, opacity 0.3s; } #cs-navigation .cs-ul { margin: 0; padding: 3rem 0 0 0; width: 100%; height: auto; max-height: 65vh; overflow: scroll; display: flex; justify-content: flex-start; flex-direction: column; align-items: center; gap: 1.25rem; } #cs-navigation .cs-li { list-style: none; margin-right: 0; /* transition from these values */ transform: translateY(-4.375rem); opacity: 0; transition: transform 0.6s, opacity 0.9s; } #cs-navigation .cs-li:nth-of-type(1) { transition-delay: 0.05s; } #cs-navigation .cs-li:nth-of-type(2) { transition-delay: 0.1s; } #cs-navigation .cs-li:nth-of-type(3) { transition-delay: 0.15s; } #cs-navigation .cs-li:nth-of-type(4) { transition-delay: 0.2s; } #cs-navigation .cs-li:nth-of-type(5) { transition-delay: 0.25s; } #cs-navigation .cs-li:nth-of-type(6) { transition-delay: 0.3s; } #cs-navigation .cs-li:nth-of-type(7) { transition-delay: 0.35s; } #cs-navigation .cs-li:nth-of-type(8) { transition-delay: 0.4s; } #cs-navigation .cs-li:nth-of-type(9) { transition-delay: 0.45s; } #cs-navigation .cs-li-link { /* 16px - 24px */ font-size: clamp(1rem, 3vw, 1.5rem); line-height: 1.2em; text-decoration: none; margin: 0; color: var(--headerColor); display: inline-block; position: relative; } #cs-navigation .cs-li-link:before { /* active state underline */ content: ""; width: 100%; height: 1px; background: currentColor; opacity: 1; position: absolute; display: none; bottom: -0.125rem; left: 0; } #cs-navigation .cs-li-link.cs-active:before { display: block; } #cs-navigation .cs-button-solid { display: none; } } /* Dark Mode */ @media only screen and (max-width: 63.9375rem) { body.dark-mode #cs-navigation { background-color: var(--dark); } body.dark-mode #cs-navigation .cs-logo { /* makes it white */ filter: grayscale(1) brightness(1000%); } body.dark-mode #cs-navigation .cs-line { background-color: #fff; } body.dark-mode #cs-navigation .cs-ul-wrapper { background-color: rgba(0, 0, 0, 0.2); } body.dark-mode #cs-navigation .cs-li-link { color: var(--bodyTextColorWhite); } } /*-- -------------------------- --> <--- Desktop Navigation --> <--- -------------------------- -*/ /* Small Desktop - 1024px */ @media only screen and (min-width: 64rem) { #cs-navigation { width: 100%; padding: 0 1rem; /* prevents padding and border from affecting height and width */ box-sizing: border-box; background-color: #fff; box-shadow: rgba(149, 157, 165, 0.2) 0px 8px 24px; position: fixed; z-index: 10000; } #cs-navigation .cs-container { width: 100%; max-width: 80rem; margin: auto; display: flex; justify-content: flex-end; align-items: center; gap: 1.5rem; } #cs-navigation .cs-toggle { display: none; } #cs-navigation .cs-logo { width: 18.4%; max-width: 21.875rem; height: 4.0625rem; /* margin-right auto pushes everything away from it to the right */ margin: 0 auto 0 0; padding: 0; display: flex; justify-content: center; align-items: center; z-index: 100; } #cs-navigation .cs-logo img { width: 100%; height: 100%; /* ensures the image never overflows the container. It stays contained within it's width and height and expands to fill it then stops once it reaches an edge */ object-fit: contain; } #cs-navigation .cs-ul { width: 100%; margin: 0; padding: 0; display: flex; justify-content: flex-start; align-items: center; /* 20px - 36px */ gap: clamp(1.25rem, 2.6vw, 2.25rem); } #cs-navigation .cs-li { list-style: none; padding: 2rem 0; /* prevent flexbox from squishing it */ flex: none; } #cs-navigation .cs-li-link { /* 14px - 16px */ font-size: clamp(0.875rem, 1vw, 1rem); line-height: 1.5em; text-decoration: none; margin: 0; color: var(--bodyTextColor); display: block; position: relative; } #cs-navigation .cs-li-link:hover:before { width: 100%; } #cs-navigation .cs-li-link.cs-active:before { width: 100%; } #cs-navigation .cs-li-link:before { /* active state underline */ content: ""; width: 0%; height: 2px; background: var(--primary); opacity: 1; position: absolute; display: block; bottom: 0rem; left: 0; transition: width 0.3s; } #cs-navigation .cs-button-solid { font-size: 1rem; /* 46px - 56px */ line-height: clamp(2.875em, 5.5vw, 3.5em); text-decoration: none; font-weight: 700; text-align: center; margin: 0; color: #fff; min-width: 9.375rem; padding: 0 1.5rem; background-color: var(--primary); border-radius: 0.25rem; display: inline-block; position: relative; z-index: 1; /* prevents padding from adding to the width */ box-sizing: border-box; } #cs-navigation .cs-button-solid:before { content: ""; position: absolute; height: 100%; width: 0%; background: #000; opacity: 1; top: 0; left: 0; z-index: -1; border-radius: 0.25rem; transition: width 0.3s; } #cs-navigation .cs-button-solid:hover:before { width: 100%; } } /* Dark Mode */ @media only screen and (min-width: 64rem) { body.dark-mode #cs-navigation { background-color: var(--dark); } body.dark-mode #cs-navigation .cs-logo { /* makes it turn white */ filter: grayscale(1) brightness(1000%); } body.dark-mode #cs-navigation .cs-li-link { color: var(--bodyTextColorWhite); } body.dark-mode #cs-navigation .cs-li-link:before { background-color: var(--primaryLight); } }
/*-- -------------------------- --> <--- Mobile Navigation --> <--- -------------------------- -*/ body, html { /* reset margin and padding so there's no gap between the nav and the screen edges */ margin: 0; padding: 0; } /* Mobile - 1023px */ @media only screen and (max-width: 63.9375rem) { body { &.cs-open { overflow: hidden; } } #cs-navigation { width: 100%; padding: (12/16rem) (16/16rem); /* prevents padding and border from affecting height and width */ box-sizing: border-box; background-color: #fff; box-shadow: rgba(149, 157, 165, 0.2) 0px 8px 24px; position: fixed; z-index: 10000; &.cs-active { .cs-ul-wrapper { opacity: 1; transform: scaleY(1); } .cs-li { transform: translateY(0); opacity: 1; } } .cs-container { width: 100%; display: flex; justify-content: flex-end; align-items: center; } .cs-logo { width: 40%; max-width: (146/16rem); height: 100%; margin: 0 auto 0 0; padding: 0; display: flex; justify-content: center; align-items: center; z-index: 10; img { width: 100%; height: 100%; /* ensures the image never overflows the container. It stays contained within it's width and height and expands to fill it then stops once it reaches an edge */ object-fit: contain; } } .cs-toggle { /* 44px - 48px */ width: clamp(2.75rem, 6vw, 3rem); height: clamp(2.75rem, 6vw, 3rem); margin: 0 0 0 auto; border-radius: (4/16rem); background-color: transparent; border: none; display: flex; justify-content: center; align-items: center; } .cs-active { .cs-line1 { top: 50%; transform: translate(-50%, -50%) rotate(225deg); } .cs-line2 { top: 50%; transform-origin: center; transform: translate(-50%, -50%) translateY(0) rotate(-225deg); } .cs-line3 { bottom: 100%; opacity: 0; } } .cs-box { /* 24px - 28px */ width: clamp(1.5rem, 2vw, 1.75rem); /* 14px - 16px */ height: clamp(0.875rem, 1.5vw, 1rem); position: relative; } .cs-line { width: 100%; height: 2px; border-radius: 2px; background-color: #1a1a1a; position: absolute; left: 50%; transform: translateX(-50%); } .cs-line1 { top: 0; transform-origin: center; transition: transform 0.5s, top 0.3s, left 0.3s; animation-duration: 0.7s; animation-timing-function: ease; animation-fill-mode: forwards; animation-direction: normal; } .cs-line2 { top: 50%; transform: translateX(-50%) translateY(-50%); transition: top 0.3s, left 0.3s, transform 0.5s; animation-duration: 0.7s; animation-timing-function: ease; animation-fill-mode: forwards; animation-direction: normal; } .cs-line3 { bottom: 0; transition: bottom 0.3s, opacity 0.3s; } .cs-ul-wrapper { width: 100%; height: 100vh; padding-bottom: (48/20em); opacity: 0; background-color: #fff; box-shadow: inset rgba(0, 0, 0, 0.2) 0px 8px 24px; overflow: hidden; position: absolute; top: 100%; left: 0; z-index: -1; transform: scaleY(0); transform-origin: top; transition: transform 0.4s, opacity 0.3s; } .cs-ul { margin: 0; padding: (48/16rem) 0 0 0; width: 100%; height: auto; max-height: 65vh; overflow: scroll; display: flex; justify-content: flex-start; flex-direction: column; align-items: center; gap: (20/16rem); } .cs-li { list-style: none; margin-right: 0; /* transition from these values */ transform: translateY(-4.375rem); opacity: 0; transition: transform 0.6s, opacity 0.9s; &:nth-of-type(1) { transition-delay: 0.05s; } &:nth-of-type(2) { transition-delay: 0.1s; } &:nth-of-type(3) { transition-delay: 0.15s; } &:nth-of-type(4) { transition-delay: 0.2s; } &:nth-of-type(5) { transition-delay: 0.25s; } &:nth-of-type(6) { transition-delay: 0.3s; } &:nth-of-type(7) { transition-delay: 0.35s; } &:nth-of-type(8) { transition-delay: 0.4s; } &:nth-of-type(9) { transition-delay: 0.45s; } } .cs-li-link { /* 16px - 24px */ font-size: clamp(1rem, 3vw, 1.5rem); line-height: 1.2em; text-decoration: none; margin: 0; color: var(--headerColor); display: inline-block; position: relative; &:before { /* active state underline */ content: ""; width: 100%; height: 1px; background: currentColor; opacity: 1; position: absolute; display: none; bottom: (-2/16rem); left: 0; } &.cs-active { &:before { display: block; } } } .cs-button-solid { display: none; } } } /*-- -------------------------- --> <--- Desktop Navigation --> <--- -------------------------- -*/ /* Small Desktop - 1024px */ @media only screen and (min-width: 64rem) { #cs-navigation { width: 100%; padding: 0 (16/16rem); /* prevents padding and border from affecting height and width */ box-sizing: border-box; background-color: #fff; box-shadow: rgba(149, 157, 165, 0.2) 0px 8px 24px; position: fixed; z-index: 10000; .cs-container { width: 100%; max-width: (1280/16rem); margin: auto; display: flex; justify-content: flex-end; align-items: center; gap: (24/16rem); } .cs-toggle { display: none; } .cs-logo { width: 18.4%; max-width: (350/16rem); height: (65/16rem); /* margin-right auto pushes everything away from it to the right */ margin: 0 auto 0 0; padding: 0; display: flex; justify-content: center; align-items: center; z-index: 100; img { width: 100%; height: 100%; /* ensures the image never overflows the container. It stays contained within it's width and height and expands to fill it then stops once it reaches an edge */ object-fit: contain; } } .cs-ul { width: 100%; margin: 0; padding: 0; display: flex; justify-content: flex-start; align-items: center; /* 20px - 36px */ gap: clamp(1.25rem, 2.6vw, 2.25rem); } .cs-li { list-style: none; padding: (32/16rem) 0; /* prevent flexbox from squishing it */ flex: none; } .cs-li-link { /* 14px - 16px */ font-size: clamp(0.875rem, 1vw, 1rem); line-height: 1.5em; text-decoration: none; margin: 0; color: var(--bodyTextColor); display: block; position: relative; &:hover { &:before { width: 100%; } } &.cs-active { &:before { width: 100%; } } &:before { /* active state underline */ content: ""; width: 0%; height: 2px; background: var(--primary); opacity: 1; position: absolute; display: block; bottom: (0/16rem); left: 0; transition: width 0.3s; } } .cs-button-solid { font-size: (16/16rem); /* 46px - 56px */ line-height: clamp(2.875em, 5.5vw, 3.5em); text-decoration: none; font-weight: 700; text-align: center; margin: 0; color: #fff; min-width: (150/16rem); padding: 0 (24/16rem); background-color: var(--primary); border-radius: (4/16rem); display: inline-block; position: relative; z-index: 1; /* prevents padding from adding to the width */ box-sizing: border-box; &:before { content: ""; position: absolute; height: 100%; width: 0%; background: #000; opacity: 1; top: 0; left: 0; z-index: -1; border-radius: (4/16rem); transition: width 0.3s; } &:hover { &:before { width: 100%; } } } } }
/*-- -------------------------- --> <--- Dark Mode Toggle --> <--- -------------------------- -*/ /* Mobile -360px */ @media only screen and (min-width: 0rem) { body.dark-mode { #dark-mode-toggle { .cs-sun { transform: translate(-50%, -50%); opacity: 1; } .cs-moon { transform: translate(-50%, -150%); opacity: 0; fill: #fff; } } } #dark-mode-toggle { display: block; position: absolute; top: (10/16rem); right: (70/16rem); width: (48/16rem); height: (48/16rem); background: transparent; border: none; overflow: hidden; padding: 0; z-index: 1000; img, svg { //center image inside button position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%); width: (20/16rem); height: (20/16rem); pointer-events: none; } .cs-moon { z-index: 2; // Transition properties transition: transform 0.3s, opacity 0.3s; // fill: yellow; --> uncomment to change the color of the moon if needed } .cs-sun { z-index: 1; // Transition property transform: translate(-50%, 100%); opacity: 0; transition: transform 0.3s, opacity 0.3s; } } } /* Desktop - 1024px */ @media only screen and (min-width: 64rem) { #dark-mode-toggle { position: relative; transform: none; top: auto; right: auto; margin: 0; &:hover { cursor: pointer; } } } /*-- -------------------------- --> <--- Mobile Navigation --> <--- -------------------------- -*/ body, html { /* reset margin and padding so there's no gap between the nav and the screen edges */ margin: 0; padding: 0; } /* Mobile - 1023px */ @media only screen and (max-width: 63.9375rem) { body { &.cs-open { overflow: hidden; } } #cs-navigation { width: 100%; padding: (12/16rem) (16/16rem); /* prevents padding and border from affecting height and width */ box-sizing: border-box; background-color: #fff; box-shadow: rgba(149, 157, 165, 0.2) 0px 8px 24px; position: fixed; z-index: 10000; &.cs-active { .cs-ul-wrapper { opacity: 1; transform: scaleY(1); } .cs-li { transform: translateY(0); opacity: 1; } } .cs-container { width: 100%; display: flex; justify-content: flex-end; align-items: center; } .cs-logo { width: 40%; max-width: (146/16rem); height: 100%; margin: 0 auto 0 0; padding: 0; display: flex; justify-content: center; align-items: center; z-index: 10; img { width: 100%; height: 100%; /* ensures the image never overflows the container. It stays contained within it's width and height and expands to fill it then stops once it reaches an edge */ object-fit: contain; } } .cs-toggle { /* 44px - 48px */ width: clamp(2.75rem, 6vw, 3rem); height: clamp(2.75rem, 6vw, 3rem); margin: 0 0 0 auto; border-radius: (4/16rem); background-color: transparent; border: none; display: flex; justify-content: center; align-items: center; } .cs-active { .cs-line1 { top: 50%; transform: translate(-50%, -50%) rotate(225deg); } .cs-line2 { top: 50%; transform-origin: center; transform: translate(-50%, -50%) translateY(0) rotate(-225deg); } .cs-line3 { bottom: 100%; opacity: 0; } } .cs-box { /* 24px - 28px */ width: clamp(1.5rem, 2vw, 1.75rem); /* 14px - 16px */ height: clamp(0.875rem, 1.5vw, 1rem); position: relative; } .cs-line { width: 100%; height: 2px; border-radius: 2px; background-color: #1a1a1a; position: absolute; left: 50%; transform: translateX(-50%); } .cs-line1 { top: 0; transform-origin: center; transition: transform 0.5s, top 0.3s, left 0.3s; animation-duration: 0.7s; animation-timing-function: ease; animation-fill-mode: forwards; animation-direction: normal; } .cs-line2 { top: 50%; transform: translateX(-50%) translateY(-50%); transition: top 0.3s, left 0.3s, transform 0.5s; animation-duration: 0.7s; animation-timing-function: ease; animation-fill-mode: forwards; animation-direction: normal; } .cs-line3 { bottom: 0; transition: bottom 0.3s, opacity 0.3s; } .cs-ul-wrapper { width: 100%; height: 100vh; padding-bottom: (48/20em); opacity: 0; background-color: #fff; box-shadow: inset rgba(0, 0, 0, 0.2) 0px 8px 24px; overflow: hidden; position: absolute; top: 100%; left: 0; z-index: -1; transform: scaleY(0); transform-origin: top; transition: transform 0.4s, opacity 0.3s; } .cs-ul { margin: 0; padding: (48/16rem) 0 0 0; width: 100%; height: auto; max-height: 65vh; overflow: scroll; display: flex; justify-content: flex-start; flex-direction: column; align-items: center; gap: (20/16rem); } .cs-li { list-style: none; margin-right: 0; /* transition from these values */ transform: translateY(-4.375rem); opacity: 0; transition: transform 0.6s, opacity 0.9s; &:nth-of-type(1) { transition-delay: 0.05s; } &:nth-of-type(2) { transition-delay: 0.1s; } &:nth-of-type(3) { transition-delay: 0.15s; } &:nth-of-type(4) { transition-delay: 0.2s; } &:nth-of-type(5) { transition-delay: 0.25s; } &:nth-of-type(6) { transition-delay: 0.3s; } &:nth-of-type(7) { transition-delay: 0.35s; } &:nth-of-type(8) { transition-delay: 0.4s; } &:nth-of-type(9) { transition-delay: 0.45s; } } .cs-li-link { /* 16px - 24px */ font-size: clamp(1rem, 3vw, 1.5rem); line-height: 1.2em; text-decoration: none; margin: 0; color: var(--headerColor); display: inline-block; position: relative; &:before { /* active state underline */ content: ""; width: 100%; height: 1px; background: currentColor; opacity: 1; position: absolute; display: none; bottom: (-2/16rem); left: 0; } &.cs-active { &:before { display: block; } } } .cs-button-solid { display: none; } } } /* Dark Mode */ @media only screen and (max-width: 63.9375rem) { body.dark-mode { #cs-navigation { background-color: var(--dark); .cs-logo { /* makes it white */ filter: grayscale(1) brightness(1000%); } .cs-line { background-color: #fff; } .cs-ul-wrapper { background-color: fade(#000, 20%); } .cs-li-link { color: var(--bodyTextColorWhite); } } } } /*-- -------------------------- --> <--- Desktop Navigation --> <--- -------------------------- -*/ /* Small Desktop - 1024px */ @media only screen and (min-width: 64rem) { #cs-navigation { width: 100%; padding: 0 (16/16rem); /* prevents padding and border from affecting height and width */ box-sizing: border-box; background-color: #fff; box-shadow: rgba(149, 157, 165, 0.2) 0px 8px 24px; position: fixed; z-index: 10000; .cs-container { width: 100%; max-width: (1280/16rem); margin: auto; display: flex; justify-content: flex-end; align-items: center; gap: (24/16rem); } .cs-toggle { display: none; } .cs-logo { width: 18.4%; max-width: (350/16rem); height: (65/16rem); /* margin-right auto pushes everything away from it to the right */ margin: 0 auto 0 0; padding: 0; display: flex; justify-content: center; align-items: center; z-index: 100; img { width: 100%; height: 100%; /* ensures the image never overflows the container. It stays contained within it's width and height and expands to fill it then stops once it reaches an edge */ object-fit: contain; } } .cs-ul { width: 100%; margin: 0; padding: 0; display: flex; justify-content: flex-start; align-items: center; /* 20px - 36px */ gap: clamp(1.25rem, 2.6vw, 2.25rem); } .cs-li { list-style: none; padding: (32/16rem) 0; /* prevent flexbox from squishing it */ flex: none; } .cs-li-link { /* 14px - 16px */ font-size: clamp(0.875rem, 1vw, 1rem); line-height: 1.5em; text-decoration: none; margin: 0; color: var(--bodyTextColor); display: block; position: relative; &:hover { &:before { width: 100%; } } &.cs-active { &:before { width: 100%; } } &:before { /* active state underline */ content: ""; width: 0%; height: 2px; background: var(--primary); opacity: 1; position: absolute; display: block; bottom: (0/16rem); left: 0; transition: width 0.3s; } } .cs-button-solid { font-size: (16/16rem); /* 46px - 56px */ line-height: clamp(2.875em, 5.5vw, 3.5em); text-decoration: none; font-weight: 700; text-align: center; margin: 0; color: #fff; min-width: (150/16rem); padding: 0 (24/16rem); background-color: var(--primary); border-radius: (4/16rem); display: inline-block; position: relative; z-index: 1; /* prevents padding from adding to the width */ box-sizing: border-box; &:before { content: ""; position: absolute; height: 100%; width: 0%; background: #000; opacity: 1; top: 0; left: 0; z-index: -1; border-radius: (4/16rem); transition: width 0.3s; } &:hover { &:before { width: 100%; } } } } } /* Dark Mode */ @media only screen and (min-width: 64rem) { body.dark-mode { #cs-navigation { background-color: var(--dark); .cs-logo { /* makes it turn white */ filter: grayscale(1) brightness(1000%); } .cs-li-link { color: var(--bodyTextColorWhite); } .cs-li-link { &:before { background-color: var(--primaryLight); } } } } }
/*-- -------------------------- --> <--- Mobile Navigation --> <--- -------------------------- -*/ body, html { /* reset margin and padding so there's no gap between the nav and the screen edges */ margin: 0; padding: 0; } /* Mobile - 1023px */ @media only screen and (max-width: 63.9375rem) { body { &.cs-open { overflow: hidden; } } #cs-navigation { width: 100%; padding: calc(12 / 16 * 1rem) calc(16 / 16 * 1rem); /* prevents padding and border from affecting height and width */ box-sizing: border-box; background-color: #fff; box-shadow: rgba(149, 157, 165, 0.2) 0px 8px 24px; position: fixed; z-index: 10000; &.cs-active { .cs-ul-wrapper { opacity: 1; transform: scaleY(1); } .cs-li { transform: translateY(0); opacity: 1; } } .cs-container { width: 100%; display: flex; justify-content: flex-end; align-items: center; } .cs-logo { width: 40%; max-width: calc(146 / 16 * 1rem); height: 100%; margin: 0 auto 0 0; padding: 0; display: flex; justify-content: center; align-items: center; z-index: 10; img { width: 100%; height: 100%; /* ensures the image never overflows the container. It stays contained within it's width and height and expands to fill it then stops once it reaches an edge */ object-fit: contain; } } .cs-toggle { /* 44px - 48px */ width: clamp(2.75rem, 6vw, 3rem); height: clamp(2.75rem, 6vw, 3rem); margin: 0 0 0 auto; border-radius: calc(4 / 16 * 1rem); background-color: transparent; border: none; display: flex; justify-content: center; align-items: center; } .cs-active { .cs-line1 { top: 50%; transform: translate(-50%, -50%) rotate(225deg); } .cs-line2 { top: 50%; transform-origin: center; transform: translate(-50%, -50%) translateY(0) rotate(-225deg); } .cs-line3 { bottom: 100%; opacity: 0; } } .cs-box { /* 24px - 28px */ width: clamp(1.5rem, 2vw, 1.75rem); /* 14px - 16px */ height: clamp(0.875rem, 1.5vw, 1rem); position: relative; } .cs-line { width: 100%; height: 2px; border-radius: 2px; background-color: #1a1a1a; position: absolute; left: 50%; transform: translateX(-50%); } .cs-line1 { top: 0; transform-origin: center; transition: transform 0.5s, top 0.3s, left 0.3s; animation-duration: 0.7s; animation-timing-function: ease; animation-fill-mode: forwards; animation-direction: normal; } .cs-line2 { top: 50%; transform: translateX(-50%) translateY(-50%); transition: top 0.3s, left 0.3s, transform 0.5s; animation-duration: 0.7s; animation-timing-function: ease; animation-fill-mode: forwards; animation-direction: normal; } .cs-line3 { bottom: 0; transition: bottom 0.3s, opacity 0.3s; } .cs-ul-wrapper { width: 100%; height: 100vh; padding-bottom: calc(48 / 20 * 1em); opacity: 0; background-color: #fff; box-shadow: inset rgba(0, 0, 0, 0.2) 0px 8px 24px; overflow: hidden; position: absolute; top: 100%; left: 0; z-index: -1; transform: scaleY(0); transform-origin: top; transition: transform 0.4s, opacity 0.3s; } .cs-ul { margin: 0; padding: calc(48 / 16 * 1rem) 0 0 0; width: 100%; height: auto; max-height: 65vh; overflow: scroll; display: flex; justify-content: flex-start; flex-direction: column; align-items: center; gap: calc(20 / 16 * 1rem); } .cs-li { list-style: none; margin-right: 0; /* transition from these values */ transform: translateY(calc(-70 / 16 * 1rem)); opacity: 0; transition: transform 0.6s, opacity 0.9s; &:nth-of-type(1) { transition-delay: 0.05s; } &:nth-of-type(2) { transition-delay: 0.1s; } &:nth-of-type(3) { transition-delay: 0.15s; } &:nth-of-type(4) { transition-delay: 0.2s; } &:nth-of-type(5) { transition-delay: 0.25s; } &:nth-of-type(6) { transition-delay: 0.3s; } &:nth-of-type(7) { transition-delay: 0.35s; } &:nth-of-type(8) { transition-delay: 0.4s; } &:nth-of-type(9) { transition-delay: 0.45s; } } .cs-li-link { /* 16px - 24px */ font-size: clamp(1rem, 3vw, 1.5rem); line-height: 1.2em; text-decoration: none; margin: 0; color: var(--headerColor); display: inline-block; position: relative; &:before { /* active state underline */ content: ""; width: 100%; height: 1px; background: currentColor; opacity: 1; position: absolute; display: none; bottom: calc(-2 / 16 * 1rem); left: 0; } &.cs-active { &:before { display: block; } } } .cs-button-solid { display: none; } } } /*-- -------------------------- --> <--- Desktop Navigation --> <--- -------------------------- -*/ /* Small Desktop - 1024px */ @media only screen and (min-width: 64rem) { #cs-navigation { width: 100%; padding: 0 calc(16 / 16 * 1rem); /* prevents padding and border from affecting height and width */ box-sizing: border-box; background-color: #fff; box-shadow: rgba(149, 157, 165, 0.2) 0px 8px 24px; position: fixed; z-index: 10000; .cs-container { width: 100%; max-width: calc(1280 / 16 * 1rem); margin: auto; display: flex; justify-content: flex-end; align-items: center; gap: calc(24 / 16 * 1rem); } .cs-toggle { display: none; } .cs-logo { width: 18.4%; max-width: calc(350 / 16 * 1rem); height: calc(65 / 16 * 1rem); /* margin-right auto pushes everything away from it to the right */ margin: 0 auto 0 0; padding: 0; display: flex; justify-content: center; align-items: center; z-index: 100; img { width: 100%; height: 100%; /* ensures the image never overflows the container. It stays contained within it's width and height and expands to fill it then stops once it reaches an edge */ object-fit: contain; } } .cs-ul { width: 100%; margin: 0; padding: 0; display: flex; justify-content: flex-start; align-items: center; /* 20px - 36px */ gap: clamp(1.25rem, 2.6vw, 2.25rem); } .cs-li { list-style: none; padding: calc(32 / 16 * 1rem) 0; /* prevent flexbox from squishing it */ flex: none; } .cs-li-link { /* 14px - 16px */ font-size: clamp(0.875rem, 1vw, 1rem); line-height: 1.5em; text-decoration: none; margin: 0; color: var(--bodyTextColor); display: block; position: relative; &:hover { &:before { width: 100%; } } &.cs-active { &:before { width: 100%; } } &:before { /* active state underline */ content: ""; width: 0%; height: 2px; background: var(--primary); opacity: 1; position: absolute; display: block; bottom: calc(0 / 16 * 1rem); left: 0; transition: width 0.3s; } } .cs-button-solid { font-size: calc(16 / 16 * 1rem); /* 46px - 56px */ line-height: clamp(2.875em, 5.5vw, 3.5em); text-decoration: none; font-weight: 700; text-align: center; margin: 0; color: #fff; min-width: calc(150 / 16 * 1rem); padding: 0 calc(24 / 16 * 1rem); background-color: var(--primary); border-radius: calc(4 / 16 * 1rem); display: inline-block; position: relative; z-index: 1; /* prevents padding from adding to the width */ box-sizing: border-box; &:before { content: ""; position: absolute; height: 100%; width: 0%; background: #000; opacity: 1; top: 0; left: 0; z-index: -1; border-radius: calc(4 / 16 * 1rem); transition: width 0.3s; } &:hover { &:before { width: 100%; } } } } }
/*-- -------------------------- --> <--- Dark Mode Toggle --> <--- -------------------------- -*/ /* Mobile - 360px */ @media only screen and (min-width: 0rem) { body.dark-mode { #dark-mode-toggle { .cs-sun { transform: translate(-50%, -50%); opacity: 1; } .cs-moon { transform: translate(-50%, -150%); opacity: 0; fill: #fff; } } } #dark-mode-toggle { display: block; position: absolute; top: calc(10 / 16 * 1rem); right: calc(70 / 16 * 1rem); width: calc(48 / 16 * 1rem); height: calc(48 / 16 * 1rem); background: transparent; border: none; overflow: hidden; padding: 0; z-index: 1000; img, svg { //center image inside button position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%); width: calc(20 / 16 * 1rem); height: calc(20 / 16 * 1rem); pointer-events: none; } .cs-moon { z-index: 2; // Transition properties transition: transform 0.3s, opacity 0.3s; // fill: yellow; --> uncomment to change the color of the moon if needed } .cs-sun { z-index: 1; // Transition property transform: translate(-50%, 100%); opacity: 0; transition: transform 0.3s, opacity 0.3s; } } } /* Desktop - 1024px */ @media only screen and (min-width: 64rem) { #dark-mode-toggle { position: relative; transform: none; top: auto; right: auto; margin: 0; &:hover { cursor: pointer; } } } /*-- -------------------------- --> <--- Mobile Navigation --> <--- -------------------------- -*/ body, html { /* reset margin and padding so there's no gap between the nav and the screen edges */ margin: 0; padding: 0; } /* Mobile - 1023px */ @media only screen and (max-width: 63.9375rem) { body { &.cs-open { overflow: hidden; } } #cs-navigation { width: 100%; padding: calc(12 / 16 * 1rem) calc(16 / 16 * 1rem); /* prevents padding and border from affecting height and width */ box-sizing: border-box; background-color: #fff; box-shadow: rgba(149, 157, 165, 0.2) 0px 8px 24px; position: fixed; z-index: 10000; &.cs-active { .cs-ul-wrapper { opacity: 1; transform: scaleY(1); } .cs-li { transform: translateY(0); opacity: 1; } } .cs-container { width: 100%; display: flex; justify-content: flex-end; align-items: center; } .cs-logo { width: 40%; max-width: calc(146 / 16 * 1rem); height: 100%; margin: 0 auto 0 0; padding: 0; display: flex; justify-content: center; align-items: center; z-index: 10; img { width: 100%; height: 100%; /* ensures the image never overflows the container. It stays contained within it's width and height and expands to fill it then stops once it reaches an edge */ object-fit: contain; } } .cs-toggle { /* 44px - 48px */ width: clamp(2.75rem, 6vw, 3rem); height: clamp(2.75rem, 6vw, 3rem); margin: 0 0 0 auto; border-radius: calc(4 / 16 * 1rem); background-color: transparent; border: none; display: flex; justify-content: center; align-items: center; } .cs-active { .cs-line1 { top: 50%; transform: translate(-50%, -50%) rotate(225deg); } .cs-line2 { top: 50%; transform-origin: center; transform: translate(-50%, -50%) translateY(0) rotate(-225deg); } .cs-line3 { bottom: 100%; opacity: 0; } } .cs-box { /* 24px - 28px */ width: clamp(1.5rem, 2vw, 1.75rem); /* 14px - 16px */ height: clamp(0.875rem, 1.5vw, 1rem); position: relative; } .cs-line { width: 100%; height: 2px; border-radius: 2px; background-color: #1a1a1a; position: absolute; left: 50%; transform: translateX(-50%); } .cs-line1 { top: 0; transform-origin: center; transition: transform 0.5s, top 0.3s, left 0.3s; animation-duration: 0.7s; animation-timing-function: ease; animation-fill-mode: forwards; animation-direction: normal; } .cs-line2 { top: 50%; transform: translateX(-50%) translateY(-50%); transition: top 0.3s, left 0.3s, transform 0.5s; animation-duration: 0.7s; animation-timing-function: ease; animation-fill-mode: forwards; animation-direction: normal; } .cs-line3 { bottom: 0; transition: bottom 0.3s, opacity 0.3s; } .cs-ul-wrapper { width: 100%; height: 100vh; padding-bottom: calc(48 / 20 * 1em); opacity: 0; background-color: #fff; box-shadow: inset rgba(0, 0, 0, 0.2) 0px 8px 24px; overflow: hidden; position: absolute; top: 100%; left: 0; z-index: -1; transform: scaleY(0); transform-origin: top; transition: transform 0.4s, opacity 0.3s; } .cs-ul { margin: 0; padding: calc(48 / 16 * 1rem) 0 0 0; width: 100%; height: auto; max-height: 65vh; overflow: scroll; display: flex; justify-content: flex-start; flex-direction: column; align-items: center; gap: calc(20 / 16 * 1rem); } .cs-li { list-style: none; margin-right: 0; /* transition from these values */ transform: translateY(calc(-70 / 16 * 1rem)); opacity: 0; transition: transform 0.6s, opacity 0.9s; &:nth-of-type(1) { transition-delay: 0.05s; } &:nth-of-type(2) { transition-delay: 0.1s; } &:nth-of-type(3) { transition-delay: 0.15s; } &:nth-of-type(4) { transition-delay: 0.2s; } &:nth-of-type(5) { transition-delay: 0.25s; } &:nth-of-type(6) { transition-delay: 0.3s; } &:nth-of-type(7) { transition-delay: 0.35s; } &:nth-of-type(8) { transition-delay: 0.4s; } &:nth-of-type(9) { transition-delay: 0.45s; } } .cs-li-link { /* 16px - 24px */ font-size: clamp(1rem, 3vw, 1.5rem); line-height: 1.2em; text-decoration: none; margin: 0; color: var(--headerColor); display: inline-block; position: relative; &:before { /* active state underline */ content: ""; width: 100%; height: 1px; background: currentColor; opacity: 1; position: absolute; display: none; bottom: calc(-2 / 16 * 1rem); left: 0; } &.cs-active { &:before { display: block; } } } .cs-button-solid { display: none; } } } /* Dark Mode */ @media only screen and (max-width: 63.9375rem) { body.dark-mode { #cs-navigation { background-color: var(--dark); .cs-logo { /* makes it white */ filter: grayscale(1) brightness(1000%); } .cs-line { background-color: #fff; } .cs-ul-wrapper { background-color: rgba(0, 0, 0, 0.2); } .cs-li-link { color: var(--bodyTextColorWhite); } } } } /*-- -------------------------- --> <--- Desktop Navigation --> <--- -------------------------- -*/ /* Small Desktop - 1024px */ @media only screen and (min-width: 64rem) { #cs-navigation { width: 100%; padding: 0 calc(16 / 16 * 1rem); /* prevents padding and border from affecting height and width */ box-sizing: border-box; background-color: #fff; box-shadow: rgba(149, 157, 165, 0.2) 0px 8px 24px; position: fixed; z-index: 10000; .cs-container { width: 100%; max-width: calc(1280 / 16 * 1rem); margin: auto; display: flex; justify-content: flex-end; align-items: center; gap: calc(24 / 16 * 1rem); } .cs-toggle { display: none; } .cs-logo { width: 18.4%; max-width: calc(350 / 16 * 1rem); height: calc(65 / 16 * 1rem); /* margin-right auto pushes everything away from it to the right */ margin: 0 auto 0 0; padding: 0; display: flex; justify-content: center; align-items: center; z-index: 100; img { width: 100%; height: 100%; /* ensures the image never overflows the container. It stays contained within it's width and height and expands to fill it then stops once it reaches an edge */ object-fit: contain; } } .cs-ul { width: 100%; margin: 0; padding: 0; display: flex; justify-content: flex-start; align-items: center; /* 20px - 36px */ gap: clamp(1.25rem, 2.6vw, 2.25rem); } .cs-li { list-style: none; padding: calc(32 / 16 * 1rem) 0; /* prevent flexbox from squishing it */ flex: none; } .cs-li-link { /* 14px - 16px */ font-size: clamp(0.875rem, 1vw, 1rem); line-height: 1.5em; text-decoration: none; margin: 0; color: var(--bodyTextColor); display: block; position: relative; &:hover { &:before { width: 100%; } } &.cs-active { &:before { width: 100%; } } &:before { /* active state underline */ content: ""; width: 0%; height: 2px; background: var(--primary); opacity: 1; position: absolute; display: block; bottom: calc(0 / 16 * 1rem); left: 0; transition: width 0.3s; } } .cs-button-solid { font-size: calc(16 / 16 * 1rem); /* 46px - 56px */ line-height: clamp(2.875em, 5.5vw, 3.5em); text-decoration: none; font-weight: 700; text-align: center; margin: 0; color: #fff; min-width: calc(150 / 16 * 1rem); padding: 0 calc(24 / 16 * 1rem); background-color: var(--primary); border-radius: calc(4 / 16 * 1rem); display: inline-block; position: relative; z-index: 1; /* prevents padding from adding to the width */ box-sizing: border-box; &:before { content: ""; position: absolute; height: 100%; width: 0%; background: #000; opacity: 1; top: 0; left: 0; z-index: -1; border-radius: calc(4 / 16 * 1rem); transition: width 0.3s; } &:hover { &:before { width: 100%; } } } } } /* Dark Mode */ @media only screen and (min-width: 64rem) { body.dark-mode { #cs-navigation { background-color: var(--dark); .cs-logo { /* makes it turn white */ filter: grayscale(1) brightness(1000%); } .cs-li-link { color: var(--bodyTextColorWhite); } .cs-li-link { &:before { background-color: var(--primaryLight); } } } } }
: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