diff --git a/app/freelance/layout.tsx b/app/freelance/layout.tsx
index ce11d72..becf6bd 100644
--- a/app/freelance/layout.tsx
+++ b/app/freelance/layout.tsx
@@ -3,7 +3,7 @@ import type { Metadata } from 'next';
export const metadata: Metadata = {
title: '외주 개발 의뢰',
description:
- '계약서 먼저, 납기 지키고, 소스코드 100% 인도. 47건 납품 완료. 현직 대기업 백엔드 개발자에게 외주 개발을 맡겨보세요. 납기 지연 시 하루 10만 원 패널티.',
+ '계약서 먼저, 납기 지키고, 소스코드 100% 인도. 47건 납품 완료. 현직 실무 엔지니어에게 외주 개발을 맡겨보세요. 납기 지연 시 하루 10만 원 패널티.',
keywords: [
'외주 개발',
'프리랜서 개발자',
diff --git a/app/freelance/page.tsx b/app/freelance/page.tsx
index 993758c..2d76179 100644
--- a/app/freelance/page.tsx
+++ b/app/freelance/page.tsx
@@ -308,7 +308,7 @@ export default function FreelancePage() {
쟁토리 (박재오)
-
대기업 백엔드 7년 · Python / Java / Next.js
+
실무 엔지니어 · Python / Java / Next.js
{['Python', 'Java', 'Next.js', 'Docker'].map(t => (
diff --git a/app/globals.css b/app/globals.css
index 7604e43..f10d5fe 100644
--- a/app/globals.css
+++ b/app/globals.css
@@ -35,6 +35,20 @@
--sidebar-bg: #04102b;
--card-bg: #ffffff;
--border: #dbe8ff;
+
+ /* ─── Kinetic Ether Tokens (다크 테마 섹션 전용) ─── */
+ --kx-surface: #060e20;
+ --kx-surface-low: #091328;
+ --kx-surface-mid: #0f1930;
+ --kx-surface-high: #141f38;
+ --kx-surface-bright: #1f2b49;
+ --kx-on-surface: #dee5ff;
+ --kx-on-variant: #a3aac4;
+ --kx-primary: #cc97ff;
+ --kx-primary-dim: #9c48ea;
+ --kx-secondary: #53ddfc;
+ --kx-secondary-dim: #40ceed;
+ --kx-outline: rgba(64, 72, 93, 0.15);
}
@theme inline {
@@ -84,6 +98,82 @@ body {
background-clip: text;
}
+/* ─── Kinetic Ether 유틸리티 ─── */
+.kx-section {
+ background: var(--kx-surface);
+ color: var(--kx-on-surface);
+ font-family: 'Space Grotesk', 'Inter', 'CookieRun', system-ui, sans-serif;
+}
+.kx-section p, .kx-section li, .kx-section span:not(.kx-label) {
+ color: var(--kx-on-variant);
+}
+.kx-display {
+ font-family: 'Space Grotesk', 'CookieRun', system-ui, sans-serif;
+ letter-spacing: -0.02em;
+ color: var(--kx-on-surface);
+}
+.kx-label {
+ font-family: 'Manrope', 'Inter', system-ui, sans-serif;
+ font-size: 0.6875rem;
+ font-weight: 700;
+ letter-spacing: 0.08em;
+ text-transform: uppercase;
+ color: var(--kx-secondary);
+}
+.kx-folder {
+ background: var(--kx-surface-mid);
+ border-radius: 0.75rem 0.75rem 0.125rem 0.125rem;
+ padding: 1.5rem;
+ position: relative;
+}
+.kx-folder::before {
+ content: '';
+ position: absolute; top: 0; left: 0; right: 0; height: 1px;
+ background: linear-gradient(90deg, transparent, rgba(204,151,255,0.3), transparent);
+}
+.kx-glass {
+ background: rgba(25, 37, 64, 0.6);
+ backdrop-filter: blur(20px);
+ -webkit-backdrop-filter: blur(20px);
+ border-radius: 1rem;
+}
+.kx-glow {
+ box-shadow: 0 0 40px 0 rgba(156, 72, 234, 0.25),
+ 0 0 80px 0 rgba(83, 221, 252, 0.08);
+}
+.kx-btn-primary {
+ background: linear-gradient(135deg, #cc97ff 0%, #c284ff 100%);
+ color: #0b0113;
+ font-weight: 700;
+ box-shadow: 0 0 20px 0 rgba(168, 85, 247, 0.4);
+ transition: transform 0.15s ease, box-shadow 0.15s ease;
+}
+.kx-btn-primary:hover {
+ transform: translateY(-1px);
+ box-shadow: 0 0 28px 0 rgba(168, 85, 247, 0.55);
+}
+.kx-btn-ghost {
+ color: var(--kx-secondary);
+ background: transparent;
+ transition: background 0.15s ease;
+}
+.kx-btn-ghost:hover {
+ background: var(--kx-surface-bright);
+}
+.kx-gradient-text {
+ background: linear-gradient(135deg, #cc97ff 0%, #53ddfc 100%);
+ -webkit-background-clip: text;
+ -webkit-text-fill-color: transparent;
+ background-clip: text;
+}
+.kx-orb {
+ position: absolute;
+ border-radius: 9999px;
+ filter: blur(80px);
+ opacity: 0.35;
+ pointer-events: none;
+}
+
/* Service card hover */
.service-card {
transition: transform 0.2s ease, box-shadow 0.2s ease;
diff --git a/app/layout.tsx b/app/layout.tsx
index aef1f7a..0432bd7 100644
--- a/app/layout.tsx
+++ b/app/layout.tsx
@@ -1,15 +1,20 @@
import type { Metadata } from "next";
import Script from "next/script";
+import { Space_Grotesk, Inter, Manrope } from "next/font/google";
import "./globals.css";
import DashboardShell from "./components/DashboardShell";
+const spaceGrotesk = Space_Grotesk({ subsets: ["latin"], variable: "--font-kx-display", display: "swap" });
+const inter = Inter({ subsets: ["latin"], variable: "--font-kx-body", display: "swap" });
+const manrope = Manrope({ subsets: ["latin"], variable: "--font-kx-label", display: "swap" });
+
export const metadata: Metadata = {
title: {
default: "쟁승메이드 | AI 프롬프트 · 업무 자동화 · 사주 분석",
template: "%s | 쟁승메이드",
},
description:
- "AI 프롬프트 패키지, 업무 자동화 개발, AI 사주 분석까지. 7년차 현직 개발자가 직접 만들고 운영하는 AI 도구 스토어. 9,900원부터.",
+ "AI 음악·뮤비 구조 설계 팩, 블로그 자동화 팩, AI 사주 분석까지. 현직 엔지니어가 직접 설계·운영하는 AI 크리에이티브 스토어. 29,000원부터.",
keywords: [
"AI 프롬프트",
"ChatGPT 프롬프트",
@@ -30,7 +35,7 @@ export const metadata: Metadata = {
siteName: "쟁승메이드",
title: "쟁승메이드 | AI 프롬프트 · 업무 자동화 · 사주 분석",
description:
- "AI 프롬프트 패키지, 업무 자동화, AI 사주 분석. 7년차 현직 개발자가 만든 AI 도구 스토어.",
+ "AI 음악 구조 설계 팩, 블로그 자동화 팩, AI 사주 분석. 현직 엔지니어가 만든 AI 크리에이티브 스토어.",
images: [
{
url: "https://jaengseung-made.com/og-image.png",
@@ -65,14 +70,14 @@ const jsonLd = {
email: 'bgg8988@gmail.com',
telephone: '010-3907-1392',
knowsAbout: ['Python', 'Java', 'Spring Boot', 'Next.js', 'AI 프롬프트', 'AI 자동화', '업무 자동화', 'ChatGPT', 'Claude'],
- description: '7년차 현직 대기업 백엔드 개발자. AI 프롬프트 패키지, 업무 자동화, AI 사주 분석 등 AI 도구를 직접 개발·운영합니다.',
+ description: '현직 엔지니어. AI 음악 구조 설계 팩, 블로그 자동화 팩, AI 사주 분석 등 AI 크리에이티브 도구를 직접 개발·운영합니다.',
},
{
'@type': 'LocalBusiness',
'@id': 'https://jaengseung-made.com/#business',
name: '쟁승메이드',
url: 'https://jaengseung-made.com',
- description: 'AI 음악 작곡·뮤비 구조 설계 팩, 블로그 자동화 팩, AI 사주 분석. 7년차 현직 개발자가 직접 만들고 운영하는 AI 크리에이티브 스토어.',
+ description: 'AI 음악 작곡·뮤비 구조 설계 팩, 블로그 자동화 팩, AI 사주 분석. 현직 엔지니어가 직접 설계·운영하는 AI 크리에이티브 스토어.',
email: 'bgg8988@gmail.com',
telephone: '010-3907-1392',
priceRange: '₩',
@@ -96,7 +101,7 @@ export default function RootLayout({
children: React.ReactNode;
}) {
return (
-
+