{"id":2255,"date":"2025-11-27T20:23:04","date_gmt":"2025-11-27T11:23:04","guid":{"rendered":"https:\/\/illusion.place\/?page_id=2255"},"modified":"2025-12-07T22:47:18","modified_gmt":"2025-12-07T13:47:18","slug":"ai-%eb%94%94%ec%9e%90%ec%9d%b4%eb%84%88%ec%97%90%ea%b2%8c-%ec%9d%98%eb%a2%b0%ed%95%98%ea%b8%b0","status":"publish","type":"page","link":"https:\/\/illusion.place\/?page_id=2255","title":{"rendered":"AI \uacf5\uac04\ube0c\ub79c\ub529 \uc2dc\ubbac\ub808\uc774\uc158"},"content":{"rendered":"\n<div style=\"height:34px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p class=\"has-text-align-center has-medium-font-size\">\ub9cc\ub4e4\uace0 \uc2f6\uc73c\uc2e0 \uacf5\uac04\uc744, \uba3c\uc800 AI\uc804\ubb38\uac00\uc5d0\uac8c \ud3b8\ud558\uac8c \ubb3c\uc5b4\ubcf4\uc138\uc694<\/p>\n\n\n\n<div style=\"height:34px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-9d6595d7 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\" style=\"font-size:0px;flex-basis:0%\">\n\n<div class=\"wpcf7 no-js\" id=\"wpcf7-f2265-o1\" lang=\"ko-KR\" dir=\"ltr\" data-wpcf7-id=\"2265\">\n<div class=\"screen-reader-response\"><p role=\"status\" aria-live=\"polite\" aria-atomic=\"true\"><\/p> <ul><\/ul><\/div>\n<form action=\"\/index.php?rest_route=%2Fwp%2Fv2%2Fpages%2F2255#wpcf7-f2265-o1\" method=\"post\" class=\"wpcf7-form init\" aria-label=\"\ubb38\uc758 \uc591\uc2dd\" novalidate=\"novalidate\" data-status=\"init\">\n<fieldset class=\"hidden-fields-container\"><input type=\"hidden\" name=\"_wpcf7\" value=\"2265\" \/><input type=\"hidden\" name=\"_wpcf7_version\" value=\"6.1.3\" \/><input type=\"hidden\" name=\"_wpcf7_locale\" value=\"ko_KR\" \/><input type=\"hidden\" name=\"_wpcf7_unit_tag\" value=\"wpcf7-f2265-o1\" \/><input type=\"hidden\" name=\"_wpcf7_container_post\" value=\"0\" \/><input type=\"hidden\" name=\"_wpcf7_posted_data_hash\" value=\"\" \/>\n<\/fieldset>\n<p><label> \uace0\uac1d\uba85<br \/>\n<span class=\"wpcf7-form-control-wrap\" data-name=\"your-name\"><input size=\"40\" maxlength=\"400\" class=\"wpcf7-form-control wpcf7-text wpcf7-validates-as-required\" aria-required=\"true\" aria-invalid=\"false\" value=\"\" type=\"text\" name=\"your-name\" \/><\/span> <\/label>\n<\/p>\n<p><label> \uc5f0\ub77d\ucc98 (\uc774\uba54\uc77c \ub610\ub294 \uc804\ud654\ubc88\ud638)<br \/>\n<span class=\"wpcf7-form-control-wrap\" data-name=\"your-email\"><input size=\"40\" maxlength=\"400\" class=\"wpcf7-form-control wpcf7-text wpcf7-validates-as-required\" aria-required=\"true\" aria-invalid=\"false\" value=\"\" type=\"text\" name=\"your-email\" \/><\/span> <\/label>\n<\/p>\n<p><label> AI \uae30\ud68d\uc548 \ubc0f \ubb38\uc758 \ub0b4\uc6a9<br \/>\n<span class=\"wpcf7-form-control-wrap\" data-name=\"your-message\"><textarea cols=\"40\" rows=\"10\" maxlength=\"2000\" class=\"wpcf7-form-control wpcf7-textarea\" aria-invalid=\"false\" name=\"your-message\"><\/textarea><\/span> <\/label>\n<\/p>\n<p><input class=\"wpcf7-form-control wpcf7-submit has-spinner\" type=\"submit\" value=\"\uc804\uc1a1\" \/>\n<\/p><p style=\"display: none !important;\" class=\"akismet-fields-container\" data-prefix=\"_wpcf7_ak_\"><label>&#916;<textarea name=\"_wpcf7_ak_hp_textarea\" cols=\"45\" rows=\"8\" maxlength=\"100\"><\/textarea><\/label><input type=\"hidden\" id=\"ak_js_1\" name=\"_wpcf7_ak_js\" value=\"140\"\/><script>document.getElementById( \"ak_js_1\" ).setAttribute( \"value\", ( new Date() ).getTime() );<\/script><\/p><div class=\"wpcf7-response-output\" aria-hidden=\"true\"><\/div>\n<\/form>\n<\/div>\n\n<\/div>\n\n\n\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:100%\">\n<!DOCTYPE html>\n<html lang=\"ko\">\n<head>\n<meta charset=\"UTF-8\">\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n<title>Illusion AI Space Consultant<\/title>\n<script src=\"https:\/\/cdn.jsdelivr.net\/npm\/chart.js\"><\/script>\n<script src=\"https:\/\/cdn.jsdelivr.net\/npm\/chartjs-plugin-datalabels\"><\/script>\n<style>\n    @import url('https:\/\/cdn.jsdelivr.net\/gh\/orioncactus\/pretendard\/dist\/web\/static\/pretendard.css');\n    * { box-sizing: border-box; font-family: 'Pretendard', sans-serif; }\n    body { background-color: #000; color: #fff; margin: 0; padding: 20px; }\n    \n    \/* \uc804\uccb4 \ub808\uc774\uc544\uc6c3 *\/\n    #immersive-compare-widget { max-width: 1200px; margin: 0 auto; background: #050505; border-radius: 20px; padding: 20px; box-shadow: 0 0 50px rgba(0,0,0,0.8); position: relative; z-index: 1; }\n    \n    .header-section { text-align: center; margin-bottom: 40px; padding: 40px 20px; background: radial-gradient(circle at center, #1a1a1a 0%, #000 70%); border-radius: 20px; border: 1px solid #333; }\n    .header-section h2 { font-size: 2.5rem; margin-bottom: 10px; background: linear-gradient(90deg, #fff, #a2c2ff); -webkit-background-clip: text; -webkit-text-fill-color: transparent; }\n    .header-section span { color: #2575fc; -webkit-text-fill-color: #2575fc; }\n    .header-section p { font-size: 1.25rem; color: #666; line-height: 1.6; }\n    \n    .ai-section { background: linear-gradient(145deg, #111, #1a1a1a); border-radius: 24px; padding: 40px; color: #fff; }\n    .ai-title { font-size: 2rem; font-weight: 800; margin-bottom: 10px; background: linear-gradient(90deg, #fff, #a2c2ff); -webkit-background-clip: text; -webkit-text-fill-color: transparent; }\n    .usage-limit-info { text-align: right; margin-bottom: 10px; color: #888; font-size: 0.9rem; }\n    \n    \/* \ud0ed \uc2a4\ud0c0\uc77c *\/\n    .tab-container { display: flex; justify-content: center; gap: 10px; margin: 15px 0 20px; flex-wrap: wrap; }\n    .tab-btn { padding: 10px 25px; border-radius: 25px; border: 1px solid #444; background: rgba(255,255,255,0.05); color: #aaa; font-weight: bold; cursor: pointer; transition: 0.3s; }\n    .tab-btn.active { background: linear-gradient(90deg, #6a11cb, #2575fc); color: #fff; }\n\n    \/* \uc785\ub825 \ud3fc \uc2a4\ud0c0\uc77c *\/\n    .input-container { display: flex; flex-direction: column; gap: 15px; margin-bottom: 20px; }\n    .input-row { display: flex; gap: 15px; flex-wrap: wrap; width: 100%; }\n    \n    .input-field { flex: 1; min-width: 200px; background: rgba(255,255,255,0.05); border: 1px solid #444; padding: 15px; border-radius: 12px; color: #fff; text-align: center; }\n    .date-range-group { flex: 2; min-width: 300px; display: flex; align-items: center; gap: 10px; background: rgba(255,255,255,0.05); border: 1px solid #444; border-radius: 12px; padding: 10px 20px; }\n    .date-input-styled { background: transparent; border: none; color: #fff; flex: 1; width: 100%; min-width: 0; text-align: center; font-family: 'Pretendard', sans-serif; font-size: 1rem; }\n\n    \/* \ubc84\ud2bc \uc2a4\ud0c0\uc77c (\ud074\ub9ad \ubb38\uc81c \ud574\uacb0\uc744 \uc704\ud574 z-index \uba85\uc2dc) *\/\n    .generate-btn { \n        flex: 1; min-width: 200px; \n        background: linear-gradient(90deg, #6a11cb, #2575fc); \n        border: none; padding: 15px 20px; border-radius: 12px; \n        color: #fff; font-weight: bold; cursor: pointer; \n        position: relative; z-index: 10; transition: transform 0.1s;\n    }\n    .generate-btn:active { transform: scale(0.98); }\n    .generate-btn:disabled { background: #444; cursor: not-allowed; }\n\n    \/* \ubc95\uc801 \uace0\uc9c0 \ubc15\uc2a4 *\/\n    .legal-notice-box { background: rgba(255, 60, 60, 0.05); border: 1px solid rgba(255, 100, 100, 0.2); border-radius: 12px; padding: 15px; margin-bottom: 10px; color: #ccc; font-size: 0.85rem; }\n    .legal-text { line-height: 1.5; margin-bottom: 10px; color: #aaa; text-align: left; }\n    .legal-text strong { color: #ff8e8e; }\n    .legal-check { display: flex; align-items: center; gap: 10px; padding-top: 10px; border-top: 1px solid rgba(255, 255, 255, 0.1); }\n    .legal-check input[type=\"checkbox\"] { width: 18px; height: 18px; cursor: pointer; accent-color: #6a11cb; margin: 0; position: relative; z-index: 10; }\n    .legal-check label { cursor: pointer; font-weight: bold; color: #fff; user-select: none; text-align: left; position: relative; z-index: 10; }\n\n    \/* \ucc44\ud305 \ubc0f \uc9c4\ud589\ubc14 *\/\n    #consultationSection { display: none; background: #f9fbff; border: 2px solid #e0e7ff; border-radius: 20px; padding: 40px; margin-top: 30px; text-align: center; color:#333; }\n    .step-indicator { font-size: 1.1rem; color: #6a11cb; font-weight: bold; margin-bottom: 20px; display: block; }\n    .progress-bar-container { width: 100%; height: 8px; background: #e0e0e0; border-radius: 4px; margin-bottom: 30px; overflow: hidden; }\n    .progress-bar { height: 100%; background: linear-gradient(90deg, #6a11cb, #2575fc); width: 0%; transition: width 0.5s ease; }\n    .chat-box { background: #fff; border-radius: 16px; padding: 30px; text-align: left; margin-bottom: 20px; border: 1px solid #eee; }\n    .ai-avatar { display: block; font-weight: bold; color: #6a11cb; margin-bottom: 10px; font-size: 1.1rem; }\n    .user-input-area { display: flex; gap: 10px; margin-top: 20px; }\n    .user-answer-field { flex: 1; padding: 15px; border: 2px solid #6a11cb; border-radius: 12px; font-size: 1rem; outline: none; background: #fff; color: #333; }\n    .next-step-btn { background: #2575fc; color: #fff; border: none; padding: 0 30px; border-radius: 12px; font-weight: bold; cursor: pointer; }\n\n    \/* \uacb0\uacfc \ud654\uba74 *\/\n    #aiResult { display: none; margin-top: 30px; background: #111; color: #e0e0e0; padding: 30px; border-radius: 24px; border: 1px solid #333; }\n    #aiResult.active { display: block; animation: fadeIn 1s ease; }\n    #aiResult h4 { margin: 50px 0 20px 0; color: #a2c2ff; font-size: 1.5rem; border-bottom: 1px solid #444; padding-bottom: 10px; }\n    .result-text { line-height: 1.8; color: #ccc; white-space: pre-wrap; margin-bottom: 25px; }\n    .box-style { background: #1a1a1a; border: 1px solid #333; border-radius: 12px; padding: 25px; margin-bottom: 30px; color: #ddd; }\n    .trend-box { background: rgba(106, 17, 203, 0.05); border: 1px solid rgba(106, 17, 203, 0.2); }\n    .trend-timeline { display: flex; justify-content: space-between; gap: 10px; margin-bottom: 20px; text-align: center; }\n    .trend-year { flex: 1; padding: 15px 10px; background: rgba(255,255,255,0.05); border-radius: 8px; }\n    .trend-insight { color: #fff; font-size: 1rem; text-align: center; padding: 15px; background: linear-gradient(90deg, rgba(106,17,203,0.2), transparent); border-radius: 8px; border-left: 4px solid #2575fc; }\n    \n    .bim-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 20px; margin-bottom: 20px; }\n    .material-table, .detailed-cost-table, .vs-table { width: 100%; border-collapse: collapse; font-size: 0.9rem; margin-top: 10px; }\n    .material-table th, .detailed-cost-table th, .vs-table th { background: rgba(255,255,255,0.1); color: #fff; padding: 10px; text-align: left; }\n    .material-table td, .detailed-cost-table td, .vs-table td { padding: 10px; border-bottom: 1px solid rgba(255,255,255,0.05); color: #ddd; }\n    .mat-qty, .detailed-cost-table td:last-child { text-align: right; font-weight: bold; color: #fff; }\n    .total-row td { border-top: 2px solid #a2c2ff; font-size: 1.2rem; color: #a2c2ff; padding-top: 15px; background: rgba(37, 117, 252, 0.05); }\n\n    .image-grid-2x2 { display: grid; grid-template-columns: 1fr 1fr; gap: 20px; margin-bottom: 30px; }\n    .image-box-2x2 { background: #000; border: 1px solid #444; border-radius: 12px; overflow: hidden; min-height: 300px; position: relative; }\n    .image-box-title { padding: 10px; background: rgba(0,0,0,0.7); color: #fff; text-align: center; font-weight: bold; position: absolute; top:0; width: 100%; }\n    .image-box-2x2 img { width: 100%; height: 100%; object-fit: cover; }\n\n    .chart-wrapper { display: flex; gap: 20px; flex-wrap: wrap; margin-bottom: 30px; }\n    .chart-box-left { flex: 2; min-width: 300px; }\n    .chart-box-right { flex: 1; min-width: 250px; }\n    \n    .map-container { height: 400px; overflow: hidden; position: relative; }\n\n    .sns-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 15px; text-align:center; margin-bottom: 20px; }\n    .sns-card { background:rgba(0,0,0,0.3); padding:15px; border-radius:8px; }\n    .dwell-time-highlight { display: flex; align-items: center; justify-content: space-between; gap: 20px; margin-bottom: 20px; background: rgba(37, 117, 252, 0.1); border: 1px solid #2575fc; padding: 20px; border-radius: 12px; }\n    \n    #contactIntegratedButton { background: linear-gradient(90deg, #6a11cb, #2575fc); color: #fff; border: none; padding: 15px 25px; border-radius: 50px; font-weight: bold; width: 100%; max-width: 500px; margin: 30px auto; display: none; cursor: pointer; text-align: center; }\n    #formModal { display: none; position: fixed; z-index: 9999; left: 0; top: 0; width: 100%; height: 100%; overflow: auto; background-color: rgba(0,0,0,0.85); backdrop-filter: blur(5px); }\n    .modal-content { background-color: #1a1a1a; margin: 5% auto; padding: 30px; border: 1px solid #333; width: 90%; max-width: 600px; border-radius: 15px; animation: slideDown 0.4s; }\n    .close-btn { color: #aaa; float: right; font-size: 28px; font-weight: bold; cursor: pointer; }\n    \n    #realCF7Placeholder .wpcf7 { display: block !important; }\n    #realCF7Placeholder textarea { height: 400px !important; background:#333; color:#fff; border:1px solid #555; padding:10px; width:100%; }\n    #realCF7Placeholder input { background:#333; color:#fff; border:1px solid #555; padding:10px; width:100%; }\n    #realCF7Placeholder input[type=\"submit\"] { background: linear-gradient(90deg, #6a11cb, #2575fc); color: #fff; font-weight: bold; border: none; cursor: pointer; margin-top: 10px; }\n    \n    .day-selector { display: flex; justify-content: center; gap: 5px; margin-bottom: 15px; flex-wrap: wrap; }\n    .day-selector input { display: none; }\n    .day-selector label { display: inline-block; background: rgba(255, 255, 255, 0.1); border: 1px solid #444; color: #aaa; padding: 5px 12px; border-radius: 15px; cursor: pointer; }\n    .day-selector input:checked + label { background: linear-gradient(90deg, #6a11cb, #2575fc); color: #fff; }\n\n    .loading-spinner { display: inline-block; width: 40px; height: 40px; border: 4px solid rgba(255,255,255,0.3); border-top-color: #2575fc; border-radius: 50%; animation: spin 1s infinite; margin-bottom: 20px; }\n    @keyframes spin { to { transform: rotate(360deg); } }\n    @keyframes fadeIn { from { opacity: 0; } to { opacity: 1; } }\n    @keyframes slideDown { from {top: -100px; opacity: 0;} to {top: 0; opacity: 1;} }\n\n    \/* [\uc804\uccb4 \ud654\uba74 \ub85c\ub354 \uc2a4\ud0c0\uc77c] *\/\n    #fullPageLoader {\n        display: none; \/* \uae30\ubcf8\uc801\uc73c\ub85c \uc228\uae40 *\/\n        position: fixed;\n        z-index: 99999; \/* \ucd5c\uc0c1\ub2e8 *\/\n        left: 0;\n        top: 0;\n        width: 100%;\n        height: 100%;\n        background-color: rgba(0,0,0,0.95);\n        backdrop-filter: blur(10px);\n        text-align: center;\n        flex-direction: column;\n        justify-content: center;\n        align-items: center;\n    }\n    #fullPageLoader .loader-content {\n        max-width: 600px;\n        padding: 40px;\n    }\n    #fullPageLoader h3 {\n        color: #a2c2ff;\n        font-size: 1.8rem;\n        margin-bottom: 20px;\n    }\n    #fullPageLoader p {\n        color: #888;\n        font-size: 1rem;\n        line-height: 1.6;\n    }\n\n    @media (max-width: 768px) {\n        .comparison-wrapper, .image-grid-2x2, .chart-wrapper, .date-range-group, .input-row, .bim-grid, .trend-timeline { \n            flex-direction: column; \n        }\n        .date-range-group {\n            width: 100%;\n            min-width: auto;\n            flex-direction: row; \n            margin-bottom: 10px;\n        }\n        #contactIntegratedButton { max-width: 100%; white-space: normal; }\n        .chart-box-left, .chart-box-right { width: 100%; }\n    }\n<\/style>\n<\/head>\n<body>\n\n<div id=\"fullPageLoader\">\n    <div class=\"loader-content\">\n        <h3>\ucd5c\uc885 \ub514\uc790\uc778 \uc2dc\ubbac\ub808\uc774\uc158 \uc911&#8230;<\/h3>\n        <div class=\"loading-spinner\" style=\"width: 60px; height: 60px; border-width: 5px;\"><\/div>\n        <p>AI\uac00 \uacf5\uac04 \ubd84\uc11d\uc744 \uc644\ub8cc\ud558\uace0<br>3D \uc870\uac10\ub3c4 4\uc7a5\uc744 \uc0dd\uc131\ud558\uace0 \uc788\uc2b5\ub2c8\ub2e4.<\/p>\n        <p style=\"color:#2575fc; font-weight:bold; margin-top:20px;\">\uc7a0\uc2dc\ub9cc \uae30\ub2e4\ub824\uc8fc\uc138\uc694.<\/p>\n    <\/div>\n<\/div>\n\n<div id=\"immersive-compare-widget\">\n    <div class=\"header-section\">\n        <h2>\uacf5\uac04\uc744 \ucc44\uc6b0\ub294 \uac83\uc744 \ub118\uc5b4,<br><span>\uacf5\uac04 \uc790\uccb4\uac00 \ucf58\ud150\uce20\uac00 \ub429\ub2c8\ub2e4.<\/span><\/h2>\n        <p>\uc77c\ub8e8\uc83c AI \uc804\ubb38\uac00\uac00 1:1 \uc778\ud130\ubdf0\ub97c \ud1b5\ud574 \ucd5c\uc801\uc758 \uacf5\uac04\uc744 \uc124\uacc4\ud574 \ub4dc\ub9bd\ub2c8\ub2e4.<\/p>\n    <\/div>\n\n    <div class=\"ai-section\" id=\"initialFormSection\">\n        <div class=\"ai-title\">Step 1. \uae30\ubcf8 \uc815\ubcf4 \uc785\ub825<\/div>\n        <div class=\"tab-container\">\n            <div class=\"tab-btn active\" onclick=\"selectType('popup')\">\u26a1 \ud31d\uc5c5 \uc2a4\ud1a0\uc5b4<\/div>\n            <div class=\"tab-btn\" onclick=\"selectType('signature')\">\ud83d\udc8e \uc2dc\uadf8\ub2c8\uccd0 \uc2a4\ud1a0\uc5b4<\/div>\n            <div class=\"tab-btn\" onclick=\"selectType('permanent')\">\ud83c\udfa1 \uc9c0\uc18d\ud615 \uccb4\ud5d8 \ub9e4\uc7a5<\/div>\n        <\/div>\n        <div class=\"input-container\">\n            <div class=\"input-row\">\n                <input type=\"text\" id=\"brandInput\" class=\"input-field\" placeholder=\"\ube0c\ub79c\ub4dc\uba85\" \/>\n                <input type=\"text\" id=\"industryInput\" class=\"input-field\" placeholder=\"\uc5c5\uc885\" \/>\n                <input type=\"text\" id=\"locationInput\" class=\"input-field\" placeholder=\"\uc704\uce58 (\uc790\ub3d9 \uac10\uc9c0)\" \/>\n            <\/div>\n\n            <div class=\"legal-notice-box\">\n                <div class=\"legal-text\">\n                    <strong>[\uba74\ucc45 \uc870\ud56d \ubc0f \uc11c\ube44\uc2a4 \uc774\uc6a9 \ub3d9\uc758]<\/strong><br>\n                    \ubcf8 \ub9ac\ud3ec\ud2b8\ub294 \uace0\uac1d\uc758 \uc544\uc774\ub514\uc5b4 \uad6c\uccb4\ud654\ub97c \ub3d5\uae30 \uc704\ud55c <strong>AI \uc2dc\ubbac\ub808\uc774\uc158 \ucd94\uc815\uce58<\/strong>\uc785\ub2c8\ub2e4. \n                    \uc77c\ub8e8\uc83c(Illusion)\uc740 \ubcf8 \uacb0\uacfc\uac12\uc758 \uc815\ud655\uc131, \uc644\uc804\uc131, \ud604\ud589 \ubc95\uaddc \uc900\uc218 \uc5ec\ubd80\ub97c \ubcf4\uc7a5\ud558\uc9c0 \uc54a\uc73c\uba70, \n                    \uc774\ub97c \ud65c\uc6a9\ud55c \ub3c5\uc790\uc801\uc778 \ube44\uc988\ub2c8\uc2a4 \uc2e4\ud589 \uacb0\uacfc\uc5d0 \ub300\ud574 \ubbfc\u00b7\ud615\uc0ac\uc0c1 \ucc45\uc784\uc744 \uc9c0\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4. \n                    <strong>\uc2e4\uc81c \uacac\uc801 \ubc0f \uc2dc\uacf5 \uacc4\uc57d\uc740 \uc804\ubb38\uac00\uc758 \ud604\uc7a5 \uc2e4\uce21 \ud6c4 \uc791\uc131\ub41c \uacc4\uc57d\uc11c\ub97c \ud1b5\ud574\uc11c\ub9cc \ud655\uc815\ub429\ub2c8\ub2e4.<\/strong>\n                <\/div>\n                <div class=\"legal-check\">\n                    <input type=\"checkbox\" id=\"legalAgreeCheck\">\n                    <label for=\"legalAgreeCheck\">\uc704 \uc720\uc758\uc0ac\ud56d\uc744 \ud655\uc778\ud558\uc600\uc73c\uba70, \uc774\uc5d0 \ub3d9\uc758\ud569\ub2c8\ub2e4. (\ud544\uc218)<\/label>\n                <\/div>\n            <\/div>\n            \n            <div class=\"input-row\">\n                <div class=\"date-range-group\">\n                    <input type=\"date\" id=\"startDateInput\" class=\"date-input-styled\" required \/>\n                    <span style=\"color:#fff;\">~<\/span>\n                    <input type=\"date\" id=\"endDateInput\" class=\"date-input-styled\" required \/>\n                <\/div>\n                <input type=\"text\" id=\"budgetInput\" class=\"input-field\" placeholder=\"\uc608\uc0b0 (\ub9cc\uc6d0)\" \/>\n                <button type=\"button\" onclick=\"startConsultation()\" id=\"startBtn\" class=\"generate-btn\">\uc804\ubb38\uac00 \ubd84\uc11d \uc2dc\uc791 (5\ub2e8\uacc4)<\/button>\n            <\/div>\n            <div id=\"currentLocationText\" style=\"color:#a2c2ff; margin-top:5px; font-size:0.9rem; display:none;\"><\/div>\n        <\/div>\n        <div class=\"usage-limit-info\" style=\"text-align:right; color:#888; margin-top:10px;\">\uc624\ub298 \ub0a8\uc740 \uc0dd\uc131 \ud69f\uc218: <span id=\"remainingCount\">5<\/span>\ud68c<\/div>\n    <\/div>\n\n    <div id=\"consultationSection\">\n        <span class=\"step-indicator\">AI \uc804\ubb38\uac00\uc640 \uc0c1\ub2f4 \uc911&#8230; (<span id=\"currentStepNum\">1<\/span>\/5\ub2e8\uacc4)<\/span>\n        <div class=\"progress-bar-container\"><div class=\"progress-bar\" id=\"progressBar\"><\/div><\/div>\n        <div class=\"chat-box\">\n            <span class=\"ai-avatar\">\ud83e\udd16 \uc77c\ub8e8\uc83c \ub514\ub809\ud130 AI<\/span>\n            <div id=\"aiQuestionText\" class=\"ai-bubble\">\ube0c\ub79c\ub4dc\uc640 \uacf5\uac04\uc5d0 \ub300\ud55c \uc815\ubcf4\ub97c \ubd84\uc11d\ud558\uace0 \uc788\uc2b5\ub2c8\ub2e4&#8230;<\/div>\n        <\/div>\n        <div class=\"user-input-area\">\n            <input type=\"text\" id=\"userAnswer\" class=\"user-answer-field\" placeholder=\"\ub2f5\ubcc0\uc744 \uc785\ub825\ud558\uc138\uc694...\" onkeypress=\"if(event.keyCode==13) nextStep();\">\n            <button onclick=\"nextStep()\" class=\"next-step-btn\" id=\"nextBtn\">\uc804\uc1a1<\/button>\n        <\/div>\n        <div id=\"stepLoading\" style=\"display:none; margin-top:10px; color:#666;\">\ub2e4\uc74c \uc9c8\ubb38 \uc0dd\uc131 \uc911&#8230; <span class=\"loading-spinner\" style=\"width:15px; height:15px; border-width:2px;\"><\/span><\/div>\n    <\/div>\n\n    <div id=\"aiResult\" class=\"ai-result\">\n        <h3 style=\"text-align:center; color:#a2c2ff; margin-bottom:30px;\">\ud83c\udf89 \ucd5c\uc885 \ubd84\uc11d \ubc0f \uc81c\uc548\uc11c\uac00 \uc644\uc131\ub418\uc5c8\uc2b5\ub2c8\ub2e4.<\/h3>\n        \n        <h4>\ud83d\udccd \uc608\uc0c1 \uc8fc\uc18c \uc704\uce58 &#038; \uc8fc\ubcc0 \uad50\ud1b5<\/h4>\n        <div class=\"map-container box-style\">\n            <iframe id=\"googleMapFrame\" width=\"100%\" height=\"100%\" style=\"border:0; border-radius:8px;\" loading=\"lazy\"><\/iframe>\n            <p id=\"mapAddressText\" style=\"text-align:center; margin-top:10px; color:#aaa; font-size:0.9rem;\"><\/p>\n        <\/div>\n\n        <h4>\ud83d\udcca \uc0c1\uad8c \ubc0f \ubc29\ubb38\uac1d \uc0c1\uc138 \ubd84\uc11d<\/h4>\n        <div class=\"box-style\" id=\"commercialBox\">\n            <p id=\"commercialText\" style=\"line-height:1.6; color:#ddd;\"><\/p>\n            <div style=\"margin-top:15px; display:flex; gap:10px; flex-wrap:wrap;\" id=\"commercialKeywords\"><\/div>\n        <\/div>\n\n        <h4>\ud83d\ude80 2023-2025 \ud2b8\ub80c\ub4dc \ubd84\uc11d &#038; \uc194\ub8e8\uc158<\/h4>\n        <div class=\"trend-box box-style\">\n            <div class=\"trend-timeline\">\n                <div class=\"trend-year\"><h5>2023<\/h5><p id=\"trend2023\">&#8211;<\/p><\/div>\n                <div class=\"trend-year\"><h5>2024<\/h5><p id=\"trend2024\">&#8211;<\/p><\/div>\n                <div class=\"trend-year\"><h5>2025 (NOW)<\/h5><p id=\"trend2025\" style=\"color:#fff; font-weight:bold;\">&#8211;<\/p><\/div>\n            <\/div>\n            <div class=\"trend-insight\" style=\"color:#a2c2ff; text-align:center; margin-top:15px;\">\ud83d\udca1 Insight: <span id=\"trendInsight\">&#8211;<\/span><\/div>\n        <\/div>\n\n        <h4>\ud83d\udd2e \uae30\ud68d \ub9ac\ud3ec\ud2b8<\/h4>\n        <div id=\"resultText\" class=\"result-text\"><\/div>\n\n        <h4>\ud83c\udfd7\ufe0f AI \uc2dc\uacf5 \ubb3c\ub7c9 \uc0b0\ucd9c (Illusion Style)<\/h4>\n        <div class=\"box-style bim-analysis-box\">\n            <ul id=\"installationAnalysis\" style=\"padding-left:20px; color:#ddd;\"><\/ul>\n            <div class=\"bim-grid\" style=\"margin-top:20px;\">\n                <div class=\"bim-item\"><h5>\ud83d\udc77 \ud544\uc694 \uc778\ub825 (M\/D)<\/h5><table class=\"material-table\"><tbody id=\"laborTableBody\"><\/tbody><\/table><\/div>\n                <div class=\"bim-item\"><h5>\ud83e\uddf1 \uc790\uc7ac \ubb3c\ub7c9 (BIM \ucd94\uc0b0)<\/h5><table class=\"material-table\"><tbody id=\"materialTableBody\"><\/tbody><\/table><\/div>\n            <\/div>\n        <\/div>\n\n        <h4>\ud83d\udcb0 \uc0c1\uc138 \uacac\uc801\uc11c (\ud134\ud0a4 \uae30\uc900)<\/h4>\n        <div id=\"budgetSection\" class=\"box-style budget-box\">\n            <table class=\"detailed-cost-table\">\n                <thead><tr><th>\ud56d\ubaa9<\/th><th style=\"text-align:right;\">\uc608\uc0c1 \uae08\uc561<\/th><\/tr><\/thead>\n                <tbody id=\"detailedCostBody\"><\/tbody>\n                <tfoot><tr class=\"total-row\"><td><strong>\ucd1d \uc608\uc0c1 \uacac\uc801 (VAT \ubcc4\ub3c4)<\/strong><\/td><td style=\"text-align:right;\" id=\"costTotal\">&#8211;<\/td><\/tr><\/tfoot>\n            <\/table>\n            <p style=\"text-align:center; color:#a2c2ff; margin-top:20px; font-weight:bold;\">\u203b \uc790\uc138\ud55c \uacac\uc801\uc740 \uc77c\ub8e8\uc83c\uc5d0\uac8c \ubb38\uc758\uc8fc\uc2dc\uba74 \ub3c4\uc6c0\ub4dc\ub9ac\uaca0\uc2b5\ub2c8\ub2e4.<\/p>\n        <\/div>\n\n        <h4>\ud83d\udce3 \uc608\uc0c1 \uc131\uacfc \ubc0f \ub9c8\ucf00\ud305 \ubd84\uc11d<\/h4>\n        <div class=\"sns-analysis-box box-style\">\n            <div class=\"dwell-time-highlight\">\n                <span style=\"color:#aaa;\">\uae30\uc874 \ud3c9\uade0: 10\ubd84<\/span> \u27a1\ufe0f <span style=\"color:#a2c2ff; font-weight:bold; font-size:1.2rem;\">\uc77c\ub8e8\uc83c \uc608\uc0c1: <span id=\"dwellTimeMain\">&#8211;<\/span><\/span>\n            <\/div>\n            <div class=\"sns-grid\" style=\"margin-top:20px;\">\n                <div class=\"sns-card\"><span style=\"display:block; font-size:1.5rem;\">\ud83d\udcf1<\/span><span style=\"color:#aaa;\">\ub178\ucd9c\uc218<\/span><br><strong style=\"color:#fff;\" id=\"snsImpressions\">&#8211;<\/strong><\/div>\n                <div class=\"sns-card\"><span style=\"display:block; font-size:1.5rem;\">\ud83c\udfaf<\/span><span style=\"color:#aaa;\">\ud0c0\uac9f<\/span><br><strong style=\"color:#fff;\" id=\"snsTarget\">&#8211;<\/strong><\/div>\n            <\/div>\n        <\/div>\n\n        <h4>\u2694\ufe0f \uacbd\uc7c1\uc0ac \ub300\ube44 \uc7a5\uc810<\/h4>\n        <div class=\"vs-table-container box-style\">\n            <table class=\"vs-table\">\n                <thead><tr><th>\uad6c\ubd84<\/th><th>\uc77c\ubc18 \uc5c5\uccb4<\/th><th style=\"color:#a2c2ff;\">\uc77c\ub8e8\uc83c<\/th><\/tr><\/thead>\n                <tbody id=\"comparisonTableBody\"><\/tbody>\n            <\/table>\n        <\/div>\n\n        <h4>\ud83d\udcca \uc720\ub3d9\uc778\uad6c &#038; \uc131\ubcc4 \uc608\uce21<\/h4>\n        <div class=\"chart-wrapper\">\n            <div class=\"chart-box-left\">\n                <div class=\"day-selector\">\n                    <input type=\"radio\" id=\"day-mon\" name=\"day\" value=\"mon\" checked onchange=\"updateChartDay('mon')\"><label for=\"day-mon\">\uc6d4<\/label>\n                    <input type=\"radio\" id=\"day-tue\" name=\"day\" value=\"tue\" onchange=\"updateChartDay('tue')\"><label for=\"day-tue\">\ud654<\/label>\n                    <input type=\"radio\" id=\"day-wed\" name=\"day\" value=\"wed\" onchange=\"updateChartDay('wed')\"><label for=\"day-wed\">\uc218<\/label>\n                    <input type=\"radio\" id=\"day-thu\" name=\"day\" value=\"thu\" onchange=\"updateChartDay('thu')\"><label for=\"day-thu\">\ubaa9<\/label>\n                    <input type=\"radio\" id=\"day-fri\" name=\"day\" value=\"fri\" onchange=\"updateChartDay('fri')\"><label for=\"day-fri\">\uae08<\/label>\n                    <input type=\"radio\" id=\"day-sat\" name=\"day\" value=\"sat\" onchange=\"updateChartDay('sat')\"><label for=\"day-sat\">\ud1a0<\/label>\n                    <input type=\"radio\" id=\"day-sun\" name=\"day\" value=\"sun\" onchange=\"updateChartDay('sun')\"><label for=\"day-sun\">\uc77c<\/label>\n                <\/div>\n                <div class=\"chart-container\" style=\"height:300px;\"><canvas id=\"trafficChart\"><\/canvas><\/div>\n            <\/div>\n            <div class=\"chart-box-right\"><div class=\"chart-container\" style=\"height:300px;\"><canvas id=\"genderChart\"><\/canvas><\/div><\/div>\n        <\/div>\n\n        <h4>\ud83d\udcc8 \uc608\uc0c1 \ub9e4\ucd9c \uc99d\ub300 (ROI)<\/h4>\n        <div class=\"roi-analysis-box box-style\">\n            <div class=\"chart-container\" style=\"height:300px;\"><canvas id=\"roiChart\"><\/canvas><\/div>\n        <\/div>\n\n        <h4>\ud83d\uddbc\ufe0f \ubab0\uc785\ud615 3D \uc870\uac10\ub3c4<\/h4>\n        <div class=\"image-grid-2x2\">\n            <div class=\"image-box-2x2\"><div class=\"image-box-title\">View 1<\/div><img id=\"img1\" \/><\/div>\n            <div class=\"image-box-2x2\"><div class=\"image-box-title\">View 2<\/div><img id=\"img2\" \/><\/div>\n            <div class=\"image-box-2x2\"><div class=\"image-box-title\">View 3<\/div><img id=\"img3\" \/><\/div>\n            <div class=\"image-box-2x2\"><div class=\"image-box-title\">View 4<\/div><img id=\"img4\" \/><\/div>\n        <\/div>\n\n        <button onclick=\"openFormModal()\" id=\"contactIntegratedButton\">\ud83d\udce9 \uc644\uc131\ub41c \uae30\ud68d\uc548\uc73c\ub85c \ubb38\uc758\ud558\uae30<\/button>\n\n        <div id=\"formModal\">\n            <div class=\"modal-content\">\n                <span class=\"close-btn\" onclick=\"closeFormModal()\">\u00d7<\/span>\n                <h3 style=\"text-align:center; color:#a2c2ff;\">\ubb38\uc758\ud558\uae30<\/h3>\n                <div id=\"realCF7Placeholder\"><\/div>\n            <\/div>\n        <\/div>\n        \n        <div style=\"margin-top:30px; font-size:0.8rem; color:#666; text-align:center;\">\n            * \ubcf8 \uacb0\uacfc\ub294 AI \ubd84\uc11d\uc5d0 \uc758\ud55c \uc608\uc0c1\uce58\uc774\uba70, \uc2e4\uc81c \ube44\uc6a9\uc740 \ud604\uc7a5 \uc0c1\ud669\uc5d0 \ub530\ub77c \ub2ec\ub77c\uc9c8 \uc218 \uc788\uc2b5\ub2c8\ub2e4.\n        <\/div>\n    <\/div>\n<\/div>\n\n<script>\n    const AUDIO_A_URL = \"https:\/\/illusion.place\/wp-content\/uploads\/2025\/11\/A.mp3\";\n    const AUDIO_B_URL = \"https:\/\/illusion.place\/wp-content\/uploads\/2025\/11\/B.mp3\";\n\n    const CF7_FORM_ID = \"2265\";\n    const MAX_DAILY_LIMIT = 5;\n    const STORAGE_KEY = 'illusion_ai_daily_usage';\n\n    let currentType = 'popup', step = 0, chatHistory = \"\", baseInfo = {}, currentConceptHtml = \"\";\n    let trafficChart = null, genderChart = null, roiChart = null, currentGraphData = null;\n    let idleTimer;\n\n    const bgm = {\n        a: new Audio(AUDIO_A_URL), b: new Audio(AUDIO_B_URL),\n        fadeIn: (a, d) => { a.volume=0; a.loop=true; a.play().catch(()=>{}); let v=0, s=1\/(d\/50), f=setInterval(()=>{v=Math.min(1,v+s); a.volume=v; if(v>=1)clearInterval(f);},50); },\n        fadeOut: (a, d) => { let v=a.volume, s=v\/(d\/50), f=setInterval(()=>{v=Math.max(0,v-s); a.volume=v; if(v<=0){clearInterval(f);a.pause();a.currentTime=0;}},50); }\n    };\n\n    Chart.register(ChartDataLabels);\n\n    document.addEventListener('DOMContentLoaded', () => {\n        updateRemainingCountUI();\n        autoDetectLocation();\n\n        const style = document.createElement('style');\n        style.innerHTML = `div.wpcf7[id*=\"f${CF7_FORM_ID}\"] { display: none !important; }`;\n        document.head.appendChild(style);\n\n        setTimeout(() => {\n            const realForm = document.querySelector(`div.wpcf7[id*=\"${CF7_FORM_ID}\"]`) || document.querySelector('.wpcf7');\n            if(realForm) document.getElementById('realCF7Placeholder').appendChild(realForm);\n        }, 1000);\n\n        document.addEventListener('wpcf7mailsent', () => { alert(\"\uc804\uc1a1\ub418\uc5c8\uc2b5\ub2c8\ub2e4.\"); closeFormModal(); });\n\n        idleTimer = setTimeout(() => { bgm.fadeIn(bgm.a, 5000); }, 60000);\n    });\n\n    function selectType(t){currentType=t;document.querySelectorAll('.tab-btn').forEach(b=>b.classList.remove('active'));event.target.classList.add('active');}\n\n    async function autoDetectLocation(){\n        const inp=document.getElementById('locationInput'), txt=document.getElementById('currentLocationText');\n        if(inp.value)return;\n        try{const r=await fetch('https:\/\/ipapi.co\/json\/'), d=await r.json(); if(d.city){inp.value=`${d.region}, ${d.city}`; txt.innerText=`\ud83d\udccd \uc704\uce58 \uc790\ub3d9 \uac10\uc9c0\ub428: ${inp.value}`; txt.style.display='block';}}catch(e){}\n    }\n\n    function getUsageData() {\n        const today = new Date().toISOString().split('T')[0];\n        const rawData = localStorage.getItem(STORAGE_KEY);\n        let data = { date: today, count: 0 };\n\n        if (rawData) {\n            const parsed = JSON.parse(rawData);\n            if (parsed.date === today) { data = parsed; }\n            else { localStorage.setItem(STORAGE_KEY, JSON.stringify(data)); }\n        } else {\n            localStorage.setItem(STORAGE_KEY, JSON.stringify(data));\n        }\n        return data;\n    }\n\n    function incrementUsage(){\n        const data = getUsageData();\n        data.count++;\n        localStorage.setItem(STORAGE_KEY, JSON.stringify(data));\n        updateRemainingCountUI();\n    }\n\n    function updateRemainingCountUI(){\n        const r = Math.max(0, MAX_DAILY_LIMIT - getUsageData().count);\n        document.querySelector('.usage-limit-info span').innerText = r;\n        if(r === 0) document.getElementById('startBtn').disabled = true;\n    }\n\n    async function fetchWithRetry(url, options, retries = 3, backoff = 2000) {\n        try {\n            const response = await fetch(url, options);\n            if (!response.ok) {\n                const text = await response.text();\n                if (response.status === 503 || response.status === 429 || response.status === 500 || text.includes('overloaded')) {\n                    throw new Error(\"SERVER_BUSY\"); \n                }\n                try {\n                    const json = JSON.parse(text);\n                    throw new Error(json.message || \"\uc11c\ubc84 \ud1b5\uc2e0 \uc624\ub958\");\n                } catch(e) {\n                    throw new Error(text || \"\uc54c \uc218 \uc5c6\ub294 \uc624\ub958\");\n                }\n            }\n            return await response.json();\n        } catch (error) {\n            if (retries > 0 && (error.message === \"SERVER_BUSY\" || error.message.includes('overloaded'))) {\n                console.warn(`Server busy. Retrying in ${backoff}ms... (${retries} left)`);\n                const loadingText = document.querySelector('#stepLoading') || document.querySelector('#consultationSection h3');\n                if(loadingText) {\n                    const originalText = loadingText.innerHTML;\n                    loadingText.innerHTML = `AI \uc11c\ubc84 \uc811\uc18d\ub7c9\uc774 \ub9ce\uc544 \uc7ac\uc2dc\ub3c4 \uc911\uc785\ub2c8\ub2e4... (${retries})`;\n                    await new Promise(resolve => setTimeout(resolve, backoff));\n                    loadingText.innerHTML = originalText;\n                } else {\n                    await new Promise(resolve => setTimeout(resolve, backoff));\n                }\n                return fetchWithRetry(url, options, retries - 1, backoff * 1.5);\n            }\n            throw error;\n        }\n    }\n\n    async function startConsultation() {\n        console.log(\"\uc2dc\uc791 \ubc84\ud2bc \ud074\ub9ad\ub428\");\n        const agreeCheck = document.getElementById('legalAgreeCheck');\n        \n        if (!agreeCheck || !agreeCheck.checked) {\n            alert(\"\u26a0\ufe0f [\ud544\uc218 \ud655\uc778]\\n\\n\uc11c\ube44\uc2a4 \uc774\uc6a9\uc744 \uc704\ud574 '\uba74\ucc45 \uc870\ud56d \ubc0f \uc774\uc6a9 \ub3d9\uc758'\uc5d0 \uccb4\ud06c\ud574\uc8fc\uc138\uc694.\\n(\ubd89\uc740 \ubc15\uc2a4 \uc548\uc758 \uccb4\ud06c\ubc15\uc2a4)\");\n            if(agreeCheck) agreeCheck.focus();\n            return;\n        }\n\n        clearTimeout(idleTimer); bgm.fadeOut(bgm.a, 3000);\n\n        const brand = document.getElementById('brandInput').value;\n        const industry = document.getElementById('industryInput').value;\n        const location = document.getElementById('locationInput').value;\n        if (!brand || !industry) { alert(\"\ube0c\ub79c\ub4dc\uba85\uacfc \uc5c5\uc885\uc744 \uc785\ub825\ud574\uc8fc\uc138\uc694.\"); return; }\n\n        if (getUsageData().count >= MAX_DAILY_LIMIT) {\n            alert(\"\uc77c\uc77c \ubb34\ub8cc \uc0ac\uc6a9 \ud69f\uc218(5\ud68c)\ub97c \ubaa8\ub450 \uc0ac\uc6a9\ud558\uc168\uc2b5\ub2c8\ub2e4.\\n\ub0b4\uc77c \ub2e4\uc2dc \ubc29\ubb38\ud574\uc8fc\uc138\uc694.\");\n            return;\n        }\n\n        baseInfo = { brand, industry, location, period: document.getElementById('startDateInput').value + \"~\" + document.getElementById('endDateInput').value, budget: document.getElementById('budgetInput').value, type: currentType };\n\n        document.getElementById('initialFormSection').style.display = 'none';\n        document.getElementById('consultationSection').style.display = 'block';\n        await requestQuestion();\n    }\n\n    async function requestQuestion() {\n        document.getElementById('stepLoading').style.display = 'block';\n        document.getElementById('nextBtn').disabled = true;\n\n        try {\n            const result = await fetchWithRetry('\/?rest_route=\/illusion\/v1\/analyze', {\n                method: 'POST',\n                headers: {'Content-Type':'application\/json'},\n                body: JSON.stringify({ mode: 'ask', history: chatHistory, ...baseInfo })\n            });\n\n            if(result.question) {\n                document.getElementById('aiQuestionText').innerText = result.question;\n                step++;\n                document.getElementById('currentStepNum').innerText = Math.min(step, 5);\n                document.getElementById('progressBar').style.width = (step\/5)*100+'%';\n\n                if (step === 3) bgm.fadeIn(bgm.b, 5000);\n            } else {\n                generateFinalResult();\n            }\n        } catch(e) {\n            console.error(e);\n            alert(\"\u26a0\ufe0f AI \uc11c\ubc84 \uc751\ub2f5 \uc9c0\uc5f0: \" + e.message + \"\\n\\n\uc7a0\uc2dc \ud6c4 \ub2e4\uc2dc \uc2dc\ub3c4\ud574\uc8fc\uc138\uc694.\");\n            document.getElementById('consultationSection').style.display = 'none';\n            document.getElementById('initialFormSection').style.display = 'block';\n        }\n        finally {\n            document.getElementById('stepLoading').style.display = 'none';\n            document.getElementById('nextBtn').disabled = false;\n            document.getElementById('userAnswer').value = '';\n            document.getElementById('userAnswer').focus();\n        }\n    }\n\n    async function nextStep() {\n        const ans = document.getElementById('userAnswer').value;\n        if(!ans) { alert(\"\ub2f5\ubcc0\uc744 \uc785\ub825\ud574\uc8fc\uc138\uc694.\"); return; }\n        chatHistory += `\\n[Q]: ${document.getElementById('aiQuestionText').innerText}\\n[A]: ${ans}`;\n        if (step < 5) await requestQuestion(); else generateFinalResult();\n    }\n\n    async function generateFinalResult() {\n        \/\/ 1. \ud654\uba74 \uc804\ud658 \ubc0f \ub85c\ub354 \ud45c\uc2dc\n        document.getElementById('consultationSection').style.display = 'none';\n        const fullLoader = document.getElementById('fullPageLoader');\n        if(fullLoader) fullLoader.style.display = 'flex';\n\n        \/\/ [\uc548\uc804 \uc7a5\uce58] 20\ucd08 \ud6c4\uc5d0\ub3c4 \ub85c\ub354\uac00 \uc548 \uaebc\uc9c0\uba74 \uac15\uc81c \uc885\ub8cc\n        const safetyTimeout = setTimeout(() => {\n            if(fullLoader && fullLoader.style.display === 'flex') {\n                fullLoader.style.display = 'none';\n                document.getElementById('aiResult').style.display = 'block';\n            }\n        }, 20000);\n\n        try {\n            \/\/ 2. AI \ubd84\uc11d \ub370\uc774\ud130 \uc694\uccad\n            const result = await fetchWithRetry('\/?rest_route=\/illusion\/v1\/analyze', {\n                method: 'POST',\n                headers: {'Content-Type':'application\/json'},\n                body: JSON.stringify({ mode: 'final', history: chatHistory, ...baseInfo })\n            }, 5, 3000);\n\n            bgm.fadeOut(bgm.b, 3000);\n\n            \/\/ 3. \ub370\uc774\ud130 \ub9e4\ud551\n            if (result.map_info && result.map_info.address) {\n                const mapQuery = encodeURIComponent(result.map_info.address);\n                document.getElementById('googleMapFrame').src = `https:\/\/maps.google.com\/maps?q=${mapQuery}&output=embed`;\n                document.getElementById('mapAddressText').innerText = result.map_info.address;\n            }\n\n            document.getElementById('resultText').innerHTML = result.concept_html;\n            currentConceptHtml = result.concept_html;\n\n            if (result.commercial_analysis) {\n                document.getElementById('commercialText').innerText = result.commercial_analysis.summary;\n                if(result.commercial_analysis.keywords) document.getElementById('commercialKeywords').innerHTML = result.commercial_analysis.keywords.map(k => `<span style=\"background:#333; padding:5px 10px; border-radius:15px; font-size:0.8rem;\">${k}<\/span>`).join('');\n            }\n\n            if(result.trend_analysis) {\n                document.getElementById('trend2023').innerText = result.trend_analysis.year_2023;\n                document.getElementById('trend2024').innerText = result.trend_analysis.year_2024;\n                document.getElementById('trend2025').innerText = result.trend_analysis.year_2025;\n                document.getElementById('trendInsight').innerText = result.trend_analysis.insight;\n            }\n\n            if (result.installation_analysis) document.getElementById('installationAnalysis').innerHTML = result.installation_analysis.map(item => `<li>${item}<\/li>`).join('');\n            if (result.labor_estimate) document.getElementById('laborTableBody').innerHTML = result.labor_estimate.map(i => `<tr><td>${i.role}<\/td><td class=\"mat-qty\">${i.count}<\/td><\/tr>`).join('');\n            if (result.material_takeoff) document.getElementById('materialTableBody').innerHTML = result.material_takeoff.map(i => `<tr><td>${i.item}<\/td><td>${i.spec}<\/td><td class=\"mat-qty\">${i.qty}<\/td><\/tr>`).join('');\n\n            if (result.detailed_costs) {\n                const tbody = document.getElementById('detailedCostBody');\n                const costs = result.detailed_costs;\n                let html = '';\n                const keys = ['planning', 'construction', 'electric', 'hardware', 'content', 'operation'];\n                keys.forEach(key => { if(costs[key]) html += `<tr><td><span class=\"cost-label\">${costs[key].label}<\/span><span style=\"display:block; font-size:0.8rem; color:#888;\">${costs[key].detail}<\/span><\/td><td style=\"color:#888;\">ooo,ooo<\/td><\/tr>`; });\n                tbody.innerHTML = html;\n                document.getElementById('costTotal').innerText = 'ooo,ooo';\n            }\n\n            if (result.dwell_time) document.getElementById('dwellTimeMain').innerText = result.dwell_time.time;\n            if (result.sns_analysis) {\n                document.getElementById('snsImpressions').innerText = result.sns_analysis.impressions;\n                document.getElementById('snsTarget').innerText = result.sns_analysis.target;\n            }\n\n            if (result.comparison) {\n                const tbody = document.getElementById('comparisonTableBody');\n                tbody.innerHTML = result.comparison.map(item => `<tr><td>${item.category}<\/td><td style=\"color:#aaa;\">${item.general}<\/td><td style=\"color:#a2c2ff; font-weight:bold;\">${item.illusion}<\/td><\/tr>`).join('');\n            }\n\n            if (result.graph_data) { renderTrafficChart(result.graph_data); }\n            if (result.demographics) renderGenderChart(result.demographics.male, result.demographics.female);\n            if (result.revenue_analysis) renderRoiChart(result.revenue_analysis);\n\n            \/\/ 4. [\ud575\uc2ec] \uc774\ubbf8\uc9c0 \ub85c\ub529 \ub300\uae30 (Promise.all)\n            if (result.render_prompts) {\n                const imagePromises = result.render_prompts.map((p, i) => \n                    generateImageAsync(p, `img${i+1}`)\n                );\n                \/\/ \ubaa8\ub4e0 \uc774\ubbf8\uc9c0\uac00 \uc900\ube44\ub420 \ub54c\uae4c\uc9c0 \uae30\ub2e4\ub9bc\n                await Promise.all(imagePromises);\n            }\n\n        } catch(e) {\n            console.error(e);\n            alert(\"\uc624\ub958 \ubc1c\uc0dd: \" + e.message);\n        } finally {\n            \/\/ 5. \ub85c\ub354 \uc885\ub8cc \ubc0f \uacb0\uacfc \ud45c\uc2dc\n            clearTimeout(safetyTimeout); \/\/ \uc548\uc804 \uc7a5\uce58 \ud0c0\uc774\uba38 \ud574\uc81c\n            if(fullLoader) fullLoader.style.display = 'none';\n            document.getElementById('aiResult').style.display = 'block';\n            document.getElementById('contactIntegratedButton').style.display = 'block';\n            incrementUsage();\n        }\n    }\n\n    \/\/ \ube44\ub3d9\uae30 \uc774\ubbf8\uc9c0 \uc0dd\uc131 \ud568\uc218 (Promise \ubc18\ud658)\n    function generateImageAsync(p, id) {\n        return new Promise((resolve) => {\n            const imgElement = document.getElementById(id);\n            const seed = Math.floor(Math.random()*10000);\n            \n            \/\/ \ub85c\ub529 \uc131\uacf5 \uc2dc resolve\n            imgElement.onload = () => { resolve(true); };\n            \n            \/\/ \ub85c\ub529 \uc2e4\ud328 \uc2dc\uc5d0\ub3c4 resolve (\ud504\ub85c\uc138\uc2a4 \uc911\ub2e8 \ubc29\uc9c0)\n            imgElement.onerror = () => { \n                console.warn(`Image ${id} load failed.`);\n                resolve(false); \n            };\n\n            \/\/ 10\ucd08 \ud0c0\uc784\uc544\uc6c3 (\uc774\ubbf8\uc9c0 \ud558\ub098\uac00 \ub108\ubb34 \uc624\ub798 \uac78\ub9ac\uba74 \ud328\uc2a4)\n            setTimeout(() => { resolve(false); }, 10000);\n\n            \/\/ URL \ud560\ub2f9 (\ub85c\ub529 \uc2dc\uc791)\n            imgElement.src = `https:\/\/image.pollinations.ai\/prompt\/${encodeURIComponent(p)}?width=800&height=600&seed=${seed}&nologo=true`;\n        });\n    }\n\n    function updateChartDay(day) {\n        if (!currentGraphData || !currentGraphData.days) return;\n        let data = currentGraphData.days[day];\n        if (!data) {\n            const base = currentGraphData.days.mon || [10,20,30,40,30,20,10];\n            data = base.map(v => Math.max(0, Math.floor(v * (0.8 + Math.random() * 0.4))));\n            currentGraphData.days[day] = data;\n        }\n        if (trafficChart) {\n            trafficChart.data.datasets[0].data = data;\n            trafficChart.update();\n        }\n    }\n\n    function renderTrafficChart(d){\n        currentGraphData = d;\n        const ctx=document.getElementById('trafficChart').getContext('2d');\n        if(trafficChart)trafficChart.destroy();\n\n        const days = ['mon','tue','wed','thu','fri','sat','sun'];\n        days.forEach(day => {\n             if(!d.days[day]) {\n                 const base = d.days.mon || [10,20,40,60,50,30,10];\n                 d.days[day] = base.map(v => Math.floor(v * (0.85 + Math.random() * 0.3)));\n             }\n        });\n\n        const selectedDay = document.querySelector('input[name=\"day\"]:checked').value || 'mon';\n\n        trafficChart=new Chart(ctx,{\n            type:'line',\n            data:{\n                labels:d.labels,\n                datasets:[{\n                    label:'\ubc29\ubb38\uac1d',\n                    data:d.days[selectedDay],\n                    borderColor:'#a2c2ff',\n                    backgroundColor:'rgba(162,194,255,0.1)',\n                    fill:true,\n                    tension: 0.4\n                }]\n            },\n            options:{\n                responsive:true, maintainAspectRatio:false, plugins:{legend:{display:false}},\n                scales:{ y:{beginAtZero:true,ticks:{color:'#888', font:{family:'Pretendard'}}}, x:{ticks:{color:'#888', font:{family:'Pretendard'}}} },\n                animation: { duration: 1000, easing: 'easeOutQuart' }\n            }\n        });\n    }\n\n    function renderGenderChart(m,f){ const ctx=document.getElementById('genderChart').getContext('2d'); if(genderChart)genderChart.destroy(); genderChart=new Chart(ctx,{type:'doughnut',data:{labels:['\ub0a8','\uc5ec'],datasets:[{data:[m,f],backgroundColor:['#36a2eb','#ff6384'],borderWidth:0}]},options:{responsive:true,maintainAspectRatio:false,plugins:{legend:{position:'bottom',labels:{color:'#ccc'}}}}}); }\n    function renderRoiChart(d){ const ctx=document.getElementById('roiChart').getContext('2d'); if(roiChart)roiChart.destroy(); roiChart=new Chart(ctx,{type:'bar',data:{labels:['\uc804','\uae30\uac04','\ud6c4'],datasets:[{label:'\ub9e4\ucd9c',data:d.revenue,backgroundColor:'#6a11cb'},{label:'\uc720\uc785',data:d.traffic,type:'line',borderColor:'#2575fc'}]},options:{responsive:true,maintainAspectRatio:false,scales:{y:{beginAtZero:true,ticks:{color:'#aaa'}},x:{ticks:{color:'#fff'}}}}}); }\n\n    function openFormModal() {\n        const modal = document.getElementById('formModal');\n        const form = document.querySelector('#realCF7Placeholder .wpcf7');\n\n        if (form) {\n            const msgInput = form.querySelector('textarea[name=\"your-message\"]');\n\n            const div = document.createElement(\"div\");\n            div.innerHTML = currentConceptHtml;\n            let conceptText = div.innerText || \"\";\n            conceptText = conceptText.replace(\/https?:\\\/\\\/[^\\s]+\/g, '');\n            const totalCost = document.getElementById('costTotal').innerText || \"\uacac\uc801 \uc0b0\ucd9c \uc911\";\n\n            const finalReport = `[\uc77c\ub8e8\uc83c AI 5\ub2e8\uacc4 \uae30\ud68d\uc548]\\n\\n` +\n                                `[1. \uae30\ubcf8 \uc815\ubcf4]\\n` +\n                                `- \ube0c\ub79c\ub4dc: ${baseInfo.brand}\\n- \uc5c5\uc885: ${baseInfo.industry}\\n- \uc704\uce58: ${baseInfo.location}\\n- \uc608\uc0b0: ${baseInfo.budget}\\n- \uae30\uac04: ${baseInfo.period}\\n- \ud0c0\uc785: ${baseInfo.type}\\n\\n` +\n                                `[2. AI \uc778\ud130\ubdf0 \ub0b4\uc5ed]${chatHistory}\\n\\n` +\n                                `[3. AI \uc81c\uc548 \uc694\uc57d]\\n${conceptText}\\n\\n` +\n                                `[4. \uc608\uc0c1 \ucd1d \uacac\uc801]\\n${totalCost}`;\n\n            if(msgInput) {\n                msgInput.value = finalReport;\n            }\n            modal.style.display = \"block\";\n        } else {\n             alert(\"\ubb38\uc758 \ud3fc\uc744 \ucc3e\uc744 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4.\");\n        }\n    }\n    function closeFormModal() { document.getElementById('formModal').style.display = \"none\"; }\n    window.onclick = function(event) { if (event.target == document.getElementById('formModal')) closeFormModal(); }\n<\/script>\n<\/body>\n<\/html>\n\n\n\n<div style=\"height:29px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p class=\"has-text-align-center has-black-color has-text-color has-link-color has-small-font-size wp-elements-9e50e3130777aff81a1d173d62dd8329\">\uc774\ubbf8\uc9c0\uac00 \ub098\uc62c\ub54c\uae4c\uc9c0 \uc2dc\uac04\uc774 \uac78\ub9bd\ub2c8\ub2e4. \uc870\uae08\ub9cc \uae30\ub2ec\ub824\uc8fc\uc138\uc694.<br><br>\ub9cc\ub4e4\uace0 \uc2f6\uc740 \uacf5\uac04\uc758 \ud615\uc0c1\uc744 \uba85\ud655\ud558\uac8c \uc801\uc744 \uc218\ub85d \ub354 \uc138\ubc00\ud55c \uacb0\uacfc\ub97c \ubc1b\uc544\ubcf4\uc2e4 \uc218 \uc788\uc2b5\ub2c8\ub2e4.<br><strong>\ub2f5\ubcc0\uc774 \ube48\uce78\uc774\uac70\ub098, \uc801\uc808\uce58 \ubabb\ud55c \ub2f5\ubcc0\uc77c\uacbd\uc6b0, \uacb0\uacfc\uac00 \uc548\ub098\uc62c \uc218 \uc788\uc2b5\ub2c8\ub2e4.<\/strong><\/p>\n<\/div>\n<\/div>\n\n\n\n<div class=\"wp-block-cover is-light\"><video class=\"wp-block-cover__video-background intrinsic-ignore\" autoplay muted loop playsinline src=\"https:\/\/illusion.place\/wp-content\/uploads\/2025\/11\/F_1-1.mp4\" data-object-fit=\"cover\"><\/video><span aria-hidden=\"true\" class=\"wp-block-cover__background has-background-dim-0 has-background-dim\"><\/span><div class=\"wp-block-cover__inner-container is-layout-flow wp-block-cover-is-layout-flow\">\n<p class=\"has-text-align-center has-large-font-size\"><\/p>\n<\/div><\/div>\n","protected":false},"excerpt":{"rendered":"<p>\ub9cc\ub4e4\uace0 \uc2f6\uc73c\uc2e0 \uacf5\uac04\uc744, \uba3c\uc800 AI\uc804\ubb38\uac00\uc5d0\uac8c \ud3b8\ud558\uac8c \ubb3c\uc5b4\ubcf4\uc138\uc694 Illusion AI Space Consultant \ucd5c\uc885 \ub514\uc790\uc778 \uc2dc\ubbac\ub808\uc774\uc158 \uc911&#8230; AI\uac00 \uacf5\uac04 \ubd84\uc11d\uc744 \uc644\ub8cc\ud558\uace03D \uc870\uac10\ub3c4 4\uc7a5\uc744 \uc0dd\uc131\ud558\uace0 \uc788\uc2b5\ub2c8\ub2e4. \uc7a0\uc2dc\ub9cc \uae30\ub2e4\ub824\uc8fc\uc138\uc694. \uacf5\uac04\uc744 \ucc44\uc6b0\ub294 \uac83\uc744 \ub118\uc5b4,\uacf5\uac04 \uc790\uccb4\uac00 \ucf58\ud150\uce20\uac00 \ub429\ub2c8\ub2e4. \uc77c\ub8e8\uc83c AI \uc804\ubb38\uac00\uac00 1:1 \uc778\ud130\ubdf0\ub97c \ud1b5\ud574 \ucd5c\uc801\uc758 \uacf5\uac04\uc744 \uc124\uacc4\ud574 \ub4dc\ub9bd\ub2c8\ub2e4. Step 1. \uae30\ubcf8 \uc815\ubcf4 \uc785\ub825 \u26a1 \ud31d\uc5c5 \uc2a4\ud1a0\uc5b4 \ud83d\udc8e \uc2dc\uadf8\ub2c8\uccd0 \uc2a4\ud1a0\uc5b4 \ud83c\udfa1 \uc9c0\uc18d\ud615 [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"advanced_seo_description":"","jetpack_seo_html_title":"","jetpack_seo_noindex":false,"footnotes":""},"class_list":["post-2255","page","type-page","status-publish","hentry"],"jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/illusion.place\/index.php?rest_route=\/wp\/v2\/pages\/2255","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/illusion.place\/index.php?rest_route=\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/illusion.place\/index.php?rest_route=\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/illusion.place\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/illusion.place\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=2255"}],"version-history":[{"count":215,"href":"https:\/\/illusion.place\/index.php?rest_route=\/wp\/v2\/pages\/2255\/revisions"}],"predecessor-version":[{"id":2641,"href":"https:\/\/illusion.place\/index.php?rest_route=\/wp\/v2\/pages\/2255\/revisions\/2641"}],"wp:attachment":[{"href":"https:\/\/illusion.place\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=2255"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}