Files
portfolio/home/index.css
2022-12-20 04:03:54 -05:00

318 lines
6.8 KiB
CSS

@import url('https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:opsz,wght,FILL,GRAD@48,500,1,200');
@import url('https://fonts.googleapis.com/css2?family=Open+Sans:ital,wght@0,300;0,400;0,500;0,600;0,700;0,800;1,300;1,400;1,500;1,600;1,700;1,800&display=swap');
@import url('https://fonts.googleapis.com/css2?family=Source+Serif+Pro:ital@1&display=swap');
/*----------------------------------------------------------------------------*/
* {
padding: 0;
border: 0;
margin: 0;
outline: 0;
--light: #FEFADC;
--dark: #504B43;
--red: #F8333C;
--yellow: #FCAB10;
--green: #8FD694;
--blue: #2B9EB3;
--timing: cubic-bezier(0.2, 1, 0, 1);
--start-timing: cubic-bezier(0,.5,0,.9);
}
.light { --color: var(--light) }
.dark { --color: var(--dark) }
.red { --color: var(--red) }
.yellow { --color: var(--yellow) }
.green { --color: var(--green) }
.blue { --color: var(--blue) }
.flex-space { flex: 1 }
.pos-center {
position: absolute;
left: 50%;
top: 50%;
transform: translate(-50%, -50%);
}
/*----------------------------------------------------------------------------*/
@media (min-aspect-ratio: 6 / 5) {
.nav2, .nav3 {
display: none !important;
}
}
@media (min-aspect-ratio: 3 / 4) and (max-aspect-ratio: 6 / 5) {
.nav1, .nav3 {
display: none !important;
}
}
@media (max-aspect-ratio: 3 / 4) {
.nav1, .nav2 {
display: none !important;
}
}
/*----------------------------------------------------------------------------*/
html {
background: var(--dark);
scroll-behavior: smooth;
-webkit-overflow-scrolling: touch;
overflow-y: scroll;
}
nav {
position: fixed;
z-index: 1000;
filter: drop-shadow(0px 0px 100px #000);
}
#title-page > * {
opacity: calc(1 - 1.25 * var(--scroll, 0));
-webkit-backface-visibility: hidden;
backface-visibility: hidden;
}
#title-page {
position: fixed;
width: 100vw;
background-color: var(--light);
-webkit-clip-path: polygon(0% 0%, 100% 0%, 100% 80%, 0% 100%);
clip-path: polygon(0% 0%, 100% 0%, 100% 80%, 0% 100%);
height: calc(90vh - 77.5vh * var(--scroll, 0));
overflow: hidden;
display: flex;
flex-direction: column;
align-items: center;
}
#title-bottom {
position: absolute;
top: 65%;
}
#avatar {
position: fixed;
top: 50vh;
translate: 0 calc(-70% - 35% * var(--scroll, 0));
filter: grayscale(1) opacity(0.3);
z-index: -1;
width: max(90vmin, 60vh);
height: max(90vmin, 60vh);
image-rendering: crisp-edges;
image-rendering: -webkit-optimize-contrast;
}
#title-name::before {
content: "Hi! I'm";
position: absolute;
font-family: "Source Serif Pro", serif;
font-style: italic;
font-size: calc(min(6vh, 8vw));
line-height: calc(min(5vh, 7vw));
top: 0;
left: 0;
translate: 1vmin -100%;
color: var(--dark);
}
.fade-text::before {
content: attr(data) " " attr(data) " " attr(data) " " attr(data) " " attr(data) " " attr(data) " " attr(data);
font-size: calc(min(12vh, 16vw));
line-height: calc(min(11vh, 14vw));
font-family: "Open Sans", sans-serif;
font-weight: 900;
white-space: pre;
color: black;
}
#title-name {
position: absolute;
top: 0;
left: 50%;
translate: -50% 0;
font-size: calc(min(12vh, 16vw));
line-height: calc(min(11vh, 14vw));
font-family: "Open Sans", sans-serif;
font-weight: 900;
color: transparent;
-webkit-background-clip: text;
background-clip: text;
background-image: linear-gradient(45deg, #F008, #00F8);
transform: translateZ(0);
}
.fade1 { opacity: 05%; translate: 0 0; }
.fade2 { opacity: 10%; translate: -5% 0; }
.fade3 { opacity: 20%; translate: 5% 0; }
.fade4 { opacity: 25%; translate: -10% 0; }
.fade5 { opacity: 30%; translate: 10% 0; }
.navbar {
padding: 2vmin 3vmin;
width: 100vw;
position: absolute;
display: flex;
box-sizing: border-box;
align-items: flex-start;
z-index: 100;
}
nav a:nth-child(1) { animation: nav-enter 2s 000ms var(--timing) backwards; }
nav a:nth-child(2) { animation: nav-enter 2s 100ms var(--timing) backwards; }
nav a:nth-child(3) { animation: nav-enter 2s 200ms var(--timing) backwards; }
nav a:nth-child(4) { animation: nav-enter 2s 300ms var(--timing) backwards; }
nav a:nth-child(5) { animation: nav-enter 2s 400ms var(--timing) backwards; }
nav a:nth-child(6) { animation: nav-enter 2s 500ms var(--timing) backwards; }
nav a:nth-child(7) { animation: nav-enter 2s 600ms var(--timing) backwards; }
@keyframes nav-enter {
from {
opacity: 0;
transform: translateX(-7%);
}
to {
opacity: 1;
transform: translateX(0%);
}
}
.button {
position: relative;
font-style: normal;
display: flex;
justify-content: center;
align-items: center;
font-size: 4vh;
font-family: "Open Sans", sans-serif;
font-weight: 900;
padding: 1vh 3vh;
color: var(--color, var(--dark));
background: transparent;
text-decoration: none;
transition: transform var(--timing) 1s, filter var(--timing) 1s;
}
.button.icon {
font-size: 2.5vh;
}
.button:active {
transition: transform var(--timing) 0.3s, filter var(--timing) 0.3s;
transform: scale(0.9);
}
.button.icon::before {
content: attr(data-i);
font-family: "Material Symbols Outlined";
font-size: 4vh;
}
.button::after {
content: "";
width: 100%;
height: 100%;
position: absolute;
background-color: var(--color, var(--dark));
filter: opacity(0);
transform: scale(0.9);
z-index: -1;
border-radius: 1vh;
transition: transform var(--timing) 1s, filter var(--timing) 1s;
}
.button:hover::after {
filter: opacity(0.25);
transform: scale(1);
}
@media (hover: none) {
.button:hover::after {
filter: opacity(0);
transform: scale(0.9);
}
}
.button:active::after {
filter: opacity(0.5);
}
/*----------------------------------------------------------------------------*/
section {
margin-bottom: 200vh;
background-color: var(--color, transparent);
}
#about-section {
height: 60vmin;
}
#title-section {
height: 90vmin;
z-index: 1000;
}
/*----------------------------------------------------------------------------*/
#menu-modal::backdrop {
background-color: #0008;
animation: 0.5s ease menu-back-enter;
}
#menu-modal {
position: fixed;
height: 100vh;
width: 100vw;
max-height: 100vh;
max-width: 100vw;
background: transparent;
}
#menu-inner {
padding: 2vmin 3vmin;
position: fixed;
height: 100vh;
width: 75vw;
display: flex;
box-sizing: border-box;
align-items: flex-start;
flex-direction: column;
-webkit-clip-path: polygon(0% 0%, 100% 0%, 90% 100%, 0% 100%);
clip-path: polygon(0% 0%, 100% 0%, 90% 100%, 0% 100%);
background-color: var(--light);
}
#menu-modal[open] {
animation: 0.5s ease menu-enter;
}
@keyframes menu-enter {
from {
transform: translateX(-100%);
}
to {
transform: translateX(0%);
}
}
@keyframes menu-back-enter {
from {
filter: opacity(0);
}
to {
filter: opacity(1);
}
}