| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531 |
- // Navigation
- // Mobile menu toggles
- .menu-button-container {
- display: none;
- justify-content: space-between;
- position: absolute;
- right: 0;
- padding-top: calc(0.5 * var(--global--spacing-vertical));
- padding-bottom: calc(0.25 * var(--global--spacing-vertical));
- @include media(mobile-only) {
- display: flex;
- }
- // Override specificity from default button styles.
- #primary-mobile-menu {
- display: flex;
- margin-left: auto;
- padding: calc(var(--button--padding-vertical) - (0.25 * var(--global--spacing-unit))) calc(0.5 * var(--button--padding-horizontal));
- font-size: var(--primary-nav--font-size-button);
- font-weight: var(--primary-nav--font-weight-button);
- background-color: transparent;
- border: none;
- color: var(--primary-nav--color-link);
- .dropdown-icon {
- display: flex;
- align-items: center;
- .svg-icon {
- margin-left: calc(0.25 * var(--global--spacing-unit));
- }
- // Menu icon is off-center vertically to prevent blurry pixels.
- &.open .svg-icon {
- position: relative;
- top: -1px;
- }
- &.close {
- display: none;
- }
- }
- &[aria-expanded*="true"] {
- .dropdown-icon {
- &.open {
- display: none;
- }
- &.close {
- display: flex;
- .has-logo.has-title-and-tagline & {
- animation-name: twentytwentyone-close-button-transition;
- animation-duration: 0.3s;
- }
- }
- }
- }
- }
- // When the menu is open, hide the close button and show the hide button.
- .primary-navigation-open & {
- width: 100%;
- z-index: 500;
- background-color: var(--global--color-background);
- #primary-mobile-menu {
- position: static;
- }
- }
- }
- .primary-navigation {
- position: absolute;
- top: var(--global--admin-bar--height);
- right: 0;
- color: var(--primary-nav--color-text);
- font-size: var(--primary-nav--font-size);
- line-height: 1.15;
- margin-top: 0;
- margin-bottom: 0;
- // Mobile menu closed
- > .primary-menu-container {
- position: fixed;
- visibility: hidden;
- opacity: 0;
- top: 0;
- right: 0;
- bottom: 0;
- left: 0;
- // Height of the menu-button-container using font size, line height, and total padding, plus 5px so the focus of the first item is visible.
- padding-top: calc(var(--button--line-height) * var(--primary-nav--font-size-button) + 42px + 5px);
- padding-left: var(--global--spacing-unit);
- padding-right: var(--global--spacing-unit);
- padding-bottom: var(--global--spacing-horizontal);
- background-color: var(--global--color-background);
- transition: all .15s ease-in-out;
- transform: translateY(var(--global--spacing-vertical));
- @include media(mobile-only) {
- height: 100vh;
- z-index: 499;
- overflow-x: hidden;
- overflow-y: auto;
- border: 2px solid transparent;
- .has-logo.has-title-and-tagline & {
- position: fixed;
- transform: translateY(0) translateX(100%);
- }
- .admin-bar .has-logo.has-title-and-tagline & {
- top: var(--global--admin-bar--height);
- }
- .admin-bar & {
- height: calc(100vh - var(--global--admin-bar--height));
- }
- &:focus {
- border: 2px solid var(--global--color-primary);
- }
- }
- }
- // Mobile menu open
- .primary-navigation-open & {
- @include media(mobile-only) {
- width: 100%;
- position: fixed;
- z-index: 2; // To be greater than the cover block and embeds.
- }
- > .primary-menu-container {
- position: absolute;
- visibility: visible;
- opacity: 1;
- transform: translateY(0);
- }
- }
- .primary-navigation-open .has-logo.has-title-and-tagline & {
- @include media(mobile-only) {
- > .primary-menu-container {
- transform: translateX(0) translateY(0);
- }
- }
- }
- @include media(mobile) {
- position: relative;
- margin-left: auto;
- // Hide Mobile menu on desktop
- > .primary-menu-container {
- visibility: visible;
- opacity: 1;
- position: relative;
- padding: 0;
- background-color: transparent;
- overflow: initial;
- transform: none;
- }
- // Hide mobile menu toggle
- #toggle-menu {
- display: none;
- }
- // Hide sub-sub-menus
- > .primary-menu-container ul > li .sub-menu-toggle[aria-expanded="false"] ~ ul {
- display: none;
- }
- // Don't adjust position when logged-in
- .admin-bar & {
- top: initial;
- > .primary-menu-container {
- top: initial;
- }
- }
- }
- // Menu list wrapper
- > div > .menu-wrapper {
- display: flex;
- justify-content: flex-start;
- flex-wrap: wrap;
- list-style: none;
- margin: 0;
- max-width: none;
- padding-left: 0;
- position: relative;
- @include media(mobile-only) {
- padding-bottom: 100px;
- ul {
- padding-left: 0;
- }
- }
- li {
- display: block;
- position: relative;
- width: 100%;
- @include media(mobile) {
- margin: 0;
- width: inherit;
- &:last-child {
- margin-right: 0;
- }
- }
- }
- // Sub-menu buttons
- .sub-menu-toggle {
- display: flex;
- height: calc(2 * var(--primary-nav--padding) + 1.15em + 1px);
- width: 44px;
- padding: 0;
- justify-content: center;
- align-items: center;
- background: transparent;
- color: currentColor;
- border: none;
- &:focus {
- outline: 2px solid var(--wp--style--color--link, var(--global--color-primary));
- }
- @include media(mobile-only) {
- display: none;
- }
- .icon-plus,
- .icon-minus {
- height: 100%;
- display: flex;
- align-items: center;
- svg {
- margin-top: -1px;
- }
- }
- .icon-minus {
- display: none;
- }
- // When the sub-menu is open, display the minus icon
- &[aria-expanded="true"] {
- .icon-minus {
- display: flex;
- }
- .icon-plus {
- display: none;
- }
- }
- }
- // Sub-menus Flyout
- > li > .sub-menu {
- position: relative;
- @include media(mobile) {
- left: 0;
- margin: 0;
- min-width: max-content;
- position: absolute;
- top: 100%;
- padding-top: 3px;
- transition: all 0.5s ease;
- z-index: 88888;
- &:before,
- &:after {
- content: "";
- display: block;
- position: absolute;
- width: 0;
- top: -10px;
- left: var(--global--spacing-horizontal);
- border-style: solid;
- border-color: var(--primary-nav--border-color) transparent;
- border-width: 0 7px 10px 7px;
- }
- &:after {
- top: -9px;
- border-color: var(--global--color-background) transparent;
- }
- li {
- background: var(--global--color-background);
- }
- &.submenu-reposition-left {
- /* rtl:ignore */
- left: 0;
- /* rtl:ignore */
- right: auto;
- &:before,
- &:after {
- /* rtl:ignore */
- left: var(--global--spacing-horizontal);
- /* rtl:ignore */
- right: auto;
- }
- }
- &.submenu-reposition-right {
- /* rtl:ignore */
- right: 0;
- /* rtl:ignore */
- left: auto;
- &:before,
- &:after {
- /* rtl:ignore */
- left: auto;
- /* rtl:ignore */
- right: var(--global--spacing-horizontal);
- }
- }
- }
- }
- }
- // Top-level Item Link Colors
- .primary-menu > .menu-item:hover > a {
- color: var(--primary-nav--color-link-hover);
- }
- .primary-menu-container {
- @include media(mobile) {
- // Better align with the site title when the menu wraps.
- margin-right: calc(0px - var(--primary-nav--padding));
- margin-left: calc(0px - var(--primary-nav--padding));
- // Top-level Menu Item
- > ul > .menu-item {
- display: flex;
- > a {
- padding-left: var(--primary-nav--padding);
- padding-right: var(--primary-nav--padding);
- + .sub-menu-toggle {
- margin-left: calc(5px - var(--primary-nav--padding));
- }
- }
- }
- }
- }
- // Menu Item Link
- a {
- display: block;
- font-family: var(--primary-nav--font-family-mobile);
- font-size: var(--primary-nav--font-size-mobile);
- font-weight: var(--primary-nav--font-weight);
- padding: var(--primary-nav--padding) 0;
- text-decoration: none;
- @include media(mobile) {
- display: block;
- font-family: var(--primary-nav--font-family);
- font-size: var(--primary-nav--font-size);
- font-weight: var(--primary-nav--font-weight);
- }
- + svg {
- fill: var(--primary-nav--color-text);
- }
- &:hover,
- &:link,
- &:visited {
- color: var(--primary-nav--color-link-hover);
- }
- &:hover {
- text-decoration: underline;
- text-decoration-style: dotted;
- }
- &:focus {
- position: relative;
- z-index: 99999; // Ensure focus styles appear above absolute positioned elements
- outline-offset: 0;
- text-decoration-thickness: 2px;
- }
- }
- .current-menu-item > a:first-child,
- .current_page_item > a:first-child {
- text-decoration: underline;
- text-decoration-style: solid;
- &:hover {
- text-decoration: underline;
- text-decoration-style: dotted;
- }
- }
- // Sub-menu depth indicators + text styles
- .sub-menu {
- margin: 0;
- padding: 0;
- list-style: none;
- margin-left: var(--primary-nav--padding);
- border: 1px solid var(--primary-nav--border-color);
- .sub-menu {
- border: none;
- }
- // Sub-menu items om wide screens.
- @include media(mobile) {
- // For nested sub-menus, don't duplicate the padding
- > .menu-item > .sub-menu {
- padding: 0;
- }
- }
- .menu-item {
- @include media(mobile-only) {
- &:last-child {
- margin-bottom: 0;
- }
- }
- > a {
- padding: calc(1.25 * var(--primary-nav--padding)) var(--primary-nav--padding);
- display: block;
- font-size: var(--primary-nav--font-size-sub-menu-mobile);
- font-style: var(--primary-nav--font-style-sub-menu-mobile);
- @include media(mobile) {
- font-size: var(--primary-nav--font-size-sub-menu);
- font-style: var(--primary-nav--font-style);
- }
- }
- }
- }
- // Show top-level sub-menu indicators above mobile-breakpoint-only
- .menu-item-has-children {
- > .svg-icon {
- display: none;
- }
- @include media(mobile) {
- > .svg-icon {
- display: inline-block;
- height: 100%;
- }
- .sub-menu .svg-icon {
- display: none;
- }
- }
- }
- .menu-item-description {
- display: block;
- clear: both;
- font-size: var(--global--font-size-xs);
- text-transform: none;
- line-height: 1.7;
- > span {
- display: inline-block;
- }
- }
- }
- // Keep the menu pinned to the top when the menu is open.
- @include media(mobile-only) {
- .lock-scrolling .site {
- position: fixed;
- max-width: 100%;
- width: 100%;
- }
- }
- // Close button animation for when a custom logo is present.
- @keyframes twentytwentyone-close-button-transition {
- from {
- opacity: 0;
- }
- to {
- opacity: 1;
- }
- }
|