body > header { background: $gray; #content { display: flex; align-content: center; justify-content: space-between; } nav#menu { position: relative; display: none; appearance: none; transform: skewX(-15deg); left: -1em; padding: 1em 1em 1em 2em; background: $primary; align-self: flex-start; a { transform: skewX(15deg); display: flex; flex-direction: column; align-items: center; justify-content: center; width: 1.4em; height: 1.4em; margin: 0; padding: 0; color: $gray; font-size: 1.33em; } } nav { display: flex; flex-direction: row; align-items: center; hr { height: 100%; width: 0.2em; background: $primary; border: none; transform: skewX(-15deg); } a { display: flex; align-items: center; position: relative; align-self: stretch; margin: 0; padding: 0 2em; font-size: 1em; i { font-size: 1.2em; } &.title { margin: 0; text-align: center; padding: 0.5em 1em; font-size: 1.75em; img { height: 1.75em; width: 1.75em; } p { margin: 0; padding-left: 0.5em; } } } } } .messages { & > * { padding: 1em 20%; margin: 0; max-width: initial; font-weight: bold; } p.error { color: darken($red, 20%); background: lighten($red, 40%); margin: 0; max-width: initial; } p.warning { color: darken($yellow, 20%); background: lighten($yellow, 40%); } p.success { color: darken($success-color, 20%); background: lighten($success-color, 40%); } } /// Small screens @media screen and (max-width: 600px) { @keyframes menuOpening { from { transform: scaleX(0); transform-origin: left; opacity: 0; } to { transform: scaleX(1); transform-origin: left; opacity: 1; } } body > header { flex-direction: column; nav#menu { display: inline-flex; z-index: 21; } #content { display: none; appearance: none; text-align: center; z-index: 20; } } body > header:focus-within #content, #content.show { position: fixed; display: flex; flex-direction: column; justify-content: flex-start; top: 0; left: 0; width: 100%; height: 100%; box-sizing: border-box; animation: 0.2s menuOpening; &::before { content: ""; position: absolute; transform: skewX(-10deg); top: 0; left: -20%; width: 100%; height: 100%; z-index: -10; background: $primary; } > nav { flex-direction: column; align-items: flex-start; a { display: flex; flex-direction: row; align-items: center; margin: 0; padding: 1rem 1.5rem; color: $background; font-size: 1.4em; font-weight: 300; &.title { font-size: 1.8em; } > *:first-child { width: 3rem; } > img:first-child { height: 3rem; } > *:last-child { margin-left: 1rem; } > nav hr { display: block; margin: 0; width: 100%; border: solid $background 0.1rem; } .mobile-label { display: initial; } } } } } /* Only enable label animations on large screens */ @media screen and (min-width: 600px) { header nav a { i { transition: all 0.2s ease; margin: 0; } .mobile-label { transition: all 0.2s ease; display: block; position: absolute; left: 50%; transform: translate(-50%, 0); transform: translateZ(0); -webkit-transform: none !important; opacity: 0; font-size: 0.9em; white-space: nowrap; } img + .mobile-label { display: none; } &:hover { i { margin-bottom: 0.75em; } .mobile-label { opacity: 1; transform: translate(-50%, 80%); -webkit-transform: translate(-50%, 80%); } } } } // Small screens @media screen and (max-width: 600px) { @keyframes menuOpening { from { transform: scaleX(0); transform-origin: left; opacity: 0; } to { transform: scaleX(1); transform-origin: left; opacity: 1; } } @-webkit-keyframes menuOpening { from { -webkit-transform: scaleX(0); transform-origin: 'left'; opacity: 0; } to { -webkit-transform: scaleX(1); transform-origin: 'left'; opacity: 1; } } body > header { flex-direction: column; nav#menu { display: inline-flex; z-index: 21; } #content { display: none; appearance: none; text-align: center; z-index: 20; } } body > header:focus-within #content, #content.show { position: fixed; display: flex; flex-direction: column; justify-content: flex-start; top: 0; left: 0; width: 100%; height: 100%; box-sizing: border-box; animation: 0.2s menuOpening; &::before { content: ""; position: absolute; transform: skewX(-10deg); top: 0; left: -20%; width: 100%; height: 100%; z-index: -10; background: $primary; } > nav { flex-direction: column; align-items: flex-start; a { display: flex; flex-direction: row; align-items: center; margin: 0; padding: 1rem 1.5rem; color: $background; font-size: 1.4em; font-weight: 300; &.title { font-size: 1.8em; } > *:first-child { width: 3rem; } > img:first-child { height: 3rem; } > *:last-child { margin-left: 1rem; } > nav hr { display: block; margin: 0; width: 100%; border: solid $background 0.1rem; } .mobile-label { display: initial; } } } } }