Adding deploy folder.
50
deploy/assets/css/chapter.css
Executable file
|
|
@ -0,0 +1,50 @@
|
|||
/*****************************
|
||||
* CHAPTER
|
||||
* Styling for chapter pages.
|
||||
*****************************/
|
||||
|
||||
/* Removing all padding, margins, etc. The content covers the entire viewing area */
|
||||
body,
|
||||
.md-content__inner,
|
||||
.md-main__inner,
|
||||
.md-grid {
|
||||
box-sizing: border-box;
|
||||
margin: 0;
|
||||
max-width: none;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
body {
|
||||
align-items: center;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
min-height: 100%;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
article,
|
||||
.md-container,
|
||||
div.md-content {
|
||||
margin: 0;
|
||||
min-height: 100%;
|
||||
padding: 0;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
article.md-content__inner.md-typeset:before,
|
||||
article.md-content__inner.md-typeset:after {
|
||||
content: none;
|
||||
}
|
||||
|
||||
/* Hide announcements bar on chapter pages */
|
||||
header,
|
||||
[data-md-component="skip"],
|
||||
[data-md-component="announce"],
|
||||
.md-content .md-typeset h1 {
|
||||
display: none !important;
|
||||
}
|
||||
|
||||
/* Hide the repo stuff */
|
||||
.md-source {
|
||||
display: none !important;
|
||||
}
|
||||
129
deploy/assets/css/index.css
Executable file
|
|
@ -0,0 +1,129 @@
|
|||
@import url("theme.css");
|
||||
|
||||
/*****************************
|
||||
* INDEX
|
||||
* Styling for the homepage.
|
||||
*****************************/
|
||||
|
||||
.content {
|
||||
align-items: center;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
justify-content: flex-start;
|
||||
margin: 0 auto;
|
||||
max-width: 900px;
|
||||
padding: 0;
|
||||
position: relative;
|
||||
width: 100%;
|
||||
|
||||
.faces {
|
||||
align-items: center;
|
||||
flex-grow: 0;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
min-height: 320px;
|
||||
margin-top: 0;
|
||||
position: relative;
|
||||
width: 100%;
|
||||
|
||||
.slide {
|
||||
border-radius: 10px;
|
||||
left: 50%;
|
||||
max-width: 600px;
|
||||
opacity: 0;
|
||||
position: absolute;
|
||||
transform: translate(-50%, -50%);
|
||||
top: 50%;
|
||||
visibility: hidden;
|
||||
width: 80%;
|
||||
z-index: 1;
|
||||
|
||||
img {
|
||||
border-radius: 10px;
|
||||
display: block;
|
||||
height: auto;
|
||||
width: 100%;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
ul {
|
||||
align-items: center;
|
||||
display: flex;
|
||||
height: 1.4em;
|
||||
justify-content: center;
|
||||
left: 50%;
|
||||
line-height: 1.4em;
|
||||
list-style: none;
|
||||
margin: 0 !important;
|
||||
max-width: 900px;
|
||||
overflow: visible;
|
||||
pointer-events: none;
|
||||
padding: 0;
|
||||
position: absolute;
|
||||
text-align: center;
|
||||
top: 20px;
|
||||
transform: translateX(-50%);
|
||||
width: 100%;
|
||||
z-index: 0;
|
||||
|
||||
li {
|
||||
align-items: center;
|
||||
box-sizing: border-box;
|
||||
display: flex;
|
||||
font-size: 15vw;
|
||||
inset: 0;
|
||||
justify-content: center;
|
||||
margin: 0 !important;
|
||||
padding: 0;
|
||||
pointer-events: auto;
|
||||
position: absolute;
|
||||
text-align: center;
|
||||
white-space: nowrap;
|
||||
width: 100%;
|
||||
|
||||
a {
|
||||
text-decoration: none !important;
|
||||
}
|
||||
|
||||
&:hover {
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
&:nth-child(2) {
|
||||
font-family: var(--words-title);
|
||||
}
|
||||
|
||||
&:nth-child(3) {
|
||||
font-family: var(--visuals-title);
|
||||
}
|
||||
|
||||
&:nth-child(4) {
|
||||
font-family: var(--technical-title);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.hero {
|
||||
align-items: center;
|
||||
display: flex;
|
||||
height: 100vh;
|
||||
justify-content: center;
|
||||
margin: 0;
|
||||
overflow: hidden;
|
||||
padding: 0;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.hidden {
|
||||
display: none;
|
||||
}
|
||||
|
||||
footer {
|
||||
background: repeating-linear-gradient(0deg, transparent, transparent 19px, rgba(75, 85, 99, 0.08) 19px, rgba(75, 85, 99, 0.08) 20px, transparent 20px, transparent 39px, rgba(75, 85, 99, 0.08) 39px, rgba(75, 85, 99, 0.08) 40px),
|
||||
repeating-linear-gradient(90deg, transparent, transparent 19px, rgba(75, 85, 99, 0.08) 19px, rgba(75, 85, 99, 0.08) 20px, transparent 20px, transparent 39px, rgba(75, 85, 99, 0.08) 39px, rgba(75, 85, 99, 0.08) 40px),
|
||||
radial-gradient(circle at 20px 20px, rgba(55, 65, 81, 0.12) 2px, transparent 2px),
|
||||
radial-gradient(circle at 40px 40px, rgba(55, 65, 81, 0.12) 2px, transparent 2px);
|
||||
font-family: var(--general-sans);
|
||||
}
|
||||
538
deploy/assets/css/resume.css
Executable file
|
|
@ -0,0 +1,538 @@
|
|||
@import url("theme.css");
|
||||
|
||||
/*****************************
|
||||
* RESUME
|
||||
* Styling for the resume page.
|
||||
*****************************/
|
||||
|
||||
* {
|
||||
z-index: 1;
|
||||
}
|
||||
|
||||
body {
|
||||
color: var(--dark-grey);
|
||||
font-family: var(--general-sans);
|
||||
|
||||
li {
|
||||
/* Remove the default styles for grids */
|
||||
border: none !important;
|
||||
|
||||
&:hover {
|
||||
box-shadow: none !important;
|
||||
}
|
||||
}
|
||||
|
||||
.twemoji {
|
||||
--md-icon-size: 1.2rem !important;
|
||||
vertical-align: middle !important;
|
||||
}
|
||||
}
|
||||
|
||||
/*****************************/
|
||||
|
||||
#experience {
|
||||
min-height: 80vh;
|
||||
|
||||
.cards {
|
||||
padding: 1rem;
|
||||
|
||||
h2 {
|
||||
color: var(--dark-grey);
|
||||
font-family: var(--general-sans);
|
||||
font-size: 2.5rem;
|
||||
line-height: 1;
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
.company {
|
||||
font-family: var(--general-sans);
|
||||
font-weight: 400;
|
||||
font-size: 1.2rem;
|
||||
|
||||
span {
|
||||
font-size: 0.7rem;
|
||||
font-weight: 400;
|
||||
margin: 0 0 0 25px;
|
||||
}
|
||||
}
|
||||
|
||||
.job-blurb {
|
||||
font-family: var(--general-serif);
|
||||
font-size: 1.2rem;
|
||||
font-variation-settings: "opsz" 8;
|
||||
font-weight: 700;
|
||||
line-height: 1.5;
|
||||
margin-bottom: 30px;
|
||||
margin-top: 30px;
|
||||
}
|
||||
|
||||
.job-achievements {
|
||||
font-family: var(--general-serif);
|
||||
font-variation-settings: "opsz" 8;
|
||||
|
||||
h5 {
|
||||
color: var(--dark-grey);
|
||||
cursor: pointer;
|
||||
font-size: 0.9rem;
|
||||
margin: 0;
|
||||
text-transform: none;
|
||||
}
|
||||
|
||||
p {
|
||||
margin: 0 0 10px 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.mambu {
|
||||
background-image: url("../media/mambu-logo-272x263.png");
|
||||
}
|
||||
|
||||
.spread {
|
||||
background-image: url("../media/spread-ai-logo-125x144.png");
|
||||
}
|
||||
|
||||
.mambu,
|
||||
.spread {
|
||||
background-size: contain;
|
||||
background-repeat: no-repeat;
|
||||
filter: saturate(0);
|
||||
height: 112px;
|
||||
margin-left: 3rem;
|
||||
margin-right: 3rem;
|
||||
position: relative;
|
||||
|
||||
&::after {
|
||||
background: rgba(250, 250, 250, 0.70);
|
||||
bottom: 0;
|
||||
content: '';
|
||||
left: 0;
|
||||
pointer-events: none;
|
||||
position: absolute;
|
||||
right: 0;
|
||||
top: 0;
|
||||
z-index: -5;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#hero {
|
||||
align-items: center;
|
||||
background-image: url('../media/face-1276x1276.webp');
|
||||
background-position: center center;
|
||||
background-repeat: no-repeat;
|
||||
background-size: 50vh;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
height: 100vh;
|
||||
justify-content: center;
|
||||
text-align: center;
|
||||
z-index: -5;
|
||||
|
||||
&::after {
|
||||
background: rgba(250, 250, 250, 0.95);
|
||||
bottom: 0;
|
||||
content: '';
|
||||
position: absolute;
|
||||
left: 0;
|
||||
pointer-events: none;
|
||||
right: 0;
|
||||
top: 0;
|
||||
}
|
||||
|
||||
.title {
|
||||
font-family: var(--general-serif);
|
||||
font-size: 5rem;
|
||||
font-variation-settings: "opsz" 8;
|
||||
font-weight: 900;
|
||||
}
|
||||
|
||||
.metadetails {
|
||||
border-bottom: 0.5px solid var(--light-grey);
|
||||
border-top: 0.5px solid var(--light-grey);
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
gap: 5rem;
|
||||
margin-top: 1rem;
|
||||
|
||||
figcaption {
|
||||
color: var(--dark-grey);
|
||||
font-family: var(--general-sans);
|
||||
font-size: 0.8rem;
|
||||
font-style: normal;
|
||||
font-weight: 400;
|
||||
}
|
||||
|
||||
img {
|
||||
height: 2.5rem;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#learning {
|
||||
margin: 2.5rem;
|
||||
|
||||
.cards {
|
||||
|
||||
ul li {
|
||||
background-color: var(--light-grey);
|
||||
|
||||
figure {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 0.75rem;
|
||||
flex-wrap: wrap;
|
||||
margin: 0;
|
||||
justify-content: center;
|
||||
|
||||
|
||||
img {
|
||||
max-width: 150px;
|
||||
width: 30%;
|
||||
min-width: 100px;
|
||||
height: auto;
|
||||
display: block;
|
||||
padding: 20px;
|
||||
}
|
||||
|
||||
figcaption {
|
||||
color: var(--dark-grey);
|
||||
flex: 1 1 200px;
|
||||
font-family: var(--general-sans);
|
||||
font-size: 0.8rem;
|
||||
font-style: normal;
|
||||
margin: 0;
|
||||
text-align: left;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#skills {
|
||||
margin: 2.5rem;
|
||||
|
||||
.cards {
|
||||
|
||||
ul li {
|
||||
align-items: center;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
font-size: 1.8rem;
|
||||
justify-content: flex-start;
|
||||
padding: 1rem;
|
||||
|
||||
.technical-icons {
|
||||
align-items: center;
|
||||
column-gap: 1.5rem;
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
flex-wrap: wrap;
|
||||
justify-content: center;
|
||||
row-gap: 1.5rem;
|
||||
|
||||
.technical {
|
||||
|
||||
span {
|
||||
align-items: flex-end;
|
||||
display: flex;
|
||||
font-size: 0.7rem;
|
||||
|
||||
img,
|
||||
svg {
|
||||
height: 1rem;
|
||||
margin-right: 5px;
|
||||
max-height: 1rem;
|
||||
max-width: 1rem;
|
||||
object-fit: contain;
|
||||
vertical-align: middle;
|
||||
width: 1rem;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.writing-types {
|
||||
font-size: 0.8rem;
|
||||
justify-content: center;
|
||||
margin-bottom: 0.7rem;
|
||||
text-align: left;
|
||||
|
||||
svg {
|
||||
height: 0.8rem;
|
||||
}
|
||||
}
|
||||
|
||||
.media-tools {
|
||||
figure {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 0.75rem;
|
||||
flex-wrap: wrap;
|
||||
margin: 0;
|
||||
justify-content: center;
|
||||
|
||||
|
||||
img {
|
||||
max-width: 150px;
|
||||
width: 20%;
|
||||
min-width: 100px;
|
||||
height: auto;
|
||||
display: block;
|
||||
padding: 20px;
|
||||
}
|
||||
|
||||
figcaption {
|
||||
color: var(--dark-grey);
|
||||
flex: 1 1 200px;
|
||||
font-family: var(--general-sans);
|
||||
font-size: 0.8rem;
|
||||
font-style: normal;
|
||||
margin: 0;
|
||||
text-align: left;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.ai {
|
||||
grid-gap: 0.4rem;
|
||||
display: grid;
|
||||
grid-template-columns: repeat(2, 1fr);
|
||||
grid-template-rows: repeat(2, 1fr);
|
||||
margin-top: 0;
|
||||
|
||||
img {
|
||||
max-width: 150px;
|
||||
width: 15%;
|
||||
min-width: 100px;
|
||||
height: auto;
|
||||
display: block;
|
||||
padding: 20px;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
h3 {
|
||||
border-bottom: 2px solid var(--dark-grey);
|
||||
color: var(--dark-grey);
|
||||
font-family: var(--general-serif);
|
||||
font-size: 1.2rem;
|
||||
font-variation-settings: "opsz" 8;
|
||||
font-weight: 700;
|
||||
}
|
||||
}
|
||||
|
||||
.faq-container {
|
||||
position: relative;
|
||||
|
||||
#faq-toggle {
|
||||
&:checked {
|
||||
&+.question-icon {
|
||||
.icon.question {
|
||||
opacity: 0;
|
||||
}
|
||||
|
||||
.icon.close {
|
||||
opacity: 1;
|
||||
}
|
||||
}
|
||||
|
||||
&~.faq {
|
||||
opacity: 1;
|
||||
visibility: visible;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.faq {
|
||||
background-color: var(--neutral-grey);
|
||||
border: 2px solid var(--dark-grey);
|
||||
border-radius: 5px;
|
||||
bottom: 50px;
|
||||
opacity: 0;
|
||||
padding: 20px;
|
||||
position: fixed;
|
||||
right: 20px;
|
||||
transition: opacity 0.3s, visibility 0.3s;
|
||||
visibility: hidden;
|
||||
width: 400px;
|
||||
z-index: 999;
|
||||
|
||||
h3 {
|
||||
color: var(--dark-grey);
|
||||
font-family: var(--general-serif);
|
||||
font-size: 1.2rem;
|
||||
font-variation-settings: "opsz" 8;
|
||||
}
|
||||
|
||||
p {
|
||||
font-size: 1rem;
|
||||
}
|
||||
}
|
||||
|
||||
.question-icon {
|
||||
align-items: center;
|
||||
bottom: 30px;
|
||||
cursor: pointer;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
position: fixed;
|
||||
right: 20px;
|
||||
width: 50px;
|
||||
z-index: 1000;
|
||||
|
||||
.icon {
|
||||
font-size: 1rem;
|
||||
position: absolute;
|
||||
transition: opacity 0.3s;
|
||||
}
|
||||
|
||||
.icon.question {
|
||||
opacity: 1;
|
||||
}
|
||||
|
||||
.icon.close {
|
||||
opacity: 0;
|
||||
}
|
||||
}
|
||||
|
||||
.visually-hidden {
|
||||
height: 1px;
|
||||
left: -9999px;
|
||||
overflow: hidden;
|
||||
position: absolute;
|
||||
width: 1px;
|
||||
}
|
||||
}
|
||||
|
||||
.modal-container {
|
||||
align-items: center;
|
||||
background-color: rgba(250, 250, 250, 0.9);
|
||||
display: none;
|
||||
height: 100%;
|
||||
justify-content: center;
|
||||
position: fixed;
|
||||
left: 0;
|
||||
top: 0;
|
||||
width: 100%;
|
||||
z-index: 999;
|
||||
|
||||
&.is-visible {
|
||||
display: flex;
|
||||
}
|
||||
|
||||
.modal {
|
||||
background-color: var(--neutral-grey);
|
||||
border: 2px solid var(--dark-grey);
|
||||
border-radius: 5px;
|
||||
height: 80vh;
|
||||
max-height: 1200px;
|
||||
max-width: 1200px;
|
||||
overflow: auto;
|
||||
position: relative;
|
||||
transition: opacity 0.3s, visibility 0.3s;
|
||||
width: 80vw;
|
||||
z-index: 999;
|
||||
|
||||
.body-image {
|
||||
border: 1px solid var(--light-grey);
|
||||
margin: 0 1rem;
|
||||
width: 80%;
|
||||
}
|
||||
|
||||
button {
|
||||
background-color: var(--light-grey);
|
||||
color: var(--dark-grey);
|
||||
cursor: pointer;
|
||||
border-radius: 5px;
|
||||
font-size: 0.8rem;
|
||||
font-weight: 700;
|
||||
margin-bottom: 1rem;
|
||||
margin-left: 1rem;
|
||||
padding: 0.5rem;
|
||||
}
|
||||
|
||||
h5 {
|
||||
color: var(--dark-grey);
|
||||
font-size: 0.8rem;
|
||||
font-weight: 900;
|
||||
margin-bottom: 0;
|
||||
}
|
||||
|
||||
ul {
|
||||
list-style-type: square;
|
||||
|
||||
li {
|
||||
font-size: 1rem;
|
||||
;
|
||||
}
|
||||
}
|
||||
|
||||
p {
|
||||
margin-top: 0;
|
||||
}
|
||||
|
||||
h5,
|
||||
ul,
|
||||
p {
|
||||
padding: 0 1rem;
|
||||
}
|
||||
}
|
||||
|
||||
.close-icon {
|
||||
position: absolute;
|
||||
right: 5vw;
|
||||
top: 5vh;
|
||||
|
||||
svg {
|
||||
height: 1.8rem;
|
||||
max-height: none;
|
||||
width: 1.8rem;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
.prefooter {
|
||||
align-items: flex-start;
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
gap: 2rem;
|
||||
justify-content: center;
|
||||
margin-top: 1.3rem;
|
||||
margin-bottom: 0.5rem;
|
||||
text-align: center;
|
||||
|
||||
div {
|
||||
img {
|
||||
height: 1.2rem;
|
||||
}
|
||||
|
||||
&:last-child {
|
||||
img {
|
||||
height: 1.5rem;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.section-menu {
|
||||
align-items: center;
|
||||
background-color: var(--neutral-grey);
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
font-size: 0.7rem;
|
||||
font-weight: 400;
|
||||
justify-content: center;
|
||||
padding: 10px;
|
||||
position: sticky;
|
||||
text-align: center;
|
||||
top: 0;
|
||||
z-index: 100;
|
||||
|
||||
&>*:not(:last-child)::after {
|
||||
content: " | ";
|
||||
margin: 0 8px;
|
||||
}
|
||||
}
|
||||
189
deploy/assets/css/theme.css
Executable file
|
|
@ -0,0 +1,189 @@
|
|||
/*****************************
|
||||
* Theme
|
||||
* Base CSS file
|
||||
------------------------------
|
||||
* COLOURS
|
||||
*****************************/
|
||||
|
||||
/* Colour variables */
|
||||
:root {
|
||||
--background-color: #FAFAFA;
|
||||
--dark-grey: #343434;
|
||||
--darker-grey: #666666;
|
||||
--light-grey: #C9C9C9;
|
||||
--medium-grey: #979797;
|
||||
--neutral-grey: #FAFAFA;
|
||||
}
|
||||
|
||||
/* Adjust Zensical colours */
|
||||
[data-md-color-accent=custom] {
|
||||
--md-accent-bg-color: var(--neutral-grey);
|
||||
--md-default-bg-color: var(--neutral-grey);
|
||||
--md-footer-bg-color: var(--neutral-grey);
|
||||
--md-primary-bg-color: var(--neutral-grey);
|
||||
--md-primary-fg-color: var(--dark-grey);
|
||||
--md-primary-fg-color--dark: var(--dark-grey);
|
||||
--md-primary-fg-color--light: var(--light-grey);
|
||||
}
|
||||
|
||||
/*****************************
|
||||
* FONTS
|
||||
*****************************/
|
||||
|
||||
/* General */
|
||||
@font-face {
|
||||
font-family: 'Source Code';
|
||||
font-style: normal;
|
||||
font-weight: 100 700;
|
||||
src: url('../fonts/source-code.ttf') format('truetype');
|
||||
}
|
||||
|
||||
@font-face {
|
||||
font-family: 'Source Sans';
|
||||
font-style: normal;
|
||||
font-weight: 100 700;
|
||||
src: url('../fonts/source-sans.ttf') format('truetype');
|
||||
}
|
||||
|
||||
@font-face {
|
||||
font-family: 'Source Serif';
|
||||
font-style: normal;
|
||||
font-weight: 100 700;
|
||||
src: url('../fonts/source-serif.ttf') format('truetype');
|
||||
}
|
||||
|
||||
/* Technical */
|
||||
@font-face {
|
||||
font-family: 'DM Mono';
|
||||
font-style: normal;
|
||||
font-weight: 100 700;
|
||||
src: url('../fonts/dm-mono.ttf') format('truetype');
|
||||
}
|
||||
|
||||
@font-face {
|
||||
font-family: 'DM Sans';
|
||||
font-style: normal;
|
||||
font-weight: 100 700;
|
||||
src: url('../fonts/dm-sans.ttf') format('truetype');
|
||||
}
|
||||
|
||||
@font-face {
|
||||
font-family: 'Tiny5';
|
||||
font-style: normal;
|
||||
font-weight: 900;
|
||||
src: url('../fonts/tiny5.ttf') format('truetype');
|
||||
}
|
||||
|
||||
/* Visual */
|
||||
@font-face {
|
||||
font-family: 'Plaster';
|
||||
font-style: normal;
|
||||
font-weight: 900;
|
||||
src: url('../fonts/plaster.ttf') format('truetype');
|
||||
}
|
||||
|
||||
@font-face {
|
||||
font-family: 'Rubik';
|
||||
font-style: normal;
|
||||
font-weight: 100 700;
|
||||
src: url('../fonts/rubik.ttf') format('truetype');
|
||||
}
|
||||
|
||||
/* Words */
|
||||
@font-face {
|
||||
font-family: 'EB Garamond';
|
||||
font-style: italic;
|
||||
font-weight: 100 700;
|
||||
src: url('../fonts/eb-garamond-italics.ttf') format('truetype');
|
||||
}
|
||||
|
||||
@font-face {
|
||||
font-family: 'EB Garamond';
|
||||
font-style: normal;
|
||||
font-weight: 100 700;
|
||||
src: url('../fonts/eb-garamond.ttf') format('truetype');
|
||||
}
|
||||
|
||||
@font-face {
|
||||
font-family: 'Playfair Display SC';
|
||||
font-style: normal;
|
||||
font-weight: 900;
|
||||
src: url('../fonts/playfair-display-sc.ttf') format('truetype');
|
||||
}
|
||||
|
||||
/* Variables */
|
||||
:root {
|
||||
--general-sans: 'Source Sans', sans-serif;
|
||||
--general-serif: 'Source Serif', serif;
|
||||
--general-code: 'Source Code', monospace;
|
||||
--technical-code: 'DM Mono', monospace;
|
||||
--technical-text: 'DM Sans', monospace;
|
||||
--technical-title: 'Tiny5', 'DM Mono', monospace;
|
||||
--visuals-text: 'Rubik', sans-serif;
|
||||
--visuals-title: 'Plaster', 'Rubik', sans-serif;
|
||||
--words-text: 'EB Garamond', serif;
|
||||
--words-title: 'Playfair Display SC', 'EB Garamond', serif;
|
||||
}
|
||||
|
||||
/* Colours and weights */
|
||||
.md-typeset {
|
||||
|
||||
a,
|
||||
figcaption {
|
||||
color: var(--medium-grey);
|
||||
max-width: none;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
a:hover {
|
||||
color: var(--medium-grey);
|
||||
}
|
||||
|
||||
h1,
|
||||
h2,
|
||||
h3,
|
||||
h4,
|
||||
h5,
|
||||
h6 {
|
||||
color: var(--darker-grey);
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
p {
|
||||
color: var(--dark-grey);
|
||||
}
|
||||
}
|
||||
|
||||
/* Sizes */
|
||||
|
||||
p {
|
||||
font-size: 1rem;
|
||||
}
|
||||
|
||||
/*****************************
|
||||
* RULES
|
||||
*****************************/
|
||||
|
||||
body {
|
||||
align-items: center;
|
||||
background-color: var(--neutral-grey);
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
min-height: 100vh;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
/* Footer */
|
||||
footer {
|
||||
align-items: center;
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
justify-content: center;
|
||||
margin-bottom: 5px;
|
||||
padding-bottom: 0;
|
||||
}
|
||||
|
||||
footer>*:not(:last-child)::after {
|
||||
content: " | ";
|
||||
margin: 0 8px;
|
||||
}
|
||||
BIN
deploy/assets/fonts/dm-mono.ttf
Executable file
BIN
deploy/assets/fonts/dm-sans.ttf
Executable file
BIN
deploy/assets/fonts/eb-garamond-italics.ttf
Executable file
BIN
deploy/assets/fonts/eb-garamond.ttf
Executable file
BIN
deploy/assets/fonts/plaster.ttf
Executable file
BIN
deploy/assets/fonts/playfair-display-sc.ttf
Executable file
BIN
deploy/assets/fonts/rubik.ttf
Executable file
BIN
deploy/assets/fonts/source-code.ttf
Executable file
BIN
deploy/assets/fonts/source-sans.ttf
Executable file
BIN
deploy/assets/fonts/source-serif.ttf
Executable file
BIN
deploy/assets/fonts/tiny5.ttf
Executable file
BIN
deploy/assets/images/favicon.png
Executable file
|
After Width: | Height: | Size: 1.8 KiB |
29
deploy/assets/javascripts/LICENSE
Executable file
|
|
@ -0,0 +1,29 @@
|
|||
-------------------------------------------------------------------------------
|
||||
Third-Party licenses
|
||||
-------------------------------------------------------------------------------
|
||||
|
||||
Package: clipboard@2.0.11
|
||||
License: MIT
|
||||
Copyright: Zeno Rocha
|
||||
|
||||
-------------------------------------------------------------------------------
|
||||
|
||||
Package: escape-html@1.0.3
|
||||
License: MIT
|
||||
Copyright: 2012-2013 TJ Holowaychuk
|
||||
2015 Andreas Lubbe
|
||||
2015 Tiancheng "Timothy" Gu
|
||||
|
||||
-------------------------------------------------------------------------------
|
||||
|
||||
Package: focus-visible@5.2.1
|
||||
License: W3C
|
||||
Copyright: WICG
|
||||
|
||||
-------------------------------------------------------------------------------
|
||||
|
||||
Package: rxjs@7.8.2
|
||||
License: Apache-2.0
|
||||
Copyright: 2015-2018 Google, Inc.,
|
||||
2015-2018 Netflix, Inc.,
|
||||
2015-2018 Microsoft Corp. and contributors
|
||||
3
deploy/assets/javascripts/bundle.5fcf0de6.min.js
vendored
Executable file
1
deploy/assets/javascripts/workers/search.e2d2d235.min.js
vendored
Executable file
11
deploy/assets/js/gsap/CSSRulePlugin.min.js
vendored
Executable file
|
|
@ -0,0 +1,11 @@
|
|||
/*!
|
||||
* CSSRulePlugin 3.14.2
|
||||
* https://gsap.com
|
||||
*
|
||||
* @license Copyright 2025, GreenSock. All rights reserved.
|
||||
* Subject to the terms at https://gsap.com/standard-license.
|
||||
* @author: Jack Doyle, jack@greensock.com
|
||||
*/
|
||||
|
||||
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((e=e||self).window=e.window||{})}(this,function(e){"use strict";function h(){return"undefined"!=typeof window}function i(){return t||h()&&(t=window.gsap)&&t.registerPlugin&&t}function j(){return n||(s(),o||console.warn("Please gsap.registerPlugin(CSSPlugin, CSSRulePlugin)")),n}var t,n,c,o,s=function _initCore(e){t=e||i(),h()&&(c=document),t&&(o=t.plugins.css)&&(n=1)},r={version:"3.14.2",name:"cssRule",init:function init(e,t,n,i,s){if(!j()||void 0===e.cssText)return!1;var r=e._gsProxy=e._gsProxy||c.createElement("div");this.ss=e,this.style=r.style,r.style.cssText=e.cssText,o.prototype.init.call(this,r,t,n,i,s)},render:function render(e,t){for(var n,i=t._pt,s=t.style,r=t.ss;i;)i.r(e,i.d),i=i._next;for(n=s.length;-1<--n;)r[s[n]]=s[s[n]]},getRule:function getRule(e){j();var t,n,i,s,r=c.all?"rules":"cssRules",o=c.styleSheets,l=o.length,u=":"===e.charAt(0);for(e=(u?"":",")+e.split("::").join(":").toLowerCase()+",",u&&(s=[]);l--;){try{if(!(n=o[l][r]))continue;t=n.length}catch(e){console.warn(e);continue}for(;-1<--t;)if((i=n[t]).selectorText&&-1!==(","+i.selectorText.split("::").join(":").toLowerCase()+",").indexOf(e)){if(!u)return i.style;s.push(i.style)}}return s},register:s};i()&&t.registerPlugin(r),e.CSSRulePlugin=r,e.default=r;if (typeof(window)==="undefined"||window!==e){Object.defineProperty(e,"__esModule",{value:!0})} else {delete e.default}});
|
||||
|
||||
1
deploy/assets/js/gsap/CSSRulePlugin.min.js.map
Executable file
11
deploy/assets/js/gsap/CustomBounce.min.js
vendored
Executable file
|
|
@ -0,0 +1,11 @@
|
|||
/*!
|
||||
* CustomBounce 3.14.2
|
||||
* https://gsap.com
|
||||
*
|
||||
* @license Copyright 2025, GreenSock. All rights reserved.
|
||||
* Subject to the terms at https://gsap.com/standard-license.
|
||||
* @author: Jack Doyle, jack@greensock.com
|
||||
*/
|
||||
|
||||
!function(e,n){"object"==typeof exports&&"undefined"!=typeof module?n(exports):"function"==typeof define&&define.amd?define(["exports"],n):n((e=e||self).window=e.window||{})}(this,function(e){"use strict";function g(){return n||"undefined"!=typeof window&&(n=window.gsap)&&n.registerPlugin&&n}function h(e){n=g(),(j=n&&n.parseEase("_CE"))?(b=1,n.parseEase("bounce").config=function(e){return"object"==typeof e?t("",e):t("bounce("+e+")",{strength:+e})}):e&&console.warn("Please gsap.registerPlugin(CustomEase, CustomBounce)")}function i(e){var n,t=e.length,o=1/e[t-2];for(n=2;n<t;n+=2)e[n]=~~(e[n]*o*1e3)/1e3;e[t-2]=1}var n,b,j,t=function _create(e,n){b||h(1),n=n||{};var t,o,u,s,r,f,c,a=Math.min(.999,n.strength||.7),g=a,d=(n.squash||0)/100,p=d,l=1/.03,m=.2,C=1,w=.1,y=[0,0,.07,0,.1,1,.1,1],B=[0,0,0,0,.1,0,.1,0];for(r=0;r<200&&(f=w+(m*=g*((g+1)/2)),s=1-(C*=a*a),o=(u=w+.49*m)+.8*(u-(t=w+C/l)),d&&(w+=d,t+=d,u+=d,o+=d,f+=d,c=d/p,B.push(w-d,0,w-d,c,w-d/2,c,w,c,w,0,w,0,w,-.6*c,w+(f-w)/6,0,f,0),y.push(w-d,1,w,1,w,1),d*=a*a),y.push(w,1,t,s,u,s,o,s,f,1,f,1),a*=.95,l=C/(f-o),w=f,!(.999<s));r++);if(n.endAtStart&&"false"!==n.endAtStart){if(u=-.1,y.unshift(u,1,u,1,-.07,0),p)for(u-=d=2.5*p,y.unshift(u,1,u,1,u,1),B.splice(0,6),B.unshift(u,0,u,0,u,1,u+d/2,1,u+d,1,u+d,0,u+d,0,u+d,-.6,u+d+.033,0),r=0;r<B.length;r+=2)B[r]-=u;for(r=0;r<y.length;r+=2)y[r]-=u,y[r+1]=1-y[r+1]}return d&&(i(B),B[2]="C"+B[2],j(n.squashID||e+"-squash","M"+B.join(","))),i(y),y[2]="C"+y[2],j(e,"M"+y.join(","))},o=(CustomBounce.create=function create(e,n){return t(e,n)},CustomBounce.register=function register(e){n=e,h()},CustomBounce);function CustomBounce(e,n){this.ease=t(e,n)}g()&&n.registerPlugin(o),o.version="3.14.2",e.CustomBounce=o,e.default=o;if (typeof(window)==="undefined"||window!==e){Object.defineProperty(e,"__esModule",{value:!0})} else {delete e.default}});
|
||||
|
||||
1
deploy/assets/js/gsap/CustomBounce.min.js.map
Executable file
11
deploy/assets/js/gsap/CustomEase.min.js
vendored
Executable file
1
deploy/assets/js/gsap/CustomEase.min.js.map
Executable file
11
deploy/assets/js/gsap/CustomWiggle.min.js
vendored
Executable file
|
|
@ -0,0 +1,11 @@
|
|||
/*!
|
||||
* CustomWiggle 3.14.2
|
||||
* https://gsap.com
|
||||
*
|
||||
* @license Copyright 2025, GreenSock. All rights reserved.
|
||||
* Subject to the terms at https://gsap.com/standard-license.
|
||||
* @author: Jack Doyle, jack@greensock.com
|
||||
*/
|
||||
|
||||
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((e=e||self).window=e.window||{})}(this,function(e){"use strict";function g(){return n||"undefined"!=typeof window&&(n=window.gsap)&&n.registerPlugin&&n}function i(e){return e}function j(e){if(!C)if(n=g(),M=n&&n.parseEase("_CE")){for(var t in y)y[t]=M("",y[t]);C=1,o("wiggle").config=function(e){return"object"==typeof e?o("",e):o("wiggle("+e+")",{wiggles:+e})}}else e&&console.warn("Please gsap.registerPlugin(CustomEase, CustomWiggle)")}function k(t,e){return"function"!=typeof t&&(t=n.parseEase(t)||M("",t)),t.custom||!e?t:function(e){return 1-t(e)}}var n,C,M,y={easeOut:"M0,1,C0.7,1,0.6,0,1,0",easeInOut:"M0,0,C0.1,0,0.24,1,0.444,1,0.644,1,0.6,0,1,0",anticipate:"M0,0,C0,0.222,0.024,0.386,0,0.4,0.18,0.455,0.65,0.646,0.7,0.67,0.9,0.76,1,0.846,1,1",uniform:"M0,0,C0,0.95,0,1,0,1,0,1,1,1,1,1,1,1,1,0,1,0"},o=function _create(e,t){C||j(1);var n,o,s,u,r,a,g,f,l,c=0|((t=t||{}).wiggles||10),p=1/c,d=p/2,m="anticipate"===t.type,h=y[t.type]||y.easeOut,w=i;if(m&&(w=h,h=y.easeOut),t.timingEase&&(w=k(t.timingEase)),t.amplitudeEase&&(h=k(t.amplitudeEase,!0)),f=[0,0,(a=w(d))/4,0,a/2,g=m?-h(d):h(d),a,g],"random"===t.type){for(f.length=4,n=w(p),o=2*Math.random()-1,l=2;l<c;l++)d=n,g=o,n=w(p*l),o=2*Math.random()-1,s=Math.atan2(o-f[f.length-3],n-f[f.length-4]),u=Math.cos(s)*p,r=Math.sin(s)*p,f.push(d-u,g-r,d,g,d+u,g+r);f.push(n,0,1,0)}else{for(l=1;l<c;l++)f.push(w(d+p/2),g),d+=p,g=(0<g?-1:1)*h(l*p),a=w(d),f.push(w(d-p/2),g,a,g);f.push(w(d+p/4),g,w(d+p/4),0,1,0)}for(l=f.length;-1<--l;)f[l]=~~(1e3*f[l])/1e3;return f[2]="C"+f[2],M(e,"M"+f.join(","))},t=(CustomWiggle.create=function create(e,t){return o(e,t)},CustomWiggle.register=function register(e){n=e,j()},CustomWiggle);function CustomWiggle(e,t){this.ease=o(e,t)}g()&&n.registerPlugin(t),t.version="3.14.2",e.CustomWiggle=t,e.default=t;if (typeof(window)==="undefined"||window!==e){Object.defineProperty(e,"__esModule",{value:!0})} else {delete e.default}});
|
||||
|
||||
1
deploy/assets/js/gsap/CustomWiggle.min.js.map
Executable file
11
deploy/assets/js/gsap/Draggable.min.js
vendored
Executable file
1
deploy/assets/js/gsap/Draggable.min.js.map
Executable file
11
deploy/assets/js/gsap/DrawSVGPlugin.min.js
vendored
Executable file
|
|
@ -0,0 +1,11 @@
|
|||
/*!
|
||||
* DrawSVGPlugin 3.14.2
|
||||
* https://gsap.com
|
||||
*
|
||||
* @license Copyright 2025, GreenSock. All rights reserved.
|
||||
* Subject to the terms at https://gsap.com/standard-license.
|
||||
* @author: Jack Doyle, jack@greensock.com
|
||||
*/
|
||||
|
||||
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((e=e||self).window=e.window||{})}(this,function(e){"use strict";function l(){return"undefined"!=typeof window}function m(){return t||l()&&(t=window.gsap)&&t.registerPlugin&&t}function p(e){return Math.round(1e4*e)/1e4}function q(e){return parseFloat(e)||0}function r(e,t){var r=q(e);return~e.indexOf("%")?r/100*t:r}function s(e,t){return q(e.getAttribute(t))}function u(e,t,r,n,s,i){return D(Math.pow((q(r)-q(e))*s,2)+Math.pow((q(n)-q(t))*i,2))}function v(e){return console.warn(e)}function w(e){return"non-scaling-stroke"===e.getAttribute("vector-effect")}function z(e){if(!(e=k(e)[0]))return 0;var t,r,n,i,o,a,f,h=e.tagName.toLowerCase(),l=e.style,d=1,c=1;w(e)&&(c=e.getScreenCTM(),d=D(c.a*c.a+c.b*c.b),c=D(c.d*c.d+c.c*c.c));try{r=e.getBBox()}catch(e){v("Some browsers won't measure invisible elements (like display:none or masks inside defs).")}var g=r||{x:0,y:0,width:0,height:0},_=g.x,y=g.y,x=g.width,m=g.height;if(r&&(x||m)||!M[h]||(x=s(e,M[h][0]),m=s(e,M[h][1]),"rect"!==h&&"line"!==h&&(x*=2,m*=2),"line"===h&&(_=s(e,"x1"),y=s(e,"y1"),x=Math.abs(x-_),m=Math.abs(m-y))),"path"===h)i=l.strokeDasharray,l.strokeDasharray="none",t=e.getTotalLength()||0,p(d)!==p(c)&&!b&&(b=1)&&v("Warning: <path> length cannot be measured when vector-effect is non-scaling-stroke and the element isn't proportionally scaled."),t*=(d+c)/2,l.strokeDasharray=i;else if("rect"===h)t=2*x*d+2*m*c;else if("line"===h)t=u(_,y,_+x,y+m,d,c);else if("polyline"===h||"polygon"===h)for(n=e.getAttribute("points").match(P)||[],"polygon"===h&&n.push(n[0],n[1]),t=0,o=2;o<n.length;o+=2)t+=u(n[o-2],n[o-1],n[o],n[o+1],d,c)||0;else"circle"!==h&&"ellipse"!==h||(a=x/2*d,f=m/2*c,t=Math.PI*(3*(a+f)-D((3*a+f)*(a+3*f))));return t||0}function A(e,t){if(!(e=k(e)[0]))return[0,0];t=t||z(e)+1;var r=f.getComputedStyle(e),n=r.strokeDasharray||"",s=q(r.strokeDashoffset),i=n.indexOf(",");return i<0&&(i=n.indexOf(" ")),t<(n=i<0?t:q(n.substr(0,i)))&&(n=t),[-s||0,n-s||0]}function B(){l()&&(f=window,d=t=m(),k=t.utils.toArray,c=t.core.getStyleSaver,g=t.core.reverting||function(){},h=-1!==((f.navigator||{}).userAgent||"").indexOf("Edge"))}var t,k,f,h,d,b,c,g,P=/[-+=\.]*\d+[\.e\-\+]*\d*[e\-\+]*\d*/gi,M={rect:["width","height"],circle:["r","r"],ellipse:["rx","ry"],line:["x2","y2"]},D=Math.sqrt,n={version:"3.14.2",name:"drawSVG",register:function register(e){t=e,B()},init:function init(e,t,n){if(!e.getBBox)return!1;d||B();var s,i,o,a=z(e);return this.styles=c&&c(e,"strokeDashoffset,strokeDasharray,strokeMiterlimit"),this.tween=n,this._style=e.style,this._target=e,t+""=="true"?t="0 100%":t?-1===(t+"").indexOf(" ")&&(t="0 "+t):t="0 0",i=function _parse(e,t,n){var s,i,o=e.indexOf(" ");return i=o<0?(s=void 0!==n?n+"":e,e):(s=e.substr(0,o),e.substr(o+1)),s=r(s,t),(i=r(i,t))<s?[i,s]:[s,i]}(t,a,(s=A(e,a))[0]),this._length=p(a),this._dash=p(s[1]-s[0]),this._offset=p(-s[0]),this._dashPT=this.add(this,"_dash",this._dash,p(i[1]-i[0]),0,0,0,0,0,1),this._offsetPT=this.add(this,"_offset",this._offset,p(-i[0]),0,0,0,0,0,1),h&&(o=f.getComputedStyle(e)).strokeLinecap!==o.strokeLinejoin&&(i=q(o.strokeMiterlimit),this.add(e.style,"strokeMiterlimit",i,i+.01)),this._live=w(e)||~(t+"").indexOf("live"),this._nowrap=~(t+"").indexOf("nowrap"),this._props.push("drawSVG"),1},render:function render(e,t){if(t.tween._time||!g()){var r,n,s,i,o=t._pt,a=t._style;if(o){for(t._live&&(r=z(t._target))!==t._length&&(n=r/t._length,t._length=r,t._offsetPT&&(t._offsetPT.s*=n,t._offsetPT.c*=n),t._dashPT?(t._dashPT.s*=n,t._dashPT.c*=n):t._dash*=n);o;)o.r(e,o.d),o=o._next;s=t._dash||e&&1!==e&&1e-4||0,r=t._length-s+.1,i=t._offset,s&&i&&s+Math.abs(i%t._length)>t._length-.05&&(i+=i<0?.005:-.005)&&(r+=.005),a.strokeDashoffset=s?i:i+.001,a.strokeDasharray=r<.1?"none":s?s+"px,"+(t._nowrap?999999:r)+"px":"0px, 999999px"}}else t.styles.revert()},getLength:z,getPosition:A};m()&&t.registerPlugin(n),e.DrawSVGPlugin=n,e.default=n;if (typeof(window)==="undefined"||window!==e){Object.defineProperty(e,"__esModule",{value:!0})} else {delete e.default}});
|
||||
|
||||
1
deploy/assets/js/gsap/DrawSVGPlugin.min.js.map
Executable file
11
deploy/assets/js/gsap/EasePack.min.js
vendored
Executable file
|
|
@ -0,0 +1,11 @@
|
|||
/*!
|
||||
* EasePack 3.14.2
|
||||
* https://gsap.com
|
||||
*
|
||||
* @license Copyright 2025, GreenSock. All rights reserved.
|
||||
* Subject to the terms at https://gsap.com/standard-license.
|
||||
* @author: Jack Doyle, jack@greensock.com
|
||||
*/
|
||||
|
||||
!function(e,n){"object"==typeof exports&&"undefined"!=typeof module?n(exports):"function"==typeof define&&define.amd?define(["exports"],n):n((e=e||self).window=e.window||{})}(this,function(e){"use strict";function f(){return w||"undefined"!=typeof window&&(w=window.gsap)&&w.registerPlugin&&w}function g(e,n){return!!(void 0===e?n:e&&!~(e+"").indexOf("false"))}function h(e){if(w=e||f()){r=w.registerEase;var n,t=w.parseEase(),o=function createConfig(t){return function(e){var n=.5+e/2;t.config=function(e){return t(2*(1-e)*e*n+e*e)}}};for(n in t)t[n].config||o(t[n]);for(n in r("slow",a),r("expoScale",s),r("rough",u),c)"version"!==n&&w.core.globals(n,c[n])}}function i(e,n,t){var o=(e=Math.min(1,e||.7))<1?n||0===n?n:.7:0,r=(1-e)/2,i=r+e,a=g(t);return function(e){var n=e+(.5-e)*o;return e<r?a?1-(e=1-e/r)*e:n-(e=1-e/r)*e*e*e*n:i<e?a?1===e?0:1-(e=(e-i)/r)*e:n+(e-n)*(e=(e-i)/r)*e*e*e:a?1:n}}function j(n,e,t){var o=Math.log(e/n),r=e-n;return t=t&&w.parseEase(t),function(e){return(n*Math.exp(o*(t?t(e):e))-n)/r}}function k(e,n,t){this.t=e,this.v=n,t&&(((this.next=t).prev=this).c=t.v-n,this.gap=t.t-e)}function l(e){"object"!=typeof e&&(e={points:+e||20});for(var n,t,o,r,i,a,f,s=e.taper||"none",u=[],c=0,p=0|(+e.points||20),l=p,v=g(e.randomize,!0),d=g(e.clamp),h=w?w.parseEase(e.template):0,x=.4*(+e.strength||1);-1<--l;)n=v?Math.random():1/p*l,t=h?h(n):n,o="none"===s?x:"out"===s?(r=1-n)*r*x:"in"===s?n*n*x:n<.5?(r=2*n)*r*.5*x:(r=2*(1-n))*r*.5*x,v?t+=Math.random()*o-.5*o:l%2?t+=.5*o:t-=.5*o,d&&(1<t?t=1:t<0&&(t=0)),u[c++]={x:n,y:t};for(u.sort(function(e,n){return e.x-n.x}),a=new k(1,1,null),l=p;l--;)i=u[l],a=new k(i.x,i.y,a);return f=new k(0,0,a.t?a:a.next),function(e){var n=f;if(e>n.t){for(;n.next&&e>=n.t;)n=n.next;n=n.prev}else for(;n.prev&&e<=n.t;)n=n.prev;return(f=n).v+(e-n.t)/n.gap*n.c}}var w,r,a=i(.7);(a.ease=a).config=i;var s=j(1,2);s.config=j;var u=l();(u.ease=u).config=l;var c={SlowMo:a,RoughEase:u,ExpoScaleEase:s};for(var n in c)c[n].register=h,c[n].version="3.14.2";f()&&w.registerPlugin(a),e.EasePack=c,e.ExpoScaleEase=s,e.RoughEase=u,e.SlowMo=a,e.default=c;if (typeof(window)==="undefined"||window!==e){Object.defineProperty(e,"__esModule",{value:!0})} else {delete e.default}});
|
||||
|
||||
1
deploy/assets/js/gsap/EasePack.min.js.map
Executable file
11
deploy/assets/js/gsap/EaselPlugin.min.js
vendored
Executable file
|
|
@ -0,0 +1,11 @@
|
|||
/*!
|
||||
* EaselPlugin 3.14.2
|
||||
* https://gsap.com
|
||||
*
|
||||
* @license Copyright 2025, GreenSock. All rights reserved.
|
||||
* Subject to the terms at https://gsap.com/standard-license.
|
||||
* @author: Jack Doyle, jack@greensock.com
|
||||
*/
|
||||
|
||||
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((e=e||self).window=e.window||{})}(this,function(e){"use strict";function k(){return"undefined"!=typeof window}function l(){return h||k()&&(h=window.gsap)&&h.registerPlugin&&h}function m(){return r||t&&t.createjs||t||{}}function n(e){return console.warn(e)}function o(e){var t=e.getBounds&&e.getBounds();t||(t=e.nominalBounds||{x:0,y:0,width:100,height:100},e.setBounds&&e.setBounds(t.x,t.y,t.width,t.height)),e.cache&&e.cache(t.x,t.y,t.width,t.height),n("EaselPlugin: for filters to display in EaselJS, you must call the object's cache() method first. GSAP attempted to use the target's getBounds() for the cache but that may not be completely accurate. "+e)}function p(e,t,r){(b=b||m().ColorFilter)||n("EaselPlugin error: The EaselJS ColorFilter JavaScript file wasn't loaded.");for(var i,l,s,u,a,f,c=e.filters||[],d=c.length;d--;)if(c[d]instanceof b){l=c[d];break}if(l||(l=new b,c.push(l),e.filters=c),s=l.clone(),null!=t.tint)i=h.utils.splitColor(t.tint),u=null!=t.tintAmount?+t.tintAmount:1,s.redOffset=i[0]*u,s.greenOffset=i[1]*u,s.blueOffset=i[2]*u,s.redMultiplier=s.greenMultiplier=s.blueMultiplier=1-u;else for(a in t)"exposure"!==a&&"brightness"!==a&&(s[a]=+t[a]);for(null!=t.exposure?(s.redOffset=s.greenOffset=s.blueOffset=255*(t.exposure-1),s.redMultiplier=s.greenMultiplier=s.blueMultiplier=1):null!=t.brightness&&(u=t.brightness-1,s.redOffset=s.greenOffset=s.blueOffset=0<u?255*u:0,s.redMultiplier=s.greenMultiplier=s.blueMultiplier=1-Math.abs(u)),d=8;d--;)l[a=M[d]]!==s[a]&&(f=r.add(l,a,l[a],s[a],0,0,0,0,0,1))&&(f.op="easel_colorFilter");r._props.push("easel_colorFilter"),e.cacheID||o(e)}function u(e,t){if(!(e instanceof Array&&t instanceof Array))return t;var r,i,n=[],l=0,o=0;for(r=0;r<4;r++){for(i=0;i<5;i++)o=4===i?e[l+4]:0,n[l+i]=e[l]*t[i]+e[l+1]*t[i+5]+e[l+2]*t[i+10]+e[l+3]*t[i+15]+o;l+=5}return n}function z(e,t,r){(d=d||m().ColorMatrixFilter)||n("EaselPlugin: The EaselJS ColorMatrixFilter JavaScript file wasn't loaded.");for(var i,l,s,a,f=e.filters||[],c=f.length;-1<--c;)if(f[c]instanceof d){s=f[c];break}for(s||(s=new d(w.slice()),f.push(s),e.filters=f),l=s.matrix,i=w.slice(),null!=t.colorize&&(i=function _colorize(e,t,r){isNaN(r)&&(r=1);var i=h.utils.splitColor(t),n=i[0]/255,l=i[1]/255,o=i[2]/255,s=1-r;return u([s+r*n*x,r*n*y,r*n*_,0,0,r*l*x,s+r*l*y,r*l*_,0,0,r*o*x,r*o*y,s+r*o*_,0,0,0,0,0,1,0],e)}(i,t.colorize,Number(t.colorizeAmount))),null!=t.contrast&&(i=function _setContrast(e,t){return isNaN(t)?e:u([t+=.01,0,0,0,128*(1-t),0,t,0,0,128*(1-t),0,0,t,0,128*(1-t),0,0,0,1,0],e)}(i,Number(t.contrast))),null!=t.hue&&(i=function _setHue(e,t){if(isNaN(t))return e;t*=Math.PI/180;var r=Math.cos(t),i=Math.sin(t);return u([x+r*(1-x)+i*-x,y+r*-y+i*-y,_+r*-_+i*(1-_),0,0,x+r*-x+.143*i,y+r*(1-y)+.14*i,_+r*-_+-.283*i,0,0,x+r*-x+i*-(1-x),y+r*-y+i*y,_+r*(1-_)+i*_,0,0,0,0,0,1,0,0,0,0,0,1],e)}(i,Number(t.hue))),null!=t.saturation&&(i=function _setSaturation(e,t){if(isNaN(t))return e;var r=1-t,i=r*x,n=r*y,l=r*_;return u([i+t,n,l,0,0,i,n+t,l,0,0,i,n,l+t,0,0,0,0,0,1,0],e)}(i,Number(t.saturation))),c=i.length;-1<--c;)i[c]!==l[c]&&(a=r.add(l,c,l[c],i[c],0,0,0,0,0,1))&&(a.op="easel_colorMatrixFilter");r._props.push("easel_colorMatrixFilter"),e.cacheID||o(),r._matrix=l}function A(e){h=e||l(),k()&&(t=window),h&&(g=1)}var h,g,t,r,b,d,M="redMultiplier,greenMultiplier,blueMultiplier,alphaMultiplier,redOffset,greenOffset,blueOffset,alphaOffset".split(","),w=[1,0,0,0,0,0,1,0,0,0,0,0,1,0,0,0,0,0,1,0],x=.212671,y=.71516,_=.072169,i={version:"3.14.2",name:"easel",init:function init(e,t,r,i,l){var o,s,u,a,f,c,d;for(o in g||(A(),h||n("Please gsap.registerPlugin(EaselPlugin)")),this.target=e,t)if(f=t[o],"colorFilter"===o||"tint"===o||"tintAmount"===o||"exposure"===o||"brightness"===o)u||(p(e,t.colorFilter||t,this),u=!0);else if("saturation"===o||"contrast"===o||"hue"===o||"colorize"===o||"colorizeAmount"===o)a||(z(e,t.colorMatrixFilter||t,this),a=!0);else if("frame"===o){if("string"==typeof f&&"="!==f.charAt(1)&&(c=e.labels))for(d=0;d<c.length;d++)c[d].label===f&&(f=c[d].position);(s=this.add(e,"gotoAndStop",e.currentFrame,f,i,l,Math.round,0,0,1))&&(s.op=o)}else null!=e[o]&&this.add(e,o,"get",f)},render:function render(e,t){for(var r=t._pt;r;)r.r(e,r.d),r=r._next;t.target.cacheID&&t.target.updateCache()},register:A,registerCreateJS:function(e){r=e}};l()&&h.registerPlugin(i),e.EaselPlugin=i,e.default=i;if (typeof(window)==="undefined"||window!==e){Object.defineProperty(e,"__esModule",{value:!0})} else {delete e.default}});
|
||||
|
||||
1
deploy/assets/js/gsap/EaselPlugin.min.js.map
Executable file
11
deploy/assets/js/gsap/Flip.min.js
vendored
Executable file
1
deploy/assets/js/gsap/Flip.min.js.map
Executable file
11
deploy/assets/js/gsap/GSDevTools.min.js
vendored
Executable file
1
deploy/assets/js/gsap/GSDevTools.min.js.map
Executable file
11
deploy/assets/js/gsap/InertiaPlugin.min.js
vendored
Executable file
1
deploy/assets/js/gsap/InertiaPlugin.min.js.map
Executable file
11
deploy/assets/js/gsap/MorphSVGPlugin.min.js
vendored
Executable file
1
deploy/assets/js/gsap/MorphSVGPlugin.min.js.map
Executable file
11
deploy/assets/js/gsap/MotionPathHelper.min.js
vendored
Executable file
1
deploy/assets/js/gsap/MotionPathHelper.min.js.map
Executable file
11
deploy/assets/js/gsap/MotionPathPlugin.min.js
vendored
Executable file
1
deploy/assets/js/gsap/MotionPathPlugin.min.js.map
Executable file
11
deploy/assets/js/gsap/Observer.min.js
vendored
Executable file
1
deploy/assets/js/gsap/Observer.min.js.map
Executable file
11
deploy/assets/js/gsap/Physics2DPlugin.min.js
vendored
Executable file
|
|
@ -0,0 +1,11 @@
|
|||
/*!
|
||||
* Physics2DPlugin 3.14.2
|
||||
* https://gsap.com
|
||||
*
|
||||
* @license Copyright 2025, GreenSock. All rights reserved.
|
||||
* Subject to the terms at https://gsap.com/standard-license.
|
||||
* @author: Jack Doyle, jack@greensock.com
|
||||
*/
|
||||
|
||||
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((e=e||self).window=e.window||{})}(this,function(e){"use strict";function j(){return t||"undefined"!=typeof window&&(t=window.gsap)&&t.registerPlugin&&t}function k(e){return Math.round(1e4*e)/1e4}function l(e){t=e||j(),v||(o=t.utils.getUnit,f=t.core.getStyleSaver,w=t.core.reverting||function(){},v=1)}function m(e,t,i,s,n){var r=e._gsap,a=r.get(e,t);this.p=t,this.set=r.set(e,t),this.s=this.val=parseFloat(a),this.u=o(a)||0,this.vel=i||0,this.v=this.vel/n,s||0===s?(this.acc=s,this.a=this.acc/(n*n)):this.acc=this.a=0}var t,v,o,f,w,u=Math.PI/180,i={version:"3.14.2",name:"physics2D",register:l,init:function init(e,t,i){v||l();var s=this,n=+t.angle||0,r=+t.velocity||0,a=+t.acceleration||0,o=t.xProp||"x",p=t.yProp||"y",c=t.accelerationAngle||0===t.accelerationAngle?+t.accelerationAngle:n;s.styles=f&&f(e,t.xProp&&"x"!==t.xProp?t.xProp+","+t.yProp:"transform"),s.target=e,s.tween=i,s.step=0,s.sps=30,t.gravity&&(a=+t.gravity,c=90),n*=u,c*=u,s.fr=1-(+t.friction||0),s._props.push(o,p),s.xp=new m(e,o,Math.cos(n)*r,Math.cos(c)*a,s.sps),s.yp=new m(e,p,Math.sin(n)*r,Math.sin(c)*a,s.sps),s.skipX=s.skipY=0},render:function render(e,t){var i,s,n,r,a,o,p=t.xp,l=t.yp,c=t.tween,v=t.target,f=t.step,u=t.sps,h=t.fr,d=t.skipX,g=t.skipY,y=c._from?c._dur-c._time:c._time;if(c._time||!w()){if(1===h)n=y*y*.5,i=p.s+p.vel*y+p.acc*n,s=l.s+l.vel*y+l.acc*n;else{for(r=o=(0|(y*=u))-f,o<0&&(p.v=p.vel/u,l.v=l.vel/u,p.val=p.s,l.val=l.s,r=o=(t.step=0)|y),a=y%1*h;o--;)p.v+=p.a,l.v+=l.a,p.v*=h,l.v*=h,p.val+=p.v,l.val+=l.v;i=p.val+p.v*a,s=l.val+l.v*a,t.step+=r}d||p.set(v,p.p,k(i)+p.u),g||l.set(v,l.p,k(s)+l.u)}else t.styles.revert()},kill:function kill(e){this.xp.p===e&&(this.skipX=1),this.yp.p===e&&(this.skipY=1)}};j()&&t.registerPlugin(i),e.Physics2DPlugin=i,e.default=i;if (typeof(window)==="undefined"||window!==e){Object.defineProperty(e,"__esModule",{value:!0})} else {delete e.default}});
|
||||
|
||||
1
deploy/assets/js/gsap/Physics2DPlugin.min.js.map
Executable file
11
deploy/assets/js/gsap/PhysicsPropsPlugin.min.js
vendored
Executable file
|
|
@ -0,0 +1,11 @@
|
|||
/*!
|
||||
* PhysicsPropsPlugin 3.14.2
|
||||
* https://gsap.com
|
||||
*
|
||||
* @license Copyright 2025, GreenSock. All rights reserved.
|
||||
* Subject to the terms at https://gsap.com/standard-license.
|
||||
* @author: Jack Doyle, jack@greensock.com
|
||||
*/
|
||||
|
||||
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((e=e||self).window=e.window||{})}(this,function(e){"use strict";function i(){return t||"undefined"!=typeof window&&(t=window.gsap)&&t.registerPlugin&&t}function j(e){return Math.round(1e4*e)/1e4}function k(e){t=e||i(),p||(a=t.utils.getUnit,c=t.core.getStyleSaver,d=t.core.reverting||function(){},p=1)}function l(e,t,s,i,r,n){var o=e._gsap,f=o.get(e,t);this.p=t,this.set=o.set(e,t),this.s=this.val=parseFloat(f),this.u=a(f)||0,this.vel=s||0,this.v=this.vel/n,i||0===i?(this.acc=i,this.a=this.acc/(n*n)):this.acc=this.a=0,this.fr=1-(r||0)}var t,p,a,c,d,s={version:"3.14.2",name:"physicsProps",register:k,init:function init(e,t,s){p||k();var i,r=this;for(i in r.styles=c&&c(e),r.target=e,r.tween=s,r.step=0,r.sps=30,r.vProps=[],t){var n=t[i],o=n.velocity,f=n.acceleration,a=n.friction;(o||f)&&(r.vProps.push(new l(e,i,o,f,a,r.sps)),r._props.push(i),c&&r.styles.save(i),a&&(r.hasFr=1))}},render:function render(e,t){var s,i,r,n,o,f=t.vProps,l=t.tween,a=t.target,p=t.step,c=t.hasFr,u=t.sps,v=f.length,h=l._from?l._dur-l._time:l._time;if(l._time||!d())if(c){if((i=(0|(h*=u))-p)<0){for(;v--;)(s=f[v]).v=s.vel/u,s.val=s.s;v=f.length,t.step=p=0,i=0|h}for(r=h%1;v--;){for(s=f[v],n=i;n--;)s.v+=s.a,s.v*=s.fr,s.val+=s.v;s.set(a,s.p,j(s.val+s.v*r*s.fr)+s.u)}t.step+=i}else for(o=h*h*.5;v--;)(s=f[v]).set(a,s.p,j(s.s+s.vel*h+s.acc*o)+s.u);else t.styles.revert()},kill:function kill(e){for(var t=this.vProps,s=t.length;s--;)t[s].p===e&&t.splice(s,1)}};i()&&t.registerPlugin(s),e.PhysicsPropsPlugin=s,e.default=s;if (typeof(window)==="undefined"||window!==e){Object.defineProperty(e,"__esModule",{value:!0})} else {delete e.default}});
|
||||
|
||||
1
deploy/assets/js/gsap/PhysicsPropsPlugin.min.js.map
Executable file
11
deploy/assets/js/gsap/PixiPlugin.min.js
vendored
Executable file
1
deploy/assets/js/gsap/PixiPlugin.min.js.map
Executable file
11
deploy/assets/js/gsap/ScrambleTextPlugin.min.js
vendored
Executable file
1
deploy/assets/js/gsap/ScrambleTextPlugin.min.js.map
Executable file
11
deploy/assets/js/gsap/ScrollSmoother.min.js
vendored
Executable file
1
deploy/assets/js/gsap/ScrollSmoother.min.js.map
Executable file
11
deploy/assets/js/gsap/ScrollToPlugin.min.js
vendored
Executable file
|
|
@ -0,0 +1,11 @@
|
|||
/*!
|
||||
* ScrollToPlugin 3.14.2
|
||||
* https://gsap.com
|
||||
*
|
||||
* @license Copyright 2025, GreenSock. All rights reserved.
|
||||
* Subject to the terms at https://gsap.com/standard-license.
|
||||
* @author: Jack Doyle, jack@greensock.com
|
||||
*/
|
||||
|
||||
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((e=e||self).window=e.window||{})}(this,function(e){"use strict";function l(){return"undefined"!=typeof window}function m(){return f||l()&&(f=window.gsap)&&f.registerPlugin&&f}function n(e){return"string"==typeof e}function o(e){return"function"==typeof e}function p(e,t){var o="x"===t?"Width":"Height",n="scroll"+o,r="client"+o;return e===T||e===i||e===c?Math.max(i[n],c[n])-(T["inner"+o]||i[r]||c[r]):e[n]-e["offset"+o]}function q(e,t){var o="scroll"+("x"===t?"Left":"Top");return e===T&&(null!=e.pageXOffset?o="page"+t.toUpperCase()+"Offset":e=null!=i[o]?i:c),function(){return e[o]}}function s(e,t){if(!(e=y(e)[0])||!e.getBoundingClientRect)return console.warn("scrollTo target doesn't exist. Using 0")||{x:0,y:0};var o=e.getBoundingClientRect(),n=!t||t===T||t===c,r=n?{top:i.clientTop-(T.pageYOffset||i.scrollTop||c.scrollTop||0),left:i.clientLeft-(T.pageXOffset||i.scrollLeft||c.scrollLeft||0)}:t.getBoundingClientRect(),l={x:o.left-r.left,y:o.top-r.top};return!n&&t&&(l.x+=q(t,"x")(),l.y+=q(t,"y")()),l}function t(e,t,o,r,l){return isNaN(e)||"object"==typeof e?n(e)&&"="===e.charAt(1)?parseFloat(e.substr(2))*("-"===e.charAt(0)?-1:1)+r-l:"max"===e?p(t,o)-l:Math.min(p(t,o),s(e,t)[o]-l):parseFloat(e)-l}function u(){f=m(),l()&&f&&"undefined"!=typeof document&&document.body&&(T=window,c=document.body,i=document.documentElement,y=f.utils.toArray,f.config({autoKillThreshold:7}),h=f.config(),a=1)}var f,a,T,i,c,y,h,v,r={version:"3.14.2",name:"scrollTo",rawVars:1,register:function register(e){f=e,u()},init:function init(e,r,l,i,s){a||u();var p=this,c=f.getProperty(e,"scrollSnapType");p.isWin=e===T,p.target=e,p.tween=l,r=function _clean(e,t,r,l){if(o(e)&&(e=e(t,r,l)),"object"!=typeof e)return n(e)&&"max"!==e&&"="!==e.charAt(1)?{x:e,y:e}:{y:e};if(e.nodeType)return{y:e,x:e};var i,s={};for(i in e)s[i]="onAutoKill"!==i&&o(e[i])?e[i](t,r,l):e[i];return s}(r,i,e,s),p.vars=r,p.autoKill=!!("autoKill"in r?r:h).autoKill,p.getX=q(e,"x"),p.getY=q(e,"y"),p.x=p.xPrev=p.getX(),p.y=p.yPrev=p.getY(),v=v||f.core.globals().ScrollTrigger,"smooth"===f.getProperty(e,"scrollBehavior")&&f.set(e,{scrollBehavior:"auto"}),c&&"none"!==c&&(p.snap=1,p.snapInline=e.style.scrollSnapType,e.style.scrollSnapType="none"),null!=r.x?(p.add(p,"x",p.x,t(r.x,e,"x",p.x,r.offsetX||0),i,s),p._props.push("scrollTo_x")):p.skipX=1,null!=r.y?(p.add(p,"y",p.y,t(r.y,e,"y",p.y,r.offsetY||0),i,s),p._props.push("scrollTo_y")):p.skipY=1},render:function render(e,t){for(var o,n,r,l,i,s=t._pt,c=t.target,u=t.tween,f=t.autoKill,a=t.xPrev,y=t.yPrev,d=t.isWin,g=t.snap,x=t.snapInline;s;)s.r(e,s.d),s=s._next;o=d||!t.skipX?t.getX():a,r=(n=d||!t.skipY?t.getY():y)-y,l=o-a,i=h.autoKillThreshold,t.x<0&&(t.x=0),t.y<0&&(t.y=0),f&&(!t.skipX&&(i<l||l<-i)&&o<p(c,"x")&&(t.skipX=1),!t.skipY&&(i<r||r<-i)&&n<p(c,"y")&&(t.skipY=1),t.skipX&&t.skipY&&(u.kill(),t.vars.onAutoKill&&t.vars.onAutoKill.apply(u,t.vars.onAutoKillParams||[]))),d?T.scrollTo(t.skipX?o:t.x,t.skipY?n:t.y):(t.skipY||(c.scrollTop=t.y),t.skipX||(c.scrollLeft=t.x)),!g||1!==e&&0!==e||(n=c.scrollTop,o=c.scrollLeft,x?c.style.scrollSnapType=x:c.style.removeProperty("scroll-snap-type"),c.scrollTop=n+1,c.scrollLeft=o+1,c.scrollTop=n,c.scrollLeft=o),t.xPrev=t.x,t.yPrev=t.y,v&&v.update()},kill:function kill(e){var t="scrollTo"===e,o=this._props.indexOf(e);return!t&&"scrollTo_x"!==e||(this.skipX=1),!t&&"scrollTo_y"!==e||(this.skipY=1),-1<o&&this._props.splice(o,1),!this._props.length}};r.max=p,r.getOffset=s,r.buildGetter=q,r.config=function(e){for(var t in h||u()||(h=f.config()),e)h[t]=e[t]},m()&&f.registerPlugin(r),e.ScrollToPlugin=r,e.default=r;if (typeof(window)==="undefined"||window!==e){Object.defineProperty(e,"__esModule",{value:!0})} else {delete e.default}});
|
||||
|
||||
1
deploy/assets/js/gsap/ScrollToPlugin.min.js.map
Executable file
11
deploy/assets/js/gsap/ScrollTrigger.min.js
vendored
Executable file
1
deploy/assets/js/gsap/ScrollTrigger.min.js.map
Executable file
11
deploy/assets/js/gsap/SplitText.min.js
vendored
Executable file
|
|
@ -0,0 +1,11 @@
|
|||
/*!
|
||||
* SplitText 3.14.2
|
||||
* https://gsap.com
|
||||
*
|
||||
* @license Copyright 2025, GreenSock. All rights reserved. Subject to the terms at https://gsap.com/standard-license.
|
||||
* @author: Jack Doyle
|
||||
*/
|
||||
|
||||
(function(W,A){typeof exports=="object"&&typeof module!="undefined"?A(exports):typeof define=="function"&&define.amd?define(["exports"],A):(W=typeof globalThis!="undefined"?globalThis:W||self,A(W.window=W.window||{}))})(this,function(W){"use strict";let A,I,Z=typeof Symbol=="function"?Symbol():"_split",K,he=()=>K||Y.register(window.gsap),$=typeof Intl!="undefined"&&"Segmenter"in Intl?new Intl.Segmenter:0,q=e=>typeof e=="string"?q(document.querySelectorAll(e)):"length"in e?Array.from(e).reduce((t,i)=>(typeof i=="string"?t.push(...q(i)):t.push(i),t),[]):[e],ee=e=>q(e).filter(t=>t instanceof HTMLElement),Q=[],U=function(){},de={add:e=>e()},pe=/\s+/g,te=new RegExp("\\p{RI}\\p{RI}|\\p{Emoji}(\\p{EMod}|\\u{FE0F}\\u{20E3}?|[\\u{E0020}-\\u{E007E}]+\\u{E007F})?(\\u{200D}\\p{Emoji}(\\p{EMod}|\\u{FE0F}\\u{20E3}?|[\\u{E0020}-\\u{E007E}]+\\u{E007F})?)*|.","gu"),J={left:0,top:0,width:0,height:0},ue=(e,t)=>{for(;++t<e.length&&e[t]===J;);return e[t]||J},ie=({element:e,html:t,ariaL:i,ariaH:n})=>{e.innerHTML=t,i?e.setAttribute("aria-label",i):e.removeAttribute("aria-label"),n?e.setAttribute("aria-hidden",n):e.removeAttribute("aria-hidden")},ne=(e,t)=>{if(t){let i=new Set(e.join("").match(t)||Q),n=e.length,a,c,l,o;if(i.size)for(;--n>-1;){c=e[n];for(l of i)if(l.startsWith(c)&&l.length>c.length){for(a=0,o=c;l.startsWith(o+=e[n+ ++a])&&o.length<l.length;);if(a&&o.length===l.length){e[n]=l,e.splice(n+1,a);break}}}}return e},le=e=>window.getComputedStyle(e).display==="inline"&&(e.style.display="inline-block"),M=(e,t,i)=>t.insertBefore(typeof e=="string"?document.createTextNode(e):e,i),X=(e,t,i)=>{let n=t[e+"sClass"]||"",{tag:a="div",aria:c="auto",propIndex:l=!1}=t,o=e==="line"?"block":"inline-block",d=n.indexOf("++")>-1,R=b=>{let m=document.createElement(a),E=i.length+1;return n&&(m.className=n+(d?" "+n+E:"")),l&&m.style.setProperty("--"+e,E+""),c!=="none"&&m.setAttribute("aria-hidden","true"),a!=="span"&&(m.style.position="relative",m.style.display=o),m.textContent=b,i.push(m),m};return d&&(n=n.replace("++","")),R.collection=i,R},fe=(e,t,i,n)=>{let a=X("line",i,n),c=window.getComputedStyle(e).textAlign||"left";return(l,o)=>{let d=a("");for(d.style.textAlign=c,e.insertBefore(d,t[l]);l<o;l++)d.appendChild(t[l]);d.normalize()}},se=(e,t,i,n,a,c,l,o,d,R)=>{var b;let m=Array.from(e.childNodes),E=0,{wordDelimiter:_,reduceWhiteSpace:B=!0,prepareText:V}=t,G=e.getBoundingClientRect(),O=G,D=!B&&window.getComputedStyle(e).whiteSpace.substring(0,3)==="pre",S=0,x=i.collection,r,f,H,s,g,y,z,h,p,k,C,T,N,L,w,u,F,v;for(typeof _=="object"?(H=_.delimiter||_,f=_.replaceWith||""):f=_===""?"":_||" ",r=f!==" ";E<m.length;E++)if(s=m[E],s.nodeType===3){for(w=s.textContent||"",B?w=w.replace(pe," "):D&&(w=w.replace(/\n/g,f+`
|
||||
`)),V&&(w=V(w,e)),s.textContent=w,g=f||H?w.split(H||f):w.match(o)||Q,F=g[g.length-1],h=r?F.slice(-1)===" ":!F,F||g.pop(),O=G,z=r?g[0].charAt(0)===" ":!g[0],z&&M(" ",e,s),g[0]||g.shift(),ne(g,d),c&&R||(s.textContent=""),p=1;p<=g.length;p++)if(u=g[p-1],!B&&D&&u.charAt(0)===`
|
||||
`&&((b=s.previousSibling)==null||b.remove(),M(document.createElement("br"),e,s),u=u.slice(1)),!B&&u==="")M(f,e,s);else if(u===" ")e.insertBefore(document.createTextNode(" "),s);else{if(r&&u.charAt(0)===" "&&M(" ",e,s),S&&p===1&&!z&&x.indexOf(S.parentNode)>-1?(y=x[x.length-1],y.appendChild(document.createTextNode(n?"":u))):(y=i(n?"":u),M(y,e,s),S&&p===1&&!z&&y.insertBefore(S,y.firstChild)),n)for(C=$?ne([...$.segment(u)].map(j=>j.segment),d):u.match(o)||Q,v=0;v<C.length;v++)y.appendChild(C[v]===" "?document.createTextNode(" "):n(C[v]));if(c&&R){if(w=s.textContent=w.substring(u.length+1,w.length),k=y.getBoundingClientRect(),k.top>O.top&&k.left<=O.left){for(T=e.cloneNode(),N=e.childNodes[0];N&&N!==y;)L=N,N=N.nextSibling,T.appendChild(L);e.parentNode.insertBefore(T,e),a&&le(T)}O=k}(p<g.length||h)&&M(p>=g.length?" ":r&&u.slice(-1)===" "?" "+f:f,e,s)}e.removeChild(s),S=0}else s.nodeType===1&&(l&&l.indexOf(s)>-1?(x.indexOf(s.previousSibling)>-1&&x[x.length-1].appendChild(s),S=s):(se(s,t,i,n,a,c,l,o,d,!0),S=0),a&&le(s))};const re=class ae{constructor(t,i){this.isSplit=!1,he(),this.elements=ee(t),this.chars=[],this.words=[],this.lines=[],this.masks=[],this.vars=i,this.elements.forEach(l=>{var o;i.overwrite!==!1&&((o=l[Z])==null||o._data.orig.filter(({element:d})=>d===l).forEach(ie)),l[Z]=this}),this._split=()=>this.isSplit&&this.split(this.vars);let n=[],a,c=()=>{let l=n.length,o;for(;l--;){o=n[l];let d=o.element.offsetWidth;if(d!==o.width){o.width=d,this._split();return}}};this._data={orig:n,obs:typeof ResizeObserver!="undefined"&&new ResizeObserver(()=>{clearTimeout(a),a=setTimeout(c,200)})},U(this),this.split(i)}split(t){return(this._ctx||de).add(()=>{this.isSplit&&this.revert(),this.vars=t=t||this.vars||{};let{type:i="chars,words,lines",aria:n="auto",deepSlice:a=!0,smartWrap:c,onSplit:l,autoSplit:o=!1,specialChars:d,mask:R}=this.vars,b=i.indexOf("lines")>-1,m=i.indexOf("chars")>-1,E=i.indexOf("words")>-1,_=m&&!E&&!b,B=d&&("push"in d?new RegExp("(?:"+d.join("|")+")","gu"):d),V=B?new RegExp(B.source+"|"+te.source,"gu"):te,G=!!t.ignore&&ee(t.ignore),{orig:O,animTime:D,obs:S}=this._data,x;(m||E||b)&&(this.elements.forEach((r,f)=>{O[f]={element:r,html:r.innerHTML,ariaL:r.getAttribute("aria-label"),ariaH:r.getAttribute("aria-hidden")},n==="auto"?r.setAttribute("aria-label",(r.textContent||"").trim()):n==="hidden"&&r.setAttribute("aria-hidden","true");let H=[],s=[],g=[],y=m?X("char",t,H):null,z=X("word",t,s),h,p,k,C;if(se(r,t,z,y,_,a&&(b||_),G,V,B,!1),b){let T=q(r.childNodes),N=fe(r,T,t,g),L,w=[],u=0,F=T.map(P=>P.nodeType===1?P.getBoundingClientRect():J),v=J,j;for(h=0;h<T.length;h++)L=T[h],L.nodeType===1&&(L.nodeName==="BR"?((!h||T[h-1].nodeName!=="BR")&&(w.push(L),N(u,h+1)),u=h+1,v=ue(F,h)):(j=F[h],h&&j.top>v.top&&j.left<v.left+v.width-1&&(N(u,h),u=h),v=j));u<h&&N(u,h),w.forEach(P=>{var oe;return(oe=P.parentNode)==null?void 0:oe.removeChild(P)})}if(!E){for(h=0;h<s.length;h++)if(p=s[h],m||!p.nextSibling||p.nextSibling.nodeType!==3)if(c&&!b){for(k=document.createElement("span"),k.style.whiteSpace="nowrap";p.firstChild;)k.appendChild(p.firstChild);p.replaceWith(k)}else p.replaceWith(...p.childNodes);else C=p.nextSibling,C&&C.nodeType===3&&(C.textContent=(p.textContent||"")+(C.textContent||""),p.remove());s.length=0,r.normalize()}this.lines.push(...g),this.words.push(...s),this.chars.push(...H)}),R&&this[R]&&this.masks.push(...this[R].map(r=>{let f=r.cloneNode();return r.replaceWith(f),f.appendChild(r),r.className&&(f.className=r.className.trim()+"-mask"),f.style.overflow="clip",f}))),this.isSplit=!0,I&&b&&(o?I.addEventListener("loadingdone",this._split):I.status==="loading"&&console.warn("SplitText called before fonts loaded")),(x=l&&l(this))&&x.totalTime&&(this._data.anim=D?x.totalTime(D):x),b&&o&&this.elements.forEach((r,f)=>{O[f].width=r.offsetWidth,S&&S.observe(r)})}),this}kill(){let{obs:t}=this._data;t&&t.disconnect(),I==null||I.removeEventListener("loadingdone",this._split)}revert(){var t,i;if(this.isSplit){let{orig:n,anim:a}=this._data;this.kill(),n.forEach(ie),this.chars.length=this.words.length=this.lines.length=n.length=this.masks.length=0,this.isSplit=!1,a&&(this._data.animTime=a.totalTime(),a.revert()),(i=(t=this.vars).onRevert)==null||i.call(t,this)}return this}static create(t,i){return new ae(t,i)}static register(t){A=A||t||window.gsap,A&&(q=A.utils.toArray,U=A.core.context||U),!K&&window.innerWidth>0&&(I=document.fonts,K=!0)}};re.version="3.14.2";let Y=re;W.SplitText=Y,W.default=Y;if (typeof(window)==="undefined"||window!==W){Object.defineProperty(W,"__esModule",{value:!0})} else {delete W.default}});
|
||||
1
deploy/assets/js/gsap/SplitText.min.js.map
Executable file
11
deploy/assets/js/gsap/TextPlugin.min.js
vendored
Executable file
1
deploy/assets/js/gsap/TextPlugin.min.js.map
Executable file
11
deploy/assets/js/gsap/gsap.min.js
vendored
Executable file
1
deploy/assets/js/gsap/gsap.min.js.map
Executable file
93
deploy/assets/js/index.js
Executable file
|
|
@ -0,0 +1,93 @@
|
|||
// INDEX.js
|
||||
// Manages the animations on the homepage
|
||||
|
||||
document.addEventListener('DOMContentLoaded', function () {
|
||||
// Register the GSAP plugin to use
|
||||
try { gsap.registerPlugin(ScrollTrigger); } catch (e) { console.warn(e); }
|
||||
console.clear();
|
||||
|
||||
// Lists the assets to use: backgrounds, images, and content
|
||||
const backgroundPatterns = {
|
||||
0: `none`,
|
||||
1: `
|
||||
repeating-linear-gradient(0deg, rgba(75, 85, 99, 0.08), rgba(75, 85, 99, 0.08) 2px, transparent 2px, transparent 6px),
|
||||
repeating-linear-gradient(90deg, rgba(107, 114, 128, 0.06), rgba(107, 114, 128, 0.06) 2px, transparent 2px, transparent 6px)
|
||||
`,
|
||||
2: `
|
||||
repeating-linear-gradient(22.5deg, transparent, transparent 2px, rgba(75, 85, 99, 0.06) 2px, rgba(75, 85, 99, 0.06) 3px, transparent 3px, transparent 8px),
|
||||
repeating-linear-gradient(67.5deg, transparent, transparent 2px, rgba(107, 114, 128, 0.05) 2px, rgba(107, 114, 128, 0.05) 3px, transparent 3px, transparent 8px),
|
||||
repeating-linear-gradient(112.5deg, transparent, transparent 2px, rgba(55, 65, 81, 0.04) 2px, rgba(55, 65, 81, 0.04) 3px, transparent 3px, transparent 8px),
|
||||
repeating-linear-gradient(157.5deg, transparent, transparent 2px, rgba(31, 41, 55, 0.03) 2px, rgba(31, 41, 55, 0.03) 3px, transparent 3px, transparent 8px)
|
||||
`,
|
||||
3: `
|
||||
repeating-linear-gradient(0deg, transparent, transparent 19px, rgba(75, 85, 99, 0.08) 19px, rgba(75, 85, 99, 0.08) 20px, transparent 20px, transparent 39px, rgba(75, 85, 99, 0.08) 39px, rgba(75, 85, 99, 0.08) 40px),
|
||||
repeating-linear-gradient(90deg, transparent, transparent 19px, rgba(75, 85, 99, 0.08) 19px, rgba(75, 85, 99, 0.08) 20px, transparent 20px, transparent 39px, rgba(75, 85, 99, 0.08) 39px, rgba(75, 85, 99, 0.08) 40px),
|
||||
radial-gradient(circle at 20px 20px, rgba(55, 65, 81, 0.12) 2px, transparent 2px),
|
||||
radial-gradient(circle at 40px 40px, rgba(55, 65, 81, 0.12) 2px, transparent 2px)
|
||||
`,
|
||||
};
|
||||
const pinSection = document.querySelector(".pin-section");
|
||||
const list = pinSection?.querySelector(".list");
|
||||
const listItems = list ? gsap.utils.toArray("li", list) : [];
|
||||
const slides = pinSection ? gsap.utils.toArray(".slide", pinSection) : [];
|
||||
|
||||
// Sets the initial state and settings for the animation
|
||||
if (!pinSection || listItems.length === 0 || slides.length === 0) {
|
||||
console.warn("Missing required elements for animation.");
|
||||
} else {
|
||||
gsap.set(listItems, { autoAlpha: 0 });
|
||||
gsap.set(slides, { autoAlpha: 0, display: "none" });
|
||||
|
||||
gsap.set(listItems[0], { autoAlpha: 1 });
|
||||
gsap.set(slides[0], { autoAlpha: 1, display: "block" });
|
||||
gsap.set(pinSection, { backgroundImage: backgroundPatterns[0], backgroundColor: "white" });
|
||||
|
||||
const totalSteps = listItems.length;
|
||||
const endDistance = totalSteps * 80; // Set the scroll length
|
||||
const endString = "+=" + endDistance + "%";
|
||||
|
||||
const tl = gsap.timeline({
|
||||
scrollTrigger: {
|
||||
trigger: pinSection,
|
||||
start: "top top",
|
||||
end: endString,
|
||||
pin: true,
|
||||
scrub: true
|
||||
}
|
||||
});
|
||||
|
||||
tl.to({}, { duration: 0.4 });
|
||||
|
||||
// The initial fill scale so it represents a single list item
|
||||
listItems.forEach((item, i) => {
|
||||
if (i > 0) {
|
||||
tl.to(item, { autoAlpha: 1, duration: 0.2 }, "+=0.4")
|
||||
.to(slides[i], { autoAlpha: 1, display: "block", duration: 0.2 }, "<")
|
||||
.to(listItems[i - 1], { autoAlpha: 0, duration: 0.2 }, "<0.2")
|
||||
.to(slides[i - 1], { autoAlpha: 0, display: "none", duration: 0.2 }, "<")
|
||||
// set the background for this step (use a tiny instant tween so ScrollTrigger respects it)
|
||||
.set(pinSection, { backgroundImage: backgroundPatterns[i] });
|
||||
}
|
||||
});
|
||||
|
||||
// Ensures the final state stays visible
|
||||
tl.to(listItems[totalSteps - 1], { autoAlpha: 1, duration: 0.2 }, "+=0.5")
|
||||
.set(pinSection, { backgroundImage: backgroundPatterns[totalSteps - 1] });
|
||||
}
|
||||
|
||||
// Attach links to pages
|
||||
const links = ['#', '/words', '/visuals', '/technical'];
|
||||
document.querySelectorAll('.list li').forEach((item, index) => {
|
||||
item.innerHTML = `<a href="${links[index]}">${item.innerHTML}</a>`;
|
||||
});
|
||||
document.querySelectorAll('.slide').forEach((slide, index) => {
|
||||
slide.innerHTML = `<a href="${links[index]}">${slide.innerHTML}</a>`;
|
||||
});
|
||||
});
|
||||
|
||||
// Hide the scroll icon when at the end of the page
|
||||
window.addEventListener('scroll', function () {
|
||||
if (window.innerHeight + window.scrollY >= document.body.offsetHeight) {
|
||||
document.getElementById('down-arrow').classList.add('hidden');
|
||||
}
|
||||
});
|
||||
BIN
deploy/assets/media/affinity-logo-160x160.png
Executable file
|
After Width: | Height: | Size: 5.2 KiB |
BIN
deploy/assets/media/berlin-logo-1000x1000.png
Executable file
|
After Width: | Height: | Size: 186 KiB |
BIN
deploy/assets/media/berlin-writers-workshop-1516x1516.webp
Executable file
|
After Width: | Height: | Size: 37 KiB |
BIN
deploy/assets/media/coursera-logo-600x600.png
Executable file
|
After Width: | Height: | Size: 6.7 KiB |
BIN
deploy/assets/media/davinciresolve-logo-640x640.png
Executable file
|
After Width: | Height: | Size: 175 KiB |
BIN
deploy/assets/media/doc-detective-logo-200x200.png
Executable file
|
After Width: | Height: | Size: 12 KiB |
BIN
deploy/assets/media/face-1276x1276.webp
Executable file
|
After Width: | Height: | Size: 102 KiB |
BIN
deploy/assets/media/face-favicon-512x512.png
Executable file
|
After Width: | Height: | Size: 82 KiB |
BIN
deploy/assets/media/git-link-512x512.png
Executable file
|
After Width: | Height: | Size: 9.2 KiB |
BIN
deploy/assets/media/id-card-icon-512x512.png
Executable file
|
After Width: | Height: | Size: 7.1 KiB |
BIN
deploy/assets/media/krita-logo-640x640.png
Executable file
|
After Width: | Height: | Size: 242 KiB |
BIN
deploy/assets/media/languages-icon-512x512.png
Executable file
|
After Width: | Height: | Size: 13 KiB |
BIN
deploy/assets/media/linkedin-logo-512x512.png
Executable file
|
After Width: | Height: | Size: 6.6 KiB |
BIN
deploy/assets/media/mambu-cli-1638x1355.jpg
Executable file
|
After Width: | Height: | Size: 144 KiB |
BIN
deploy/assets/media/mambu-logo-272x263.png
Executable file
|
After Width: | Height: | Size: 30 KiB |
BIN
deploy/assets/media/mermaid-logo-200x200.png
Executable file
|
After Width: | Height: | Size: 20 KiB |
BIN
deploy/assets/media/modelcontextprotocol-logo-640x640.png
Executable file
|
After Width: | Height: | Size: 153 KiB |
BIN
deploy/assets/media/mpo-complex-process-2355x1237.png
Executable file
|
After Width: | Height: | Size: 357 KiB |
BIN
deploy/assets/media/n8n-logo-640x640.png
Executable file
|
After Width: | Height: | Size: 90 KiB |
BIN
deploy/assets/media/ollama-logo-640x640.png
Executable file
|
After Width: | Height: | Size: 138 KiB |
BIN
deploy/assets/media/site-link-512x512.png
Executable file
|
After Width: | Height: | Size: 14 KiB |
BIN
deploy/assets/media/spread-ai-logo-125x144.png
Executable file
|
After Width: | Height: | Size: 7 KiB |
BIN
deploy/assets/media/spread-docs-site-3456x2160.png
Executable file
|
After Width: | Height: | Size: 1.6 MiB |
BIN
deploy/assets/media/spread-docs-v1-3024x1890.png
Executable file
|
After Width: | Height: | Size: 364 KiB |
BIN
deploy/assets/media/spread-docs-v2-3024x1890.png
Executable file
|
After Width: | Height: | Size: 1.2 MiB |
BIN
deploy/assets/media/spread-docs-v3-3456x2170.png
Executable file
|
After Width: | Height: | Size: 1.7 MiB |
BIN
deploy/assets/media/spread-glossary-3456x2168.png
Executable file
|
After Width: | Height: | Size: 542 KiB |
BIN
deploy/assets/media/technical-face-1276x1276.webp
Executable file
|
After Width: | Height: | Size: 28 KiB |
BIN
deploy/assets/media/technical-writing-icon-512x512.png
Executable file
|
After Width: | Height: | Size: 9.9 KiB |
BIN
deploy/assets/media/treehouse-logo-178x200.webp
Executable file
|
After Width: | Height: | Size: 7.6 KiB |