// tl-data.jsx — REAL content from tintlife.co.kr/oneday + shared atoms
// Exported to window at the end.

const CONTACT = {
  brand: "틴트라이프",
  brandEn: "tintlife",
  tel: "070-7537-0199",
  telLabel: "예약 / 가맹문의",
  email: "tintlife@naver.com",
  address: "수원시 영통구 대학1로 8번길 76 (이의동) 101호",
  bizno: "897-02-01896",
  naver: "https://naver.me/FQVcK3SG",
  more: "https://litt.ly/tintlife",
  instagram: "https://www.instagram.com/tint.life/",
  instaHandle: "@tint.life",
};

// ---- The one-day master class (REAL details) ----
const CLASS = {
  name: "틴트라이프 염색교육 원데이 마스터 클래스",
  nameEn: "TINTLIFE HAIR COLOR ONE-DAY MASTER CLASS",
  kicker: "ONE-DAY MASTER CLASS · 2026",
  guide: "Professional Dyeing Business Guide",
  heroTitle1: "AI, 실버 시대.",
  heroTitle2: "살아남는 단 하나의 기술",
  heroSub: "40대 이상 여성 맞춤형, 틴트라이프 염색기술 현장 체험 교육",
  lounge: "틴트라이프 헤어컬러 라운지",
  lede: "단 하루의 실전 경험으로 고민했던 확신을 찾아보세요. 원장 1:1 밀착 지도 아래 실제 모델 시술을 전 과정 체험합니다.",
  priceLabel: "무료",
  priceNote: "선착순 2명 · 중식 제공",
  day: "매주 수요일",
  time: "10:00 – 16:00",
  capacity: "선착순 2명",
  place: "틴트라이프 수원경기대점",
  meal: "중식 제공",
};

// "수요일 하루 배우게 될 것들" (real)
const CURRICULUM = [
  { step: "01", title: "염색컬러 상담법 & 시크릿 레시피", desc: "1만 건 이상의 누적 데이터로 정리한 컬러 상담법과 배합 레시피를 공개합니다.", tag: "이론·상담" },
  { step: "02", title: "실제 모델 시술 전 과정 체험", desc: "마네킹이 아닌 실제 모델에게, 원장 1:1 밀착 지도 아래 처음부터 끝까지 직접 시술합니다.", tag: "직접 실습" },
  { step: "03", title: "운영·서비스 노하우", desc: "예약 관리부터 정찰제 운영, 고객 재방문을 부르는 서비스 노하우까지 한 번에.", tag: "창업·운영" },
];

const INCLUDED = [
  { icon: "won", label: "수강료 전액 무료" },
  { icon: "leaf", label: "중식(점심) 제공" },
  { icon: "hand", label: "원장 1:1 밀착 지도" },
  { icon: "cert", label: "실제 모델 시술 체험" },
  { icon: "drop", label: "시크릿 컬러 레시피 공개" },
  { icon: "route", label: "창업·운영 노하우 상담" },
];

// 대상 (real)
const AUDIENCE = [
  "기술은 배우고 싶지만 염색방 창업이 막연하게 겁나시는 분",
  "커트·펌보다 관리가 쉬운 염색전문점에 관심 있으신 분",
  "내 시간을 자유롭게 쓰는 1인 창업을 꿈꾸는 주부님",
];

// 왜 (image02 + s004)
const VALUES = [
  { icon: "hand",  title: "단 하루의 실전 경험", desc: "이론만 듣다 끝나지 않습니다. 하루 만에 현장의 실전을 압축해 경험합니다." },
  { icon: "spark", title: "실제 모델 시술 체험", desc: "마네킹이 아닌 실제 모델. 원장 1:1 밀착 지도로 전 과정을 직접 해봅니다." },
  { icon: "drop",  title: "1만 건 데이터 레시피", desc: "5년간 누적한 1만 건 이상의 시술 데이터로 만든 시크릿 컬러 레시피를 공개합니다." },
  { icon: "route", title: "창업·운영까지 연결", desc: "기술을 넘어 예약·정찰제 운영, 재방문 서비스까지. 1인 창업의 길을 함께 그립니다." },
];

// 성과 / 신뢰 (s004, real)
const PROOF = [
  { v: "2021.02", k: "팬데믹 한복판에서 시작" },
  { v: "1만 건+", k: "누적 시술 경험 · 데이터" },
  { v: "0.1% 미만", k: "컴플레인율" },
];

