Files
sst_site/.history/views/calculator-modern_20251026102723.ejs
2025-10-26 14:44:10 +09:00

530 lines
42 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!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 w-full lg:flex-1">
<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">
<%- __('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>
<!-- Sticky Price Display - Fixed at bottom with backdrop blur -->
<div id="stickyPriceContainer" class="fixed bottom-0 left-0 right-0 z-50 backdrop-blur-md bg-white/70 dark:bg-gray-900/70 border-t border-gray-200/50 dark:border-gray-700/50 shadow-lg" style="display: none;">
<!-- Match exact container structure as main calculator -->
<div class="container mx-auto px-4 py-3 max-w-4xl">
<div id="priceDisplay" class="bg-gray-500/20 dark:bg-gray-700/30 rounded-xl px-6 py-3 backdrop-blur-sm border border-gray-300/30 dark:border-gray-600/30 shadow-xl 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>
</div>
<!-- Mobile Price Display -->
</div>
</div>
</div>
<!-- Sticky Price Display - Fixed at bottom with backdrop blur -->
</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>
</body>
</html>