538 lines
42 KiB
Plaintext
538 lines
42 KiB
Plaintext
<!DOCTYPE html>
|
||
<html lang="<%= currentLanguage %>" class="<%= theme === 'dark' ? 'dark' : '' %>">
|
||
<head>
|
||
<meta charset="UTF-8">
|
||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||
<title><%- __('calculator.title') %> | <%= siteSettings?.siteName || 'SmartSolTech' %></title>
|
||
<meta name="description" content="<%- __('calculator.subtitle') %>">
|
||
|
||
<!-- Preload critical resources -->
|
||
<link rel="preload" href="/css/tailwind.css" as="style">
|
||
<link rel="preload" href="/css/main.css" as="style">
|
||
|
||
<!-- Stylesheets -->
|
||
<link rel="stylesheet" href="/css/tailwind.css">
|
||
<link rel="stylesheet" href="/css/base.css">
|
||
<link rel="stylesheet" href="/css/main.css">
|
||
<link rel="stylesheet" href="/css/dark-theme.css">
|
||
|
||
<!-- Meta tags -->
|
||
<meta name="robots" content="index, follow">
|
||
<link rel="canonical" href="<%= process.env.SITE_URL || 'http://localhost:3000' %>/calculator">
|
||
|
||
<!-- Favicon -->
|
||
<link rel="icon" type="image/x-icon" href="/favicon.ico">
|
||
<link rel="icon" type="image/png" sizes="32x32" href="/images/favicon-32x32.png">
|
||
<link rel="icon" type="image/png" sizes="16x16" href="/images/favicon-16x16.png">
|
||
|
||
<!-- PWA manifest -->
|
||
<link rel="manifest" href="/manifest.json">
|
||
|
||
<!-- Theme color -->
|
||
<meta name="theme-color" content="#3b82f6">
|
||
<meta name="msapplication-TileColor" content="#3b82f6">
|
||
</head>
|
||
<body class="bg-background text-foreground transition-colors duration-300">
|
||
<%- include('partials/navigation') %>
|
||
|
||
<!-- Modern Calculator with UX-polished design -->
|
||
<div class="min-h-screen bg-gradient-to-br from-blue-50 to-indigo-100 dark:from-gray-900 dark:to-gray-800 pt-20">
|
||
<div class="container mx-auto px-4 py-8 max-w-4xl">
|
||
<!-- Header with price display and dark mode toggle -->
|
||
<div class="flex flex-col lg:flex-row justify-between items-start lg:items-center mb-12 gap-6">
|
||
<div class="text-center lg:text-left">
|
||
<h1 class="text-2xl lg:text-3xl font-bold bg-gradient-to-r from-blue-600 to-purple-600 bg-clip-text text-transparent mb-4">
|
||
<%- __('calculator.title') %>
|
||
</h1>
|
||
<p class="text-lg text-gray-600 dark:text-gray-300 max-w-2xl">
|
||
<%- __('calculator.subtitle') %>
|
||
</p>
|
||
</div>
|
||
|
||
<div class="flex items-center gap-4 w-full lg:w-auto justify-center lg:justify-end">
|
||
<!-- Reset Button -->
|
||
<button
|
||
id="resetButton"
|
||
class="bg-gray-100 hover:bg-gray-200 dark:bg-gray-700 dark:hover:bg-gray-600 text-gray-700 dark:text-gray-300 px-4 py-2 rounded-lg font-medium transition-colors duration-200 flex items-center gap-2"
|
||
title="<%- __('calculator.reset') %>"
|
||
aria-label="<%- __('calculator.reset') %>">
|
||
<svg class="w-4 h-4" fill="none" stroke="currentColor" viewBox="0 0 24 24">
|
||
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M4 4v5h.582m15.356 2A8.001 8.001 0 004.582 9m0 0H9m11 11v-5h-.581m0 0a8.003 8.003 0 01-15.357-2m15.357 2H15"></path>
|
||
</svg>
|
||
<%- __('calculator.reset') %>
|
||
</button>
|
||
|
||
|
||
<!-- Live Price Display будет перемещен вниз -->
|
||
</div>
|
||
</div>
|
||
|
||
<!-- Progress Steps -->
|
||
<div class="w-full mb-20">
|
||
<div class="flex justify-between items-center mb-6">
|
||
<!-- Step 1 -->
|
||
<div class="flex items-center" data-step="0">
|
||
<div class="relative">
|
||
<div class="w-12 h-12 rounded-full flex items-center justify-center text-sm font-bold transition-all duration-300 bg-blue-600 text-white shadow-lg" id="step-indicator-0">
|
||
<svg class="w-6 h-6 hidden" id="check-0" fill="currentColor" viewBox="0 0 20 20">
|
||
<path fill-rule="evenodd" d="M16.707 5.293a1 1 0 010 1.414l-8 8a1 1 0 01-1.414 0l-4-4a1 1 0 011.414-1.414L8 12.586l7.293-7.293a1 1 0 011.414 0z" clip-rule="evenodd"></path>
|
||
</svg>
|
||
<span class="step-number" id="number-0">1</span>
|
||
</div>
|
||
<div class="absolute -top-8 left-1/2 transform -translate-x-1/2 whitespace-nowrap">
|
||
<span class="text-sm font-medium text-gray-700 dark:text-gray-300"><%- __('calculator.step1.nav_title') %></span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<!-- Progress Line 1 -->
|
||
<div class="flex-1 h-1 bg-gray-200 dark:bg-gray-700 mx-4 rounded-full overflow-hidden">
|
||
<div class="h-full bg-gradient-to-r from-blue-600 to-purple-600 transition-all duration-500 w-0" id="progress-line-0"></div>
|
||
</div>
|
||
|
||
<!-- Step 2 -->
|
||
<div class="flex items-center" data-step="1">
|
||
<div class="relative">
|
||
<div class="w-12 h-12 rounded-full flex items-center justify-center text-sm font-bold transition-all duration-300 bg-gray-300 dark:bg-gray-600 text-gray-600 dark:text-gray-400" id="step-indicator-1">
|
||
<svg class="w-6 h-6 hidden" id="check-1" fill="currentColor" viewBox="0 0 20 20">
|
||
<path fill-rule="evenodd" d="M16.707 5.293a1 1 0 010 1.414l-8 8a1 1 0 01-1.414 0l-4-4a1 1 0 011.414-1.414L8 12.586l7.293-7.293a1 1 0 011.414 0z" clip-rule="evenodd"></path>
|
||
</svg>
|
||
<span class="step-number" id="number-1">2</span>
|
||
</div>
|
||
<div class="absolute -top-8 left-1/2 transform -translate-x-1/2 whitespace-nowrap">
|
||
<span class="text-sm font-medium text-gray-700 dark:text-gray-300"><%- __('calculator.step2.nav_title') %></span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<!-- Progress Line 2 -->
|
||
<div class="flex-1 h-1 bg-gray-200 dark:bg-gray-700 mx-4 rounded-full overflow-hidden">
|
||
<div class="h-full bg-gradient-to-r from-blue-600 to-purple-600 transition-all duration-500 w-0" id="progress-line-1"></div>
|
||
</div>
|
||
|
||
<!-- Step 3 -->
|
||
<div class="flex items-center" data-step="2">
|
||
<div class="relative">
|
||
<div class="w-12 h-12 rounded-full flex items-center justify-center text-sm font-bold transition-all duration-300 bg-gray-300 dark:bg-gray-600 text-gray-600 dark:text-gray-400" id="step-indicator-2">
|
||
<svg class="w-6 h-6 hidden" id="check-2" fill="currentColor" viewBox="0 0 20 20">
|
||
<path fill-rule="evenodd" d="M16.707 5.293a1 1 0 010 1.414l-8 8a1 1 0 01-1.414 0l-4-4a1 1 0 011.414-1.414L8 12.586l7.293-7.293a1 1 0 011.414 0z" clip-rule="evenodd"></path>
|
||
</svg>
|
||
<span class="step-number" id="number-2">3</span>
|
||
</div>
|
||
<div class="absolute -top-8 left-1/2 transform -translate-x-1/2 whitespace-nowrap">
|
||
<span class="text-sm font-medium text-gray-700 dark:text-gray-300"><%- __('calculator.result.nav_title') %></span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<!-- Overall Progress Bar -->
|
||
<div class="w-full bg-gray-200 dark:bg-gray-700 rounded-full h-3 mt-20 shadow-inner">
|
||
<div id="overallProgress" class="bg-gradient-to-r from-blue-600 to-purple-600 h-3 rounded-full transition-all duration-500 shadow-sm" style="width: 33.33%"></div>
|
||
</div>
|
||
</div>
|
||
|
||
<!-- Main Calculator Content -->
|
||
<div class="bg-white/90 dark:bg-gray-800/90 rounded-3xl shadow-2xl overflow-hidden border border-gray-100 dark:border-gray-700 backdrop-blur-sm mt-4">
|
||
|
||
<!-- Step 1: Service Selection -->
|
||
<div id="step-1" class="step-content p-8 md:p-12">
|
||
<div class="text-center mb-10">
|
||
<div class="w-16 h-16 bg-blue-100 dark:bg-blue-900 rounded-full flex items-center justify-center mx-auto mb-4">
|
||
<svg class="w-8 h-8 text-blue-600 dark:text-blue-400" fill="none" stroke="currentColor" viewBox="0 0 24 24">
|
||
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M21 13.255A23.931 23.931 0 0112 15c-3.183 0-6.22-.62-9-1.745M16 6V4a2 2 0 00-2-2h-4a2 2 0 00-2-2v2m8 0V6a2 2 0 012 2v6a2 2 0 01-2 2H8a2 2 0 01-2-2V8a2 2 0 012-2h8z"></path>
|
||
</svg>
|
||
</div>
|
||
<h2 class="text-2xl font-bold mb-3"><%- __('calculator.step1.title') %></h2>
|
||
<p class="text-lg text-gray-600 dark:text-gray-400"><%- __('calculator.step1.subtitle') %></p>
|
||
</div>
|
||
|
||
<div class="grid grid-cols-1 md:grid-cols-2 gap-6">
|
||
<!-- Web Development -->
|
||
<div class="service-card group cursor-pointer transition-all duration-300 hover:scale-105" data-service="web" data-price="500000">
|
||
<div class="bg-gradient-to-br from-blue-50 to-blue-100 dark:from-blue-900 dark:to-blue-800 rounded-2xl p-8 border-2 border-transparent group-hover:border-blue-500 transition-all duration-300">
|
||
<div class="flex items-start justify-between mb-6">
|
||
<div class="w-14 h-14 bg-blue-500 rounded-xl flex items-center justify-center shadow-lg">
|
||
<svg class="w-8 h-8 text-white" fill="none" stroke="currentColor" viewBox="0 0 24 24">
|
||
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M21 12a9 9 0 01-9 9m9-9a9 9 0 00-9-9m9 9H3m9 9v-9m0-9v9"></path>
|
||
</svg>
|
||
</div>
|
||
<div class="w-6 h-6 rounded-full border-2 border-gray-300 group-hover:border-blue-500 transition-colors duration-300">
|
||
<div class="w-full h-full rounded-full bg-blue-500 scale-0 group-hover:scale-100 transition-transform duration-300 service-indicator"></div>
|
||
</div>
|
||
</div>
|
||
<h3 class="text-lg font-bold mb-3 text-gray-900 dark:text-white"><%- __('services.web.title') %></h3>
|
||
<p class="text-gray-600 dark:text-gray-400 mb-4"><%- __('services.web.description') %></p>
|
||
<div class="flex items-center justify-between">
|
||
<span class="text-sm font-medium text-blue-600 dark:text-blue-400 bg-blue-100 dark:bg-blue-900 px-3 py-1 rounded-full">
|
||
<%- __('navigation.services') %>
|
||
</span>
|
||
<span class="text-lg font-bold text-gray-900 dark:text-white">₩500,000</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<!-- Mobile Development -->
|
||
<div class="service-card group cursor-pointer transition-all duration-300 hover:scale-105" data-service="mobile" data-price="800000">
|
||
<div class="bg-gradient-to-br from-green-50 to-green-100 dark:from-green-900 dark:to-green-800 rounded-2xl p-8 border-2 border-transparent group-hover:border-green-500 transition-all duration-300">
|
||
<div class="flex items-start justify-between mb-6">
|
||
<div class="w-14 h-14 bg-green-500 rounded-xl flex items-center justify-center shadow-lg">
|
||
<svg class="w-8 h-8 text-white" fill="none" stroke="currentColor" viewBox="0 0 24 24">
|
||
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M12 18h.01M8 21h8a2 2 0 002-2V5a2 2 0 00-2-2H8a2 2 0 00-2 2v14a2 2 0 002 2z"></path>
|
||
</svg>
|
||
</div>
|
||
<div class="w-6 h-6 rounded-full border-2 border-gray-300 group-hover:border-green-500 transition-colors duration-300">
|
||
<div class="w-full h-full rounded-full bg-green-500 scale-0 group-hover:scale-100 transition-transform duration-300 service-indicator"></div>
|
||
</div>
|
||
</div>
|
||
<h3 class="text-lg font-bold mb-3 text-gray-900 dark:text-white"><%- __('services.mobile.title') %></h3>
|
||
<p class="text-gray-600 dark:text-gray-400 mb-4"><%- __('services.mobile.description') %></p>
|
||
<div class="flex items-center justify-between">
|
||
<span class="text-sm font-medium text-green-600 dark:text-green-400 bg-green-100 dark:bg-green-900 px-3 py-1 rounded-full">
|
||
<%- __('navigation.services') %>
|
||
</span>
|
||
<span class="text-lg font-bold text-gray-900 dark:text-white">₩800,000</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<!-- UI/UX Design -->
|
||
<div class="service-card group cursor-pointer transition-all duration-300 hover:scale-105" data-service="design" data-price="300000">
|
||
<div class="bg-gradient-to-br from-purple-50 to-purple-100 dark:from-purple-900 dark:to-purple-800 rounded-2xl p-8 border-2 border-transparent group-hover:border-purple-500 transition-all duration-300">
|
||
<div class="flex items-start justify-between mb-6">
|
||
<div class="w-14 h-14 bg-purple-500 rounded-xl flex items-center justify-center shadow-lg">
|
||
<svg class="w-8 h-8 text-white" fill="none" stroke="currentColor" viewBox="0 0 24 24">
|
||
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M7 21a4 4 0 01-4-4V5a2 2 0 012-2h4a2 2 0 012 2v12a4 4 0 01-4 4zM21 5a2 2 0 00-2-2h-4a2 2 0 00-2 2v12a4 4 0 004 4h4a2 2 0 002-2V5z"></path>
|
||
</svg>
|
||
</div>
|
||
<div class="w-6 h-6 rounded-full border-2 border-gray-300 group-hover:border-purple-500 transition-colors duration-300">
|
||
<div class="w-full h-full rounded-full bg-purple-500 scale-0 group-hover:scale-100 transition-transform duration-300 service-indicator"></div>
|
||
</div>
|
||
</div>
|
||
<h3 class="text-lg font-bold mb-3 text-gray-900 dark:text-white"><%- __('services.design.title') %></h3>
|
||
<p class="text-gray-600 dark:text-gray-400 mb-4"><%- __('services.design.description') %></p>
|
||
<div class="flex items-center justify-between">
|
||
<span class="text-sm font-medium text-purple-600 dark:text-purple-400 bg-purple-100 dark:bg-purple-900 px-3 py-1 rounded-full">
|
||
<%- __('navigation.services') %>
|
||
</span>
|
||
<span class="text-lg font-bold text-gray-900 dark:text-white">₩300,000</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<!-- Digital Marketing -->
|
||
<div class="service-card group cursor-pointer transition-all duration-300 hover:scale-105" data-service="marketing" data-price="200000">
|
||
<div class="bg-gradient-to-br from-yellow-50 to-yellow-100 dark:from-yellow-900 dark:to-yellow-800 rounded-2xl p-8 border-2 border-transparent group-hover:border-yellow-500 transition-all duration-300">
|
||
<div class="flex items-start justify-between mb-6">
|
||
<div class="w-14 h-14 bg-yellow-500 rounded-xl flex items-center justify-center shadow-lg">
|
||
<svg class="w-8 h-8 text-white" fill="none" stroke="currentColor" viewBox="0 0 24 24">
|
||
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M13 7h8m0 0v8m0-8l-8 8-4-4-6 6"></path>
|
||
</svg>
|
||
</div>
|
||
<div class="w-6 h-6 rounded-full border-2 border-gray-300 group-hover:border-yellow-500 transition-colors duration-300">
|
||
<div class="w-full h-full rounded-full bg-yellow-500 scale-0 group-hover:scale-100 transition-transform duration-300 service-indicator"></div>
|
||
</div>
|
||
</div>
|
||
<h3 class="text-lg font-bold mb-3 text-gray-900 dark:text-white"><%- __('services.marketing.title') %></h3>
|
||
<p class="text-gray-600 dark:text-gray-400 mb-4"><%- __('services.marketing.description') %></p>
|
||
<div class="flex items-center justify-between">
|
||
<span class="text-sm font-medium text-yellow-600 dark:text-yellow-400 bg-yellow-100 dark:bg-yellow-900 px-3 py-1 rounded-full">
|
||
<%- __('navigation.services') %>
|
||
</span>
|
||
<span class="text-lg font-bold text-gray-900 dark:text-white">₩200,000</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<!-- Step 2: Project Details -->
|
||
<div id="step-2" class="step-content hidden p-8 md:p-12">
|
||
<div class="text-center mb-10">
|
||
<div class="w-16 h-16 bg-purple-100 dark:bg-purple-900 rounded-full flex items-center justify-center mx-auto mb-4">
|
||
<svg class="w-8 h-8 text-purple-600 dark:text-purple-400" fill="none" stroke="currentColor" viewBox="0 0 24 24">
|
||
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M12 6V4m0 2a2 2 0 100 4m0-4a2 2 0 110 4m-6 8a2 2 0 100-4m0 4a2 2 0 100 4m0-4v2m0-6V4m6 6v10m6-2a2 2 0 100-4m0 4a2 2 0 100 4m0-4v2m0-6V4"></path>
|
||
</svg>
|
||
</div>
|
||
<h2 class="text-2xl font-bold mb-3"><%- __('calculator.step2.title') %></h2>
|
||
<p class="text-lg text-gray-600 dark:text-gray-400"><%- __('calculator.step2.subtitle') %></p>
|
||
</div>
|
||
|
||
<!-- Complexity Section -->
|
||
<div class="mb-12">
|
||
<h3 class="text-xl font-bold mb-6 text-center text-gray-900 dark:text-white">
|
||
<%- __('calculator.complexity.title') %>
|
||
</h3>
|
||
<div class="grid grid-cols-1 md:grid-cols-3 gap-6">
|
||
<div class="complexity-card group cursor-pointer" data-complexity="simple" data-multiplier="1">
|
||
<div class="bg-gradient-to-br from-green-50 to-green-100 dark:from-green-900 dark:to-green-800 rounded-2xl p-6 border-2 border-transparent group-hover:border-green-500 transition-all duration-300 h-full">
|
||
<div class="flex flex-col items-center text-center h-full">
|
||
<div class="w-12 h-12 bg-green-500 rounded-full flex items-center justify-center mb-4 shadow-lg">
|
||
<svg class="w-6 h-6 text-white" fill="none" stroke="currentColor" viewBox="0 0 24 24">
|
||
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 12l2 2 4-4m6 2a9 9 0 11-18 0 9 9 0 0118 0z"></path>
|
||
</svg>
|
||
</div>
|
||
<h4 class="text-lg font-bold mb-2 text-gray-900 dark:text-white"><%- __('calculator.complexity.simple') %></h4>
|
||
<p class="text-gray-600 dark:text-gray-400 text-sm mb-4 flex-grow"><%- __('calculator.complexity.simple_desc') %></p>
|
||
<div class="flex items-center justify-between w-full">
|
||
<span class="text-xs font-medium text-green-600 dark:text-green-400 bg-green-100 dark:bg-green-900 px-2 py-1 rounded-full">
|
||
Стандарт
|
||
</span>
|
||
<span class="text-sm font-bold text-gray-900 dark:text-white">×1.0</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="complexity-card group cursor-pointer" data-complexity="medium" data-multiplier="1.5">
|
||
<div class="bg-gradient-to-br from-yellow-50 to-yellow-100 dark:from-yellow-900 dark:to-yellow-800 rounded-2xl p-6 border-2 border-transparent group-hover:border-yellow-500 transition-all duration-300 h-full">
|
||
<div class="flex flex-col items-center text-center h-full">
|
||
<div class="w-12 h-12 bg-yellow-500 rounded-full flex items-center justify-center mb-4 shadow-lg">
|
||
<svg class="w-6 h-6 text-white" fill="none" stroke="currentColor" viewBox="0 0 24 24">
|
||
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M13 10V3L4 14h7v7l9-11h-7z"></path>
|
||
</svg>
|
||
</div>
|
||
<h4 class="text-lg font-bold mb-2 text-gray-900 dark:text-white"><%- __('calculator.complexity.medium') %></h4>
|
||
<p class="text-gray-600 dark:text-gray-400 text-sm mb-4 flex-grow"><%- __('calculator.complexity.medium_desc') %></p>
|
||
<div class="flex items-center justify-between w-full">
|
||
<span class="text-xs font-medium text-yellow-600 dark:text-yellow-400 bg-yellow-100 dark:bg-yellow-900 px-2 py-1 rounded-full">
|
||
+50%
|
||
</span>
|
||
<span class="text-sm font-bold text-gray-900 dark:text-white">×1.5</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="complexity-card group cursor-pointer" data-complexity="complex" data-multiplier="2.5">
|
||
<div class="bg-gradient-to-br from-red-50 to-red-100 dark:from-red-900 dark:to-red-800 rounded-2xl p-6 border-2 border-transparent group-hover:border-red-500 transition-all duration-300 h-full">
|
||
<div class="flex flex-col items-center text-center h-full">
|
||
<div class="w-12 h-12 bg-red-500 rounded-full flex items-center justify-center mb-4 shadow-lg">
|
||
<svg class="w-6 h-6 text-white" fill="none" stroke="currentColor" viewBox="0 0 24 24">
|
||
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9.663 17h4.673M12 3v1m6.364 1.636l-.707.707M21 12h-1M4 12H3m3.343-5.657l-.707-.707m2.828 9.9a5 5 0 117.072 0l-.548.547A3.374 3.374 0 0014 18.469V19a2 2 0 11-4 0v-.531c0-.895-.356-1.754-.988-2.386l-.548-.547z"></path>
|
||
</svg>
|
||
</div>
|
||
<h4 class="text-lg font-bold mb-2 text-gray-900 dark:text-white"><%- __('calculator.complexity.complex') %></h4>
|
||
<p class="text-gray-600 dark:text-gray-400 text-sm mb-4 flex-grow"><%- __('calculator.complexity.complex_desc') %></p>
|
||
<div class="flex items-center justify-between w-full">
|
||
<span class="text-xs font-medium text-red-600 dark:text-red-400 bg-red-100 dark:bg-red-900 px-2 py-1 rounded-full">
|
||
+150%
|
||
</span>
|
||
<span class="text-sm font-bold text-gray-900 dark:text-white">×2.5</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<!-- Timeline Section -->
|
||
<div>
|
||
<h3 class="text-xl font-bold mb-6 text-center text-gray-900 dark:text-white">
|
||
<%- __('calculator.timeline.title') %>
|
||
</h3>
|
||
<div class="grid grid-cols-1 md:grid-cols-3 gap-6">
|
||
<div class="timeline-card group cursor-pointer" data-timeline="extended" data-multiplier="0.8">
|
||
<div class="bg-gradient-to-br from-emerald-50 to-emerald-100 dark:from-emerald-900 dark:to-emerald-800 rounded-2xl p-6 border-2 border-transparent group-hover:border-emerald-500 transition-all duration-300 h-full">
|
||
<div class="flex flex-col items-center text-center h-full">
|
||
<div class="w-12 h-12 bg-emerald-500 rounded-full flex items-center justify-center mb-4 shadow-lg">
|
||
<svg class="w-6 h-6 text-white" fill="none" stroke="currentColor" viewBox="0 0 24 24">
|
||
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M12 8v4l3 3m6-3a9 9 0 11-18 0 9 9 0 0118 0z"></path>
|
||
</svg>
|
||
</div>
|
||
<h4 class="text-lg font-bold mb-2 text-gray-900 dark:text-white"><%- __('calculator.timeline.extended') %></h4>
|
||
<p class="text-gray-600 dark:text-gray-400 text-sm mb-4 flex-grow"><%- __('calculator.timeline.extended_desc') %></p>
|
||
<div class="flex items-center justify-between w-full">
|
||
<span class="text-xs font-medium text-emerald-600 dark:text-emerald-400 bg-emerald-100 dark:bg-emerald-900 px-2 py-1 rounded-full">
|
||
Скидка 20%
|
||
</span>
|
||
<span class="text-sm font-bold text-gray-900 dark:text-white">×0.8</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="timeline-card group cursor-pointer" data-timeline="standard" data-multiplier="1">
|
||
<div class="bg-gradient-to-br from-blue-50 to-blue-100 dark:from-blue-900 dark:to-blue-800 rounded-2xl p-6 border-2 border-transparent group-hover:border-blue-500 transition-all duration-300 h-full">
|
||
<div class="flex flex-col items-center text-center h-full">
|
||
<div class="w-12 h-12 bg-blue-500 rounded-full flex items-center justify-center mb-4 shadow-lg">
|
||
<svg class="w-6 h-6 text-white" fill="none" stroke="currentColor" viewBox="0 0 24 24">
|
||
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 7V3m8 4V3m-9 8h10M5 21h14a2 2 0 002-2V7a2 2 0 00-2-2H5a2 2 0 00-2 2v12a2 2 0 002 2z"></path>
|
||
</svg>
|
||
</div>
|
||
<h4 class="text-lg font-bold mb-2 text-gray-900 dark:text-white"><%- __('calculator.timeline.standard') %></h4>
|
||
<p class="text-gray-600 dark:text-gray-400 text-sm mb-4 flex-grow"><%- __('calculator.timeline.standard_desc') %></p>
|
||
<div class="flex items-center justify-between w-full">
|
||
<span class="text-xs font-medium text-blue-600 dark:text-blue-400 bg-blue-100 dark:bg-blue-900 px-2 py-1 rounded-full">
|
||
Рекомендуется
|
||
</span>
|
||
<span class="text-sm font-bold text-gray-900 dark:text-white">×1.0</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="timeline-card group cursor-pointer" data-timeline="rush" data-multiplier="1.5">
|
||
<div class="bg-gradient-to-br from-orange-50 to-orange-100 dark:from-orange-900 dark:to-orange-800 rounded-2xl p-6 border-2 border-transparent group-hover:border-orange-500 transition-all duration-300 h-full">
|
||
<div class="flex flex-col items-center text-center h-full">
|
||
<div class="w-12 h-12 bg-orange-500 rounded-full flex items-center justify-center mb-4 shadow-lg">
|
||
<svg class="w-6 h-6 text-white" fill="none" stroke="currentColor" viewBox="0 0 24 24">
|
||
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M13 10V3L4 14h7v7l9-11h-7z"></path>
|
||
</svg>
|
||
</div>
|
||
<h4 class="text-lg font-bold mb-2 text-gray-900 dark:text-white"><%- __('calculator.timeline.rush') %></h4>
|
||
<p class="text-gray-600 dark:text-gray-400 text-sm mb-4 flex-grow"><%- __('calculator.timeline.rush_desc') %></p>
|
||
<div class="flex items-center justify-between w-full">
|
||
<span class="text-xs font-medium text-orange-600 dark:text-orange-400 bg-orange-100 dark:bg-orange-900 px-2 py-1 rounded-full">
|
||
Доплата 50%
|
||
</span>
|
||
<span class="text-sm font-bold text-gray-900 dark:text-white">×1.5</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<!-- Step 3: Results -->
|
||
<div id="step-3" class="step-content hidden p-8 md:p-12">
|
||
<div class="text-center mb-10">
|
||
<div class="w-16 h-16 bg-green-100 dark:bg-green-900 rounded-full flex items-center justify-center mx-auto mb-4">
|
||
<svg class="w-8 h-8 text-green-600 dark:text-green-400" fill="none" stroke="currentColor" viewBox="0 0 24 24">
|
||
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 12l2 2 4-4m6 2a9 9 0 11-18 0 9 9 0 0118 0z"></path>
|
||
</svg>
|
||
</div>
|
||
<h2 class="text-2xl font-bold mb-3"><%- __('calculator.result.title') %></h2>
|
||
<p class="text-lg text-gray-600 dark:text-gray-400"><%- __('calculator.result.subtitle') %></p>
|
||
</div>
|
||
|
||
<!-- Price Breakdown Card -->
|
||
<div class="max-w-2xl mx-auto mb-8">
|
||
<div class="bg-gradient-to-br from-blue-50 to-purple-50 dark:from-blue-900 dark:to-purple-900 rounded-3xl p-8 border border-blue-200 dark:border-blue-700 shadow-xl">
|
||
<div class="flex items-center justify-center mb-6">
|
||
<div class="w-12 h-12 bg-blue-500 rounded-full flex items-center justify-center mr-4">
|
||
<svg class="w-6 h-6 text-white" fill="none" stroke="currentColor" viewBox="0 0 24 24">
|
||
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 7h6m0 10v-3m-3 3h.01M9 17h.01M9 14h.01M12 14h.01M15 11h.01M12 11h.01M9 11h.01M7 21h10a2 2 0 002-2V5a2 2 0 00-2-2H7a2 2 0 00-2 2v14a2 2 0 002 2z"></path>
|
||
</svg>
|
||
</div>
|
||
<h3 class="text-xl font-bold text-gray-900 dark:text-white">Расчет стоимости</h3>
|
||
</div>
|
||
|
||
<div class="space-y-4" id="priceBreakdown">
|
||
<!-- Price breakdown items will be inserted here by JavaScript -->
|
||
</div>
|
||
|
||
<!-- Promo Code Section -->
|
||
<div class="mt-6 pt-6 border-t border-gray-200 dark:border-gray-700">
|
||
<div class="flex gap-3">
|
||
<input type="text" id="promoCode" placeholder="Введите промокод"
|
||
class="flex-1 px-4 py-3 rounded-xl border border-gray-300 dark:border-gray-600 bg-white dark:bg-gray-800 text-gray-900 dark:text-white focus:ring-2 focus:ring-blue-500 focus:border-transparent transition-all duration-300">
|
||
<button type="button" id="applyPromo"
|
||
class="px-6 py-3 bg-blue-500 hover:bg-blue-600 text-white rounded-xl font-medium transition-all duration-300 hover:scale-105 focus:ring-2 focus:ring-blue-500 focus:ring-offset-2">
|
||
Применить
|
||
</button>
|
||
</div>
|
||
<div id="promoStatus" class="mt-2 text-sm"></div>
|
||
</div>
|
||
|
||
<!-- Total Price -->
|
||
<div class="mt-8 pt-6 border-t-2 border-gray-300 dark:border-gray-600">
|
||
<div class="flex items-center justify-between">
|
||
<span class="text-xl font-bold text-gray-900 dark:text-white">Итого</span>
|
||
<span id="finalPrice" class="text-3xl font-bold bg-gradient-to-r from-blue-600 to-purple-600 bg-clip-text text-transparent">₩0</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<!-- Action Buttons -->
|
||
<div class="flex flex-col sm:flex-row gap-4 max-w-lg mx-auto">
|
||
<button type="button" id="getQuoteBtn"
|
||
class="flex-1 bg-gradient-to-r from-blue-600 to-purple-600 hover:from-blue-700 hover:to-purple-700 text-white font-bold py-4 px-8 rounded-xl transition-all duration-300 hover:scale-105 focus:ring-2 focus:ring-blue-500 focus:ring-offset-2 shadow-lg flex items-center justify-center">
|
||
<svg class="w-5 h-5 mr-2" fill="none" stroke="currentColor" viewBox="0 0 24 24">
|
||
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M12 19l9 2-9-18-9 18 9-2zm0 0v-8"></path>
|
||
</svg>
|
||
<%- __('calculator.result.get_quote') %>
|
||
</button>
|
||
<button type="button" id="recalculateBtn"
|
||
class="flex-1 bg-gray-200 dark:bg-gray-700 hover:bg-gray-300 dark:hover:bg-gray-600 text-gray-900 dark:text-white font-bold py-4 px-8 rounded-xl transition-all duration-300 hover:scale-105 focus:ring-2 focus:ring-gray-500 focus:ring-offset-2">
|
||
<%- __('calculator.result.recalculate') %>
|
||
</button>
|
||
</div>
|
||
</div>
|
||
|
||
<!-- Navigation Buttons -->
|
||
<div id="navigation" class="flex justify-between items-center p-8 border-t border-gray-200 dark:border-gray-700">
|
||
<button type="button" id="prevBtn"
|
||
class="hidden bg-gray-200 dark:bg-gray-700 hover:bg-gray-300 dark:hover:bg-gray-600 text-gray-900 dark:text-white font-semibold py-3 px-6 rounded-xl transition-all duration-300 hover:scale-105 focus:ring-2 focus:ring-gray-500 focus:ring-offset-2 flex items-center">
|
||
<svg class="w-5 h-5 mr-2" fill="none" stroke="currentColor" viewBox="0 0 24 24">
|
||
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M15 19l-7-7 7-7"></path>
|
||
</svg>
|
||
<%- __('calculator.prev_step') %>
|
||
</button>
|
||
|
||
<div class="flex-1"></div>
|
||
|
||
<button type="button" id="nextBtn"
|
||
class="bg-gradient-to-r from-blue-600 to-purple-600 hover:from-blue-700 hover:to-purple-700 text-white font-semibold py-3 px-6 rounded-xl transition-all duration-300 hover:scale-105 focus:ring-2 focus:ring-blue-500 focus:ring-offset-2 disabled:opacity-50 disabled:cursor-not-allowed disabled:hover:scale-100 flex items-center" disabled>
|
||
<span id="nextBtnText"><%- __('calculator.next_step') %></span>
|
||
<svg class="w-5 h-5 ml-2" fill="none" stroke="currentColor" viewBox="0 0 24 24">
|
||
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 5l7 7-7 7"></path>
|
||
</svg>
|
||
</button>
|
||
</div>
|
||
</div>
|
||
|
||
<!-- Dynamic Price Island - Under Calculator with 10px gap -->
|
||
<div class="max-w-4xl mx-auto px-4 mt-4 mb-6">
|
||
<div id="priceDisplay" class="bg-gray-500/30 dark:bg-gray-700/40 rounded-2xl px-8 py-4 backdrop-blur-md border border-gray-300/20 dark:border-gray-600/30 shadow-2xl transition-all duration-300">
|
||
<div class="flex items-center justify-between text-gray-800 dark:text-white">
|
||
<div class="flex items-center gap-3">
|
||
<div class="w-3 h-3 bg-green-500 rounded-full animate-pulse"></div>
|
||
<p class="text-sm font-medium text-gray-700 dark:text-gray-200"><%- __('calculator.result.estimated_price') %></p>
|
||
</div>
|
||
<p id="currentPrice" class="text-xl font-bold text-gray-900 dark:text-white" aria-live="polite">
|
||
₩0
|
||
</p>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<!-- Mobile Price Display -->
|
||
<div id="mobilePriceDisplay" class="lg:hidden fixed bottom-4 left-4 right-4 z-50">
|
||
<div class="bg-gray-500/30 dark:bg-gray-700/40 rounded-2xl px-6 py-3 backdrop-blur-md border border-gray-300/20 dark:border-gray-600/30 shadow-2xl">
|
||
<div class="flex items-center justify-between text-gray-800 dark:text-white">
|
||
<div class="flex items-center gap-2">
|
||
<div class="w-2 h-2 bg-green-500 rounded-full animate-pulse"></div>
|
||
<p class="text-sm font-medium text-gray-700 dark:text-gray-200"><%- __('calculator.result.estimated_price') %></p>
|
||
</div>
|
||
<p id="mobilePriceValue" class="text-lg font-bold text-gray-900 dark:text-white">
|
||
₩0
|
||
</p>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<!-- Calculator translations for JavaScript -->
|
||
<script>
|
||
window.calculatorTranslations = {
|
||
'calculator.result.estimated_price': '<%- __('calculator.result.estimated_price') %>',
|
||
'calculator.next_step': '<%- __('calculator.next_step') %>',
|
||
'calculator.calculate': '<%- __('calculator.calculate') %>',
|
||
'services.web.title': '<%- __('services.web.title') %>',
|
||
'services.mobile.title': '<%- __('services.mobile.title') %>',
|
||
'services.design.title': '<%- __('services.design.title') %>',
|
||
'services.marketing.title': '<%- __('services.marketing.title') %>'
|
||
};
|
||
</script>
|
||
|
||
<!-- Modern Calculator JavaScript -->
|
||
<script src="/js/calculator-modern.js"></script>
|
||
|
||
<!-- Enhanced Sticky Price Display -->
|
||
<script src="/js/sticky-price.js"></script>
|
||
</body>
|
||
</html> |