diff --git a/src/components/Hero.astro b/src/components/Hero.astro
index dca6b47..190e111 100644
--- a/src/components/Hero.astro
+++ b/src/components/Hero.astro
@@ -15,12 +15,18 @@ interface Props {
}
const {
- badge = "AI AGENCY ในประเทศไทย",
- title = "เว็บไซต์ที่ขายได้ ไม่ใช่แค่สวย",
- subtitle = "เราออกแบบเว็บไซต์ + AI Chatbot + Marketing Automation ให้ธุรกิจไทย เพิ่มยอดขายเฉลี่ย 2–4 เท่า ภายใน 6 เดือน ด้วยงบที่จับต้องได้ เริ่มต้น 15,000 บาท",
+ badge = 'เราจะช่วยคุณเพิ่มกำไร',
+ title = 'เราช่วยวางระบบงาน และใช้สถิติวางกลยุทธ์ทางการตลาด',
+ subtitle = 'รับทำเว็บ ที่ปรึกษาการตลาด และวางระบบ AI ในองค์กร เริ่มจากดูสถิติของคุณก่อน ไม่ใช่เดาว่าควรทำอะไร',
showCTA = true,
- ctaText = "เริ่มปรึกษาฟรี",
- ctaLink = "/contact",
+ ctaText = 'เริ่มปรึกษาฟรี',
+ ctaLink = '/contact',
+ pains = [
+ { surface: 'yellow', text: 'ยิ่งขาย กำไรยิ่งลด?' },
+ { surface: 'purple-soft', text: 'มีเว็บไซต์ เหมือนไม่มี?' },
+ { surface: 'mint', text: 'พนักงานทำงานได้น้อยกว่าที่ต้องการ?' },
+ { surface: 'teal', text: 'เอา AI มาให้ใช้ แต่งานไม่ได้มากขึ้นตามที่คิด?' },
+ ],
} = Astro.props;
// Split title into words for kinetic animation
@@ -46,50 +52,66 @@ const titleWords = title.split(' ');
-
-
-
- {badge}
-
+
+
+
+
+
+
+
+ {badge}
+
-
-
- {titleWords.map((word, index) => (
-
-
- {word}
-
-
- ))}
-
+
+
+ {titleWords.map((word, index) => (
+
+
+ {word}
+
+
+ ))}
+
-
-
+
+
-
-
-
-
+
+
+
+
-
- {showCTA && (
-
- )}
-
+
+
+ {pains.map((p, i) => (
+
+
คุณกำลังเจอปัญหา
+
{p.text}
+
+ ))}
+
+
@@ -274,7 +296,103 @@ const titleWords = title.split(' ');
position: relative;
z-index: 1;
padding: 140px var(--gutter) 100px;
- max-width: 1200px;
+ max-width: 1600px;
+ }
+
+ /* ============================================
+ HERO GRID — 2 COLUMNS (text + pain stack)
+ ============================================ */
+
+ .hero-grid {
+ display: grid;
+ grid-template-columns: 1fr 1fr;
+ gap: 60px;
+ align-items: center;
+ }
+
+ .hero-text {
+ min-width: 0;
+ }
+
+ .hero-pain-stack {
+ display: flex;
+ flex-direction: column;
+ gap: 20px;
+ min-width: 0;
+ }
+
+ .pain-card {
+ padding: 28px 32px;
+ border-radius: var(--radius-xl);
+ box-shadow: 0 8px 30px rgba(0, 0, 0, 0.08);
+ border: 1px solid transparent;
+ opacity: 0;
+ transform: translateY(20px);
+ animation: painReveal 0.7s var(--ease-out-expo) var(--pain-delay, 0s) forwards;
+ transition: transform 0.4s var(--ease-out-expo);
+ }
+ .pain-card:hover {
+ transform: translateY(-4px);
+ }
+
+ @keyframes painReveal {
+ to {
+ opacity: 1;
+ transform: translateY(0);
+ }
+ }
+
+ .pain-yellow {
+ background: var(--color-primary);
+ color: var(--color-black);
+ }
+ .pain-purple-soft {
+ background: var(--color-purple-soft);
+ color: var(--color-black);
+ }
+ .pain-mint {
+ background: var(--color-mint-soft);
+ color: var(--color-black);
+ }
+ .pain-teal {
+ background: var(--color-teal);
+ color: var(--color-white);
+ }
+ .pain-teal .pain-eyebrow { color: var(--color-primary); }
+
+ .pain-eyebrow {
+ font-family: var(--font-display);
+ font-size: 11px;
+ font-weight: 800;
+ text-transform: uppercase;
+ letter-spacing: 2px;
+ opacity: 0.7;
+ margin-bottom: 8px;
+ }
+
+ .pain-text {
+ font-family: var(--font-display);
+ font-size: 22px;
+ font-weight: 800;
+ line-height: 1.3;
+ }
+
+ @media (max-width: 1024px) {
+ .hero-grid {
+ grid-template-columns: 1fr;
+ gap: 40px;
+ }
+ .hero-text {
+ order: 1;
+ }
+ .hero-pain-stack {
+ order: 2;
+ }
+ }
+
+ @media (max-width: 640px) {
+ .pain-text { font-size: 18px; }
+ .pain-card { padding: 20px 24px; }
}
/* ============================================
diff --git a/src/pages/index.astro b/src/pages/index.astro
index 2a540aa..ce9db47 100644
--- a/src/pages/index.astro
+++ b/src/pages/index.astro
@@ -76,8 +76,8 @@ const featuredPortfolio = portfolio.filter(p => p.data.featured).slice(0, 4);
@@ -137,7 +137,7 @@ const featuredPortfolio = portfolio.filter(p => p.data.featured).slice(0, 4);
@@ -167,8 +167,8 @@ const featuredPortfolio = portfolio.filter(p => p.data.featured).slice(0, 4);
objective: 'เพิ่มยอดขาย และความน่าเชื่อถือให้ธุรกิจ',
},
];
- // Equal 4x3 tiles (full width, 1 row)
- const span = 3;
+ // 2x2 layout — each tile span 6 (6+6 per row, 2 rows)
+ const span = 6;
const surface = (['yellow', 'purple-soft', 'mint', 'soft'] as const)[i];
const copy = tileCopy[i];
return (