diff --git a/.DS_Store b/.DS_Store
index 279ec63..e8276eb 100644
Binary files a/.DS_Store and b/.DS_Store differ
diff --git a/package-lock.json b/package-lock.json
index fc0be01..d1d924b 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -8,6 +8,7 @@
"name": "fiveq-website",
"version": "1.0.0",
"dependencies": {
+ "@fontsource/manrope": "^5.2.8",
"@iconify-json/lucide": "^1.2.32",
"astro": "^5.7.10",
"astro-icon": "^1.1.5"
@@ -590,6 +591,15 @@
"node": ">=18"
}
},
+ "node_modules/@fontsource/manrope": {
+ "version": "5.2.8",
+ "resolved": "https://registry.npmmirror.com/@fontsource/manrope/-/manrope-5.2.8.tgz",
+ "integrity": "sha512-gJHJmcuUk7qWcNCfcAri/DJQtXtBYqi9yKratr4jXhSo0I3xUtNNKI+igQIcw5c+m95g0vounk8ZnX/kb8o0TA==",
+ "license": "OFL-1.1",
+ "funding": {
+ "url": "https://github.com/sponsors/ayuhito"
+ }
+ },
"node_modules/@iconify-json/lucide": {
"version": "1.2.101",
"resolved": "https://mirrors.cloud.tencent.com/npm/@iconify-json/lucide/-/lucide-1.2.101.tgz",
diff --git a/package.json b/package.json
index 3b99c26..ae34273 100644
--- a/package.json
+++ b/package.json
@@ -8,8 +8,9 @@
"preview": "astro preview"
},
"dependencies": {
+ "@fontsource/manrope": "^5.2.8",
+ "@iconify-json/lucide": "^1.2.32",
"astro": "^5.7.10",
- "astro-icon": "^1.1.5",
- "@iconify-json/lucide": "^1.2.32"
+ "astro-icon": "^1.1.5"
}
}
diff --git a/public/_headers b/public/_headers
new file mode 100644
index 0000000..12bbe46
--- /dev/null
+++ b/public/_headers
@@ -0,0 +1,36 @@
+# Cache static assets for 1 year (content hashed filenames ensure cache busting)
+/_astro/*
+ Cache-Control: public, max-age=31536000, immutable
+
+# Fonts — cache for 1 year
+/fonts/*
+ Cache-Control: public, max-age=31536000, immutable
+
+# Images — cache for 1 year
+/images/*
+ Cache-Control: public, max-age=31536000, immutable
+
+# HTML pages — no cache (always fetch latest)
+/index.html
+ Cache-Control: no-cache
+
+/about/*
+ Cache-Control: no-cache
+
+/curriculum/*
+ Cache-Control: no-cache
+
+/faculty/*
+ Cache-Control: no-cache
+
+/teaching-philosophy/*
+ Cache-Control: no-cache
+
+/en/*
+ Cache-Control: no-cache
+
+/ja/*
+ Cache-Control: no-cache
+
+/fr/*
+ Cache-Control: no-cache
diff --git a/public/fonts/manrope-latin-400-normal.woff2 b/public/fonts/manrope-latin-400-normal.woff2
new file mode 100644
index 0000000..7eaaa95
Binary files /dev/null and b/public/fonts/manrope-latin-400-normal.woff2 differ
diff --git a/public/fonts/manrope-latin-600-normal.woff2 b/public/fonts/manrope-latin-600-normal.woff2
new file mode 100644
index 0000000..7cc09a3
Binary files /dev/null and b/public/fonts/manrope-latin-600-normal.woff2 differ
diff --git a/public/fonts/manrope-latin-700-normal.woff2 b/public/fonts/manrope-latin-700-normal.woff2
new file mode 100644
index 0000000..84f7af5
Binary files /dev/null and b/public/fonts/manrope-latin-700-normal.woff2 differ
diff --git a/public/fonts/manrope-latin-800-normal.woff2 b/public/fonts/manrope-latin-800-normal.woff2
new file mode 100644
index 0000000..b5cd400
Binary files /dev/null and b/public/fonts/manrope-latin-800-normal.woff2 differ
diff --git a/public/fonts/manrope-latin-ext-400-normal.woff2 b/public/fonts/manrope-latin-ext-400-normal.woff2
new file mode 100644
index 0000000..a56d446
Binary files /dev/null and b/public/fonts/manrope-latin-ext-400-normal.woff2 differ
diff --git a/public/fonts/manrope-latin-ext-600-normal.woff2 b/public/fonts/manrope-latin-ext-600-normal.woff2
new file mode 100644
index 0000000..9ceb22a
Binary files /dev/null and b/public/fonts/manrope-latin-ext-600-normal.woff2 differ
diff --git a/public/fonts/manrope-latin-ext-700-normal.woff2 b/public/fonts/manrope-latin-ext-700-normal.woff2
new file mode 100644
index 0000000..5e6b5ae
Binary files /dev/null and b/public/fonts/manrope-latin-ext-700-normal.woff2 differ
diff --git a/public/fonts/manrope-latin-ext-800-normal.woff2 b/public/fonts/manrope-latin-ext-800-normal.woff2
new file mode 100644
index 0000000..2e69061
Binary files /dev/null and b/public/fonts/manrope-latin-ext-800-normal.woff2 differ
diff --git a/public/fonts/manrope.css b/public/fonts/manrope.css
new file mode 100644
index 0000000..5863644
--- /dev/null
+++ b/public/fonts/manrope.css
@@ -0,0 +1,73 @@
+/* Self-hosted Manrope font — eliminates slow Google Fonts CDN dependency */
+
+@font-face {
+ font-family: 'Manrope';
+ src: url('/fonts/manrope-latin-400-normal.woff2') format('woff2');
+ font-weight: 400;
+ font-style: normal;
+ font-display: swap;
+ unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
+}
+
+@font-face {
+ font-family: 'Manrope';
+ src: url('/fonts/manrope-latin-ext-400-normal.woff2') format('woff2');
+ font-weight: 400;
+ font-style: normal;
+ font-display: swap;
+ unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
+}
+
+@font-face {
+ font-family: 'Manrope';
+ src: url('/fonts/manrope-latin-600-normal.woff2') format('woff2');
+ font-weight: 600;
+ font-style: normal;
+ font-display: swap;
+ unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
+}
+
+@font-face {
+ font-family: 'Manrope';
+ src: url('/fonts/manrope-latin-ext-600-normal.woff2') format('woff2');
+ font-weight: 600;
+ font-style: normal;
+ font-display: swap;
+ unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
+}
+
+@font-face {
+ font-family: 'Manrope';
+ src: url('/fonts/manrope-latin-700-normal.woff2') format('woff2');
+ font-weight: 700;
+ font-style: normal;
+ font-display: swap;
+ unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
+}
+
+@font-face {
+ font-family: 'Manrope';
+ src: url('/fonts/manrope-latin-ext-700-normal.woff2') format('woff2');
+ font-weight: 700;
+ font-style: normal;
+ font-display: swap;
+ unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
+}
+
+@font-face {
+ font-family: 'Manrope';
+ src: url('/fonts/manrope-latin-800-normal.woff2') format('woff2');
+ font-weight: 800;
+ font-style: normal;
+ font-display: swap;
+ unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
+}
+
+@font-face {
+ font-family: 'Manrope';
+ src: url('/fonts/manrope-latin-ext-800-normal.woff2') format('woff2');
+ font-weight: 800;
+ font-style: normal;
+ font-display: swap;
+ unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
+}
diff --git a/public/images/index-hero-bg.webp b/public/images/index-hero-bg.webp
index 93462ee..eaca92b 100644
Binary files a/public/images/index-hero-bg.webp and b/public/images/index-hero-bg.webp differ
diff --git a/public/images/index-left.webp b/public/images/index-left.webp
index e70e158..a8780fc 100644
Binary files a/public/images/index-left.webp and b/public/images/index-left.webp differ
diff --git a/public/images/sketch/165dc7c938317262993013e2bf7108b0d8429d1e.webp b/public/images/sketch/165dc7c938317262993013e2bf7108b0d8429d1e.webp
index f24d70f..a1f5a07 100644
Binary files a/public/images/sketch/165dc7c938317262993013e2bf7108b0d8429d1e.webp and b/public/images/sketch/165dc7c938317262993013e2bf7108b0d8429d1e.webp differ
diff --git a/public/images/sketch/1abbe19f0bf338ca5914e4918c80e2a0166fb3c6.webp b/public/images/sketch/1abbe19f0bf338ca5914e4918c80e2a0166fb3c6.webp
index 4047918..4f9577e 100644
Binary files a/public/images/sketch/1abbe19f0bf338ca5914e4918c80e2a0166fb3c6.webp and b/public/images/sketch/1abbe19f0bf338ca5914e4918c80e2a0166fb3c6.webp differ
diff --git a/public/images/sketch/3cfbe88194be43bcc0ab7a8e987c4d7eaad93ef5.webp b/public/images/sketch/3cfbe88194be43bcc0ab7a8e987c4d7eaad93ef5.webp
index 0474931..2df111d 100644
Binary files a/public/images/sketch/3cfbe88194be43bcc0ab7a8e987c4d7eaad93ef5.webp and b/public/images/sketch/3cfbe88194be43bcc0ab7a8e987c4d7eaad93ef5.webp differ
diff --git a/public/images/sketch/3fb13b6b14a9c9c38c19f57b131e9dbb84e9d2a8.webp b/public/images/sketch/3fb13b6b14a9c9c38c19f57b131e9dbb84e9d2a8.webp
index 2178b1a..86df786 100644
Binary files a/public/images/sketch/3fb13b6b14a9c9c38c19f57b131e9dbb84e9d2a8.webp and b/public/images/sketch/3fb13b6b14a9c9c38c19f57b131e9dbb84e9d2a8.webp differ
diff --git a/public/images/sketch/4f0c158d4abd3ded7bc18fb50aedeedc77691076.webp b/public/images/sketch/4f0c158d4abd3ded7bc18fb50aedeedc77691076.webp
index 45521d9..2e80d38 100644
Binary files a/public/images/sketch/4f0c158d4abd3ded7bc18fb50aedeedc77691076.webp and b/public/images/sketch/4f0c158d4abd3ded7bc18fb50aedeedc77691076.webp differ
diff --git a/public/images/sketch/53f5e9c4751757b91531fd260cf01f6eff8e1278.webp b/public/images/sketch/53f5e9c4751757b91531fd260cf01f6eff8e1278.webp
index 751a178..e47317c 100644
Binary files a/public/images/sketch/53f5e9c4751757b91531fd260cf01f6eff8e1278.webp and b/public/images/sketch/53f5e9c4751757b91531fd260cf01f6eff8e1278.webp differ
diff --git a/public/images/sketch/67a807fec1b784684e1a026f0ee01f5072a571c7.webp b/public/images/sketch/67a807fec1b784684e1a026f0ee01f5072a571c7.webp
index 7869a2f..0b2cf9e 100644
Binary files a/public/images/sketch/67a807fec1b784684e1a026f0ee01f5072a571c7.webp and b/public/images/sketch/67a807fec1b784684e1a026f0ee01f5072a571c7.webp differ
diff --git a/public/images/sketch/6de9aa9e5d23da3009d3776b55c3b84c02a5aaa2.webp b/public/images/sketch/6de9aa9e5d23da3009d3776b55c3b84c02a5aaa2.webp
index ca284f7..d741891 100644
Binary files a/public/images/sketch/6de9aa9e5d23da3009d3776b55c3b84c02a5aaa2.webp and b/public/images/sketch/6de9aa9e5d23da3009d3776b55c3b84c02a5aaa2.webp differ
diff --git a/public/images/sketch/7cdc25ddd57dfe8b8394e8b3ed7ffc28225b6471.webp b/public/images/sketch/7cdc25ddd57dfe8b8394e8b3ed7ffc28225b6471.webp
index 679af95..e28feea 100644
Binary files a/public/images/sketch/7cdc25ddd57dfe8b8394e8b3ed7ffc28225b6471.webp and b/public/images/sketch/7cdc25ddd57dfe8b8394e8b3ed7ffc28225b6471.webp differ
diff --git a/public/images/sketch/8f23517eccd3e10f8cdc63887d23cd0aaaa75181.webp b/public/images/sketch/8f23517eccd3e10f8cdc63887d23cd0aaaa75181.webp
index 552e5e0..b219c6f 100644
Binary files a/public/images/sketch/8f23517eccd3e10f8cdc63887d23cd0aaaa75181.webp and b/public/images/sketch/8f23517eccd3e10f8cdc63887d23cd0aaaa75181.webp differ
diff --git a/public/images/sketch/9286e6b5a91d38938547ebf3909e5d6886e79899.webp b/public/images/sketch/9286e6b5a91d38938547ebf3909e5d6886e79899.webp
index 6f77756..017d8ff 100644
Binary files a/public/images/sketch/9286e6b5a91d38938547ebf3909e5d6886e79899.webp and b/public/images/sketch/9286e6b5a91d38938547ebf3909e5d6886e79899.webp differ
diff --git a/public/images/sketch/abfcce4aed0c6b426ced3e4a00ca599ddb0bc080.webp b/public/images/sketch/abfcce4aed0c6b426ced3e4a00ca599ddb0bc080.webp
index a4d40ba..2880c56 100644
Binary files a/public/images/sketch/abfcce4aed0c6b426ced3e4a00ca599ddb0bc080.webp and b/public/images/sketch/abfcce4aed0c6b426ced3e4a00ca599ddb0bc080.webp differ
diff --git a/public/images/sketch/d47cf2285609fda9339d16a5dae947ac4f22416e.webp b/public/images/sketch/d47cf2285609fda9339d16a5dae947ac4f22416e.webp
index 254d4ac..1590934 100644
Binary files a/public/images/sketch/d47cf2285609fda9339d16a5dae947ac4f22416e.webp and b/public/images/sketch/d47cf2285609fda9339d16a5dae947ac4f22416e.webp differ
diff --git a/public/images/sketch/d5c638f4b093f233101f28a2872f10f3172a3ac4.webp b/public/images/sketch/d5c638f4b093f233101f28a2872f10f3172a3ac4.webp
index 47421c9..0934805 100644
Binary files a/public/images/sketch/d5c638f4b093f233101f28a2872f10f3172a3ac4.webp and b/public/images/sketch/d5c638f4b093f233101f28a2872f10f3172a3ac4.webp differ
diff --git a/public/images/sketch/e008645eb4e8bd0b78d8a748abedf9702a1944c0.webp b/public/images/sketch/e008645eb4e8bd0b78d8a748abedf9702a1944c0.webp
index 6f7a099..010c507 100644
Binary files a/public/images/sketch/e008645eb4e8bd0b78d8a748abedf9702a1944c0.webp and b/public/images/sketch/e008645eb4e8bd0b78d8a748abedf9702a1944c0.webp differ
diff --git a/public/images/sketch/eb55da7436f1cf69f9ce2a44234033426361d80d.webp b/public/images/sketch/eb55da7436f1cf69f9ce2a44234033426361d80d.webp
index b31b9a1..621289f 100644
Binary files a/public/images/sketch/eb55da7436f1cf69f9ce2a44234033426361d80d.webp and b/public/images/sketch/eb55da7436f1cf69f9ce2a44234033426361d80d.webp differ
diff --git a/public/images/study.webp b/public/images/study.webp
index e76f315..d5e4b83 100644
Binary files a/public/images/study.webp and b/public/images/study.webp differ
diff --git a/public/images/teacher.webp b/public/images/teacher.webp
index a8763df..e2d7ce2 100644
Binary files a/public/images/teacher.webp and b/public/images/teacher.webp differ
diff --git a/src/layouts/BaseLayout.astro b/src/layouts/BaseLayout.astro
index 9fbf020..ffaab15 100644
--- a/src/layouts/BaseLayout.astro
+++ b/src/layouts/BaseLayout.astro
@@ -28,12 +28,7 @@ const htmlLangAttr = htmlLang[lang];
))}
-
-
-
+