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 ( - +