// 브랜드 스토리 (s004, real)
const STORY = {
  q: "AI 시대, 왜 ‘틴트라이프’인가?",
  sub: "AI가 정복할 수 없는 마지막 성지 — 사람의 손길과 마음.",
  body: "지식 노동의 상당 부분이 AI로 대체되는 시대, 역설적으로 ‘인간의 실재적 접촉’이 필요한 산업의 가치는 폭등합니다. 틴트라이프는 ‘손기술’에 고객의 마음을 읽는 ‘마음기술’을 더해, AI 시대에 대체 불가능한 비즈니스 모델을 제시합니다.",
  proofTitle: "위기 속에 증명된 저력 (Since 2021.02)",
  worklife: ["연 2주 이상의 휴가", "일 9시간 이내의 업무 시간", "2026년 현재 안정적 매출 유지"],
  tagline: "Now, Here, For Your Tint Life",
};

// 교육생 후기 (예시 — 실제 후기로 교체하세요)
const REVIEWS = [
  { name: "김○희", tag: "50대 · 창업 준비", stars: 5, text: "구경만 하는 줄 알았는데 실제 모델에 직접 시술까지 해봤어요. 하루 만에 자신감이 생겼습니다." },
  { name: "이○정", tag: "40대 · 주부", stars: 5, text: "막연했던 염색방 창업이 그림이 그려졌어요. 정찰제 운영 이야기가 특히 도움이 됐습니다." },
  { name: "박○숙", tag: "50대 · 제2의 창업", stars: 5, text: "원장님이 1:1로 봐주시니 초보인 저도 끝까지 따라갈 수 있었어요. 무료에 점심까지 감사했습니다." },
];

const FAQS = [
  { q: "정말 무료인가요?", a: "네, 수강료는 전액 무료이며 중식(점심)도 제공됩니다. 선착순 2명 소수정예로 운영됩니다." },
  { q: "언제, 어디서 진행되나요?", a: "매주 수요일 10:00~16:00에 진행됩니다. 장소는 틴트라이프 수원경기대점입니다." },
  { q: "미용을 한 번도 안 해봤는데 괜찮을까요?", a: "네. 원장이 1:1로 밀착 지도하며 실제 모델 시술을 처음부터 끝까지 함께하니 초보자도 괜찮습니다." },
  { q: "무엇을 배우나요?", a: "염색컬러 상담법과 1만 건 데이터의 시크릿 레시피, 실제 모델 시술 전 과정, 예약·정찰제 운영 등 창업·서비스 노하우를 배웁니다." },
  { q: "예약은 어떻게 하나요?", a: "네이버 예약 또는 전화(070-7537-0199)로 신청하실 수 있습니다. 선착순 2명으로 조기 마감될 수 있습니다." },
];

