Style.css of this Portfolio website
@font-face {
font-family: 'SF Pro Display';
font-weight: 300;
src: url('/assets/fonts/sfprodisplay-light.woff2') format('woff2'),
url('/assets/fonts/sfprodisplay-light.woff') format('woff');
}
@font-face {
font-family: 'SF Pro Display';
font-weight: 400;
src: url('/assets/fonts/sfprodisplay-regular.woff2') format('woff2'),
url('/assets/fonts/sfprodisplay-regular.woff') format('woff');
}
@font-face {
font-family: 'SF Pro Display';
font-weight: 600;
src: url('/assets/fonts/sfprodisplay-semibold.woff2') format('woff2'),
url('/assets/fonts/sfprodisplay-semibold.woff') format('woff');
}
@font-face {
font-family: 'SF Pro Text';
font-weight: 400;
src: url('/assets/fonts/sfprotext-regular.woff2') format('woff2'),
url('/assets/fonts/sfprotext-regular.woff') format('woff');
}
@font-face {
font-family: 'SF Pro Text';
font-weight: 600;
src: url('/assets/fonts/sfprotext-semibold.woff2') format('woff2'),
url('/assets/fonts/sfprotext-semibold.woff') format('woff');
}
:root {
/* Custom properties */
--color-main-accent: #f5c029;
--color-main-body: #232527;
--color-text-body: #ccced0;
--color-text-white: #f5f5f7;
--color-outline-on-dark: #4e5257;
--font-family-heading: 'SF Pro Display', Helvetica, Arial, sans-serif;
--font-family-text: 'SF Pro Text', Helvetica, Arial, sans-serif;
--font-weight-light: 300;
--font-weight-regular: 400;
--font-weight-bold: 600;
--font-size-text: 1.063rem; /*18px*/
--font-size-nav: 1rem; /*16px*/
--font-size-footer: 0.875rem; /*14px*/
/* --font-size-small: 0.75rem; 12px */
--font-size-medium: 2rem; /*32px*/
--font-size-big: 2rem; /*32px*/
--line-height-text: 1.47;
--line-height-medium: 1.125;
--line-height-big: 1.125;
--letter-space-text: -0.022em;
--letter-spacing-medium: 0.004em;
--letter-spacing-big: 0.004em;
--size-100: 0.25rem;
--size-200: 0.5rem;
--size-300: 0.75rem;
--size-400: 1rem;
--size-500: 1.5rem;
--size-600: 2rem;
--size-700: 3rem;
--size-800: 4rem;
--size-900: 5rem;
--size-padding-section: 1.6rem;
}
@media (min-width: 46em) {
:root {
--font-size-big: 2.5rem; /*40px*/
--letter-spacing-big: 0em;
--line-height-medium: 1.125;
--line-height-big: 1.1;
--size-padding-section: 2rem;
}
}
@media (min-width: 67em) {
:root {
--font-size-text: 1.3125rem; /*21px*/
--font-size-nav: 1.063rem; /*18px*/
--font-size-medium: 3rem; /*48px*/
--font-size-big: 3.5rem; /*56px*/
--line-height-text: 1.38;
--line-height-medium: 1.08;
--line-height-big: 1.07;
--letter-space-text: 0.011em;
--letter-spacing-medium: -0.003em;
--letter-spacing-big: -0.005em;
--size-padding-section: 3rem;
}
}
/* Box sizing rules */
*,
*::before,
*::after {
box-sizing: border-box;
}
/* Remove default margin */
* {
margin: 0;
padding: 0;
font: inherit;
}
/* Remove list styles on ul, ol elements with a list role, which suggests default styling will be removed */
ul[role='list'],
ol[role='list'] {
list-style: none;
}
/* Set core root defaults */
html:focus-within {
scroll-behavior: smooth;
}
html,
body {
height: 100%;
scroll-behavior: smooth;
}
/* Set core body defaults */
body {
text-rendering: optimizeSpeed;
}
/* A elements that don't have a class get default styles */
a:not([class]) {
text-decoration-skip-ink: auto;
}
/* Make images easier to work with */
img,
picture,
svg {
max-width: 100%;
display: block;
}
/* Remove all animations, transitions and smooth scroll for people that prefer not to see them */
@media (prefers-reduced-motion: reduce) {
html:focus-within {
scroll-behavior: auto;
}
*,
*::before,
*::after {
animation-duration: 0.01ms !important;
animation-iteration-count: 1 !important;
transition-duration: 0.01ms !important;
scroll-behavior: auto !important;
}
}
/* Utility classes */
.visually-hidden {
position: absolute;
width: 1px;
height: 1px;
padding: 0;
margin: -1px;
overflow: hidden;
clip: rect(0, 0, 0, 0);
white-space: nowrap;
border: 0;
}
.text-white {
color: var(--color-text-white);
}
.fs-big-heading {
font-size: var(--font-size-big);
}
.fs-medium-heading {
font-size: var(--font-size-medium);
}
.fs-footer {
font-size: var(--font-size-footer);
}
.fs-small {
font-size: var(--font-size-footer);
}
.fs-description {
font-size: var(--font-size-nav);
}
.letter-spacing-big-heading {
letter-spacing: var(--letter-spacing-big);
}
.letter-spacing-medium-heading {
letter-spacing: var(--letter-spacing-medium);
}
.fw-regular {
font-weight: var(--font-weight-regular);
}
.fw-bold {
font-weight: var(--font-weight-bold);
}
.text-accent {
color: var(--color-main-accent);
}
.padding-block-600 {
padding-block: var(--size-600);
}
.padding-block-section {
padding-block: var(--size-padding-section);
}
.text-center {
text-align: center;
}
.line {
border-bottom: 1px solid var(--color-outline-on-dark);
}
.centered{
margin: auto;
}
/* General styling */
body {
font-family: var(--font-family-text);
font-size: var(--font-size-text);
font-weight: var(--font-weight-regular);
line-height: var(--line-height-text);
letter-spacing: var(--letter-space-text);
background-color: var(--color-main-body);
color: var(--color-text-body);
}
h2 {
color: var(--color-text-white);
font-family: var(--font-family-heading);
font-size: var(--font-size-big);
font-weight: var(--font-weight-bold);
line-height: var(--line-height-big);
letter-spacing: var(--letter-spacing-big);
}
h3 {
color: var(--color-text-white);
font-family: var(--font-family-heading);
font-size: var(--font-size-medium);
font-weight: var(--font-weight-bold);
line-height: var(--line-height-medium);
letter-spacing: var(--letter-spacing-medium);
}
p {
margin: 1em 0;
}
.container {
--max-width: 90rem;
--padding: 1rem;
width: min(var(--max-width), 100% - (var(--padding) * 2));
margin-inline: auto;
}
.stacked {
display: grid;
justify-items: start;
align-items: end;
/* isolation: isolate; */
}
.stacked > img {
aspect-ratio: 16/7;
object-fit: cover;
}
.stacked > div {
align-items: end;
padding: 0 2rem 2rem 2rem;
}
.stacked > * {
grid-column: 1/-1;
grid-row: 1/-1;
}
.button:hover,
.button:focus-visible {
}
.logo {
display: flex;
align-items: end;
}
@media (min-width: 46em) {
.logo {
flex-direction: column;
}
}
@media (min-width: 67em) {
.logo {
flex-direction: row;
}
}
a {
color: var(--color-text-white);
text-decoration: none;
}
:is(a:hover, a:focus-visible) {
position: relative;
color: var(--color-main-accent);
outline: 0;
}
/* Navigation */
.primary-header {
margin-top: var(--size-700);
}
.nav-wrapper {
display: flex;
justify-content: space-between;
align-items: center;
}
.mobile-nav-toggle {
display: none;
z-index: 10;
}
.nav-list {
display: flex;
gap: var(--size-400);
font-weight: var(--font-weight-bold);
font-size: var(--font-size-nav);
}
/* .nav-list a {
color: var(--color-text-white);
} */
.nav-list a:hover::before,
.nav-list a:focus-visible::before {
content: '';
position: absolute;
top: var(--size-700);
left: 0;
width: 100%;
height: var(--size-100);
background-color: var(--color-main-accent);
}
.nav-icons {
display: block;
width: calc(var(--font-size-nav) * 2);
aspect-ratio: 1/1;
fill: var(--color-outline-on-dark);
}
@media (min-width: 46em) {
.nav-icons {
display: none;
}
}
@media (min-width: 67em) {
.nav-icons {
display: none;
}
}
@media (max-width: 46em) {
.primary-navigation {
display: none;
position: fixed;
top: 0;
left: 0;
height: 100vh;
height: 100dvh;
padding: var(--size-500) var(--size-900) var(--size-500) var(--size-500);
background-color: var(--color-main-body);
/* box-shadow: 0 0 0 100vmax rgb(130, 0, 0, 0.35); */
}
li {
display: flex;
gap: calc(2 * var(--font-size-nav));
align-items: center;
}
.stacked > img {
aspect-ratio: 16/10;
}
.primary-header[data-overlay]::before {
content: '';
position: fixed;
inset: 0;
background: rgb(0, 0, 0, 0.6);
}
.primary-navigation[data-visible] {
display: block;
}
.nav-list {
display: grid;
}
.nav-list :is(a:hover, a:focus-visible) {
position: static;
color: var(--color-text-white);
}
.nav-list a:hover::before {
top: auto;
left: 0;
transform: translateY(-0.25em);
height: 2em;
z-index: -1;
background-color: var(--color-outline-on-dark);
opacity: 0.4;
}
.mobile-nav-toggle {
display: block;
position: fixed;
top: var(--size-700);
right: var(--size-400);
cursor: pointer;
background: transparent;
fill: red;
border: 0;
padding: 0.5em;
}
.icon-hamburger {
width: 25px;
height: 18px;
}
.icon-close {
width: 25px;
height: 22px;
}
.hide {
display: none;
}
}
/* Footer */
.footer-nav a {
font-size: var(--font-size-footer);
color: var(--color-text-body);
}
.footer-nav :is(a:hover, a:focus-visible) {
color: var(--color-main-accent);
outline: 0;
}
.nav-list-footer {
display: flex;
gap: var(--size-400);
}
.footer-columns {
display: grid;
gap: 1rem;
}
@media (min-width: 67em) {
.footer-columns {
grid-auto-flow: column;
grid-auto-columns: 1fr;
}
}
/* Section About me */
.grid-cells2 {
display: grid;
gap: var(--size-400);
}
.grid-cells2 > img {
max-height: 20rem;
aspect-ratio: auto;
}
@media (min-width: 46em), (min-width: 67em) {
.grid-cells2 {
grid-template-columns: 1fr 1fr;
}
}
.grid-cells {
display: grid;
justify-content: center;
gap: var(--size-400);
}
.grid-cells > div {
display: flex;
align-items: center;
gap: var(--size-600);
}
.grid-cells svg {
flex-shrink: 0;
width: var(--size-800);
aspect-ratio: 6/7;
fill: var(--color-outline-on-dark);
color: var(--color-outline-on-dark);
}
.grid-cells svg:hover {
fill: var(--color-main-accent);
color: var(--color-main-accent);
}
@media (min-width: 46em), (min-width: 67em) {
.grid-cells {
grid-template-columns: 1fr 1fr;
}
.grid-cells svg {
width: var(--size-900);
}
}