Контактная информация

/* Global Resets & Font */ #iTechVistaSuperAdvancedFormContainer * { margin: 0; padding: 0; box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; } #iTechVistaSuperAdvancedFormContainer { background-color: #121212; /* Very dark background */ color: #e0e0e0; padding: 20px 0px; /* REDUCED side padding, kept top/bottom for overall page */ min-height: 100vh; display: flex; flex-direction: column; align-items: center; } /* Form Wrapper */ .iv-form-wrapper { background-color: #1e1e1e; padding: 35px 45px; border-radius: 12px; box-shadow: 0 10px 30px rgba(0, 0, 0, 0.5); width: 100%; max-width: 850px; border: 1px solid #333; overflow: hidden; line-height: 1.65; } /* Header */ .iv-header { text-align: center; margin-bottom: 50px !important; padding-bottom: 25px !important; border-bottom: 1px solid #ff6600; } .iv-header img#itechvista-logo { max-width: 160px; margin-bottom: 20px !important; border-radius: 8px; display: inline-block; } .iv-header h1 { color: #ffffff; font-size: 2.2em; margin-bottom: 10px !important; } .iv-header p { color: #a0a0a0; font-size: 1em; line-height: 1.65; margin-bottom: 5px !important; } .iv-header a { color: #3399ff; text-decoration: none; } .iv-header a:hover { color: #66ccff; text-decoration: underline; } /* Progress Bar */ .iv-progress-bar { display: flex; justify-content: space-between; margin-bottom: 50px !important; list-style: none; padding-top: 15px !important; } .iv-progress-step { text-align: center; flex-grow: 1; position: relative; color: #777; font-size: 0.9em; } .iv-progress-step .iv-step-number { width: 32px; height: 32px; border-radius: 50%; background-color: #333; color: #777; display: inline-flex; align-items: center; justify-content: center; border: 2px solid #444; font-weight: bold; margin-bottom: 10px !important; transition: background-color 0.3s, border-color 0.3s, color 0.3s; } .iv-progress-step .iv-step-label { display: block; transition: color 0.3s; line-height: 1.35; } .iv-progress-step.active .iv-step-number { background-color: #3399ff; border-color: #3399ff; color: #fff; } .iv-progress-step.active .iv-step-label { color: #3399ff; font-weight: bold; } .iv-progress-step.completed .iv-step-number { background-color: #ff6600; border-color: #ff6600; color: #fff; } .iv-progress-step.completed .iv-step-label { color: #ff6600; } .iv-progress-step:not(:last-child)::after { content: ''; position: absolute; top: 23px; /* Adjusted for step number height and progress-bar padding-top */ left: 50%; width: calc(100% - 32px); height: 2px; background-color: #444; transform: translateX(16px); z-index: -1; } .iv-progress-step.completed:not(:last-child)::after { background-color: #ff6600; } /* Form Steps */ .iv-form-step { display: none; animation: ivFadeInStep 0.5s ease-out; } .iv-form-step.active { display: block; } @keyframes ivFadeInStep { from { opacity: 0; transform: translateX(20px); } to { opacity: 1; transform: translateX(0); } } .iv-form-step.exiting { animation: ivFadeOutStep 0.3s ease-in forwards; } @keyframes ivFadeOutStep { from { opacity: 1; transform: translateX(0); } to { opacity: 0; transform: translateX(-20px); } } /* Fieldsets and Legends */ .iv-form-step fieldset { border: 1px solid #444; padding: 35px 30px !important; border-radius: 8px; margin-bottom: 40px !important; } .iv-form-step legend { font-weight: bold; font-size: 1.25em; color: #ff6600; padding: 0 10px !important; margin-left: 5px !important; margin-bottom: 25px !important; } /* Labels and Inputs */ .iv-input-group { margin-bottom: 30px !important; } .iv-input-group label { display: block; margin-bottom: 12px !important; font-weight: 500; color: #b0b0b0; font-size: 0.95em; line-height: 1.5; } .iv-input-group input[type="text"], .iv-input-group input[type="email"], .iv-input-group input[type="tel"], .iv-input-group input[type="url"], .iv-input-group select, .iv-input-group textarea { width: 100%; padding: 15px 18px !important; border: 1px solid #555; border-radius: 6px; background-color: #2c2c2c; color: #e0e0e0; font-size: 1em; transition: border-color 0.3s, box-shadow 0.3s; } .iv-input-group input:focus, .iv-input-group select:focus, .iv-input-group textarea:focus { border-color: #3399ff; outline: none; box-shadow: 0 0 0 3px rgba(51, 153, 255, 0.2); } .iv-input-group select { appearance: none; background-image: url('data:image/svg+xml;charset=US-ASCII,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%22292.4%22%20height%3D%22292.4%22%3E%3Cpath%20fill%3D%22%23a0a0a0%22%20d%3D%22M287%2069.4a17.6%2017.6%200%200%200-13-5.4H18.4c-5%200-9.3%201.8-12.9%205.4A17.6%2017.6%200%200%200%200%2082.2c0%205%201.8%209.3%205.4%2012.9l128%20127.9c3.6%203.6%207.8%205.4%2012.8%205.4s9.2-1.8%2012.8-5.4L287%2095c3.5-3.5%205.4-7.8%205.4-12.8%200-5-1.9-9.2-5.4-12.8z%22%2F%3E%3C%2Fsvg%3E'); background-repeat: no-repeat; background-position: right 1.2rem center; background-size: 0.7em; padding-right: 3rem !important; } .iv-input-group textarea { min-height: 120px !important; resize: vertical; } .iv-radio-group div, .iv-checkbox-group div { margin-bottom: 15px !important; } .iv-radio-group label, .iv-checkbox-group label { font-weight: normal; margin-left: 8px; color: #b0b0b0; cursor: pointer; display: inline-flex; align-items: center; } .iv-radio-group input[type="radio"], .iv-checkbox-group input[type="checkbox"] { margin-right: 10px !important; vertical-align: middle; cursor: pointer; accent-color: #ff6600; width: 1.1em; height: 1.1em; } .iv-input-group small { font-size: 0.85em; color: #888; margin-top: -8px !important; display: block; margin-bottom: 10px !important;} .iv-input-group .rr-guidance { /* Specific class for guidance paragraph */ font-size: 0.9em; color: #a0a0a0; line-height: 1.5; margin-top: 5px !important; /* Override default input group margin */ margin-bottom: 0 !important; } .iv-input-group .rr-guidance strong { color: #ffaa00; /* Softer orange for highlight within guidance */ } .iv-dynamic-fieldset-content { display: none; } .iv-dynamic-fieldset-content.active { display: block; animation: ivFadeInStep 0.4s ease-out; } /* Navigation Buttons */ .iv-nav-buttons { display: flex; justify-content: space-between; margin-top: 45px !important; padding-top: 30px !important; border-top: 1px solid #333; } .iv-nav-buttons button { padding: 15px 32px !important; border-radius: 8px; font-size: 1em; font-weight: bold; cursor: pointer; transition: background-color 0.3s, transform 0.2s, box-shadow 0.3s, border-color 0.3s; border-width: 2px; border-style: solid; } .iv-nav-buttons button.iv-btn-prev { background-color: #4a4a4a; color: #e0e0e0; border-color: #666666; } .iv-nav-buttons button.iv-btn-prev:hover { background-color: #5a5a5a; border-color: #777777; transform: translateX(-2px); } .iv-nav-buttons button.iv-btn-next { background-color: #3399ff; color: #fff; border-color: #1f80e0; } .iv-nav-buttons button.iv-btn-next:hover { background-color: #2088ee; border-color: #106dbf; transform: translateX(2px); } .iv-nav-buttons button.iv-btn-submit { background-color: #ff6600; color: #fff; border-color: #cc5200; } .iv-nav-buttons button.iv-btn-submit:hover { background-color: #e65c00; border-color: #b34700; transform: scale(1.05); } .iv-nav-buttons button:disabled { background-color: #383838; color: #777; cursor: not-allowed; transform: none; box-shadow: none; border-color: #4a4a4a; } /* Review Step Styling */ #ivStepReview .iv-review-summary { background-color: #282828; padding: 30px !important; border-radius: 8px; border: 1px solid #444; } #ivStepReview .iv-review-summary h3 { color: #ff6600; margin-bottom: 25px !important; border-bottom: 1px solid #555; padding-bottom: 18px !important; font-size: 1.3em; } #ivStepReview .iv-review-item { margin-bottom: 15px !important; padding: 12px 0 !important; border-bottom: 1px dotted #4a4a4a; display: flex; flex-wrap: wrap; line-height: 1.6; } #ivStepReview .iv-review-item:last-child { border-bottom: none; } #ivStepReview .iv-review-item strong { color: #b8b8b8; min-width: 220px; display: inline-block; margin-right: 15px !important; font-weight: 500; } #ivStepReview .iv-review-item span { color: #e8e8e8; flex-grow: 1; } /* Validation Error Styling */ .iv-input-group input.iv-invalid, .iv-input-group select.iv-invalid, .iv-input-group textarea.iv-invalid { border-color: #e74c3c !important; box-shadow: 0 0 0 3px rgba(231, 76, 60, 0.2) !important; } .iv-error-message { color: #e74c3c; font-size: 0.9em; margin-top: 35px !important; text-align: center; display: none; font-weight: 500; } /* Submission Message */ #iTechVistaFormSubmissionMessageGlobal { margin: 35px auto 0 auto !important; padding: 18px !important; border-radius: 6px; font-weight: bold; text-align: center; display: none; width: 100%; max-width: 850px; } #iTechVistaFormSubmissionMessageGlobal.success { background-color: #28a745; color: #fff; border: 1px solid #1e7e34; display: block; } #iTechVistaFormSubmissionMessageGlobal.error { background-color: #dc3545; color: #fff; border: 1px solid #b02a37; display: block; } #iTechVistaFormSubmissionMessageGlobal.info { background-color: #17a2b8; color: #fff; border: 1px solid #117a8b; display: block; } /* Footer */ .iv-footer { text-align: center; padding: 30px 0px !important; color: #8892b0; font-size: 0.9em; margin-top: 45px !important; width: 100%; } .iv-footer a { color: #3399ff; text-decoration: none; } .iv-footer a:hover { color: #66ccff; text-decoration: underline; } .iv-hidden { display: none !important; } /* === CSS TO FORCE INTERACTIVITY IN ACTIVE STEP (Typing Fix Attempt) === */ .iv-form-step.active .iv-input-group, .iv-form-step.active .iv-input-group input, .iv-form-step.active .iv-input-group select, .iv-form-step.active .iv-input-group textarea { pointer-events: auto !important; user-select: auto !important; opacity: 1 !important; visibility: visible !important; } #ivDynamicContentHost, #ivDynamicContentHost * { pointer-events: auto !important; user-select: auto !important; } /* === END OF CSS FOR INTERACTIVITY === */