// ---- Tiny inline icon set (simple strokes only) ----
function Icon({ name, size = 22, stroke = 1.6 }) {
  const c = {
    width: size, height: size, viewBox: "0 0 24 24", fill: "none",
    stroke: "currentColor", strokeWidth: stroke, strokeLinecap: "round", strokeLinejoin: "round",
  };
  switch (name) {
    case "arrow":  return (<svg {...c}><path d="M5 12h14M13 6l6 6-6 6"/></svg>);
    case "arrowUp":return (<svg {...c}><path d="M12 19V5M6 11l6-6 6 6"/></svg>);
    case "menu":   return (<svg {...c}><path d="M4 7h16M4 12h16M4 17h16"/></svg>);
    case "close":  return (<svg {...c}><path d="M6 6l12 12M18 6L6 18"/></svg>);
    case "plus":   return (<svg {...c}><path d="M12 5v14M5 12h14"/></svg>);
    case "minus":  return (<svg {...c}><path d="M5 12h14"/></svg>);
    case "check":  return (<svg {...c}><path d="M5 12.5l4.5 4.5L19 7"/></svg>);
    case "phone":  return (<svg {...c}><path d="M4 5c0 8 7 15 15 15l1-3-4-2-2 2c-3-1.5-5.5-4-7-7l2-2-2-4-3 1Z"/></svg>);
    case "mail":   return (<svg {...c}><rect x="3" y="5" width="18" height="14" rx="2"/><path d="M4 7l8 6 8-6"/></svg>);
    case "pin":    return (<svg {...c}><path d="M12 21s7-6.5 7-12a7 7 0 1 0-14 0c0 5.5 7 12 7 12Z"/><circle cx="12" cy="9" r="2.4"/></svg>);
    case "clock":  return (<svg {...c}><circle cx="12" cy="12" r="9"/><path d="M12 7v5l3 2"/></svg>);
    case "won":    return (<svg {...c}><path d="M4 7l3 9 3-7 2 7 3-9"/><path d="M3 11h16"/></svg>);
    case "users":  return (<svg {...c}><circle cx="9" cy="9" r="3"/><path d="M3 19c0-3 3-5 6-5s6 2 6 5"/><path d="M16 7a3 3 0 0 1 0 5M21 19c0-2.2-1.4-3.6-3-4.3"/></svg>);
    case "cal":    return (<svg {...c}><rect x="3" y="5" width="18" height="16" rx="2"/><path d="M3 9h18M8 3v4M16 3v4"/></svg>);
    case "drop":   return (<svg {...c}><path d="M12 3s6 6.5 6 10.5A6 6 0 0 1 6 13.5C6 9.5 12 3 12 3Z"/></svg>);
    case "leaf":   return (<svg {...c}><path d="M5 19c0-7 6-13 14-13 0 8-6 14-14 13Z"/><path d="M5 19c3-4 6-6 9-7"/></svg>);
    case "route":  return (<svg {...c}><circle cx="6" cy="18" r="2.4"/><circle cx="18" cy="6" r="2.4"/><path d="M8 18h6a3 3 0 0 0 0-6H10a3 3 0 0 1 0-6h4"/></svg>);
    case "cert":   return (<svg {...c}><circle cx="12" cy="10" r="5"/><path d="M9 14l-1 7 4-2 4 2-1-7"/></svg>);
    case "spark":  return (<svg {...c}><path d="M12 3v5M12 16v5M3 12h5M16 12h5M6 6l3 3M15 15l3 3M18 6l-3 3M9 15l-3 3"/></svg>);
    case "hand":   return (<svg {...c}><path d="M7 11V6a1.5 1.5 0 0 1 3 0v4M10 10V4.5a1.5 1.5 0 0 1 3 0V10M13 10V6a1.5 1.5 0 0 1 3 0v6c0 4-2.5 7-6 7s-6-2-6-5l-1-3a1.4 1.4 0 0 1 2.4-1.3L7 12"/></svg>);
    case "meal":   return (<svg {...c}><path d="M5 3v8a2 2 0 0 0 4 0V3M7 11v10M17 3c-1.5 0-2.5 2-2.5 5s1 4 2.5 4M17 12v9"/></svg>);
    case "quote":  return (<svg {...c}><path d="M9 7H5v6h4l-2 4M19 7h-4v6h4l-2 4"/></svg>);
    case "instagram": return (<svg {...c}><rect x="3" y="3" width="18" height="18" rx="5"/><circle cx="12" cy="12" r="4"/><circle cx="17" cy="7" r="1" fill="currentColor" stroke="none"/></svg>);
    case "star":   return (<svg {...c} fill="currentColor" stroke="none"><path d="M12 3.5l2.6 5.3 5.9.9-4.3 4.1 1 5.8L12 17l-5.2 2.7 1-5.8L3.5 9.7l5.9-.9L12 3.5Z"/></svg>);
    default: return null;
  }
}

// Striped placeholder for photography we don't have yet.
function Placeholder({ label, ratio = "4 / 3", radius = 18, tone = "neutral", style = {} }) {
  const a = tone === "accent" ? "var(--accent-stripe-a)" : "var(--stripe-a)";
  const b = tone === "accent" ? "var(--accent-stripe-b)" : "var(--stripe-b)";
  return (
    <div style={{
      aspectRatio: ratio, width: "100%", borderRadius: radius,
      background: `repeating-linear-gradient(135deg, ${a} 0 13px, ${b} 13px 26px)`,
      display: "flex", alignItems: "flex-end", justifyContent: "flex-start",
      padding: 16, boxSizing: "border-box", overflow: "hidden",
      border: "1px solid var(--hairline)", ...style,
    }}>
      <span style={{
        fontFamily: "var(--mono)", fontSize: 11, letterSpacing: "0.04em",
        textTransform: "uppercase", color: "var(--muted)", background: "var(--surface)",
        padding: "5px 9px", borderRadius: 999, border: "1px solid var(--hairline)",
      }}>{label}</span>
    </div>
  );
}

const won = (n) => (typeof n === "number" ? n.toLocaleString("ko-KR") + "원" : n);

Object.assign(window, {
  CONTACT, CLASS, CURRICULUM, INCLUDED, AUDIENCE, VALUES, PROOF, STORY, REVIEWS, FAQS,
  Icon, Placeholder, won,
});
