diff --git a/programmer/templates/programmer/base.html b/programmer/templates/programmer/base.html index b473f01..413a25a 100644 --- a/programmer/templates/programmer/base.html +++ b/programmer/templates/programmer/base.html @@ -52,7 +52,7 @@ - + diff --git a/static/programmer/css/styles_w.css b/static/programmer/css/styles_w.css index 80db9b3..baa7f16 100644 --- a/static/programmer/css/styles_w.css +++ b/static/programmer/css/styles_w.css @@ -1,4 +1,4 @@ -/* ===== CSS RESET & VARIABLES (MOBILE-OPTIMIZED) ===== */ +/* ===== CSS RESET & VARIABLES ===== */ * { margin: 0; padding: 0; @@ -6,163 +6,349 @@ } :root { - /* Основные цвета (упрощены для мобильности) */ - --primary: #FF6B00; + /* 1C Brand Colors - Modern Gradient Palette */ + --primary: #FF6B00; /* 1C Orange */ --primary-dark: #E55A00; - --secondary: #0055A5; + --primary-light: #FF8A3D; + --secondary: #0055A5; /* 1C Blue */ + --secondary-dark: #004488; + --secondary-light: #3377CC; --accent: #00A8FF; + + /* Extended 1C Color Palette */ + --gradient-primary: linear-gradient(135deg, #FF6B00 0%, #FF8A3D 100%); + --gradient-secondary: linear-gradient(135deg, #0055A5 0%, #3377CC 100%); + --gradient-hero: linear-gradient(135deg, #FF6B00 0%, #0055A5 100%); + --text-primary: #1A1F36; --text-secondary: #4A5568; + --text-light: #718096; + --bg-primary: #FFFFFF; --bg-secondary: #F7FAFC; + --bg-tertiary: #EDF2F7; - /* Тени — облегчённые */ - --shadow-sm: 0 1px 2px rgba(0, 0, 0, 0.1); - --shadow-md: 0 2px 4px rgba(0, 0, 0, 0.1); + --border-light: #E2E8F0; + --border-medium: #CBD5E0; - /* Радиусы — сохранены */ + /* Modern Shadows */ + --shadow-sm: 0 1px 3px 0 rgba(0, 0, 0, 0.1), 0 1px 2px 0 rgba(0, 0, 0, 0.06); + --shadow-md: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06); + --shadow-lg: 0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05); + --shadow-xl: 0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 10px 10px -5px rgba(0, 0, 0, 0.04); + + /* Border radius */ --radius-sm: 8px; --radius-md: 12px; --radius-lg: 16px; + --radius-xl: 20px; - /* Переходы — только критические */ - --transition: transform 0.2s ease, opacity 0.2s ease; + /* Transitions */ + --transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1); + --transition-slow: all 0.5s cubic-bezier(0.4, 0, 0.2, 1); } /* ===== BASE STYLES ===== */ html { scroll-behavior: smooth; - font-size: 100%; /* Адаптация под мобильные шрифты */ } body { - font-family: 'Inter', sans-serif; - line-height: 1.5; + font-family: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif; + line-height: 1.6; color: var(--text-primary); - background: var(--bg-primary); - -webkit-text-size-adjust: 100%; /* Запрет масштабирования текста */ + background: linear-gradient(135deg, #F7FAFC 0%, #EDF2F7 100%); + font-size: 16px; + overflow-x: hidden; } .container { - width: 100%; - max-width: 580px; /* Уже для мобильников */ + max-width: 1200px; margin: 0 auto; - padding: 0 16px; /* Меньше отступы */ + padding: 0 20px; } -/* ===== HEADER (МОБИЛЬНЫЙ) ===== */ +/* ===== ENHANCED HEADER ===== */ .header { - background: var(--bg-primary); + background: rgba(255, 255, 255, 0.95); border-bottom: 1px solid var(--border-light); box-shadow: var(--shadow-sm); position: sticky; top: 0; z-index: 1000; + backdrop-filter: blur(20px); + -webkit-backdrop-filter: blur(20px); } .nav { display: flex; align-items: center; justify-content: space-between; - padding: 12px 0; + padding: 1rem 0; + gap: 2rem; } .logo { - font-size: 1.25rem; + display: flex; + align-items: center; + text-decoration: none; + font-weight: 700; + font-size: 1.375rem; + color: var(--text-primary); + transition: var(--transition); + background: var(--gradient-primary); + -webkit-background-clip: text; + -webkit-text-fill-color: transparent; + background-clip: text; +} + +.logo:hover { + transform: translateY(-1px); +} + +.logo-img { + width: 40px; + height: 40px; + margin-right: 12px; + border-radius: var(--radius-md); + background: var(--gradient-primary); + padding: 4px; +} + +.nav-menu { + display: flex; + list-style: none; + gap: 2.5rem; + margin: 0; + flex-wrap: wrap; +} + +.nav-link { + text-decoration: none; + color: var(--text-secondary); + font-weight: 600; + padding: 0.75rem 0; + position: relative; + transition: var(--transition); + font-size: 1rem; +} + +.nav-link:hover { + color: var(--primary); +} + +.nav-link.active { color: var(--primary); font-weight: 700; } -.nav-menu { - display: none; /* Скрыто по умолчанию */ +.nav-link.active::after { + content: ''; + position: absolute; + bottom: -2px; + left: 0; + right: 0; + height: 3px; + background: var(--gradient-primary); + border-radius: 2px; } -.mobile-menu-btn { - display: block; - width: 40px; - height: 40px; - background: var(--primary); +.telegram-btn { + display: flex; + align-items: center; + gap: 10px; + background: var(--gradient-primary); + color: white; + text-decoration: none; + padding: 0.6rem 1.2rem; + border-radius: var(--radius-lg); + font-weight: 600; + transition: var(--transition); + white-space: nowrap; + box-shadow: var(--shadow-md); border: none; - border-radius: var(--radius-md); cursor: pointer; + font-size: 0.95rem; } -/* ===== HERO (МОБИЛЬНЫЙ) ===== */ +.telegram-btn:hover { + transform: translateY(-2px); + box-shadow: var(--shadow-lg); + background: var(--gradient-primary); +} + +/* ===== ENHANCED HERO SECTION ===== */ .hero-section { - padding: 2rem 0; text-align: center; + padding: 4rem 0 3rem; + background: var(--gradient-hero); + -webkit-background-clip: text; + -webkit-text-fill-color: transparent; + background-clip: text; + margin-bottom: 3rem; } .hero-title { - font-size: 2.25rem; /* Меньше, чем на десктопе */ + font-size: 3.5rem; font-weight: 800; - margin-bottom: 1rem; - color: var(--primary); + margin-bottom: 1.5rem; + line-height: 1.1; + background: var(--gradient-hero); + -webkit-background-clip: text; + -webkit-text-fill-color: transparent; + background-clip: text; } .hero-subtitle { - font-size: 1.125rem; + font-size: 1.375rem; color: var(--text-secondary); - margin: 0 auto 1.5rem; - max-width: 90%; -} - -/* ===== CARDS (МОБИЛЬНЫЙ) ===== */ -.modern-card { - border-radius: var(--radius-lg); - padding: 1.5rem; - box-shadow: var(--shadow-sm); - margin-bottom: 1.5rem; -} - -.card-title { - font-size: 1.25rem; - color: var(--primary); - margin-bottom: 0.75rem; -} - -.card-content { - font-size: 1rem; + font-weight: 500; + max-width: 600px; + margin: 0 auto; line-height: 1.6; } -/* ===== GRID (МОБИЛЬНЫЙ) ===== */ +/* ===== MODERN CARD STYLES ===== */ +.modern-card { + background: var(--bg-primary); + border-radius: var(--radius-xl); + padding: 2rem; + box-shadow: var(--shadow-lg); + border: 1px solid var(--border-light); + transition: var(--transition-slow); + margin-bottom: 2rem; + position: relative; + overflow: hidden; +} + +.modern-card::before { + content: ''; + position: absolute; + top: 0; + left: 0; + right: 0; + height: 4px; + background: var(--gradient-primary); +} + +.modern-card:hover { + transform: translateY(-8px); + box-shadow: var(--shadow-xl); +} + +.modern-card.secondary::before { + background: var(--gradient-secondary); +} + +.card-header { + display: flex; + align-items: flex-start; + justify-content: space-between; + margin-bottom: 1.5rem; + gap: 1rem; +} + +.card-title { + font-size: 1.5rem; + font-weight: 700; + color: var(--text-primary); + margin-bottom: 0.75rem; + background: var(--gradient-primary); + -webkit-background-clip: text; + -webkit-text-fill-color: transparent; + background-clip: text; +} + +.card-subtitle { + color: var(--text-secondary); + font-size: 1rem; + margin-bottom: 1.5rem; + line-height: 1.6; +} + +.card-content { + color: var(--text-primary); + line-height: 1.7; + font-size: 1.05rem; +} + +.card-content p { + margin-bottom: 1rem; +} + +.card-actions { + margin-top: 2rem; + display: flex; + gap: 1rem; + flex-wrap: wrap; +} + +/* ===== GRID LAYOUTS ===== */ .grid { display: grid; - gap: 1.5rem; + gap: 2rem; } -.grid-2, .grid-3 { - grid-template-columns: 1fr; /* Одна колонка на мобиле */ +.grid-2 { + grid-template-columns: repeat(auto-fit, minmax(400px, 1fr)); } -/* ===== BUTTONS (МОБИЛЬНЫЙ) ===== */ +.grid-3 { + grid-template-columns: repeat(auto-fit, minmax(300px, 1fr)); +} + +/* ===== ENHANCED BUTTONS ===== */ .btn { display: inline-flex; align-items: center; - justify-content: center; - gap: 0.5rem; - padding: 14px 24px; /* Минимум 48px высота */ - border-radius: var(--radius-md); + gap: 0.75rem; + padding: 1rem 2rem; + border-radius: var(--radius-lg); text-decoration: none; font-weight: 600; border: none; cursor: pointer; transition: var(--transition); font-size: 1rem; + position: relative; + overflow: hidden; +} + +.btn::before { + content: ''; + position: absolute; + top: 0; + left: -100%; width: 100%; - max-width: 280px; - margin: 0 auto; + height: 100%; + background: linear-gradient(90deg, transparent, rgba(255,255,255,0.3), transparent); + transition: left 0.5s; +} + +.btn:hover::before { + left: 100%; } .btn-primary { - background: var(--primary); + background: var(--gradient-primary); color: white; - box-shadow: var(--shadow-sm); + box-shadow: var(--shadow-md); } .btn-primary:hover { - opacity: 0.9; + transform: translateY(-2px); + box-shadow: var(--shadow-lg); +} + +.btn-secondary { + background: var(--gradient-secondary); + color: white; + box-shadow: var(--shadow-md); +} + +.btn-secondary:hover { + transform: translateY(-2px); + box-shadow: var(--shadow-lg); } .btn-outline { @@ -174,55 +360,1047 @@ body { .btn-outline:hover { background: var(--primary); color: white; + transform: translateY(-2px); } -/* ===== FOOTER (МОБИЛЬНЫЙ) ===== */ -.footer { - padding: 2rem 0; - margin-top: 2rem; -} - -.footer-content { - grid-template-columns: 1fr; - gap: 1.5rem; +/* ===== ENHANCED ABOUT PAGE ===== */ +.about-header { text-align: center; + margin-bottom: 3rem; + padding: 2rem 0; } -.footer-info h3 { +.about-header h2 { + font-size: 2.5rem; + font-weight: 800; + margin-bottom: 0.5rem; + background: var(--gradient-hero); + -webkit-background-clip: text; + -webkit-text-fill-color: transparent; + background-clip: text; +} + +.about-header .subtitle { + font-size: 1.25rem; + color: var(--text-secondary); + font-weight: 500; +} + +.about-section { + margin-bottom: 3rem; + padding: 2.5rem; + background: var(--bg-primary); + border-radius: var(--radius-xl); + box-shadow: var(--shadow-lg); + border-left: 4px solid var(--primary); +} + +.about-section h3 { + font-size: 1.5rem; + font-weight: 700; + margin-bottom: 1.5rem; + color: var(--text-primary); + display: flex; + align-items: center; + gap: 0.75rem; +} + +.skills-grid { + display: grid; + grid-template-columns: repeat(auto-fit, minmax(300px, 1fr)); + gap: 2rem; + margin-top: 1.5rem; +} + +.skill-category { + background: var(--bg-secondary); + padding: 1.5rem; + border-radius: var(--radius-lg); + border: 1px solid var(--border-light); + transition: var(--transition); +} + +.skill-category:hover { + transform: translateY(-4px); + box-shadow: var(--shadow-md); +} + +.skill-category h4 { + color: var(--primary); + font-weight: 600; + margin-bottom: 1rem; font-size: 1.125rem; } -/* ===== ФОРМЫ (МОБИЛЬНЫЙ) ===== */ +/* ===== ENHANCED COMPETENCE STYLES ===== */ +.competence-grid { + display: grid; + gap: 2rem; +} + +.competence-item { + display: flex; + gap: 2rem; + align-items: flex-start; + padding: 2rem; + background: var(--bg-primary); + border-radius: var(--radius-xl); + box-shadow: var(--shadow-lg); + border-left: 4px solid var(--secondary); + transition: var(--transition); +} + +.competence-item:hover { + transform: translateX(8px); + box-shadow: var(--shadow-xl); +} + +.competence-scan-wrapper { + flex-shrink: 0; +} + +.competence-scan-container { + width: 220px; + cursor: pointer; + border-radius: var(--radius-lg); + overflow: hidden; + border: 2px solid var(--border-light); + transition: var(--transition); + position: relative; + box-shadow: var(--shadow-md); +} + +.competence-scan-container:hover { + transform: translateY(-4px) scale(1.02); + box-shadow: var(--shadow-xl); + border-color: var(--primary); +} + +.competence-scan { + width: 100%; + height: auto; + display: block; + transition: var(--transition); +} + +.scan-hint { + position: absolute; + bottom: 0; + left: 0; + right: 0; + background: linear-gradient(transparent, rgba(0,0,0,0.8)); + color: white; + padding: 1rem; + text-align: center; + opacity: 0; + transition: var(--transition); + transform: translateY(10px); +} + +.competence-scan-container:hover .scan-hint { + opacity: 1; + transform: translateY(0); +} + +/* ===== ENHANCED RECALL STYLES ===== */ +.recall-grid { + display: grid; + gap: 2rem; +} + +.recall-header { + display: flex; + justify-content: space-between; + align-items: flex-start; + margin-bottom: 1.5rem; + padding-bottom: 1.5rem; + border-bottom: 2px solid var(--border-light); +} + +.recall-title { + font-size: 1.375rem; + font-weight: 700; + color: var(--text-primary); + margin-bottom: 0.75rem; +} + +.recall-meta { + display: flex; + gap: 1rem; + font-size: 0.875rem; + font-weight: 500; +} + +.recall-date { + background: var(--gradient-primary); + color: white; + padding: 0.5rem 1rem; + border-radius: var(--radius-md); + font-weight: 600; +} + +.recall-client { + background: var(--gradient-secondary); + color: white; + padding: 0.5rem 1rem; + border-radius: var(--radius-md); + font-weight: 600; +} + +/* ===== ENHANCED PAGE HEADERS ===== */ +.page-header { + margin-bottom: 3rem; + padding: 3rem 0; + text-align: center; + background: linear-gradient(135deg, var(--bg-primary) 0%, var(--bg-secondary) 100%); + border-radius: var(--radius-xl); + box-shadow: var(--shadow-md); + border: 1px solid var(--border-light); +} + +.page-title { + font-size: 3rem; + font-weight: 800; + color: var(--text-primary); + margin-bottom: 1rem; + background: var(--gradient-hero); + -webkit-background-clip: text; + -webkit-text-fill-color: transparent; + background-clip: text; +} + +.page-subtitle { + color: var(--text-secondary); + font-size: 1.25rem; + font-weight: 500; + max-width: 600px; + margin: 0 auto; +} + +/* ===== ENHANCED FOOTER ===== */ +.footer { + background: linear-gradient(135deg, var(--text-primary) 0%, #2D3748 100%); + color: white; + padding: 4rem 0 2rem; + margin-top: 6rem; + position: relative; +} + +.footer::before { + content: ''; + position: absolute; + top: 0; + left: 0; + right: 0; + height: 4px; + background: var(--gradient-primary); +} + +.footer-content { + display: grid; + grid-template-columns: 1fr 1fr 1fr; + gap: 3rem; + margin-bottom: 3rem; +} + +.footer-info h3 { + margin-bottom: 1rem; + color: white; + font-size: 1.5rem; + font-weight: 700; +} + +.footer-info p { + opacity: 0.9; + font-size: 1.05rem; +} + +.footer-contacts p { + margin-bottom: 0.75rem; + opacity: 0.9; + display: flex; + align-items: center; + gap: 0.5rem; + font-size: 1.05rem; +} + +.footer-copyright { + grid-column: 1 / -1; + text-align: center; + padding-top: 2rem; + border-top: 1px solid rgba(255, 255, 255, 0.2); + opacity: 0.7; + font-size: 0.95rem; +} + +/* ===== ANIMATIONS ===== */ +@keyframes fadeInUp { + from { + opacity: 0; + transform: translateY(40px); + } + to { + opacity: 1; + transform: translateY(0); + } +} + +@keyframes float { + 0%, 100% { + transform: translateY(0); + } + 50% { + transform: translateY(-10px); + } +} + +@keyframes gradientShift { + 0% { + background-position: 0% 50%; + } + 50% { + background-position: 100% 50%; + } + 100% { + background-position: 0% 50%; + } +} + +.fade-in { + animation: fadeInUp 0.8s ease-out; +} + +.float { + animation: float 3s ease-in-out infinite; +} + +.gradient-animate { + background-size: 200% 200%; + animation: gradientShift 3s ease infinite; +} + +/* ===== RESPONSIVE DESIGN ===== */ +@media (max-width: 1024px) { + .nav-menu { + gap: 1.5rem; + } + + .nav-actions { + gap: 0.75rem; + } +} + +@media (max-width: 768px) { + .nav-menu { + display: none !important; + } + + .mobile-menu-btn { + display: block !important; + } + + .nav-actions .telegram-btn span:not(.telegram-icon), + .nav-actions .telegram-btn .telegram-icon { + display: none; + } + + .nav-actions .telegram-btn { + padding: 0.75rem; + width: 45px; + height: 45px; + display: flex; + align-items: center; + justify-content: center; + background: var(--primary); + color: white; + border-radius: 8px; + text-decoration: none; + } + + .nav-actions .telegram-btn::after { + content: "📱"; + font-size: 1.2rem; + } + + .theme-switcher { + display: none; + } + + .nav { + gap: 1rem; + } + + .logo-text { + font-size: 1.1rem; + } +} + +@media (max-width: 480px) { + .container { + padding: 0 12px; + } + + .nav { + padding: 0.75rem 0; + } + + .logo-img { + width: 32px; + height: 32px; + } + + .logo-text { + font-size: 1rem; + } + + .mobile-menu { + width: 280px; + } + + .nav-actions { + gap: 0.5rem; + } + + .nav-actions .telegram-btn { + width: 40px; + height: 40px; + padding: 0.5rem; + } +} + +@media (min-width: 769px) { + .mobile-menu-btn, + .mobile-menu-overlay, + .mobile-menu { + display: none !important; + } +} + +/* ===== UTILITY CLASSES ===== */ +.text-center { text-align: center; } +.text-left { text-align: left; } +.text-right { text-align: right; } + +.justify-center { justify-content: center; } +.justify-between { justify-content: space-between; } + +.mb-1 { margin-bottom: 0.5rem; } +.mb-2 { margin-bottom: 1rem; } +.mb-3 { margin-bottom: 1.5rem; } +.mb-4 { margin-bottom: 2rem; } + +.mt-1 { margin-top: 0.5rem; } +.mt-2 { margin-top: 1rem; } +.mt-3 { margin-top: 1.5rem; } +.mt-4 { margin-top: 2rem; } + +.hidden { display: none; } + +/* ===== CUSTOM COMPONENTS ===== */ +.content-card { + background: var(--bg-primary); + border-radius: var(--radius-xl); + padding: 2.5rem; + box-shadow: var(--shadow-lg); + border: 1px solid var(--border-light); + margin-bottom: 2rem; + position: relative; + overflow: hidden; +} + +.content-card::before { + content: ''; + position: absolute; + top: 0; + left: 0; + right: 0; + height: 4px; + background: var(--gradient-primary); +} + +.improved-list { + list-style: none; + padding: 0; +} + +.improved-list li { + margin-bottom: 2rem; +} + +/* ===== FORM STYLES ===== */ .form-group { - margin-bottom: 1.25rem; + margin-bottom: 1.5rem; +} + +.form-group label { + display: block; + margin-bottom: 0.5rem; + font-weight: 600; + color: var(--text-primary); } .form-input, .form-textarea { width: 100%; - padding: 12px 16px; - border: 1px solid var(--border-medium); - border-radius: var(--radius-md); + padding: 1rem 1.25rem; + border: 2px solid var(--border-light); + border-radius: var(--radius-lg); font-size: 1rem; transition: var(--transition); + background: var(--bg-primary); + font-family: inherit; } .form-input:focus, .form-textarea:focus { outline: none; border-color: var(--primary); - box-shadow: 0 0 0 3px rgba(255, 107, 0, 0.2); + box-shadow: 0 0 0 4px rgba(255, 107, 0, 0.1); + transform: translateY(-2px); +} + +.form-textarea { + resize: vertical; + min-height: 120px; + line-height: 1.5; +} + +/* ===== MODAL ENHANCEMENTS ===== */ +.modal { + display: none; + position: fixed; + z-index: 1000; + left: 0; + top: 0; + width: 100%; + height: 100%; + background-color: rgba(0, 0, 0, 0.8); + backdrop-filter: blur(10px); + animation: fadeIn 0.3s ease; } -/* ===== МОДАЛЬНЫЕ ОКНА (МОБИЛЬНЫЙ) ===== */ .modal-content { - max-width: 95vw; + background: var(--bg-primary); + margin: 2% auto; + border-radius: var(--radius-xl); + box-shadow: var(--shadow-xl); + animation: slideIn 0.3s ease; + position: relative; + max-width: 90%; max-height: 90vh; - border-radius: var(--radius-lg); - box-shadow: var(--shadow-md); + overflow: auto; +} + +.modal-header { + display: flex; + justify-content: space-between; + align-items: center; + padding: 2rem 2rem 1rem; + border-bottom: 2px solid var(--border-light); +} + +.modal-header h3 { + margin: 0; + color: var(--text-primary); + font-size: 1.5rem; + font-weight: 700; + background: var(--gradient-primary); + -webkit-background-clip: text; + -webkit-text-fill-color: transparent; + background-clip: text; } .modal-body { - padding: 1.5rem; + padding: 2rem; } -/* ===== АНИМАЦИИ (ОТКЛЮЧЕНЫ НА МОБИЛЬНЫХ) ===== */ -@media (max-width: 76 \ No newline at end of file +.modal-close { + color: var(--text-light); + font-size: 2rem; + font-weight: bold; + cursor: pointer; + transition: var(--transition); + background: none; + border: none; + padding: 0; + width: 40px; + height: 40px; + display: flex; + align-items: center; + justify-content: center; + border-radius: var(--radius-md); +} + +.modal-close:hover { + color: var(--primary); + background: var(--bg-secondary); + transform: rotate(90deg); +} + +@keyframes fadeIn { + from { opacity: 0; } + to { opacity: 1; } +} + +@keyframes slideIn { + from { + opacity: 0; + transform: translateY(-50px) scale(0.9); + } + to { + opacity: 1; + transform: translateY(0) scale(1); + } +} + +/* ===== SOLUTION PAGE STYLES ===== */ +.solution-accordion { + margin: 2rem 0; +} + +.accordion-item { + background: var(--bg-secondary); + border-radius: var(--radius-lg); + margin-bottom: 1rem; + border: 2px solid var(--border-light); + overflow: hidden; + transition: var(--transition); +} + +.accordion-item:hover { + border-color: var(--primary-light); + transform: translateX(4px); +} + +.accordion-header { + padding: 1.5rem; + background: var(--gradient-primary); + color: white; + font-weight: 600; + font-size: 1.125rem; + cursor: pointer; + display: flex; + justify-content: space-between; + align-items: center; + transition: var(--transition); +} + +.accordion-header:hover { + background: var(--primary-dark); +} + +.accordion-content { + padding: 1.5rem; + background: var(--bg-primary); + line-height: 1.7; +} + +.accordion-content p { + margin-bottom: 1rem; +} + +.accordion-content p:last-child { + margin-bottom: 0; +} + + +/* ===== THEME SWITCHER STYLES ===== */ +.theme-switcher { + display: flex; + align-items: center; +} + +.theme-toggle-checkbox { + display: none; +} + +.theme-toggle-label { + position: relative; + display: flex; + align-items: center; + width: 60px; + height: 30px; + background: var(--bg-card); + border: 2px solid var(--border-light); + border-radius: 25px; + cursor: pointer; + transition: all 0.3s ease; + padding: 2px; + box-shadow: var(--shadow-sm); +} + +.theme-toggle-label:hover { + border-color: var(--primary); + box-shadow: 0 0 10px rgba(255, 107, 0, 0.3); +} + +.theme-toggle-slider { + position: absolute; + width: 24px; + height: 24px; + background: var(--primary); + border-radius: 50%; + transition: all 0.3s ease; + left: 2px; + z-index: 2; +} + +.theme-toggle-checkbox:checked + .theme-toggle-label .theme-toggle-slider { + transform: translateX(30px); + background: var(--secondary); +} + +.theme-icon { + position: absolute; + font-size: 12px; + transition: all 0.3s ease; + z-index: 1; +} + +.theme-icon.sun { + left: 8px; + opacity: 1; +} + +.theme-icon.moon { + right: 8px; + opacity: 0; +} + +.theme-toggle-checkbox:checked + .theme-toggle-label .theme-icon.sun { + opacity: 0; +} + +.theme-toggle-checkbox:checked + .theme-toggle-label .theme-icon.moon { + opacity: 1; +} + +/* ===== MOBILE RESPONSIVE STYLES ===== */ +@media (max-width: 768px) { + .hero-title { + font-size: 2.5rem; + } + + .hero-subtitle { + font-size: 1.125rem; + padding: 0 1rem; + } + + .page-title { + font-size: 2.25rem; + } + + .page-subtitle { + font-size: 1.125rem; + padding: 0 1rem; + } + + .grid-2 { + grid-template-columns: 1fr; + gap: 1.5rem; + } + + .modern-card { + padding: 1.5rem; + margin-bottom: 1.5rem; + } + + .card-title { + font-size: 1.375rem; + } + + .content-card { + padding: 1.5rem; + } + + .about-section { + padding: 1.5rem; + } + + .skills-grid { + grid-template-columns: 1fr; + gap: 1.5rem; + } + + .competence-item { + flex-direction: column; + padding: 1.5rem; + gap: 1.5rem; + } + + .competence-scan-container { + width: 100%; + max-width: 280px; + margin: 0 auto; + } + + .recall-header { + flex-direction: column; + gap: 1rem; + align-items: flex-start; + } + + .recall-meta { + flex-direction: column; + gap: 0.5rem; + } + + .footer-content { + grid-template-columns: 1fr; + gap: 2rem; + text-align: center; + } + + .footer-contacts p { + justify-content: center; + } + + .card-actions { + flex-direction: column; + } + + .btn { + width: 100%; + justify-content: center; + } + + .modal-content { + margin: 5% auto; + max-width: 95%; + } + + .modal-header { + padding: 1.5rem 1.5rem 1rem; + } + + .modal-body { + padding: 1.5rem; + } + + .page-content { + padding: 1.5rem; + } + + .breadcrumbs { + font-size: 0.8rem; + } +} + +@media (max-width: 480px) { + .hero-title { + font-size: 2rem; + } + + .hero-subtitle { + font-size: 1rem; + } + + .page-title { + font-size: 1.875rem; + } + + .modern-card { + padding: 1.25rem; + } + + .content-card { + padding: 1.25rem; + } + + .about-section { + padding: 1.25rem; + } + + .card-title { + font-size: 1.25rem; + } + + .competence-scan-container { + max-width: 100%; + } +} + +/* Явные стили для мобильного меню в светлой теме */ +.mobile-menu { + background: #FFFFFF !important; +} + +.mobile-menu-header { + border-bottom: 1px solid #E2E8F0 !important; +} + +.mobile-menu-close { + color: #1A1F36 !important; +} + +.mobile-menu-close:hover { + background: #F7FAFC !important; +} + +.mobile-nav-link { + color: #1A1F36 !important; +} + +.mobile-nav-link:hover, +.mobile-nav-link.active { + background: var(--primary) !important; + color: white !important; +} + +.mobile-nav-actions { + border-top: 1px solid #E2E8F0 !important; +} + +/* Стили для переключателя темы в мобильном меню */ +.mobile-menu .theme-toggle-label { + background: #F7FAFC !important; + border: 2px solid #CBD5E0 !important; +} + +.mobile-menu .theme-toggle-label:hover { + border-color: var(--primary) !important; +} + +.mobile-menu .theme-icon.sun { + color: #1A1F36 !important; +} + +.mobile-menu .theme-icon.moon { + color: #1A1F36 !important; +} + +/* Стили для страницы отзывов */ +.recall-item { + display: flex; + flex-direction: column; + gap: 1.5rem; +} + +.recall-content { + display: flex; + gap: 2rem; + align-items: flex-start; +} + +.recall-scan-wrapper { + flex-shrink: 0; +} + +.recall-scan-container { + width: 280px; + cursor: pointer; + border-radius: var(--radius-lg); + overflow: hidden; + border: 2px solid var(--border-light); + transition: var(--transition); + position: relative; + box-shadow: var(--shadow-md); +} + +.recall-scan-container:hover { + transform: translateY(-4px) scale(1.02); + box-shadow: var(--shadow-xl); + border-color: var(--primary); +} + +.recall-scan { + width: 100%; + height: auto; + display: block; + transition: var(--transition); +} + +.recall-text { + flex: 1; + min-width: 0; + line-height: 1.7; + font-size: 1.05rem; +} + +.scan-hint { + position: absolute; + bottom: 0; + left: 0; + right: 0; + background: linear-gradient(transparent, rgba(0,0,0,0.8)); + color: white; + padding: 1rem; + text-align: center; + opacity: 0; + transition: var(--transition); + transform: translateY(10px); +} + +.recall-scan-container:hover .scan-hint { + opacity: 1; + transform: translateY(0); +} + +/* Стили для модального окна с изображением */ +.modal-image { + max-width: 90vw; + max-height: 80vh; + width: auto; + height: auto; + display: block; + margin: 0 auto; + border-radius: var(--radius-md); + box-shadow: var(--shadow-xl); + transition: all 0.3s ease; +} + +.modal-content.image-modal { + max-width: 95vw; + max-height: 95vh; + background: transparent; + border: none; + box-shadow: none; +} + +.modal-body.image-modal-body { + padding: 1rem; + display: flex; + align-items: center; + justify-content: center; + background: transparent; +} + +/* Адаптивность для мобильных устройств */ +@media (max-width: 768px) { + .recall-content { + flex-direction: column; + gap: 1.5rem; + } + + .recall-scan-container { + width: 100%; + max-width: 300px; + margin: 0 auto; + } + + .recall-scan-wrapper { + order: -1; + } + + .modal-image { + max-width: 95vw; + max-height: 70vh; + } + + .modal-content.image-modal { + margin: 10% auto; + } +} + +@media (max-width: 480px) { + .recall-scan-container { + max-width: 100%; + } + + .modal-content.image-modal { + margin: 5% auto; + max-width: 98vw; + } + + .modal-body.image-modal-body { + padding: 0.5rem; + } +} \ No newline at end of file