-
\ No newline at end of file
+
diff --git a/src/components/Hero/EmailButton.astro b/src/components/Hero/EmailButton.astro
new file mode 100644
index 0000000..051a715
--- /dev/null
+++ b/src/components/Hero/EmailButton.astro
@@ -0,0 +1,131 @@
+---
+import { Icon } from 'astro-icon/components';
+import { siteData } from '../../data/site';
+
+interface Props {
+ label: string;
+ icon: string;
+}
+
+const { label, icon } = Astro.props;
+const safeEmail = siteData.email;
+const clipboardHandler = `navigator.clipboard.writeText('${safeEmail}').then(()=>{const btn=this.querySelector('.copy-button') || this; btn.dataset.copied='true'; setTimeout(()=>{ delete btn.dataset.copied }, 1200)})`;
+---
+
+
+
+
diff --git a/src/components/Hero/Page.astro b/src/components/Hero/Page.astro
index 1fc68bd..2e464a6 100644
--- a/src/components/Hero/Page.astro
+++ b/src/components/Hero/Page.astro
@@ -3,9 +3,12 @@ import {age} from "../../utils/getAge"
import {study} from "../../utils/getCurrentStudy"
import hero_img from "../../assets/hero.png"
-const hero_img_src = `url(${hero_img.src})`;
import Button from "./Button.astro"
+import EmailButton from "./EmailButton.astro"
+
+const hero_img_src = `url(${hero_img.src})`;
+
---
@@ -16,8 +19,8 @@ import Button from "./Button.astro"
-
-
+
+
@@ -29,47 +32,104 @@ import Button from "./Button.astro"
#container {
font-family: Inter, Roboto, 'Helvetica Neue', 'Arial Nova', 'Nimbus Sans', Arial, sans-serif;
- height: 60dvh;
- margin: 10px 10px 0px 10px;
- background:rgb(172, 146, 116);
- background-image: var(--hero_img_src) !important;
+ position: relative;
+ min-height: clamp(420px, 58vh, 680px);
+ margin: 10px;
+ padding: clamp(1.5rem, 3vw, 2.5rem);
+ background: radial-gradient(circle at 15% 18%, rgba(255, 246, 228, 0.32), transparent 24%),
+ linear-gradient(180deg, rgba(255, 255, 255, 0.1), rgba(10, 10, 10, 0.24)),
+ var(--hero_img_src);
background-size: cover;
background-position: center;
- background-blend-mode: hue;
- border-radius: 10pt;
+ border-radius: 20px;
+ box-shadow: 0 24px 60px rgba(16, 14, 12, 0.18);
+ overflow: hidden;
+ display: flex;
+ flex-direction: column;
+ justify-content: flex-start;
+ animation: driftBackground 16s ease-in-out infinite alternate;
}
.buttonContainer {
- padding-left:10px;
display: flex;
- justify-content: start;
- gap:10px;
+ flex-wrap: wrap;
+ align-items: center;
+ justify-content: flex-start;
+ gap: 1rem;
+ margin-top: 1.4rem;
+ padding: 0;
+ }
+
+ .buttonContainer > * {
+ flex: 0 1 auto;
+ }
+
+ .titleContainer {
+ display: flex;
+ flex-direction: column;
+ gap: 0.9rem;
}
h1, h3 {
font-family: "Work Sans", sans-serif;
font-optical-sizing: auto;
font-style: normal;
- margin:0;
+ margin: 0;
+ color: #ecfbff;
}
.main-title {
- font-size: max(min(8dvw, 130px), 30px);
- font-weight: 600;
-
+ font-size: clamp(2.5rem, 6vw, 5.25rem);
+ font-weight: 700;
+ line-height: 0.95;
+ letter-spacing: -0.03em;
+ animation: floatText 10s ease-in-out infinite alternate;
}
.sub-title {
- font-size: max(min(3dvw, 90px), 18px);
+ font-size: clamp(1.5rem, 2.5vw, 2.5rem);
font-weight: 300;
+ color: rgba(255, 255, 255, 0.9);
+ margin-top: 0.7rem;
+ opacity: 0.94;
}
+ @keyframes floatText {
+ 0% { transform: translateY(0); }
+ 100% { transform: translateY(-8px); }
+ }
+
+ @keyframes driftBackground {
+ 0% { background-position: center top; }
+ 100% { background-position: 12% 62%; }
+ }
+
+ @media (max-width: 900px) {
+ #container {
+ padding: 1.5rem 1.2rem;
+ }
-
- @media (max-width: 600px) {
.buttonContainer {
- justify-content: space-around;
- padding-left:0
+ justify-content: center;
+ }
+ }
+
+ @media (max-width: 760px) {
+ .buttonContainer {
+ justify-content: center;
+ gap: 0.85rem;
+ }
+ }
+
+ @media (max-width: 600px) {
+ #container {
+ min-height: 360px;
+ }
+
+ .buttonContainer {
+ justify-content: center;
+ gap: 0.8rem;
+ padding: 0.75rem 0 0;
}
}
diff --git a/src/data/site.ts b/src/data/site.ts
index 1eb52b2..9c69b24 100644
--- a/src/data/site.ts
+++ b/src/data/site.ts
@@ -1,5 +1,6 @@
export const siteData = {
name: "Valentijn van der Jagt",
+ email: "valentijnkijkuit@outlook.com",
birthDate: new Date("2006-06-27"),
studies: [
{