diff --git a/src/_includes/hero.liquid b/src/_includes/hero.liquid index 796d88c..0d023d2 100644 --- a/src/_includes/hero.liquid +++ b/src/_includes/hero.liquid @@ -5,4 +5,8 @@ {{ section.templateContent }} {% render 'partials/components/socials', socials: author.socials, mail: author.mail, showLabel: true %} - \ No newline at end of file + + +{% css %} + {% include "css/components/hero.css" %} +{% endcss %} \ No newline at end of file diff --git a/src/_includes/layouts/base.html b/src/_includes/layouts/base.html index dbf6665..383f757 100644 --- a/src/_includes/layouts/base.html +++ b/src/_includes/layouts/base.html @@ -7,8 +7,14 @@ {% include "css/reset.css" %} {% include "css/variables.css" %} {% include "css/main.css" %} - {% include "css/header.css" %} - {% include "css/footer.css" %} + + {% include "css/components/button.css" %} + {% include "css/components/skip-link.css" %} + {% include "css/components/socials-list.css" %} + {% include "css/components/projects.css" %} + {% include "css/components/timeline.css" %} + {% include "css/components/competences.css" %} + {% include "css/components/download.css" %} {% endcss %} diff --git a/src/_includes/partials/footer.liquid b/src/_includes/partials/footer.liquid index 65655ff..885c6a1 100644 --- a/src/_includes/partials/footer.liquid +++ b/src/_includes/partials/footer.liquid @@ -11,4 +11,8 @@ {% render 'partials/components/socials', socials: author.socials, mail: author.mail, showLabel: false %} - \ No newline at end of file + + +{% css %} + {% include "css/footer.css" %} +{% endcss %} \ No newline at end of file diff --git a/src/_includes/partials/header.liquid b/src/_includes/partials/header.liquid index 1345225..1d3dd01 100644 --- a/src/_includes/partials/header.liquid +++ b/src/_includes/partials/header.liquid @@ -4,4 +4,8 @@
{% include "partials/navigation" %}
- \ No newline at end of file + + +{% css %} + {% include "css/header.css" %} +{% endcss %} \ No newline at end of file diff --git a/src/css/components/button.css b/src/css/components/button.css new file mode 100644 index 0000000..6bbf442 --- /dev/null +++ b/src/css/components/button.css @@ -0,0 +1,40 @@ +button, +.btn { + --hover: rgba(var(--neutral-highest), 0.8); + --active: rgba(var(--neutral-highest), 0.8); + cursor: pointer; + border-radius: var(--border-radius); + width: fit-content; + max-width: 100%; + min-height: 2.5rem; + max-height: none; + color: rgb(var(--neutral-lower)); + background-color: var(--text); + font-size: 1rem; + line-height: 1.5rem; + font-weight: var(--font-weight-semibold); + font-stretch: var(--font-stretch, condensed); + border: none; + flex-direction: row; + align-items: center; + padding: 0.5rem 1rem; + text-decoration: none; + transition: background-color 0.1s ease-in-out; + display: inline-flex; +} +button:disabled, +.btn:disabled { + --hover: inherit; + --active: inherit; + color: #929292; + cursor: not-allowed; + background-color: #e5e5e5; +} +button:not(:disabled):hover, +.btn:not(:disabled):hover { + background-color: var(--hover); +} +button:not(:disabled):active, +.btn:not(:disabled):active { + background-color: var(--active); +} \ No newline at end of file diff --git a/src/css/components/competences.css b/src/css/components/competences.css new file mode 100644 index 0000000..fa16ceb --- /dev/null +++ b/src/css/components/competences.css @@ -0,0 +1,12 @@ +.competences-section .col { + width: 100%; + margin-bottom: 2rem; +} +@media screen and (min-width: 991px) { + .competences-section > div { + flex-direction: row; + } + .competences-section .col { + width: 40%; + } +} \ No newline at end of file diff --git a/src/css/components/download.css b/src/css/components/download.css new file mode 100644 index 0000000..4e1c570 --- /dev/null +++ b/src/css/components/download.css @@ -0,0 +1,9 @@ +.download { + gap: 0.8rem; +} +.download p { + font-size: 1.4rem; +} +.btn-download { + color: rgb(var(--brand-secondary-lower)); +} \ No newline at end of file diff --git a/src/css/components/hero.css b/src/css/components/hero.css new file mode 100644 index 0000000..0777107 --- /dev/null +++ b/src/css/components/hero.css @@ -0,0 +1,27 @@ +.hero { + height: 90svh; +} +.hero div { + text-align: center; + flex-direction: column; + justify-content: end; + align-items: center; + display: flex; +} +.hero p { + max-width: 48ch; +} +@media screen and (min-width: 768px) { + .hero div { + text-align: start; + align-items: start; + } +} +.hero-title { + font-size: 1.8rem; +} +@media screen and (min-width: 768px) { + .hero-title { + font-size: 4rem; + } +} \ No newline at end of file diff --git a/src/css/components/projects.css b/src/css/components/projects.css new file mode 100644 index 0000000..4822daf --- /dev/null +++ b/src/css/components/projects.css @@ -0,0 +1,44 @@ +.project-grid { + grid-template-columns: repeat(auto-fit, minmax(15rem, 1fr)); + gap: 1rem; + display: grid; +} +.project-grid li { + border-radius: var(--border-radius); + overflow: hidden; +} +.card { + --background: url(https://placehold.co/200x150); + z-index: 1; + background: var(--background); + background-repeat: no-repeat; + background-size: cover; + flex-direction: column; + justify-content: space-between; + gap: 2.5rem; + height: 100%; + padding: 0.4rem; + display: flex; + position: relative; +} +.card a:hover { + color: #3a3a3a; + transition: color 0.2s ease-in-out; +} +.card a:before, +.card a:after { + --icon-size: 1.2rem; +} +.card .top { + justify-content: space-between; + width: 100%; + display: flex; +} +.card .links { + align-self: flex-end; + gap: 0.35rem; + display: flex; +} +.card .content { + padding: 1rem 0.4rem 0; +} \ No newline at end of file diff --git a/src/css/components/skip-link.css b/src/css/components/skip-link.css new file mode 100644 index 0000000..50784a3 --- /dev/null +++ b/src/css/components/skip-link.css @@ -0,0 +1,17 @@ +body > a { + z-index: 99999; + padding: 0.4rem 1rem; + position: absolute; + inset-block-start: 0.3rem; + inset-inline-start: 0.3rem; +} +body > a:not(:focus) { + size: 1px; + white-space: nowrap; + clip: rect(0 0 0 0); + clip-path: inset(50%); + border: 0; + margin: -1px; + padding: 0; + overflow: hidden; +} \ No newline at end of file diff --git a/src/css/components/socials-list.css b/src/css/components/socials-list.css new file mode 100644 index 0000000..37d8688 --- /dev/null +++ b/src/css/components/socials-list.css @@ -0,0 +1,19 @@ +.socials-list { + gap: 0.2rem; + margin-block-start: 1rem; +} +.socials-list--label { + gap: 2rem; +} +.socials-list--label a { + --item-color: black; + --icon-color: #262626; + text-underline-offset: 0.25rem; + font-weight: 500; + -webkit-text-decoration: underline #262626; + text-decoration: underline #262626; +} +.socials-list--label a:hover { + --item-color: var(--text-2); + --icon-color: var(--text-2); +} \ No newline at end of file diff --git a/src/css/components/timeline.css b/src/css/components/timeline.css new file mode 100644 index 0000000..ad3fe25 --- /dev/null +++ b/src/css/components/timeline.css @@ -0,0 +1,45 @@ +.timeline { + flex-direction: column; + margin-top: 1.4rem; + padding: 0; + display: flex; + position: relative; +} +.timeline:before { + content: ""; + background-color: rgb(var(--neutral-lower)); + inline-size: 6px; + margin-inline-start: -3px; + position: absolute; + inset: 1.5rem 0 0 1.5rem; +} +.timeline li { + --size: 3rem; + padding: 0 0 0 calc(var(--size) + 0.8rem); + margin: 1.4rem 0; + position: relative; + list-style: none; +} +.timeline li:last-child { + margin-bottom: 3rem; +} +.timeline li:first-child { + margin-top: -20px; +} +.timeline li:before { + content: ""; + aspect-ratio: 1; + inline-size: var(--size); + background-color: rgb(var(--neutral-lower)); + border: 6px solid rgb(var(--brand-secondary-medium)); + z-index: 1; + border-radius: 50%; + transition: all 0.2s ease-in-out; + position: absolute; + inset-block-end: 50%; + inset-inline-start: 0; + transform: translateY(50%); +} +.timeline li:hover:before { + border-color: rgb(var(--brand-secondary-high)); +} \ No newline at end of file diff --git a/src/css/main.css b/src/css/main.css index fb5db21..4edac2b 100644 --- a/src/css/main.css +++ b/src/css/main.css @@ -4,6 +4,9 @@ :where(h1, h2, h3, h4, h5, h6, p) { margin: 0; } +:where(html:focus-within) { + scroll-behavior: smooth; +} /* Utilities */ .wrapper, @@ -99,67 +102,6 @@ outline-style: solid; } -/* Button */ -button, -.btn { - --hover: rgba(var(--neutral-highest), 0.8); - --active: rgba(var(--neutral-highest), 0.8); - cursor: pointer; - border-radius: var(--border-radius); - width: fit-content; - max-width: 100%; - min-height: 2.5rem; - max-height: none; - color: rgb(var(--neutral-lower)); - background-color: var(--text); - font-size: 1rem; - line-height: 1.5rem; - font-weight: var(--font-weight-semibold); - font-stretch: var(--font-stretch, condensed); - border: none; - flex-direction: row; - align-items: center; - padding: 0.5rem 1rem; - text-decoration: none; - transition: background-color 0.1s ease-in-out; - display: inline-flex; -} -button:disabled, -.btn:disabled { - --hover: inherit; - --active: inherit; - color: #929292; - cursor: not-allowed; - background-color: #e5e5e5; -} -button:not(:disabled):hover, -.btn:not(:disabled):hover { - background-color: var(--hover); -} -button:not(:disabled):active, -.btn:not(:disabled):active { - background-color: var(--active); -} - -/* Skip link */ -body > a { - z-index: 99999; - padding: 0.4rem 1rem; - position: absolute; - inset-block-start: 0.3rem; - inset-inline-start: 0.3rem; -} -body > a:not(:focus) { - size: 1px; - white-space: nowrap; - clip: rect(0 0 0 0); - clip-path: inset(50%); - border: 0; - margin: -1px; - padding: 0; - overflow: hidden; -} - /* Icons */ .icon-download:before, .icon-download:after { @@ -301,164 +243,7 @@ main li { margin: 0; padding: 0; } -.hero { - height: 90svh; -} -.hero div { - text-align: center; - flex-direction: column; - justify-content: end; - align-items: center; - display: flex; -} -.hero p { - max-width: 48ch; -} -@media screen and (min-width: 768px) { - .hero div { - text-align: start; - align-items: start; - } -} -.hero-title { - font-size: 1.8rem; -} -@media screen and (min-width: 768px) { - .hero-title { - font-size: 4rem; - } -} -.project-grid { - grid-template-columns: repeat(auto-fit, minmax(15rem, 1fr)); - gap: 1rem; - display: grid; -} -.project-grid li { - border-radius: var(--border-radius); - overflow: hidden; -} -.card { - --background: url(https://placehold.co/200x150); - z-index: 1; - background: var(--background); - background-repeat: no-repeat; - background-size: cover; - flex-direction: column; - justify-content: space-between; - gap: 2.5rem; - height: 100%; - padding: 0.4rem; - display: flex; - position: relative; -} -.card a:hover { - color: #3a3a3a; - transition: color 0.2s ease-in-out; -} -.card a:before, -.card a:after { - --icon-size: 1.2rem; -} -.card .top { - justify-content: space-between; - width: 100%; - display: flex; -} -.card .links { - align-self: flex-end; - gap: 0.35rem; - display: flex; -} -.card .content { - padding: 1rem 0.4rem 0; -} section { margin-block: 3.5rem; padding-block: 2rem; -} -.socials-list { - gap: 0.2rem; - margin-block-start: 1rem; -} -.socials-list--label { - gap: 2rem; -} -.socials-list--label a { - --item-color: black; - --icon-color: #262626; - text-underline-offset: 0.25rem; - font-weight: 500; - -webkit-text-decoration: underline #262626; - text-decoration: underline #262626; -} -.socials-list--label a:hover { - --item-color: var(--text-2); - --icon-color: var(--text-2); -} -.timeline { - flex-direction: column; - margin-top: 1.4rem; - padding: 0; - display: flex; - position: relative; -} -.timeline:before { - content: ""; - background-color: rgb(var(--neutral-lower)); - inline-size: 6px; - margin-inline-start: -3px; - position: absolute; - inset: 1.5rem 0 0 1.5rem; -} -.timeline li { - --size: 3rem; - padding: 0 0 0 calc(var(--size) + 0.8rem); - margin: 1.4rem 0; - position: relative; - list-style: none; -} -.timeline li:last-child { - margin-bottom: 3rem; -} -.timeline li:first-child { - margin-top: -20px; -} -.timeline li:before { - content: ""; - aspect-ratio: 1; - inline-size: var(--size); - background-color: rgb(var(--neutral-lower)); - border: 6px solid rgb(var(--brand-secondary-medium)); - z-index: 1; - border-radius: 50%; - transition: all 0.2s ease-in-out; - position: absolute; - inset-block-end: 50%; - inset-inline-start: 0; - transform: translateY(50%); -} -.timeline li:hover:before { - border-color: rgb(var(--brand-secondary-high)); -} -.download { - gap: 0.8rem; -} -.download p { - font-size: 1.4rem; -} -.btn-download { - color: rgb(var(--brand-secondary-lower)); -} -.competences-section .col { - width: 100%; - margin-bottom: 2rem; -} -@media screen and (min-width: 991px) { - .competences-section > div { - flex-direction: row; - } - .competences-section .col { - width: 40%; - } -} - +} \ No newline at end of file diff --git a/src/css/reset.css b/src/css/reset.css index 91a8c21..f4111a5 100644 --- a/src/css/reset.css +++ b/src/css/reset.css @@ -225,6 +225,7 @@ */ :where([type="search"]) { -webkit-appearance: textfield; + appearance: textfield; } /* iOS only */