Files
TD_Portfolio/style.css
T
Tomas Dvorak 882f91ebf6 first commit
2025-01-04 11:45:15 +01:00

730 lines
14 KiB
CSS

:root {
--background-dark: #111111;
--on-background-dark: hsl(0, 0%, 100%);
--surface-dark: #111111;
--on-surface-dark: hsl(0, 0%, 100%);
--on-surface-variant-dark: hsl(0, 0%, 100%);
--surface-container-low-dark: #1d1d1d;
--surface-container-dark: rgb(19, 19, 19);
--surface-bright-dark: hsl(0, 85%, 3%);
--primary-dark: hsl(0, 0%, 100%);
--on-primary-dark: #202020;
--outline-dark: hsl(0, 0%, 100%);
--outline-variant-dark: hsl(0, 0%, 73%);
--font-primary: 'Open Sans', sans-serif;
--font-secondary: 'Noto Sans', sans-serif;
--base-font-size: 62.5%;
--display-large: 5.7rem;
--display-medium: 4.5rem;
--display-small: 3.6rem;
--headline-large: 3.2rem;
--headline-medium: 2.8rem;
--headline-small: 2.4rem;
--title-large: 2rem;
--title-medium: 1.6rem;
--title-small: 1.4rem;
--label-large: 1.4rem;
--label-medium: 1.2rem;
--label-small: 1.1rem;
--body-large: 1.6rem;
--body-medium: 1.4rem;
--body-small: 1.2rem;
--weight-regular: 400;
--weight-medium: 500;
--radius-extra-small: 4px;
--radius-small: 8px;
--radius-medium: 12px;
--radius-large: 16px;
--radius-full: 500px;
--radius-circle: 50%;
--elevation-1: 0px 1px 3px 1px #00000026, 0px 1px 2px 0px #0000004d;
--section-padding: 24px;
--top-bar-height: 64px;
}
[data-theme="dark"] {
color-scheme: dark;
--background: var(--background-dark);
--on-background: var(--on-background-dark);
--surface: var(--surface-dark);
--on-surface: var(--on-surface-dark);
--on-surface-variant: var(--on-surface-variant-dark);
--surface-container-low: var(--surface-container-low-dark);
--surface-container: var(--surface-container-dark);
--surface-bright: var(--surface-bright-dark);
--primary: var(--primary-dark);
--on-primary: var(--on-primary-dark);
--outline: var(--outline-dark);
--outline-variant: var(--outline-variant-dark);
}
@media (prefers-reduced-motion: no-preference) {
:root {
--motion-duration-short-1: 100ms;
--motion-easing-linear: cubic-bezier(0, 0, 1, 1);
}
}
*,
*::before,
*::after {
margin: 0;
padding: 0;
}
li { list-style: none; }
a,
img,
span,
input,
button,
textarea { display: block; }
a {
color: inherit;
text-decoration: none;
}
img { height: auto; }
input,
button,
textarea {
background: none;
border: none;
font: inherit;
}
input,
textarea { width: 100%; }
button { cursor: pointer; }
textarea { resize: none; }
html {
font-family: var(--font-secondary);
font-size: var(--base-font-size);
scroll-behavior: smooth;
}
body {
background-color: var(--background);
color: var(--on-background);
font-size: var(--body-large);
}
.display-large {
font-family: var(--font-primary);
font-size: var(--display-large);
font-weight: var(--weight-regular);
line-height: 64px;
letter-spacing: -0.25px;
}
.display-medium {
font-family: var(--font-primary);
font-size: var(--display-medium);
font-weight: var(--weight-regular);
line-height: 52px;
}
.display-small {
font-family: var(--font-primary);
font-size: var(--display-small);
font-weight: var(--weight-regular);
line-height: 44px;
}
.headline-large {
font-family: var(--font-primary);
font-size: var(--headline-large);
font-weight: var(--weight-regular);
line-height: 40px;
}
.headline-medium {
font-family: var(--font-primary);
font-size: var(--headline-medium);
font-weight: var(--weight-regular);
line-height: 36px;
}
.headline-small {
font-family: var(--font-primary);
font-size: var(--headline-small);
font-weight: var(--weight-regular);
line-height: 32px;
}
.title-large {
font-family: var(--font-primary);
font-size: var(--title-large);
font-weight: var(--weight-regular);
line-height: 28px;
}
.title-medium {
font-family: var(--font-primary);
font-size: var(--title-medium);
font-weight: var(--weight-medium);
line-height: 24px;
letter-spacing: 0.15px;
}
.title-small {
font-family: var(--font-primary);
font-size: var(--title-small);
font-weight: var(--weight-medium);
line-height: 20px;
letter-spacing: 0.1px;
}
.body-large {
font-size: var(--body-large);
font-weight: var(--weight-regular);
line-height: 24px;
letter-spacing: 0.5px;
}
.body-medium {
font-size: var(--body-medium);
font-weight: var(--weight-regular);
line-height: 20px;
letter-spacing: 0.25px;
}
.body-small {
font-size: var(--body-small);
font-weight: var(--weight-regular);
line-height: 16px;
letter-spacing: 0.4px;
}
.label-large {
font-size: var(--label-large);
font-weight: var(--weight-medium);
line-height: 20px;
letter-spacing: 0.1px;
}
.label-medium {
font-size: var(--label-medium);
font-weight: var(--weight-medium);
line-height: 16px;
letter-spacing: 0.5px;
}
.label-small {
font-size: var(--label-small);
font-weight: var(--weight-medium);
line-height: 16px;
letter-spacing: 0.5px;
}
.material-symbols-outlined {
width: 1em;
height: 1em;
display: block;
font-variation-settings:
'FILL' 0,
'wght' 400,
'GRAD' 0,
'opsz' 24;
}
:has(> .state-layer) {
position: relative;
overflow: hidden;
z-index: 1;
}
.state-layer {
position: absolute;
inset: 0;
background-color: var(--state-layer-bg);
transition: var(--motion-duration-short-1) var(--motion-easing-linear);
opacity: 0;
}
:has(> .state-layer):hover .state-layer { opacity: 0.08; }
:has(> .state-layer):is(:focus, :focus-visible, :active) .state-layer {
opacity: 0.12;
}
.section { padding-block: var(--section-padding); }
.container { padding-inline: 16px; }
.img-holder {
aspect-ratio: var(--width) / var(--height);
background-color: transparent;
overflow: hidden;
}
.img-cover {
width: 100%;
height: 100%;
object-fit: cover;
}
.tab-content:not(.active) { display: none; }
.section-title { margin-block-end: 16px; font-size: medium;}
.icon-btn {
width: 40px;
height: 40px;
display: grid;
place-items: center;
}
.btn {
height: 40px;
display: grid;
place-items: center;
padding-inline: 24px;
border-radius: var(--radius-full);
background-color: var(--primary);
color: var(--on-primary);
font-weight: var(--weight-medium);
overflow: hidden;
--state-layer-bg: var(--on-primary);
}
.btn:hover:not(:focus) { box-shadow: var(--elevation-1); }
.primary-tabs {
background-color: var(--background);
margin-block-start: 24px;
margin-inline: 16px;
display: grid;
grid-template-columns: repeat(3, 1fr);
justify-content: center;
border-block-end: 1px solid var(--outline-variant);
}
.tab-btn {
height: 48px;
width: 100%;
display: grid;
place-content: center;
background-color: var(--surface);
color: var(--on-surface-variant);
--state-layer-bg: var(--on-surface-variant);
}
.tab-btn:first-child{
border-top-left-radius: 12px;
}
.tab-btn:last-child{
border-top-right-radius: 12px;
}
.tab-btn.active {
color: var(--primary);
--state-layer-bg: var(--primary);
}
.tab-text {
position: relative;
height: 48px;
line-height: 48px;
}
.tab-text::after {
content: "";
position: absolute;
bottom: 0;
left: 0;
width: 100%;
height: 3px;
border-radius: 3px 3px 0 0;
background-color: var(--primary);
opacity: 0;
}
.tab-btn.active .tab-text::after { opacity: 1; }
.chip {
height: 32px;
max-width: max-content;
display: flex;
justify-content: center;
align-items: center;
gap: 8px;
padding-inline: 16px;
border: 1px solid var(--outline);
border-radius: var(--radius-small);
background-color: var(--surface);
color: var(--on-surface-variant);
--state-layer-bg: var(--on-surface-variant);
}
.chip .material-symbols-outlined { font-size: 1.8rem; }
.card {
background-color: var(--surface-container-low);
border-radius: var(--radius-medium);
padding: 16px;
display: grid;
gap: 16px;
--state-layer-bg: var(--on-surface);
}
.card-banner { border-radius: var(--radius-medium); }
.card-content {
display: grid;
gap: 4px;
}
.card-subtitle { color: var(--on-surface-variant); }
.card-title { color: var(--on-surface); }
.input-field,
.textarea {
color: var(--on-surface);
padding: 13px 16px;
box-shadow: inset 0 0 0 1px var(--outline);
border-radius: var(--radius-extra-small);
outline: none;
transition: box-shadow var(--motion-duration-short-1) var(--motion-easing-linear);
}
.textarea {
height: 120px;
padding: 16px;
}
:where(.input-field, .textarea)::placeholder { color: var(--on-surface-variant); }
:where(.input-field, .textarea):focus { box-shadow: inset 0 0 0 2px var(--primary); }
.topbar {
background-color: var(--background);
position: fixed;
top: 0;
left: 0;
width: 100%;
height: var(--top-bar-height);
display: flex;
justify-content: space-between;
align-items: center;
padding-inline: 16px;
z-index: 4;
}
[data-theme="dark"] .logo .light,
[data-theme="light"] .logo .dark { display: none; }
[data-theme="dark"] .logo .dark,
[data-theme="light"] .logo .light { display: block; }
.theme-btn {
color: var(--on-surface-variant);
--state-layer-bg: var(--on-surface-variant);
border-radius: var(--radius-full);
overflow: hidden;
}
[data-theme="dark"] .theme-btn .dark,
[data-theme="light"] .theme-btn .light { display: none; }
.hero { padding-block-start: calc(var(--top-bar-height) + 24px); }
.hero .container {
display: grid;
align-items: center;
gap: 24px;
}
.hero-banner {
width: 240px;
border-radius: var(--radius-circle);
}
.hero-content { max-width: 500px; }
.hero .section-subtitle { color: var(--on-surface-variant); }
.hero .section-text {
margin-block: 5px 16px;
color: var(--on-surface-variant);
}
.hero .btn-wrapper {
display: flex;
flex-wrap: wrap;
gap: 8px;
}
.about-card {
background-color: var(--surface-container-low);
color: var(--on-surface-variant);
margin-inline: 16px;
padding: 16px;
margin-block-start: 24px;
border-radius: var(--radius-large);
}
.about-card .card-title { color: var(--on-surface); }
.about-card .card-text {
margin-block: 12px;
padding-block: 12px;
border-block: 1px solid var(--outline-variant);
}
.about-list {
display: grid;
gap: 12px;
}
.list-item {
display: flex;
align-items: center;
gap: 4px;
}
.project{
border-top-left-radius: 10px;
}
.project-list {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(260px, 1fr));
gap: 12px;
}
.resume-tab .list {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
gap: 24px;
margin-block-end: 28px;
}
.resume-card {
display: grid;
gap: 4px;
}
.resume-card .card-subtitle { color: var(--primary); }
.resume-card .card-text { color: var(--on-surface-variant); }
.resume-bottom-list {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(150px, 1fr));
gap: 12px;
}
.resume-bottom-item {
background-color: var(--surface-container);
display: flex;
align-items: center;
gap: 8px;
padding: 12px;
border-radius: var(--radius-small);
}
.resume-bottom-item .icon { height: 28px; }
.contact-tab { padding-block-end: 0; }
.contact-tab .container { padding-block-end: 24px; }
.contact-info,
.contact-info-list {
display: grid;
gap: 12px;
}
.contact-info { margin-block-end: 24px; }
.contact-info-list {
padding-block-end: 12px;
border-block-end: 1px solid var(--outline-variant);
}
.contact-info-item {
display: flex;
align-items: center;
gap: 12px;
}
.contact-info .icon-box {
width: 48px;
height: 48px;
flex-shrink: 0;
display: grid;
place-items: center;
color: var(--on-surface-variant);
}
.info-content {
display: grid;
gap: 4px;
}
.info-title {
color: var(--on-surface-variant);
opacity: 0.6;
}
.info-text { color: var(--on-surface-variant); }
.social-list {
display: flex;
gap: 12px;
}
.social-item { padding: 12px; }
.input-wrapper {
margin-block-start: 16px;
display: grid;
gap: 10px;
}
.contact-form {
background-color: var(--surface-container);
padding: 16px;
margin-block-end: 16px;
border-radius: var(--radius-medium);
}
.footer .container {
text-align: center;
padding: 16px;
border-block-start: 1px solid var(--outline-variant);
}
@media (min-width: 768px) {
.article {
position: relative;
display: grid;
grid-template-columns: 0.5fr 1fr;
align-items: flex-start;
}
.about-card,
.primary-tabs {
position: sticky;
top: 64px;
}
.primary-tabs { z-index: 2; }
.hero .container { grid-template-columns: 0.2fr 1fr; }
}
@media (min-width: 1200px) {
.container,
.article {
max-width: 1128px;
margin-inline: auto;
}
.about-card { margin-inline: 8px; }
.contact-tab .container {
display: grid;
align-items: flex-start;
grid-template-columns: 0.6fr 1fr;
gap: 24px;
}
}
#cursor {
position: absolute;
background-color: #fff;
height: 10px;
width: 10px;
border-radius: 50%;
transform: translate(-50%, -50%);
pointer-events: none;
transition: background-color 0.3s ease;
}
a:hover {
color: rgba(255, 255, 255, 0.616);
font-weight: bold;
transform: scale(1.02);
cursor: pointer;
transition: .8s;
}
.send-btn {
background-color: #fff;
color: #000;
}
.send-btn:active {
background-color: #333;
color: #fff;
}
.flags {
margin: 10px auto 20px;
}
.flags img {
cursor: pointer;
display: block;
margin-left: auto;
margin-right: auto;
width: 6%;
}
.home__button {
width: 90%;
border: 2px white solid;
color: white;
font-size: 14px;
text-align: center;
}
.button {
display: inline-block;
color: white;
padding: 1rem 2rem;
border-radius: .5rem;
transition: .8s;
text-align: center;
}
.button:hover {
background-color: white;
color: black;
font-weight: bolder;
font-size: medium;
}
.cv{
margin: auto;
width: 50%;
padding: 10px 0px 40px;
}