Get In Touch

Expert solutions for your tech needs. Fill out the form below.

  • 1
    Service
  • 2
    Details
  • 3
    Contact
  • 4
    Review
Service Selection
What can we help you with today? -- Please choose an option -- PC Optimization & Repair Shopify Store Setup & Optimization GrapheneOS Installation DaVinci Resolve Training PC Parts & Accessories Purchase Other Electronics (Watches, Earbuds, etc.) Returns or Replacements General Inquiry / Other
Next »
Specific Needs
« Previous Next »
Your Contact Information
Full Name:
Your Email (for our reply):
Phone (Optional):
« Previous Review »
Review Your Inquiry

Please review your information below before submitting.

« Previous Prepare Email »

© iTechVista. All Rights Reserved. | iTechVista.com

Specific PC Issue:-- Select -- Slow Performance/Freezing Virus or Malware Hardware Failure Software Issues Data Recovery Inquiry OS Install/Upgrade General PC Tune-up Custom PC Consultation Other
Preferred Service Method:
In-Person (Local)
Mail-in Device
Remote Session
Device Type (e.g., Desktop, Laptop):
Operating System (e.g., Windows 11):
Detailed Description of PC Issue:
Shopify Service Needed:-- Select -- New Store Setup Theme Customization App Integration Product Setup SEO/Performance Opt. Migration Training Other
Shopify Store URL (if any):
Service Method:
Remote / Email
Project Requirements:
Device Model (e.g., Pixel 8 Pro):Verify official GrapheneOS support.
Service Method:
In-Person (Local)
Mail-in Device
Specific Requests/Questions:
Topics of Interest: (Check all that apply)
Editing (Edit/Cut)
Color Grading
VFX (Fusion)
Audio (Fairlight)
Workflow/Media Mgt.
Current DaVinci Resolve Skill Level:-- Select -- Beginner Intermediate Advanced
Preferred Training Method:
In-Person (Local)
Remote Session
Learning Goals:
Type of Part/Accessory:-- Select -- CPU GPU RAM Motherboard Storage PSU Case Cooling Keyboard/Mouse Monitor Other
Specific Part Name/Model (if known):
Nature of Inquiry:
Specific part search
Compatibility advice
Quote for multiple parts
Details about your PC Part needs:
Type of Electronic:-- Select -- Smartwatch Fitness Tracker Earbuds Headphones Portable Speaker Other
Brand/Model (if applicable):
Your Inquiry Concerns:
New purchase
Support for existing
Feature question
Details about your Electronics inquiry:
Order Number:
Item(s) in Question:
Reason for Return/Replacement Request: -- Select a Reason -- Item Arrived Damaged Item is Defective / Not Working Correctly Incorrect Item Received Changed Mind / No Longer Needed (Subject to Policy) Sizing Issue (e.g., for apparel/accessories if applicable) Other (Please describe below)
Detailed Description of the Issue/Reason:

Photo/Video Evidence: For issues regarding damaged or defective items, our support team may request photos or a short video demonstrating the problem. Please have these ready if possible to expedite your request after you submit this initial contact.

Subject:
Your Message:
document.addEventListener('DOMContentLoaded', function() { const form = document.getElementById('iTechVistaMailToForm_MultiStep'); const steps = Array.from(form.querySelectorAll('.iv-form-step')); const progressSteps = Array.from(document.querySelectorAll('.iv-progress-step')); const nextButtons = form.querySelectorAll('.iv-btn-next'); const prevButtons = form.querySelectorAll('.iv-btn-prev'); const primaryIssueSelect = document.getElementById('primaryIssue'); const dynamicContentHost = document.getElementById('ivDynamicContentHost'); const dynamicContentLegend = dynamicContentHost.querySelector('legend'); const reviewSummaryOutput = document.getElementById('ivReviewSummaryOutput'); const recipientEmail = 'Support@iTechVista.com'; const formErrorMessage = document.getElementById('ivFormErrorMessage'); const globalSubmissionMessage = document.getElementById('iTechVistaFormSubmissionMessageGlobal'); let currentStep = 0; const fieldTemplates = { pc_optimization: { legend: "PC Optimization & Repair Details", templateId: "template-pc_optimization" }, shopify_services: { legend: "Shopify Service Details", templateId: "template-shopify_services" }, grapheneos_install: { legend: "GrapheneOS Installation Details", templateId: "template-grapheneos_install" }, davinci_training: { legend: "DaVinci Resolve Training Details", templateId: "template-davinci_training" }, pc_parts: { legend: "PC Parts & Accessories Inquiry", templateId: "template-pc_parts" }, other_electronics: { legend: "Other Electronics Inquiry", templateId: "template-other_electronics" }, returns_replacements: { legend: "Return or Replacement Details", templateId: "template-returns_replacements" }, // ADDED THIS general_inquiry: { legend: "General Inquiry Details", templateId: "template-general_inquiry" } }; function updateStepView() { // ... (JavaScript identical to V8/previous version for this function) ... const currentFormStep = steps[currentStep]; steps.forEach((step, index) => { if (index === currentStep) { step.classList.remove('exiting'); step.classList.add('active'); } else { step.classList.remove('active'); } }); progressSteps.forEach((pStep, index) => { pStep.classList.remove('active', 'completed'); if (index < currentStep) { pStep.classList.add('completed'); } else if (index === currentStep) { pStep.classList.add('active'); } }); formErrorMessage.style.display = 'none'; } function animateAndChangeStep(newStepIndex) { // ... (JavaScript identical to V8/previous version for this function) ... const currentFormStep = steps[currentStep]; if (newStepIndex > currentStep) { currentFormStep.classList.add('exiting'); setTimeout(() => { currentFormStep.classList.remove('active'); currentStep = newStepIndex; updateStepView(); }, 250); } else { currentFormStep.classList.remove('active'); currentStep = newStepIndex; updateStepView(); } } function validateStep(stepIndex) { // ... (JavaScript identical to V8/previous version for this function) ... formErrorMessage.style.display = 'none'; const currentFields = steps[stepIndex].querySelectorAll('[required]'); let allValid = true; currentFields.forEach(field => { field.classList.remove('iv-invalid'); let fieldValid = true; if (field.type === 'checkbox' ) { if (!field.checked && field.hasAttribute('required')) { fieldValid = false; } } else if (field.type === 'radio') { const radioGroupName = field.name; if (field.hasAttribute('required') && !form.querySelector(`input[name="${radioGroupName}"]:checked`)) { // Validation for radio groups } } else if (!field.value.trim()) { fieldValid = false; } if (!fieldValid) { allValid = false; field.classList.add('iv-invalid'); } }); if (!allValid) { formErrorMessage.textContent = 'Please fill in all highlighted required fields for this step.'; formErrorMessage.style.display = 'block'; } return allValid; } primaryIssueSelect.addEventListener('change', function() { // ... (JavaScript identical to V8/previous version for this function) ... const selectedValue = this.value; const childrenToRemove = []; for(let i = 0; i < dynamicContentHost.childNodes.length; i++) { if(dynamicContentHost.childNodes[i] !== dynamicContentLegend) { childrenToRemove.push(dynamicContentHost.childNodes[i]); } } childrenToRemove.forEach(child => dynamicContentHost.removeChild(child)); if (selectedValue && fieldTemplates[selectedValue]) { const templateInfo = fieldTemplates[selectedValue]; dynamicContentLegend.textContent = templateInfo.legend; const template = document.getElementById(templateInfo.templateId); if (template) { const clone = template.content.cloneNode(true); dynamicContentHost.appendChild(clone); } else { dynamicContentLegend.textContent = "Specific Needs"; } } else { dynamicContentLegend.textContent = "Specific Needs"; } }); nextButtons.forEach(button => { // ... (JavaScript identical to V8/previous version for this function) ... button.addEventListener('click', () => { if (validateStep(currentStep)) { const nextStepIndex = parseInt(button.dataset.next) - 1; if (nextStepIndex === 3) { populateReviewSummary(); } animateAndChangeStep(nextStepIndex); } }); }); prevButtons.forEach(button => { // ... (JavaScript identical to V8/previous version for this function) ... button.addEventListener('click', () => { const prevStepIndex = parseInt(button.dataset.prev) - 1; animateAndChangeStep(prevStepIndex); }); }); function formatFieldNameForReview(name, fieldElement) { // ... (JavaScript identical to V8/previous version for this function) ... if (fieldElement && fieldElement.id) { const label = form.querySelector(`label[for='${fieldElement.id}']`); if (label) { return label.textContent.replace(':', ''); } } const result = name.replace(/([A-Z])/g, " $1").replace(/\[\]/g, ""); return result.charAt(0).toUpperCase() + result.slice(1); } function populateReviewSummary() { // ... (JavaScript identical to V8/previous version for this function, // it's designed to pick up new fields based on template structure) ... reviewSummaryOutput.innerHTML = '<h3>Your Inquiry Details:</h3>'; const formData = new FormData(form); let summaryHtml = ''; const primaryIssueValue = formData.get('primaryIssue'); if (primaryIssueValue) { summaryHtml += `<div class="iv-review-item"><strong>Selected Service:</strong> <span>${primaryIssueSelect.options[primaryIssueSelect.selectedIndex].text}</span></div>`; } if (primaryIssueValue && fieldTemplates[primaryIssueValue]) { const templateId = fieldTemplates[primaryIssueValue].templateId; const templateNode = document.getElementById(templateId); if (templateNode) { summaryHtml += `<div class="iv-review-item" style="margin-top:15px; padding-top:15px; border-top:1px solid #555;"><strong>${fieldTemplates[primaryIssueValue].legend}:</strong></div>`; templateNode.content.querySelectorAll('input, select, textarea, p.rr-guidance').forEach(fieldInTemplate => { // Added p.rr-guidance to potentially skip it if needed, but FormData won't pick it up anyway if (fieldInTemplate.tagName === 'P' && fieldInTemplate.classList.contains('rr-guidance')) return; // Skip p guidance tag const fieldName = fieldInTemplate.name; if (!fieldName) return; // Skip elements without a name (like the guidance paragraph) const fieldElement = dynamicContentHost.querySelector(`[name="${fieldName}"]`); let value; const labelText = formatFieldNameForReview(fieldName, fieldElement); if (fieldInTemplate.type === 'checkbox') { const checkedValues = Array.from(dynamicContentHost.querySelectorAll(`input[name='${fieldName}']:checked`)).map(cb => cb.value); value = checkedValues.length > 0 ? checkedValues.join(', ') : "Not specified"; if(fieldName.includes("[]")) { if(!summaryHtml.includes(`<strong>${labelText}:`)){ summaryHtml += `<div class="iv-review-item"><strong>${labelText}:</strong> <span>${value}</span></div>`; } } } else if (fieldInTemplate.type === 'radio') { const checkedRadio = dynamicContentHost.querySelector(`input[name='${fieldName}']:checked`); value = checkedRadio ? checkedRadio.value : "Not specified"; if(!summaryHtml.includes(`<strong>${labelText}:`)){ summaryHtml += `<div class="iv-review-item"><strong>${labelText}:</strong> <span>${value}</span></div>`; } } else { value = fieldElement ? (fieldElement.tagName === 'SELECT' ? fieldElement.options[fieldElement.selectedIndex].text : fieldElement.value) : "Not specified"; if (value && value.trim() !== "" && value !== "-- Select a Reason --" && value !== "-- Select --") { // Check if value is meaningful summaryHtml += `<div class="iv-review-item"><strong>${labelText}:</strong> <span>${value}</span></div>`; } } }); } } summaryHtml += `<div class="iv-review-item" style="margin-top:15px; padding-top:15px; border-top:1px solid #555;"><strong>Your Contact Information:</strong></div>`; summaryHtml += `<div class="iv-review-item"><strong>Full Name:</strong> <span>${formData.get('fullName') || 'N/A'}</span></div>`; summaryHtml += `<div class="iv-review-item"><strong>Email:</strong> <span>${formData.get('email') || 'N/A'}</span></div>`; const phoneValue = formData.get('phone'); summaryHtml += `<div class="iv-review-item"><strong>Phone:</strong> <span>${phoneValue ? phoneValue : 'Not provided'}</span></div>`; reviewSummaryOutput.innerHTML += summaryHtml; } form.addEventListener('submit', function(event) { // ... (JavaScript for mailto body construction identical to V8, // it's designed to pick up new fields based on template structure and FormData) ... event.preventDefault(); if (!validateStep(currentStep)) return; const submitButton = form.querySelector('.iv-btn-submit'); submitButton.disabled = true; submitButton.textContent = 'Processing...'; globalSubmissionMessage.style.display = 'none'; const formData = new FormData(form); let mailtoBody = []; const fullName = formData.get('fullName'); const userEmail = formData.get('email'); mailtoBody.push("==============================================\n"); const primaryIssueText = primaryIssueSelect.options[primaryIssueSelect.selectedIndex].text; mailtoBody.push(`Service/Topic: ${primaryIssueText}\n`); const selectedIssueKey = formData.get('primaryIssue'); if (selectedIssueKey && fieldTemplates[selectedIssueKey]) { const templateId = fieldTemplates[selectedIssueKey].templateId; const templateNode = document.getElementById(templateId); if (templateNode) { mailtoBody.push("\n--- " + fieldTemplates[selectedIssueKey].legend + " ---\n"); templateNode.content.querySelectorAll('input, select, textarea').forEach(fieldInTemplate => { // Iterate over template fields to maintain order and labels const fieldName = fieldInTemplate.name; if (!fieldName) return; // Skip elements without a name const fieldElement = dynamicContentHost.querySelector(`[name="${fieldName}"]`); const fieldLabel = formatFieldNameForReview(fieldName, fieldElement); let value; if (fieldInTemplate.type === 'checkbox') { const checkedValues = Array.from(dynamicContentHost.querySelectorAll(`input[name='${fieldName}']:checked`)).map(cb => cb.value); if (checkedValues.length > 0 && !mailtoBody.find(line => line.startsWith(`${fieldLabel}:`))) { mailtoBody.push(`${fieldLabel}: ${checkedValues.join(', ')}`); } } else if (fieldInTemplate.type === 'radio') { const checkedRadio = dynamicContentHost.querySelector(`input[name='${fieldName}']:checked`); if (checkedRadio && !mailtoBody.find(line => line.startsWith(`${fieldLabel}:`))) { mailtoBody.push(`${fieldLabel}: ${checkedRadio.value}`); } } else if (fieldInTemplate.tagName === 'SELECT') { value = fieldElement && fieldElement.value ? fieldElement.options[fieldElement.selectedIndex].text : ""; if (value && value.trim() !== "" && value !== "-- Select a Reason --" && value !== "-- Select --") { mailtoBody.push(`${fieldLabel}: ${value}`); } } else { value = fieldElement ? fieldElement.value : formData.get(fieldName); if (value && value.trim() !== "") { mailtoBody.push(`${fieldLabel}: ${value}`); } } }); } } mailtoBody.push("\n--- Contact Information ---\n"); mailtoBody.push(`Full Name: ${fullName}`); mailtoBody.push(`Reply-to Email: ${userEmail}`); if (formData.get('phone')) mailtoBody.push(`Phone: ${formData.get('phone')}`); mailtoBody.push("\n=============================================="); const subject = encodeURIComponent(`iTechVista Inquiry: ${primaryIssueText} - ${fullName}`); const body = encodeURIComponent(mailtoBody.join('\n')); const mailtoLink = `mailto:${recipientEmail}?subject=${subject}&body=${body}`; if (mailtoLink.length > 2000) { globalSubmissionMessage.textContent = 'The inquiry is too long for standard email. Please shorten your descriptions or contact us directly via email.'; globalSubmissionMessage.className = 'error'; } else { globalSubmissionMessage.textContent = 'Your email client should open shortly to send the inquiry. If not, please ensure your browser is configured to handle mailto links or copy the details manually. Thank you!'; globalSubmissionMessage.className = 'info'; window.location.href = mailtoLink; } globalSubmissionMessage.style.display = 'block'; setTimeout(() => { submitButton.disabled = false; submitButton.textContent = 'Prepare Email &raquo;'; }, 4000); }); updateStepView(); document.getElementById('iTechVistaCurrentYearSA').textContent = new Date().getFullYear(); if(primaryIssueSelect.value) primaryIssueSelect.dispatchEvent(new Event('change')); });