const path = require('path');
module.paths.unshift(path.join(require('os').homedir(), '.claude/skills/pptx-skill/scripts/node_modules'));

const PptxGenJS = require('pptxgenjs');

async function main() {
    const pres = new PptxGenJS();
    pres.defineLayout({ name: 'CUSTOM_16x9', width: 10, height: 5.625 });
    pres.layout = 'CUSTOM_16x9';

    // ─── 브랜드 컬러 ───
    const C = {
        dark: '0D1B2A',
        navy: '1B2838',
        green: '2E7D32',
        greenLight: '4CAF50',
        greenBg: 'E8F5E9',
        greenBorder: 'C8E6C9',
        blue: '1565C0',
        blueBg: 'E3F2FD',
        blueBorder: 'BBDEFB',
        orange: 'E65100',
        orangeBg: 'FFF3E0',
        orangeBorder: 'FFE0B2',
        red: 'C62828',
        redBg: 'FFEBEE',
        white: 'FFFFFF',
        gray50: 'FAFAFA',
        gray100: 'F5F5F5',
        gray200: 'EEEEEE',
        gray400: 'BDBDBD',
        gray600: '757575',
        gray800: '424242',
        text: '212121',
        textSub: '616161',
    };

    // ─── 공통 함수 ───
    function addFooter(slide) {
        slide.addShape(pres.ShapeType.rect, { x: 0, y: 5.25, w: 10, h: 0.375, fill: { color: C.dark } });
        slide.addText('SAM 가격정책 안내서  |  (주)코드브릿지엑스', {
            x: 0.5, y: 5.25, w: 9, h: 0.375,
            fontSize: 7, color: '8899AA', fontFace: 'Arial'
        });
    }

    function addPageTitle(slide, title, subtitle) {
        // 왼쪽 액센트 바
        slide.addShape(pres.ShapeType.rect, { x: 0.5, y: 0.35, w: 0.06, h: 0.4, fill: { color: C.greenLight } });
        slide.addText(title, {
            x: 0.72, y: 0.3, w: 7, h: 0.5,
            fontSize: 20, bold: true, color: C.text, fontFace: 'Arial'
        });
        if (subtitle) {
            slide.addText(subtitle, {
                x: 0.72, y: 0.75, w: 7, h: 0.3,
                fontSize: 10, color: C.textSub, fontFace: 'Arial'
            });
        }
    }

    function addSlideNumber(slide, num, total) {
        slide.addText(`${num} / ${total}`, {
            x: 8.5, y: 5.25, w: 1, h: 0.375,
            fontSize: 7, color: '8899AA', align: 'right', fontFace: 'Arial'
        });
    }

    const TOTAL = 13;

    // ═══════════════════════════════════════════════════════
    // 슬라이드 1: 표지
    // ═══════════════════════════════════════════════════════
    const s1 = pres.addSlide();
    s1.background = { fill: C.dark };

    // 상단 그린 라인
    s1.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: 10, h: 0.06, fill: { color: C.greenLight } });

    // SAM 로고 영역
    s1.addShape(pres.ShapeType.roundRect, { x: 0.7, y: 1.2, w: 1.4, h: 0.5, rectRadius: 0.08, fill: { color: C.greenLight } });
    s1.addText('SAM', { x: 0.7, y: 1.2, w: 1.4, h: 0.5, fontSize: 22, bold: true, color: C.white, align: 'center', valign: 'middle', fontFace: 'Arial' });

    // 메인 타이틀
    s1.addText('가격정책 쉬운 안내서', {
        x: 0.7, y: 2.0, w: 8.6, h: 0.8,
        fontSize: 36, bold: true, color: C.white, fontFace: 'Arial'
    });
    s1.addText('영업파트너를 위한 SAM 서비스 요금 및 수당 가이드', {
        x: 0.7, y: 2.8, w: 8.6, h: 0.5,
        fontSize: 14, color: '8899AA', fontFace: 'Arial'
    });

    // 하단 정보
    s1.addShape(pres.ShapeType.rect, { x: 0.7, y: 3.8, w: 8.6, h: 0.01, fill: { color: '2A3A4A' } });
    s1.addText('(주)코드브릿지엑스  |  Smart Automation Management  |  2026', {
        x: 0.7, y: 4.0, w: 8.6, h: 0.4,
        fontSize: 10, color: '667788', fontFace: 'Arial'
    });

    // 하단 키워드 뱃지
    const badges = ['개발비 + 구독료', '수당 체계', '할인 정책', '시뮬레이터'];
    badges.forEach((b, i) => {
        const bx = 0.7 + i * 2.2;
        s1.addShape(pres.ShapeType.roundRect, { x: bx, y: 4.55, w: 2, h: 0.35, rectRadius: 0.06, fill: { color: '1B2838' }, line: { color: '2A3A4A', width: 0.5 } });
        s1.addText(b, { x: bx, y: 4.55, w: 2, h: 0.35, fontSize: 9, color: C.greenLight, align: 'center', valign: 'middle', fontFace: 'Arial' });
    });

    // ═══════════════════════════════════════════════════════
    // 슬라이드 2: 요금 구조 한눈에
    // ═══════════════════════════════════════════════════════
    const s2 = pres.addSlide();
    s2.background = { fill: C.white };
    addFooter(s2);
    addPageTitle(s2, '요금 구조 한눈에 보기', '고객이 내는 돈은 딱 2가지뿐');
    addSlideNumber(s2, 2, TOTAL);

    // 개발비 카드
    s2.addShape(pres.ShapeType.roundRect, { x: 0.8, y: 1.4, w: 4, h: 3.2, rectRadius: 0.15, fill: { color: C.greenBg }, line: { color: C.greenBorder, width: 1.5 } });
    s2.addShape(pres.ShapeType.ellipse, { x: 2.3, y: 1.7, w: 1, h: 1, fill: { color: C.green } });
    s2.addText('1', { x: 2.3, y: 1.7, w: 1, h: 1, fontSize: 36, bold: true, color: C.white, align: 'center', valign: 'middle', fontFace: 'Arial' });
    s2.addText('개발비', { x: 0.8, y: 2.85, w: 4, h: 0.5, fontSize: 22, bold: true, color: C.green, align: 'center', fontFace: 'Arial' });
    s2.addText('처음 한 번만 내는 돈', { x: 0.8, y: 3.3, w: 4, h: 0.35, fontSize: 13, color: C.text, align: 'center', fontFace: 'Arial' });
    // 비유 박스
    s2.addShape(pres.ShapeType.roundRect, { x: 1.4, y: 3.85, w: 2.8, h: 0.5, rectRadius: 0.08, fill: { color: C.white } });
    s2.addText('비유: 집을 짓는 비용', { x: 1.4, y: 3.85, w: 2.8, h: 0.5, fontSize: 11, color: C.green, align: 'center', valign: 'middle', fontFace: 'Arial' });

    // 구독료 카드
    s2.addShape(pres.ShapeType.roundRect, { x: 5.2, y: 1.4, w: 4, h: 3.2, rectRadius: 0.15, fill: { color: C.blueBg }, line: { color: C.blueBorder, width: 1.5 } });
    s2.addShape(pres.ShapeType.ellipse, { x: 6.7, y: 1.7, w: 1, h: 1, fill: { color: C.blue } });
    s2.addText('2', { x: 6.7, y: 1.7, w: 1, h: 1, fontSize: 36, bold: true, color: C.white, align: 'center', valign: 'middle', fontFace: 'Arial' });
    s2.addText('구독료', { x: 5.2, y: 2.85, w: 4, h: 0.5, fontSize: 22, bold: true, color: C.blue, align: 'center', fontFace: 'Arial' });
    s2.addText('매달 내는 돈', { x: 5.2, y: 3.3, w: 4, h: 0.35, fontSize: 13, color: C.text, align: 'center', fontFace: 'Arial' });
    s2.addShape(pres.ShapeType.roundRect, { x: 5.8, y: 3.85, w: 2.8, h: 0.5, rectRadius: 0.08, fill: { color: C.white } });
    s2.addText('비유: 매달 내는 관리비', { x: 5.8, y: 3.85, w: 2.8, h: 0.5, fontSize: 11, color: C.blue, align: 'center', valign: 'middle', fontFace: 'Arial' });

    // VAT 안내
    s2.addText('※ 모든 금액은 부가세(VAT) 별도', { x: 0.8, y: 4.8, w: 8.4, h: 0.3, fontSize: 9, color: C.gray600, align: 'center', fontFace: 'Arial' });

    // ═══════════════════════════════════════════════════════
    // 슬라이드 3: 기본 상품 가격표
    // ═══════════════════════════════════════════════════════
    const s3 = pres.addSlide();
    s3.background = { fill: C.white };
    addFooter(s3);
    addPageTitle(s3, '기본 상품 가격표');
    addSlideNumber(s3, 3, TOTAL);

    // 제조업 기본 패키지 - 메인 카드
    s3.addShape(pres.ShapeType.roundRect, { x: 0.5, y: 1.2, w: 9, h: 1.5, rectRadius: 0.12, fill: { color: C.green } });
    s3.addText([
        { text: '★ ', options: { fontSize: 14, color: 'FFD700' } },
        { text: '제조업 기본 패키지', options: { fontSize: 18, bold: true, color: C.white } },
        { text: '  (가장 많이 팔리는 상품)', options: { fontSize: 11, color: 'B9F6CA' } }
    ], { x: 0.8, y: 1.25, w: 5.5, h: 0.45, fontFace: 'Arial' });
    s3.addText('품목관리 → 견적 → 수주 → 생산 → 출하 + ERP(인사/회계) 무료', {
        x: 0.8, y: 1.7, w: 5.5, h: 0.35, fontSize: 10, color: 'C8E6C9', fontFace: 'Arial'
    });
    // 가격
    s3.addShape(pres.ShapeType.roundRect, { x: 6.5, y: 1.35, w: 2.7, h: 1.1, rectRadius: 0.08, fill: { color: '1B5E20' } });
    s3.addText([
        { text: '개발비 ', options: { fontSize: 9, color: 'A5D6A7' } },
        { text: '2,000만원', options: { fontSize: 18, bold: true, color: C.white } },
        { text: '\n구독료 ', options: { fontSize: 9, color: 'A5D6A7' } },
        { text: '50만원/월', options: { fontSize: 15, bold: true, color: 'B9F6CA' } }
    ], { x: 6.5, y: 1.35, w: 2.7, h: 1.1, align: 'center', valign: 'middle', fontFace: 'Arial' });

    // 개별 모듈 테이블
    s3.addText('개별 모듈 (필요한 것만 추가)', { x: 0.5, y: 2.9, w: 4, h: 0.35, fontSize: 12, bold: true, color: C.text, fontFace: 'Arial' });

    const modules = [
        ['QR코드 관리', '1,020만원', '5만원'],
        ['사진/출하 관리', '1,920만원', '10만원'],
        ['검사/토큰 적용', '1,020만원', '5만원'],
    ];

    // 테이블 헤더
    s3.addShape(pres.ShapeType.roundRect, { x: 0.5, y: 3.3, w: 9, h: 0.35, rectRadius: 0.06, fill: { color: C.gray200 } });
    s3.addText('모듈명', { x: 0.7, y: 3.3, w: 3, h: 0.35, fontSize: 9, bold: true, color: C.gray600, fontFace: 'Arial' });
    s3.addText('개발비', { x: 4.5, y: 3.3, w: 2, h: 0.35, fontSize: 9, bold: true, color: C.gray600, align: 'center', fontFace: 'Arial' });
    s3.addText('구독료/월', { x: 7, y: 3.3, w: 2, h: 0.35, fontSize: 9, bold: true, color: C.gray600, align: 'center', fontFace: 'Arial' });

    modules.forEach((m, i) => {
        const ry = 3.7 + i * 0.38;
        if (i % 2 === 0) s3.addShape(pres.ShapeType.rect, { x: 0.5, y: ry, w: 9, h: 0.38, fill: { color: C.gray50 } });
        s3.addText(m[0], { x: 0.7, y: ry, w: 3, h: 0.38, fontSize: 10, color: C.text, valign: 'middle', fontFace: 'Arial' });
        s3.addText(m[1], { x: 4.5, y: ry, w: 2, h: 0.38, fontSize: 10, bold: true, color: C.green, align: 'center', valign: 'middle', fontFace: 'Arial' });
        s3.addText(m[2], { x: 7, y: ry, w: 2, h: 0.38, fontSize: 10, color: C.blue, align: 'center', valign: 'middle', fontFace: 'Arial' });
    });

    // ═══════════════════════════════════════════════════════
    // 슬라이드 4: 대형 패키지 + 추가 옵션
    // ═══════════════════════════════════════════════════════
    const s4 = pres.addSlide();
    s4.background = { fill: C.white };
    addFooter(s4);
    addPageTitle(s4, '대형 패키지 & 추가 옵션');
    addSlideNumber(s4, 4, TOTAL);

    // 대형 패키지
    s4.addText('대형 패키지', { x: 0.5, y: 1.15, w: 4, h: 0.35, fontSize: 12, bold: true, color: C.text, fontFace: 'Arial' });

    const bigPkgs = [
        ['공사관리 패키지', '4,000만원', '20만원/월', '시공 현장 관리'],
        ['공정/정부지원사업', '8,000만원', '40만원/월', '정부지원 + 전체 공정'],
    ];
    bigPkgs.forEach((p, i) => {
        const bx = 0.5 + i * 4.6;
        s4.addShape(pres.ShapeType.roundRect, { x: bx, y: 1.55, w: 4.3, h: 1.3, rectRadius: 0.1, fill: { color: C.navy } });
        s4.addText(p[0], { x: bx + 0.2, y: 1.6, w: 3.9, h: 0.35, fontSize: 13, bold: true, color: C.white, fontFace: 'Arial' });
        s4.addText(p[3], { x: bx + 0.2, y: 1.9, w: 3.9, h: 0.25, fontSize: 9, color: '8899AA', fontFace: 'Arial' });
        s4.addText([
            { text: '개발비 ', options: { fontSize: 9, color: '8899AA' } },
            { text: p[1], options: { fontSize: 14, bold: true, color: C.greenLight } },
        ], { x: bx + 0.2, y: 2.25, w: 2, h: 0.35, fontFace: 'Arial' });
        s4.addText([
            { text: '구독료 ', options: { fontSize: 9, color: '8899AA' } },
            { text: p[2], options: { fontSize: 12, bold: true, color: '64B5F6' } },
        ], { x: bx + 2.2, y: 2.25, w: 2, h: 0.35, fontFace: 'Arial' });
    });

    // 추가 옵션
    s4.addText('추가 옵션 (선택 사항)', { x: 0.5, y: 3.1, w: 4, h: 0.35, fontSize: 12, bold: true, color: C.text, fontFace: 'Arial' });

    const options = [
        ['생산공정 1개 추가', '+500만원', '+10만원'],
        ['품질관리 (인정검사)', '+2,000만원', '+50만원'],
        ['사진 등록', '-', '+10만원'],
        ['챗봇 / 녹음 / 업무일지', '-', '각 +20만원'],
        ['연구소 연구노트', '-', '+5만원'],
    ];

    s4.addShape(pres.ShapeType.roundRect, { x: 0.5, y: 3.5, w: 9, h: 0.3, rectRadius: 0.05, fill: { color: C.gray200 } });
    s4.addText('옵션명', { x: 0.7, y: 3.5, w: 3.5, h: 0.3, fontSize: 8, bold: true, color: C.gray600, fontFace: 'Arial' });
    s4.addText('개발비 추가', { x: 4.5, y: 3.5, w: 2, h: 0.3, fontSize: 8, bold: true, color: C.gray600, align: 'center', fontFace: 'Arial' });
    s4.addText('구독료 추가/월', { x: 7, y: 3.5, w: 2, h: 0.3, fontSize: 8, bold: true, color: C.gray600, align: 'center', fontFace: 'Arial' });

    options.forEach((o, i) => {
        const ry = 3.83 + i * 0.3;
        if (i % 2 === 0) s4.addShape(pres.ShapeType.rect, { x: 0.5, y: ry, w: 9, h: 0.3, fill: { color: C.gray50 } });
        s4.addText(o[0], { x: 0.7, y: ry, w: 3.5, h: 0.3, fontSize: 9, color: C.text, valign: 'middle', fontFace: 'Arial' });
        s4.addText(o[1], { x: 4.5, y: ry, w: 2, h: 0.3, fontSize: 9, bold: true, color: o[1] === '-' ? C.gray400 : C.green, align: 'center', valign: 'middle', fontFace: 'Arial' });
        s4.addText(o[2], { x: 7, y: ry, w: 2, h: 0.3, fontSize: 9, color: C.blue, align: 'center', valign: 'middle', fontFace: 'Arial' });
    });

    // ═══════════════════════════════════════════════════════
    // 슬라이드 5: 수당 핵심 공식
    // ═══════════════════════════════════════════════════════
    const s5 = pres.addSlide();
    s5.background = { fill: C.white };
    addFooter(s5);
    addPageTitle(s5, '내 수당은 얼마인가?', '핵심 공식 — 이것만 기억하면 된다');
    addSlideNumber(s5, 5, TOTAL);

    // 공식 박스
    s5.addShape(pres.ShapeType.roundRect, { x: 1, y: 1.3, w: 8, h: 1.2, rectRadius: 0.15, fill: { color: C.dark } });
    s5.addText([
        { text: '내 수당', options: { fontSize: 28, bold: true, color: C.greenLight } },
        { text: '  =  ', options: { fontSize: 28, color: C.white } },
        { text: '최종 개발비', options: { fontSize: 28, bold: true, color: '64B5F6' } },
        { text: '  ×  ', options: { fontSize: 28, color: C.white } },
        { text: '수당률', options: { fontSize: 28, bold: true, color: 'FFB74D' } },
    ], { x: 1, y: 1.35, w: 8, h: 0.7, align: 'center', valign: 'middle', fontFace: 'Arial' });

    s5.addText([
        { text: '※ 구독료는 수당 계산에 포함 안 됨!   ', options: { fontSize: 10, color: 'FF8A80' } },
        { text: '※ 할인 적용 후 개발비가 기준!', options: { fontSize: 10, color: 'FF8A80' } },
    ], { x: 1, y: 2.05, w: 8, h: 0.35, align: 'center', fontFace: 'Arial' });

    // 개인 vs 단체
    // 개인
    s5.addShape(pres.ShapeType.roundRect, { x: 0.5, y: 2.85, w: 4.3, h: 2.1, rectRadius: 0.12, fill: { color: C.greenBg }, line: { color: C.greenBorder, width: 1 } });
    s5.addText('개인 가입', { x: 0.5, y: 2.85, w: 4.3, h: 0.45, fontSize: 14, bold: true, color: C.green, align: 'center', valign: 'middle', fontFace: 'Arial' });
    const personalItems = [
        ['파트너 수당', '20%', C.green],
        ['유치 파트너 수당', '5%', C.blue],
    ];
    personalItems.forEach((item, i) => {
        const iy = 3.4 + i * 0.45;
        s5.addShape(pres.ShapeType.roundRect, { x: 0.8, y: iy, w: 3.7, h: 0.38, rectRadius: 0.06, fill: { color: C.white } });
        s5.addText(item[0], { x: 0.95, y: iy, w: 2, h: 0.38, fontSize: 11, color: C.text, valign: 'middle', fontFace: 'Arial' });
        s5.addText(item[1], { x: 3, y: iy, w: 1.3, h: 0.38, fontSize: 14, bold: true, color: item[2], align: 'right', valign: 'middle', fontFace: 'Arial' });
    });
    // 매니저 수당 별도 안내
    s5.addShape(pres.ShapeType.roundRect, { x: 0.8, y: 4.3, w: 3.7, h: 0.3, rectRadius: 0.06, fill: { color: 'FFF8E1' } });
    s5.addText('+ 매니저: 첫달 구독료 (별도)', { x: 0.95, y: 4.3, w: 3.4, h: 0.3, fontSize: 9, color: 'F57F17', valign: 'middle', fontFace: 'Arial' });

    // 단체
    s5.addShape(pres.ShapeType.roundRect, { x: 5.2, y: 2.85, w: 4.3, h: 2.1, rectRadius: 0.12, fill: { color: C.orangeBg }, line: { color: C.orangeBorder, width: 1 } });
    s5.addText('단체 가입', { x: 5.2, y: 2.85, w: 4.3, h: 0.45, fontSize: 14, bold: true, color: C.orange, align: 'center', valign: 'middle', fontFace: 'Arial' });
    const groupItems = [
        ['단체 수당', '30%', C.orange],
    ];
    groupItems.forEach((item, i) => {
        const iy = 3.4 + i * 0.45;
        s5.addShape(pres.ShapeType.roundRect, { x: 5.5, y: iy, w: 3.7, h: 0.38, rectRadius: 0.06, fill: { color: C.white } });
        s5.addText(item[0], { x: 5.65, y: iy, w: 2, h: 0.38, fontSize: 11, color: C.text, valign: 'middle', fontFace: 'Arial' });
        s5.addText(item[1], { x: 7.7, y: iy, w: 1.3, h: 0.38, fontSize: 14, bold: true, color: item[2], align: 'right', valign: 'middle', fontFace: 'Arial' });
    });
    // 매니저 수당 별도 안내
    s5.addShape(pres.ShapeType.roundRect, { x: 5.5, y: 4.3, w: 3.7, h: 0.3, rectRadius: 0.06, fill: { color: 'FFF8E1' } });
    s5.addText('+ 매니저: 첫달 구독료 (별도)', { x: 5.65, y: 4.3, w: 3.4, h: 0.3, fontSize: 9, color: 'F57F17', valign: 'middle', fontFace: 'Arial' });

    // 합계 뱃지
    s5.addShape(pres.ShapeType.roundRect, { x: 1.5, y: 4.75, w: 2, h: 0.35, rectRadius: 0.06, fill: { color: C.green } });
    s5.addText('합계 25%', { x: 1.5, y: 4.75, w: 2, h: 0.35, fontSize: 11, bold: true, color: C.white, align: 'center', valign: 'middle', fontFace: 'Arial' });
    s5.addShape(pres.ShapeType.roundRect, { x: 6.2, y: 4.75, w: 2, h: 0.35, rectRadius: 0.06, fill: { color: C.orange } });
    s5.addText('합계 30%', { x: 6.2, y: 4.75, w: 2, h: 0.35, fontSize: 11, bold: true, color: C.white, align: 'center', valign: 'middle', fontFace: 'Arial' });

    // ═══════════════════════════════════════════════════════
    // 슬라이드 6: 수당 계산 예시
    // ═══════════════════════════════════════════════════════
    const s6 = pres.addSlide();
    s6.background = { fill: C.white };
    addFooter(s6);
    addPageTitle(s6, '수당 계산 예시', '제조업 기본 패키지 (개발비 2,000만원) 기준');
    addSlideNumber(s6, 6, TOTAL);

    // ── 슬라이드 6 레이아웃 계산 ──
    // 콘텐츠 영역: y=1.1 ~ 5.15 (푸터 5.25 위 0.1 여백)
    // 섹션: 비교표(1.1~2.85) → 팁(2.95~3.3) → 조견표(3.4~5.1)
    const S6 = { tblY: 1.1, tblTitleH: 0.28, tblCardY: 1.4, tblCardH: 1.35, rowH: 0.32, tipY: 2.9, tipH: 0.38, refTitleY: 3.4, refHeaderY: 3.65, refDataY: 3.88, refRowH: 0.22 };

    // 정가 판매
    s6.addText('정가(2,000만원) 판매 시', { x: 0.5, y: S6.tblY, w: 4.3, h: S6.tblTitleH, fontSize: 12, bold: true, color: C.text, fontFace: 'Arial' });
    s6.addShape(pres.ShapeType.roundRect, { x: 0.5, y: S6.tblCardY, w: 4.3, h: S6.tblCardH, rectRadius: 0.1, fill: { color: C.gray50 }, line: { color: C.gray200, width: 0.5 } });

    const fullPriceData = [
        ['', '개인 가입', '단체 가입'],
        ['파트너/단체', '400만원', '600만원'],
        ['유치 파트너', '100만원', '60만원'],
        ['합계', '500만원', '660만원'],
    ];
    fullPriceData.forEach((row, i) => {
        const ry = S6.tblCardY + 0.05 + i * S6.rowH;
        const isHeader = i === 0;
        const isTotal = i === 3;
        s6.addText(row[0], { x: 0.7, y: ry, w: 1.4, h: S6.rowH, fontSize: isHeader ? 8 : 10, bold: isHeader || isTotal, color: isHeader ? C.gray600 : C.text, valign: 'middle', fontFace: 'Arial' });
        s6.addText(row[1], { x: 2.1, y: ry, w: 1.2, h: S6.rowH, fontSize: isHeader ? 8 : 12, bold: !isHeader, color: isHeader ? C.gray600 : C.green, align: 'center', valign: 'middle', fontFace: 'Arial' });
        s6.addText(row[2], { x: 3.4, y: ry, w: 1.2, h: S6.rowH, fontSize: isHeader ? 8 : 12, bold: !isHeader, color: isHeader ? C.gray600 : C.orange, align: 'center', valign: 'middle', fontFace: 'Arial' });
    });
    // 매니저 수당 별도 안내 (정가)
    s6.addText('+ 매니저: 첫달 구독료 50만원 (별도)', { x: 0.7, y: S6.tblCardY + 0.05 + 4 * S6.rowH, w: 3.8, h: 0.22, fontSize: 8, color: 'F57F17', fontFace: 'Arial' });

    // 10% 할인 판매
    s6.addText('10% 할인(1,800만원) 판매 시', { x: 5.2, y: S6.tblY, w: 4.3, h: S6.tblTitleH, fontSize: 12, bold: true, color: C.text, fontFace: 'Arial' });
    s6.addShape(pres.ShapeType.roundRect, { x: 5.2, y: S6.tblCardY, w: 4.3, h: S6.tblCardH, rectRadius: 0.1, fill: { color: C.gray50 }, line: { color: C.gray200, width: 0.5 } });

    const discountData = [
        ['', '개인 가입', '단체 가입'],
        ['파트너/단체', '360만원', '540만원'],
        ['유치 파트너', '90만원', '54만원'],
        ['합계', '450만원', '594만원'],
    ];
    discountData.forEach((row, i) => {
        const ry = S6.tblCardY + 0.05 + i * S6.rowH;
        const isHeader = i === 0;
        const isTotal = i === 3;
        s6.addText(row[0], { x: 5.4, y: ry, w: 1.4, h: S6.rowH, fontSize: isHeader ? 8 : 10, bold: isHeader || isTotal, color: isHeader ? C.gray600 : C.text, valign: 'middle', fontFace: 'Arial' });
        s6.addText(row[1], { x: 6.8, y: ry, w: 1.2, h: S6.rowH, fontSize: isHeader ? 8 : 12, bold: !isHeader, color: isHeader ? C.gray600 : C.green, align: 'center', valign: 'middle', fontFace: 'Arial' });
        s6.addText(row[2], { x: 8.1, y: ry, w: 1.2, h: S6.rowH, fontSize: isHeader ? 8 : 12, bold: !isHeader, color: isHeader ? C.gray600 : C.orange, align: 'center', valign: 'middle', fontFace: 'Arial' });
    });
    // 매니저 수당 별도 안내 (할인)
    s6.addText('+ 매니저: 첫달 구독료 50만원 (별도)', { x: 5.4, y: S6.tblCardY + 0.05 + 4 * S6.rowH, w: 3.8, h: 0.22, fontSize: 8, color: 'F57F17', fontFace: 'Arial' });

    // 팁
    s6.addShape(pres.ShapeType.roundRect, { x: 0.5, y: S6.tipY, w: 9, h: S6.tipH, rectRadius: 0.08, fill: { color: 'FFF8E1' }, line: { color: 'FFE082', width: 0.5 } });
    s6.addText('💡 할인하면 내 수당도 줄어든다. 정가에 가깝게 팔수록 수당이 크다!', {
        x: 0.7, y: S6.tipY, w: 8.6, h: S6.tipH, fontSize: 10, bold: true, color: 'F57F17', valign: 'middle', fontFace: 'Arial'
    });

    // 조견표
    s6.addText('수당 빠른 조견표', { x: 0.5, y: S6.refTitleY, w: 4, h: 0.25, fontSize: 11, bold: true, color: C.text, fontFace: 'Arial' });
    const quickRef = [
        ['2,000만원', '400만원', '600만원'],
        ['1,800만원', '360만원', '540만원'],
        ['1,500만원', '300만원', '450만원'],
        ['1,000만원', '200만원', '300만원'],
    ];
    // 헤더
    s6.addText('최종 개발비', { x: 0.5, y: S6.refHeaderY, w: 2.5, h: S6.refRowH, fontSize: 8, bold: true, color: C.gray600, fontFace: 'Arial' });
    s6.addText('개인(20%)', { x: 3.2, y: S6.refHeaderY, w: 1.8, h: S6.refRowH, fontSize: 8, bold: true, color: C.green, align: 'center', fontFace: 'Arial' });
    s6.addText('단체(30%)', { x: 5.2, y: S6.refHeaderY, w: 1.8, h: S6.refRowH, fontSize: 8, bold: true, color: C.orange, align: 'center', fontFace: 'Arial' });

    quickRef.forEach((r, i) => {
        const ry = S6.refDataY + i * S6.refRowH;
        // 최하단 확인: 3.88 + 3*0.22 = 4.54 + 0.22 = 4.76 < 5.15 ✓
        s6.addText(r[0], { x: 0.7, y: ry, w: 2.3, h: S6.refRowH, fontSize: 9, color: C.text, fontFace: 'Arial' });
        s6.addText(r[1], { x: 3.2, y: ry, w: 1.8, h: S6.refRowH, fontSize: 9, bold: true, color: C.green, align: 'center', fontFace: 'Arial' });
        s6.addText(r[2], { x: 5.2, y: ry, w: 1.8, h: S6.refRowH, fontSize: 9, bold: true, color: C.orange, align: 'center', fontFace: 'Arial' });
    });

    // ═══════════════════════════════════════════════════════
    // 슬라이드 7: 수당 지급 시점
    // ═══════════════════════════════════════════════════════
    const s7 = pres.addSlide();
    s7.background = { fill: C.white };
    addFooter(s7);
    addPageTitle(s7, '수당은 언제 받나?', '고객이 2번에 나눠 내면, 수당도 2번에 나눠 받는다');
    addSlideNumber(s7, 7, TOTAL);

    // 플로우
    // 1차
    s7.addShape(pres.ShapeType.roundRect, { x: 0.8, y: 1.5, w: 3.5, h: 1.6, rectRadius: 0.12, fill: { color: C.greenBg }, line: { color: C.greenBorder, width: 1 } });
    s7.addShape(pres.ShapeType.ellipse, { x: 1.0, y: 1.6, w: 0.5, h: 0.5, fill: { color: C.green } });
    s7.addText('1', { x: 1.0, y: 1.6, w: 0.5, h: 0.5, fontSize: 18, bold: true, color: C.white, align: 'center', valign: 'middle', fontFace: 'Arial' });
    s7.addText('1차 납입 (계약금)', { x: 1.6, y: 1.6, w: 2.5, h: 0.5, fontSize: 13, bold: true, color: C.green, valign: 'middle', fontFace: 'Arial' });
    s7.addShape(pres.ShapeType.rect, { x: 1.0, y: 2.2, w: 3.1, h: 0.01, fill: { color: C.greenBorder } });
    s7.addText('익월 10일', { x: 1.0, y: 2.3, w: 1.5, h: 0.3, fontSize: 10, color: C.textSub, fontFace: 'Arial' });
    s7.addText('수당 50% 지급', { x: 2.3, y: 2.3, w: 1.8, h: 0.3, fontSize: 12, bold: true, color: C.green, align: 'right', fontFace: 'Arial' });
    s7.addText('예) 200만원', { x: 1.0, y: 2.65, w: 3.1, h: 0.3, fontSize: 10, color: C.gray600, fontFace: 'Arial' });

    // 화살표
    s7.addText('→', { x: 4.4, y: 2.0, w: 0.6, h: 0.5, fontSize: 24, color: C.gray400, align: 'center', valign: 'middle', fontFace: 'Arial' });

    // 2차
    s7.addShape(pres.ShapeType.roundRect, { x: 5.2, y: 1.5, w: 3.5, h: 1.6, rectRadius: 0.12, fill: { color: C.blueBg }, line: { color: C.blueBorder, width: 1 } });
    s7.addShape(pres.ShapeType.ellipse, { x: 5.4, y: 1.6, w: 0.5, h: 0.5, fill: { color: C.blue } });
    s7.addText('2', { x: 5.4, y: 1.6, w: 0.5, h: 0.5, fontSize: 18, bold: true, color: C.white, align: 'center', valign: 'middle', fontFace: 'Arial' });
    s7.addText('2차 납입 (잔금)', { x: 6.0, y: 1.6, w: 2.5, h: 0.5, fontSize: 13, bold: true, color: C.blue, valign: 'middle', fontFace: 'Arial' });
    s7.addShape(pres.ShapeType.rect, { x: 5.4, y: 2.2, w: 3.1, h: 0.01, fill: { color: C.blueBorder } });
    s7.addText('익월 10일', { x: 5.4, y: 2.3, w: 1.5, h: 0.3, fontSize: 10, color: C.textSub, fontFace: 'Arial' });
    s7.addText('수당 50% 지급', { x: 6.7, y: 2.3, w: 1.8, h: 0.3, fontSize: 12, bold: true, color: C.blue, align: 'right', fontFace: 'Arial' });
    s7.addText('예) 200만원', { x: 5.4, y: 2.65, w: 3.1, h: 0.3, fontSize: 10, color: C.gray600, fontFace: 'Arial' });

    // 합계 박스
    s7.addShape(pres.ShapeType.roundRect, { x: 2, y: 3.5, w: 6, h: 0.8, rectRadius: 0.1, fill: { color: C.dark } });
    s7.addText([
        { text: '예시: 파트너 수당 400만원  →  ', options: { fontSize: 12, color: '8899AA' } },
        { text: '200만원', options: { fontSize: 14, bold: true, color: C.greenLight } },
        { text: ' + ', options: { fontSize: 12, color: '8899AA' } },
        { text: '200만원', options: { fontSize: 14, bold: true, color: '64B5F6' } },
        { text: ' = ', options: { fontSize: 12, color: '8899AA' } },
        { text: '400만원', options: { fontSize: 16, bold: true, color: 'FFB74D' } },
    ], { x: 2, y: 3.5, w: 6, h: 0.8, align: 'center', valign: 'middle', fontFace: 'Arial' });

    // ═══════════════════════════════════════════════════════
    // 슬라이드 8: 할인 4가지
    // ═══════════════════════════════════════════════════════
    const s8 = pres.addSlide();
    s8.background = { fill: C.white };
    addFooter(s8);
    addPageTitle(s8, '고객에게 제안할 수 있는 할인 3가지');
    addSlideNumber(s8, 8, TOTAL);

    const discounts = [
        { title: '개발비 할인', desc: '%, 정액, 전액면제', impact: '수당 영향 있음', impactColor: C.red, bg: C.redBg, border: 'FFCDD2', color: C.red, icon: '1' },
        { title: '구독료 할인', desc: '최대 50%까지', impact: '수당 영향 없음', impactColor: C.green, bg: C.greenBg, border: C.greenBorder, color: C.green, icon: '2' },
        { title: '개발비-구독료 연동', desc: 'ON/OFF 선택', impact: '개발비 변동 시 영향', impactColor: 'F57F17', bg: C.orangeBg, border: C.orangeBorder, color: C.orange, icon: '3' },
    ];

    discounts.forEach((d, i) => {
        const cx = 0.5 + i * 2.32;
        const cw = 2.12;
        s8.addShape(pres.ShapeType.roundRect, { x: cx, y: 1.2, w: cw, h: 2.8, rectRadius: 0.1, fill: { color: d.bg }, line: { color: d.border, width: 1 } });
        // 넘버
        s8.addShape(pres.ShapeType.ellipse, { x: cx + 0.75, y: 1.35, w: 0.55, h: 0.55, fill: { color: d.color } });
        s8.addText(d.icon, { x: cx + 0.75, y: 1.35, w: 0.55, h: 0.55, fontSize: 18, bold: true, color: C.white, align: 'center', valign: 'middle', fontFace: 'Arial' });
        // 제목
        s8.addText(d.title, { x: cx + 0.1, y: 2.0, w: cw - 0.2, h: 0.4, fontSize: 12, bold: true, color: d.color, align: 'center', fontFace: 'Arial' });
        // 설명
        s8.addText(d.desc, { x: cx + 0.1, y: 2.4, w: cw - 0.2, h: 0.3, fontSize: 10, color: C.textSub, align: 'center', fontFace: 'Arial' });
        // 수당 영향
        s8.addShape(pres.ShapeType.roundRect, { x: cx + 0.15, y: 3.1, w: cw - 0.3, h: 0.6, rectRadius: 0.06, fill: { color: C.white } });
        s8.addText('수당 영향', { x: cx + 0.15, y: 3.1, w: cw - 0.3, h: 0.25, fontSize: 8, color: C.gray600, align: 'center', fontFace: 'Arial' });
        s8.addText(d.impact, { x: cx + 0.15, y: 3.35, w: cw - 0.3, h: 0.3, fontSize: 10, bold: true, color: d.impactColor, align: 'center', fontFace: 'Arial' });
    });

    // 팁
    s8.addShape(pres.ShapeType.roundRect, { x: 0.5, y: 4.3, w: 9, h: 0.6, rectRadius: 0.08, fill: { color: 'E8F5E9' }, line: { color: 'A5D6A7', width: 0.5 } });
    s8.addText([
        { text: '💡 영업 팁: ', options: { fontSize: 11, bold: true, color: C.green } },
        { text: '구독료 할인은 고객에게 혜택을 주면서 내 수당은 안 줄어드는 좋은 전략!', options: { fontSize: 11, color: '1B5E20' } },
    ], { x: 0.7, y: 4.3, w: 8.6, h: 0.6, valign: 'middle', fontFace: 'Arial' });

    // ═══════════════════════════════════════════════════════
    // 슬라이드 9: 1년차 총 비용 계산
    // ═══════════════════════════════════════════════════════
    const s9 = pres.addSlide();
    s9.background = { fill: C.white };
    addFooter(s9);
    addPageTitle(s9, '1년차 총 비용 계산법');
    addSlideNumber(s9, 9, TOTAL);

    // 공식
    s9.addShape(pres.ShapeType.roundRect, { x: 0.5, y: 1.2, w: 9, h: 0.7, rectRadius: 0.1, fill: { color: C.dark } });
    s9.addText([
        { text: '1년차', options: { fontSize: 16, bold: true, color: 'FFB74D' } },
        { text: ' = ', options: { fontSize: 16, color: C.white } },
        { text: '개발비', options: { fontSize: 16, bold: true, color: C.greenLight } },
        { text: ' + ( ', options: { fontSize: 16, color: C.white } },
        { text: '월 구독료', options: { fontSize: 16, bold: true, color: '64B5F6' } },
        { text: ' × ', options: { fontSize: 16, color: C.white } },
        { text: '유료 개월수', options: { fontSize: 16, bold: true, color: 'CE93D8' } },
        { text: ' )', options: { fontSize: 16, color: C.white } },
    ], { x: 0.5, y: 1.2, w: 9, h: 0.7, align: 'center', valign: 'middle', fontFace: 'Arial' });

    // 실전 예시
    s9.addText('실전 예시: 제조업 기본 패키지, 10% 할인', {
        x: 0.5, y: 2.1, w: 9, h: 0.35, fontSize: 11, bold: true, color: C.text, fontFace: 'Arial'
    });

    const calcData = [
        ['개발비 (정가)', '', '2,000만원', C.text],
        ['개발비 할인 10%', '2,000 × 10%', '-200만원', C.red],
        ['최종 개발비', '', '1,800만원', C.green],
        ['월 구독료', '', '50만원', C.blue],
        ['유료 개월수', '12개월', '12개월', 'CE93D8'],
        ['연간 구독료', '50 × 12', '600만원', C.blue],
        ['1년차 총 비용', '1,800 + 600', '2,400만원', C.orange],
    ];

    calcData.forEach((row, i) => {
        const ry = 2.55 + i * 0.35;
        const isTotal = i === 2 || i === 6;
        if (isTotal) {
            s9.addShape(pres.ShapeType.roundRect, { x: 0.5, y: ry, w: 9, h: 0.35, rectRadius: 0.04, fill: { color: isTotal && i === 6 ? C.dark : C.gray100 } });
        } else if (i % 2 === 0) {
            s9.addShape(pres.ShapeType.rect, { x: 0.5, y: ry, w: 9, h: 0.35, fill: { color: C.gray50 } });
        }
        const txtColor = isTotal && i === 6 ? C.white : C.text;
        s9.addText(row[0], { x: 0.7, y: ry, w: 3, h: 0.35, fontSize: isTotal ? 10 : 9, bold: isTotal, color: txtColor, valign: 'middle', fontFace: 'Arial' });
        s9.addText(row[1], { x: 3.7, y: ry, w: 2.5, h: 0.35, fontSize: 9, color: isTotal && i === 6 ? '8899AA' : C.gray600, align: 'center', valign: 'middle', fontFace: 'Arial' });
        s9.addText(row[2], { x: 6.5, y: ry, w: 2.8, h: 0.35, fontSize: isTotal ? 13 : 10, bold: isTotal, color: isTotal && i === 6 ? 'FFB74D' : row[3], align: 'right', valign: 'middle', fontFace: 'Arial' });
    });

    // 2년차 안내
    s9.addShape(pres.ShapeType.roundRect, { x: 0.5, y: 4.4, w: 9, h: 0.6, rectRadius: 0.08, fill: { color: C.blueBg }, line: { color: C.blueBorder, width: 0.5 } });
    s9.addText([
        { text: '2년차부터: ', options: { fontSize: 11, bold: true, color: C.blue } },
        { text: '50만원 × 12 = ', options: { fontSize: 11, color: C.text } },
        { text: '연 600만원만', options: { fontSize: 13, bold: true, color: C.blue } },
        { text: ' 내면 된다 (개발비 없음!)', options: { fontSize: 11, color: C.text } },
    ], { x: 0.7, y: 4.4, w: 8.6, h: 0.6, valign: 'middle', fontFace: 'Arial' });

    // ═══════════════════════════════════════════════════════
    // 슬라이드 10: 사용량 과금 + 바로빌
    // ═══════════════════════════════════════════════════════
    const s10 = pres.addSlide();
    s10.background = { fill: C.white };
    addFooter(s10);
    addPageTitle(s10, '사용량 과금 & 바로빌 부가 서비스', '대부분의 중소기업은 기본 제공량으로 충분하다');
    addSlideNumber(s10, 10, TOTAL);

    // 사용량
    s10.addText('기본 제공량', { x: 0.5, y: 1.2, w: 4, h: 0.35, fontSize: 12, bold: true, color: C.text, fontFace: 'Arial' });

    const usageItems = [
        ['파일 저장 공간', '100GB', '100GB당 5만원/월'],
        ['AI 토큰', '월 100만 개', '실비 과금'],
    ];
    usageItems.forEach((u, i) => {
        const uy = 1.65 + i * 0.75;
        s10.addShape(pres.ShapeType.roundRect, { x: 0.5, y: uy, w: 4.3, h: 0.6, rectRadius: 0.08, fill: { color: C.gray50 }, line: { color: C.gray200, width: 0.5 } });
        s10.addText(u[0], { x: 0.7, y: uy, w: 1.5, h: 0.6, fontSize: 10, bold: true, color: C.text, valign: 'middle', fontFace: 'Arial' });
        s10.addText(u[1], { x: 2.2, y: uy, w: 1.2, h: 0.3, fontSize: 12, bold: true, color: C.green, valign: 'middle', fontFace: 'Arial' });
        s10.addText('초과: ' + u[2], { x: 2.2, y: uy + 0.3, w: 2.4, h: 0.25, fontSize: 8, color: C.gray600, fontFace: 'Arial' });
    });

    // 바로빌
    s10.addText('바로빌 부가 서비스', { x: 5.2, y: 1.2, w: 4.3, h: 0.35, fontSize: 12, bold: true, color: C.text, fontFace: 'Arial' });

    const barobillItems = [
        ['계좌조회', '1만원/월', C.text],
        ['카드내역', '1만원/월', C.text],
        ['홈택스 매입/매출', '무료!', C.green],
        ['세금계산서', '100건 기본 무료', C.text],
    ];
    barobillItems.forEach((b, i) => {
        const by = 1.65 + i * 0.55;
        s10.addShape(pres.ShapeType.roundRect, { x: 5.2, y: by, w: 4.3, h: 0.45, rectRadius: 0.06, fill: { color: i === 2 ? C.greenBg : C.gray50 }, line: { color: i === 2 ? C.greenBorder : C.gray200, width: 0.5 } });
        s10.addText(b[0], { x: 5.4, y: by, w: 2, h: 0.45, fontSize: 10, color: C.text, valign: 'middle', fontFace: 'Arial' });
        s10.addText(b[1], { x: 7.5, y: by, w: 1.8, h: 0.45, fontSize: 10, bold: true, color: b[2], align: 'right', valign: 'middle', fontFace: 'Arial' });
    });

    // AI 토큰 활용
    s10.addText('AI 토큰 100만 개로 할 수 있는 일', { x: 0.5, y: 3.5, w: 9, h: 0.3, fontSize: 10, bold: true, color: C.text, fontFace: 'Arial' });
    const aiUsage = [
        ['회의 녹음 요약', '약 8시간 30분'],
        ['문서 정리', 'A4 약 300~400장'],
        ['이메일/노트 분류', '약 1,500~2,000건'],
    ];
    aiUsage.forEach((a, i) => {
        const ax = 0.5 + i * 3.1;
        s10.addShape(pres.ShapeType.roundRect, { x: ax, y: 3.9, w: 2.9, h: 0.55, rectRadius: 0.06, fill: { color: 'F3E5F5' }, line: { color: 'CE93D8', width: 0.5 } });
        s10.addText(a[0], { x: ax + 0.1, y: 3.9, w: 2.7, h: 0.25, fontSize: 8, color: C.gray600, align: 'center', fontFace: 'Arial' });
        s10.addText(a[1], { x: ax + 0.1, y: 4.15, w: 2.7, h: 0.25, fontSize: 10, bold: true, color: '7B1FA2', align: 'center', fontFace: 'Arial' });
    });

    // ═══════════════════════════════════════════════════════
    // 슬라이드 11: 가격 시뮬레이터
    // ═══════════════════════════════════════════════════════
    const s11 = pres.addSlide();
    s11.background = { fill: C.white };
    addFooter(s11);
    addPageTitle(s11, '가격 시뮬레이터', '고객에게 제안하기 전에 미리 비용과 수당을 확인하는 도구');
    addSlideNumber(s11, 11, TOTAL);

    // 4 Steps
    const steps = [
        { num: '1', title: '상품 고르기', desc: '필수 상품 자동체크\n추가 상품 선택', color: C.green, bg: C.greenBg },
        { num: '2', title: '할인 설정', desc: '개발비/구독료 할인\n연동 ON/OFF', color: C.blue, bg: C.blueBg },
        { num: '3', title: '가입유형 선택', desc: '개인 가입\n단체 가입', color: C.orange, bg: C.orangeBg },
        { num: '4', title: '결과 확인!', desc: '최종 비용\n내 수당', color: '7B1FA2', bg: 'F3E5F5' },
    ];

    steps.forEach((st, i) => {
        const sx = 0.5 + i * 2.35;
        const sw = 2.15;
        s11.addShape(pres.ShapeType.roundRect, { x: sx, y: 1.2, w: sw, h: 1.8, rectRadius: 0.1, fill: { color: st.bg } });
        // Step 번호
        s11.addShape(pres.ShapeType.ellipse, { x: sx + 0.75, y: 1.3, w: 0.6, h: 0.6, fill: { color: st.color } });
        s11.addText(st.num, { x: sx + 0.75, y: 1.3, w: 0.6, h: 0.6, fontSize: 20, bold: true, color: C.white, align: 'center', valign: 'middle', fontFace: 'Arial' });
        s11.addText(st.title, { x: sx + 0.1, y: 2.0, w: sw - 0.2, h: 0.35, fontSize: 12, bold: true, color: st.color, align: 'center', fontFace: 'Arial' });
        s11.addText(st.desc, { x: sx + 0.1, y: 2.35, w: sw - 0.2, h: 0.55, fontSize: 9, color: C.textSub, align: 'center', valign: 'top', fontFace: 'Arial' });

        // 화살표
        if (i < 3) {
            s11.addText('→', { x: sx + sw - 0.05, y: 1.8, w: 0.3, h: 0.5, fontSize: 18, color: C.gray400, align: 'center', valign: 'middle', fontFace: 'Arial' });
        }
    });

    // 상품 유형 표
    s11.addText('상품 선택 화면에서 알아야 할 것', { x: 0.5, y: 3.3, w: 9, h: 0.35, fontSize: 11, bold: true, color: C.text, fontFace: 'Arial' });

    const types = [
        { label: '필수', desc: '기본 포함, 해제 불가', color: C.red, bg: C.redBg },
        { label: '재량권', desc: '슬라이더로 개발비 조정 가능', color: C.orange, bg: C.orangeBg },
        { label: '선택', desc: '자유롭게 체크/해제', color: C.green, bg: C.greenBg },
    ];
    types.forEach((t, i) => {
        const tx = 0.5 + i * 3.1;
        s11.addShape(pres.ShapeType.roundRect, { x: tx, y: 3.75, w: 2.9, h: 0.7, rectRadius: 0.08, fill: { color: t.bg } });
        s11.addShape(pres.ShapeType.roundRect, { x: tx + 0.15, y: 3.85, w: 0.8, h: 0.25, rectRadius: 0.04, fill: { color: t.color } });
        s11.addText(t.label, { x: tx + 0.15, y: 3.85, w: 0.8, h: 0.25, fontSize: 9, bold: true, color: C.white, align: 'center', valign: 'middle', fontFace: 'Arial' });
        s11.addText(t.desc, { x: tx + 0.15, y: 4.15, w: 2.6, h: 0.25, fontSize: 9, color: C.textSub, fontFace: 'Arial' });
    });

    // 주의
    s11.addText('※ 시뮬레이터 결과는 참고용이다. 실제 계약 금액은 고객과 별도 협의한다.', {
        x: 0.5, y: 4.7, w: 9, h: 0.3, fontSize: 9, color: C.gray600, align: 'center', fontFace: 'Arial'
    });

    // ═══════════════════════════════════════════════════════
    // 슬라이드 12: 영업 실전 팁
    // ═══════════════════════════════════════════════════════
    const s12 = pres.addSlide();
    s12.background = { fill: C.white };
    addFooter(s12);
    addPageTitle(s12, '영업 실전 팁', '고객 유형별 추천 전략');
    addSlideNumber(s12, 12, TOTAL);

    const tips = [
        { situation: '초기 비용 부담이 클 때', strategy: '개발비 할인 + 구독료 할인 조합', color: C.green, bg: C.greenBg },
        { situation: '매달 비용이 부담될 때', strategy: '구독료 할인 (최대 50%)', color: C.blue, bg: C.blueBg },
        { situation: '세금계산서·카드 관리 필요', strategy: '바로빌 부가 서비스 안내 (기본 포함)', color: C.orange, bg: C.orangeBg },
        { situation: '대형 제조업체', strategy: '기본 패키지 + 공정관리 + 품질관리', color: '7B1FA2', bg: 'F3E5F5' },
        { situation: '여러 업체를 묶을 수 있을 때', strategy: '단체 가입 (수당률 30%로 UP!)', color: C.red, bg: C.redBg },
    ];

    tips.forEach((t, i) => {
        const ty = 1.2 + i * 0.6;
        s12.addShape(pres.ShapeType.roundRect, { x: 0.5, y: ty, w: 9, h: 0.5, rectRadius: 0.08, fill: { color: t.bg } });
        s12.addShape(pres.ShapeType.rect, { x: 0.5, y: ty, w: 0.08, h: 0.5, fill: { color: t.color } });
        s12.addText(t.situation, { x: 0.8, y: ty, w: 3.5, h: 0.5, fontSize: 10, bold: true, color: t.color, valign: 'middle', fontFace: 'Arial' });
        s12.addText('→  ' + t.strategy, { x: 4.5, y: ty, w: 4.8, h: 0.5, fontSize: 10, color: C.text, valign: 'middle', fontFace: 'Arial' });
    });

    // 고객 FAQ
    s12.addText('고객이 자주 하는 질문', { x: 0.5, y: 4.15, w: 5, h: 0.3, fontSize: 11, bold: true, color: C.text, fontFace: 'Arial' });

    const faqs = [
        ['"왜 비싸요?"', '기존 ERP 5천만~1억 vs SAM 2천만원 + AI 포함'],
        ['"구독료가 아까운데?"', '자체 서버 월 200만+ vs SAM 월 50만원'],
        ['"추가 할인 안 돼요?"', '구독료 최대 50%까지 할인 가능!'],
    ];
    faqs.forEach((f, i) => {
        const fy = 4.5 + i * 0.3;
        s12.addText(f[0], { x: 0.7, y: fy, w: 2.5, h: 0.28, fontSize: 9, bold: true, color: C.blue, fontFace: 'Arial' });
        s12.addText(f[1], { x: 3.2, y: fy, w: 6.3, h: 0.28, fontSize: 9, color: C.textSub, fontFace: 'Arial' });
    });

    // ═══════════════════════════════════════════════════════
    // 슬라이드 13: 마무리
    // ═══════════════════════════════════════════════════════
    const s13 = pres.addSlide();
    s13.background = { fill: C.dark };

    s13.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: 10, h: 0.06, fill: { color: C.greenLight } });

    s13.addShape(pres.ShapeType.roundRect, { x: 3.8, y: 1.2, w: 2.4, h: 0.65, rectRadius: 0.1, fill: { color: C.greenLight } });
    s13.addText('SAM', { x: 3.8, y: 1.2, w: 2.4, h: 0.65, fontSize: 28, bold: true, color: C.white, align: 'center', valign: 'middle', fontFace: 'Arial' });

    s13.addText('Smart Automation Management', {
        x: 1, y: 2.1, w: 8, h: 0.5,
        fontSize: 14, color: '667788', align: 'center', fontFace: 'Arial'
    });

    s13.addShape(pres.ShapeType.rect, { x: 3, y: 2.9, w: 4, h: 0.01, fill: { color: '2A3A4A' } });

    s13.addText('(주)코드브릿지엑스', {
        x: 1, y: 3.1, w: 8, h: 0.5,
        fontSize: 16, bold: true, color: C.white, align: 'center', fontFace: 'Arial'
    });

    // 핵심 기억 포인트
    const keyPoints = [
        '개발비 = 한 번 | 구독료 = 매달',
        '수당 = 최종 개발비 × 수당률',
        '구독료 할인 → 수당 영향 없음',
    ];
    keyPoints.forEach((kp, i) => {
        s13.addShape(pres.ShapeType.roundRect, { x: 2, y: 3.85 + i * 0.42, w: 6, h: 0.35, rectRadius: 0.06, fill: { color: '1B2838' }, line: { color: '2A3A4A', width: 0.5 } });
        s13.addText([
            { text: '✓  ', options: { fontSize: 10, color: C.greenLight } },
            { text: kp, options: { fontSize: 10, color: 'AABBCC' } },
        ], { x: 2.2, y: 3.85 + i * 0.42, w: 5.6, h: 0.35, valign: 'middle', fontFace: 'Arial' });
    });

    // ─── 저장 ───
    const outputPath = path.join(__dirname, 'sam-pricing-simple-guide.pptx');
    await pres.writeFile({ fileName: outputPath });
    console.log('PPTX created:', outputPath);
}

main().catch(console.error);
