diff --git a/experiment/simulation/LettersPage/SmaK/index.html b/experiment/simulation/LettersPage/SmaK/index.html
new file mode 100644
index 0000000..250e25e
--- /dev/null
+++ b/experiment/simulation/LettersPage/SmaK/index.html
@@ -0,0 +1,330 @@
+
+
+
+
+
+
+ Connect Dots
+
+
+
+
+
+
+
+
+
+
+
+
+
+
![](sboxx.png)
+
![](k-new.png)
+
![Overlay Image](without-bg.gif)
+
![Overlay Image](without-bg.gif)
+
![Overlay Image](without-bg.gif)
+
+
![](stroke1.png)
+
![](stroke1.png)
+
![](stroke1.png)
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/experiment/simulation/LettersPage/SmaK/k-new.png b/experiment/simulation/LettersPage/SmaK/k-new.png
new file mode 100644
index 0000000..0589453
Binary files /dev/null and b/experiment/simulation/LettersPage/SmaK/k-new.png differ
diff --git a/experiment/simulation/LettersPage/SmaK/k.css b/experiment/simulation/LettersPage/SmaK/k.css
new file mode 100644
index 0000000..5172d81
--- /dev/null
+++ b/experiment/simulation/LettersPage/SmaK/k.css
@@ -0,0 +1,147 @@
+body {
+ display: flex;
+ justify-content: center; /* Center horizontally */
+ align-items: center; /* Center vertically */
+ height: 100vh; /* Full height of the viewport */
+ margin: 0; /* Remove default margin */
+}
+
+#canvas-container {
+ position: relative;
+ width: 400px;
+ height: 400px;
+ border: 1px solid black;
+ display: flex;
+ justify-content: center;
+ align-items: center;
+}
+
+#canvas {
+ position: absolute;
+ top: 0;
+ left: 0;
+ border: 1px solid black;
+ z-index: 10;
+ cursor: url('data:image/x-icon;base64,AAACAAEAICAQAAAAAADoAgAAFgAAACgAAAAgAAAAQAAAAAEABAAAAAAAAAIAAAAAAAAAAAAAEAAAAAAAAAAAAAAAhYWFAPqv6ADgm4sASkpKAJ/l7QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACIAAAAAAAAAAAAAAAAAAAEiIAAAAAAAAAAAAAAAAAAxEiIAAAAAAAAAAAAAAAADMxEgAAAAAAAAAAAAAAAAMzMxAAAAAAAAAAAAAAAAAzMzMAAAAAAAAAAAAAAAADMzMwAAAAAAAAAAAAAAAAMzMzAAAAAAAAAAAAAAAAAzMzMAAAAAAAAAAAAAAAADMzMwAAAAAAAAAAAAAAAABTMzAAAAAAAAAAAAAAAAAFVTMAAAAAAAAAAAAAAAAABFVQAAAAAAAAAAAAAAAAAARAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///////////////////////////////////////////////////////////////////////////////////////P////h////wP///4H///8D///+B////A////gf///wP///4H///+D////B////w////8///////////////w=='), auto;
+
+}
+
+.dot {
+ position: absolute;
+ width: 10px;
+ height: 10px;
+ background-color: red;
+ border-radius: 50%;
+ transform: translate(-50%, -50%);
+}
+
+
+
+
+#stroke1 {
+
+ display: none;
+ position: absolute;
+ top: 08px;
+ left: 90px;
+ width: 15px;
+ height: 305px;
+
+
+}
+
+#stroke2 {
+
+ display: none;
+ position: absolute;
+ top: 50px;
+ left: 170px;
+ width: 15px;
+ height: 210px;
+ transform: rotate(54deg);
+
+}
+
+#stroke3 {
+
+ display: none;
+ position: absolute;
+ top: 155px;
+ left: 200px;
+ width: 15px;
+ height: 183px;
+ transform: rotate(137deg);
+
+}
+
+#stroke4 {
+
+ display: none;
+ position: absolute;
+ top: 248px;
+ left: 211px;
+ width: 10px;
+ height: 143px;
+ transform: rotate(90deg);
+
+}
+#sbox {
+ position: relative;
+ left: 115px;
+ width: 400px;
+ height: 400px;
+ z-index: -2;
+ display: none;
+}
+
+#trace {
+ position: relative;
+ bottom: 20px;
+ right: 90px;
+ width: 600px;
+ height: 550px;
+ z-index: -10;
+}
+
+.arrrow1 {
+
+ position: absolute;
+ top: 80px;
+ left: 30px;
+ width: 40px;
+ height: 240px;
+ transform: rotate(180deg);
+ z-index: 0;
+}
+.arrrow2 {
+
+ top: 50px;
+ left: 170px;
+ position: absolute;
+ transform: rotate(55deg);
+ z-index: 0;
+ width: 30px;
+ height: 110px;
+ z-index: -2;
+}
+.arrrow3 {
+
+ position: absolute;
+ transform: rotate(135deg);
+ z-index: 0;
+ top: 140px;
+ left: 250px;
+ width: 20px;
+ height: 160px;
+}
+
+.arrrow4 {
+
+ position: absolute;
+ top: 280px;
+ left: 205px;
+ width: 30px;
+ height: 110px;
+ transform: rotate(90deg);
+ z-index: 0;
+}
\ No newline at end of file
diff --git a/experiment/simulation/LettersPage/SmaK/k.html b/experiment/simulation/LettersPage/SmaK/k.html
new file mode 100644
index 0000000..1704902
--- /dev/null
+++ b/experiment/simulation/LettersPage/SmaK/k.html
@@ -0,0 +1,64 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Virtual Labs
+
+
+
+
+
+
+
+
Lettering
+
Letter k
+
+
Rules-
+
1] Draw the line in the direction of the arrow on the trace of the letter.
+
2] To draw, click on the starting point and drag the cursor to end point .
+
+
+
+
+
+
+
+
+
+
![](sboxx.png)
+
![](k-new.png)
+
![Overlay Image](without-bg.gif)
+
![Overlay Image](without-bg.gif)
+
![Overlay Image](without-bg.gif)
+
+
![](stroke1.png)
+
![](stroke1.png)
+
![](stroke1.png)
+
+
+
+
Congrats you have learnt to draw Letter k
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/experiment/simulation/LettersPage/SmaK/k.js b/experiment/simulation/LettersPage/SmaK/k.js
new file mode 100644
index 0000000..a7c3160
--- /dev/null
+++ b/experiment/simulation/LettersPage/SmaK/k.js
@@ -0,0 +1,147 @@
+const canvas = document.getElementById('canvas');
+const ctx = canvas.getContext('2d');
+const dot3 = document.getElementById('dot3');
+const dot1 = document.getElementById('dot1');
+const dot2 = document.getElementById('dot2');
+const dot4 = document.getElementById('dot4');
+const dot5 = document.getElementById('dot5');
+const dot6 = document.getElementById('dot6'); // Added dot6
+const arrow1 = document.getElementById('arrow1');
+const arrow2 = document.getElementById('arrow2');
+const arrow3 = document.getElementById('arrow3');
+
+
+let isDrawing = false;
+let startX = 0;
+let startY = 0;
+let tolerance = 30; // Tolerance radius for dot connection
+let nextConnection = 'dot3-dot1'; // Start with connecting dot3 to dot1
+
+arrow1.style.display = 'block'; // Initially, arrow1 is visible
+arrow2.style.display = 'none';
+arrow3.style.display = 'none';
+
+
+function checkDotTolerance(dot, x, y) {
+ return Math.hypot(x - (dot.offsetLeft + 5), y - (dot.offsetTop + 5)) <= tolerance;
+}
+
+function drawToleranceCircle(dot, ctx) {
+ ctx.beginPath();
+ ctx.arc(dot.offsetLeft + 5, dot.offsetTop + 5, tolerance, 0, 2 * Math.PI);
+ ctx.strokeStyle = 'rgba(255, 200, 0, 0.5)'; // Visual guide for connection
+ ctx.stroke();
+}
+
+function startDrawing(e) {
+ const rect = canvas.getBoundingClientRect();
+ const x = e.clientX - rect.left;
+ const y = e.clientY - rect.top;
+ let targetDot;
+
+ switch (nextConnection) {
+ case 'dot3-dot1':
+ targetDot = dot3;
+ break;
+ case 'dot2-dot4':
+ targetDot = dot2;
+ break;
+ case 'dot5-dot6':
+ targetDot = dot5;
+ break;
+ }
+
+ if (!checkDotTolerance(targetDot, x, y)) {
+ alert('Please follow rules and draw accordingly. Try again!');
+ return; // Do not start drawing if not within tolerance of target dot
+ }
+
+ ctx.clearRect(0, 0, canvas.width, canvas.height);
+ drawToleranceCircle(targetDot, ctx);
+
+ isDrawing = true;
+ startX = targetDot.offsetLeft + 5;
+ startY = targetDot.offsetTop + 5;
+}
+
+
+function draw(e) {
+ if (!isDrawing) return;
+ const rect = canvas.getBoundingClientRect();
+ const x = e.clientX - rect.left;
+ const y = e.clientY - rect.top;
+ ctx.beginPath();
+ ctx.moveTo(startX, startY);
+ ctx.lineTo(x, y);
+ ctx.stroke();
+ startX = x;
+ startY = y;
+ ctx.strokeStyle = 'black'; // Change line color to black
+ ctx.lineWidth = 6;
+}
+
+function stopDrawing(e) {
+ if (!isDrawing) return;
+ const rect = canvas.getBoundingClientRect();
+ const x = e.clientX - rect.left;
+ const y = e.clientY - rect.top;
+ let targetDot;
+
+ switch (nextConnection) {
+ case 'dot3-dot1':
+ targetDot = dot1;
+ break;
+ case 'dot2-dot4':
+ targetDot = dot4;
+ break;
+ case 'dot5-dot6':
+ targetDot = dot6;
+ break;
+ }
+
+ if (checkDotTolerance(targetDot, x, y)) {
+ console.log('Stopped drawing near', targetDot.id);
+ let strokeId;
+ switch (nextConnection) {
+ case 'dot3-dot1':
+ strokeId = '1';
+ nextConnection = 'dot2-dot4';
+ arrow1.style.display = 'none';
+ arrow2.style.display = 'block';
+ dot2.style.zIndex = 4; // Bring dot4 to front
+ break;
+ case 'dot2-dot4':
+ strokeId = '2';
+ nextConnection = 'dot5-dot6';
+ dot2.style.zIndex = 0; // Reset dot2 z-index
+ arrow2.style.display = 'none';
+ arrow3.style.display = 'block';
+ dot5.style.zIndex = 4; // Bring dot5 to front
+
+ break;
+ case 'dot5-dot6':
+ strokeId = '3';
+ dot5.style.zIndex = 0; // Reset dot5 z-index
+ arrow3.style.display = 'none';
+ dot6.style.display = 'none'; // Bring dot6 to front
+ button.style.display = 'block'; // Show the button
+ congrats.style.display = 'block'; // Show the congrats message
+ // Optionally loop back or end the sequence
+ // In this case, you may want to reset the connections, e.g., nextConnection = 'dot3-dot1';
+ break;
+ }
+
+ if (strokeId) {
+ document.getElementById('stroke' + strokeId).style.display = 'block';
+ }
+ ctx.clearRect(0, 0, canvas.width, canvas.height);
+ } else {
+ alert('Complete the line near the correct dot. Try Again!');
+ ctx.clearRect(0, 0, canvas.width, canvas.height); // Clear the canvas
+ }
+ isDrawing = false;
+}
+
+canvas.addEventListener('mousedown', startDrawing);
+canvas.addEventListener('mousemove', draw);
+canvas.addEventListener('mouseup', stopDrawing);
\ No newline at end of file
diff --git a/experiment/simulation/LettersPage/SmaK/k.png b/experiment/simulation/LettersPage/SmaK/k.png
new file mode 100644
index 0000000..d7db5e3
Binary files /dev/null and b/experiment/simulation/LettersPage/SmaK/k.png differ
diff --git a/experiment/simulation/LettersPage/SmaK/main.css b/experiment/simulation/LettersPage/SmaK/main.css
new file mode 100644
index 0000000..7f58f3f
--- /dev/null
+++ b/experiment/simulation/LettersPage/SmaK/main.css
@@ -0,0 +1,105 @@
+* {
+ margin: 0;
+ padding: 0;
+ font-family: Arial, Helvetica, sans-serif;
+ box-sizing: border-box; /* Ensures padding and border are included in width/height calculations */
+ z-index: -4;
+}
+
+.simulation-container {
+ background-color: rgba(220, 229, 236, 1);
+ width: 100%; /* Responsive width */
+ max-width: 1000px; /* Max width to maintain design integrity */
+ min-height: 800px; /* Minimum height */
+ margin: 20px auto; /* Auto margins for centering */
+ z-index: 0;
+ display: grid;
+ justify-items: center;
+
+}
+
+.title {
+ margin: 0;
+ padding: 5px;
+ letter-spacing: 0.1em;
+ background-color: rgb(0, 140, 255);
+ color: white;
+ display: flex;
+ justify-content: center;
+ width: 100%; /* Ensure it fills the container */
+ height: 60%;
+}
+
+.instruction-main {
+ position: relative;
+ display: grid;
+ justify-content: center;
+ z-index: 0;
+ font-family: Georgia, 'Times New Roman', Times, serif;
+ height: 10%;
+ bottom: 40%;
+ font-size: 50px;
+ margin-top: 20px;
+}
+
+.instruction-main1 {
+ position: relative;
+ display: grid;
+ justify-content: center;
+ z-index: 0;
+ bottom: 100%;
+ height: 10%;
+
+
+}
+
+.rules {
+ position: relative;
+ display: flex;
+ justify-content: start;
+ z-index: 0;
+
+ height: 10%;
+ bottom: 45px;
+ font-size: 150%;
+ left: -40%;
+}
+
+.rule {
+ position: relative;
+ display: flex;
+ justify-content: start;
+ z-index: 0;
+ font-family: Georgia, 'Times New Roman', Times, serif;
+
+
+ left: -100px;
+ bottom: 80px;
+
+}
+
+.congrats {
+ position: relative;
+ display: none;
+ justify-content: start;
+ z-index: 0;
+ height: 10%;
+ top: 80%;
+ font-size: 150%;
+
+}
+
+.next-exp {
+ position: absolute;
+ display: none;
+ left: 75%;
+ transform: translateX(-50%); /* Centering button horizontally */
+ padding: 10px 15px;
+ color: white;
+ background-color: rgb(20, 117, 228);
+ font-weight: 600;
+ border: none;
+ border-radius: 4px;
+ cursor: pointer;
+ bottom: 30px;
+}
\ No newline at end of file
diff --git a/experiment/simulation/LettersPage/SmaK/sboxx.png b/experiment/simulation/LettersPage/SmaK/sboxx.png
new file mode 100644
index 0000000..bc30ae9
Binary files /dev/null and b/experiment/simulation/LettersPage/SmaK/sboxx.png differ
diff --git a/experiment/simulation/LettersPage/SmaK/stroke1.png b/experiment/simulation/LettersPage/SmaK/stroke1.png
new file mode 100644
index 0000000..3f06a3c
Binary files /dev/null and b/experiment/simulation/LettersPage/SmaK/stroke1.png differ
diff --git a/experiment/simulation/LettersPage/SmaK/without-bg.gif b/experiment/simulation/LettersPage/SmaK/without-bg.gif
new file mode 100644
index 0000000..455420f
Binary files /dev/null and b/experiment/simulation/LettersPage/SmaK/without-bg.gif differ