employee-helper/index.html
2026-06-19 06:26:45 +00:00

558 lines
26 KiB
HTML
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="ru">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1">
<title>Инструкция для сотрудников</title>
<style>
:root{
--green-900:#064E3B;
--green-700:#047857;
--green-500:#10B981;
--green-400:#34D399;
--green-300:#6EE7B7;
--green-200:#A7F3D0;
--green-100:#D1FAE5;
--green-50:#ECFDF5;
--white:#FFFFFF;
--dark:#1A2E35;
--gray:#6B7280;
}
*{box-sizing:border-box;margin:0;padding:0}
body{font:17px/1.6 -apple-system,BlinkMacSystemFont,"Segoe UI",Inter,system-ui,sans-serif;color:var(--dark);background:var(--green-50);overflow-x:hidden}
.hero{background:linear-gradient(135deg,var(--green-700),var(--green-500));color:var(--white);padding:60px 24px 80px;text-align:center;position:relative;overflow:hidden}
.hero::before{content:'';position:absolute;top:-50%;left:-50%;width:200%;height:200%;background:radial-gradient(circle,rgba(255,255,255,0.1) 0%,transparent 60%);animation:pulse 4s ease-in-out infinite}
@keyframes pulse{0%,100%{transform:scale(1)}50%{transform:scale(1.05)}}
.hero h1{font-size:42px;font-weight:800;margin-bottom:16px;position:relative}
.hero p{font-size:20px;color:var(--green-100);max-width:600px;margin:0 auto 32px;position:relative}
.hero-emoji{font-size:80px;margin-bottom:20px;display:block;animation:bounce 2s infinite}
@keyframes bounce{0%,100%{transform:translateY(0)}50%{transform:translateY(-15px)}}
.container{max-width:900px;margin:0 auto;padding:0 24px}
.nav-cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:16px;margin:-40px auto 40px;position:relative;z-index:10}
.nav-card{background:var(--white);border-radius:16px;padding:24px 16px;text-align:center;cursor:pointer;transition:all 0.3s ease;box-shadow:0 4px 20px rgba(0,0,0,0.08);border:2px solid transparent}
.nav-card:hover{transform:translateY(-4px);box-shadow:0 8px 30px rgba(16,185,129,0.2);border-color:var(--green-400)}
.nav-card.active{border-color:var(--green-500);background:var(--green-50)}
.nav-card .icon{font-size:40px;margin-bottom:8px;display:block}
.nav-card .label{font-weight:700;font-size:14px;color:var(--green-700)}
.section{display:none;animation:fadeIn 0.4s ease}
.section.active{display:block}
@keyframes fadeIn{from{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}
.instruction-block{background:var(--white);border-radius:16px;padding:32px;margin-bottom:20px;box-shadow:0 2px 12px rgba(0,0,0,0.06);border-left:4px solid var(--green-500);cursor:pointer;transition:all 0.3s}
.instruction-block:hover{box-shadow:0 4px 20px rgba(16,185,129,0.15)}
.instruction-block .step-header{display:flex;align-items:center;gap:16px;margin-bottom:12px}
.instruction-block .step-num{background:var(--green-500);color:var(--white);width:44px;height:44px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-weight:800;font-size:18px;flex-shrink:0}
.instruction-block .step-title{font-size:20px;font-weight:700;color:var(--green-900)}
.instruction-block .step-desc{color:var(--gray);padding-left:60px}
.instruction-block .step-visual{margin-top:16px;padding-left:60px}
.visual-box{background:var(--green-100);border-radius:12px;padding:16px;text-align:center;overflow:hidden}
.visual-box .big-emoji{font-size:48px;display:block;margin-bottom:8px}
.visual-box img{width:100%;max-height:200px;object-fit:cover;border-radius:8px;margin-bottom:8px}
.quiz-section{background:var(--white);border-radius:16px;padding:32px;margin-bottom:20px;box-shadow:0 2px 12px rgba(0,0,0,0.06)}
.quiz-section h3{font-size:22px;font-weight:700;color:var(--green-900);margin-bottom:20px;text-align:center}
.quiz-options{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.quiz-option{background:var(--green-50);border:2px solid var(--green-200);border-radius:12px;padding:16px;cursor:pointer;text-align:center;transition:all 0.3s;font-weight:600}
.quiz-option:hover{border-color:var(--green-500);background:var(--green-100)}
.quiz-option.correct{background:var(--green-400);color:var(--white);border-color:var(--green-500)}
.quiz-option.wrong{background:#FEE2E2;border-color:#EF4444;color:#DC2626}
.quiz-result{text-align:center;margin-top:16px;font-weight:700;font-size:18px;padding:16px;border-radius:12px;display:none}
.quiz-result.show{display:block}
.quiz-result.success{background:var(--green-100);color:var(--green-900)}
.timer-box{background:linear-gradient(135deg,var(--green-500),var(--green-700));color:var(--white);border-radius:16px;padding:32px;text-align:center;margin-bottom:20px}
.timer-display{font-size:64px;font-weight:800;font-variant-numeric:tabular-nums;margin:16px 0}
.timer-label{font-size:14px;color:var(--green-200);text-transform:uppercase;letter-spacing:2px}
.timer-buttons{display:flex;gap:12px;justify-content:center;margin-top:16px}
.timer-btn{background:rgba(255,255,255,0.2);border:2px solid rgba(255,255,255,0.4);color:var(--white);padding:10px 24px;border-radius:8px;font-weight:700;cursor:pointer;transition:all 0.2s;font-size:15px}
.timer-btn:hover{background:rgba(255,255,255,0.3)}
.progress-bar{width:100%;height:8px;background:var(--green-200);border-radius:4px;overflow:hidden;margin:16px 0}
.progress-fill{height:100%;background:var(--green-500);border-radius:4px;transition:width 0.5s ease;width:0%}
.checklist{list-style:none;padding:0}
.checklist li{display:flex;align-items:center;gap:12px;padding:14px 16px;background:var(--green-50);border-radius:10px;margin-bottom:8px;cursor:pointer;transition:all 0.3s;border:2px solid transparent}
.checklist li:hover{background:var(--green-100)}
.checklist li.checked{background:var(--green-200);border-color:var(--green-400)}
.checklist li .check-icon{width:28px;height:28px;border-radius:50%;border:2px solid var(--green-400);display:flex;align-items:center;justify-content:center;flex-shrink:0;transition:all 0.3s}
.checklist li.checked .check-icon{background:var(--green-500);border-color:var(--green-500);color:var(--white)}
.checklist li .check-text{font-weight:500}
.confetti{position:fixed;top:0;left:0;width:100%;height:100%;pointer-events:none;z-index:9999;display:none}
.confetti.active{display:block}
.footer{text-align:center;padding:40px 24px;color:var(--gray);font-size:14px}
.footer a{color:var(--green-700);text-decoration:none;font-weight:600}
@media(max-width:640px){
.hero h1{font-size:30px}
.hero p{font-size:16px}
.nav-cards{grid-template-columns:1fr 1fr}
.quiz-options{grid-template-columns:1fr}
.timer-display{font-size:48px}
.instruction-block .step-desc{padding-left:0}
.instruction-block .step-visual{padding-left:0}
}
</style>
</head>
<body>
<section class="hero">
<span class="hero-emoji">👀</span>
<div class="container">
<h1>Инструкция для сотрудников</h1>
<p>Визуально и коротко — потому что читать лень. Жми на карточку и листай!</p>
</div>
</section>
<div class="container">
<div class="nav-cards">
<div class="nav-card active" onclick="showSection('morning')">
<span class="icon"></span>
<span class="label">Утро</span>
</div>
<div class="nav-card" onclick="showSection('work')">
<span class="icon">💻</span>
<span class="label">Работа</span>
</div>
<div class="nav-card" onclick="showSection('lunch')">
<span class="icon">🍜</span>
<span class="label">Обед</span>
</div>
<div class="nav-card" onclick="showSection('evening')">
<span class="icon">🏠</span>
<span class="label">Вечер</span>
</div>
<div class="nav-card" onclick="showSection('quiz')">
<span class="icon">🧠</span>
<span class="label">Проверь себя</span>
</div>
</div>
<!-- УТРО -->
<div id="morning" class="section active">
<div class="instruction-block" onclick="this.classList.toggle('open')">
<div class="step-header">
<div class="step-num">1</div>
<div class="step-title">Поставь будильник</div>
</div>
<div class="step-desc">За 40 минут до выхода. Не 5 штук — одно точное время.</div>
<div class="step-visual">
<div class="visual-box">
<img src="https://images.unsplash.com/photo-1512941937669-90a1b58e7e9c?w=400&h=200&fit=crop" alt="Будильник">
<span class="big-emoji"></span>Будильник = твой лучший друг
</div>
</div>
</div>
<div class="instruction-block">
<div class="step-header">
<div class="step-num">2</div>
<div class="step-title">Умойся и позавтракай</div>
</div>
<div class="step-desc">Быстрый завтрак = энергия. Без него — зомби до обеда.</div>
<div class="step-visual">
<div class="visual-box">
<img src="https://images.unsplash.com/photo-1484723091739-30a097e8f929?w=400&h=200&fit=crop" alt="Завтрак">
<span class="big-emoji">🥣</span>Каша / бутерброд / йогурт — вариантов много
</div>
</div>
</div>
<div class="instruction-block">
<div class="step-header">
<div class="step-num">3</div>
<div class="step-title">Проверь сумку</div>
</div>
<div class="step-desc">Телефон, ключи, зарядка, документы. Всё на месте — выходим.</div>
<div class="step-visual">
<div class="visual-box">
<img src="https://images.unsplash.com/photo-1553062407-98eeb64c6a62?w=400&h=200&fit=crop" alt="Сумка">
<span class="big-emoji">🎒</span>🔑 Телефон — Ключи — Зарядка
</div>
</div>
</div>
<div class="instruction-block" style="border-left-color:#EF4444">
<div class="step-header">
<div class="step-num" style="background:#EF4444">!</div>
<div class="step-title" style="color:#DC2626">Как прийти без опозданий</div>
</div>
<div class="step-desc">
<strong>Правило 10 минут:</strong> Если работа начинается в 9:00 — выйди из дома в 8:30.<br><br>
<strong>Что считать:</strong> время сборов + дорога + 10 минут запас на пробки/очередь/лифт.<br><br>
<strong>Лайфхак:</strong> Замерь время в.paths до работы 3 раза в разное время суток. Возьми среднее + 10 мин.
</div>
<div class="step-visual">
<div class="visual-box" style="background:#FEE2E2">
<img src="https://images.unsplash.com/photo-1503676260728-1c00da094a0b?w=400&h=200&fit=crop" alt="Опоздание">
<span class="big-emoji">🚨</span>
<strong>Опоздание = -10% к уважению в коллективе</strong>
</div>
</div>
</div>
<div class="timer-box">
<div class="timer-label">Обратный отсчёт до выхода</div>
<div class="timer-display" id="timer">40:00</div>
<div class="timer-buttons">
<button class="timer-btn" onclick="startTimer(40)">40 мин</button>
<button class="timer-btn" onclick="startTimer(30)">30 мин</button>
<button class="timer-btn" onclick="startTimer(15)">15 мин</button>
<button class="timer-btn" onclick="stopTimer()">Стоп</button>
</div>
</div>
</div>
<!-- РАБОТА -->
<div id="work" class="section">
<div class="instruction-block">
<div class="step-header">
<div class="step-num">1</div>
<div class="step-title">Поприветствуй коллег</div>
</div>
<div class="step-desc">Улыбнись и скажи «Привет!». Это занимает 2 секунды, но задаёт тон на весь день.</div>
<div class="step-visual">
<div class="visual-box">
<img src="https://images.unsplash.com/photo-1521791136064-7986c2920216?w=400&h=200&fit=crop" alt="Приветствие">
<span class="big-emoji">👋</span>Доброе утро = 좋은 день
</div>
</div>
</div>
<div class="instruction-block">
<div class="step-header">
<div class="step-num">2</div>
<div class="step-title">Посмотри задачи на день</div>
</div>
<div class="step-desc">Открой трекер задач / планёрку. Определи ТОП-3 задачи на день.</div>
<div class="step-visual">
<div class="visual-box">
<img src="https://images.unsplash.com/photo-1484480974693-6ca0a78fb36b?w=400&h=200&fit=crop" alt="Задачи">
<span class="big-emoji">📋</span>3 главные задачи — всё остальное по остаточному принципу
</div>
</div>
</div>
<div class="instruction-block">
<div class="step-header">
<div class="step-num">3</div>
<div class="step-title">Сфокусируйся</div>
</div>
<div class="step-desc">Выключи уведомления. Закрой 15 вкладок. Работай блоками по 25 минут.</div>
<div class="step-visual">
<div class="visual-box">
<img src="https://images.unsplash.com/photo-1499750310107-5fef28a66643?w=400&h=200&fit=crop" alt="Фокус">
<span class="big-emoji">🎯</span>Фокус: телефон в сторону, соцсети закрыты
</div>
</div>
</div>
<div class="instruction-block">
<div class="step-header">
<div class="step-num">4</div>
<div class="step-title">Не стесняйся спрашивать</div>
</div>
<div class="step-desc">Если что-то непонятно — спроси коллегу или руководителя. Лучше 5 вопросов, чем 1 брак.</div>
<div class="step-visual">
<div class="visual-box">
<img src="https://images.unsplash.com/photo-1573497019940-1c28c88b4f3e?w=400&h=200&fit=crop" alt="Вопросы">
<span class="big-emoji">🤝</span>«Можно уточнить?» — это не слабость, а мозг
</div>
</div>
</div>
<ul class="checklist" id="workChecklist">
<li onclick="toggleCheck(this)"><span class="check-icon"></span><span class="check-text">Встал из-за стола и размялся</span></li>
<li onclick="toggleCheck(this)"><span class="check-icon"></span><span class="check-text">Выпил воды</span></li>
<li onclick="toggleCheck(this)"><span class="check-icon"></span><span class="check-text">Посмотрел в окно (глаза устали)</span></li>
<li onclick="toggleCheck(this)"><span class="check-icon"></span><span class="check-text">Помог коллеге</span></li>
<li onclick="toggleCheck(this)"><span class="check-icon"></span><span class="check-text">Закрыл задачу из ТОП-3</span></li>
</ul>
</div>
<!-- ОБЕД -->
<div id="lunch" class="section">
<div class="instruction-block">
<div class="step-header">
<div class="step-num">1</div>
<div class="step-title">Отдохни от экрана</div>
</div>
<div class="step-desc">Минимум 20 минут без монитора. Глаза и мозг скажут спасибо.</div>
<div class="step-visual">
<div class="visual-box">
<img src="https://images.unsplash.com/photo-1506905925346-21bda4d32df4?w=400&h=200&fit=crop" alt="Природа">
<span class="big-emoji">🌳</span>Выйди на воздух или просто отведи взгляд вдаль
</div>
</div>
</div>
<div class="instruction-block">
<div class="step-header">
<div class="step-num">2</div>
<div class="step-title">Поешь нормально</div>
</div>
<div class="step-desc">Не за столом с ноутбуком. Не в офисе. В cafeteria / кафе / на лавочке.</div>
<div class="step-visual">
<div class="visual-box">
<img src="https://images.unsplash.com/photo-1504674900247-0877df9cc836?w=400&h=200&fit=crop" alt="Обед">
<span class="big-emoji">🍽</span>Еда + свежий воздух = power-up на вторую половину
</div>
</div>
</div>
<div class="instruction-block">
<div class="step-header">
<div class="step-num">3</div>
<div class="step-title">Пообщайся не по работе</div>
</div>
<div class="step-desc">Поговори о чём-тоpleasantном. Это снимает стресс и укрепляет команду.</div>
<div class="step-visual">
<div class="visual-box">
<img src="https://images.unsplash.com/photo-1529156069898-49953e39b3ac?w=400&h=200&fit=crop" alt="Общение">
<span class="big-emoji">😄</span>Коллега — тоже человек, а не только Slack-нотификация
</div>
</div>
</div>
</div>
<!-- ВЕЧЕР -->
<div id="evening" class="section">
<div class="instruction-block">
<div class="step-header">
<div class="step-num">1</div>
<div class="step-title">Подведи итоги дня</div>
</div>
<div class="step-desc">Что успел? Что не успел? Запиши на завтра ТОП-3 задачи.</div>
<div class="step-visual">
<div class="visual-box">
<img src="https://images.unsplash.com/photo-1517842645767-c639042777db?w=400&h=200&fit=crop" alt="Итоги">
<span class="big-emoji">📝</span>2 минуты на запись = спокойный вечер
</div>
</div>
</div>
<div class="instruction-block">
<div class="step-header">
<div class="step-num">2</div>
<div class="step-title">Выключи рабочий мозг</div>
</div>
<div class="step-desc">Закрой ноутбук. Уведомления — в тишину. Работа подождёт до утра.</div>
<div class="step-visual">
<div class="visual-box">
<img src="https://images.unsplash.com/photo-1499209974431-9dddcece7f88?w=400&h=200&fit=crop" alt="Отдых">
<span class="big-emoji">🔕</span>Граница между работой и домом — это важно
</div>
</div>
</div>
<div class="instruction-block">
<div class="step-header">
<div class="step-num">3</div>
<div class="step-title">Подготовься к завтра</div>
</div>
<div class="step-desc">Положи сумку у двери. Выбери одежду. Заряди телефон. Утром скажешь себе спасибо.</div>
<div class="step-visual">
<div class="visual-box">
<img src="https://images.unsplash.com/photo-1501785888041-af3ef285b470?w=400&h=200&fit=crop" alt="Подготовка">
<span class="big-emoji">🎒</span>Вечерний ритуал = утренний комфорт
</div>
</div>
</div>
</div>
<!-- КВИЗ -->
<div id="quiz" class="section">
<div class="quiz-section">
<h3>Проверь себя! 🧠</h3>
<p style="text-align:center;color:var(--gray);margin-bottom:20px">Ответь на 3 вопроса — и узнаешь, всё ли ты понял</p>
<div id="quiz1" class="quiz-step">
<p style="font-weight:700;margin-bottom:12px">1. Во сколько выйти из дома, если работа в 9:00, а дорога занимает 30 минут?</p>
<div class="quiz-options">
<div class="quiz-option" onclick="answer(1,this,false)">8:50</div>
<div class="quiz-option" onclick="answer(1,this,true)">8:20</div>
<div class="quiz-option" onclick="answer(1,this,false)">8:30</div>
<div class="quiz-option" onclick="answer(1,this,false)">9:00</div>
</div>
</div>
<div id="quiz2" class="quiz-step" style="display:none">
<p style="font-weight:700;margin-bottom:12px">2. Сколько задач выделять на день?</p>
<div class="quiz-options">
<div class="quiz-option" onclick="answer(2,this,false)">10</div>
<div class="quiz-option" onclick="answer(2,this,true)">3</div>
<div class="quiz-option" onclick="answer(2,this,false)">1</div>
<div class="quiz-option" onclick="answer(2,this,false)">Сколько дадут</div>
</div>
</div>
<div id="quiz3" class="quiz-step" style="display:none">
<p style="font-weight:700;margin-bottom:12px">3. Что делать, если непонятно задание?</p>
<div class="quiz-options">
<div class="quiz-option" onclick="answer(3,this,false)">Молча делать как умею</div>
<div class="quiz-option" onclick="answer(3,this,false)">Гадать и гадать</div>
<div class="quiz-option" onclick="answer(3,this,true)">Спросить руководителя</div>
<div class="quiz-option" onclick="answer(3,this,false)">Сделать в последний момент</div>
</div>
</div>
<div id="quizResult" class="quiz-result">
<span id="quizResultText"></span>
</div>
<div class="progress-bar" style="margin-top:20px">
<div class="progress-fill" id="quizProgress"></div>
</div>
</div>
<div class="instruction-block" style="text-align:center;border-left-color:var(--green-500)">
<div style="font-size:48px;margin-bottom:8px">🎉</div>
<div class="step-title">Готово! Ты знаешь правила!</div>
<div class="step-desc" style="padding-left:0;margin-top:8px">Отправь эту инструкцию коллегам — им тоже лень читать, но они оценят картинки.</div>
</div>
</div>
</div>
<div class="footer">
<p>Сделано с 💚 для тех, кто не любит читать</p>
</div>
<canvas class="confetti" id="confetti"></canvas>
<script>
let timerInterval = null;
let quizAnswers = {1:false,2:false,3:false};
let quizAnswered = 0;
function showSection(id) {
document.querySelectorAll('.section').forEach(s => s.classList.remove('active'));
document.querySelectorAll('.nav-card').forEach(c => c.classList.remove('active'));
document.getElementById(id).classList.add('active');
event.currentTarget.classList.add('active');
window.scrollTo({top: document.getElementById(id).offsetTop - 100, behavior:'smooth'});
}
function toggleCheck(li) {
li.classList.toggle('checked');
}
function startTimer(minutes) {
stopTimer();
let seconds = minutes * 60;
updateDisplay(seconds);
timerInterval = setInterval(() => {
seconds--;
updateDisplay(seconds);
if (seconds <= 0) {
stopTimer();
document.getElementById('timer').textContent = 'ПОЕХАЛИ! 🚀';
document.getElementById('timer').style.animation = 'pulse 0.5s infinite';
}
}, 1000);
}
function stopTimer() {
clearInterval(timerInterval);
document.getElementById('timer').style.animation = '';
}
function updateDisplay(sec) {
const m = Math.floor(sec / 60);
const s = sec % 60;
document.getElementById('timer').textContent =
String(m).padStart(2,'0') + ':' + String(s).padStart(2,'0');
}
function answer(q, el, correct) {
const step = document.getElementById('quiz' + q);
if (step.dataset.answered) return;
step.dataset.answered = '1';
quizAnswered++;
if (correct) {
el.classList.add('correct');
quizAnswers[q] = true;
} else {
el.classList.add('wrong');
step.querySelectorAll('.quiz-option').forEach(o => {
if (o !== el) o.style.opacity = '0.5';
});
}
const progress = (quizAnswered / 3) * 100;
document.getElementById('quizProgress').style.width = progress + '%';
if (quizAnswered < 3) {
setTimeout(() => {
document.getElementById('quiz' + (quizAnswered + 1)).style.display = 'block';
}, 600);
} else {
const correctCount = Object.values(quizAnswers).filter(v => v).length;
const result = document.getElementById('quizResult');
const text = document.getElementById('quizResultText');
result.classList.add('show');
if (correctCount === 3) {
result.classList.add('success');
text.textContent = '🏆 Отлично! 3 из 3 — ты готов к работе!';
launchConfetti();
} else {
result.classList.add('success');
text.textContent = `👍 ${correctCount} из 3 — неплохо! Перечитай секцию «Утро»`;
}
}
}
function launchConfetti() {
const canvas = document.getElementById('confetti');
const ctx = canvas.getContext('2d');
canvas.width = window.innerWidth;
canvas.height = window.innerHeight;
canvas.classList.add('active');
const particles = [];
const colors = ['#10B981','#34D399','#6EE7B7','#A7F3D0','#047857','#FCD34D'];
for (let i = 0; i < 150; i++) {
particles.push({
x: Math.random() * canvas.width,
y: Math.random() * canvas.height - canvas.height,
w: Math.random() * 10 + 5,
h: Math.random() * 6 + 3,
color: colors[Math.floor(Math.random() * colors.length)],
vy: Math.random() * 3 + 2,
vx: (Math.random() - 0.5) * 2,
rot: Math.random() * 360,
vr: (Math.random() - 0.5) * 10
});
}
let frame = 0;
function animate() {
ctx.clearRect(0,0,canvas.width,canvas.height);
particles.forEach(p => {
p.y += p.vy;
p.x += p.vx;
p.rot += p.vr;
ctx.save();
ctx.translate(p.x, p.y);
ctx.rotate(p.rot * Math.PI / 180);
ctx.fillStyle = p.color;
ctx.fillRect(-p.w/2, -p.h/2, p.w, p.h);
ctx.restore();
});
frame++;
if (frame < 180) requestAnimationFrame(animate);
else canvas.classList.remove('active');
}
animate();
}
showSection('morning');
</script>
</body>
</html>