landvex: Fixar och tester klara för alla komponenter
- Datafabrik: Dockerfile fix, agentorkestrering fungerar - Vision: Identify-modell, FAISS, OCR alla testade - API: Alla 7 integrationstester passerade - Upplösare: Entitetsupplösning verifierad
This commit is contained in:
@@ -0,0 +1,417 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="sv">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>Välkommen till quiXzoom — quiXzoom Academy</title>
|
||||
<style>
|
||||
:root {
|
||||
--qx-black: #0a0a0a;
|
||||
--qx-white: #ffffff;
|
||||
--qx-blue: #0066FF;
|
||||
--qx-green: #00C853;
|
||||
--qx-gray: #F5F5F7;
|
||||
--qx-dark-gray: #1a1a1a;
|
||||
--qx-text-muted: #6e6e73;
|
||||
--qx-purple: #7B61FF;
|
||||
--qx-orange: #FF6B35;
|
||||
}
|
||||
|
||||
* { margin: 0; padding: 0; box-sizing: border-box; }
|
||||
|
||||
body {
|
||||
font-family: -apple-system, BlinkMacSystemFont, 'SF Pro Display', sans-serif;
|
||||
color: var(--qx-black);
|
||||
background: var(--qx-white);
|
||||
line-height: 1.6;
|
||||
}
|
||||
|
||||
.progress-container {
|
||||
position: sticky;
|
||||
top: 0;
|
||||
background: white;
|
||||
padding: 12px 20px;
|
||||
border-bottom: 1px solid var(--qx-gray);
|
||||
z-index: 100;
|
||||
}
|
||||
|
||||
.progress-bar {
|
||||
max-width: 600px;
|
||||
margin: 0 auto;
|
||||
background: var(--qx-gray);
|
||||
border-radius: 10px;
|
||||
height: 8px;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.progress-fill {
|
||||
background: var(--qx-green);
|
||||
height: 100%;
|
||||
width: 0%;
|
||||
transition: width 0.5s ease;
|
||||
}
|
||||
|
||||
.lesson-container {
|
||||
max-width: 800px;
|
||||
margin: 0 auto;
|
||||
padding: 40px 20px;
|
||||
}
|
||||
|
||||
.lesson-header {
|
||||
margin-bottom: 48px;
|
||||
}
|
||||
|
||||
.lesson-module {
|
||||
color: var(--qx-blue);
|
||||
font-size: 0.875rem;
|
||||
text-transform: uppercase;
|
||||
letter-spacing: 2px;
|
||||
margin-bottom: 8px;
|
||||
}
|
||||
|
||||
.lesson-title {
|
||||
font-size: 2.5rem;
|
||||
margin-bottom: 16px;
|
||||
line-height: 1.2;
|
||||
}
|
||||
|
||||
.lesson-meta {
|
||||
color: var(--qx-text-muted);
|
||||
font-size: 0.9rem;
|
||||
display: flex;
|
||||
gap: 16px;
|
||||
}
|
||||
|
||||
.content-block {
|
||||
margin-bottom: 48px;
|
||||
}
|
||||
|
||||
.content-block h2 {
|
||||
font-size: 1.75rem;
|
||||
margin-bottom: 20px;
|
||||
}
|
||||
|
||||
.content-block p {
|
||||
margin-bottom: 16px;
|
||||
color: #333;
|
||||
font-size: 1.05rem;
|
||||
}
|
||||
|
||||
.content-block ul {
|
||||
margin-left: 24px;
|
||||
margin-bottom: 16px;
|
||||
}
|
||||
|
||||
.content-block li {
|
||||
margin-bottom: 12px;
|
||||
}
|
||||
|
||||
.tip-box {
|
||||
background: #e8f4fd;
|
||||
border-left: 4px solid var(--qx-blue);
|
||||
padding: 24px;
|
||||
margin: 24px 0;
|
||||
border-radius: 0 12px 12px 0;
|
||||
}
|
||||
|
||||
.tip-box strong {
|
||||
color: var(--qx-blue);
|
||||
display: block;
|
||||
margin-bottom: 8px;
|
||||
}
|
||||
|
||||
.warning-box {
|
||||
background: #fff3cd;
|
||||
border-left: 4px solid var(--qx-orange);
|
||||
padding: 24px;
|
||||
margin: 24px 0;
|
||||
border-radius: 0 12px 12px 0;
|
||||
}
|
||||
|
||||
.warning-box strong {
|
||||
color: var(--qx-orange);
|
||||
display: block;
|
||||
margin-bottom: 8px;
|
||||
}
|
||||
|
||||
.example-box {
|
||||
background: var(--qx-gray);
|
||||
padding: 24px;
|
||||
border-radius: 12px;
|
||||
margin: 24px 0;
|
||||
}
|
||||
|
||||
.example-box h4 {
|
||||
margin-bottom: 12px;
|
||||
color: var(--qx-dark-gray);
|
||||
}
|
||||
|
||||
.quiz-container {
|
||||
background: var(--qx-gray);
|
||||
padding: 32px;
|
||||
border-radius: 16px;
|
||||
margin: 32px 0;
|
||||
}
|
||||
|
||||
.quiz-question {
|
||||
font-size: 1.25rem;
|
||||
font-weight: 600;
|
||||
margin-bottom: 24px;
|
||||
}
|
||||
|
||||
.quiz-options {
|
||||
list-style: none;
|
||||
}
|
||||
|
||||
.quiz-option {
|
||||
background: white;
|
||||
padding: 16px 20px;
|
||||
margin-bottom: 12px;
|
||||
border-radius: 12px;
|
||||
cursor: pointer;
|
||||
transition: all 0.2s;
|
||||
border: 2px solid transparent;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 12px;
|
||||
}
|
||||
|
||||
.quiz-option:hover {
|
||||
border-color: var(--qx-blue);
|
||||
transform: translateX(4px);
|
||||
}
|
||||
|
||||
.quiz-option.correct {
|
||||
background: var(--qx-green);
|
||||
color: white;
|
||||
border-color: var(--qx-green);
|
||||
}
|
||||
|
||||
.quiz-option.wrong {
|
||||
background: #ff4444;
|
||||
color: white;
|
||||
border-color: #ff4444;
|
||||
}
|
||||
|
||||
.quiz-option.disabled {
|
||||
pointer-events: none;
|
||||
opacity: 0.7;
|
||||
}
|
||||
|
||||
.quiz-letter {
|
||||
width: 32px;
|
||||
height: 32px;
|
||||
border-radius: 50%;
|
||||
background: var(--qx-gray);
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
font-weight: 600;
|
||||
flex-shrink: 0;
|
||||
}
|
||||
|
||||
.quiz-option:hover .quiz-letter {
|
||||
background: var(--qx-blue);
|
||||
color: white;
|
||||
}
|
||||
|
||||
.quiz-option.correct .quiz-letter,
|
||||
.quiz-option.wrong .quiz-letter {
|
||||
background: rgba(255,255,255,0.3);
|
||||
}
|
||||
|
||||
.quiz-feedback {
|
||||
margin-top: 20px;
|
||||
padding: 20px;
|
||||
border-radius: 12px;
|
||||
display: none;
|
||||
font-size: 1rem;
|
||||
}
|
||||
|
||||
.quiz-feedback.show {
|
||||
display: block;
|
||||
}
|
||||
|
||||
.lesson-nav {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
margin-top: 60px;
|
||||
padding-top: 40px;
|
||||
border-top: 2px solid var(--qx-gray);
|
||||
}
|
||||
|
||||
.nav-btn {
|
||||
padding: 14px 28px;
|
||||
border-radius: 10px;
|
||||
text-decoration: none;
|
||||
font-weight: 600;
|
||||
transition: all 0.2s;
|
||||
display: inline-flex;
|
||||
align-items: center;
|
||||
gap: 8px;
|
||||
}
|
||||
|
||||
.nav-btn.prev {
|
||||
background: var(--qx-gray);
|
||||
color: var(--qx-black);
|
||||
}
|
||||
|
||||
.nav-btn.next {
|
||||
background: var(--qx-blue);
|
||||
color: white;
|
||||
}
|
||||
|
||||
.nav-btn:hover {
|
||||
transform: translateY(-2px);
|
||||
box-shadow: 0 4px 12px rgba(0,0,0,0.15);
|
||||
}
|
||||
|
||||
.complete-btn {
|
||||
display: block;
|
||||
width: 100%;
|
||||
max-width: 400px;
|
||||
margin: 48px auto;
|
||||
padding: 18px 32px;
|
||||
background: var(--qx-green);
|
||||
color: white;
|
||||
border: none;
|
||||
border-radius: 12px;
|
||||
font-size: 1.1rem;
|
||||
font-weight: 600;
|
||||
cursor: pointer;
|
||||
transition: all 0.2s;
|
||||
}
|
||||
|
||||
.complete-btn:hover {
|
||||
transform: translateY(-2px);
|
||||
box-shadow: 0 4px 16px rgba(0,200,83,0.3);
|
||||
}
|
||||
|
||||
.complete-btn.completed {
|
||||
background: var(--qx-gray);
|
||||
color: var(--qx-text-muted);
|
||||
cursor: default;
|
||||
}
|
||||
|
||||
@media (max-width: 768px) {
|
||||
.lesson-title { font-size: 1.75rem; }
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<div class="progress-container">
|
||||
<div class="progress-bar">
|
||||
<div class="progress-fill" id="lessonProgress" style="width: 0%"></div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="lesson-container">
|
||||
<header class="lesson-header">
|
||||
<div class="lesson-module">Kom igång — Från registrering till första utbetalning</div>
|
||||
<h1 class="lesson-title">Välkommen till quiXzoom</h1>
|
||||
<div class="lesson-meta">
|
||||
<span>⏱️ 5 min</span>
|
||||
<span>🎯 Nybörjare</span>
|
||||
<span>📚 Introduktion</span>
|
||||
</div>
|
||||
</header>
|
||||
|
||||
<div class="content-block">
|
||||
<p>Som Zoomer är du en viktig del av vår crowdsourcing-plattform. Du fotograferar infrastruktur, fastigheter och miljöer — och får betalt för varje godkänt uppdrag.</p>
|
||||
</div>
|
||||
|
||||
<div class="tip-box">
|
||||
<strong>💡 Tips</strong>
|
||||
<p>• De flesta Zoomers tjänar 150-500 kr per uppdrag</p>
|
||||
<p>• Aktiva Zoomers kan tjäna 8 000-15 000 kr per månad</p>
|
||||
</div>
|
||||
|
||||
<div class="content-block">
|
||||
<h2>Vad du behöver</h2>
|
||||
<ul>
|
||||
<li>Smartphone med kamera (iPhone 12+ eller Android med 12MP+)</li>
|
||||
<li>Bankkonto för utbetalningar</li>
|
||||
<li>ID-handling för verifiering</li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<div class="quiz-container">
|
||||
<div class="quiz-question">Vad behöver du minst för att bli Zoomer?</div>
|
||||
<ul class="quiz-options">
|
||||
<li class="quiz-option" onclick="checkAnswer(this, False)">
|
||||
<span class="quiz-letter">A</span>
|
||||
<span>Professionell kamera och stativ</span>
|
||||
</li>
|
||||
<li class="quiz-option" onclick="checkAnswer(this, True)">
|
||||
<span class="quiz-letter">B</span>
|
||||
<span>Smartphone med kamera och svenskt bankkonto</span>
|
||||
</li>
|
||||
<li class="quiz-option" onclick="checkAnswer(this, False)">
|
||||
<span class="quiz-letter">C</span>
|
||||
<span>Egen bil och körkort</span>
|
||||
</li>
|
||||
</ul>
|
||||
<div class="quiz-feedback" id="quizFeedback"></div>
|
||||
</div>
|
||||
|
||||
<button class="complete-btn" id="completeBtn" onclick="completeLesson()">
|
||||
✅ Markera lektion som klar
|
||||
</button>
|
||||
|
||||
<nav class="lesson-nav">
|
||||
<a href="/academy" class="nav-btn prev">← Tillbaka till Academy</a>
|
||||
<a href="/academy/module1/m1l2" class="nav-btn next">Nästa: Skapa ditt konto och verifiera identitet →</a>
|
||||
</nav>
|
||||
</div>
|
||||
|
||||
<script>
|
||||
const lessonId = 'm1l1';
|
||||
let completedLessons = JSON.parse(localStorage.getItem('academyProgress') || '[]');
|
||||
|
||||
function checkAnswer(element, isCorrect) {
|
||||
const options = document.querySelectorAll('.quiz-option');
|
||||
const feedback = document.getElementById('quizFeedback');
|
||||
|
||||
options.forEach(opt => opt.classList.add('disabled'));
|
||||
|
||||
if (isCorrect) {
|
||||
element.classList.add('correct');
|
||||
feedback.innerHTML = '<strong>✅ Rätt!</strong> Bra jobbat!';
|
||||
feedback.style.background = '#d4edda';
|
||||
feedback.style.color = '#155724';
|
||||
} else {
|
||||
element.classList.add('wrong');
|
||||
feedback.innerHTML = '<strong>❌ Inte riktigt.</strong> Tänk igenom svaret en gång till.';
|
||||
feedback.style.background = '#f8d7da';
|
||||
feedback.style.color = '#721c24';
|
||||
}
|
||||
|
||||
feedback.classList.add('show');
|
||||
}
|
||||
|
||||
function completeLesson() {
|
||||
if (!completedLessons.includes(lessonId)) {
|
||||
completedLessons.push(lessonId);
|
||||
localStorage.setItem('academyProgress', JSON.stringify(completedLessons));
|
||||
|
||||
const btn = document.getElementById('completeBtn');
|
||||
btn.textContent = '✅ Lektion klar!';
|
||||
btn.classList.add('completed');
|
||||
btn.disabled = true;
|
||||
|
||||
btn.style.transform = 'scale(1.05)';
|
||||
setTimeout(() => btn.style.transform = 'scale(1)', 200);
|
||||
}
|
||||
}
|
||||
|
||||
if (completedLessons.includes(lessonId)) {
|
||||
const btn = document.getElementById('completeBtn');
|
||||
btn.textContent = '✅ Lektion klar!';
|
||||
btn.classList.add('completed');
|
||||
btn.disabled = true;
|
||||
}
|
||||
</script>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,413 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="sv">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>Skapa ditt konto och verifiera identitet — quiXzoom Academy</title>
|
||||
<style>
|
||||
:root {
|
||||
--qx-black: #0a0a0a;
|
||||
--qx-white: #ffffff;
|
||||
--qx-blue: #0066FF;
|
||||
--qx-green: #00C853;
|
||||
--qx-gray: #F5F5F7;
|
||||
--qx-dark-gray: #1a1a1a;
|
||||
--qx-text-muted: #6e6e73;
|
||||
--qx-purple: #7B61FF;
|
||||
--qx-orange: #FF6B35;
|
||||
}
|
||||
|
||||
* { margin: 0; padding: 0; box-sizing: border-box; }
|
||||
|
||||
body {
|
||||
font-family: -apple-system, BlinkMacSystemFont, 'SF Pro Display', sans-serif;
|
||||
color: var(--qx-black);
|
||||
background: var(--qx-white);
|
||||
line-height: 1.6;
|
||||
}
|
||||
|
||||
.progress-container {
|
||||
position: sticky;
|
||||
top: 0;
|
||||
background: white;
|
||||
padding: 12px 20px;
|
||||
border-bottom: 1px solid var(--qx-gray);
|
||||
z-index: 100;
|
||||
}
|
||||
|
||||
.progress-bar {
|
||||
max-width: 600px;
|
||||
margin: 0 auto;
|
||||
background: var(--qx-gray);
|
||||
border-radius: 10px;
|
||||
height: 8px;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.progress-fill {
|
||||
background: var(--qx-green);
|
||||
height: 100%;
|
||||
width: 0%;
|
||||
transition: width 0.5s ease;
|
||||
}
|
||||
|
||||
.lesson-container {
|
||||
max-width: 800px;
|
||||
margin: 0 auto;
|
||||
padding: 40px 20px;
|
||||
}
|
||||
|
||||
.lesson-header {
|
||||
margin-bottom: 48px;
|
||||
}
|
||||
|
||||
.lesson-module {
|
||||
color: var(--qx-blue);
|
||||
font-size: 0.875rem;
|
||||
text-transform: uppercase;
|
||||
letter-spacing: 2px;
|
||||
margin-bottom: 8px;
|
||||
}
|
||||
|
||||
.lesson-title {
|
||||
font-size: 2.5rem;
|
||||
margin-bottom: 16px;
|
||||
line-height: 1.2;
|
||||
}
|
||||
|
||||
.lesson-meta {
|
||||
color: var(--qx-text-muted);
|
||||
font-size: 0.9rem;
|
||||
display: flex;
|
||||
gap: 16px;
|
||||
}
|
||||
|
||||
.content-block {
|
||||
margin-bottom: 48px;
|
||||
}
|
||||
|
||||
.content-block h2 {
|
||||
font-size: 1.75rem;
|
||||
margin-bottom: 20px;
|
||||
}
|
||||
|
||||
.content-block p {
|
||||
margin-bottom: 16px;
|
||||
color: #333;
|
||||
font-size: 1.05rem;
|
||||
}
|
||||
|
||||
.content-block ul {
|
||||
margin-left: 24px;
|
||||
margin-bottom: 16px;
|
||||
}
|
||||
|
||||
.content-block li {
|
||||
margin-bottom: 12px;
|
||||
}
|
||||
|
||||
.tip-box {
|
||||
background: #e8f4fd;
|
||||
border-left: 4px solid var(--qx-blue);
|
||||
padding: 24px;
|
||||
margin: 24px 0;
|
||||
border-radius: 0 12px 12px 0;
|
||||
}
|
||||
|
||||
.tip-box strong {
|
||||
color: var(--qx-blue);
|
||||
display: block;
|
||||
margin-bottom: 8px;
|
||||
}
|
||||
|
||||
.warning-box {
|
||||
background: #fff3cd;
|
||||
border-left: 4px solid var(--qx-orange);
|
||||
padding: 24px;
|
||||
margin: 24px 0;
|
||||
border-radius: 0 12px 12px 0;
|
||||
}
|
||||
|
||||
.warning-box strong {
|
||||
color: var(--qx-orange);
|
||||
display: block;
|
||||
margin-bottom: 8px;
|
||||
}
|
||||
|
||||
.example-box {
|
||||
background: var(--qx-gray);
|
||||
padding: 24px;
|
||||
border-radius: 12px;
|
||||
margin: 24px 0;
|
||||
}
|
||||
|
||||
.example-box h4 {
|
||||
margin-bottom: 12px;
|
||||
color: var(--qx-dark-gray);
|
||||
}
|
||||
|
||||
.quiz-container {
|
||||
background: var(--qx-gray);
|
||||
padding: 32px;
|
||||
border-radius: 16px;
|
||||
margin: 32px 0;
|
||||
}
|
||||
|
||||
.quiz-question {
|
||||
font-size: 1.25rem;
|
||||
font-weight: 600;
|
||||
margin-bottom: 24px;
|
||||
}
|
||||
|
||||
.quiz-options {
|
||||
list-style: none;
|
||||
}
|
||||
|
||||
.quiz-option {
|
||||
background: white;
|
||||
padding: 16px 20px;
|
||||
margin-bottom: 12px;
|
||||
border-radius: 12px;
|
||||
cursor: pointer;
|
||||
transition: all 0.2s;
|
||||
border: 2px solid transparent;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 12px;
|
||||
}
|
||||
|
||||
.quiz-option:hover {
|
||||
border-color: var(--qx-blue);
|
||||
transform: translateX(4px);
|
||||
}
|
||||
|
||||
.quiz-option.correct {
|
||||
background: var(--qx-green);
|
||||
color: white;
|
||||
border-color: var(--qx-green);
|
||||
}
|
||||
|
||||
.quiz-option.wrong {
|
||||
background: #ff4444;
|
||||
color: white;
|
||||
border-color: #ff4444;
|
||||
}
|
||||
|
||||
.quiz-option.disabled {
|
||||
pointer-events: none;
|
||||
opacity: 0.7;
|
||||
}
|
||||
|
||||
.quiz-letter {
|
||||
width: 32px;
|
||||
height: 32px;
|
||||
border-radius: 50%;
|
||||
background: var(--qx-gray);
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
font-weight: 600;
|
||||
flex-shrink: 0;
|
||||
}
|
||||
|
||||
.quiz-option:hover .quiz-letter {
|
||||
background: var(--qx-blue);
|
||||
color: white;
|
||||
}
|
||||
|
||||
.quiz-option.correct .quiz-letter,
|
||||
.quiz-option.wrong .quiz-letter {
|
||||
background: rgba(255,255,255,0.3);
|
||||
}
|
||||
|
||||
.quiz-feedback {
|
||||
margin-top: 20px;
|
||||
padding: 20px;
|
||||
border-radius: 12px;
|
||||
display: none;
|
||||
font-size: 1rem;
|
||||
}
|
||||
|
||||
.quiz-feedback.show {
|
||||
display: block;
|
||||
}
|
||||
|
||||
.lesson-nav {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
margin-top: 60px;
|
||||
padding-top: 40px;
|
||||
border-top: 2px solid var(--qx-gray);
|
||||
}
|
||||
|
||||
.nav-btn {
|
||||
padding: 14px 28px;
|
||||
border-radius: 10px;
|
||||
text-decoration: none;
|
||||
font-weight: 600;
|
||||
transition: all 0.2s;
|
||||
display: inline-flex;
|
||||
align-items: center;
|
||||
gap: 8px;
|
||||
}
|
||||
|
||||
.nav-btn.prev {
|
||||
background: var(--qx-gray);
|
||||
color: var(--qx-black);
|
||||
}
|
||||
|
||||
.nav-btn.next {
|
||||
background: var(--qx-blue);
|
||||
color: white;
|
||||
}
|
||||
|
||||
.nav-btn:hover {
|
||||
transform: translateY(-2px);
|
||||
box-shadow: 0 4px 12px rgba(0,0,0,0.15);
|
||||
}
|
||||
|
||||
.complete-btn {
|
||||
display: block;
|
||||
width: 100%;
|
||||
max-width: 400px;
|
||||
margin: 48px auto;
|
||||
padding: 18px 32px;
|
||||
background: var(--qx-green);
|
||||
color: white;
|
||||
border: none;
|
||||
border-radius: 12px;
|
||||
font-size: 1.1rem;
|
||||
font-weight: 600;
|
||||
cursor: pointer;
|
||||
transition: all 0.2s;
|
||||
}
|
||||
|
||||
.complete-btn:hover {
|
||||
transform: translateY(-2px);
|
||||
box-shadow: 0 4px 16px rgba(0,200,83,0.3);
|
||||
}
|
||||
|
||||
.complete-btn.completed {
|
||||
background: var(--qx-gray);
|
||||
color: var(--qx-text-muted);
|
||||
cursor: default;
|
||||
}
|
||||
|
||||
@media (max-width: 768px) {
|
||||
.lesson-title { font-size: 1.75rem; }
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<div class="progress-container">
|
||||
<div class="progress-bar">
|
||||
<div class="progress-fill" id="lessonProgress" style="width: 0%"></div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="lesson-container">
|
||||
<header class="lesson-header">
|
||||
<div class="lesson-module">Kom igång — Från registrering till första utbetalning</div>
|
||||
<h1 class="lesson-title">Skapa ditt konto och verifiera identitet</h1>
|
||||
<div class="lesson-meta">
|
||||
<span>⏱️ 8 min</span>
|
||||
<span>🎯 Nybörjare</span>
|
||||
<span>📚 Video + Quiz</span>
|
||||
</div>
|
||||
</header>
|
||||
|
||||
<div class="content-block">
|
||||
<h2>Steg för steg</h2>
|
||||
<ol>
|
||||
<li><strong>Steg 1:</strong> Ladda ner quiXzoom-appen</li>
|
||||
<li><strong>Steg 2:</strong> Registrera dig med e-post eller telefonnummer</li>
|
||||
<li><strong>Steg 3:</strong> Verifiera din identitet med BankID eller pass</li>
|
||||
<li><strong>Steg 4:</strong> Koppla ditt bankkonto för utbetalningar</li>
|
||||
</ol>
|
||||
</div>
|
||||
|
||||
<div class="warning-box">
|
||||
<strong>⚠️ Viktigt</strong>
|
||||
<p>Verifiering är obligatorisk och tar vanligtvis 1-2 arbetsdagar.</p>
|
||||
</div>
|
||||
|
||||
<div class="quiz-container">
|
||||
<div class="quiz-question">Hur lång tid tar identitetsverifiering?</div>
|
||||
<ul class="quiz-options">
|
||||
<li class="quiz-option" onclick="checkAnswer(this, False)">
|
||||
<span class="quiz-letter">A</span>
|
||||
<span>Direkt</span>
|
||||
</li>
|
||||
<li class="quiz-option" onclick="checkAnswer(this, True)">
|
||||
<span class="quiz-letter">B</span>
|
||||
<span>1-2 arbetsdagar</span>
|
||||
</li>
|
||||
<li class="quiz-option" onclick="checkAnswer(this, False)">
|
||||
<span class="quiz-letter">C</span>
|
||||
<span>1 vecka</span>
|
||||
</li>
|
||||
</ul>
|
||||
<div class="quiz-feedback" id="quizFeedback"></div>
|
||||
</div>
|
||||
|
||||
<button class="complete-btn" id="completeBtn" onclick="completeLesson()">
|
||||
✅ Markera lektion som klar
|
||||
</button>
|
||||
|
||||
<nav class="lesson-nav">
|
||||
<a href="/academy/module1/m1l1" class="nav-btn prev">← Föregående</a>
|
||||
<a href="/academy/module1/m1l3" class="nav-btn next">Nästa: Hitta och acceptera ditt första uppdrag →</a>
|
||||
</nav>
|
||||
</div>
|
||||
|
||||
<script>
|
||||
const lessonId = 'm1l2';
|
||||
let completedLessons = JSON.parse(localStorage.getItem('academyProgress') || '[]');
|
||||
|
||||
function checkAnswer(element, isCorrect) {
|
||||
const options = document.querySelectorAll('.quiz-option');
|
||||
const feedback = document.getElementById('quizFeedback');
|
||||
|
||||
options.forEach(opt => opt.classList.add('disabled'));
|
||||
|
||||
if (isCorrect) {
|
||||
element.classList.add('correct');
|
||||
feedback.innerHTML = '<strong>✅ Rätt!</strong> Bra jobbat!';
|
||||
feedback.style.background = '#d4edda';
|
||||
feedback.style.color = '#155724';
|
||||
} else {
|
||||
element.classList.add('wrong');
|
||||
feedback.innerHTML = '<strong>❌ Inte riktigt.</strong> Tänk igenom svaret en gång till.';
|
||||
feedback.style.background = '#f8d7da';
|
||||
feedback.style.color = '#721c24';
|
||||
}
|
||||
|
||||
feedback.classList.add('show');
|
||||
}
|
||||
|
||||
function completeLesson() {
|
||||
if (!completedLessons.includes(lessonId)) {
|
||||
completedLessons.push(lessonId);
|
||||
localStorage.setItem('academyProgress', JSON.stringify(completedLessons));
|
||||
|
||||
const btn = document.getElementById('completeBtn');
|
||||
btn.textContent = '✅ Lektion klar!';
|
||||
btn.classList.add('completed');
|
||||
btn.disabled = true;
|
||||
|
||||
btn.style.transform = 'scale(1.05)';
|
||||
setTimeout(() => btn.style.transform = 'scale(1)', 200);
|
||||
}
|
||||
}
|
||||
|
||||
if (completedLessons.includes(lessonId)) {
|
||||
const btn = document.getElementById('completeBtn');
|
||||
btn.textContent = '✅ Lektion klar!';
|
||||
btn.classList.add('completed');
|
||||
btn.disabled = true;
|
||||
}
|
||||
</script>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,415 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="sv">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>Hitta och acceptera ditt första uppdrag — quiXzoom Academy</title>
|
||||
<style>
|
||||
:root {
|
||||
--qx-black: #0a0a0a;
|
||||
--qx-white: #ffffff;
|
||||
--qx-blue: #0066FF;
|
||||
--qx-green: #00C853;
|
||||
--qx-gray: #F5F5F7;
|
||||
--qx-dark-gray: #1a1a1a;
|
||||
--qx-text-muted: #6e6e73;
|
||||
--qx-purple: #7B61FF;
|
||||
--qx-orange: #FF6B35;
|
||||
}
|
||||
|
||||
* { margin: 0; padding: 0; box-sizing: border-box; }
|
||||
|
||||
body {
|
||||
font-family: -apple-system, BlinkMacSystemFont, 'SF Pro Display', sans-serif;
|
||||
color: var(--qx-black);
|
||||
background: var(--qx-white);
|
||||
line-height: 1.6;
|
||||
}
|
||||
|
||||
.progress-container {
|
||||
position: sticky;
|
||||
top: 0;
|
||||
background: white;
|
||||
padding: 12px 20px;
|
||||
border-bottom: 1px solid var(--qx-gray);
|
||||
z-index: 100;
|
||||
}
|
||||
|
||||
.progress-bar {
|
||||
max-width: 600px;
|
||||
margin: 0 auto;
|
||||
background: var(--qx-gray);
|
||||
border-radius: 10px;
|
||||
height: 8px;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.progress-fill {
|
||||
background: var(--qx-green);
|
||||
height: 100%;
|
||||
width: 0%;
|
||||
transition: width 0.5s ease;
|
||||
}
|
||||
|
||||
.lesson-container {
|
||||
max-width: 800px;
|
||||
margin: 0 auto;
|
||||
padding: 40px 20px;
|
||||
}
|
||||
|
||||
.lesson-header {
|
||||
margin-bottom: 48px;
|
||||
}
|
||||
|
||||
.lesson-module {
|
||||
color: var(--qx-blue);
|
||||
font-size: 0.875rem;
|
||||
text-transform: uppercase;
|
||||
letter-spacing: 2px;
|
||||
margin-bottom: 8px;
|
||||
}
|
||||
|
||||
.lesson-title {
|
||||
font-size: 2.5rem;
|
||||
margin-bottom: 16px;
|
||||
line-height: 1.2;
|
||||
}
|
||||
|
||||
.lesson-meta {
|
||||
color: var(--qx-text-muted);
|
||||
font-size: 0.9rem;
|
||||
display: flex;
|
||||
gap: 16px;
|
||||
}
|
||||
|
||||
.content-block {
|
||||
margin-bottom: 48px;
|
||||
}
|
||||
|
||||
.content-block h2 {
|
||||
font-size: 1.75rem;
|
||||
margin-bottom: 20px;
|
||||
}
|
||||
|
||||
.content-block p {
|
||||
margin-bottom: 16px;
|
||||
color: #333;
|
||||
font-size: 1.05rem;
|
||||
}
|
||||
|
||||
.content-block ul {
|
||||
margin-left: 24px;
|
||||
margin-bottom: 16px;
|
||||
}
|
||||
|
||||
.content-block li {
|
||||
margin-bottom: 12px;
|
||||
}
|
||||
|
||||
.tip-box {
|
||||
background: #e8f4fd;
|
||||
border-left: 4px solid var(--qx-blue);
|
||||
padding: 24px;
|
||||
margin: 24px 0;
|
||||
border-radius: 0 12px 12px 0;
|
||||
}
|
||||
|
||||
.tip-box strong {
|
||||
color: var(--qx-blue);
|
||||
display: block;
|
||||
margin-bottom: 8px;
|
||||
}
|
||||
|
||||
.warning-box {
|
||||
background: #fff3cd;
|
||||
border-left: 4px solid var(--qx-orange);
|
||||
padding: 24px;
|
||||
margin: 24px 0;
|
||||
border-radius: 0 12px 12px 0;
|
||||
}
|
||||
|
||||
.warning-box strong {
|
||||
color: var(--qx-orange);
|
||||
display: block;
|
||||
margin-bottom: 8px;
|
||||
}
|
||||
|
||||
.example-box {
|
||||
background: var(--qx-gray);
|
||||
padding: 24px;
|
||||
border-radius: 12px;
|
||||
margin: 24px 0;
|
||||
}
|
||||
|
||||
.example-box h4 {
|
||||
margin-bottom: 12px;
|
||||
color: var(--qx-dark-gray);
|
||||
}
|
||||
|
||||
.quiz-container {
|
||||
background: var(--qx-gray);
|
||||
padding: 32px;
|
||||
border-radius: 16px;
|
||||
margin: 32px 0;
|
||||
}
|
||||
|
||||
.quiz-question {
|
||||
font-size: 1.25rem;
|
||||
font-weight: 600;
|
||||
margin-bottom: 24px;
|
||||
}
|
||||
|
||||
.quiz-options {
|
||||
list-style: none;
|
||||
}
|
||||
|
||||
.quiz-option {
|
||||
background: white;
|
||||
padding: 16px 20px;
|
||||
margin-bottom: 12px;
|
||||
border-radius: 12px;
|
||||
cursor: pointer;
|
||||
transition: all 0.2s;
|
||||
border: 2px solid transparent;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 12px;
|
||||
}
|
||||
|
||||
.quiz-option:hover {
|
||||
border-color: var(--qx-blue);
|
||||
transform: translateX(4px);
|
||||
}
|
||||
|
||||
.quiz-option.correct {
|
||||
background: var(--qx-green);
|
||||
color: white;
|
||||
border-color: var(--qx-green);
|
||||
}
|
||||
|
||||
.quiz-option.wrong {
|
||||
background: #ff4444;
|
||||
color: white;
|
||||
border-color: #ff4444;
|
||||
}
|
||||
|
||||
.quiz-option.disabled {
|
||||
pointer-events: none;
|
||||
opacity: 0.7;
|
||||
}
|
||||
|
||||
.quiz-letter {
|
||||
width: 32px;
|
||||
height: 32px;
|
||||
border-radius: 50%;
|
||||
background: var(--qx-gray);
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
font-weight: 600;
|
||||
flex-shrink: 0;
|
||||
}
|
||||
|
||||
.quiz-option:hover .quiz-letter {
|
||||
background: var(--qx-blue);
|
||||
color: white;
|
||||
}
|
||||
|
||||
.quiz-option.correct .quiz-letter,
|
||||
.quiz-option.wrong .quiz-letter {
|
||||
background: rgba(255,255,255,0.3);
|
||||
}
|
||||
|
||||
.quiz-feedback {
|
||||
margin-top: 20px;
|
||||
padding: 20px;
|
||||
border-radius: 12px;
|
||||
display: none;
|
||||
font-size: 1rem;
|
||||
}
|
||||
|
||||
.quiz-feedback.show {
|
||||
display: block;
|
||||
}
|
||||
|
||||
.lesson-nav {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
margin-top: 60px;
|
||||
padding-top: 40px;
|
||||
border-top: 2px solid var(--qx-gray);
|
||||
}
|
||||
|
||||
.nav-btn {
|
||||
padding: 14px 28px;
|
||||
border-radius: 10px;
|
||||
text-decoration: none;
|
||||
font-weight: 600;
|
||||
transition: all 0.2s;
|
||||
display: inline-flex;
|
||||
align-items: center;
|
||||
gap: 8px;
|
||||
}
|
||||
|
||||
.nav-btn.prev {
|
||||
background: var(--qx-gray);
|
||||
color: var(--qx-black);
|
||||
}
|
||||
|
||||
.nav-btn.next {
|
||||
background: var(--qx-blue);
|
||||
color: white;
|
||||
}
|
||||
|
||||
.nav-btn:hover {
|
||||
transform: translateY(-2px);
|
||||
box-shadow: 0 4px 12px rgba(0,0,0,0.15);
|
||||
}
|
||||
|
||||
.complete-btn {
|
||||
display: block;
|
||||
width: 100%;
|
||||
max-width: 400px;
|
||||
margin: 48px auto;
|
||||
padding: 18px 32px;
|
||||
background: var(--qx-green);
|
||||
color: white;
|
||||
border: none;
|
||||
border-radius: 12px;
|
||||
font-size: 1.1rem;
|
||||
font-weight: 600;
|
||||
cursor: pointer;
|
||||
transition: all 0.2s;
|
||||
}
|
||||
|
||||
.complete-btn:hover {
|
||||
transform: translateY(-2px);
|
||||
box-shadow: 0 4px 16px rgba(0,200,83,0.3);
|
||||
}
|
||||
|
||||
.complete-btn.completed {
|
||||
background: var(--qx-gray);
|
||||
color: var(--qx-text-muted);
|
||||
cursor: default;
|
||||
}
|
||||
|
||||
@media (max-width: 768px) {
|
||||
.lesson-title { font-size: 1.75rem; }
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<div class="progress-container">
|
||||
<div class="progress-bar">
|
||||
<div class="progress-fill" id="lessonProgress" style="width: 0%"></div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="lesson-container">
|
||||
<header class="lesson-header">
|
||||
<div class="lesson-module">Kom igång — Från registrering till första utbetalning</div>
|
||||
<h1 class="lesson-title">Hitta och acceptera ditt första uppdrag</h1>
|
||||
<div class="lesson-meta">
|
||||
<span>⏱️ 10 min</span>
|
||||
<span>🎯 Nybörjare</span>
|
||||
<span>📚 Interaktiv guide</span>
|
||||
</div>
|
||||
</header>
|
||||
|
||||
<div class="tip-box">
|
||||
<strong>💡 Tips</strong>
|
||||
<p>• Börja med uppdrag nära dig</p>
|
||||
<p>• Läs ALLA instruktioner innan du accepterar</p>
|
||||
<p>• Kolla deadline — du måste leverera i tid</p>
|
||||
</div>
|
||||
|
||||
<div class="content-block">
|
||||
<h2>Steg för steg</h2>
|
||||
<ol>
|
||||
<li><strong>Steg 1:</strong> Öppna kartan i appen</li>
|
||||
<li><strong>Steg 2:</strong> Se tillgängliga uppdrag nära dig</li>
|
||||
<li><strong>Steg 3:</strong> Läs instruktionerna noggrant</li>
|
||||
<li><strong>Steg 4:</strong> Acceptera uppdraget innan deadline</li>
|
||||
</ol>
|
||||
</div>
|
||||
|
||||
<div class="quiz-container">
|
||||
<div class="quiz-question">Vad ska du göra INNAN du accepterar ett uppdrag?</div>
|
||||
<ul class="quiz-options">
|
||||
<li class="quiz-option" onclick="checkAnswer(this, False)">
|
||||
<span class="quiz-letter">A</span>
|
||||
<span>Börja fotografera direkt</span>
|
||||
</li>
|
||||
<li class="quiz-option" onclick="checkAnswer(this, True)">
|
||||
<span class="quiz-letter">B</span>
|
||||
<span>Läs instruktionerna noggrant</span>
|
||||
</li>
|
||||
<li class="quiz-option" onclick="checkAnswer(this, False)">
|
||||
<span class="quiz-letter">C</span>
|
||||
<span>Ring kunden</span>
|
||||
</li>
|
||||
</ul>
|
||||
<div class="quiz-feedback" id="quizFeedback"></div>
|
||||
</div>
|
||||
|
||||
<button class="complete-btn" id="completeBtn" onclick="completeLesson()">
|
||||
✅ Markera lektion som klar
|
||||
</button>
|
||||
|
||||
<nav class="lesson-nav">
|
||||
<a href="/academy/module1/m1l2" class="nav-btn prev">← Föregående</a>
|
||||
<a href="/academy/module1/m1l4" class="nav-btn next">Nästa: Ta dina första bilder och skicka in →</a>
|
||||
</nav>
|
||||
</div>
|
||||
|
||||
<script>
|
||||
const lessonId = 'm1l3';
|
||||
let completedLessons = JSON.parse(localStorage.getItem('academyProgress') || '[]');
|
||||
|
||||
function checkAnswer(element, isCorrect) {
|
||||
const options = document.querySelectorAll('.quiz-option');
|
||||
const feedback = document.getElementById('quizFeedback');
|
||||
|
||||
options.forEach(opt => opt.classList.add('disabled'));
|
||||
|
||||
if (isCorrect) {
|
||||
element.classList.add('correct');
|
||||
feedback.innerHTML = '<strong>✅ Rätt!</strong> Bra jobbat!';
|
||||
feedback.style.background = '#d4edda';
|
||||
feedback.style.color = '#155724';
|
||||
} else {
|
||||
element.classList.add('wrong');
|
||||
feedback.innerHTML = '<strong>❌ Inte riktigt.</strong> Tänk igenom svaret en gång till.';
|
||||
feedback.style.background = '#f8d7da';
|
||||
feedback.style.color = '#721c24';
|
||||
}
|
||||
|
||||
feedback.classList.add('show');
|
||||
}
|
||||
|
||||
function completeLesson() {
|
||||
if (!completedLessons.includes(lessonId)) {
|
||||
completedLessons.push(lessonId);
|
||||
localStorage.setItem('academyProgress', JSON.stringify(completedLessons));
|
||||
|
||||
const btn = document.getElementById('completeBtn');
|
||||
btn.textContent = '✅ Lektion klar!';
|
||||
btn.classList.add('completed');
|
||||
btn.disabled = true;
|
||||
|
||||
btn.style.transform = 'scale(1.05)';
|
||||
setTimeout(() => btn.style.transform = 'scale(1)', 200);
|
||||
}
|
||||
}
|
||||
|
||||
if (completedLessons.includes(lessonId)) {
|
||||
const btn = document.getElementById('completeBtn');
|
||||
btn.textContent = '✅ Lektion klar!';
|
||||
btn.classList.add('completed');
|
||||
btn.disabled = true;
|
||||
}
|
||||
</script>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,413 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="sv">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>Ta dina första bilder och skicka in — quiXzoom Academy</title>
|
||||
<style>
|
||||
:root {
|
||||
--qx-black: #0a0a0a;
|
||||
--qx-white: #ffffff;
|
||||
--qx-blue: #0066FF;
|
||||
--qx-green: #00C853;
|
||||
--qx-gray: #F5F5F7;
|
||||
--qx-dark-gray: #1a1a1a;
|
||||
--qx-text-muted: #6e6e73;
|
||||
--qx-purple: #7B61FF;
|
||||
--qx-orange: #FF6B35;
|
||||
}
|
||||
|
||||
* { margin: 0; padding: 0; box-sizing: border-box; }
|
||||
|
||||
body {
|
||||
font-family: -apple-system, BlinkMacSystemFont, 'SF Pro Display', sans-serif;
|
||||
color: var(--qx-black);
|
||||
background: var(--qx-white);
|
||||
line-height: 1.6;
|
||||
}
|
||||
|
||||
.progress-container {
|
||||
position: sticky;
|
||||
top: 0;
|
||||
background: white;
|
||||
padding: 12px 20px;
|
||||
border-bottom: 1px solid var(--qx-gray);
|
||||
z-index: 100;
|
||||
}
|
||||
|
||||
.progress-bar {
|
||||
max-width: 600px;
|
||||
margin: 0 auto;
|
||||
background: var(--qx-gray);
|
||||
border-radius: 10px;
|
||||
height: 8px;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.progress-fill {
|
||||
background: var(--qx-green);
|
||||
height: 100%;
|
||||
width: 0%;
|
||||
transition: width 0.5s ease;
|
||||
}
|
||||
|
||||
.lesson-container {
|
||||
max-width: 800px;
|
||||
margin: 0 auto;
|
||||
padding: 40px 20px;
|
||||
}
|
||||
|
||||
.lesson-header {
|
||||
margin-bottom: 48px;
|
||||
}
|
||||
|
||||
.lesson-module {
|
||||
color: var(--qx-blue);
|
||||
font-size: 0.875rem;
|
||||
text-transform: uppercase;
|
||||
letter-spacing: 2px;
|
||||
margin-bottom: 8px;
|
||||
}
|
||||
|
||||
.lesson-title {
|
||||
font-size: 2.5rem;
|
||||
margin-bottom: 16px;
|
||||
line-height: 1.2;
|
||||
}
|
||||
|
||||
.lesson-meta {
|
||||
color: var(--qx-text-muted);
|
||||
font-size: 0.9rem;
|
||||
display: flex;
|
||||
gap: 16px;
|
||||
}
|
||||
|
||||
.content-block {
|
||||
margin-bottom: 48px;
|
||||
}
|
||||
|
||||
.content-block h2 {
|
||||
font-size: 1.75rem;
|
||||
margin-bottom: 20px;
|
||||
}
|
||||
|
||||
.content-block p {
|
||||
margin-bottom: 16px;
|
||||
color: #333;
|
||||
font-size: 1.05rem;
|
||||
}
|
||||
|
||||
.content-block ul {
|
||||
margin-left: 24px;
|
||||
margin-bottom: 16px;
|
||||
}
|
||||
|
||||
.content-block li {
|
||||
margin-bottom: 12px;
|
||||
}
|
||||
|
||||
.tip-box {
|
||||
background: #e8f4fd;
|
||||
border-left: 4px solid var(--qx-blue);
|
||||
padding: 24px;
|
||||
margin: 24px 0;
|
||||
border-radius: 0 12px 12px 0;
|
||||
}
|
||||
|
||||
.tip-box strong {
|
||||
color: var(--qx-blue);
|
||||
display: block;
|
||||
margin-bottom: 8px;
|
||||
}
|
||||
|
||||
.warning-box {
|
||||
background: #fff3cd;
|
||||
border-left: 4px solid var(--qx-orange);
|
||||
padding: 24px;
|
||||
margin: 24px 0;
|
||||
border-radius: 0 12px 12px 0;
|
||||
}
|
||||
|
||||
.warning-box strong {
|
||||
color: var(--qx-orange);
|
||||
display: block;
|
||||
margin-bottom: 8px;
|
||||
}
|
||||
|
||||
.example-box {
|
||||
background: var(--qx-gray);
|
||||
padding: 24px;
|
||||
border-radius: 12px;
|
||||
margin: 24px 0;
|
||||
}
|
||||
|
||||
.example-box h4 {
|
||||
margin-bottom: 12px;
|
||||
color: var(--qx-dark-gray);
|
||||
}
|
||||
|
||||
.quiz-container {
|
||||
background: var(--qx-gray);
|
||||
padding: 32px;
|
||||
border-radius: 16px;
|
||||
margin: 32px 0;
|
||||
}
|
||||
|
||||
.quiz-question {
|
||||
font-size: 1.25rem;
|
||||
font-weight: 600;
|
||||
margin-bottom: 24px;
|
||||
}
|
||||
|
||||
.quiz-options {
|
||||
list-style: none;
|
||||
}
|
||||
|
||||
.quiz-option {
|
||||
background: white;
|
||||
padding: 16px 20px;
|
||||
margin-bottom: 12px;
|
||||
border-radius: 12px;
|
||||
cursor: pointer;
|
||||
transition: all 0.2s;
|
||||
border: 2px solid transparent;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 12px;
|
||||
}
|
||||
|
||||
.quiz-option:hover {
|
||||
border-color: var(--qx-blue);
|
||||
transform: translateX(4px);
|
||||
}
|
||||
|
||||
.quiz-option.correct {
|
||||
background: var(--qx-green);
|
||||
color: white;
|
||||
border-color: var(--qx-green);
|
||||
}
|
||||
|
||||
.quiz-option.wrong {
|
||||
background: #ff4444;
|
||||
color: white;
|
||||
border-color: #ff4444;
|
||||
}
|
||||
|
||||
.quiz-option.disabled {
|
||||
pointer-events: none;
|
||||
opacity: 0.7;
|
||||
}
|
||||
|
||||
.quiz-letter {
|
||||
width: 32px;
|
||||
height: 32px;
|
||||
border-radius: 50%;
|
||||
background: var(--qx-gray);
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
font-weight: 600;
|
||||
flex-shrink: 0;
|
||||
}
|
||||
|
||||
.quiz-option:hover .quiz-letter {
|
||||
background: var(--qx-blue);
|
||||
color: white;
|
||||
}
|
||||
|
||||
.quiz-option.correct .quiz-letter,
|
||||
.quiz-option.wrong .quiz-letter {
|
||||
background: rgba(255,255,255,0.3);
|
||||
}
|
||||
|
||||
.quiz-feedback {
|
||||
margin-top: 20px;
|
||||
padding: 20px;
|
||||
border-radius: 12px;
|
||||
display: none;
|
||||
font-size: 1rem;
|
||||
}
|
||||
|
||||
.quiz-feedback.show {
|
||||
display: block;
|
||||
}
|
||||
|
||||
.lesson-nav {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
margin-top: 60px;
|
||||
padding-top: 40px;
|
||||
border-top: 2px solid var(--qx-gray);
|
||||
}
|
||||
|
||||
.nav-btn {
|
||||
padding: 14px 28px;
|
||||
border-radius: 10px;
|
||||
text-decoration: none;
|
||||
font-weight: 600;
|
||||
transition: all 0.2s;
|
||||
display: inline-flex;
|
||||
align-items: center;
|
||||
gap: 8px;
|
||||
}
|
||||
|
||||
.nav-btn.prev {
|
||||
background: var(--qx-gray);
|
||||
color: var(--qx-black);
|
||||
}
|
||||
|
||||
.nav-btn.next {
|
||||
background: var(--qx-blue);
|
||||
color: white;
|
||||
}
|
||||
|
||||
.nav-btn:hover {
|
||||
transform: translateY(-2px);
|
||||
box-shadow: 0 4px 12px rgba(0,0,0,0.15);
|
||||
}
|
||||
|
||||
.complete-btn {
|
||||
display: block;
|
||||
width: 100%;
|
||||
max-width: 400px;
|
||||
margin: 48px auto;
|
||||
padding: 18px 32px;
|
||||
background: var(--qx-green);
|
||||
color: white;
|
||||
border: none;
|
||||
border-radius: 12px;
|
||||
font-size: 1.1rem;
|
||||
font-weight: 600;
|
||||
cursor: pointer;
|
||||
transition: all 0.2s;
|
||||
}
|
||||
|
||||
.complete-btn:hover {
|
||||
transform: translateY(-2px);
|
||||
box-shadow: 0 4px 16px rgba(0,200,83,0.3);
|
||||
}
|
||||
|
||||
.complete-btn.completed {
|
||||
background: var(--qx-gray);
|
||||
color: var(--qx-text-muted);
|
||||
cursor: default;
|
||||
}
|
||||
|
||||
@media (max-width: 768px) {
|
||||
.lesson-title { font-size: 1.75rem; }
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<div class="progress-container">
|
||||
<div class="progress-bar">
|
||||
<div class="progress-fill" id="lessonProgress" style="width: 0%"></div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="lesson-container">
|
||||
<header class="lesson-header">
|
||||
<div class="lesson-module">Kom igång — Från registrering till första utbetalning</div>
|
||||
<h1 class="lesson-title">Ta dina första bilder och skicka in</h1>
|
||||
<div class="lesson-meta">
|
||||
<span>⏱️ 12 min</span>
|
||||
<span>🎯 Nybörjare</span>
|
||||
<span>📚 Praktisk övning</span>
|
||||
</div>
|
||||
</header>
|
||||
|
||||
<div class="content-block">
|
||||
<h2>Steg för steg</h2>
|
||||
<ol>
|
||||
<li><strong>Steg 1:</strong> Följ instruktionerna exakt</li>
|
||||
<li><strong>Steg 2:</strong> Ta bilder från rätt vinklar</li>
|
||||
<li><strong>Steg 3:</strong> Kolla att GPS är aktiverat</li>
|
||||
<li><strong>Steg 4:</strong> Skicka in innan deadline</li>
|
||||
</ol>
|
||||
</div>
|
||||
|
||||
<div class="warning-box">
|
||||
<strong>⚠️ Viktigt</strong>
|
||||
<p>Bilder som inte följer instruktionerna avvisas. Du kan komplettera inom 48 timmar.</p>
|
||||
</div>
|
||||
|
||||
<div class="quiz-container">
|
||||
<div class="quiz-question">Hur lång tid har du på dig att komplettera avvisade bilder?</div>
|
||||
<ul class="quiz-options">
|
||||
<li class="quiz-option" onclick="checkAnswer(this, False)">
|
||||
<span class="quiz-letter">A</span>
|
||||
<span>12 timmar</span>
|
||||
</li>
|
||||
<li class="quiz-option" onclick="checkAnswer(this, True)">
|
||||
<span class="quiz-letter">B</span>
|
||||
<span>48 timmar</span>
|
||||
</li>
|
||||
<li class="quiz-option" onclick="checkAnswer(this, False)">
|
||||
<span class="quiz-letter">C</span>
|
||||
<span>1 vecka</span>
|
||||
</li>
|
||||
</ul>
|
||||
<div class="quiz-feedback" id="quizFeedback"></div>
|
||||
</div>
|
||||
|
||||
<button class="complete-btn" id="completeBtn" onclick="completeLesson()">
|
||||
✅ Markera lektion som klar
|
||||
</button>
|
||||
|
||||
<nav class="lesson-nav">
|
||||
<a href="/academy/module1/m1l3" class="nav-btn prev">← Föregående</a>
|
||||
<a href="/academy/module2/m2l1" class="nav-btn next">Nästa: AI-granskning — vad tittar den på? →</a>
|
||||
</nav>
|
||||
</div>
|
||||
|
||||
<script>
|
||||
const lessonId = 'm1l4';
|
||||
let completedLessons = JSON.parse(localStorage.getItem('academyProgress') || '[]');
|
||||
|
||||
function checkAnswer(element, isCorrect) {
|
||||
const options = document.querySelectorAll('.quiz-option');
|
||||
const feedback = document.getElementById('quizFeedback');
|
||||
|
||||
options.forEach(opt => opt.classList.add('disabled'));
|
||||
|
||||
if (isCorrect) {
|
||||
element.classList.add('correct');
|
||||
feedback.innerHTML = '<strong>✅ Rätt!</strong> Bra jobbat!';
|
||||
feedback.style.background = '#d4edda';
|
||||
feedback.style.color = '#155724';
|
||||
} else {
|
||||
element.classList.add('wrong');
|
||||
feedback.innerHTML = '<strong>❌ Inte riktigt.</strong> Tänk igenom svaret en gång till.';
|
||||
feedback.style.background = '#f8d7da';
|
||||
feedback.style.color = '#721c24';
|
||||
}
|
||||
|
||||
feedback.classList.add('show');
|
||||
}
|
||||
|
||||
function completeLesson() {
|
||||
if (!completedLessons.includes(lessonId)) {
|
||||
completedLessons.push(lessonId);
|
||||
localStorage.setItem('academyProgress', JSON.stringify(completedLessons));
|
||||
|
||||
const btn = document.getElementById('completeBtn');
|
||||
btn.textContent = '✅ Lektion klar!';
|
||||
btn.classList.add('completed');
|
||||
btn.disabled = true;
|
||||
|
||||
btn.style.transform = 'scale(1.05)';
|
||||
setTimeout(() => btn.style.transform = 'scale(1)', 200);
|
||||
}
|
||||
}
|
||||
|
||||
if (completedLessons.includes(lessonId)) {
|
||||
const btn = document.getElementById('completeBtn');
|
||||
btn.textContent = '✅ Lektion klar!';
|
||||
btn.classList.add('completed');
|
||||
btn.disabled = true;
|
||||
}
|
||||
</script>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,417 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="sv">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>AI-granskning — vad tittar den på? — quiXzoom Academy</title>
|
||||
<style>
|
||||
:root {
|
||||
--qx-black: #0a0a0a;
|
||||
--qx-white: #ffffff;
|
||||
--qx-blue: #0066FF;
|
||||
--qx-green: #00C853;
|
||||
--qx-gray: #F5F5F7;
|
||||
--qx-dark-gray: #1a1a1a;
|
||||
--qx-text-muted: #6e6e73;
|
||||
--qx-purple: #7B61FF;
|
||||
--qx-orange: #FF6B35;
|
||||
}
|
||||
|
||||
* { margin: 0; padding: 0; box-sizing: border-box; }
|
||||
|
||||
body {
|
||||
font-family: -apple-system, BlinkMacSystemFont, 'SF Pro Display', sans-serif;
|
||||
color: var(--qx-black);
|
||||
background: var(--qx-white);
|
||||
line-height: 1.6;
|
||||
}
|
||||
|
||||
.progress-container {
|
||||
position: sticky;
|
||||
top: 0;
|
||||
background: white;
|
||||
padding: 12px 20px;
|
||||
border-bottom: 1px solid var(--qx-gray);
|
||||
z-index: 100;
|
||||
}
|
||||
|
||||
.progress-bar {
|
||||
max-width: 600px;
|
||||
margin: 0 auto;
|
||||
background: var(--qx-gray);
|
||||
border-radius: 10px;
|
||||
height: 8px;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.progress-fill {
|
||||
background: var(--qx-green);
|
||||
height: 100%;
|
||||
width: 0%;
|
||||
transition: width 0.5s ease;
|
||||
}
|
||||
|
||||
.lesson-container {
|
||||
max-width: 800px;
|
||||
margin: 0 auto;
|
||||
padding: 40px 20px;
|
||||
}
|
||||
|
||||
.lesson-header {
|
||||
margin-bottom: 48px;
|
||||
}
|
||||
|
||||
.lesson-module {
|
||||
color: var(--qx-blue);
|
||||
font-size: 0.875rem;
|
||||
text-transform: uppercase;
|
||||
letter-spacing: 2px;
|
||||
margin-bottom: 8px;
|
||||
}
|
||||
|
||||
.lesson-title {
|
||||
font-size: 2.5rem;
|
||||
margin-bottom: 16px;
|
||||
line-height: 1.2;
|
||||
}
|
||||
|
||||
.lesson-meta {
|
||||
color: var(--qx-text-muted);
|
||||
font-size: 0.9rem;
|
||||
display: flex;
|
||||
gap: 16px;
|
||||
}
|
||||
|
||||
.content-block {
|
||||
margin-bottom: 48px;
|
||||
}
|
||||
|
||||
.content-block h2 {
|
||||
font-size: 1.75rem;
|
||||
margin-bottom: 20px;
|
||||
}
|
||||
|
||||
.content-block p {
|
||||
margin-bottom: 16px;
|
||||
color: #333;
|
||||
font-size: 1.05rem;
|
||||
}
|
||||
|
||||
.content-block ul {
|
||||
margin-left: 24px;
|
||||
margin-bottom: 16px;
|
||||
}
|
||||
|
||||
.content-block li {
|
||||
margin-bottom: 12px;
|
||||
}
|
||||
|
||||
.tip-box {
|
||||
background: #e8f4fd;
|
||||
border-left: 4px solid var(--qx-blue);
|
||||
padding: 24px;
|
||||
margin: 24px 0;
|
||||
border-radius: 0 12px 12px 0;
|
||||
}
|
||||
|
||||
.tip-box strong {
|
||||
color: var(--qx-blue);
|
||||
display: block;
|
||||
margin-bottom: 8px;
|
||||
}
|
||||
|
||||
.warning-box {
|
||||
background: #fff3cd;
|
||||
border-left: 4px solid var(--qx-orange);
|
||||
padding: 24px;
|
||||
margin: 24px 0;
|
||||
border-radius: 0 12px 12px 0;
|
||||
}
|
||||
|
||||
.warning-box strong {
|
||||
color: var(--qx-orange);
|
||||
display: block;
|
||||
margin-bottom: 8px;
|
||||
}
|
||||
|
||||
.example-box {
|
||||
background: var(--qx-gray);
|
||||
padding: 24px;
|
||||
border-radius: 12px;
|
||||
margin: 24px 0;
|
||||
}
|
||||
|
||||
.example-box h4 {
|
||||
margin-bottom: 12px;
|
||||
color: var(--qx-dark-gray);
|
||||
}
|
||||
|
||||
.quiz-container {
|
||||
background: var(--qx-gray);
|
||||
padding: 32px;
|
||||
border-radius: 16px;
|
||||
margin: 32px 0;
|
||||
}
|
||||
|
||||
.quiz-question {
|
||||
font-size: 1.25rem;
|
||||
font-weight: 600;
|
||||
margin-bottom: 24px;
|
||||
}
|
||||
|
||||
.quiz-options {
|
||||
list-style: none;
|
||||
}
|
||||
|
||||
.quiz-option {
|
||||
background: white;
|
||||
padding: 16px 20px;
|
||||
margin-bottom: 12px;
|
||||
border-radius: 12px;
|
||||
cursor: pointer;
|
||||
transition: all 0.2s;
|
||||
border: 2px solid transparent;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 12px;
|
||||
}
|
||||
|
||||
.quiz-option:hover {
|
||||
border-color: var(--qx-blue);
|
||||
transform: translateX(4px);
|
||||
}
|
||||
|
||||
.quiz-option.correct {
|
||||
background: var(--qx-green);
|
||||
color: white;
|
||||
border-color: var(--qx-green);
|
||||
}
|
||||
|
||||
.quiz-option.wrong {
|
||||
background: #ff4444;
|
||||
color: white;
|
||||
border-color: #ff4444;
|
||||
}
|
||||
|
||||
.quiz-option.disabled {
|
||||
pointer-events: none;
|
||||
opacity: 0.7;
|
||||
}
|
||||
|
||||
.quiz-letter {
|
||||
width: 32px;
|
||||
height: 32px;
|
||||
border-radius: 50%;
|
||||
background: var(--qx-gray);
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
font-weight: 600;
|
||||
flex-shrink: 0;
|
||||
}
|
||||
|
||||
.quiz-option:hover .quiz-letter {
|
||||
background: var(--qx-blue);
|
||||
color: white;
|
||||
}
|
||||
|
||||
.quiz-option.correct .quiz-letter,
|
||||
.quiz-option.wrong .quiz-letter {
|
||||
background: rgba(255,255,255,0.3);
|
||||
}
|
||||
|
||||
.quiz-feedback {
|
||||
margin-top: 20px;
|
||||
padding: 20px;
|
||||
border-radius: 12px;
|
||||
display: none;
|
||||
font-size: 1rem;
|
||||
}
|
||||
|
||||
.quiz-feedback.show {
|
||||
display: block;
|
||||
}
|
||||
|
||||
.lesson-nav {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
margin-top: 60px;
|
||||
padding-top: 40px;
|
||||
border-top: 2px solid var(--qx-gray);
|
||||
}
|
||||
|
||||
.nav-btn {
|
||||
padding: 14px 28px;
|
||||
border-radius: 10px;
|
||||
text-decoration: none;
|
||||
font-weight: 600;
|
||||
transition: all 0.2s;
|
||||
display: inline-flex;
|
||||
align-items: center;
|
||||
gap: 8px;
|
||||
}
|
||||
|
||||
.nav-btn.prev {
|
||||
background: var(--qx-gray);
|
||||
color: var(--qx-black);
|
||||
}
|
||||
|
||||
.nav-btn.next {
|
||||
background: var(--qx-blue);
|
||||
color: white;
|
||||
}
|
||||
|
||||
.nav-btn:hover {
|
||||
transform: translateY(-2px);
|
||||
box-shadow: 0 4px 12px rgba(0,0,0,0.15);
|
||||
}
|
||||
|
||||
.complete-btn {
|
||||
display: block;
|
||||
width: 100%;
|
||||
max-width: 400px;
|
||||
margin: 48px auto;
|
||||
padding: 18px 32px;
|
||||
background: var(--qx-green);
|
||||
color: white;
|
||||
border: none;
|
||||
border-radius: 12px;
|
||||
font-size: 1.1rem;
|
||||
font-weight: 600;
|
||||
cursor: pointer;
|
||||
transition: all 0.2s;
|
||||
}
|
||||
|
||||
.complete-btn:hover {
|
||||
transform: translateY(-2px);
|
||||
box-shadow: 0 4px 16px rgba(0,200,83,0.3);
|
||||
}
|
||||
|
||||
.complete-btn.completed {
|
||||
background: var(--qx-gray);
|
||||
color: var(--qx-text-muted);
|
||||
cursor: default;
|
||||
}
|
||||
|
||||
@media (max-width: 768px) {
|
||||
.lesson-title { font-size: 1.75rem; }
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<div class="progress-container">
|
||||
<div class="progress-bar">
|
||||
<div class="progress-fill" id="lessonProgress" style="width: 0%"></div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="lesson-container">
|
||||
<header class="lesson-header">
|
||||
<div class="lesson-module">Fotokvalitet — Så här tar du bilder som godkänns direkt av AI</div>
|
||||
<h1 class="lesson-title">AI-granskning — vad tittar den på?</h1>
|
||||
<div class="lesson-meta">
|
||||
<span>⏱️ 15 min</span>
|
||||
<span>🎯 Nybörjare</span>
|
||||
<span>📚 Video</span>
|
||||
</div>
|
||||
</header>
|
||||
|
||||
<div class="content-block">
|
||||
<p>quiXzoom använder AI för att granska alla bilder. Systemet kontrollerar skärpa, ljus, framing och metadata.</p>
|
||||
</div>
|
||||
|
||||
<div class="content-block">
|
||||
<h2>Viktiga faktorer</h2>
|
||||
<ul>
|
||||
<li>Skärpa: Bilden måste vara i fokus</li>
|
||||
<li>Ljus: Varken för mörkt eller för ljust</li>
|
||||
<li>Framing: Objektet måste vara centrerat</li>
|
||||
<li>Metadata: GPS, timestamp, kamerainfo</li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<div class="warning-box">
|
||||
<strong>⚠️ Viktigt</strong>
|
||||
<p>Bilder som inte uppfyller kraven avvisas. Du kan alltid komplettera inom 48 timmar.</p>
|
||||
</div>
|
||||
|
||||
<div class="quiz-container">
|
||||
<div class="quiz-question">Vad är viktigast för AI-granskningen?</div>
|
||||
<ul class="quiz-options">
|
||||
<li class="quiz-option" onclick="checkAnswer(this, False)">
|
||||
<span class="quiz-letter">A</span>
|
||||
<span>Filter och effekter</span>
|
||||
</li>
|
||||
<li class="quiz-option" onclick="checkAnswer(this, True)">
|
||||
<span class="quiz-letter">B</span>
|
||||
<span>Skärpa och korrekt ljus</span>
|
||||
</li>
|
||||
<li class="quiz-option" onclick="checkAnswer(this, False)">
|
||||
<span class="quiz-letter">C</span>
|
||||
<span>Hög upplösning (4K+)</span>
|
||||
</li>
|
||||
</ul>
|
||||
<div class="quiz-feedback" id="quizFeedback"></div>
|
||||
</div>
|
||||
|
||||
<button class="complete-btn" id="completeBtn" onclick="completeLesson()">
|
||||
✅ Markera lektion som klar
|
||||
</button>
|
||||
|
||||
<nav class="lesson-nav">
|
||||
<a href="/academy/module1/m1l4" class="nav-btn prev">← Föregående</a>
|
||||
<a href="/academy/module2/m2l2" class="nav-btn next">Nästa: Ljus och exponering →</a>
|
||||
</nav>
|
||||
</div>
|
||||
|
||||
<script>
|
||||
const lessonId = 'm2l1';
|
||||
let completedLessons = JSON.parse(localStorage.getItem('academyProgress') || '[]');
|
||||
|
||||
function checkAnswer(element, isCorrect) {
|
||||
const options = document.querySelectorAll('.quiz-option');
|
||||
const feedback = document.getElementById('quizFeedback');
|
||||
|
||||
options.forEach(opt => opt.classList.add('disabled'));
|
||||
|
||||
if (isCorrect) {
|
||||
element.classList.add('correct');
|
||||
feedback.innerHTML = '<strong>✅ Rätt!</strong> Bra jobbat!';
|
||||
feedback.style.background = '#d4edda';
|
||||
feedback.style.color = '#155724';
|
||||
} else {
|
||||
element.classList.add('wrong');
|
||||
feedback.innerHTML = '<strong>❌ Inte riktigt.</strong> Tänk igenom svaret en gång till.';
|
||||
feedback.style.background = '#f8d7da';
|
||||
feedback.style.color = '#721c24';
|
||||
}
|
||||
|
||||
feedback.classList.add('show');
|
||||
}
|
||||
|
||||
function completeLesson() {
|
||||
if (!completedLessons.includes(lessonId)) {
|
||||
completedLessons.push(lessonId);
|
||||
localStorage.setItem('academyProgress', JSON.stringify(completedLessons));
|
||||
|
||||
const btn = document.getElementById('completeBtn');
|
||||
btn.textContent = '✅ Lektion klar!';
|
||||
btn.classList.add('completed');
|
||||
btn.disabled = true;
|
||||
|
||||
btn.style.transform = 'scale(1.05)';
|
||||
setTimeout(() => btn.style.transform = 'scale(1)', 200);
|
||||
}
|
||||
}
|
||||
|
||||
if (completedLessons.includes(lessonId)) {
|
||||
const btn = document.getElementById('completeBtn');
|
||||
btn.textContent = '✅ Lektion klar!';
|
||||
btn.classList.add('completed');
|
||||
btn.disabled = true;
|
||||
}
|
||||
</script>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,416 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="sv">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>Ljus och exponering — quiXzoom Academy</title>
|
||||
<style>
|
||||
:root {
|
||||
--qx-black: #0a0a0a;
|
||||
--qx-white: #ffffff;
|
||||
--qx-blue: #0066FF;
|
||||
--qx-green: #00C853;
|
||||
--qx-gray: #F5F5F7;
|
||||
--qx-dark-gray: #1a1a1a;
|
||||
--qx-text-muted: #6e6e73;
|
||||
--qx-purple: #7B61FF;
|
||||
--qx-orange: #FF6B35;
|
||||
}
|
||||
|
||||
* { margin: 0; padding: 0; box-sizing: border-box; }
|
||||
|
||||
body {
|
||||
font-family: -apple-system, BlinkMacSystemFont, 'SF Pro Display', sans-serif;
|
||||
color: var(--qx-black);
|
||||
background: var(--qx-white);
|
||||
line-height: 1.6;
|
||||
}
|
||||
|
||||
.progress-container {
|
||||
position: sticky;
|
||||
top: 0;
|
||||
background: white;
|
||||
padding: 12px 20px;
|
||||
border-bottom: 1px solid var(--qx-gray);
|
||||
z-index: 100;
|
||||
}
|
||||
|
||||
.progress-bar {
|
||||
max-width: 600px;
|
||||
margin: 0 auto;
|
||||
background: var(--qx-gray);
|
||||
border-radius: 10px;
|
||||
height: 8px;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.progress-fill {
|
||||
background: var(--qx-green);
|
||||
height: 100%;
|
||||
width: 0%;
|
||||
transition: width 0.5s ease;
|
||||
}
|
||||
|
||||
.lesson-container {
|
||||
max-width: 800px;
|
||||
margin: 0 auto;
|
||||
padding: 40px 20px;
|
||||
}
|
||||
|
||||
.lesson-header {
|
||||
margin-bottom: 48px;
|
||||
}
|
||||
|
||||
.lesson-module {
|
||||
color: var(--qx-blue);
|
||||
font-size: 0.875rem;
|
||||
text-transform: uppercase;
|
||||
letter-spacing: 2px;
|
||||
margin-bottom: 8px;
|
||||
}
|
||||
|
||||
.lesson-title {
|
||||
font-size: 2.5rem;
|
||||
margin-bottom: 16px;
|
||||
line-height: 1.2;
|
||||
}
|
||||
|
||||
.lesson-meta {
|
||||
color: var(--qx-text-muted);
|
||||
font-size: 0.9rem;
|
||||
display: flex;
|
||||
gap: 16px;
|
||||
}
|
||||
|
||||
.content-block {
|
||||
margin-bottom: 48px;
|
||||
}
|
||||
|
||||
.content-block h2 {
|
||||
font-size: 1.75rem;
|
||||
margin-bottom: 20px;
|
||||
}
|
||||
|
||||
.content-block p {
|
||||
margin-bottom: 16px;
|
||||
color: #333;
|
||||
font-size: 1.05rem;
|
||||
}
|
||||
|
||||
.content-block ul {
|
||||
margin-left: 24px;
|
||||
margin-bottom: 16px;
|
||||
}
|
||||
|
||||
.content-block li {
|
||||
margin-bottom: 12px;
|
||||
}
|
||||
|
||||
.tip-box {
|
||||
background: #e8f4fd;
|
||||
border-left: 4px solid var(--qx-blue);
|
||||
padding: 24px;
|
||||
margin: 24px 0;
|
||||
border-radius: 0 12px 12px 0;
|
||||
}
|
||||
|
||||
.tip-box strong {
|
||||
color: var(--qx-blue);
|
||||
display: block;
|
||||
margin-bottom: 8px;
|
||||
}
|
||||
|
||||
.warning-box {
|
||||
background: #fff3cd;
|
||||
border-left: 4px solid var(--qx-orange);
|
||||
padding: 24px;
|
||||
margin: 24px 0;
|
||||
border-radius: 0 12px 12px 0;
|
||||
}
|
||||
|
||||
.warning-box strong {
|
||||
color: var(--qx-orange);
|
||||
display: block;
|
||||
margin-bottom: 8px;
|
||||
}
|
||||
|
||||
.example-box {
|
||||
background: var(--qx-gray);
|
||||
padding: 24px;
|
||||
border-radius: 12px;
|
||||
margin: 24px 0;
|
||||
}
|
||||
|
||||
.example-box h4 {
|
||||
margin-bottom: 12px;
|
||||
color: var(--qx-dark-gray);
|
||||
}
|
||||
|
||||
.quiz-container {
|
||||
background: var(--qx-gray);
|
||||
padding: 32px;
|
||||
border-radius: 16px;
|
||||
margin: 32px 0;
|
||||
}
|
||||
|
||||
.quiz-question {
|
||||
font-size: 1.25rem;
|
||||
font-weight: 600;
|
||||
margin-bottom: 24px;
|
||||
}
|
||||
|
||||
.quiz-options {
|
||||
list-style: none;
|
||||
}
|
||||
|
||||
.quiz-option {
|
||||
background: white;
|
||||
padding: 16px 20px;
|
||||
margin-bottom: 12px;
|
||||
border-radius: 12px;
|
||||
cursor: pointer;
|
||||
transition: all 0.2s;
|
||||
border: 2px solid transparent;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 12px;
|
||||
}
|
||||
|
||||
.quiz-option:hover {
|
||||
border-color: var(--qx-blue);
|
||||
transform: translateX(4px);
|
||||
}
|
||||
|
||||
.quiz-option.correct {
|
||||
background: var(--qx-green);
|
||||
color: white;
|
||||
border-color: var(--qx-green);
|
||||
}
|
||||
|
||||
.quiz-option.wrong {
|
||||
background: #ff4444;
|
||||
color: white;
|
||||
border-color: #ff4444;
|
||||
}
|
||||
|
||||
.quiz-option.disabled {
|
||||
pointer-events: none;
|
||||
opacity: 0.7;
|
||||
}
|
||||
|
||||
.quiz-letter {
|
||||
width: 32px;
|
||||
height: 32px;
|
||||
border-radius: 50%;
|
||||
background: var(--qx-gray);
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
font-weight: 600;
|
||||
flex-shrink: 0;
|
||||
}
|
||||
|
||||
.quiz-option:hover .quiz-letter {
|
||||
background: var(--qx-blue);
|
||||
color: white;
|
||||
}
|
||||
|
||||
.quiz-option.correct .quiz-letter,
|
||||
.quiz-option.wrong .quiz-letter {
|
||||
background: rgba(255,255,255,0.3);
|
||||
}
|
||||
|
||||
.quiz-feedback {
|
||||
margin-top: 20px;
|
||||
padding: 20px;
|
||||
border-radius: 12px;
|
||||
display: none;
|
||||
font-size: 1rem;
|
||||
}
|
||||
|
||||
.quiz-feedback.show {
|
||||
display: block;
|
||||
}
|
||||
|
||||
.lesson-nav {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
margin-top: 60px;
|
||||
padding-top: 40px;
|
||||
border-top: 2px solid var(--qx-gray);
|
||||
}
|
||||
|
||||
.nav-btn {
|
||||
padding: 14px 28px;
|
||||
border-radius: 10px;
|
||||
text-decoration: none;
|
||||
font-weight: 600;
|
||||
transition: all 0.2s;
|
||||
display: inline-flex;
|
||||
align-items: center;
|
||||
gap: 8px;
|
||||
}
|
||||
|
||||
.nav-btn.prev {
|
||||
background: var(--qx-gray);
|
||||
color: var(--qx-black);
|
||||
}
|
||||
|
||||
.nav-btn.next {
|
||||
background: var(--qx-blue);
|
||||
color: white;
|
||||
}
|
||||
|
||||
.nav-btn:hover {
|
||||
transform: translateY(-2px);
|
||||
box-shadow: 0 4px 12px rgba(0,0,0,0.15);
|
||||
}
|
||||
|
||||
.complete-btn {
|
||||
display: block;
|
||||
width: 100%;
|
||||
max-width: 400px;
|
||||
margin: 48px auto;
|
||||
padding: 18px 32px;
|
||||
background: var(--qx-green);
|
||||
color: white;
|
||||
border: none;
|
||||
border-radius: 12px;
|
||||
font-size: 1.1rem;
|
||||
font-weight: 600;
|
||||
cursor: pointer;
|
||||
transition: all 0.2s;
|
||||
}
|
||||
|
||||
.complete-btn:hover {
|
||||
transform: translateY(-2px);
|
||||
box-shadow: 0 4px 16px rgba(0,200,83,0.3);
|
||||
}
|
||||
|
||||
.complete-btn.completed {
|
||||
background: var(--qx-gray);
|
||||
color: var(--qx-text-muted);
|
||||
cursor: default;
|
||||
}
|
||||
|
||||
@media (max-width: 768px) {
|
||||
.lesson-title { font-size: 1.75rem; }
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<div class="progress-container">
|
||||
<div class="progress-bar">
|
||||
<div class="progress-fill" id="lessonProgress" style="width: 0%"></div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="lesson-container">
|
||||
<header class="lesson-header">
|
||||
<div class="lesson-module">Fotokvalitet — Så här tar du bilder som godkänns direkt av AI</div>
|
||||
<h1 class="lesson-title">Ljus och exponering</h1>
|
||||
<div class="lesson-meta">
|
||||
<span>⏱️ 12 min</span>
|
||||
<span>🎯 Nybörjare</span>
|
||||
<span>📚 Bildexempel</span>
|
||||
</div>
|
||||
</header>
|
||||
|
||||
<div class="content-block">
|
||||
<p>Rätt ljus är avgörande för att AI:n ska kunna analysera bilden.</p>
|
||||
</div>
|
||||
|
||||
<div class="tip-box">
|
||||
<strong>💡 Tips</strong>
|
||||
<p>• Fotografera en timme efter soluppgång eller före solnedgång</p>
|
||||
<p>• Undvik direkt solljus i motljus</p>
|
||||
<p>• Använd HDR-läge om det finns</p>
|
||||
</div>
|
||||
|
||||
<div class="example-box">
|
||||
<h4>Exempel</h4>
|
||||
<p>• Underexponerad: För mörk, detaljer saknas</p>
|
||||
<p>• Perfekt: Gyldene timmen, varmt ljus</p>
|
||||
<p>• Överexponerad: För ljus, utbrända detaljer</p>
|
||||
</div>
|
||||
|
||||
<div class="quiz-container">
|
||||
<div class="quiz-question">Vilket ljus är bäst för fotografering?</div>
|
||||
<ul class="quiz-options">
|
||||
<li class="quiz-option" onclick="checkAnswer(this, False)">
|
||||
<span class="quiz-letter">A</span>
|
||||
<span>Direkt mitt på dagen</span>
|
||||
</li>
|
||||
<li class="quiz-option" onclick="checkAnswer(this, True)">
|
||||
<span class="quiz-letter">B</span>
|
||||
<span>Gyllene timmen (efter soluppgång/före solnedgång)</span>
|
||||
</li>
|
||||
<li class="quiz-option" onclick="checkAnswer(this, False)">
|
||||
<span class="quiz-letter">C</span>
|
||||
<span>Natt med blixt</span>
|
||||
</li>
|
||||
</ul>
|
||||
<div class="quiz-feedback" id="quizFeedback"></div>
|
||||
</div>
|
||||
|
||||
<button class="complete-btn" id="completeBtn" onclick="completeLesson()">
|
||||
✅ Markera lektion som klar
|
||||
</button>
|
||||
|
||||
<nav class="lesson-nav">
|
||||
<a href="/academy/module2/m2l1" class="nav-btn prev">← Föregående</a>
|
||||
<a href="/academy/module2/m2l3" class="nav-btn next">Nästa: Fokus och skärpa →</a>
|
||||
</nav>
|
||||
</div>
|
||||
|
||||
<script>
|
||||
const lessonId = 'm2l2';
|
||||
let completedLessons = JSON.parse(localStorage.getItem('academyProgress') || '[]');
|
||||
|
||||
function checkAnswer(element, isCorrect) {
|
||||
const options = document.querySelectorAll('.quiz-option');
|
||||
const feedback = document.getElementById('quizFeedback');
|
||||
|
||||
options.forEach(opt => opt.classList.add('disabled'));
|
||||
|
||||
if (isCorrect) {
|
||||
element.classList.add('correct');
|
||||
feedback.innerHTML = '<strong>✅ Rätt!</strong> Bra jobbat!';
|
||||
feedback.style.background = '#d4edda';
|
||||
feedback.style.color = '#155724';
|
||||
} else {
|
||||
element.classList.add('wrong');
|
||||
feedback.innerHTML = '<strong>❌ Inte riktigt.</strong> Tänk igenom svaret en gång till.';
|
||||
feedback.style.background = '#f8d7da';
|
||||
feedback.style.color = '#721c24';
|
||||
}
|
||||
|
||||
feedback.classList.add('show');
|
||||
}
|
||||
|
||||
function completeLesson() {
|
||||
if (!completedLessons.includes(lessonId)) {
|
||||
completedLessons.push(lessonId);
|
||||
localStorage.setItem('academyProgress', JSON.stringify(completedLessons));
|
||||
|
||||
const btn = document.getElementById('completeBtn');
|
||||
btn.textContent = '✅ Lektion klar!';
|
||||
btn.classList.add('completed');
|
||||
btn.disabled = true;
|
||||
|
||||
btn.style.transform = 'scale(1.05)';
|
||||
setTimeout(() => btn.style.transform = 'scale(1)', 200);
|
||||
}
|
||||
}
|
||||
|
||||
if (completedLessons.includes(lessonId)) {
|
||||
const btn = document.getElementById('completeBtn');
|
||||
btn.textContent = '✅ Lektion klar!';
|
||||
btn.classList.add('completed');
|
||||
btn.disabled = true;
|
||||
}
|
||||
</script>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,415 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="sv">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>Fokus och skärpa — quiXzoom Academy</title>
|
||||
<style>
|
||||
:root {
|
||||
--qx-black: #0a0a0a;
|
||||
--qx-white: #ffffff;
|
||||
--qx-blue: #0066FF;
|
||||
--qx-green: #00C853;
|
||||
--qx-gray: #F5F5F7;
|
||||
--qx-dark-gray: #1a1a1a;
|
||||
--qx-text-muted: #6e6e73;
|
||||
--qx-purple: #7B61FF;
|
||||
--qx-orange: #FF6B35;
|
||||
}
|
||||
|
||||
* { margin: 0; padding: 0; box-sizing: border-box; }
|
||||
|
||||
body {
|
||||
font-family: -apple-system, BlinkMacSystemFont, 'SF Pro Display', sans-serif;
|
||||
color: var(--qx-black);
|
||||
background: var(--qx-white);
|
||||
line-height: 1.6;
|
||||
}
|
||||
|
||||
.progress-container {
|
||||
position: sticky;
|
||||
top: 0;
|
||||
background: white;
|
||||
padding: 12px 20px;
|
||||
border-bottom: 1px solid var(--qx-gray);
|
||||
z-index: 100;
|
||||
}
|
||||
|
||||
.progress-bar {
|
||||
max-width: 600px;
|
||||
margin: 0 auto;
|
||||
background: var(--qx-gray);
|
||||
border-radius: 10px;
|
||||
height: 8px;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.progress-fill {
|
||||
background: var(--qx-green);
|
||||
height: 100%;
|
||||
width: 0%;
|
||||
transition: width 0.5s ease;
|
||||
}
|
||||
|
||||
.lesson-container {
|
||||
max-width: 800px;
|
||||
margin: 0 auto;
|
||||
padding: 40px 20px;
|
||||
}
|
||||
|
||||
.lesson-header {
|
||||
margin-bottom: 48px;
|
||||
}
|
||||
|
||||
.lesson-module {
|
||||
color: var(--qx-blue);
|
||||
font-size: 0.875rem;
|
||||
text-transform: uppercase;
|
||||
letter-spacing: 2px;
|
||||
margin-bottom: 8px;
|
||||
}
|
||||
|
||||
.lesson-title {
|
||||
font-size: 2.5rem;
|
||||
margin-bottom: 16px;
|
||||
line-height: 1.2;
|
||||
}
|
||||
|
||||
.lesson-meta {
|
||||
color: var(--qx-text-muted);
|
||||
font-size: 0.9rem;
|
||||
display: flex;
|
||||
gap: 16px;
|
||||
}
|
||||
|
||||
.content-block {
|
||||
margin-bottom: 48px;
|
||||
}
|
||||
|
||||
.content-block h2 {
|
||||
font-size: 1.75rem;
|
||||
margin-bottom: 20px;
|
||||
}
|
||||
|
||||
.content-block p {
|
||||
margin-bottom: 16px;
|
||||
color: #333;
|
||||
font-size: 1.05rem;
|
||||
}
|
||||
|
||||
.content-block ul {
|
||||
margin-left: 24px;
|
||||
margin-bottom: 16px;
|
||||
}
|
||||
|
||||
.content-block li {
|
||||
margin-bottom: 12px;
|
||||
}
|
||||
|
||||
.tip-box {
|
||||
background: #e8f4fd;
|
||||
border-left: 4px solid var(--qx-blue);
|
||||
padding: 24px;
|
||||
margin: 24px 0;
|
||||
border-radius: 0 12px 12px 0;
|
||||
}
|
||||
|
||||
.tip-box strong {
|
||||
color: var(--qx-blue);
|
||||
display: block;
|
||||
margin-bottom: 8px;
|
||||
}
|
||||
|
||||
.warning-box {
|
||||
background: #fff3cd;
|
||||
border-left: 4px solid var(--qx-orange);
|
||||
padding: 24px;
|
||||
margin: 24px 0;
|
||||
border-radius: 0 12px 12px 0;
|
||||
}
|
||||
|
||||
.warning-box strong {
|
||||
color: var(--qx-orange);
|
||||
display: block;
|
||||
margin-bottom: 8px;
|
||||
}
|
||||
|
||||
.example-box {
|
||||
background: var(--qx-gray);
|
||||
padding: 24px;
|
||||
border-radius: 12px;
|
||||
margin: 24px 0;
|
||||
}
|
||||
|
||||
.example-box h4 {
|
||||
margin-bottom: 12px;
|
||||
color: var(--qx-dark-gray);
|
||||
}
|
||||
|
||||
.quiz-container {
|
||||
background: var(--qx-gray);
|
||||
padding: 32px;
|
||||
border-radius: 16px;
|
||||
margin: 32px 0;
|
||||
}
|
||||
|
||||
.quiz-question {
|
||||
font-size: 1.25rem;
|
||||
font-weight: 600;
|
||||
margin-bottom: 24px;
|
||||
}
|
||||
|
||||
.quiz-options {
|
||||
list-style: none;
|
||||
}
|
||||
|
||||
.quiz-option {
|
||||
background: white;
|
||||
padding: 16px 20px;
|
||||
margin-bottom: 12px;
|
||||
border-radius: 12px;
|
||||
cursor: pointer;
|
||||
transition: all 0.2s;
|
||||
border: 2px solid transparent;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 12px;
|
||||
}
|
||||
|
||||
.quiz-option:hover {
|
||||
border-color: var(--qx-blue);
|
||||
transform: translateX(4px);
|
||||
}
|
||||
|
||||
.quiz-option.correct {
|
||||
background: var(--qx-green);
|
||||
color: white;
|
||||
border-color: var(--qx-green);
|
||||
}
|
||||
|
||||
.quiz-option.wrong {
|
||||
background: #ff4444;
|
||||
color: white;
|
||||
border-color: #ff4444;
|
||||
}
|
||||
|
||||
.quiz-option.disabled {
|
||||
pointer-events: none;
|
||||
opacity: 0.7;
|
||||
}
|
||||
|
||||
.quiz-letter {
|
||||
width: 32px;
|
||||
height: 32px;
|
||||
border-radius: 50%;
|
||||
background: var(--qx-gray);
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
font-weight: 600;
|
||||
flex-shrink: 0;
|
||||
}
|
||||
|
||||
.quiz-option:hover .quiz-letter {
|
||||
background: var(--qx-blue);
|
||||
color: white;
|
||||
}
|
||||
|
||||
.quiz-option.correct .quiz-letter,
|
||||
.quiz-option.wrong .quiz-letter {
|
||||
background: rgba(255,255,255,0.3);
|
||||
}
|
||||
|
||||
.quiz-feedback {
|
||||
margin-top: 20px;
|
||||
padding: 20px;
|
||||
border-radius: 12px;
|
||||
display: none;
|
||||
font-size: 1rem;
|
||||
}
|
||||
|
||||
.quiz-feedback.show {
|
||||
display: block;
|
||||
}
|
||||
|
||||
.lesson-nav {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
margin-top: 60px;
|
||||
padding-top: 40px;
|
||||
border-top: 2px solid var(--qx-gray);
|
||||
}
|
||||
|
||||
.nav-btn {
|
||||
padding: 14px 28px;
|
||||
border-radius: 10px;
|
||||
text-decoration: none;
|
||||
font-weight: 600;
|
||||
transition: all 0.2s;
|
||||
display: inline-flex;
|
||||
align-items: center;
|
||||
gap: 8px;
|
||||
}
|
||||
|
||||
.nav-btn.prev {
|
||||
background: var(--qx-gray);
|
||||
color: var(--qx-black);
|
||||
}
|
||||
|
||||
.nav-btn.next {
|
||||
background: var(--qx-blue);
|
||||
color: white;
|
||||
}
|
||||
|
||||
.nav-btn:hover {
|
||||
transform: translateY(-2px);
|
||||
box-shadow: 0 4px 12px rgba(0,0,0,0.15);
|
||||
}
|
||||
|
||||
.complete-btn {
|
||||
display: block;
|
||||
width: 100%;
|
||||
max-width: 400px;
|
||||
margin: 48px auto;
|
||||
padding: 18px 32px;
|
||||
background: var(--qx-green);
|
||||
color: white;
|
||||
border: none;
|
||||
border-radius: 12px;
|
||||
font-size: 1.1rem;
|
||||
font-weight: 600;
|
||||
cursor: pointer;
|
||||
transition: all 0.2s;
|
||||
}
|
||||
|
||||
.complete-btn:hover {
|
||||
transform: translateY(-2px);
|
||||
box-shadow: 0 4px 16px rgba(0,200,83,0.3);
|
||||
}
|
||||
|
||||
.complete-btn.completed {
|
||||
background: var(--qx-gray);
|
||||
color: var(--qx-text-muted);
|
||||
cursor: default;
|
||||
}
|
||||
|
||||
@media (max-width: 768px) {
|
||||
.lesson-title { font-size: 1.75rem; }
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<div class="progress-container">
|
||||
<div class="progress-bar">
|
||||
<div class="progress-fill" id="lessonProgress" style="width: 0%"></div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="lesson-container">
|
||||
<header class="lesson-header">
|
||||
<div class="lesson-module">Fotokvalitet — Så här tar du bilder som godkänns direkt av AI</div>
|
||||
<h1 class="lesson-title">Fokus och skärpa</h1>
|
||||
<div class="lesson-meta">
|
||||
<span>⏱️ 10 min</span>
|
||||
<span>🎯 Nybörjare</span>
|
||||
<span>📚 Quiz</span>
|
||||
</div>
|
||||
</header>
|
||||
|
||||
<div class="content-block">
|
||||
<p>Skärpa är en av de viktigaste faktorerna för att AI:n ska godkänna din bild.</p>
|
||||
</div>
|
||||
|
||||
<div class="tip-box">
|
||||
<strong>💡 Tips</strong>
|
||||
<p>• Tryck på skärmen där du vill ha fokus</p>
|
||||
<p>• Håll telefonen stadigt</p>
|
||||
<p>• Använd båda händerna</p>
|
||||
<p>• Tryck försiktigt på avtryckaren</p>
|
||||
</div>
|
||||
|
||||
<div class="warning-box">
|
||||
<strong>⚠️ Viktigt</strong>
|
||||
<p>Många avvisade bilder är oskarpa för att Zoomern rörde på telefonen.</p>
|
||||
</div>
|
||||
|
||||
<div class="quiz-container">
|
||||
<div class="quiz-question">Hur undviker du oskarpa bilder?</div>
|
||||
<ul class="quiz-options">
|
||||
<li class="quiz-option" onclick="checkAnswer(this, False)">
|
||||
<span class="quiz-letter">A</span>
|
||||
<span>Trycker snabbt på avtryckaren</span>
|
||||
</li>
|
||||
<li class="quiz-option" onclick="checkAnswer(this, True)">
|
||||
<span class="quiz-letter">B</span>
|
||||
<span>Håller telefonen stadigt och trycker försiktigt</span>
|
||||
</li>
|
||||
<li class="quiz-option" onclick="checkAnswer(this, False)">
|
||||
<span class="quiz-letter">C</span>
|
||||
<span>Använder alltid zoom</span>
|
||||
</li>
|
||||
</ul>
|
||||
<div class="quiz-feedback" id="quizFeedback"></div>
|
||||
</div>
|
||||
|
||||
<button class="complete-btn" id="completeBtn" onclick="completeLesson()">
|
||||
✅ Markera lektion som klar
|
||||
</button>
|
||||
|
||||
<nav class="lesson-nav">
|
||||
<a href="/academy/module2/m2l2" class="nav-btn prev">← Föregående</a>
|
||||
<a href="/academy/module2/m2l4" class="nav-btn next">Nästa: Framing och komposition →</a>
|
||||
</nav>
|
||||
</div>
|
||||
|
||||
<script>
|
||||
const lessonId = 'm2l3';
|
||||
let completedLessons = JSON.parse(localStorage.getItem('academyProgress') || '[]');
|
||||
|
||||
function checkAnswer(element, isCorrect) {
|
||||
const options = document.querySelectorAll('.quiz-option');
|
||||
const feedback = document.getElementById('quizFeedback');
|
||||
|
||||
options.forEach(opt => opt.classList.add('disabled'));
|
||||
|
||||
if (isCorrect) {
|
||||
element.classList.add('correct');
|
||||
feedback.innerHTML = '<strong>✅ Rätt!</strong> Bra jobbat!';
|
||||
feedback.style.background = '#d4edda';
|
||||
feedback.style.color = '#155724';
|
||||
} else {
|
||||
element.classList.add('wrong');
|
||||
feedback.innerHTML = '<strong>❌ Inte riktigt.</strong> Tänk igenom svaret en gång till.';
|
||||
feedback.style.background = '#f8d7da';
|
||||
feedback.style.color = '#721c24';
|
||||
}
|
||||
|
||||
feedback.classList.add('show');
|
||||
}
|
||||
|
||||
function completeLesson() {
|
||||
if (!completedLessons.includes(lessonId)) {
|
||||
completedLessons.push(lessonId);
|
||||
localStorage.setItem('academyProgress', JSON.stringify(completedLessons));
|
||||
|
||||
const btn = document.getElementById('completeBtn');
|
||||
btn.textContent = '✅ Lektion klar!';
|
||||
btn.classList.add('completed');
|
||||
btn.disabled = true;
|
||||
|
||||
btn.style.transform = 'scale(1.05)';
|
||||
setTimeout(() => btn.style.transform = 'scale(1)', 200);
|
||||
}
|
||||
}
|
||||
|
||||
if (completedLessons.includes(lessonId)) {
|
||||
const btn = document.getElementById('completeBtn');
|
||||
btn.textContent = '✅ Lektion klar!';
|
||||
btn.classList.add('completed');
|
||||
btn.disabled = true;
|
||||
}
|
||||
</script>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,419 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="sv">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>Framing och komposition — quiXzoom Academy</title>
|
||||
<style>
|
||||
:root {
|
||||
--qx-black: #0a0a0a;
|
||||
--qx-white: #ffffff;
|
||||
--qx-blue: #0066FF;
|
||||
--qx-green: #00C853;
|
||||
--qx-gray: #F5F5F7;
|
||||
--qx-dark-gray: #1a1a1a;
|
||||
--qx-text-muted: #6e6e73;
|
||||
--qx-purple: #7B61FF;
|
||||
--qx-orange: #FF6B35;
|
||||
}
|
||||
|
||||
* { margin: 0; padding: 0; box-sizing: border-box; }
|
||||
|
||||
body {
|
||||
font-family: -apple-system, BlinkMacSystemFont, 'SF Pro Display', sans-serif;
|
||||
color: var(--qx-black);
|
||||
background: var(--qx-white);
|
||||
line-height: 1.6;
|
||||
}
|
||||
|
||||
.progress-container {
|
||||
position: sticky;
|
||||
top: 0;
|
||||
background: white;
|
||||
padding: 12px 20px;
|
||||
border-bottom: 1px solid var(--qx-gray);
|
||||
z-index: 100;
|
||||
}
|
||||
|
||||
.progress-bar {
|
||||
max-width: 600px;
|
||||
margin: 0 auto;
|
||||
background: var(--qx-gray);
|
||||
border-radius: 10px;
|
||||
height: 8px;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.progress-fill {
|
||||
background: var(--qx-green);
|
||||
height: 100%;
|
||||
width: 0%;
|
||||
transition: width 0.5s ease;
|
||||
}
|
||||
|
||||
.lesson-container {
|
||||
max-width: 800px;
|
||||
margin: 0 auto;
|
||||
padding: 40px 20px;
|
||||
}
|
||||
|
||||
.lesson-header {
|
||||
margin-bottom: 48px;
|
||||
}
|
||||
|
||||
.lesson-module {
|
||||
color: var(--qx-blue);
|
||||
font-size: 0.875rem;
|
||||
text-transform: uppercase;
|
||||
letter-spacing: 2px;
|
||||
margin-bottom: 8px;
|
||||
}
|
||||
|
||||
.lesson-title {
|
||||
font-size: 2.5rem;
|
||||
margin-bottom: 16px;
|
||||
line-height: 1.2;
|
||||
}
|
||||
|
||||
.lesson-meta {
|
||||
color: var(--qx-text-muted);
|
||||
font-size: 0.9rem;
|
||||
display: flex;
|
||||
gap: 16px;
|
||||
}
|
||||
|
||||
.content-block {
|
||||
margin-bottom: 48px;
|
||||
}
|
||||
|
||||
.content-block h2 {
|
||||
font-size: 1.75rem;
|
||||
margin-bottom: 20px;
|
||||
}
|
||||
|
||||
.content-block p {
|
||||
margin-bottom: 16px;
|
||||
color: #333;
|
||||
font-size: 1.05rem;
|
||||
}
|
||||
|
||||
.content-block ul {
|
||||
margin-left: 24px;
|
||||
margin-bottom: 16px;
|
||||
}
|
||||
|
||||
.content-block li {
|
||||
margin-bottom: 12px;
|
||||
}
|
||||
|
||||
.tip-box {
|
||||
background: #e8f4fd;
|
||||
border-left: 4px solid var(--qx-blue);
|
||||
padding: 24px;
|
||||
margin: 24px 0;
|
||||
border-radius: 0 12px 12px 0;
|
||||
}
|
||||
|
||||
.tip-box strong {
|
||||
color: var(--qx-blue);
|
||||
display: block;
|
||||
margin-bottom: 8px;
|
||||
}
|
||||
|
||||
.warning-box {
|
||||
background: #fff3cd;
|
||||
border-left: 4px solid var(--qx-orange);
|
||||
padding: 24px;
|
||||
margin: 24px 0;
|
||||
border-radius: 0 12px 12px 0;
|
||||
}
|
||||
|
||||
.warning-box strong {
|
||||
color: var(--qx-orange);
|
||||
display: block;
|
||||
margin-bottom: 8px;
|
||||
}
|
||||
|
||||
.example-box {
|
||||
background: var(--qx-gray);
|
||||
padding: 24px;
|
||||
border-radius: 12px;
|
||||
margin: 24px 0;
|
||||
}
|
||||
|
||||
.example-box h4 {
|
||||
margin-bottom: 12px;
|
||||
color: var(--qx-dark-gray);
|
||||
}
|
||||
|
||||
.quiz-container {
|
||||
background: var(--qx-gray);
|
||||
padding: 32px;
|
||||
border-radius: 16px;
|
||||
margin: 32px 0;
|
||||
}
|
||||
|
||||
.quiz-question {
|
||||
font-size: 1.25rem;
|
||||
font-weight: 600;
|
||||
margin-bottom: 24px;
|
||||
}
|
||||
|
||||
.quiz-options {
|
||||
list-style: none;
|
||||
}
|
||||
|
||||
.quiz-option {
|
||||
background: white;
|
||||
padding: 16px 20px;
|
||||
margin-bottom: 12px;
|
||||
border-radius: 12px;
|
||||
cursor: pointer;
|
||||
transition: all 0.2s;
|
||||
border: 2px solid transparent;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 12px;
|
||||
}
|
||||
|
||||
.quiz-option:hover {
|
||||
border-color: var(--qx-blue);
|
||||
transform: translateX(4px);
|
||||
}
|
||||
|
||||
.quiz-option.correct {
|
||||
background: var(--qx-green);
|
||||
color: white;
|
||||
border-color: var(--qx-green);
|
||||
}
|
||||
|
||||
.quiz-option.wrong {
|
||||
background: #ff4444;
|
||||
color: white;
|
||||
border-color: #ff4444;
|
||||
}
|
||||
|
||||
.quiz-option.disabled {
|
||||
pointer-events: none;
|
||||
opacity: 0.7;
|
||||
}
|
||||
|
||||
.quiz-letter {
|
||||
width: 32px;
|
||||
height: 32px;
|
||||
border-radius: 50%;
|
||||
background: var(--qx-gray);
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
font-weight: 600;
|
||||
flex-shrink: 0;
|
||||
}
|
||||
|
||||
.quiz-option:hover .quiz-letter {
|
||||
background: var(--qx-blue);
|
||||
color: white;
|
||||
}
|
||||
|
||||
.quiz-option.correct .quiz-letter,
|
||||
.quiz-option.wrong .quiz-letter {
|
||||
background: rgba(255,255,255,0.3);
|
||||
}
|
||||
|
||||
.quiz-feedback {
|
||||
margin-top: 20px;
|
||||
padding: 20px;
|
||||
border-radius: 12px;
|
||||
display: none;
|
||||
font-size: 1rem;
|
||||
}
|
||||
|
||||
.quiz-feedback.show {
|
||||
display: block;
|
||||
}
|
||||
|
||||
.lesson-nav {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
margin-top: 60px;
|
||||
padding-top: 40px;
|
||||
border-top: 2px solid var(--qx-gray);
|
||||
}
|
||||
|
||||
.nav-btn {
|
||||
padding: 14px 28px;
|
||||
border-radius: 10px;
|
||||
text-decoration: none;
|
||||
font-weight: 600;
|
||||
transition: all 0.2s;
|
||||
display: inline-flex;
|
||||
align-items: center;
|
||||
gap: 8px;
|
||||
}
|
||||
|
||||
.nav-btn.prev {
|
||||
background: var(--qx-gray);
|
||||
color: var(--qx-black);
|
||||
}
|
||||
|
||||
.nav-btn.next {
|
||||
background: var(--qx-blue);
|
||||
color: white;
|
||||
}
|
||||
|
||||
.nav-btn:hover {
|
||||
transform: translateY(-2px);
|
||||
box-shadow: 0 4px 12px rgba(0,0,0,0.15);
|
||||
}
|
||||
|
||||
.complete-btn {
|
||||
display: block;
|
||||
width: 100%;
|
||||
max-width: 400px;
|
||||
margin: 48px auto;
|
||||
padding: 18px 32px;
|
||||
background: var(--qx-green);
|
||||
color: white;
|
||||
border: none;
|
||||
border-radius: 12px;
|
||||
font-size: 1.1rem;
|
||||
font-weight: 600;
|
||||
cursor: pointer;
|
||||
transition: all 0.2s;
|
||||
}
|
||||
|
||||
.complete-btn:hover {
|
||||
transform: translateY(-2px);
|
||||
box-shadow: 0 4px 16px rgba(0,200,83,0.3);
|
||||
}
|
||||
|
||||
.complete-btn.completed {
|
||||
background: var(--qx-gray);
|
||||
color: var(--qx-text-muted);
|
||||
cursor: default;
|
||||
}
|
||||
|
||||
@media (max-width: 768px) {
|
||||
.lesson-title { font-size: 1.75rem; }
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<div class="progress-container">
|
||||
<div class="progress-bar">
|
||||
<div class="progress-fill" id="lessonProgress" style="width: 0%"></div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="lesson-container">
|
||||
<header class="lesson-header">
|
||||
<div class="lesson-module">Fotokvalitet — Så här tar du bilder som godkänns direkt av AI</div>
|
||||
<h1 class="lesson-title">Framing och komposition</h1>
|
||||
<div class="lesson-meta">
|
||||
<span>⏱️ 15 min</span>
|
||||
<span>🎯 Nybörjare</span>
|
||||
<span>📚 Praktiskt</span>
|
||||
</div>
|
||||
</header>
|
||||
|
||||
<div class="content-block">
|
||||
<p>Komposition handlar om hur du placerar objektet i bilden.</p>
|
||||
</div>
|
||||
|
||||
<div class="tip-box">
|
||||
<strong>💡 Tips</strong>
|
||||
<p>• Använd grid-linjer i kamera-appen</p>
|
||||
<p>• Fotografera från flera vinklar</p>
|
||||
<p>• Kolla bilden innan du lämnar platsen</p>
|
||||
</div>
|
||||
|
||||
<div class="content-block">
|
||||
<h2>Regler</h2>
|
||||
<ul>
|
||||
<li>Rule of thirds: Placera objektet vid skärningslinjerna</li>
|
||||
<li>Huvudobjektet ska ta upp 60-80% av bilden</li>
|
||||
<li>Undvik att placera objektet i mitten</li>
|
||||
<li>Lämna lite luft runt objektet</li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<div class="quiz-container">
|
||||
<div class="quiz-question">Hur stor del av bilden ska huvudobjektet ta upp?</div>
|
||||
<ul class="quiz-options">
|
||||
<li class="quiz-option" onclick="checkAnswer(this, False)">
|
||||
<span class="quiz-letter">A</span>
|
||||
<span>20-40%</span>
|
||||
</li>
|
||||
<li class="quiz-option" onclick="checkAnswer(this, True)">
|
||||
<span class="quiz-letter">B</span>
|
||||
<span>60-80%</span>
|
||||
</li>
|
||||
<li class="quiz-option" onclick="checkAnswer(this, False)">
|
||||
<span class="quiz-letter">C</span>
|
||||
<span>90-100%</span>
|
||||
</li>
|
||||
</ul>
|
||||
<div class="quiz-feedback" id="quizFeedback"></div>
|
||||
</div>
|
||||
|
||||
<button class="complete-btn" id="completeBtn" onclick="completeLesson()">
|
||||
✅ Markera lektion som klar
|
||||
</button>
|
||||
|
||||
<nav class="lesson-nav">
|
||||
<a href="/academy/module2/m2l3" class="nav-btn prev">← Föregående</a>
|
||||
<a href="/academy/module3/m3l1" class="nav-btn next">Nästa: GPS-accuracy — så fungerar det →</a>
|
||||
</nav>
|
||||
</div>
|
||||
|
||||
<script>
|
||||
const lessonId = 'm2l4';
|
||||
let completedLessons = JSON.parse(localStorage.getItem('academyProgress') || '[]');
|
||||
|
||||
function checkAnswer(element, isCorrect) {
|
||||
const options = document.querySelectorAll('.quiz-option');
|
||||
const feedback = document.getElementById('quizFeedback');
|
||||
|
||||
options.forEach(opt => opt.classList.add('disabled'));
|
||||
|
||||
if (isCorrect) {
|
||||
element.classList.add('correct');
|
||||
feedback.innerHTML = '<strong>✅ Rätt!</strong> Bra jobbat!';
|
||||
feedback.style.background = '#d4edda';
|
||||
feedback.style.color = '#155724';
|
||||
} else {
|
||||
element.classList.add('wrong');
|
||||
feedback.innerHTML = '<strong>❌ Inte riktigt.</strong> Tänk igenom svaret en gång till.';
|
||||
feedback.style.background = '#f8d7da';
|
||||
feedback.style.color = '#721c24';
|
||||
}
|
||||
|
||||
feedback.classList.add('show');
|
||||
}
|
||||
|
||||
function completeLesson() {
|
||||
if (!completedLessons.includes(lessonId)) {
|
||||
completedLessons.push(lessonId);
|
||||
localStorage.setItem('academyProgress', JSON.stringify(completedLessons));
|
||||
|
||||
const btn = document.getElementById('completeBtn');
|
||||
btn.textContent = '✅ Lektion klar!';
|
||||
btn.classList.add('completed');
|
||||
btn.disabled = true;
|
||||
|
||||
btn.style.transform = 'scale(1.05)';
|
||||
setTimeout(() => btn.style.transform = 'scale(1)', 200);
|
||||
}
|
||||
}
|
||||
|
||||
if (completedLessons.includes(lessonId)) {
|
||||
const btn = document.getElementById('completeBtn');
|
||||
btn.textContent = '✅ Lektion klar!';
|
||||
btn.classList.add('completed');
|
||||
btn.disabled = true;
|
||||
}
|
||||
</script>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,409 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="sv">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>GPS-accuracy — så fungerar det — quiXzoom Academy</title>
|
||||
<style>
|
||||
:root {
|
||||
--qx-black: #0a0a0a;
|
||||
--qx-white: #ffffff;
|
||||
--qx-blue: #0066FF;
|
||||
--qx-green: #00C853;
|
||||
--qx-gray: #F5F5F7;
|
||||
--qx-dark-gray: #1a1a1a;
|
||||
--qx-text-muted: #6e6e73;
|
||||
--qx-purple: #7B61FF;
|
||||
--qx-orange: #FF6B35;
|
||||
}
|
||||
|
||||
* { margin: 0; padding: 0; box-sizing: border-box; }
|
||||
|
||||
body {
|
||||
font-family: -apple-system, BlinkMacSystemFont, 'SF Pro Display', sans-serif;
|
||||
color: var(--qx-black);
|
||||
background: var(--qx-white);
|
||||
line-height: 1.6;
|
||||
}
|
||||
|
||||
.progress-container {
|
||||
position: sticky;
|
||||
top: 0;
|
||||
background: white;
|
||||
padding: 12px 20px;
|
||||
border-bottom: 1px solid var(--qx-gray);
|
||||
z-index: 100;
|
||||
}
|
||||
|
||||
.progress-bar {
|
||||
max-width: 600px;
|
||||
margin: 0 auto;
|
||||
background: var(--qx-gray);
|
||||
border-radius: 10px;
|
||||
height: 8px;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.progress-fill {
|
||||
background: var(--qx-green);
|
||||
height: 100%;
|
||||
width: 0%;
|
||||
transition: width 0.5s ease;
|
||||
}
|
||||
|
||||
.lesson-container {
|
||||
max-width: 800px;
|
||||
margin: 0 auto;
|
||||
padding: 40px 20px;
|
||||
}
|
||||
|
||||
.lesson-header {
|
||||
margin-bottom: 48px;
|
||||
}
|
||||
|
||||
.lesson-module {
|
||||
color: var(--qx-blue);
|
||||
font-size: 0.875rem;
|
||||
text-transform: uppercase;
|
||||
letter-spacing: 2px;
|
||||
margin-bottom: 8px;
|
||||
}
|
||||
|
||||
.lesson-title {
|
||||
font-size: 2.5rem;
|
||||
margin-bottom: 16px;
|
||||
line-height: 1.2;
|
||||
}
|
||||
|
||||
.lesson-meta {
|
||||
color: var(--qx-text-muted);
|
||||
font-size: 0.9rem;
|
||||
display: flex;
|
||||
gap: 16px;
|
||||
}
|
||||
|
||||
.content-block {
|
||||
margin-bottom: 48px;
|
||||
}
|
||||
|
||||
.content-block h2 {
|
||||
font-size: 1.75rem;
|
||||
margin-bottom: 20px;
|
||||
}
|
||||
|
||||
.content-block p {
|
||||
margin-bottom: 16px;
|
||||
color: #333;
|
||||
font-size: 1.05rem;
|
||||
}
|
||||
|
||||
.content-block ul {
|
||||
margin-left: 24px;
|
||||
margin-bottom: 16px;
|
||||
}
|
||||
|
||||
.content-block li {
|
||||
margin-bottom: 12px;
|
||||
}
|
||||
|
||||
.tip-box {
|
||||
background: #e8f4fd;
|
||||
border-left: 4px solid var(--qx-blue);
|
||||
padding: 24px;
|
||||
margin: 24px 0;
|
||||
border-radius: 0 12px 12px 0;
|
||||
}
|
||||
|
||||
.tip-box strong {
|
||||
color: var(--qx-blue);
|
||||
display: block;
|
||||
margin-bottom: 8px;
|
||||
}
|
||||
|
||||
.warning-box {
|
||||
background: #fff3cd;
|
||||
border-left: 4px solid var(--qx-orange);
|
||||
padding: 24px;
|
||||
margin: 24px 0;
|
||||
border-radius: 0 12px 12px 0;
|
||||
}
|
||||
|
||||
.warning-box strong {
|
||||
color: var(--qx-orange);
|
||||
display: block;
|
||||
margin-bottom: 8px;
|
||||
}
|
||||
|
||||
.example-box {
|
||||
background: var(--qx-gray);
|
||||
padding: 24px;
|
||||
border-radius: 12px;
|
||||
margin: 24px 0;
|
||||
}
|
||||
|
||||
.example-box h4 {
|
||||
margin-bottom: 12px;
|
||||
color: var(--qx-dark-gray);
|
||||
}
|
||||
|
||||
.quiz-container {
|
||||
background: var(--qx-gray);
|
||||
padding: 32px;
|
||||
border-radius: 16px;
|
||||
margin: 32px 0;
|
||||
}
|
||||
|
||||
.quiz-question {
|
||||
font-size: 1.25rem;
|
||||
font-weight: 600;
|
||||
margin-bottom: 24px;
|
||||
}
|
||||
|
||||
.quiz-options {
|
||||
list-style: none;
|
||||
}
|
||||
|
||||
.quiz-option {
|
||||
background: white;
|
||||
padding: 16px 20px;
|
||||
margin-bottom: 12px;
|
||||
border-radius: 12px;
|
||||
cursor: pointer;
|
||||
transition: all 0.2s;
|
||||
border: 2px solid transparent;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 12px;
|
||||
}
|
||||
|
||||
.quiz-option:hover {
|
||||
border-color: var(--qx-blue);
|
||||
transform: translateX(4px);
|
||||
}
|
||||
|
||||
.quiz-option.correct {
|
||||
background: var(--qx-green);
|
||||
color: white;
|
||||
border-color: var(--qx-green);
|
||||
}
|
||||
|
||||
.quiz-option.wrong {
|
||||
background: #ff4444;
|
||||
color: white;
|
||||
border-color: #ff4444;
|
||||
}
|
||||
|
||||
.quiz-option.disabled {
|
||||
pointer-events: none;
|
||||
opacity: 0.7;
|
||||
}
|
||||
|
||||
.quiz-letter {
|
||||
width: 32px;
|
||||
height: 32px;
|
||||
border-radius: 50%;
|
||||
background: var(--qx-gray);
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
font-weight: 600;
|
||||
flex-shrink: 0;
|
||||
}
|
||||
|
||||
.quiz-option:hover .quiz-letter {
|
||||
background: var(--qx-blue);
|
||||
color: white;
|
||||
}
|
||||
|
||||
.quiz-option.correct .quiz-letter,
|
||||
.quiz-option.wrong .quiz-letter {
|
||||
background: rgba(255,255,255,0.3);
|
||||
}
|
||||
|
||||
.quiz-feedback {
|
||||
margin-top: 20px;
|
||||
padding: 20px;
|
||||
border-radius: 12px;
|
||||
display: none;
|
||||
font-size: 1rem;
|
||||
}
|
||||
|
||||
.quiz-feedback.show {
|
||||
display: block;
|
||||
}
|
||||
|
||||
.lesson-nav {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
margin-top: 60px;
|
||||
padding-top: 40px;
|
||||
border-top: 2px solid var(--qx-gray);
|
||||
}
|
||||
|
||||
.nav-btn {
|
||||
padding: 14px 28px;
|
||||
border-radius: 10px;
|
||||
text-decoration: none;
|
||||
font-weight: 600;
|
||||
transition: all 0.2s;
|
||||
display: inline-flex;
|
||||
align-items: center;
|
||||
gap: 8px;
|
||||
}
|
||||
|
||||
.nav-btn.prev {
|
||||
background: var(--qx-gray);
|
||||
color: var(--qx-black);
|
||||
}
|
||||
|
||||
.nav-btn.next {
|
||||
background: var(--qx-blue);
|
||||
color: white;
|
||||
}
|
||||
|
||||
.nav-btn:hover {
|
||||
transform: translateY(-2px);
|
||||
box-shadow: 0 4px 12px rgba(0,0,0,0.15);
|
||||
}
|
||||
|
||||
.complete-btn {
|
||||
display: block;
|
||||
width: 100%;
|
||||
max-width: 400px;
|
||||
margin: 48px auto;
|
||||
padding: 18px 32px;
|
||||
background: var(--qx-green);
|
||||
color: white;
|
||||
border: none;
|
||||
border-radius: 12px;
|
||||
font-size: 1.1rem;
|
||||
font-weight: 600;
|
||||
cursor: pointer;
|
||||
transition: all 0.2s;
|
||||
}
|
||||
|
||||
.complete-btn:hover {
|
||||
transform: translateY(-2px);
|
||||
box-shadow: 0 4px 16px rgba(0,200,83,0.3);
|
||||
}
|
||||
|
||||
.complete-btn.completed {
|
||||
background: var(--qx-gray);
|
||||
color: var(--qx-text-muted);
|
||||
cursor: default;
|
||||
}
|
||||
|
||||
@media (max-width: 768px) {
|
||||
.lesson-title { font-size: 1.75rem; }
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<div class="progress-container">
|
||||
<div class="progress-bar">
|
||||
<div class="progress-fill" id="lessonProgress" style="width: 0%"></div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="lesson-container">
|
||||
<header class="lesson-header">
|
||||
<div class="lesson-module">GPS och plats — Varför plats är viktigt och hur du optimerar det</div>
|
||||
<h1 class="lesson-title">GPS-accuracy — så fungerar det</h1>
|
||||
<div class="lesson-meta">
|
||||
<span>⏱️ 10 min</span>
|
||||
<span>🎯 Medel</span>
|
||||
<span>📚 Läsa</span>
|
||||
</div>
|
||||
</header>
|
||||
|
||||
<div class="content-block">
|
||||
<p>GPS-accuracy avgör hur nära du måste vara det angivna objektet.</p>
|
||||
</div>
|
||||
|
||||
<div class="tip-box">
|
||||
<strong>💡 Tips</strong>
|
||||
<p>• Stå stilla när du tar bilden</p>
|
||||
<p>• Undrar tak och täta byggnader</p>
|
||||
<p>• Vänta på att accuracy-cirkeln blir liten</p>
|
||||
</div>
|
||||
|
||||
<div class="quiz-container">
|
||||
<div class="quiz-question">Var får du bäst GPS-accuracy?</div>
|
||||
<ul class="quiz-options">
|
||||
<li class="quiz-option" onclick="checkAnswer(this, False)">
|
||||
<span class="quiz-letter">A</span>
|
||||
<span>Inomhus i en källare</span>
|
||||
</li>
|
||||
<li class="quiz-option" onclick="checkAnswer(this, True)">
|
||||
<span class="quiz-letter">B</span>
|
||||
<span>Utomhus med fri sikt mot himlen</span>
|
||||
</li>
|
||||
<li class="quiz-option" onclick="checkAnswer(this, False)">
|
||||
<span class="quiz-letter">C</span>
|
||||
<span>I en tunnel</span>
|
||||
</li>
|
||||
</ul>
|
||||
<div class="quiz-feedback" id="quizFeedback"></div>
|
||||
</div>
|
||||
|
||||
<button class="complete-btn" id="completeBtn" onclick="completeLesson()">
|
||||
✅ Markera lektion som klar
|
||||
</button>
|
||||
|
||||
<nav class="lesson-nav">
|
||||
<a href="/academy/module2/m2l4" class="nav-btn prev">← Föregående</a>
|
||||
<a href="/academy/module3/m3l2" class="nav-btn next">Nästa: Bästa praxis för platsdata →</a>
|
||||
</nav>
|
||||
</div>
|
||||
|
||||
<script>
|
||||
const lessonId = 'm3l1';
|
||||
let completedLessons = JSON.parse(localStorage.getItem('academyProgress') || '[]');
|
||||
|
||||
function checkAnswer(element, isCorrect) {
|
||||
const options = document.querySelectorAll('.quiz-option');
|
||||
const feedback = document.getElementById('quizFeedback');
|
||||
|
||||
options.forEach(opt => opt.classList.add('disabled'));
|
||||
|
||||
if (isCorrect) {
|
||||
element.classList.add('correct');
|
||||
feedback.innerHTML = '<strong>✅ Rätt!</strong> Bra jobbat!';
|
||||
feedback.style.background = '#d4edda';
|
||||
feedback.style.color = '#155724';
|
||||
} else {
|
||||
element.classList.add('wrong');
|
||||
feedback.innerHTML = '<strong>❌ Inte riktigt.</strong> Tänk igenom svaret en gång till.';
|
||||
feedback.style.background = '#f8d7da';
|
||||
feedback.style.color = '#721c24';
|
||||
}
|
||||
|
||||
feedback.classList.add('show');
|
||||
}
|
||||
|
||||
function completeLesson() {
|
||||
if (!completedLessons.includes(lessonId)) {
|
||||
completedLessons.push(lessonId);
|
||||
localStorage.setItem('academyProgress', JSON.stringify(completedLessons));
|
||||
|
||||
const btn = document.getElementById('completeBtn');
|
||||
btn.textContent = '✅ Lektion klar!';
|
||||
btn.classList.add('completed');
|
||||
btn.disabled = true;
|
||||
|
||||
btn.style.transform = 'scale(1.05)';
|
||||
setTimeout(() => btn.style.transform = 'scale(1)', 200);
|
||||
}
|
||||
}
|
||||
|
||||
if (completedLessons.includes(lessonId)) {
|
||||
const btn = document.getElementById('completeBtn');
|
||||
btn.textContent = '✅ Lektion klar!';
|
||||
btn.classList.add('completed');
|
||||
btn.disabled = true;
|
||||
}
|
||||
</script>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,417 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="sv">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>Bästa praxis för platsdata — quiXzoom Academy</title>
|
||||
<style>
|
||||
:root {
|
||||
--qx-black: #0a0a0a;
|
||||
--qx-white: #ffffff;
|
||||
--qx-blue: #0066FF;
|
||||
--qx-green: #00C853;
|
||||
--qx-gray: #F5F5F7;
|
||||
--qx-dark-gray: #1a1a1a;
|
||||
--qx-text-muted: #6e6e73;
|
||||
--qx-purple: #7B61FF;
|
||||
--qx-orange: #FF6B35;
|
||||
}
|
||||
|
||||
* { margin: 0; padding: 0; box-sizing: border-box; }
|
||||
|
||||
body {
|
||||
font-family: -apple-system, BlinkMacSystemFont, 'SF Pro Display', sans-serif;
|
||||
color: var(--qx-black);
|
||||
background: var(--qx-white);
|
||||
line-height: 1.6;
|
||||
}
|
||||
|
||||
.progress-container {
|
||||
position: sticky;
|
||||
top: 0;
|
||||
background: white;
|
||||
padding: 12px 20px;
|
||||
border-bottom: 1px solid var(--qx-gray);
|
||||
z-index: 100;
|
||||
}
|
||||
|
||||
.progress-bar {
|
||||
max-width: 600px;
|
||||
margin: 0 auto;
|
||||
background: var(--qx-gray);
|
||||
border-radius: 10px;
|
||||
height: 8px;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.progress-fill {
|
||||
background: var(--qx-green);
|
||||
height: 100%;
|
||||
width: 0%;
|
||||
transition: width 0.5s ease;
|
||||
}
|
||||
|
||||
.lesson-container {
|
||||
max-width: 800px;
|
||||
margin: 0 auto;
|
||||
padding: 40px 20px;
|
||||
}
|
||||
|
||||
.lesson-header {
|
||||
margin-bottom: 48px;
|
||||
}
|
||||
|
||||
.lesson-module {
|
||||
color: var(--qx-blue);
|
||||
font-size: 0.875rem;
|
||||
text-transform: uppercase;
|
||||
letter-spacing: 2px;
|
||||
margin-bottom: 8px;
|
||||
}
|
||||
|
||||
.lesson-title {
|
||||
font-size: 2.5rem;
|
||||
margin-bottom: 16px;
|
||||
line-height: 1.2;
|
||||
}
|
||||
|
||||
.lesson-meta {
|
||||
color: var(--qx-text-muted);
|
||||
font-size: 0.9rem;
|
||||
display: flex;
|
||||
gap: 16px;
|
||||
}
|
||||
|
||||
.content-block {
|
||||
margin-bottom: 48px;
|
||||
}
|
||||
|
||||
.content-block h2 {
|
||||
font-size: 1.75rem;
|
||||
margin-bottom: 20px;
|
||||
}
|
||||
|
||||
.content-block p {
|
||||
margin-bottom: 16px;
|
||||
color: #333;
|
||||
font-size: 1.05rem;
|
||||
}
|
||||
|
||||
.content-block ul {
|
||||
margin-left: 24px;
|
||||
margin-bottom: 16px;
|
||||
}
|
||||
|
||||
.content-block li {
|
||||
margin-bottom: 12px;
|
||||
}
|
||||
|
||||
.tip-box {
|
||||
background: #e8f4fd;
|
||||
border-left: 4px solid var(--qx-blue);
|
||||
padding: 24px;
|
||||
margin: 24px 0;
|
||||
border-radius: 0 12px 12px 0;
|
||||
}
|
||||
|
||||
.tip-box strong {
|
||||
color: var(--qx-blue);
|
||||
display: block;
|
||||
margin-bottom: 8px;
|
||||
}
|
||||
|
||||
.warning-box {
|
||||
background: #fff3cd;
|
||||
border-left: 4px solid var(--qx-orange);
|
||||
padding: 24px;
|
||||
margin: 24px 0;
|
||||
border-radius: 0 12px 12px 0;
|
||||
}
|
||||
|
||||
.warning-box strong {
|
||||
color: var(--qx-orange);
|
||||
display: block;
|
||||
margin-bottom: 8px;
|
||||
}
|
||||
|
||||
.example-box {
|
||||
background: var(--qx-gray);
|
||||
padding: 24px;
|
||||
border-radius: 12px;
|
||||
margin: 24px 0;
|
||||
}
|
||||
|
||||
.example-box h4 {
|
||||
margin-bottom: 12px;
|
||||
color: var(--qx-dark-gray);
|
||||
}
|
||||
|
||||
.quiz-container {
|
||||
background: var(--qx-gray);
|
||||
padding: 32px;
|
||||
border-radius: 16px;
|
||||
margin: 32px 0;
|
||||
}
|
||||
|
||||
.quiz-question {
|
||||
font-size: 1.25rem;
|
||||
font-weight: 600;
|
||||
margin-bottom: 24px;
|
||||
}
|
||||
|
||||
.quiz-options {
|
||||
list-style: none;
|
||||
}
|
||||
|
||||
.quiz-option {
|
||||
background: white;
|
||||
padding: 16px 20px;
|
||||
margin-bottom: 12px;
|
||||
border-radius: 12px;
|
||||
cursor: pointer;
|
||||
transition: all 0.2s;
|
||||
border: 2px solid transparent;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 12px;
|
||||
}
|
||||
|
||||
.quiz-option:hover {
|
||||
border-color: var(--qx-blue);
|
||||
transform: translateX(4px);
|
||||
}
|
||||
|
||||
.quiz-option.correct {
|
||||
background: var(--qx-green);
|
||||
color: white;
|
||||
border-color: var(--qx-green);
|
||||
}
|
||||
|
||||
.quiz-option.wrong {
|
||||
background: #ff4444;
|
||||
color: white;
|
||||
border-color: #ff4444;
|
||||
}
|
||||
|
||||
.quiz-option.disabled {
|
||||
pointer-events: none;
|
||||
opacity: 0.7;
|
||||
}
|
||||
|
||||
.quiz-letter {
|
||||
width: 32px;
|
||||
height: 32px;
|
||||
border-radius: 50%;
|
||||
background: var(--qx-gray);
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
font-weight: 600;
|
||||
flex-shrink: 0;
|
||||
}
|
||||
|
||||
.quiz-option:hover .quiz-letter {
|
||||
background: var(--qx-blue);
|
||||
color: white;
|
||||
}
|
||||
|
||||
.quiz-option.correct .quiz-letter,
|
||||
.quiz-option.wrong .quiz-letter {
|
||||
background: rgba(255,255,255,0.3);
|
||||
}
|
||||
|
||||
.quiz-feedback {
|
||||
margin-top: 20px;
|
||||
padding: 20px;
|
||||
border-radius: 12px;
|
||||
display: none;
|
||||
font-size: 1rem;
|
||||
}
|
||||
|
||||
.quiz-feedback.show {
|
||||
display: block;
|
||||
}
|
||||
|
||||
.lesson-nav {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
margin-top: 60px;
|
||||
padding-top: 40px;
|
||||
border-top: 2px solid var(--qx-gray);
|
||||
}
|
||||
|
||||
.nav-btn {
|
||||
padding: 14px 28px;
|
||||
border-radius: 10px;
|
||||
text-decoration: none;
|
||||
font-weight: 600;
|
||||
transition: all 0.2s;
|
||||
display: inline-flex;
|
||||
align-items: center;
|
||||
gap: 8px;
|
||||
}
|
||||
|
||||
.nav-btn.prev {
|
||||
background: var(--qx-gray);
|
||||
color: var(--qx-black);
|
||||
}
|
||||
|
||||
.nav-btn.next {
|
||||
background: var(--qx-blue);
|
||||
color: white;
|
||||
}
|
||||
|
||||
.nav-btn:hover {
|
||||
transform: translateY(-2px);
|
||||
box-shadow: 0 4px 12px rgba(0,0,0,0.15);
|
||||
}
|
||||
|
||||
.complete-btn {
|
||||
display: block;
|
||||
width: 100%;
|
||||
max-width: 400px;
|
||||
margin: 48px auto;
|
||||
padding: 18px 32px;
|
||||
background: var(--qx-green);
|
||||
color: white;
|
||||
border: none;
|
||||
border-radius: 12px;
|
||||
font-size: 1.1rem;
|
||||
font-weight: 600;
|
||||
cursor: pointer;
|
||||
transition: all 0.2s;
|
||||
}
|
||||
|
||||
.complete-btn:hover {
|
||||
transform: translateY(-2px);
|
||||
box-shadow: 0 4px 16px rgba(0,200,83,0.3);
|
||||
}
|
||||
|
||||
.complete-btn.completed {
|
||||
background: var(--qx-gray);
|
||||
color: var(--qx-text-muted);
|
||||
cursor: default;
|
||||
}
|
||||
|
||||
@media (max-width: 768px) {
|
||||
.lesson-title { font-size: 1.75rem; }
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<div class="progress-container">
|
||||
<div class="progress-bar">
|
||||
<div class="progress-fill" id="lessonProgress" style="width: 0%"></div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="lesson-container">
|
||||
<header class="lesson-header">
|
||||
<div class="lesson-module">GPS och plats — Varför plats är viktigt och hur du optimerar det</div>
|
||||
<h1 class="lesson-title">Bästa praxis för platsdata</h1>
|
||||
<div class="lesson-meta">
|
||||
<span>⏱️ 8 min</span>
|
||||
<span>🎯 Medel</span>
|
||||
<span>📚 Läsa</span>
|
||||
</div>
|
||||
</header>
|
||||
|
||||
<div class="content-block">
|
||||
<p>För att säkerställa korrekt platsdata, följ dessa riktlinjer.</p>
|
||||
</div>
|
||||
|
||||
<div class="content-block">
|
||||
<h2>Bästa praxis</h2>
|
||||
<ul>
|
||||
<li>Aktivera alltid platstjänster</li>
|
||||
<li>Tillåt quiXzoom att använda GPS i bakgrunden</li>
|
||||
<li>Vänta på GPS-fix innan du fotograferar</li>
|
||||
<li>Kolla att koordinaterna stämmer på kartan</li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<div class="warning-box">
|
||||
<strong>⚠️ Viktigt</strong>
|
||||
<p>Felaktiga GPS-koordinater kan leda till avvisade bilder.</p>
|
||||
</div>
|
||||
|
||||
<div class="quiz-container">
|
||||
<div class="quiz-question">Vad ska du göra innan du fotograferar?</div>
|
||||
<ul class="quiz-options">
|
||||
<li class="quiz-option" onclick="checkAnswer(this, False)">
|
||||
<span class="quiz-letter">A</span>
|
||||
<span>Stäng av GPS för att spara batteri</span>
|
||||
</li>
|
||||
<li class="quiz-option" onclick="checkAnswer(this, True)">
|
||||
<span class="quiz-letter">B</span>
|
||||
<span>Vänta på GPS-fix och kolla koordinaterna</span>
|
||||
</li>
|
||||
<li class="quiz-option" onclick="checkAnswer(this, False)">
|
||||
<span class="quiz-letter">C</span>
|
||||
<span>Fotografera direkt utan att kolla GPS</span>
|
||||
</li>
|
||||
</ul>
|
||||
<div class="quiz-feedback" id="quizFeedback"></div>
|
||||
</div>
|
||||
|
||||
<button class="complete-btn" id="completeBtn" onclick="completeLesson()">
|
||||
✅ Markera lektion som klar
|
||||
</button>
|
||||
|
||||
<nav class="lesson-nav">
|
||||
<a href="/academy/module3/m3l1" class="nav-btn prev">← Föregående</a>
|
||||
<a href="/academy/module3/m3l3" class="nav-btn next">Nästa: Vanliga GPS-fel och hur du undviker dem →</a>
|
||||
</nav>
|
||||
</div>
|
||||
|
||||
<script>
|
||||
const lessonId = 'm3l2';
|
||||
let completedLessons = JSON.parse(localStorage.getItem('academyProgress') || '[]');
|
||||
|
||||
function checkAnswer(element, isCorrect) {
|
||||
const options = document.querySelectorAll('.quiz-option');
|
||||
const feedback = document.getElementById('quizFeedback');
|
||||
|
||||
options.forEach(opt => opt.classList.add('disabled'));
|
||||
|
||||
if (isCorrect) {
|
||||
element.classList.add('correct');
|
||||
feedback.innerHTML = '<strong>✅ Rätt!</strong> Bra jobbat!';
|
||||
feedback.style.background = '#d4edda';
|
||||
feedback.style.color = '#155724';
|
||||
} else {
|
||||
element.classList.add('wrong');
|
||||
feedback.innerHTML = '<strong>❌ Inte riktigt.</strong> Tänk igenom svaret en gång till.';
|
||||
feedback.style.background = '#f8d7da';
|
||||
feedback.style.color = '#721c24';
|
||||
}
|
||||
|
||||
feedback.classList.add('show');
|
||||
}
|
||||
|
||||
function completeLesson() {
|
||||
if (!completedLessons.includes(lessonId)) {
|
||||
completedLessons.push(lessonId);
|
||||
localStorage.setItem('academyProgress', JSON.stringify(completedLessons));
|
||||
|
||||
const btn = document.getElementById('completeBtn');
|
||||
btn.textContent = '✅ Lektion klar!';
|
||||
btn.classList.add('completed');
|
||||
btn.disabled = true;
|
||||
|
||||
btn.style.transform = 'scale(1.05)';
|
||||
setTimeout(() => btn.style.transform = 'scale(1)', 200);
|
||||
}
|
||||
}
|
||||
|
||||
if (completedLessons.includes(lessonId)) {
|
||||
const btn = document.getElementById('completeBtn');
|
||||
btn.textContent = '✅ Lektion klar!';
|
||||
btn.classList.add('completed');
|
||||
btn.disabled = true;
|
||||
}
|
||||
</script>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,422 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="sv">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>Vanliga GPS-fel och hur du undviker dem — quiXzoom Academy</title>
|
||||
<style>
|
||||
:root {
|
||||
--qx-black: #0a0a0a;
|
||||
--qx-white: #ffffff;
|
||||
--qx-blue: #0066FF;
|
||||
--qx-green: #00C853;
|
||||
--qx-gray: #F5F5F7;
|
||||
--qx-dark-gray: #1a1a1a;
|
||||
--qx-text-muted: #6e6e73;
|
||||
--qx-purple: #7B61FF;
|
||||
--qx-orange: #FF6B35;
|
||||
}
|
||||
|
||||
* { margin: 0; padding: 0; box-sizing: border-box; }
|
||||
|
||||
body {
|
||||
font-family: -apple-system, BlinkMacSystemFont, 'SF Pro Display', sans-serif;
|
||||
color: var(--qx-black);
|
||||
background: var(--qx-white);
|
||||
line-height: 1.6;
|
||||
}
|
||||
|
||||
.progress-container {
|
||||
position: sticky;
|
||||
top: 0;
|
||||
background: white;
|
||||
padding: 12px 20px;
|
||||
border-bottom: 1px solid var(--qx-gray);
|
||||
z-index: 100;
|
||||
}
|
||||
|
||||
.progress-bar {
|
||||
max-width: 600px;
|
||||
margin: 0 auto;
|
||||
background: var(--qx-gray);
|
||||
border-radius: 10px;
|
||||
height: 8px;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.progress-fill {
|
||||
background: var(--qx-green);
|
||||
height: 100%;
|
||||
width: 0%;
|
||||
transition: width 0.5s ease;
|
||||
}
|
||||
|
||||
.lesson-container {
|
||||
max-width: 800px;
|
||||
margin: 0 auto;
|
||||
padding: 40px 20px;
|
||||
}
|
||||
|
||||
.lesson-header {
|
||||
margin-bottom: 48px;
|
||||
}
|
||||
|
||||
.lesson-module {
|
||||
color: var(--qx-blue);
|
||||
font-size: 0.875rem;
|
||||
text-transform: uppercase;
|
||||
letter-spacing: 2px;
|
||||
margin-bottom: 8px;
|
||||
}
|
||||
|
||||
.lesson-title {
|
||||
font-size: 2.5rem;
|
||||
margin-bottom: 16px;
|
||||
line-height: 1.2;
|
||||
}
|
||||
|
||||
.lesson-meta {
|
||||
color: var(--qx-text-muted);
|
||||
font-size: 0.9rem;
|
||||
display: flex;
|
||||
gap: 16px;
|
||||
}
|
||||
|
||||
.content-block {
|
||||
margin-bottom: 48px;
|
||||
}
|
||||
|
||||
.content-block h2 {
|
||||
font-size: 1.75rem;
|
||||
margin-bottom: 20px;
|
||||
}
|
||||
|
||||
.content-block p {
|
||||
margin-bottom: 16px;
|
||||
color: #333;
|
||||
font-size: 1.05rem;
|
||||
}
|
||||
|
||||
.content-block ul {
|
||||
margin-left: 24px;
|
||||
margin-bottom: 16px;
|
||||
}
|
||||
|
||||
.content-block li {
|
||||
margin-bottom: 12px;
|
||||
}
|
||||
|
||||
.tip-box {
|
||||
background: #e8f4fd;
|
||||
border-left: 4px solid var(--qx-blue);
|
||||
padding: 24px;
|
||||
margin: 24px 0;
|
||||
border-radius: 0 12px 12px 0;
|
||||
}
|
||||
|
||||
.tip-box strong {
|
||||
color: var(--qx-blue);
|
||||
display: block;
|
||||
margin-bottom: 8px;
|
||||
}
|
||||
|
||||
.warning-box {
|
||||
background: #fff3cd;
|
||||
border-left: 4px solid var(--qx-orange);
|
||||
padding: 24px;
|
||||
margin: 24px 0;
|
||||
border-radius: 0 12px 12px 0;
|
||||
}
|
||||
|
||||
.warning-box strong {
|
||||
color: var(--qx-orange);
|
||||
display: block;
|
||||
margin-bottom: 8px;
|
||||
}
|
||||
|
||||
.example-box {
|
||||
background: var(--qx-gray);
|
||||
padding: 24px;
|
||||
border-radius: 12px;
|
||||
margin: 24px 0;
|
||||
}
|
||||
|
||||
.example-box h4 {
|
||||
margin-bottom: 12px;
|
||||
color: var(--qx-dark-gray);
|
||||
}
|
||||
|
||||
.quiz-container {
|
||||
background: var(--qx-gray);
|
||||
padding: 32px;
|
||||
border-radius: 16px;
|
||||
margin: 32px 0;
|
||||
}
|
||||
|
||||
.quiz-question {
|
||||
font-size: 1.25rem;
|
||||
font-weight: 600;
|
||||
margin-bottom: 24px;
|
||||
}
|
||||
|
||||
.quiz-options {
|
||||
list-style: none;
|
||||
}
|
||||
|
||||
.quiz-option {
|
||||
background: white;
|
||||
padding: 16px 20px;
|
||||
margin-bottom: 12px;
|
||||
border-radius: 12px;
|
||||
cursor: pointer;
|
||||
transition: all 0.2s;
|
||||
border: 2px solid transparent;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 12px;
|
||||
}
|
||||
|
||||
.quiz-option:hover {
|
||||
border-color: var(--qx-blue);
|
||||
transform: translateX(4px);
|
||||
}
|
||||
|
||||
.quiz-option.correct {
|
||||
background: var(--qx-green);
|
||||
color: white;
|
||||
border-color: var(--qx-green);
|
||||
}
|
||||
|
||||
.quiz-option.wrong {
|
||||
background: #ff4444;
|
||||
color: white;
|
||||
border-color: #ff4444;
|
||||
}
|
||||
|
||||
.quiz-option.disabled {
|
||||
pointer-events: none;
|
||||
opacity: 0.7;
|
||||
}
|
||||
|
||||
.quiz-letter {
|
||||
width: 32px;
|
||||
height: 32px;
|
||||
border-radius: 50%;
|
||||
background: var(--qx-gray);
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
font-weight: 600;
|
||||
flex-shrink: 0;
|
||||
}
|
||||
|
||||
.quiz-option:hover .quiz-letter {
|
||||
background: var(--qx-blue);
|
||||
color: white;
|
||||
}
|
||||
|
||||
.quiz-option.correct .quiz-letter,
|
||||
.quiz-option.wrong .quiz-letter {
|
||||
background: rgba(255,255,255,0.3);
|
||||
}
|
||||
|
||||
.quiz-feedback {
|
||||
margin-top: 20px;
|
||||
padding: 20px;
|
||||
border-radius: 12px;
|
||||
display: none;
|
||||
font-size: 1rem;
|
||||
}
|
||||
|
||||
.quiz-feedback.show {
|
||||
display: block;
|
||||
}
|
||||
|
||||
.lesson-nav {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
margin-top: 60px;
|
||||
padding-top: 40px;
|
||||
border-top: 2px solid var(--qx-gray);
|
||||
}
|
||||
|
||||
.nav-btn {
|
||||
padding: 14px 28px;
|
||||
border-radius: 10px;
|
||||
text-decoration: none;
|
||||
font-weight: 600;
|
||||
transition: all 0.2s;
|
||||
display: inline-flex;
|
||||
align-items: center;
|
||||
gap: 8px;
|
||||
}
|
||||
|
||||
.nav-btn.prev {
|
||||
background: var(--qx-gray);
|
||||
color: var(--qx-black);
|
||||
}
|
||||
|
||||
.nav-btn.next {
|
||||
background: var(--qx-blue);
|
||||
color: white;
|
||||
}
|
||||
|
||||
.nav-btn:hover {
|
||||
transform: translateY(-2px);
|
||||
box-shadow: 0 4px 12px rgba(0,0,0,0.15);
|
||||
}
|
||||
|
||||
.complete-btn {
|
||||
display: block;
|
||||
width: 100%;
|
||||
max-width: 400px;
|
||||
margin: 48px auto;
|
||||
padding: 18px 32px;
|
||||
background: var(--qx-green);
|
||||
color: white;
|
||||
border: none;
|
||||
border-radius: 12px;
|
||||
font-size: 1.1rem;
|
||||
font-weight: 600;
|
||||
cursor: pointer;
|
||||
transition: all 0.2s;
|
||||
}
|
||||
|
||||
.complete-btn:hover {
|
||||
transform: translateY(-2px);
|
||||
box-shadow: 0 4px 16px rgba(0,200,83,0.3);
|
||||
}
|
||||
|
||||
.complete-btn.completed {
|
||||
background: var(--qx-gray);
|
||||
color: var(--qx-text-muted);
|
||||
cursor: default;
|
||||
}
|
||||
|
||||
@media (max-width: 768px) {
|
||||
.lesson-title { font-size: 1.75rem; }
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<div class="progress-container">
|
||||
<div class="progress-bar">
|
||||
<div class="progress-fill" id="lessonProgress" style="width: 0%"></div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="lesson-container">
|
||||
<header class="lesson-header">
|
||||
<div class="lesson-module">GPS och plats — Varför plats är viktigt och hur du optimerar det</div>
|
||||
<h1 class="lesson-title">Vanliga GPS-fel och hur du undviker dem</h1>
|
||||
<div class="lesson-meta">
|
||||
<span>⏱️ 12 min</span>
|
||||
<span>🎯 Medel</span>
|
||||
<span>📚 Quiz</span>
|
||||
</div>
|
||||
</header>
|
||||
|
||||
<div class="content-block">
|
||||
<p>Här är de vanligaste GPS-felen och hur du undviker dem.</p>
|
||||
</div>
|
||||
|
||||
<div class="content-block">
|
||||
<h2>Vanliga fel</h2>
|
||||
<ul>
|
||||
<li>GPS är avstängt</li>
|
||||
<li>Dålig accuracy under tak</li>
|
||||
<li>Felaktiga koordinater</li>
|
||||
<li>Tidsstämpel stämmer inte</li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<div class="content-block">
|
||||
<h2>Lösningar</h2>
|
||||
<ul>
|
||||
<li>Kontrollera att platstjänster är på</li>
|
||||
<li>Flytta utomhus om accuracy är dålig</li>
|
||||
<li>Starta om appen om koordinaterna verkar fel</li>
|
||||
<li>Kolla att telefonens klocka är korrekt</li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<div class="quiz-container">
|
||||
<div class="quiz-question">Vad gör du om GPS-accuracy är dålig?</div>
|
||||
<ul class="quiz-options">
|
||||
<li class="quiz-option" onclick="checkAnswer(this, False)">
|
||||
<span class="quiz-letter">A</span>
|
||||
<span>Fotograferar ändå</span>
|
||||
</li>
|
||||
<li class="quiz-option" onclick="checkAnswer(this, True)">
|
||||
<span class="quiz-letter">B</span>
|
||||
<span>Flyttar utomhus med fri sikt</span>
|
||||
</li>
|
||||
<li class="quiz-option" onclick="checkAnswer(this, False)">
|
||||
<span class="quiz-letter">C</span>
|
||||
<span>Stänger av och startar om telefonen</span>
|
||||
</li>
|
||||
</ul>
|
||||
<div class="quiz-feedback" id="quizFeedback"></div>
|
||||
</div>
|
||||
|
||||
<button class="complete-btn" id="completeBtn" onclick="completeLesson()">
|
||||
✅ Markera lektion som klar
|
||||
</button>
|
||||
|
||||
<nav class="lesson-nav">
|
||||
<a href="/academy/module3/m3l2" class="nav-btn prev">← Föregående</a>
|
||||
<a href="/academy/module4/m4l1" class="nav-btn next">Nästa: Personlig säkerhet i fält →</a>
|
||||
</nav>
|
||||
</div>
|
||||
|
||||
<script>
|
||||
const lessonId = 'm3l3';
|
||||
let completedLessons = JSON.parse(localStorage.getItem('academyProgress') || '[]');
|
||||
|
||||
function checkAnswer(element, isCorrect) {
|
||||
const options = document.querySelectorAll('.quiz-option');
|
||||
const feedback = document.getElementById('quizFeedback');
|
||||
|
||||
options.forEach(opt => opt.classList.add('disabled'));
|
||||
|
||||
if (isCorrect) {
|
||||
element.classList.add('correct');
|
||||
feedback.innerHTML = '<strong>✅ Rätt!</strong> Bra jobbat!';
|
||||
feedback.style.background = '#d4edda';
|
||||
feedback.style.color = '#155724';
|
||||
} else {
|
||||
element.classList.add('wrong');
|
||||
feedback.innerHTML = '<strong>❌ Inte riktigt.</strong> Tänk igenom svaret en gång till.';
|
||||
feedback.style.background = '#f8d7da';
|
||||
feedback.style.color = '#721c24';
|
||||
}
|
||||
|
||||
feedback.classList.add('show');
|
||||
}
|
||||
|
||||
function completeLesson() {
|
||||
if (!completedLessons.includes(lessonId)) {
|
||||
completedLessons.push(lessonId);
|
||||
localStorage.setItem('academyProgress', JSON.stringify(completedLessons));
|
||||
|
||||
const btn = document.getElementById('completeBtn');
|
||||
btn.textContent = '✅ Lektion klar!';
|
||||
btn.classList.add('completed');
|
||||
btn.disabled = true;
|
||||
|
||||
btn.style.transform = 'scale(1.05)';
|
||||
setTimeout(() => btn.style.transform = 'scale(1)', 200);
|
||||
}
|
||||
}
|
||||
|
||||
if (completedLessons.includes(lessonId)) {
|
||||
const btn = document.getElementById('completeBtn');
|
||||
btn.textContent = '✅ Lektion klar!';
|
||||
btn.classList.add('completed');
|
||||
btn.disabled = true;
|
||||
}
|
||||
</script>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,417 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="sv">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>Personlig säkerhet i fält — quiXzoom Academy</title>
|
||||
<style>
|
||||
:root {
|
||||
--qx-black: #0a0a0a;
|
||||
--qx-white: #ffffff;
|
||||
--qx-blue: #0066FF;
|
||||
--qx-green: #00C853;
|
||||
--qx-gray: #F5F5F7;
|
||||
--qx-dark-gray: #1a1a1a;
|
||||
--qx-text-muted: #6e6e73;
|
||||
--qx-purple: #7B61FF;
|
||||
--qx-orange: #FF6B35;
|
||||
}
|
||||
|
||||
* { margin: 0; padding: 0; box-sizing: border-box; }
|
||||
|
||||
body {
|
||||
font-family: -apple-system, BlinkMacSystemFont, 'SF Pro Display', sans-serif;
|
||||
color: var(--qx-black);
|
||||
background: var(--qx-white);
|
||||
line-height: 1.6;
|
||||
}
|
||||
|
||||
.progress-container {
|
||||
position: sticky;
|
||||
top: 0;
|
||||
background: white;
|
||||
padding: 12px 20px;
|
||||
border-bottom: 1px solid var(--qx-gray);
|
||||
z-index: 100;
|
||||
}
|
||||
|
||||
.progress-bar {
|
||||
max-width: 600px;
|
||||
margin: 0 auto;
|
||||
background: var(--qx-gray);
|
||||
border-radius: 10px;
|
||||
height: 8px;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.progress-fill {
|
||||
background: var(--qx-green);
|
||||
height: 100%;
|
||||
width: 0%;
|
||||
transition: width 0.5s ease;
|
||||
}
|
||||
|
||||
.lesson-container {
|
||||
max-width: 800px;
|
||||
margin: 0 auto;
|
||||
padding: 40px 20px;
|
||||
}
|
||||
|
||||
.lesson-header {
|
||||
margin-bottom: 48px;
|
||||
}
|
||||
|
||||
.lesson-module {
|
||||
color: var(--qx-blue);
|
||||
font-size: 0.875rem;
|
||||
text-transform: uppercase;
|
||||
letter-spacing: 2px;
|
||||
margin-bottom: 8px;
|
||||
}
|
||||
|
||||
.lesson-title {
|
||||
font-size: 2.5rem;
|
||||
margin-bottom: 16px;
|
||||
line-height: 1.2;
|
||||
}
|
||||
|
||||
.lesson-meta {
|
||||
color: var(--qx-text-muted);
|
||||
font-size: 0.9rem;
|
||||
display: flex;
|
||||
gap: 16px;
|
||||
}
|
||||
|
||||
.content-block {
|
||||
margin-bottom: 48px;
|
||||
}
|
||||
|
||||
.content-block h2 {
|
||||
font-size: 1.75rem;
|
||||
margin-bottom: 20px;
|
||||
}
|
||||
|
||||
.content-block p {
|
||||
margin-bottom: 16px;
|
||||
color: #333;
|
||||
font-size: 1.05rem;
|
||||
}
|
||||
|
||||
.content-block ul {
|
||||
margin-left: 24px;
|
||||
margin-bottom: 16px;
|
||||
}
|
||||
|
||||
.content-block li {
|
||||
margin-bottom: 12px;
|
||||
}
|
||||
|
||||
.tip-box {
|
||||
background: #e8f4fd;
|
||||
border-left: 4px solid var(--qx-blue);
|
||||
padding: 24px;
|
||||
margin: 24px 0;
|
||||
border-radius: 0 12px 12px 0;
|
||||
}
|
||||
|
||||
.tip-box strong {
|
||||
color: var(--qx-blue);
|
||||
display: block;
|
||||
margin-bottom: 8px;
|
||||
}
|
||||
|
||||
.warning-box {
|
||||
background: #fff3cd;
|
||||
border-left: 4px solid var(--qx-orange);
|
||||
padding: 24px;
|
||||
margin: 24px 0;
|
||||
border-radius: 0 12px 12px 0;
|
||||
}
|
||||
|
||||
.warning-box strong {
|
||||
color: var(--qx-orange);
|
||||
display: block;
|
||||
margin-bottom: 8px;
|
||||
}
|
||||
|
||||
.example-box {
|
||||
background: var(--qx-gray);
|
||||
padding: 24px;
|
||||
border-radius: 12px;
|
||||
margin: 24px 0;
|
||||
}
|
||||
|
||||
.example-box h4 {
|
||||
margin-bottom: 12px;
|
||||
color: var(--qx-dark-gray);
|
||||
}
|
||||
|
||||
.quiz-container {
|
||||
background: var(--qx-gray);
|
||||
padding: 32px;
|
||||
border-radius: 16px;
|
||||
margin: 32px 0;
|
||||
}
|
||||
|
||||
.quiz-question {
|
||||
font-size: 1.25rem;
|
||||
font-weight: 600;
|
||||
margin-bottom: 24px;
|
||||
}
|
||||
|
||||
.quiz-options {
|
||||
list-style: none;
|
||||
}
|
||||
|
||||
.quiz-option {
|
||||
background: white;
|
||||
padding: 16px 20px;
|
||||
margin-bottom: 12px;
|
||||
border-radius: 12px;
|
||||
cursor: pointer;
|
||||
transition: all 0.2s;
|
||||
border: 2px solid transparent;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 12px;
|
||||
}
|
||||
|
||||
.quiz-option:hover {
|
||||
border-color: var(--qx-blue);
|
||||
transform: translateX(4px);
|
||||
}
|
||||
|
||||
.quiz-option.correct {
|
||||
background: var(--qx-green);
|
||||
color: white;
|
||||
border-color: var(--qx-green);
|
||||
}
|
||||
|
||||
.quiz-option.wrong {
|
||||
background: #ff4444;
|
||||
color: white;
|
||||
border-color: #ff4444;
|
||||
}
|
||||
|
||||
.quiz-option.disabled {
|
||||
pointer-events: none;
|
||||
opacity: 0.7;
|
||||
}
|
||||
|
||||
.quiz-letter {
|
||||
width: 32px;
|
||||
height: 32px;
|
||||
border-radius: 50%;
|
||||
background: var(--qx-gray);
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
font-weight: 600;
|
||||
flex-shrink: 0;
|
||||
}
|
||||
|
||||
.quiz-option:hover .quiz-letter {
|
||||
background: var(--qx-blue);
|
||||
color: white;
|
||||
}
|
||||
|
||||
.quiz-option.correct .quiz-letter,
|
||||
.quiz-option.wrong .quiz-letter {
|
||||
background: rgba(255,255,255,0.3);
|
||||
}
|
||||
|
||||
.quiz-feedback {
|
||||
margin-top: 20px;
|
||||
padding: 20px;
|
||||
border-radius: 12px;
|
||||
display: none;
|
||||
font-size: 1rem;
|
||||
}
|
||||
|
||||
.quiz-feedback.show {
|
||||
display: block;
|
||||
}
|
||||
|
||||
.lesson-nav {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
margin-top: 60px;
|
||||
padding-top: 40px;
|
||||
border-top: 2px solid var(--qx-gray);
|
||||
}
|
||||
|
||||
.nav-btn {
|
||||
padding: 14px 28px;
|
||||
border-radius: 10px;
|
||||
text-decoration: none;
|
||||
font-weight: 600;
|
||||
transition: all 0.2s;
|
||||
display: inline-flex;
|
||||
align-items: center;
|
||||
gap: 8px;
|
||||
}
|
||||
|
||||
.nav-btn.prev {
|
||||
background: var(--qx-gray);
|
||||
color: var(--qx-black);
|
||||
}
|
||||
|
||||
.nav-btn.next {
|
||||
background: var(--qx-blue);
|
||||
color: white;
|
||||
}
|
||||
|
||||
.nav-btn:hover {
|
||||
transform: translateY(-2px);
|
||||
box-shadow: 0 4px 12px rgba(0,0,0,0.15);
|
||||
}
|
||||
|
||||
.complete-btn {
|
||||
display: block;
|
||||
width: 100%;
|
||||
max-width: 400px;
|
||||
margin: 48px auto;
|
||||
padding: 18px 32px;
|
||||
background: var(--qx-green);
|
||||
color: white;
|
||||
border: none;
|
||||
border-radius: 12px;
|
||||
font-size: 1.1rem;
|
||||
font-weight: 600;
|
||||
cursor: pointer;
|
||||
transition: all 0.2s;
|
||||
}
|
||||
|
||||
.complete-btn:hover {
|
||||
transform: translateY(-2px);
|
||||
box-shadow: 0 4px 16px rgba(0,200,83,0.3);
|
||||
}
|
||||
|
||||
.complete-btn.completed {
|
||||
background: var(--qx-gray);
|
||||
color: var(--qx-text-muted);
|
||||
cursor: default;
|
||||
}
|
||||
|
||||
@media (max-width: 768px) {
|
||||
.lesson-title { font-size: 1.75rem; }
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<div class="progress-container">
|
||||
<div class="progress-bar">
|
||||
<div class="progress-fill" id="lessonProgress" style="width: 0%"></div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="lesson-container">
|
||||
<header class="lesson-header">
|
||||
<div class="lesson-module">Säkerhet och etik — Säker fotografering och etiska riktlinjer</div>
|
||||
<h1 class="lesson-title">Personlig säkerhet i fält</h1>
|
||||
<div class="lesson-meta">
|
||||
<span>⏱️ 15 min</span>
|
||||
<span>🎯 Medel</span>
|
||||
<span>📚 Video</span>
|
||||
</div>
|
||||
</header>
|
||||
|
||||
<div class="content-block">
|
||||
<p>Din säkerhet är viktigast. Följ alltid dessa riktlinjer när du fotograferar.</p>
|
||||
</div>
|
||||
|
||||
<div class="content-block">
|
||||
<h2>Säkerhetsregler</h2>
|
||||
<ul>
|
||||
<li>Bär alltid reflexväst vid vägar</li>
|
||||
<li>Stå på säkert avstånd från trafik</li>
|
||||
<li>Fotografera aldrig när du kör</li>
|
||||
<li>Var uppmärksam på din omgivning</li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<div class="warning-box">
|
||||
<strong>⚠️ Viktigt</strong>
|
||||
<p>quiXzoom ansvarar inte för olyckor som sker under fotografering. Du fotograferar på egen risk.</p>
|
||||
</div>
|
||||
|
||||
<div class="quiz-container">
|
||||
<div class="quiz-question">Vad ska du ALLTID bära vid vägar?</div>
|
||||
<ul class="quiz-options">
|
||||
<li class="quiz-option" onclick="checkAnswer(this, False)">
|
||||
<span class="quiz-letter">A</span>
|
||||
<span>Solglasögon</span>
|
||||
</li>
|
||||
<li class="quiz-option" onclick="checkAnswer(this, True)">
|
||||
<span class="quiz-letter">B</span>
|
||||
<span>Reflexväst</span>
|
||||
</li>
|
||||
<li class="quiz-option" onclick="checkAnswer(this, False)">
|
||||
<span class="quiz-letter">C</span>
|
||||
<span>Hörselskydd</span>
|
||||
</li>
|
||||
</ul>
|
||||
<div class="quiz-feedback" id="quizFeedback"></div>
|
||||
</div>
|
||||
|
||||
<button class="complete-btn" id="completeBtn" onclick="completeLesson()">
|
||||
✅ Markera lektion som klar
|
||||
</button>
|
||||
|
||||
<nav class="lesson-nav">
|
||||
<a href="/academy/module3/m3l3" class="nav-btn prev">← Föregående</a>
|
||||
<a href="/academy/module4/m4l2" class="nav-btn next">Nästa: Integritet och GDPR →</a>
|
||||
</nav>
|
||||
</div>
|
||||
|
||||
<script>
|
||||
const lessonId = 'm4l1';
|
||||
let completedLessons = JSON.parse(localStorage.getItem('academyProgress') || '[]');
|
||||
|
||||
function checkAnswer(element, isCorrect) {
|
||||
const options = document.querySelectorAll('.quiz-option');
|
||||
const feedback = document.getElementById('quizFeedback');
|
||||
|
||||
options.forEach(opt => opt.classList.add('disabled'));
|
||||
|
||||
if (isCorrect) {
|
||||
element.classList.add('correct');
|
||||
feedback.innerHTML = '<strong>✅ Rätt!</strong> Bra jobbat!';
|
||||
feedback.style.background = '#d4edda';
|
||||
feedback.style.color = '#155724';
|
||||
} else {
|
||||
element.classList.add('wrong');
|
||||
feedback.innerHTML = '<strong>❌ Inte riktigt.</strong> Tänk igenom svaret en gång till.';
|
||||
feedback.style.background = '#f8d7da';
|
||||
feedback.style.color = '#721c24';
|
||||
}
|
||||
|
||||
feedback.classList.add('show');
|
||||
}
|
||||
|
||||
function completeLesson() {
|
||||
if (!completedLessons.includes(lessonId)) {
|
||||
completedLessons.push(lessonId);
|
||||
localStorage.setItem('academyProgress', JSON.stringify(completedLessons));
|
||||
|
||||
const btn = document.getElementById('completeBtn');
|
||||
btn.textContent = '✅ Lektion klar!';
|
||||
btn.classList.add('completed');
|
||||
btn.disabled = true;
|
||||
|
||||
btn.style.transform = 'scale(1.05)';
|
||||
setTimeout(() => btn.style.transform = 'scale(1)', 200);
|
||||
}
|
||||
}
|
||||
|
||||
if (completedLessons.includes(lessonId)) {
|
||||
const btn = document.getElementById('completeBtn');
|
||||
btn.textContent = '✅ Lektion klar!';
|
||||
btn.classList.add('completed');
|
||||
btn.disabled = true;
|
||||
}
|
||||
</script>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,419 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="sv">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>Integritet och GDPR — quiXzoom Academy</title>
|
||||
<style>
|
||||
:root {
|
||||
--qx-black: #0a0a0a;
|
||||
--qx-white: #ffffff;
|
||||
--qx-blue: #0066FF;
|
||||
--qx-green: #00C853;
|
||||
--qx-gray: #F5F5F7;
|
||||
--qx-dark-gray: #1a1a1a;
|
||||
--qx-text-muted: #6e6e73;
|
||||
--qx-purple: #7B61FF;
|
||||
--qx-orange: #FF6B35;
|
||||
}
|
||||
|
||||
* { margin: 0; padding: 0; box-sizing: border-box; }
|
||||
|
||||
body {
|
||||
font-family: -apple-system, BlinkMacSystemFont, 'SF Pro Display', sans-serif;
|
||||
color: var(--qx-black);
|
||||
background: var(--qx-white);
|
||||
line-height: 1.6;
|
||||
}
|
||||
|
||||
.progress-container {
|
||||
position: sticky;
|
||||
top: 0;
|
||||
background: white;
|
||||
padding: 12px 20px;
|
||||
border-bottom: 1px solid var(--qx-gray);
|
||||
z-index: 100;
|
||||
}
|
||||
|
||||
.progress-bar {
|
||||
max-width: 600px;
|
||||
margin: 0 auto;
|
||||
background: var(--qx-gray);
|
||||
border-radius: 10px;
|
||||
height: 8px;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.progress-fill {
|
||||
background: var(--qx-green);
|
||||
height: 100%;
|
||||
width: 0%;
|
||||
transition: width 0.5s ease;
|
||||
}
|
||||
|
||||
.lesson-container {
|
||||
max-width: 800px;
|
||||
margin: 0 auto;
|
||||
padding: 40px 20px;
|
||||
}
|
||||
|
||||
.lesson-header {
|
||||
margin-bottom: 48px;
|
||||
}
|
||||
|
||||
.lesson-module {
|
||||
color: var(--qx-blue);
|
||||
font-size: 0.875rem;
|
||||
text-transform: uppercase;
|
||||
letter-spacing: 2px;
|
||||
margin-bottom: 8px;
|
||||
}
|
||||
|
||||
.lesson-title {
|
||||
font-size: 2.5rem;
|
||||
margin-bottom: 16px;
|
||||
line-height: 1.2;
|
||||
}
|
||||
|
||||
.lesson-meta {
|
||||
color: var(--qx-text-muted);
|
||||
font-size: 0.9rem;
|
||||
display: flex;
|
||||
gap: 16px;
|
||||
}
|
||||
|
||||
.content-block {
|
||||
margin-bottom: 48px;
|
||||
}
|
||||
|
||||
.content-block h2 {
|
||||
font-size: 1.75rem;
|
||||
margin-bottom: 20px;
|
||||
}
|
||||
|
||||
.content-block p {
|
||||
margin-bottom: 16px;
|
||||
color: #333;
|
||||
font-size: 1.05rem;
|
||||
}
|
||||
|
||||
.content-block ul {
|
||||
margin-left: 24px;
|
||||
margin-bottom: 16px;
|
||||
}
|
||||
|
||||
.content-block li {
|
||||
margin-bottom: 12px;
|
||||
}
|
||||
|
||||
.tip-box {
|
||||
background: #e8f4fd;
|
||||
border-left: 4px solid var(--qx-blue);
|
||||
padding: 24px;
|
||||
margin: 24px 0;
|
||||
border-radius: 0 12px 12px 0;
|
||||
}
|
||||
|
||||
.tip-box strong {
|
||||
color: var(--qx-blue);
|
||||
display: block;
|
||||
margin-bottom: 8px;
|
||||
}
|
||||
|
||||
.warning-box {
|
||||
background: #fff3cd;
|
||||
border-left: 4px solid var(--qx-orange);
|
||||
padding: 24px;
|
||||
margin: 24px 0;
|
||||
border-radius: 0 12px 12px 0;
|
||||
}
|
||||
|
||||
.warning-box strong {
|
||||
color: var(--qx-orange);
|
||||
display: block;
|
||||
margin-bottom: 8px;
|
||||
}
|
||||
|
||||
.example-box {
|
||||
background: var(--qx-gray);
|
||||
padding: 24px;
|
||||
border-radius: 12px;
|
||||
margin: 24px 0;
|
||||
}
|
||||
|
||||
.example-box h4 {
|
||||
margin-bottom: 12px;
|
||||
color: var(--qx-dark-gray);
|
||||
}
|
||||
|
||||
.quiz-container {
|
||||
background: var(--qx-gray);
|
||||
padding: 32px;
|
||||
border-radius: 16px;
|
||||
margin: 32px 0;
|
||||
}
|
||||
|
||||
.quiz-question {
|
||||
font-size: 1.25rem;
|
||||
font-weight: 600;
|
||||
margin-bottom: 24px;
|
||||
}
|
||||
|
||||
.quiz-options {
|
||||
list-style: none;
|
||||
}
|
||||
|
||||
.quiz-option {
|
||||
background: white;
|
||||
padding: 16px 20px;
|
||||
margin-bottom: 12px;
|
||||
border-radius: 12px;
|
||||
cursor: pointer;
|
||||
transition: all 0.2s;
|
||||
border: 2px solid transparent;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 12px;
|
||||
}
|
||||
|
||||
.quiz-option:hover {
|
||||
border-color: var(--qx-blue);
|
||||
transform: translateX(4px);
|
||||
}
|
||||
|
||||
.quiz-option.correct {
|
||||
background: var(--qx-green);
|
||||
color: white;
|
||||
border-color: var(--qx-green);
|
||||
}
|
||||
|
||||
.quiz-option.wrong {
|
||||
background: #ff4444;
|
||||
color: white;
|
||||
border-color: #ff4444;
|
||||
}
|
||||
|
||||
.quiz-option.disabled {
|
||||
pointer-events: none;
|
||||
opacity: 0.7;
|
||||
}
|
||||
|
||||
.quiz-letter {
|
||||
width: 32px;
|
||||
height: 32px;
|
||||
border-radius: 50%;
|
||||
background: var(--qx-gray);
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
font-weight: 600;
|
||||
flex-shrink: 0;
|
||||
}
|
||||
|
||||
.quiz-option:hover .quiz-letter {
|
||||
background: var(--qx-blue);
|
||||
color: white;
|
||||
}
|
||||
|
||||
.quiz-option.correct .quiz-letter,
|
||||
.quiz-option.wrong .quiz-letter {
|
||||
background: rgba(255,255,255,0.3);
|
||||
}
|
||||
|
||||
.quiz-feedback {
|
||||
margin-top: 20px;
|
||||
padding: 20px;
|
||||
border-radius: 12px;
|
||||
display: none;
|
||||
font-size: 1rem;
|
||||
}
|
||||
|
||||
.quiz-feedback.show {
|
||||
display: block;
|
||||
}
|
||||
|
||||
.lesson-nav {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
margin-top: 60px;
|
||||
padding-top: 40px;
|
||||
border-top: 2px solid var(--qx-gray);
|
||||
}
|
||||
|
||||
.nav-btn {
|
||||
padding: 14px 28px;
|
||||
border-radius: 10px;
|
||||
text-decoration: none;
|
||||
font-weight: 600;
|
||||
transition: all 0.2s;
|
||||
display: inline-flex;
|
||||
align-items: center;
|
||||
gap: 8px;
|
||||
}
|
||||
|
||||
.nav-btn.prev {
|
||||
background: var(--qx-gray);
|
||||
color: var(--qx-black);
|
||||
}
|
||||
|
||||
.nav-btn.next {
|
||||
background: var(--qx-blue);
|
||||
color: white;
|
||||
}
|
||||
|
||||
.nav-btn:hover {
|
||||
transform: translateY(-2px);
|
||||
box-shadow: 0 4px 12px rgba(0,0,0,0.15);
|
||||
}
|
||||
|
||||
.complete-btn {
|
||||
display: block;
|
||||
width: 100%;
|
||||
max-width: 400px;
|
||||
margin: 48px auto;
|
||||
padding: 18px 32px;
|
||||
background: var(--qx-green);
|
||||
color: white;
|
||||
border: none;
|
||||
border-radius: 12px;
|
||||
font-size: 1.1rem;
|
||||
font-weight: 600;
|
||||
cursor: pointer;
|
||||
transition: all 0.2s;
|
||||
}
|
||||
|
||||
.complete-btn:hover {
|
||||
transform: translateY(-2px);
|
||||
box-shadow: 0 4px 16px rgba(0,200,83,0.3);
|
||||
}
|
||||
|
||||
.complete-btn.completed {
|
||||
background: var(--qx-gray);
|
||||
color: var(--qx-text-muted);
|
||||
cursor: default;
|
||||
}
|
||||
|
||||
@media (max-width: 768px) {
|
||||
.lesson-title { font-size: 1.75rem; }
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<div class="progress-container">
|
||||
<div class="progress-bar">
|
||||
<div class="progress-fill" id="lessonProgress" style="width: 0%"></div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="lesson-container">
|
||||
<header class="lesson-header">
|
||||
<div class="lesson-module">Säkerhet och etik — Säker fotografering och etiska riktlinjer</div>
|
||||
<h1 class="lesson-title">Integritet och GDPR</h1>
|
||||
<div class="lesson-meta">
|
||||
<span>⏱️ 12 min</span>
|
||||
<span>🎯 Medel</span>
|
||||
<span>📚 Läsa</span>
|
||||
</div>
|
||||
</header>
|
||||
|
||||
<div class="content-block">
|
||||
<p>Du måste respektera andras integritet när du fotograferar.</p>
|
||||
</div>
|
||||
|
||||
<div class="tip-box">
|
||||
<strong>💡 Tips</strong>
|
||||
<p>• Välj vinklar som undviker personer</p>
|
||||
<p>• Fotografera tidigt på morgonen när färre är ute</p>
|
||||
<p>• Använd blur om någon råkar komma med på bilden</p>
|
||||
</div>
|
||||
|
||||
<div class="content-block">
|
||||
<h2>Regler</h2>
|
||||
<ul>
|
||||
<li>Fotografera INTE personer utan tillstånd</li>
|
||||
<li>Undvik att få med registreringsskyltar</li>
|
||||
<li>Radera bilder med oavsiktliga personer</li>
|
||||
<li>Rapportera om du fotograferar på privat område</li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<div class="quiz-container">
|
||||
<div class="quiz-question">Får du fotografera personer utan tillstånd?</div>
|
||||
<ul class="quiz-options">
|
||||
<li class="quiz-option" onclick="checkAnswer(this, False)">
|
||||
<span class="quiz-letter">A</span>
|
||||
<span>Ja, alltid</span>
|
||||
</li>
|
||||
<li class="quiz-option" onclick="checkAnswer(this, True)">
|
||||
<span class="quiz-letter">B</span>
|
||||
<span>Nej, aldrig</span>
|
||||
</li>
|
||||
<li class="quiz-option" onclick="checkAnswer(this, False)">
|
||||
<span class="quiz-letter">C</span>
|
||||
<span>Bara om de är i bakgrunden</span>
|
||||
</li>
|
||||
</ul>
|
||||
<div class="quiz-feedback" id="quizFeedback"></div>
|
||||
</div>
|
||||
|
||||
<button class="complete-btn" id="completeBtn" onclick="completeLesson()">
|
||||
✅ Markera lektion som klar
|
||||
</button>
|
||||
|
||||
<nav class="lesson-nav">
|
||||
<a href="/academy/module4/m4l1" class="nav-btn prev">← Föregående</a>
|
||||
<a href="/academy/module4/m4l3" class="nav-btn next">Nästa: Trafiksäkerhet →</a>
|
||||
</nav>
|
||||
</div>
|
||||
|
||||
<script>
|
||||
const lessonId = 'm4l2';
|
||||
let completedLessons = JSON.parse(localStorage.getItem('academyProgress') || '[]');
|
||||
|
||||
function checkAnswer(element, isCorrect) {
|
||||
const options = document.querySelectorAll('.quiz-option');
|
||||
const feedback = document.getElementById('quizFeedback');
|
||||
|
||||
options.forEach(opt => opt.classList.add('disabled'));
|
||||
|
||||
if (isCorrect) {
|
||||
element.classList.add('correct');
|
||||
feedback.innerHTML = '<strong>✅ Rätt!</strong> Bra jobbat!';
|
||||
feedback.style.background = '#d4edda';
|
||||
feedback.style.color = '#155724';
|
||||
} else {
|
||||
element.classList.add('wrong');
|
||||
feedback.innerHTML = '<strong>❌ Inte riktigt.</strong> Tänk igenom svaret en gång till.';
|
||||
feedback.style.background = '#f8d7da';
|
||||
feedback.style.color = '#721c24';
|
||||
}
|
||||
|
||||
feedback.classList.add('show');
|
||||
}
|
||||
|
||||
function completeLesson() {
|
||||
if (!completedLessons.includes(lessonId)) {
|
||||
completedLessons.push(lessonId);
|
||||
localStorage.setItem('academyProgress', JSON.stringify(completedLessons));
|
||||
|
||||
const btn = document.getElementById('completeBtn');
|
||||
btn.textContent = '✅ Lektion klar!';
|
||||
btn.classList.add('completed');
|
||||
btn.disabled = true;
|
||||
|
||||
btn.style.transform = 'scale(1.05)';
|
||||
setTimeout(() => btn.style.transform = 'scale(1)', 200);
|
||||
}
|
||||
}
|
||||
|
||||
if (completedLessons.includes(lessonId)) {
|
||||
const btn = document.getElementById('completeBtn');
|
||||
btn.textContent = '✅ Lektion klar!';
|
||||
btn.classList.add('completed');
|
||||
btn.disabled = true;
|
||||
}
|
||||
</script>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,417 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="sv">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>Trafiksäkerhet — quiXzoom Academy</title>
|
||||
<style>
|
||||
:root {
|
||||
--qx-black: #0a0a0a;
|
||||
--qx-white: #ffffff;
|
||||
--qx-blue: #0066FF;
|
||||
--qx-green: #00C853;
|
||||
--qx-gray: #F5F5F7;
|
||||
--qx-dark-gray: #1a1a1a;
|
||||
--qx-text-muted: #6e6e73;
|
||||
--qx-purple: #7B61FF;
|
||||
--qx-orange: #FF6B35;
|
||||
}
|
||||
|
||||
* { margin: 0; padding: 0; box-sizing: border-box; }
|
||||
|
||||
body {
|
||||
font-family: -apple-system, BlinkMacSystemFont, 'SF Pro Display', sans-serif;
|
||||
color: var(--qx-black);
|
||||
background: var(--qx-white);
|
||||
line-height: 1.6;
|
||||
}
|
||||
|
||||
.progress-container {
|
||||
position: sticky;
|
||||
top: 0;
|
||||
background: white;
|
||||
padding: 12px 20px;
|
||||
border-bottom: 1px solid var(--qx-gray);
|
||||
z-index: 100;
|
||||
}
|
||||
|
||||
.progress-bar {
|
||||
max-width: 600px;
|
||||
margin: 0 auto;
|
||||
background: var(--qx-gray);
|
||||
border-radius: 10px;
|
||||
height: 8px;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.progress-fill {
|
||||
background: var(--qx-green);
|
||||
height: 100%;
|
||||
width: 0%;
|
||||
transition: width 0.5s ease;
|
||||
}
|
||||
|
||||
.lesson-container {
|
||||
max-width: 800px;
|
||||
margin: 0 auto;
|
||||
padding: 40px 20px;
|
||||
}
|
||||
|
||||
.lesson-header {
|
||||
margin-bottom: 48px;
|
||||
}
|
||||
|
||||
.lesson-module {
|
||||
color: var(--qx-blue);
|
||||
font-size: 0.875rem;
|
||||
text-transform: uppercase;
|
||||
letter-spacing: 2px;
|
||||
margin-bottom: 8px;
|
||||
}
|
||||
|
||||
.lesson-title {
|
||||
font-size: 2.5rem;
|
||||
margin-bottom: 16px;
|
||||
line-height: 1.2;
|
||||
}
|
||||
|
||||
.lesson-meta {
|
||||
color: var(--qx-text-muted);
|
||||
font-size: 0.9rem;
|
||||
display: flex;
|
||||
gap: 16px;
|
||||
}
|
||||
|
||||
.content-block {
|
||||
margin-bottom: 48px;
|
||||
}
|
||||
|
||||
.content-block h2 {
|
||||
font-size: 1.75rem;
|
||||
margin-bottom: 20px;
|
||||
}
|
||||
|
||||
.content-block p {
|
||||
margin-bottom: 16px;
|
||||
color: #333;
|
||||
font-size: 1.05rem;
|
||||
}
|
||||
|
||||
.content-block ul {
|
||||
margin-left: 24px;
|
||||
margin-bottom: 16px;
|
||||
}
|
||||
|
||||
.content-block li {
|
||||
margin-bottom: 12px;
|
||||
}
|
||||
|
||||
.tip-box {
|
||||
background: #e8f4fd;
|
||||
border-left: 4px solid var(--qx-blue);
|
||||
padding: 24px;
|
||||
margin: 24px 0;
|
||||
border-radius: 0 12px 12px 0;
|
||||
}
|
||||
|
||||
.tip-box strong {
|
||||
color: var(--qx-blue);
|
||||
display: block;
|
||||
margin-bottom: 8px;
|
||||
}
|
||||
|
||||
.warning-box {
|
||||
background: #fff3cd;
|
||||
border-left: 4px solid var(--qx-orange);
|
||||
padding: 24px;
|
||||
margin: 24px 0;
|
||||
border-radius: 0 12px 12px 0;
|
||||
}
|
||||
|
||||
.warning-box strong {
|
||||
color: var(--qx-orange);
|
||||
display: block;
|
||||
margin-bottom: 8px;
|
||||
}
|
||||
|
||||
.example-box {
|
||||
background: var(--qx-gray);
|
||||
padding: 24px;
|
||||
border-radius: 12px;
|
||||
margin: 24px 0;
|
||||
}
|
||||
|
||||
.example-box h4 {
|
||||
margin-bottom: 12px;
|
||||
color: var(--qx-dark-gray);
|
||||
}
|
||||
|
||||
.quiz-container {
|
||||
background: var(--qx-gray);
|
||||
padding: 32px;
|
||||
border-radius: 16px;
|
||||
margin: 32px 0;
|
||||
}
|
||||
|
||||
.quiz-question {
|
||||
font-size: 1.25rem;
|
||||
font-weight: 600;
|
||||
margin-bottom: 24px;
|
||||
}
|
||||
|
||||
.quiz-options {
|
||||
list-style: none;
|
||||
}
|
||||
|
||||
.quiz-option {
|
||||
background: white;
|
||||
padding: 16px 20px;
|
||||
margin-bottom: 12px;
|
||||
border-radius: 12px;
|
||||
cursor: pointer;
|
||||
transition: all 0.2s;
|
||||
border: 2px solid transparent;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 12px;
|
||||
}
|
||||
|
||||
.quiz-option:hover {
|
||||
border-color: var(--qx-blue);
|
||||
transform: translateX(4px);
|
||||
}
|
||||
|
||||
.quiz-option.correct {
|
||||
background: var(--qx-green);
|
||||
color: white;
|
||||
border-color: var(--qx-green);
|
||||
}
|
||||
|
||||
.quiz-option.wrong {
|
||||
background: #ff4444;
|
||||
color: white;
|
||||
border-color: #ff4444;
|
||||
}
|
||||
|
||||
.quiz-option.disabled {
|
||||
pointer-events: none;
|
||||
opacity: 0.7;
|
||||
}
|
||||
|
||||
.quiz-letter {
|
||||
width: 32px;
|
||||
height: 32px;
|
||||
border-radius: 50%;
|
||||
background: var(--qx-gray);
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
font-weight: 600;
|
||||
flex-shrink: 0;
|
||||
}
|
||||
|
||||
.quiz-option:hover .quiz-letter {
|
||||
background: var(--qx-blue);
|
||||
color: white;
|
||||
}
|
||||
|
||||
.quiz-option.correct .quiz-letter,
|
||||
.quiz-option.wrong .quiz-letter {
|
||||
background: rgba(255,255,255,0.3);
|
||||
}
|
||||
|
||||
.quiz-feedback {
|
||||
margin-top: 20px;
|
||||
padding: 20px;
|
||||
border-radius: 12px;
|
||||
display: none;
|
||||
font-size: 1rem;
|
||||
}
|
||||
|
||||
.quiz-feedback.show {
|
||||
display: block;
|
||||
}
|
||||
|
||||
.lesson-nav {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
margin-top: 60px;
|
||||
padding-top: 40px;
|
||||
border-top: 2px solid var(--qx-gray);
|
||||
}
|
||||
|
||||
.nav-btn {
|
||||
padding: 14px 28px;
|
||||
border-radius: 10px;
|
||||
text-decoration: none;
|
||||
font-weight: 600;
|
||||
transition: all 0.2s;
|
||||
display: inline-flex;
|
||||
align-items: center;
|
||||
gap: 8px;
|
||||
}
|
||||
|
||||
.nav-btn.prev {
|
||||
background: var(--qx-gray);
|
||||
color: var(--qx-black);
|
||||
}
|
||||
|
||||
.nav-btn.next {
|
||||
background: var(--qx-blue);
|
||||
color: white;
|
||||
}
|
||||
|
||||
.nav-btn:hover {
|
||||
transform: translateY(-2px);
|
||||
box-shadow: 0 4px 12px rgba(0,0,0,0.15);
|
||||
}
|
||||
|
||||
.complete-btn {
|
||||
display: block;
|
||||
width: 100%;
|
||||
max-width: 400px;
|
||||
margin: 48px auto;
|
||||
padding: 18px 32px;
|
||||
background: var(--qx-green);
|
||||
color: white;
|
||||
border: none;
|
||||
border-radius: 12px;
|
||||
font-size: 1.1rem;
|
||||
font-weight: 600;
|
||||
cursor: pointer;
|
||||
transition: all 0.2s;
|
||||
}
|
||||
|
||||
.complete-btn:hover {
|
||||
transform: translateY(-2px);
|
||||
box-shadow: 0 4px 16px rgba(0,200,83,0.3);
|
||||
}
|
||||
|
||||
.complete-btn.completed {
|
||||
background: var(--qx-gray);
|
||||
color: var(--qx-text-muted);
|
||||
cursor: default;
|
||||
}
|
||||
|
||||
@media (max-width: 768px) {
|
||||
.lesson-title { font-size: 1.75rem; }
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<div class="progress-container">
|
||||
<div class="progress-bar">
|
||||
<div class="progress-fill" id="lessonProgress" style="width: 0%"></div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="lesson-container">
|
||||
<header class="lesson-header">
|
||||
<div class="lesson-module">Säkerhet och etik — Säker fotografering och etiska riktlinjer</div>
|
||||
<h1 class="lesson-title">Trafiksäkerhet</h1>
|
||||
<div class="lesson-meta">
|
||||
<span>⏱️ 10 min</span>
|
||||
<span>🎯 Medel</span>
|
||||
<span>📚 Quiz</span>
|
||||
</div>
|
||||
</header>
|
||||
|
||||
<div class="content-block">
|
||||
<p>Trafiksäkerhet är avgörande när du fotograferar infrastruktur.</p>
|
||||
</div>
|
||||
|
||||
<div class="content-block">
|
||||
<h2>Regler</h2>
|
||||
<ul>
|
||||
<li>Ställ aldrig bilen farligt</li>
|
||||
<li>Använd varseltriangel om nödvändigt</li>
|
||||
<li>Fotografera aldrig när du kör</li>
|
||||
<li>Respektera trafikregler</li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<div class="warning-box">
|
||||
<strong>⚠️ Viktigt</strong>
|
||||
<p>Polisen kan bötfälla dig för trafikbrott även om du fotograferar för quiXzoom.</p>
|
||||
</div>
|
||||
|
||||
<div class="quiz-container">
|
||||
<div class="quiz-question">Får du fotografera medan du kör?</div>
|
||||
<ul class="quiz-options">
|
||||
<li class="quiz-option" onclick="checkAnswer(this, False)">
|
||||
<span class="quiz-letter">A</span>
|
||||
<span>Ja, om jag kör långsamt</span>
|
||||
</li>
|
||||
<li class="quiz-option" onclick="checkAnswer(this, True)">
|
||||
<span class="quiz-letter">B</span>
|
||||
<span>Nej, aldrig</span>
|
||||
</li>
|
||||
<li class="quiz-option" onclick="checkAnswer(this, False)">
|
||||
<span class="quiz-letter">C</span>
|
||||
<span>Bara på landsväg</span>
|
||||
</li>
|
||||
</ul>
|
||||
<div class="quiz-feedback" id="quizFeedback"></div>
|
||||
</div>
|
||||
|
||||
<button class="complete-btn" id="completeBtn" onclick="completeLesson()">
|
||||
✅ Markera lektion som klar
|
||||
</button>
|
||||
|
||||
<nav class="lesson-nav">
|
||||
<a href="/academy/module4/m4l2" class="nav-btn prev">← Föregående</a>
|
||||
<a href="/academy/module5/m5l1" class="nav-btn next">Nästa: Batch-fotografering →</a>
|
||||
</nav>
|
||||
</div>
|
||||
|
||||
<script>
|
||||
const lessonId = 'm4l3';
|
||||
let completedLessons = JSON.parse(localStorage.getItem('academyProgress') || '[]');
|
||||
|
||||
function checkAnswer(element, isCorrect) {
|
||||
const options = document.querySelectorAll('.quiz-option');
|
||||
const feedback = document.getElementById('quizFeedback');
|
||||
|
||||
options.forEach(opt => opt.classList.add('disabled'));
|
||||
|
||||
if (isCorrect) {
|
||||
element.classList.add('correct');
|
||||
feedback.innerHTML = '<strong>✅ Rätt!</strong> Bra jobbat!';
|
||||
feedback.style.background = '#d4edda';
|
||||
feedback.style.color = '#155724';
|
||||
} else {
|
||||
element.classList.add('wrong');
|
||||
feedback.innerHTML = '<strong>❌ Inte riktigt.</strong> Tänk igenom svaret en gång till.';
|
||||
feedback.style.background = '#f8d7da';
|
||||
feedback.style.color = '#721c24';
|
||||
}
|
||||
|
||||
feedback.classList.add('show');
|
||||
}
|
||||
|
||||
function completeLesson() {
|
||||
if (!completedLessons.includes(lessonId)) {
|
||||
completedLessons.push(lessonId);
|
||||
localStorage.setItem('academyProgress', JSON.stringify(completedLessons));
|
||||
|
||||
const btn = document.getElementById('completeBtn');
|
||||
btn.textContent = '✅ Lektion klar!';
|
||||
btn.classList.add('completed');
|
||||
btn.disabled = true;
|
||||
|
||||
btn.style.transform = 'scale(1.05)';
|
||||
setTimeout(() => btn.style.transform = 'scale(1)', 200);
|
||||
}
|
||||
}
|
||||
|
||||
if (completedLessons.includes(lessonId)) {
|
||||
const btn = document.getElementById('completeBtn');
|
||||
btn.textContent = '✅ Lektion klar!';
|
||||
btn.classList.add('completed');
|
||||
btn.disabled = true;
|
||||
}
|
||||
</script>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,419 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="sv">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>Batch-fotografering — quiXzoom Academy</title>
|
||||
<style>
|
||||
:root {
|
||||
--qx-black: #0a0a0a;
|
||||
--qx-white: #ffffff;
|
||||
--qx-blue: #0066FF;
|
||||
--qx-green: #00C853;
|
||||
--qx-gray: #F5F5F7;
|
||||
--qx-dark-gray: #1a1a1a;
|
||||
--qx-text-muted: #6e6e73;
|
||||
--qx-purple: #7B61FF;
|
||||
--qx-orange: #FF6B35;
|
||||
}
|
||||
|
||||
* { margin: 0; padding: 0; box-sizing: border-box; }
|
||||
|
||||
body {
|
||||
font-family: -apple-system, BlinkMacSystemFont, 'SF Pro Display', sans-serif;
|
||||
color: var(--qx-black);
|
||||
background: var(--qx-white);
|
||||
line-height: 1.6;
|
||||
}
|
||||
|
||||
.progress-container {
|
||||
position: sticky;
|
||||
top: 0;
|
||||
background: white;
|
||||
padding: 12px 20px;
|
||||
border-bottom: 1px solid var(--qx-gray);
|
||||
z-index: 100;
|
||||
}
|
||||
|
||||
.progress-bar {
|
||||
max-width: 600px;
|
||||
margin: 0 auto;
|
||||
background: var(--qx-gray);
|
||||
border-radius: 10px;
|
||||
height: 8px;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.progress-fill {
|
||||
background: var(--qx-green);
|
||||
height: 100%;
|
||||
width: 0%;
|
||||
transition: width 0.5s ease;
|
||||
}
|
||||
|
||||
.lesson-container {
|
||||
max-width: 800px;
|
||||
margin: 0 auto;
|
||||
padding: 40px 20px;
|
||||
}
|
||||
|
||||
.lesson-header {
|
||||
margin-bottom: 48px;
|
||||
}
|
||||
|
||||
.lesson-module {
|
||||
color: var(--qx-blue);
|
||||
font-size: 0.875rem;
|
||||
text-transform: uppercase;
|
||||
letter-spacing: 2px;
|
||||
margin-bottom: 8px;
|
||||
}
|
||||
|
||||
.lesson-title {
|
||||
font-size: 2.5rem;
|
||||
margin-bottom: 16px;
|
||||
line-height: 1.2;
|
||||
}
|
||||
|
||||
.lesson-meta {
|
||||
color: var(--qx-text-muted);
|
||||
font-size: 0.9rem;
|
||||
display: flex;
|
||||
gap: 16px;
|
||||
}
|
||||
|
||||
.content-block {
|
||||
margin-bottom: 48px;
|
||||
}
|
||||
|
||||
.content-block h2 {
|
||||
font-size: 1.75rem;
|
||||
margin-bottom: 20px;
|
||||
}
|
||||
|
||||
.content-block p {
|
||||
margin-bottom: 16px;
|
||||
color: #333;
|
||||
font-size: 1.05rem;
|
||||
}
|
||||
|
||||
.content-block ul {
|
||||
margin-left: 24px;
|
||||
margin-bottom: 16px;
|
||||
}
|
||||
|
||||
.content-block li {
|
||||
margin-bottom: 12px;
|
||||
}
|
||||
|
||||
.tip-box {
|
||||
background: #e8f4fd;
|
||||
border-left: 4px solid var(--qx-blue);
|
||||
padding: 24px;
|
||||
margin: 24px 0;
|
||||
border-radius: 0 12px 12px 0;
|
||||
}
|
||||
|
||||
.tip-box strong {
|
||||
color: var(--qx-blue);
|
||||
display: block;
|
||||
margin-bottom: 8px;
|
||||
}
|
||||
|
||||
.warning-box {
|
||||
background: #fff3cd;
|
||||
border-left: 4px solid var(--qx-orange);
|
||||
padding: 24px;
|
||||
margin: 24px 0;
|
||||
border-radius: 0 12px 12px 0;
|
||||
}
|
||||
|
||||
.warning-box strong {
|
||||
color: var(--qx-orange);
|
||||
display: block;
|
||||
margin-bottom: 8px;
|
||||
}
|
||||
|
||||
.example-box {
|
||||
background: var(--qx-gray);
|
||||
padding: 24px;
|
||||
border-radius: 12px;
|
||||
margin: 24px 0;
|
||||
}
|
||||
|
||||
.example-box h4 {
|
||||
margin-bottom: 12px;
|
||||
color: var(--qx-dark-gray);
|
||||
}
|
||||
|
||||
.quiz-container {
|
||||
background: var(--qx-gray);
|
||||
padding: 32px;
|
||||
border-radius: 16px;
|
||||
margin: 32px 0;
|
||||
}
|
||||
|
||||
.quiz-question {
|
||||
font-size: 1.25rem;
|
||||
font-weight: 600;
|
||||
margin-bottom: 24px;
|
||||
}
|
||||
|
||||
.quiz-options {
|
||||
list-style: none;
|
||||
}
|
||||
|
||||
.quiz-option {
|
||||
background: white;
|
||||
padding: 16px 20px;
|
||||
margin-bottom: 12px;
|
||||
border-radius: 12px;
|
||||
cursor: pointer;
|
||||
transition: all 0.2s;
|
||||
border: 2px solid transparent;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 12px;
|
||||
}
|
||||
|
||||
.quiz-option:hover {
|
||||
border-color: var(--qx-blue);
|
||||
transform: translateX(4px);
|
||||
}
|
||||
|
||||
.quiz-option.correct {
|
||||
background: var(--qx-green);
|
||||
color: white;
|
||||
border-color: var(--qx-green);
|
||||
}
|
||||
|
||||
.quiz-option.wrong {
|
||||
background: #ff4444;
|
||||
color: white;
|
||||
border-color: #ff4444;
|
||||
}
|
||||
|
||||
.quiz-option.disabled {
|
||||
pointer-events: none;
|
||||
opacity: 0.7;
|
||||
}
|
||||
|
||||
.quiz-letter {
|
||||
width: 32px;
|
||||
height: 32px;
|
||||
border-radius: 50%;
|
||||
background: var(--qx-gray);
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
font-weight: 600;
|
||||
flex-shrink: 0;
|
||||
}
|
||||
|
||||
.quiz-option:hover .quiz-letter {
|
||||
background: var(--qx-blue);
|
||||
color: white;
|
||||
}
|
||||
|
||||
.quiz-option.correct .quiz-letter,
|
||||
.quiz-option.wrong .quiz-letter {
|
||||
background: rgba(255,255,255,0.3);
|
||||
}
|
||||
|
||||
.quiz-feedback {
|
||||
margin-top: 20px;
|
||||
padding: 20px;
|
||||
border-radius: 12px;
|
||||
display: none;
|
||||
font-size: 1rem;
|
||||
}
|
||||
|
||||
.quiz-feedback.show {
|
||||
display: block;
|
||||
}
|
||||
|
||||
.lesson-nav {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
margin-top: 60px;
|
||||
padding-top: 40px;
|
||||
border-top: 2px solid var(--qx-gray);
|
||||
}
|
||||
|
||||
.nav-btn {
|
||||
padding: 14px 28px;
|
||||
border-radius: 10px;
|
||||
text-decoration: none;
|
||||
font-weight: 600;
|
||||
transition: all 0.2s;
|
||||
display: inline-flex;
|
||||
align-items: center;
|
||||
gap: 8px;
|
||||
}
|
||||
|
||||
.nav-btn.prev {
|
||||
background: var(--qx-gray);
|
||||
color: var(--qx-black);
|
||||
}
|
||||
|
||||
.nav-btn.next {
|
||||
background: var(--qx-blue);
|
||||
color: white;
|
||||
}
|
||||
|
||||
.nav-btn:hover {
|
||||
transform: translateY(-2px);
|
||||
box-shadow: 0 4px 12px rgba(0,0,0,0.15);
|
||||
}
|
||||
|
||||
.complete-btn {
|
||||
display: block;
|
||||
width: 100%;
|
||||
max-width: 400px;
|
||||
margin: 48px auto;
|
||||
padding: 18px 32px;
|
||||
background: var(--qx-green);
|
||||
color: white;
|
||||
border: none;
|
||||
border-radius: 12px;
|
||||
font-size: 1.1rem;
|
||||
font-weight: 600;
|
||||
cursor: pointer;
|
||||
transition: all 0.2s;
|
||||
}
|
||||
|
||||
.complete-btn:hover {
|
||||
transform: translateY(-2px);
|
||||
box-shadow: 0 4px 16px rgba(0,200,83,0.3);
|
||||
}
|
||||
|
||||
.complete-btn.completed {
|
||||
background: var(--qx-gray);
|
||||
color: var(--qx-text-muted);
|
||||
cursor: default;
|
||||
}
|
||||
|
||||
@media (max-width: 768px) {
|
||||
.lesson-title { font-size: 1.75rem; }
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<div class="progress-container">
|
||||
<div class="progress-bar">
|
||||
<div class="progress-fill" id="lessonProgress" style="width: 0%"></div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="lesson-container">
|
||||
<header class="lesson-header">
|
||||
<div class="lesson-module">Avancerade tekniker — Maximera kvalitet och effektivitet</div>
|
||||
<h1 class="lesson-title">Batch-fotografering</h1>
|
||||
<div class="lesson-meta">
|
||||
<span>⏱️ 15 min</span>
|
||||
<span>🎯 Avancerad</span>
|
||||
<span>📚 Praktiskt</span>
|
||||
</div>
|
||||
</header>
|
||||
|
||||
<div class="content-block">
|
||||
<p>Batch-fotografering innebär att du gör flera uppdrag i samma område för att spara tid och resor.</p>
|
||||
</div>
|
||||
|
||||
<div class="tip-box">
|
||||
<strong>💡 Tips</strong>
|
||||
<p>• Använd bil eller cykel för effektiv transport</p>
|
||||
<p>• Börja med det uppdrag som har tidigast deadline</p>
|
||||
<p>• Ta med powerbank om du ska fotografera länge</p>
|
||||
</div>
|
||||
|
||||
<div class="content-block">
|
||||
<h2>Steg för steg</h2>
|
||||
<ol>
|
||||
<li><strong>Steg 1:</strong> Planera din rutt i förväg</li>
|
||||
<li><strong>Steg 2:</strong> Acceptera flera uppdrag i samma område</li>
|
||||
<li><strong>Steg 3:</strong> Fotografera i logisk ordning</li>
|
||||
<li><strong>Steg 4:</strong> Ladda upp alla bilder samtidigt</li>
|
||||
</ol>
|
||||
</div>
|
||||
|
||||
<div class="quiz-container">
|
||||
<div class="quiz-question">Vad är fördelen med batch-fotografering?</div>
|
||||
<ul class="quiz-options">
|
||||
<li class="quiz-option" onclick="checkAnswer(this, False)">
|
||||
<span class="quiz-letter">A</span>
|
||||
<span>Bättre bildkvalitet</span>
|
||||
</li>
|
||||
<li class="quiz-option" onclick="checkAnswer(this, True)">
|
||||
<span class="quiz-letter">B</span>
|
||||
<span>Sparar tid och resor</span>
|
||||
</li>
|
||||
<li class="quiz-option" onclick="checkAnswer(this, False)">
|
||||
<span class="quiz-letter">C</span>
|
||||
<span>Fler uppdrag att välja på</span>
|
||||
</li>
|
||||
</ul>
|
||||
<div class="quiz-feedback" id="quizFeedback"></div>
|
||||
</div>
|
||||
|
||||
<button class="complete-btn" id="completeBtn" onclick="completeLesson()">
|
||||
✅ Markera lektion som klar
|
||||
</button>
|
||||
|
||||
<nav class="lesson-nav">
|
||||
<a href="/academy/module4/m4l3" class="nav-btn prev">← Föregående</a>
|
||||
<a href="/academy/module5/m5l2" class="nav-btn next">Nästa: Metadata och EXIF →</a>
|
||||
</nav>
|
||||
</div>
|
||||
|
||||
<script>
|
||||
const lessonId = 'm5l1';
|
||||
let completedLessons = JSON.parse(localStorage.getItem('academyProgress') || '[]');
|
||||
|
||||
function checkAnswer(element, isCorrect) {
|
||||
const options = document.querySelectorAll('.quiz-option');
|
||||
const feedback = document.getElementById('quizFeedback');
|
||||
|
||||
options.forEach(opt => opt.classList.add('disabled'));
|
||||
|
||||
if (isCorrect) {
|
||||
element.classList.add('correct');
|
||||
feedback.innerHTML = '<strong>✅ Rätt!</strong> Bra jobbat!';
|
||||
feedback.style.background = '#d4edda';
|
||||
feedback.style.color = '#155724';
|
||||
} else {
|
||||
element.classList.add('wrong');
|
||||
feedback.innerHTML = '<strong>❌ Inte riktigt.</strong> Tänk igenom svaret en gång till.';
|
||||
feedback.style.background = '#f8d7da';
|
||||
feedback.style.color = '#721c24';
|
||||
}
|
||||
|
||||
feedback.classList.add('show');
|
||||
}
|
||||
|
||||
function completeLesson() {
|
||||
if (!completedLessons.includes(lessonId)) {
|
||||
completedLessons.push(lessonId);
|
||||
localStorage.setItem('academyProgress', JSON.stringify(completedLessons));
|
||||
|
||||
const btn = document.getElementById('completeBtn');
|
||||
btn.textContent = '✅ Lektion klar!';
|
||||
btn.classList.add('completed');
|
||||
btn.disabled = true;
|
||||
|
||||
btn.style.transform = 'scale(1.05)';
|
||||
setTimeout(() => btn.style.transform = 'scale(1)', 200);
|
||||
}
|
||||
}
|
||||
|
||||
if (completedLessons.includes(lessonId)) {
|
||||
const btn = document.getElementById('completeBtn');
|
||||
btn.textContent = '✅ Lektion klar!';
|
||||
btn.classList.add('completed');
|
||||
btn.disabled = true;
|
||||
}
|
||||
</script>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,409 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="sv">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>Metadata och EXIF — quiXzoom Academy</title>
|
||||
<style>
|
||||
:root {
|
||||
--qx-black: #0a0a0a;
|
||||
--qx-white: #ffffff;
|
||||
--qx-blue: #0066FF;
|
||||
--qx-green: #00C853;
|
||||
--qx-gray: #F5F5F7;
|
||||
--qx-dark-gray: #1a1a1a;
|
||||
--qx-text-muted: #6e6e73;
|
||||
--qx-purple: #7B61FF;
|
||||
--qx-orange: #FF6B35;
|
||||
}
|
||||
|
||||
* { margin: 0; padding: 0; box-sizing: border-box; }
|
||||
|
||||
body {
|
||||
font-family: -apple-system, BlinkMacSystemFont, 'SF Pro Display', sans-serif;
|
||||
color: var(--qx-black);
|
||||
background: var(--qx-white);
|
||||
line-height: 1.6;
|
||||
}
|
||||
|
||||
.progress-container {
|
||||
position: sticky;
|
||||
top: 0;
|
||||
background: white;
|
||||
padding: 12px 20px;
|
||||
border-bottom: 1px solid var(--qx-gray);
|
||||
z-index: 100;
|
||||
}
|
||||
|
||||
.progress-bar {
|
||||
max-width: 600px;
|
||||
margin: 0 auto;
|
||||
background: var(--qx-gray);
|
||||
border-radius: 10px;
|
||||
height: 8px;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.progress-fill {
|
||||
background: var(--qx-green);
|
||||
height: 100%;
|
||||
width: 0%;
|
||||
transition: width 0.5s ease;
|
||||
}
|
||||
|
||||
.lesson-container {
|
||||
max-width: 800px;
|
||||
margin: 0 auto;
|
||||
padding: 40px 20px;
|
||||
}
|
||||
|
||||
.lesson-header {
|
||||
margin-bottom: 48px;
|
||||
}
|
||||
|
||||
.lesson-module {
|
||||
color: var(--qx-blue);
|
||||
font-size: 0.875rem;
|
||||
text-transform: uppercase;
|
||||
letter-spacing: 2px;
|
||||
margin-bottom: 8px;
|
||||
}
|
||||
|
||||
.lesson-title {
|
||||
font-size: 2.5rem;
|
||||
margin-bottom: 16px;
|
||||
line-height: 1.2;
|
||||
}
|
||||
|
||||
.lesson-meta {
|
||||
color: var(--qx-text-muted);
|
||||
font-size: 0.9rem;
|
||||
display: flex;
|
||||
gap: 16px;
|
||||
}
|
||||
|
||||
.content-block {
|
||||
margin-bottom: 48px;
|
||||
}
|
||||
|
||||
.content-block h2 {
|
||||
font-size: 1.75rem;
|
||||
margin-bottom: 20px;
|
||||
}
|
||||
|
||||
.content-block p {
|
||||
margin-bottom: 16px;
|
||||
color: #333;
|
||||
font-size: 1.05rem;
|
||||
}
|
||||
|
||||
.content-block ul {
|
||||
margin-left: 24px;
|
||||
margin-bottom: 16px;
|
||||
}
|
||||
|
||||
.content-block li {
|
||||
margin-bottom: 12px;
|
||||
}
|
||||
|
||||
.tip-box {
|
||||
background: #e8f4fd;
|
||||
border-left: 4px solid var(--qx-blue);
|
||||
padding: 24px;
|
||||
margin: 24px 0;
|
||||
border-radius: 0 12px 12px 0;
|
||||
}
|
||||
|
||||
.tip-box strong {
|
||||
color: var(--qx-blue);
|
||||
display: block;
|
||||
margin-bottom: 8px;
|
||||
}
|
||||
|
||||
.warning-box {
|
||||
background: #fff3cd;
|
||||
border-left: 4px solid var(--qx-orange);
|
||||
padding: 24px;
|
||||
margin: 24px 0;
|
||||
border-radius: 0 12px 12px 0;
|
||||
}
|
||||
|
||||
.warning-box strong {
|
||||
color: var(--qx-orange);
|
||||
display: block;
|
||||
margin-bottom: 8px;
|
||||
}
|
||||
|
||||
.example-box {
|
||||
background: var(--qx-gray);
|
||||
padding: 24px;
|
||||
border-radius: 12px;
|
||||
margin: 24px 0;
|
||||
}
|
||||
|
||||
.example-box h4 {
|
||||
margin-bottom: 12px;
|
||||
color: var(--qx-dark-gray);
|
||||
}
|
||||
|
||||
.quiz-container {
|
||||
background: var(--qx-gray);
|
||||
padding: 32px;
|
||||
border-radius: 16px;
|
||||
margin: 32px 0;
|
||||
}
|
||||
|
||||
.quiz-question {
|
||||
font-size: 1.25rem;
|
||||
font-weight: 600;
|
||||
margin-bottom: 24px;
|
||||
}
|
||||
|
||||
.quiz-options {
|
||||
list-style: none;
|
||||
}
|
||||
|
||||
.quiz-option {
|
||||
background: white;
|
||||
padding: 16px 20px;
|
||||
margin-bottom: 12px;
|
||||
border-radius: 12px;
|
||||
cursor: pointer;
|
||||
transition: all 0.2s;
|
||||
border: 2px solid transparent;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 12px;
|
||||
}
|
||||
|
||||
.quiz-option:hover {
|
||||
border-color: var(--qx-blue);
|
||||
transform: translateX(4px);
|
||||
}
|
||||
|
||||
.quiz-option.correct {
|
||||
background: var(--qx-green);
|
||||
color: white;
|
||||
border-color: var(--qx-green);
|
||||
}
|
||||
|
||||
.quiz-option.wrong {
|
||||
background: #ff4444;
|
||||
color: white;
|
||||
border-color: #ff4444;
|
||||
}
|
||||
|
||||
.quiz-option.disabled {
|
||||
pointer-events: none;
|
||||
opacity: 0.7;
|
||||
}
|
||||
|
||||
.quiz-letter {
|
||||
width: 32px;
|
||||
height: 32px;
|
||||
border-radius: 50%;
|
||||
background: var(--qx-gray);
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
font-weight: 600;
|
||||
flex-shrink: 0;
|
||||
}
|
||||
|
||||
.quiz-option:hover .quiz-letter {
|
||||
background: var(--qx-blue);
|
||||
color: white;
|
||||
}
|
||||
|
||||
.quiz-option.correct .quiz-letter,
|
||||
.quiz-option.wrong .quiz-letter {
|
||||
background: rgba(255,255,255,0.3);
|
||||
}
|
||||
|
||||
.quiz-feedback {
|
||||
margin-top: 20px;
|
||||
padding: 20px;
|
||||
border-radius: 12px;
|
||||
display: none;
|
||||
font-size: 1rem;
|
||||
}
|
||||
|
||||
.quiz-feedback.show {
|
||||
display: block;
|
||||
}
|
||||
|
||||
.lesson-nav {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
margin-top: 60px;
|
||||
padding-top: 40px;
|
||||
border-top: 2px solid var(--qx-gray);
|
||||
}
|
||||
|
||||
.nav-btn {
|
||||
padding: 14px 28px;
|
||||
border-radius: 10px;
|
||||
text-decoration: none;
|
||||
font-weight: 600;
|
||||
transition: all 0.2s;
|
||||
display: inline-flex;
|
||||
align-items: center;
|
||||
gap: 8px;
|
||||
}
|
||||
|
||||
.nav-btn.prev {
|
||||
background: var(--qx-gray);
|
||||
color: var(--qx-black);
|
||||
}
|
||||
|
||||
.nav-btn.next {
|
||||
background: var(--qx-blue);
|
||||
color: white;
|
||||
}
|
||||
|
||||
.nav-btn:hover {
|
||||
transform: translateY(-2px);
|
||||
box-shadow: 0 4px 12px rgba(0,0,0,0.15);
|
||||
}
|
||||
|
||||
.complete-btn {
|
||||
display: block;
|
||||
width: 100%;
|
||||
max-width: 400px;
|
||||
margin: 48px auto;
|
||||
padding: 18px 32px;
|
||||
background: var(--qx-green);
|
||||
color: white;
|
||||
border: none;
|
||||
border-radius: 12px;
|
||||
font-size: 1.1rem;
|
||||
font-weight: 600;
|
||||
cursor: pointer;
|
||||
transition: all 0.2s;
|
||||
}
|
||||
|
||||
.complete-btn:hover {
|
||||
transform: translateY(-2px);
|
||||
box-shadow: 0 4px 16px rgba(0,200,83,0.3);
|
||||
}
|
||||
|
||||
.complete-btn.completed {
|
||||
background: var(--qx-gray);
|
||||
color: var(--qx-text-muted);
|
||||
cursor: default;
|
||||
}
|
||||
|
||||
@media (max-width: 768px) {
|
||||
.lesson-title { font-size: 1.75rem; }
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<div class="progress-container">
|
||||
<div class="progress-bar">
|
||||
<div class="progress-fill" id="lessonProgress" style="width: 0%"></div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="lesson-container">
|
||||
<header class="lesson-header">
|
||||
<div class="lesson-module">Avancerade tekniker — Maximera kvalitet och effektivitet</div>
|
||||
<h1 class="lesson-title">Metadata och EXIF</h1>
|
||||
<div class="lesson-meta">
|
||||
<span>⏱️ 10 min</span>
|
||||
<span>🎯 Avancerad</span>
|
||||
<span>📚 Läsa</span>
|
||||
</div>
|
||||
</header>
|
||||
|
||||
<div class="content-block">
|
||||
<p>EXIF-metadata är dold information i varje bild som quiXzoom använder för verifiering.</p>
|
||||
</div>
|
||||
|
||||
<div class="tip-box">
|
||||
<strong>💡 Tips</strong>
|
||||
<p>• Stäng aldrig av geotagging</p>
|
||||
<p>• Kolla att klockan är rätt inställd</p>
|
||||
<p>• Använd alltid samma telefon för konsistens</p>
|
||||
</div>
|
||||
|
||||
<div class="quiz-container">
|
||||
<div class="quiz-question">Vad innehåller EXIF-metadata?</div>
|
||||
<ul class="quiz-options">
|
||||
<li class="quiz-option" onclick="checkAnswer(this, False)">
|
||||
<span class="quiz-letter">A</span>
|
||||
<span>Bara bildens storlek</span>
|
||||
</li>
|
||||
<li class="quiz-option" onclick="checkAnswer(this, True)">
|
||||
<span class="quiz-letter">B</span>
|
||||
<span>GPS, datum, kamerainfo</span>
|
||||
</li>
|
||||
<li class="quiz-option" onclick="checkAnswer(this, False)">
|
||||
<span class="quiz-letter">C</span>
|
||||
<span>Din personliga information</span>
|
||||
</li>
|
||||
</ul>
|
||||
<div class="quiz-feedback" id="quizFeedback"></div>
|
||||
</div>
|
||||
|
||||
<button class="complete-btn" id="completeBtn" onclick="completeLesson()">
|
||||
✅ Markera lektion som klar
|
||||
</button>
|
||||
|
||||
<nav class="lesson-nav">
|
||||
<a href="/academy/module5/m5l1" class="nav-btn prev">← Föregående</a>
|
||||
<a href="/academy/module5/m5l3" class="nav-btn next">Nästa: Redigering och förbättring →</a>
|
||||
</nav>
|
||||
</div>
|
||||
|
||||
<script>
|
||||
const lessonId = 'm5l2';
|
||||
let completedLessons = JSON.parse(localStorage.getItem('academyProgress') || '[]');
|
||||
|
||||
function checkAnswer(element, isCorrect) {
|
||||
const options = document.querySelectorAll('.quiz-option');
|
||||
const feedback = document.getElementById('quizFeedback');
|
||||
|
||||
options.forEach(opt => opt.classList.add('disabled'));
|
||||
|
||||
if (isCorrect) {
|
||||
element.classList.add('correct');
|
||||
feedback.innerHTML = '<strong>✅ Rätt!</strong> Bra jobbat!';
|
||||
feedback.style.background = '#d4edda';
|
||||
feedback.style.color = '#155724';
|
||||
} else {
|
||||
element.classList.add('wrong');
|
||||
feedback.innerHTML = '<strong>❌ Inte riktigt.</strong> Tänk igenom svaret en gång till.';
|
||||
feedback.style.background = '#f8d7da';
|
||||
feedback.style.color = '#721c24';
|
||||
}
|
||||
|
||||
feedback.classList.add('show');
|
||||
}
|
||||
|
||||
function completeLesson() {
|
||||
if (!completedLessons.includes(lessonId)) {
|
||||
completedLessons.push(lessonId);
|
||||
localStorage.setItem('academyProgress', JSON.stringify(completedLessons));
|
||||
|
||||
const btn = document.getElementById('completeBtn');
|
||||
btn.textContent = '✅ Lektion klar!';
|
||||
btn.classList.add('completed');
|
||||
btn.disabled = true;
|
||||
|
||||
btn.style.transform = 'scale(1.05)';
|
||||
setTimeout(() => btn.style.transform = 'scale(1)', 200);
|
||||
}
|
||||
}
|
||||
|
||||
if (completedLessons.includes(lessonId)) {
|
||||
const btn = document.getElementById('completeBtn');
|
||||
btn.textContent = '✅ Lektion klar!';
|
||||
btn.classList.add('completed');
|
||||
btn.disabled = true;
|
||||
}
|
||||
</script>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,407 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="sv">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>Redigering och förbättring — quiXzoom Academy</title>
|
||||
<style>
|
||||
:root {
|
||||
--qx-black: #0a0a0a;
|
||||
--qx-white: #ffffff;
|
||||
--qx-blue: #0066FF;
|
||||
--qx-green: #00C853;
|
||||
--qx-gray: #F5F5F7;
|
||||
--qx-dark-gray: #1a1a1a;
|
||||
--qx-text-muted: #6e6e73;
|
||||
--qx-purple: #7B61FF;
|
||||
--qx-orange: #FF6B35;
|
||||
}
|
||||
|
||||
* { margin: 0; padding: 0; box-sizing: border-box; }
|
||||
|
||||
body {
|
||||
font-family: -apple-system, BlinkMacSystemFont, 'SF Pro Display', sans-serif;
|
||||
color: var(--qx-black);
|
||||
background: var(--qx-white);
|
||||
line-height: 1.6;
|
||||
}
|
||||
|
||||
.progress-container {
|
||||
position: sticky;
|
||||
top: 0;
|
||||
background: white;
|
||||
padding: 12px 20px;
|
||||
border-bottom: 1px solid var(--qx-gray);
|
||||
z-index: 100;
|
||||
}
|
||||
|
||||
.progress-bar {
|
||||
max-width: 600px;
|
||||
margin: 0 auto;
|
||||
background: var(--qx-gray);
|
||||
border-radius: 10px;
|
||||
height: 8px;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.progress-fill {
|
||||
background: var(--qx-green);
|
||||
height: 100%;
|
||||
width: 0%;
|
||||
transition: width 0.5s ease;
|
||||
}
|
||||
|
||||
.lesson-container {
|
||||
max-width: 800px;
|
||||
margin: 0 auto;
|
||||
padding: 40px 20px;
|
||||
}
|
||||
|
||||
.lesson-header {
|
||||
margin-bottom: 48px;
|
||||
}
|
||||
|
||||
.lesson-module {
|
||||
color: var(--qx-blue);
|
||||
font-size: 0.875rem;
|
||||
text-transform: uppercase;
|
||||
letter-spacing: 2px;
|
||||
margin-bottom: 8px;
|
||||
}
|
||||
|
||||
.lesson-title {
|
||||
font-size: 2.5rem;
|
||||
margin-bottom: 16px;
|
||||
line-height: 1.2;
|
||||
}
|
||||
|
||||
.lesson-meta {
|
||||
color: var(--qx-text-muted);
|
||||
font-size: 0.9rem;
|
||||
display: flex;
|
||||
gap: 16px;
|
||||
}
|
||||
|
||||
.content-block {
|
||||
margin-bottom: 48px;
|
||||
}
|
||||
|
||||
.content-block h2 {
|
||||
font-size: 1.75rem;
|
||||
margin-bottom: 20px;
|
||||
}
|
||||
|
||||
.content-block p {
|
||||
margin-bottom: 16px;
|
||||
color: #333;
|
||||
font-size: 1.05rem;
|
||||
}
|
||||
|
||||
.content-block ul {
|
||||
margin-left: 24px;
|
||||
margin-bottom: 16px;
|
||||
}
|
||||
|
||||
.content-block li {
|
||||
margin-bottom: 12px;
|
||||
}
|
||||
|
||||
.tip-box {
|
||||
background: #e8f4fd;
|
||||
border-left: 4px solid var(--qx-blue);
|
||||
padding: 24px;
|
||||
margin: 24px 0;
|
||||
border-radius: 0 12px 12px 0;
|
||||
}
|
||||
|
||||
.tip-box strong {
|
||||
color: var(--qx-blue);
|
||||
display: block;
|
||||
margin-bottom: 8px;
|
||||
}
|
||||
|
||||
.warning-box {
|
||||
background: #fff3cd;
|
||||
border-left: 4px solid var(--qx-orange);
|
||||
padding: 24px;
|
||||
margin: 24px 0;
|
||||
border-radius: 0 12px 12px 0;
|
||||
}
|
||||
|
||||
.warning-box strong {
|
||||
color: var(--qx-orange);
|
||||
display: block;
|
||||
margin-bottom: 8px;
|
||||
}
|
||||
|
||||
.example-box {
|
||||
background: var(--qx-gray);
|
||||
padding: 24px;
|
||||
border-radius: 12px;
|
||||
margin: 24px 0;
|
||||
}
|
||||
|
||||
.example-box h4 {
|
||||
margin-bottom: 12px;
|
||||
color: var(--qx-dark-gray);
|
||||
}
|
||||
|
||||
.quiz-container {
|
||||
background: var(--qx-gray);
|
||||
padding: 32px;
|
||||
border-radius: 16px;
|
||||
margin: 32px 0;
|
||||
}
|
||||
|
||||
.quiz-question {
|
||||
font-size: 1.25rem;
|
||||
font-weight: 600;
|
||||
margin-bottom: 24px;
|
||||
}
|
||||
|
||||
.quiz-options {
|
||||
list-style: none;
|
||||
}
|
||||
|
||||
.quiz-option {
|
||||
background: white;
|
||||
padding: 16px 20px;
|
||||
margin-bottom: 12px;
|
||||
border-radius: 12px;
|
||||
cursor: pointer;
|
||||
transition: all 0.2s;
|
||||
border: 2px solid transparent;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 12px;
|
||||
}
|
||||
|
||||
.quiz-option:hover {
|
||||
border-color: var(--qx-blue);
|
||||
transform: translateX(4px);
|
||||
}
|
||||
|
||||
.quiz-option.correct {
|
||||
background: var(--qx-green);
|
||||
color: white;
|
||||
border-color: var(--qx-green);
|
||||
}
|
||||
|
||||
.quiz-option.wrong {
|
||||
background: #ff4444;
|
||||
color: white;
|
||||
border-color: #ff4444;
|
||||
}
|
||||
|
||||
.quiz-option.disabled {
|
||||
pointer-events: none;
|
||||
opacity: 0.7;
|
||||
}
|
||||
|
||||
.quiz-letter {
|
||||
width: 32px;
|
||||
height: 32px;
|
||||
border-radius: 50%;
|
||||
background: var(--qx-gray);
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
font-weight: 600;
|
||||
flex-shrink: 0;
|
||||
}
|
||||
|
||||
.quiz-option:hover .quiz-letter {
|
||||
background: var(--qx-blue);
|
||||
color: white;
|
||||
}
|
||||
|
||||
.quiz-option.correct .quiz-letter,
|
||||
.quiz-option.wrong .quiz-letter {
|
||||
background: rgba(255,255,255,0.3);
|
||||
}
|
||||
|
||||
.quiz-feedback {
|
||||
margin-top: 20px;
|
||||
padding: 20px;
|
||||
border-radius: 12px;
|
||||
display: none;
|
||||
font-size: 1rem;
|
||||
}
|
||||
|
||||
.quiz-feedback.show {
|
||||
display: block;
|
||||
}
|
||||
|
||||
.lesson-nav {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
margin-top: 60px;
|
||||
padding-top: 40px;
|
||||
border-top: 2px solid var(--qx-gray);
|
||||
}
|
||||
|
||||
.nav-btn {
|
||||
padding: 14px 28px;
|
||||
border-radius: 10px;
|
||||
text-decoration: none;
|
||||
font-weight: 600;
|
||||
transition: all 0.2s;
|
||||
display: inline-flex;
|
||||
align-items: center;
|
||||
gap: 8px;
|
||||
}
|
||||
|
||||
.nav-btn.prev {
|
||||
background: var(--qx-gray);
|
||||
color: var(--qx-black);
|
||||
}
|
||||
|
||||
.nav-btn.next {
|
||||
background: var(--qx-blue);
|
||||
color: white;
|
||||
}
|
||||
|
||||
.nav-btn:hover {
|
||||
transform: translateY(-2px);
|
||||
box-shadow: 0 4px 12px rgba(0,0,0,0.15);
|
||||
}
|
||||
|
||||
.complete-btn {
|
||||
display: block;
|
||||
width: 100%;
|
||||
max-width: 400px;
|
||||
margin: 48px auto;
|
||||
padding: 18px 32px;
|
||||
background: var(--qx-green);
|
||||
color: white;
|
||||
border: none;
|
||||
border-radius: 12px;
|
||||
font-size: 1.1rem;
|
||||
font-weight: 600;
|
||||
cursor: pointer;
|
||||
transition: all 0.2s;
|
||||
}
|
||||
|
||||
.complete-btn:hover {
|
||||
transform: translateY(-2px);
|
||||
box-shadow: 0 4px 16px rgba(0,200,83,0.3);
|
||||
}
|
||||
|
||||
.complete-btn.completed {
|
||||
background: var(--qx-gray);
|
||||
color: var(--qx-text-muted);
|
||||
cursor: default;
|
||||
}
|
||||
|
||||
@media (max-width: 768px) {
|
||||
.lesson-title { font-size: 1.75rem; }
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<div class="progress-container">
|
||||
<div class="progress-bar">
|
||||
<div class="progress-fill" id="lessonProgress" style="width: 0%"></div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="lesson-container">
|
||||
<header class="lesson-header">
|
||||
<div class="lesson-module">Avancerade tekniker — Maximera kvalitet och effektivitet</div>
|
||||
<h1 class="lesson-title">Redigering och förbättring</h1>
|
||||
<div class="lesson-meta">
|
||||
<span>⏱️ 12 min</span>
|
||||
<span>🎯 Avancerad</span>
|
||||
<span>📚 Video</span>
|
||||
</div>
|
||||
</header>
|
||||
|
||||
<div class="content-block">
|
||||
<p>quiXzoom tillåter viss redigering för att förbättra bildkvaliteten.</p>
|
||||
</div>
|
||||
|
||||
<div class="warning-box">
|
||||
<strong>⚠️ Viktigt</strong>
|
||||
<p>Kraftig redigering kan leda till avvisade bilder. Håll det naturligt.</p>
|
||||
</div>
|
||||
|
||||
<div class="quiz-container">
|
||||
<div class="quiz-question">Vilken redigering är tillåten?</div>
|
||||
<ul class="quiz-options">
|
||||
<li class="quiz-option" onclick="checkAnswer(this, False)">
|
||||
<span class="quiz-letter">A</span>
|
||||
<span>Lägga till objekt i bilden</span>
|
||||
</li>
|
||||
<li class="quiz-option" onclick="checkAnswer(this, True)">
|
||||
<span class="quiz-letter">B</span>
|
||||
<span>Justera ljus och kontrast</span>
|
||||
</li>
|
||||
<li class="quiz-option" onclick="checkAnswer(this, False)">
|
||||
<span class="quiz-letter">C</span>
|
||||
<span>Förändra GPS-koordinater</span>
|
||||
</li>
|
||||
</ul>
|
||||
<div class="quiz-feedback" id="quizFeedback"></div>
|
||||
</div>
|
||||
|
||||
<button class="complete-btn" id="completeBtn" onclick="completeLesson()">
|
||||
✅ Markera lektion som klar
|
||||
</button>
|
||||
|
||||
<nav class="lesson-nav">
|
||||
<a href="/academy/module5/m5l2" class="nav-btn prev">← Föregående</a>
|
||||
<a href="/academy/module6/m6l1" class="nav-btn next">Nästa: Förstå utbetalningar och nivåer →</a>
|
||||
</nav>
|
||||
</div>
|
||||
|
||||
<script>
|
||||
const lessonId = 'm5l3';
|
||||
let completedLessons = JSON.parse(localStorage.getItem('academyProgress') || '[]');
|
||||
|
||||
function checkAnswer(element, isCorrect) {
|
||||
const options = document.querySelectorAll('.quiz-option');
|
||||
const feedback = document.getElementById('quizFeedback');
|
||||
|
||||
options.forEach(opt => opt.classList.add('disabled'));
|
||||
|
||||
if (isCorrect) {
|
||||
element.classList.add('correct');
|
||||
feedback.innerHTML = '<strong>✅ Rätt!</strong> Bra jobbat!';
|
||||
feedback.style.background = '#d4edda';
|
||||
feedback.style.color = '#155724';
|
||||
} else {
|
||||
element.classList.add('wrong');
|
||||
feedback.innerHTML = '<strong>❌ Inte riktigt.</strong> Tänk igenom svaret en gång till.';
|
||||
feedback.style.background = '#f8d7da';
|
||||
feedback.style.color = '#721c24';
|
||||
}
|
||||
|
||||
feedback.classList.add('show');
|
||||
}
|
||||
|
||||
function completeLesson() {
|
||||
if (!completedLessons.includes(lessonId)) {
|
||||
completedLessons.push(lessonId);
|
||||
localStorage.setItem('academyProgress', JSON.stringify(completedLessons));
|
||||
|
||||
const btn = document.getElementById('completeBtn');
|
||||
btn.textContent = '✅ Lektion klar!';
|
||||
btn.classList.add('completed');
|
||||
btn.disabled = true;
|
||||
|
||||
btn.style.transform = 'scale(1.05)';
|
||||
setTimeout(() => btn.style.transform = 'scale(1)', 200);
|
||||
}
|
||||
}
|
||||
|
||||
if (completedLessons.includes(lessonId)) {
|
||||
const btn = document.getElementById('completeBtn');
|
||||
btn.textContent = '✅ Lektion klar!';
|
||||
btn.classList.add('completed');
|
||||
btn.disabled = true;
|
||||
}
|
||||
</script>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,420 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="sv">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>Förstå utbetalningar och nivåer — quiXzoom Academy</title>
|
||||
<style>
|
||||
:root {
|
||||
--qx-black: #0a0a0a;
|
||||
--qx-white: #ffffff;
|
||||
--qx-blue: #0066FF;
|
||||
--qx-green: #00C853;
|
||||
--qx-gray: #F5F5F7;
|
||||
--qx-dark-gray: #1a1a1a;
|
||||
--qx-text-muted: #6e6e73;
|
||||
--qx-purple: #7B61FF;
|
||||
--qx-orange: #FF6B35;
|
||||
}
|
||||
|
||||
* { margin: 0; padding: 0; box-sizing: border-box; }
|
||||
|
||||
body {
|
||||
font-family: -apple-system, BlinkMacSystemFont, 'SF Pro Display', sans-serif;
|
||||
color: var(--qx-black);
|
||||
background: var(--qx-white);
|
||||
line-height: 1.6;
|
||||
}
|
||||
|
||||
.progress-container {
|
||||
position: sticky;
|
||||
top: 0;
|
||||
background: white;
|
||||
padding: 12px 20px;
|
||||
border-bottom: 1px solid var(--qx-gray);
|
||||
z-index: 100;
|
||||
}
|
||||
|
||||
.progress-bar {
|
||||
max-width: 600px;
|
||||
margin: 0 auto;
|
||||
background: var(--qx-gray);
|
||||
border-radius: 10px;
|
||||
height: 8px;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.progress-fill {
|
||||
background: var(--qx-green);
|
||||
height: 100%;
|
||||
width: 0%;
|
||||
transition: width 0.5s ease;
|
||||
}
|
||||
|
||||
.lesson-container {
|
||||
max-width: 800px;
|
||||
margin: 0 auto;
|
||||
padding: 40px 20px;
|
||||
}
|
||||
|
||||
.lesson-header {
|
||||
margin-bottom: 48px;
|
||||
}
|
||||
|
||||
.lesson-module {
|
||||
color: var(--qx-blue);
|
||||
font-size: 0.875rem;
|
||||
text-transform: uppercase;
|
||||
letter-spacing: 2px;
|
||||
margin-bottom: 8px;
|
||||
}
|
||||
|
||||
.lesson-title {
|
||||
font-size: 2.5rem;
|
||||
margin-bottom: 16px;
|
||||
line-height: 1.2;
|
||||
}
|
||||
|
||||
.lesson-meta {
|
||||
color: var(--qx-text-muted);
|
||||
font-size: 0.9rem;
|
||||
display: flex;
|
||||
gap: 16px;
|
||||
}
|
||||
|
||||
.content-block {
|
||||
margin-bottom: 48px;
|
||||
}
|
||||
|
||||
.content-block h2 {
|
||||
font-size: 1.75rem;
|
||||
margin-bottom: 20px;
|
||||
}
|
||||
|
||||
.content-block p {
|
||||
margin-bottom: 16px;
|
||||
color: #333;
|
||||
font-size: 1.05rem;
|
||||
}
|
||||
|
||||
.content-block ul {
|
||||
margin-left: 24px;
|
||||
margin-bottom: 16px;
|
||||
}
|
||||
|
||||
.content-block li {
|
||||
margin-bottom: 12px;
|
||||
}
|
||||
|
||||
.tip-box {
|
||||
background: #e8f4fd;
|
||||
border-left: 4px solid var(--qx-blue);
|
||||
padding: 24px;
|
||||
margin: 24px 0;
|
||||
border-radius: 0 12px 12px 0;
|
||||
}
|
||||
|
||||
.tip-box strong {
|
||||
color: var(--qx-blue);
|
||||
display: block;
|
||||
margin-bottom: 8px;
|
||||
}
|
||||
|
||||
.warning-box {
|
||||
background: #fff3cd;
|
||||
border-left: 4px solid var(--qx-orange);
|
||||
padding: 24px;
|
||||
margin: 24px 0;
|
||||
border-radius: 0 12px 12px 0;
|
||||
}
|
||||
|
||||
.warning-box strong {
|
||||
color: var(--qx-orange);
|
||||
display: block;
|
||||
margin-bottom: 8px;
|
||||
}
|
||||
|
||||
.example-box {
|
||||
background: var(--qx-gray);
|
||||
padding: 24px;
|
||||
border-radius: 12px;
|
||||
margin: 24px 0;
|
||||
}
|
||||
|
||||
.example-box h4 {
|
||||
margin-bottom: 12px;
|
||||
color: var(--qx-dark-gray);
|
||||
}
|
||||
|
||||
.quiz-container {
|
||||
background: var(--qx-gray);
|
||||
padding: 32px;
|
||||
border-radius: 16px;
|
||||
margin: 32px 0;
|
||||
}
|
||||
|
||||
.quiz-question {
|
||||
font-size: 1.25rem;
|
||||
font-weight: 600;
|
||||
margin-bottom: 24px;
|
||||
}
|
||||
|
||||
.quiz-options {
|
||||
list-style: none;
|
||||
}
|
||||
|
||||
.quiz-option {
|
||||
background: white;
|
||||
padding: 16px 20px;
|
||||
margin-bottom: 12px;
|
||||
border-radius: 12px;
|
||||
cursor: pointer;
|
||||
transition: all 0.2s;
|
||||
border: 2px solid transparent;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 12px;
|
||||
}
|
||||
|
||||
.quiz-option:hover {
|
||||
border-color: var(--qx-blue);
|
||||
transform: translateX(4px);
|
||||
}
|
||||
|
||||
.quiz-option.correct {
|
||||
background: var(--qx-green);
|
||||
color: white;
|
||||
border-color: var(--qx-green);
|
||||
}
|
||||
|
||||
.quiz-option.wrong {
|
||||
background: #ff4444;
|
||||
color: white;
|
||||
border-color: #ff4444;
|
||||
}
|
||||
|
||||
.quiz-option.disabled {
|
||||
pointer-events: none;
|
||||
opacity: 0.7;
|
||||
}
|
||||
|
||||
.quiz-letter {
|
||||
width: 32px;
|
||||
height: 32px;
|
||||
border-radius: 50%;
|
||||
background: var(--qx-gray);
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
font-weight: 600;
|
||||
flex-shrink: 0;
|
||||
}
|
||||
|
||||
.quiz-option:hover .quiz-letter {
|
||||
background: var(--qx-blue);
|
||||
color: white;
|
||||
}
|
||||
|
||||
.quiz-option.correct .quiz-letter,
|
||||
.quiz-option.wrong .quiz-letter {
|
||||
background: rgba(255,255,255,0.3);
|
||||
}
|
||||
|
||||
.quiz-feedback {
|
||||
margin-top: 20px;
|
||||
padding: 20px;
|
||||
border-radius: 12px;
|
||||
display: none;
|
||||
font-size: 1rem;
|
||||
}
|
||||
|
||||
.quiz-feedback.show {
|
||||
display: block;
|
||||
}
|
||||
|
||||
.lesson-nav {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
margin-top: 60px;
|
||||
padding-top: 40px;
|
||||
border-top: 2px solid var(--qx-gray);
|
||||
}
|
||||
|
||||
.nav-btn {
|
||||
padding: 14px 28px;
|
||||
border-radius: 10px;
|
||||
text-decoration: none;
|
||||
font-weight: 600;
|
||||
transition: all 0.2s;
|
||||
display: inline-flex;
|
||||
align-items: center;
|
||||
gap: 8px;
|
||||
}
|
||||
|
||||
.nav-btn.prev {
|
||||
background: var(--qx-gray);
|
||||
color: var(--qx-black);
|
||||
}
|
||||
|
||||
.nav-btn.next {
|
||||
background: var(--qx-blue);
|
||||
color: white;
|
||||
}
|
||||
|
||||
.nav-btn:hover {
|
||||
transform: translateY(-2px);
|
||||
box-shadow: 0 4px 12px rgba(0,0,0,0.15);
|
||||
}
|
||||
|
||||
.complete-btn {
|
||||
display: block;
|
||||
width: 100%;
|
||||
max-width: 400px;
|
||||
margin: 48px auto;
|
||||
padding: 18px 32px;
|
||||
background: var(--qx-green);
|
||||
color: white;
|
||||
border: none;
|
||||
border-radius: 12px;
|
||||
font-size: 1.1rem;
|
||||
font-weight: 600;
|
||||
cursor: pointer;
|
||||
transition: all 0.2s;
|
||||
}
|
||||
|
||||
.complete-btn:hover {
|
||||
transform: translateY(-2px);
|
||||
box-shadow: 0 4px 16px rgba(0,200,83,0.3);
|
||||
}
|
||||
|
||||
.complete-btn.completed {
|
||||
background: var(--qx-gray);
|
||||
color: var(--qx-text-muted);
|
||||
cursor: default;
|
||||
}
|
||||
|
||||
@media (max-width: 768px) {
|
||||
.lesson-title { font-size: 1.75rem; }
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<div class="progress-container">
|
||||
<div class="progress-bar">
|
||||
<div class="progress-fill" id="lessonProgress" style="width: 0%"></div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="lesson-container">
|
||||
<header class="lesson-header">
|
||||
<div class="lesson-module">Maximera inkomsten — Strategier för att tjäna mer som Zoomer</div>
|
||||
<h1 class="lesson-title">Förstå utbetalningar och nivåer</h1>
|
||||
<div class="lesson-meta">
|
||||
<span>⏱️ 10 min</span>
|
||||
<span>🎯 Avancerad</span>
|
||||
<span>📚 Läsa</span>
|
||||
</div>
|
||||
</header>
|
||||
|
||||
<div class="content-block">
|
||||
<p>quiXzoom har ett nivåsystem där du tjänar mer ju fler uppdrag du genomför.</p>
|
||||
</div>
|
||||
|
||||
<div class="content-block">
|
||||
<h2>Nivåer</h2>
|
||||
<ul>
|
||||
<li>Nybörjare: 100-200 kr/uppdrag</li>
|
||||
<li>Erfaren: 200-400 kr/uppdrag</li>
|
||||
<li>Expert: 400-800 kr/uppdrag</li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<div class="content-block">
|
||||
<h2>Utbetalningar</h2>
|
||||
<ul>
|
||||
<li>Utbetalningar sker varje måndag</li>
|
||||
<li>Minst 500 kr för utbetalning</li>
|
||||
<li>Direkt till ditt bankkonto</li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<div class="quiz-container">
|
||||
<div class="quiz-question">Hur ofta sker utbetalningar?</div>
|
||||
<ul class="quiz-options">
|
||||
<li class="quiz-option" onclick="checkAnswer(this, False)">
|
||||
<span class="quiz-letter">A</span>
|
||||
<span>Varje dag</span>
|
||||
</li>
|
||||
<li class="quiz-option" onclick="checkAnswer(this, True)">
|
||||
<span class="quiz-letter">B</span>
|
||||
<span>Varje måndag</span>
|
||||
</li>
|
||||
<li class="quiz-option" onclick="checkAnswer(this, False)">
|
||||
<span class="quiz-letter">C</span>
|
||||
<span>Varje månad</span>
|
||||
</li>
|
||||
</ul>
|
||||
<div class="quiz-feedback" id="quizFeedback"></div>
|
||||
</div>
|
||||
|
||||
<button class="complete-btn" id="completeBtn" onclick="completeLesson()">
|
||||
✅ Markera lektion som klar
|
||||
</button>
|
||||
|
||||
<nav class="lesson-nav">
|
||||
<a href="/academy/module5/m5l3" class="nav-btn prev">← Föregående</a>
|
||||
<a href="/academy/module6/m6l2" class="nav-btn next">Nästa: Planera din rutt effektivt →</a>
|
||||
</nav>
|
||||
</div>
|
||||
|
||||
<script>
|
||||
const lessonId = 'm6l1';
|
||||
let completedLessons = JSON.parse(localStorage.getItem('academyProgress') || '[]');
|
||||
|
||||
function checkAnswer(element, isCorrect) {
|
||||
const options = document.querySelectorAll('.quiz-option');
|
||||
const feedback = document.getElementById('quizFeedback');
|
||||
|
||||
options.forEach(opt => opt.classList.add('disabled'));
|
||||
|
||||
if (isCorrect) {
|
||||
element.classList.add('correct');
|
||||
feedback.innerHTML = '<strong>✅ Rätt!</strong> Bra jobbat!';
|
||||
feedback.style.background = '#d4edda';
|
||||
feedback.style.color = '#155724';
|
||||
} else {
|
||||
element.classList.add('wrong');
|
||||
feedback.innerHTML = '<strong>❌ Inte riktigt.</strong> Tänk igenom svaret en gång till.';
|
||||
feedback.style.background = '#f8d7da';
|
||||
feedback.style.color = '#721c24';
|
||||
}
|
||||
|
||||
feedback.classList.add('show');
|
||||
}
|
||||
|
||||
function completeLesson() {
|
||||
if (!completedLessons.includes(lessonId)) {
|
||||
completedLessons.push(lessonId);
|
||||
localStorage.setItem('academyProgress', JSON.stringify(completedLessons));
|
||||
|
||||
const btn = document.getElementById('completeBtn');
|
||||
btn.textContent = '✅ Lektion klar!';
|
||||
btn.classList.add('completed');
|
||||
btn.disabled = true;
|
||||
|
||||
btn.style.transform = 'scale(1.05)';
|
||||
setTimeout(() => btn.style.transform = 'scale(1)', 200);
|
||||
}
|
||||
}
|
||||
|
||||
if (completedLessons.includes(lessonId)) {
|
||||
const btn = document.getElementById('completeBtn');
|
||||
btn.textContent = '✅ Lektion klar!';
|
||||
btn.classList.add('completed');
|
||||
btn.disabled = true;
|
||||
}
|
||||
</script>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,419 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="sv">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>Planera din rutt effektivt — quiXzoom Academy</title>
|
||||
<style>
|
||||
:root {
|
||||
--qx-black: #0a0a0a;
|
||||
--qx-white: #ffffff;
|
||||
--qx-blue: #0066FF;
|
||||
--qx-green: #00C853;
|
||||
--qx-gray: #F5F5F7;
|
||||
--qx-dark-gray: #1a1a1a;
|
||||
--qx-text-muted: #6e6e73;
|
||||
--qx-purple: #7B61FF;
|
||||
--qx-orange: #FF6B35;
|
||||
}
|
||||
|
||||
* { margin: 0; padding: 0; box-sizing: border-box; }
|
||||
|
||||
body {
|
||||
font-family: -apple-system, BlinkMacSystemFont, 'SF Pro Display', sans-serif;
|
||||
color: var(--qx-black);
|
||||
background: var(--qx-white);
|
||||
line-height: 1.6;
|
||||
}
|
||||
|
||||
.progress-container {
|
||||
position: sticky;
|
||||
top: 0;
|
||||
background: white;
|
||||
padding: 12px 20px;
|
||||
border-bottom: 1px solid var(--qx-gray);
|
||||
z-index: 100;
|
||||
}
|
||||
|
||||
.progress-bar {
|
||||
max-width: 600px;
|
||||
margin: 0 auto;
|
||||
background: var(--qx-gray);
|
||||
border-radius: 10px;
|
||||
height: 8px;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.progress-fill {
|
||||
background: var(--qx-green);
|
||||
height: 100%;
|
||||
width: 0%;
|
||||
transition: width 0.5s ease;
|
||||
}
|
||||
|
||||
.lesson-container {
|
||||
max-width: 800px;
|
||||
margin: 0 auto;
|
||||
padding: 40px 20px;
|
||||
}
|
||||
|
||||
.lesson-header {
|
||||
margin-bottom: 48px;
|
||||
}
|
||||
|
||||
.lesson-module {
|
||||
color: var(--qx-blue);
|
||||
font-size: 0.875rem;
|
||||
text-transform: uppercase;
|
||||
letter-spacing: 2px;
|
||||
margin-bottom: 8px;
|
||||
}
|
||||
|
||||
.lesson-title {
|
||||
font-size: 2.5rem;
|
||||
margin-bottom: 16px;
|
||||
line-height: 1.2;
|
||||
}
|
||||
|
||||
.lesson-meta {
|
||||
color: var(--qx-text-muted);
|
||||
font-size: 0.9rem;
|
||||
display: flex;
|
||||
gap: 16px;
|
||||
}
|
||||
|
||||
.content-block {
|
||||
margin-bottom: 48px;
|
||||
}
|
||||
|
||||
.content-block h2 {
|
||||
font-size: 1.75rem;
|
||||
margin-bottom: 20px;
|
||||
}
|
||||
|
||||
.content-block p {
|
||||
margin-bottom: 16px;
|
||||
color: #333;
|
||||
font-size: 1.05rem;
|
||||
}
|
||||
|
||||
.content-block ul {
|
||||
margin-left: 24px;
|
||||
margin-bottom: 16px;
|
||||
}
|
||||
|
||||
.content-block li {
|
||||
margin-bottom: 12px;
|
||||
}
|
||||
|
||||
.tip-box {
|
||||
background: #e8f4fd;
|
||||
border-left: 4px solid var(--qx-blue);
|
||||
padding: 24px;
|
||||
margin: 24px 0;
|
||||
border-radius: 0 12px 12px 0;
|
||||
}
|
||||
|
||||
.tip-box strong {
|
||||
color: var(--qx-blue);
|
||||
display: block;
|
||||
margin-bottom: 8px;
|
||||
}
|
||||
|
||||
.warning-box {
|
||||
background: #fff3cd;
|
||||
border-left: 4px solid var(--qx-orange);
|
||||
padding: 24px;
|
||||
margin: 24px 0;
|
||||
border-radius: 0 12px 12px 0;
|
||||
}
|
||||
|
||||
.warning-box strong {
|
||||
color: var(--qx-orange);
|
||||
display: block;
|
||||
margin-bottom: 8px;
|
||||
}
|
||||
|
||||
.example-box {
|
||||
background: var(--qx-gray);
|
||||
padding: 24px;
|
||||
border-radius: 12px;
|
||||
margin: 24px 0;
|
||||
}
|
||||
|
||||
.example-box h4 {
|
||||
margin-bottom: 12px;
|
||||
color: var(--qx-dark-gray);
|
||||
}
|
||||
|
||||
.quiz-container {
|
||||
background: var(--qx-gray);
|
||||
padding: 32px;
|
||||
border-radius: 16px;
|
||||
margin: 32px 0;
|
||||
}
|
||||
|
||||
.quiz-question {
|
||||
font-size: 1.25rem;
|
||||
font-weight: 600;
|
||||
margin-bottom: 24px;
|
||||
}
|
||||
|
||||
.quiz-options {
|
||||
list-style: none;
|
||||
}
|
||||
|
||||
.quiz-option {
|
||||
background: white;
|
||||
padding: 16px 20px;
|
||||
margin-bottom: 12px;
|
||||
border-radius: 12px;
|
||||
cursor: pointer;
|
||||
transition: all 0.2s;
|
||||
border: 2px solid transparent;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 12px;
|
||||
}
|
||||
|
||||
.quiz-option:hover {
|
||||
border-color: var(--qx-blue);
|
||||
transform: translateX(4px);
|
||||
}
|
||||
|
||||
.quiz-option.correct {
|
||||
background: var(--qx-green);
|
||||
color: white;
|
||||
border-color: var(--qx-green);
|
||||
}
|
||||
|
||||
.quiz-option.wrong {
|
||||
background: #ff4444;
|
||||
color: white;
|
||||
border-color: #ff4444;
|
||||
}
|
||||
|
||||
.quiz-option.disabled {
|
||||
pointer-events: none;
|
||||
opacity: 0.7;
|
||||
}
|
||||
|
||||
.quiz-letter {
|
||||
width: 32px;
|
||||
height: 32px;
|
||||
border-radius: 50%;
|
||||
background: var(--qx-gray);
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
font-weight: 600;
|
||||
flex-shrink: 0;
|
||||
}
|
||||
|
||||
.quiz-option:hover .quiz-letter {
|
||||
background: var(--qx-blue);
|
||||
color: white;
|
||||
}
|
||||
|
||||
.quiz-option.correct .quiz-letter,
|
||||
.quiz-option.wrong .quiz-letter {
|
||||
background: rgba(255,255,255,0.3);
|
||||
}
|
||||
|
||||
.quiz-feedback {
|
||||
margin-top: 20px;
|
||||
padding: 20px;
|
||||
border-radius: 12px;
|
||||
display: none;
|
||||
font-size: 1rem;
|
||||
}
|
||||
|
||||
.quiz-feedback.show {
|
||||
display: block;
|
||||
}
|
||||
|
||||
.lesson-nav {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
margin-top: 60px;
|
||||
padding-top: 40px;
|
||||
border-top: 2px solid var(--qx-gray);
|
||||
}
|
||||
|
||||
.nav-btn {
|
||||
padding: 14px 28px;
|
||||
border-radius: 10px;
|
||||
text-decoration: none;
|
||||
font-weight: 600;
|
||||
transition: all 0.2s;
|
||||
display: inline-flex;
|
||||
align-items: center;
|
||||
gap: 8px;
|
||||
}
|
||||
|
||||
.nav-btn.prev {
|
||||
background: var(--qx-gray);
|
||||
color: var(--qx-black);
|
||||
}
|
||||
|
||||
.nav-btn.next {
|
||||
background: var(--qx-blue);
|
||||
color: white;
|
||||
}
|
||||
|
||||
.nav-btn:hover {
|
||||
transform: translateY(-2px);
|
||||
box-shadow: 0 4px 12px rgba(0,0,0,0.15);
|
||||
}
|
||||
|
||||
.complete-btn {
|
||||
display: block;
|
||||
width: 100%;
|
||||
max-width: 400px;
|
||||
margin: 48px auto;
|
||||
padding: 18px 32px;
|
||||
background: var(--qx-green);
|
||||
color: white;
|
||||
border: none;
|
||||
border-radius: 12px;
|
||||
font-size: 1.1rem;
|
||||
font-weight: 600;
|
||||
cursor: pointer;
|
||||
transition: all 0.2s;
|
||||
}
|
||||
|
||||
.complete-btn:hover {
|
||||
transform: translateY(-2px);
|
||||
box-shadow: 0 4px 16px rgba(0,200,83,0.3);
|
||||
}
|
||||
|
||||
.complete-btn.completed {
|
||||
background: var(--qx-gray);
|
||||
color: var(--qx-text-muted);
|
||||
cursor: default;
|
||||
}
|
||||
|
||||
@media (max-width: 768px) {
|
||||
.lesson-title { font-size: 1.75rem; }
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<div class="progress-container">
|
||||
<div class="progress-bar">
|
||||
<div class="progress-fill" id="lessonProgress" style="width: 0%"></div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="lesson-container">
|
||||
<header class="lesson-header">
|
||||
<div class="lesson-module">Maximera inkomsten — Strategier för att tjäna mer som Zoomer</div>
|
||||
<h1 class="lesson-title">Planera din rutt effektivt</h1>
|
||||
<div class="lesson-meta">
|
||||
<span>⏱️ 12 min</span>
|
||||
<span>🎯 Avancerad</span>
|
||||
<span>📚 Interaktiv karta</span>
|
||||
</div>
|
||||
</header>
|
||||
|
||||
<div class="content-block">
|
||||
<p>Effektiv ruttplanering kan dubbla din inkomst per timme.</p>
|
||||
</div>
|
||||
|
||||
<div class="tip-box">
|
||||
<strong>💡 Tips</strong>
|
||||
<p>• Börja med det längsta uppdraget</p>
|
||||
<p>• Sluta med uppdrag nära hemmet</p>
|
||||
<p>• Ta med mat och vatten för långa dagar</p>
|
||||
</div>
|
||||
|
||||
<div class="content-block">
|
||||
<h2>Strategier</h2>
|
||||
<ul>
|
||||
<li>Gruppera uppdrag efter område</li>
|
||||
<li>Undvik backtracking</li>
|
||||
<li>Planera runt rusningstrafik</li>
|
||||
<li>Använd navigation för optimal rutt</li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<div class="quiz-container">
|
||||
<div class="quiz-question">Vilket är det bästa sättet att planera en rutt?</div>
|
||||
<ul class="quiz-options">
|
||||
<li class="quiz-option" onclick="checkAnswer(this, False)">
|
||||
<span class="quiz-letter">A</span>
|
||||
<span>Åka fram och tillbaka</span>
|
||||
</li>
|
||||
<li class="quiz-option" onclick="checkAnswer(this, True)">
|
||||
<span class="quiz-letter">B</span>
|
||||
<span>Gruppera uppdrag efter område</span>
|
||||
</li>
|
||||
<li class="quiz-option" onclick="checkAnswer(this, False)">
|
||||
<span class="quiz-letter">C</span>
|
||||
<span>Ta uppdrag slumpmässigt</span>
|
||||
</li>
|
||||
</ul>
|
||||
<div class="quiz-feedback" id="quizFeedback"></div>
|
||||
</div>
|
||||
|
||||
<button class="complete-btn" id="completeBtn" onclick="completeLesson()">
|
||||
✅ Markera lektion som klar
|
||||
</button>
|
||||
|
||||
<nav class="lesson-nav">
|
||||
<a href="/academy/module6/m6l1" class="nav-btn prev">← Föregående</a>
|
||||
<a href="/academy/module6/m6l3" class="nav-btn next">Nästa: Bygg ditt rykte och få fler uppdrag →</a>
|
||||
</nav>
|
||||
</div>
|
||||
|
||||
<script>
|
||||
const lessonId = 'm6l2';
|
||||
let completedLessons = JSON.parse(localStorage.getItem('academyProgress') || '[]');
|
||||
|
||||
function checkAnswer(element, isCorrect) {
|
||||
const options = document.querySelectorAll('.quiz-option');
|
||||
const feedback = document.getElementById('quizFeedback');
|
||||
|
||||
options.forEach(opt => opt.classList.add('disabled'));
|
||||
|
||||
if (isCorrect) {
|
||||
element.classList.add('correct');
|
||||
feedback.innerHTML = '<strong>✅ Rätt!</strong> Bra jobbat!';
|
||||
feedback.style.background = '#d4edda';
|
||||
feedback.style.color = '#155724';
|
||||
} else {
|
||||
element.classList.add('wrong');
|
||||
feedback.innerHTML = '<strong>❌ Inte riktigt.</strong> Tänk igenom svaret en gång till.';
|
||||
feedback.style.background = '#f8d7da';
|
||||
feedback.style.color = '#721c24';
|
||||
}
|
||||
|
||||
feedback.classList.add('show');
|
||||
}
|
||||
|
||||
function completeLesson() {
|
||||
if (!completedLessons.includes(lessonId)) {
|
||||
completedLessons.push(lessonId);
|
||||
localStorage.setItem('academyProgress', JSON.stringify(completedLessons));
|
||||
|
||||
const btn = document.getElementById('completeBtn');
|
||||
btn.textContent = '✅ Lektion klar!';
|
||||
btn.classList.add('completed');
|
||||
btn.disabled = true;
|
||||
|
||||
btn.style.transform = 'scale(1.05)';
|
||||
setTimeout(() => btn.style.transform = 'scale(1)', 200);
|
||||
}
|
||||
}
|
||||
|
||||
if (completedLessons.includes(lessonId)) {
|
||||
const btn = document.getElementById('completeBtn');
|
||||
btn.textContent = '✅ Lektion klar!';
|
||||
btn.classList.add('completed');
|
||||
btn.disabled = true;
|
||||
}
|
||||
</script>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,409 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="sv">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>Bygg ditt rykte och få fler uppdrag — quiXzoom Academy</title>
|
||||
<style>
|
||||
:root {
|
||||
--qx-black: #0a0a0a;
|
||||
--qx-white: #ffffff;
|
||||
--qx-blue: #0066FF;
|
||||
--qx-green: #00C853;
|
||||
--qx-gray: #F5F5F7;
|
||||
--qx-dark-gray: #1a1a1a;
|
||||
--qx-text-muted: #6e6e73;
|
||||
--qx-purple: #7B61FF;
|
||||
--qx-orange: #FF6B35;
|
||||
}
|
||||
|
||||
* { margin: 0; padding: 0; box-sizing: border-box; }
|
||||
|
||||
body {
|
||||
font-family: -apple-system, BlinkMacSystemFont, 'SF Pro Display', sans-serif;
|
||||
color: var(--qx-black);
|
||||
background: var(--qx-white);
|
||||
line-height: 1.6;
|
||||
}
|
||||
|
||||
.progress-container {
|
||||
position: sticky;
|
||||
top: 0;
|
||||
background: white;
|
||||
padding: 12px 20px;
|
||||
border-bottom: 1px solid var(--qx-gray);
|
||||
z-index: 100;
|
||||
}
|
||||
|
||||
.progress-bar {
|
||||
max-width: 600px;
|
||||
margin: 0 auto;
|
||||
background: var(--qx-gray);
|
||||
border-radius: 10px;
|
||||
height: 8px;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.progress-fill {
|
||||
background: var(--qx-green);
|
||||
height: 100%;
|
||||
width: 0%;
|
||||
transition: width 0.5s ease;
|
||||
}
|
||||
|
||||
.lesson-container {
|
||||
max-width: 800px;
|
||||
margin: 0 auto;
|
||||
padding: 40px 20px;
|
||||
}
|
||||
|
||||
.lesson-header {
|
||||
margin-bottom: 48px;
|
||||
}
|
||||
|
||||
.lesson-module {
|
||||
color: var(--qx-blue);
|
||||
font-size: 0.875rem;
|
||||
text-transform: uppercase;
|
||||
letter-spacing: 2px;
|
||||
margin-bottom: 8px;
|
||||
}
|
||||
|
||||
.lesson-title {
|
||||
font-size: 2.5rem;
|
||||
margin-bottom: 16px;
|
||||
line-height: 1.2;
|
||||
}
|
||||
|
||||
.lesson-meta {
|
||||
color: var(--qx-text-muted);
|
||||
font-size: 0.9rem;
|
||||
display: flex;
|
||||
gap: 16px;
|
||||
}
|
||||
|
||||
.content-block {
|
||||
margin-bottom: 48px;
|
||||
}
|
||||
|
||||
.content-block h2 {
|
||||
font-size: 1.75rem;
|
||||
margin-bottom: 20px;
|
||||
}
|
||||
|
||||
.content-block p {
|
||||
margin-bottom: 16px;
|
||||
color: #333;
|
||||
font-size: 1.05rem;
|
||||
}
|
||||
|
||||
.content-block ul {
|
||||
margin-left: 24px;
|
||||
margin-bottom: 16px;
|
||||
}
|
||||
|
||||
.content-block li {
|
||||
margin-bottom: 12px;
|
||||
}
|
||||
|
||||
.tip-box {
|
||||
background: #e8f4fd;
|
||||
border-left: 4px solid var(--qx-blue);
|
||||
padding: 24px;
|
||||
margin: 24px 0;
|
||||
border-radius: 0 12px 12px 0;
|
||||
}
|
||||
|
||||
.tip-box strong {
|
||||
color: var(--qx-blue);
|
||||
display: block;
|
||||
margin-bottom: 8px;
|
||||
}
|
||||
|
||||
.warning-box {
|
||||
background: #fff3cd;
|
||||
border-left: 4px solid var(--qx-orange);
|
||||
padding: 24px;
|
||||
margin: 24px 0;
|
||||
border-radius: 0 12px 12px 0;
|
||||
}
|
||||
|
||||
.warning-box strong {
|
||||
color: var(--qx-orange);
|
||||
display: block;
|
||||
margin-bottom: 8px;
|
||||
}
|
||||
|
||||
.example-box {
|
||||
background: var(--qx-gray);
|
||||
padding: 24px;
|
||||
border-radius: 12px;
|
||||
margin: 24px 0;
|
||||
}
|
||||
|
||||
.example-box h4 {
|
||||
margin-bottom: 12px;
|
||||
color: var(--qx-dark-gray);
|
||||
}
|
||||
|
||||
.quiz-container {
|
||||
background: var(--qx-gray);
|
||||
padding: 32px;
|
||||
border-radius: 16px;
|
||||
margin: 32px 0;
|
||||
}
|
||||
|
||||
.quiz-question {
|
||||
font-size: 1.25rem;
|
||||
font-weight: 600;
|
||||
margin-bottom: 24px;
|
||||
}
|
||||
|
||||
.quiz-options {
|
||||
list-style: none;
|
||||
}
|
||||
|
||||
.quiz-option {
|
||||
background: white;
|
||||
padding: 16px 20px;
|
||||
margin-bottom: 12px;
|
||||
border-radius: 12px;
|
||||
cursor: pointer;
|
||||
transition: all 0.2s;
|
||||
border: 2px solid transparent;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 12px;
|
||||
}
|
||||
|
||||
.quiz-option:hover {
|
||||
border-color: var(--qx-blue);
|
||||
transform: translateX(4px);
|
||||
}
|
||||
|
||||
.quiz-option.correct {
|
||||
background: var(--qx-green);
|
||||
color: white;
|
||||
border-color: var(--qx-green);
|
||||
}
|
||||
|
||||
.quiz-option.wrong {
|
||||
background: #ff4444;
|
||||
color: white;
|
||||
border-color: #ff4444;
|
||||
}
|
||||
|
||||
.quiz-option.disabled {
|
||||
pointer-events: none;
|
||||
opacity: 0.7;
|
||||
}
|
||||
|
||||
.quiz-letter {
|
||||
width: 32px;
|
||||
height: 32px;
|
||||
border-radius: 50%;
|
||||
background: var(--qx-gray);
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
font-weight: 600;
|
||||
flex-shrink: 0;
|
||||
}
|
||||
|
||||
.quiz-option:hover .quiz-letter {
|
||||
background: var(--qx-blue);
|
||||
color: white;
|
||||
}
|
||||
|
||||
.quiz-option.correct .quiz-letter,
|
||||
.quiz-option.wrong .quiz-letter {
|
||||
background: rgba(255,255,255,0.3);
|
||||
}
|
||||
|
||||
.quiz-feedback {
|
||||
margin-top: 20px;
|
||||
padding: 20px;
|
||||
border-radius: 12px;
|
||||
display: none;
|
||||
font-size: 1rem;
|
||||
}
|
||||
|
||||
.quiz-feedback.show {
|
||||
display: block;
|
||||
}
|
||||
|
||||
.lesson-nav {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
margin-top: 60px;
|
||||
padding-top: 40px;
|
||||
border-top: 2px solid var(--qx-gray);
|
||||
}
|
||||
|
||||
.nav-btn {
|
||||
padding: 14px 28px;
|
||||
border-radius: 10px;
|
||||
text-decoration: none;
|
||||
font-weight: 600;
|
||||
transition: all 0.2s;
|
||||
display: inline-flex;
|
||||
align-items: center;
|
||||
gap: 8px;
|
||||
}
|
||||
|
||||
.nav-btn.prev {
|
||||
background: var(--qx-gray);
|
||||
color: var(--qx-black);
|
||||
}
|
||||
|
||||
.nav-btn.next {
|
||||
background: var(--qx-blue);
|
||||
color: white;
|
||||
}
|
||||
|
||||
.nav-btn:hover {
|
||||
transform: translateY(-2px);
|
||||
box-shadow: 0 4px 12px rgba(0,0,0,0.15);
|
||||
}
|
||||
|
||||
.complete-btn {
|
||||
display: block;
|
||||
width: 100%;
|
||||
max-width: 400px;
|
||||
margin: 48px auto;
|
||||
padding: 18px 32px;
|
||||
background: var(--qx-green);
|
||||
color: white;
|
||||
border: none;
|
||||
border-radius: 12px;
|
||||
font-size: 1.1rem;
|
||||
font-weight: 600;
|
||||
cursor: pointer;
|
||||
transition: all 0.2s;
|
||||
}
|
||||
|
||||
.complete-btn:hover {
|
||||
transform: translateY(-2px);
|
||||
box-shadow: 0 4px 16px rgba(0,200,83,0.3);
|
||||
}
|
||||
|
||||
.complete-btn.completed {
|
||||
background: var(--qx-gray);
|
||||
color: var(--qx-text-muted);
|
||||
cursor: default;
|
||||
}
|
||||
|
||||
@media (max-width: 768px) {
|
||||
.lesson-title { font-size: 1.75rem; }
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<div class="progress-container">
|
||||
<div class="progress-bar">
|
||||
<div class="progress-fill" id="lessonProgress" style="width: 0%"></div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="lesson-container">
|
||||
<header class="lesson-header">
|
||||
<div class="lesson-module">Maximera inkomsten — Strategier för att tjäna mer som Zoomer</div>
|
||||
<h1 class="lesson-title">Bygg ditt rykte och få fler uppdrag</h1>
|
||||
<div class="lesson-meta">
|
||||
<span>⏱️ 8 min</span>
|
||||
<span>🎯 Avancerad</span>
|
||||
<span>📚 Läsa</span>
|
||||
</div>
|
||||
</header>
|
||||
|
||||
<div class="content-block">
|
||||
<p>Ett gott rykte ger dig tillgång till bättre uppdrag och högre betalning.</p>
|
||||
</div>
|
||||
|
||||
<div class="tip-box">
|
||||
<strong>💡 Tips</strong>
|
||||
<p>• Svara alltid på meddelanden från quiXzoom</p>
|
||||
<p>• Rapportera problem direkt</p>
|
||||
<p>• Håll hög kvalitet på alla bilder</p>
|
||||
</div>
|
||||
|
||||
<div class="quiz-container">
|
||||
<div class="quiz-question">Vad påverkar ditt rykte mest?</div>
|
||||
<ul class="quiz-options">
|
||||
<li class="quiz-option" onclick="checkAnswer(this, False)">
|
||||
<span class="quiz-letter">A</span>
|
||||
<span>Antal uppdrag</span>
|
||||
</li>
|
||||
<li class="quiz-option" onclick="checkAnswer(this, True)">
|
||||
<span class="quiz-letter">B</span>
|
||||
<span>Godkännandegrad och kvalitet</span>
|
||||
</li>
|
||||
<li class="quiz-option" onclick="checkAnswer(this, False)">
|
||||
<span class="quiz-letter">C</span>
|
||||
<span>Hur snabbt du accepterar</span>
|
||||
</li>
|
||||
</ul>
|
||||
<div class="quiz-feedback" id="quizFeedback"></div>
|
||||
</div>
|
||||
|
||||
<button class="complete-btn" id="completeBtn" onclick="completeLesson()">
|
||||
✅ Markera lektion som klar
|
||||
</button>
|
||||
|
||||
<nav class="lesson-nav">
|
||||
<a href="/academy/module6/m6l2" class="nav-btn prev">← Föregående</a>
|
||||
<a href="/academy/module6/m6l4" class="nav-btn next">Nästa: Skatteoptimering för Zoomers →</a>
|
||||
</nav>
|
||||
</div>
|
||||
|
||||
<script>
|
||||
const lessonId = 'm6l3';
|
||||
let completedLessons = JSON.parse(localStorage.getItem('academyProgress') || '[]');
|
||||
|
||||
function checkAnswer(element, isCorrect) {
|
||||
const options = document.querySelectorAll('.quiz-option');
|
||||
const feedback = document.getElementById('quizFeedback');
|
||||
|
||||
options.forEach(opt => opt.classList.add('disabled'));
|
||||
|
||||
if (isCorrect) {
|
||||
element.classList.add('correct');
|
||||
feedback.innerHTML = '<strong>✅ Rätt!</strong> Bra jobbat!';
|
||||
feedback.style.background = '#d4edda';
|
||||
feedback.style.color = '#155724';
|
||||
} else {
|
||||
element.classList.add('wrong');
|
||||
feedback.innerHTML = '<strong>❌ Inte riktigt.</strong> Tänk igenom svaret en gång till.';
|
||||
feedback.style.background = '#f8d7da';
|
||||
feedback.style.color = '#721c24';
|
||||
}
|
||||
|
||||
feedback.classList.add('show');
|
||||
}
|
||||
|
||||
function completeLesson() {
|
||||
if (!completedLessons.includes(lessonId)) {
|
||||
completedLessons.push(lessonId);
|
||||
localStorage.setItem('academyProgress', JSON.stringify(completedLessons));
|
||||
|
||||
const btn = document.getElementById('completeBtn');
|
||||
btn.textContent = '✅ Lektion klar!';
|
||||
btn.classList.add('completed');
|
||||
btn.disabled = true;
|
||||
|
||||
btn.style.transform = 'scale(1.05)';
|
||||
setTimeout(() => btn.style.transform = 'scale(1)', 200);
|
||||
}
|
||||
}
|
||||
|
||||
if (completedLessons.includes(lessonId)) {
|
||||
const btn = document.getElementById('completeBtn');
|
||||
btn.textContent = '✅ Lektion klar!';
|
||||
btn.classList.add('completed');
|
||||
btn.disabled = true;
|
||||
}
|
||||
</script>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,425 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="sv">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>Skatteoptimering för Zoomers — quiXzoom Academy</title>
|
||||
<style>
|
||||
:root {
|
||||
--qx-black: #0a0a0a;
|
||||
--qx-white: #ffffff;
|
||||
--qx-blue: #0066FF;
|
||||
--qx-green: #00C853;
|
||||
--qx-gray: #F5F5F7;
|
||||
--qx-dark-gray: #1a1a1a;
|
||||
--qx-text-muted: #6e6e73;
|
||||
--qx-purple: #7B61FF;
|
||||
--qx-orange: #FF6B35;
|
||||
}
|
||||
|
||||
* { margin: 0; padding: 0; box-sizing: border-box; }
|
||||
|
||||
body {
|
||||
font-family: -apple-system, BlinkMacSystemFont, 'SF Pro Display', sans-serif;
|
||||
color: var(--qx-black);
|
||||
background: var(--qx-white);
|
||||
line-height: 1.6;
|
||||
}
|
||||
|
||||
.progress-container {
|
||||
position: sticky;
|
||||
top: 0;
|
||||
background: white;
|
||||
padding: 12px 20px;
|
||||
border-bottom: 1px solid var(--qx-gray);
|
||||
z-index: 100;
|
||||
}
|
||||
|
||||
.progress-bar {
|
||||
max-width: 600px;
|
||||
margin: 0 auto;
|
||||
background: var(--qx-gray);
|
||||
border-radius: 10px;
|
||||
height: 8px;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.progress-fill {
|
||||
background: var(--qx-green);
|
||||
height: 100%;
|
||||
width: 0%;
|
||||
transition: width 0.5s ease;
|
||||
}
|
||||
|
||||
.lesson-container {
|
||||
max-width: 800px;
|
||||
margin: 0 auto;
|
||||
padding: 40px 20px;
|
||||
}
|
||||
|
||||
.lesson-header {
|
||||
margin-bottom: 48px;
|
||||
}
|
||||
|
||||
.lesson-module {
|
||||
color: var(--qx-blue);
|
||||
font-size: 0.875rem;
|
||||
text-transform: uppercase;
|
||||
letter-spacing: 2px;
|
||||
margin-bottom: 8px;
|
||||
}
|
||||
|
||||
.lesson-title {
|
||||
font-size: 2.5rem;
|
||||
margin-bottom: 16px;
|
||||
line-height: 1.2;
|
||||
}
|
||||
|
||||
.lesson-meta {
|
||||
color: var(--qx-text-muted);
|
||||
font-size: 0.9rem;
|
||||
display: flex;
|
||||
gap: 16px;
|
||||
}
|
||||
|
||||
.content-block {
|
||||
margin-bottom: 48px;
|
||||
}
|
||||
|
||||
.content-block h2 {
|
||||
font-size: 1.75rem;
|
||||
margin-bottom: 20px;
|
||||
}
|
||||
|
||||
.content-block p {
|
||||
margin-bottom: 16px;
|
||||
color: #333;
|
||||
font-size: 1.05rem;
|
||||
}
|
||||
|
||||
.content-block ul {
|
||||
margin-left: 24px;
|
||||
margin-bottom: 16px;
|
||||
}
|
||||
|
||||
.content-block li {
|
||||
margin-bottom: 12px;
|
||||
}
|
||||
|
||||
.tip-box {
|
||||
background: #e8f4fd;
|
||||
border-left: 4px solid var(--qx-blue);
|
||||
padding: 24px;
|
||||
margin: 24px 0;
|
||||
border-radius: 0 12px 12px 0;
|
||||
}
|
||||
|
||||
.tip-box strong {
|
||||
color: var(--qx-blue);
|
||||
display: block;
|
||||
margin-bottom: 8px;
|
||||
}
|
||||
|
||||
.warning-box {
|
||||
background: #fff3cd;
|
||||
border-left: 4px solid var(--qx-orange);
|
||||
padding: 24px;
|
||||
margin: 24px 0;
|
||||
border-radius: 0 12px 12px 0;
|
||||
}
|
||||
|
||||
.warning-box strong {
|
||||
color: var(--qx-orange);
|
||||
display: block;
|
||||
margin-bottom: 8px;
|
||||
}
|
||||
|
||||
.example-box {
|
||||
background: var(--qx-gray);
|
||||
padding: 24px;
|
||||
border-radius: 12px;
|
||||
margin: 24px 0;
|
||||
}
|
||||
|
||||
.example-box h4 {
|
||||
margin-bottom: 12px;
|
||||
color: var(--qx-dark-gray);
|
||||
}
|
||||
|
||||
.quiz-container {
|
||||
background: var(--qx-gray);
|
||||
padding: 32px;
|
||||
border-radius: 16px;
|
||||
margin: 32px 0;
|
||||
}
|
||||
|
||||
.quiz-question {
|
||||
font-size: 1.25rem;
|
||||
font-weight: 600;
|
||||
margin-bottom: 24px;
|
||||
}
|
||||
|
||||
.quiz-options {
|
||||
list-style: none;
|
||||
}
|
||||
|
||||
.quiz-option {
|
||||
background: white;
|
||||
padding: 16px 20px;
|
||||
margin-bottom: 12px;
|
||||
border-radius: 12px;
|
||||
cursor: pointer;
|
||||
transition: all 0.2s;
|
||||
border: 2px solid transparent;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 12px;
|
||||
}
|
||||
|
||||
.quiz-option:hover {
|
||||
border-color: var(--qx-blue);
|
||||
transform: translateX(4px);
|
||||
}
|
||||
|
||||
.quiz-option.correct {
|
||||
background: var(--qx-green);
|
||||
color: white;
|
||||
border-color: var(--qx-green);
|
||||
}
|
||||
|
||||
.quiz-option.wrong {
|
||||
background: #ff4444;
|
||||
color: white;
|
||||
border-color: #ff4444;
|
||||
}
|
||||
|
||||
.quiz-option.disabled {
|
||||
pointer-events: none;
|
||||
opacity: 0.7;
|
||||
}
|
||||
|
||||
.quiz-letter {
|
||||
width: 32px;
|
||||
height: 32px;
|
||||
border-radius: 50%;
|
||||
background: var(--qx-gray);
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
font-weight: 600;
|
||||
flex-shrink: 0;
|
||||
}
|
||||
|
||||
.quiz-option:hover .quiz-letter {
|
||||
background: var(--qx-blue);
|
||||
color: white;
|
||||
}
|
||||
|
||||
.quiz-option.correct .quiz-letter,
|
||||
.quiz-option.wrong .quiz-letter {
|
||||
background: rgba(255,255,255,0.3);
|
||||
}
|
||||
|
||||
.quiz-feedback {
|
||||
margin-top: 20px;
|
||||
padding: 20px;
|
||||
border-radius: 12px;
|
||||
display: none;
|
||||
font-size: 1rem;
|
||||
}
|
||||
|
||||
.quiz-feedback.show {
|
||||
display: block;
|
||||
}
|
||||
|
||||
.lesson-nav {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
margin-top: 60px;
|
||||
padding-top: 40px;
|
||||
border-top: 2px solid var(--qx-gray);
|
||||
}
|
||||
|
||||
.nav-btn {
|
||||
padding: 14px 28px;
|
||||
border-radius: 10px;
|
||||
text-decoration: none;
|
||||
font-weight: 600;
|
||||
transition: all 0.2s;
|
||||
display: inline-flex;
|
||||
align-items: center;
|
||||
gap: 8px;
|
||||
}
|
||||
|
||||
.nav-btn.prev {
|
||||
background: var(--qx-gray);
|
||||
color: var(--qx-black);
|
||||
}
|
||||
|
||||
.nav-btn.next {
|
||||
background: var(--qx-blue);
|
||||
color: white;
|
||||
}
|
||||
|
||||
.nav-btn:hover {
|
||||
transform: translateY(-2px);
|
||||
box-shadow: 0 4px 12px rgba(0,0,0,0.15);
|
||||
}
|
||||
|
||||
.complete-btn {
|
||||
display: block;
|
||||
width: 100%;
|
||||
max-width: 400px;
|
||||
margin: 48px auto;
|
||||
padding: 18px 32px;
|
||||
background: var(--qx-green);
|
||||
color: white;
|
||||
border: none;
|
||||
border-radius: 12px;
|
||||
font-size: 1.1rem;
|
||||
font-weight: 600;
|
||||
cursor: pointer;
|
||||
transition: all 0.2s;
|
||||
}
|
||||
|
||||
.complete-btn:hover {
|
||||
transform: translateY(-2px);
|
||||
box-shadow: 0 4px 16px rgba(0,200,83,0.3);
|
||||
}
|
||||
|
||||
.complete-btn.completed {
|
||||
background: var(--qx-gray);
|
||||
color: var(--qx-text-muted);
|
||||
cursor: default;
|
||||
}
|
||||
|
||||
@media (max-width: 768px) {
|
||||
.lesson-title { font-size: 1.75rem; }
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<div class="progress-container">
|
||||
<div class="progress-bar">
|
||||
<div class="progress-fill" id="lessonProgress" style="width: 0%"></div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="lesson-container">
|
||||
<header class="lesson-header">
|
||||
<div class="lesson-module">Maximera inkomsten — Strategier för att tjäna mer som Zoomer</div>
|
||||
<h1 class="lesson-title">Skatteoptimering för Zoomers</h1>
|
||||
<div class="lesson-meta">
|
||||
<span>⏱️ 15 min</span>
|
||||
<span>🎯 Avancerad</span>
|
||||
<span>📚 Video</span>
|
||||
</div>
|
||||
</header>
|
||||
|
||||
<div class="content-block">
|
||||
<p>Som Zoomer är du egenföretagare och kan dra av vissa kostnader.</p>
|
||||
</div>
|
||||
|
||||
<div class="tip-box">
|
||||
<strong>💡 Tips</strong>
|
||||
<p>• Spara alla kvitton</p>
|
||||
<p>• För körjournal om du använder bil</p>
|
||||
<p>• Använd quiXzooms sammanställning vid deklaration</p>
|
||||
<p>• Konsultera revisor om du tjänar mycket</p>
|
||||
</div>
|
||||
|
||||
<div class="content-block">
|
||||
<h2>Avdrag du kan göra</h2>
|
||||
<ul>
|
||||
<li>Resor till och från uppdrag</li>
|
||||
<li>Telefon och abonnemang</li>
|
||||
<li>Reflexväst och säkerhetsutrustning</li>
|
||||
<li>Powerbank och laddare</li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<div class="warning-box">
|
||||
<strong>⚠️ Viktigt</strong>
|
||||
<p>quiXzoom rapporterar din inkomst till Skatteverket. Du ansvarar själv för korrekt deklaration.</p>
|
||||
</div>
|
||||
|
||||
<div class="quiz-container">
|
||||
<div class="quiz-question">Vad kan du dra av som Zoomer?</div>
|
||||
<ul class="quiz-options">
|
||||
<li class="quiz-option" onclick="checkAnswer(this, False)">
|
||||
<span class="quiz-letter">A</span>
|
||||
<span>Inget</span>
|
||||
</li>
|
||||
<li class="quiz-option" onclick="checkAnswer(this, True)">
|
||||
<span class="quiz-letter">B</span>
|
||||
<span>Resor och arbetsutrustning</span>
|
||||
</li>
|
||||
<li class="quiz-option" onclick="checkAnswer(this, False)">
|
||||
<span class="quiz-letter">C</span>
|
||||
<span>Bara telefonen</span>
|
||||
</li>
|
||||
</ul>
|
||||
<div class="quiz-feedback" id="quizFeedback"></div>
|
||||
</div>
|
||||
|
||||
<button class="complete-btn" id="completeBtn" onclick="completeLesson()">
|
||||
✅ Markera lektion som klar
|
||||
</button>
|
||||
|
||||
<nav class="lesson-nav">
|
||||
<a href="/academy/module6/m6l3" class="nav-btn prev">← Föregående</a>
|
||||
<a href="/academy" class="nav-btn next">Tillbaka till Academy →</a>
|
||||
</nav>
|
||||
</div>
|
||||
|
||||
<script>
|
||||
const lessonId = 'm6l4';
|
||||
let completedLessons = JSON.parse(localStorage.getItem('academyProgress') || '[]');
|
||||
|
||||
function checkAnswer(element, isCorrect) {
|
||||
const options = document.querySelectorAll('.quiz-option');
|
||||
const feedback = document.getElementById('quizFeedback');
|
||||
|
||||
options.forEach(opt => opt.classList.add('disabled'));
|
||||
|
||||
if (isCorrect) {
|
||||
element.classList.add('correct');
|
||||
feedback.innerHTML = '<strong>✅ Rätt!</strong> Bra jobbat!';
|
||||
feedback.style.background = '#d4edda';
|
||||
feedback.style.color = '#155724';
|
||||
} else {
|
||||
element.classList.add('wrong');
|
||||
feedback.innerHTML = '<strong>❌ Inte riktigt.</strong> Tänk igenom svaret en gång till.';
|
||||
feedback.style.background = '#f8d7da';
|
||||
feedback.style.color = '#721c24';
|
||||
}
|
||||
|
||||
feedback.classList.add('show');
|
||||
}
|
||||
|
||||
function completeLesson() {
|
||||
if (!completedLessons.includes(lessonId)) {
|
||||
completedLessons.push(lessonId);
|
||||
localStorage.setItem('academyProgress', JSON.stringify(completedLessons));
|
||||
|
||||
const btn = document.getElementById('completeBtn');
|
||||
btn.textContent = '✅ Lektion klar!';
|
||||
btn.classList.add('completed');
|
||||
btn.disabled = true;
|
||||
|
||||
btn.style.transform = 'scale(1.05)';
|
||||
setTimeout(() => btn.style.transform = 'scale(1)', 200);
|
||||
}
|
||||
}
|
||||
|
||||
if (completedLessons.includes(lessonId)) {
|
||||
const btn = document.getElementById('completeBtn');
|
||||
btn.textContent = '✅ Lektion klar!';
|
||||
btn.classList.add('completed');
|
||||
btn.disabled = true;
|
||||
}
|
||||
</script>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
Reference in New Issue
Block a user