@use 'partials/minireset'; @use 'partials/fonts'; @use 'partials/variables' as *; @use 'partials/animations'; // ---------------------------------------------------------------------------- // GENERALITIES // ---------------------------------------------------------------------------- // Fonts and colors body { font-family: var(--text-font-family); font-size: var(--text-font-size); line-height: var(--text-font-size); color: var(--jet); background-color: var(--white); } h1, h2, h3 { color: var(--black); } h1 { font-family: var(--logo-font-family); font-size: var(--h1-font-size); line-height: var(--h1-font-size); } h2 { font-family: var(--text-font-family); font-size: var(--h2-font-size); line-height: var(--h2-font-size); margin: 0 0 4rem 0; } h3 { font-family: var(--text-font-family); font-size: var(--h3-font-size); line-height: var(--h3-font-size); margin: 2rem 0 1rem 0; } p { text-align: justify; line-height: var(--text-line-height); } strong { font-weight: var(--bold-font-weight); } em { font-style: italic; } // Link style a { color: var(--jet); text-decoration: underline; -webkit-transition: color 200ms ease-in-out; -o-transition: color 200ms ease-in-out; transition: color 200ms ease-in-out; &:hover, &:focus, &:active { color: var(--black); } } // General grid layout body { min-height: 100vh; overflow-x: hidden; display: -ms-grid; display: grid; grid: 'header' var(--header-bar-height) 'main' 1fr 'footer' auto / 1fr; } .body--hidden-overflow-y { overflow-y: hidden; } header { grid-area: header; } main { grid-area: main; } footer { grid-area: footer; } // ---------------------------------------------------------------------------- // HEADER // ---------------------------------------------------------------------------- // Header bar .header-bar { width: 100%; height: var(--header-bar-height); margin: auto; padding: var(--header-bar-vertical-padding) Max(var(--header-bar-horizontal-padding), calc((100vw - var(--content-max-width)) / 2 + var(--header-bar-horizontal-padding))); background-color: var(--transparent-white); border-bottom: 1px solid var(--transparent-white); display: -webkit-box; display: -ms-flexbox; display: flex; -webkit-box-pack: justify; -ms-flex-pack: justify; justify-content: space-between; -webkit-box-align: center; -ms-flex-align: center; align-items: center; z-index: 1; -webkit-transition: height 400ms ease-in-out, border-bottom 400ms ease-in-out; -o-transition: height 400ms ease-in-out, border-bottom 400ms ease-in-out; transition: height 400ms ease-in-out, border-bottom 400ms ease-in-out; &--fixed { position: fixed; --header-bar-vertical-padding: 0.5rem; --header-bar-height: calc((var(--header-bar-vertical-padding) * 2) + var(--icon-size)); top: calc(-1 * var(--header-bar-height)); border-bottom: 1px solid var(--light-gray); -webkit-transition: transform 400ms ease-in-out; -o-transition: transform 400ms ease-in-out; transition: transform 400ms ease-in-out; } &--visible { -webkit-transform: translateY(var(--header-bar-height)); -ms-transform: translateY(var(--header-bar-height)); transform: translateY(var(--header-bar-height)); } } .header-bar__logo { width: max-content; -webkit-transition: transform 400ms ease-in-out; -o-transition: transform 400ms ease-in-out; transition: transform 400ms ease-in-out; -webkit-transform-origin: left; -ms-transform-origin: left; transform-origin: left; &--small { -webkit-transform: scale(0.8); -ms-transform: scale(0.8); transform: scale(0.8); } } .header-bar__logo-link { text-decoration: none; } .header-bar__nav { position: relative; z-index: 2; } .header-bar__nav-button { position: relative; z-index: 3; width: var(--icon-size); height: var(--icon-size); padding: 0; overflow: hidden; border: none; border-radius: 50%; background-color: var(--jet); cursor: pointer; display: -webkit-box; display: -ms-flexbox; display: flex; -webkit-box-align: center; -ms-flex-align: center; align-items: center; -webkit-transition: transform 200ms ease-in-out, background-color 400ms ease-in-out; -o-transition: transform 200ms ease-in-out, background-color 400ms ease-in-out; transition: transform 200ms ease-in-out, background-color 400ms ease-in-out; svg { width: 100%; height: 100%; padding: 10%; flex-shrink: 0; -webkit-transition: opacity 400ms ease-in-out, transform 400ms ease-in-out; -o-transition: opacity 400ms ease-in-out, transform 400ms ease-in-out; transition: opacity 400ms ease-in-out, transform 400ms ease-in-out; } svg:nth-child(1) { fill: var(--white); opacity: 1; } svg:nth-child(2) { fill: var(--black); opacity: 0; } &:hover, &:active { -webkit-transform: scale(1.1); -ms-transform: scale(1.1); transform: scale(1.1); } &--custom-focus { background-color: var(--white); svg { -webkit-transform: translateX(-100%); -ms-transform: translateX(-100%); transform: translateX(-100%); } svg:nth-child(1) { opacity: 0; } svg:nth-child(2) { opacity: 1; } } } .header-bar__nav-menu { position: fixed; z-index: 2; top: 0; left: 100vw; min-width: 100vw; max-width: 100vw; height: 100vh; padding: calc(var(--header-bar-height) + 4rem) Max(4rem, calc((100vw - var(--content-max-width)) / 2 + 4rem)) 4rem 4rem; background-color: var(--transparent-black); color: var(--white); overflow-x: hidden; overflow-y: auto; -webkit-transition: transform 400ms ease-in-out; -o-transition: transform 400ms ease-in-out; transition: transform 400ms ease-in-out; > li { + li { border-top: 1px solid var(--spanish-gray); } li { margin: 0 0 0 2rem; border-top: 1px solid var(--granite-gray); } a, span { display: block; padding: 1rem 0; color: var(--light-gray); text-decoration: none; -webkit-transform: translateX(100%); -ms-transform: translateX(100%); transform: translateX(100%); -webkit-transition: transform 400ms ease-in-out; -o-transition: transform 400ms ease-in-out; transition: transform 400ms ease-in-out; } a:hover, a:focus, a:active { color: var(--white); } } .header-bar__nav-item--active { list-style: disc; a { color: var(--white); } } &--visible { -webkit-transform: translateX(calc(-1 * 100%)); -ms-transform: translateX(calc(-1 * 100%)); transform: translateX(calc(-1 * 100%)); @for $i from 1 through 20 { .header-bar__nav-item-#{$i} { a, span { -webkit-transform: translateX(0); -ms-transform: translateX(0); transform: translateX(0); -webkit-transition: transform calc(400ms + $i * 100ms) ease-in-out; -o-transition: transform calc(400ms + $i * 100ms) ease-in-out; transition: transform calc(400ms + $i * 100ms) ease-in-out; } } } } } .header-bar__nav-overlay { position: fixed; z-index: 1; top: 0; left: 0; width: 100vw; height: 100vh; background-color: var(--black); opacity: 0; pointer-events: none; will-change: opacity; -webkit-transition: opacity 400ms ease-in-out; -o-transition: opacity 400ms ease-in-out; transition: opacity 400ms ease-in-out; &--visible { opacity: 0.2; pointer-events: auto; cursor: pointer; } } @media screen and (min-width: $tablet-media-query) { .header-bar__nav-menu { min-width: 50vw; } } @media screen and (min-width: $desktop-media-query) { .header-bar__nav-menu { min-width: 25vw; } } // ---------------------------------------------------------------------------- // MAIN // ---------------------------------------------------------------------------- // Home section .home-section { max-width: var(--content-max-width); min-height: var(--home-section-min-height); margin: auto; padding: var(--home-section-vertical-padding) var(--home-section-horizontal-padding); display: -webkit-box; display: -ms-flexbox; display: flex; -webkit-box-pack: center; -ms-flex-pack: center; justify-content: center; -webkit-box-align: center; -ms-flex-align: center; align-items: center; } .home__nav { height: 100%; display: -ms-grid; display: grid; grid: 'top-left top top-right' var(--home-nav-item-size) 'left center right' auto 'bottom-left bottom bottom-right' var(--home-nav-item-size) / var(--home-nav-item-size) auto var(--home-nav-item-size); place-content: center center; gap: var(--home-nav-gap); line-height: 0; } .home__nav-image { grid-area: center; img { min-width: 12rem; max-width: Min(100%, 2500px); min-height: 12rem; max-height: var(--home-nav-image-max-height); } } .home__nav--2-items { .home__nav-item-1 { grid-area: top-left; place-self: end end; -webkit-transform: rotate(-45deg) translateY(var(--home-nav-item-translation)); -ms-transform: rotate(-45deg) translateY(var(--home-nav-item-translation)); transform: rotate(-45deg) translateY(var(--home-nav-item-translation)); } .home__nav-item-2 { grid-area: top-right; place-self: end start; -webkit-transform: rotate(45deg) translateY(var(--home-nav-item-translation)); -ms-transform: rotate(45deg) translateY(var(--home-nav-item-translation)); transform: rotate(45deg) translateY(var(--home-nav-item-translation)); } } .home__nav--3-items { .home__nav-item-1 { grid-area: top-left; place-self: end end; -webkit-transform: rotate(-45deg) translateY(var(--home-nav-item-translation)); -ms-transform: rotate(-45deg) translateY(var(--home-nav-item-translation)); transform: rotate(-45deg) translateY(var(--home-nav-item-translation)); } .home__nav-item-2 { grid-area: top-right; place-self: end start; -webkit-transform: rotate(45deg) translateY(var(--home-nav-item-translation)); -ms-transform: rotate(45deg) translateY(var(--home-nav-item-translation)); transform: rotate(45deg) translateY(var(--home-nav-item-translation)); } .home__nav-item-3 { grid-area: bottom; place-self: start center; } } .home__nav--4-items { .home__nav-item-1 { grid-area: top-left; place-self: end end; -webkit-transform: rotate(-45deg) translateY(var(--home-nav-item-translation)); -ms-transform: rotate(-45deg) translateY(var(--home-nav-item-translation)); transform: rotate(-45deg) translateY(var(--home-nav-item-translation)); } .home__nav-item-2 { grid-area: top-right; place-self: end start; -webkit-transform: rotate(45deg) translateY(var(--home-nav-item-translation)); -ms-transform: rotate(45deg) translateY(var(--home-nav-item-translation)); transform: rotate(45deg) translateY(var(--home-nav-item-translation)); } .home__nav-item-3 { grid-area: bottom-left; place-self: start end; -webkit-transform: rotate(45deg) translateY(calc(var(--home-nav-item-translation) * -1)); -ms-transform: rotate(45deg) translateY(calc(var(--home-nav-item-translation) * -1)); transform: rotate(45deg) translateY(calc(var(--home-nav-item-translation) * -1)); } .home__nav-item-4 { grid-area: bottom-right; place-self: start start; -webkit-transform: rotate(-45deg) translateY(calc(var(--home-nav-item-translation) * -1)); -ms-transform: rotate(-45deg) translateY(calc(var(--home-nav-item-translation) * -1)); transform: rotate(-45deg) translateY(calc(var(--home-nav-item-translation) * -1)); } } .home__nav-link { color: var(--black); font-size: var(--h3-font-size); text-decoration: none; opacity: 0; -webkit-transition: opacity 600ms ease-in-out; -o-transition: opacity 600ms ease-in-out; transition: opacity 600ms ease-in-out; div { opacity: 0; -webkit-transition: opacity 600ms ease-in-out; -o-transition: opacity 600ms ease-in-out; transition: opacity 600ms ease-in-out; } } .home__nav-link--visible { opacity: 1; div { opacity: 1; } } .home__nav-letter--wave-up { -webkit-animation: wave-up 600ms ease-out; animation: wave-up 600ms ease-in-out; } .home__nav-letter--wave-down { -webkit-animation: wave-down 600ms ease-out; animation: wave-down 600ms ease-in-out; } // Gallery & biography sections .gallery-section, .biography-section { max-width: var(--content-max-width); margin: auto; padding: var(--generic-section-vertical-padding) var(--generic-section-horizontal-padding); } .gallery__title, .biography__title { text-align: center; } .gallery__introduction, .biography__presentation { max-width: var(--text-max-width); margin: auto; h3:nth-child(1) { margin: 0 0 1rem 0; } p { + p, + ul { margin: 1rem 0 0 0; } } ul { list-style: disc inside; + ul, + p { margin: 1rem 0 0 0; } li + li { margin: 0.5rem 0 0 0; } } } .gallery__artwork { display: table; max-width: Min(1280px, 100%); margin: auto; + .gallery__artwork { margin: 2rem auto 0 auto; } .gallery__image, .gallery__video { display: block; max-height: 80vh; } .gallery__video { &--full-screen { max-height: initial; } } figcaption { display: table-caption; caption-side: bottom; margin: 1rem auto 0 auto; font-size: var(--caption-font-size); font-style: italic; } } @media screen and (min-width: $tablet-media-query) { .gallery__artwork { + .gallery__artwork { margin: 3rem auto 0 auto; } } } // Error section .error-section { max-width: var(--content-max-width); margin: auto; padding: var(--generic-section-vertical-padding) var(--generic-section-horizontal-padding); } .error__title { text-align: center; } .error__message { max-width: var(--text-max-width); margin: auto; text-align: center; } .error__button { margin: 1rem 0 0 0; text-align: center; a { display: inline-block; padding: 1rem; border-radius: 10px; color: var(--white); background-color: var(--jet); text-decoration: none; font-weight: var(--semi-bold-font-weight); -webkit-transition: background-color 200ms ease-in-out; -o-transition: background-color 200ms ease-in-out; transition: background-color 200ms ease-in-out; &:hover, &:focus, &:active { background-color: var(--black); } } } // ---------------------------------------------------------------------------- // FOOTER // ---------------------------------------------------------------------------- // Footer bar .footer-bar { max-width: var(--content-max-width); height: var(--footer-bar-height); margin: auto; padding: var(--footer-bar-vertical-padding) var(--footer-bar-horizontal-padding); display: -webkit-box; display: -ms-flexbox; display: flex; -webkit-box-orient: vertical; -webkit-box-direction: normal; -ms-flex-direction: column; flex-direction: column; -webkit-box-align: center; -ms-flex-align: center; align-items: center; } .footer-bar__social { display: -webkit-box; display: -ms-flexbox; display: flex; -webkit-box-align: center; -ms-flex-align: center; align-items: center; a { width: var(--icon-size); height: var(--icon-size); border-radius: 50%; background-color: var(--jet); display: -webkit-box; display: -ms-flexbox; display: flex; -webkit-box-pack: center; -ms-flex-pack: center; justify-content: center; -webkit-box-align: center; -ms-flex-align: center; align-items: center; -webkit-transition: transform 200ms ease-in-out; -o-transition: transform 200ms ease-in-out; transition: transform 200ms ease-in-out; + a { margin: 0 0 0 1rem; } svg { fill: var(--white); -webkit-transition: fill 200ms ease-in-out; -o-transition: fill 200ms ease-in-out; transition: fill 200ms ease-in-out; } &:hover, &:active { transform: scale(1.1); } } a.footer-bar__instagram-button { svg { width: 55%; height: 55%; } } a.footer-bar__email-button { svg { width: 70%; height: 70%; } } } .footer-bar__copyright { font-size: var(--footnote-font-size); margin: 1rem 0 0 0; } @media screen and (min-width: $tablet-media-query) { .footer-bar { -webkit-box-orient: horizontal; -webkit-box-direction: normal; -ms-flex-direction: row; flex-direction: row; -webkit-box-pack: justify; -ms-flex-pack: justify; justify-content: space-between; -webkit-box-align: end; -ms-flex-align: end; align-items: flex-end; } .footer-bar__social { order: 2; } .footer-bar__copyright { order: 1; margin: 0; } }