<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>I TOLD YOU SO</title>
    <link>https://hursome.tistory.com/</link>
    <description>
단지 얼음과 함께 살아가야 하겠습니다.</description>
    <language>ko</language>
    <pubDate>Thu, 14 May 2026 15:01:57 +0900</pubDate>
    <generator>TISTORY</generator>
    <ttl>100</ttl>
    <managingEditor>hursome</managingEditor>
    <item>
      <title>Level Up Your Korean: Why &amp;lsquo;Kokio&amp;rsquo; is the Ultimate Playground for Korean Learners</title>
      <link>https://hursome.tistory.com/81</link>
      <description>&lt;div&gt;&lt;span style=&quot;letter-spacing: 0px;&quot;&gt;Learning a new language can sometimes feel like a grind, especially when you are stuck staring at endless flashcards or textbooks. Enter &lt;/span&gt;&lt;b&gt;Kokio&lt;/b&gt;&lt;span style=&quot;letter-spacing: 0px;&quot;&gt; (&lt;/span&gt;&lt;a style=&quot;letter-spacing: 0px;&quot; href=&quot;https://kokio.mogang.ac&quot;&gt;https://kokio.mogang.ac&lt;/a&gt;&lt;span style=&quot;letter-spacing: 0px;&quot;&gt;)&amp;mdash;a free, interactive web platform that transforms Korean self-study into a highly engaging, gamified experience. Whether you are preparing for the TOPIK exam or just want to review vocabulary with friends, Kokio brings together structured learning, competitive challenges, and real human tutoring.&lt;/span&gt;&lt;/div&gt;
&lt;div&gt;&lt;hr data-ke-style=&quot;style1&quot; /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt; ️ Daily and Weekly Challenges to Keep You&amp;nbsp;Hooked&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Building a consistent habit is the hardest part of language learning. Kokio solves this with a variety of scheduled challenges that reward you with XP and &amp;ldquo;Hubs&amp;rdquo; (the platform&amp;rsquo;s virtual currency) to keep your streak alive:&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;Daily Word Quiz:&lt;/b&gt; A Wordle-style guessing game to test your vocabulary and Hangeul spelling every day.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Word Chain (끝말잇기):&lt;/b&gt; A classic Korean game where you chain words together using the last syllable of the previous word, available as both a daily challenge and a competitive weekly leaderboard.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Weekly Crossword:&lt;/b&gt; A fresh Korean crossword puzzle released every week to practice spelling and reading comprehension using context clues.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Monthly Dictation (받아쓰기):&lt;/b&gt; Listen to audio or video clips and type exactly what you hear onto a manuscript grid to hone your listening and spelling skills.&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&lt;hr data-ke-style=&quot;style1&quot; /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;  Serious TOPIK&amp;nbsp;Prep&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;If you are aiming for official certification, Kokio provides a dedicated, structured practice mode for the Test of Proficiency in Korean (TOPIK).&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;Targeted Practice:&lt;/b&gt; Choose between TOPIK I and TOPIK II to tackle specific, type-based question drills.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Mock Exams:&lt;/b&gt; Test your exam skills and pacing with full mock tests.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Wrong-Note Review (오답노트):&lt;/b&gt; Save missed questions to your personal wrong-note and re-solve them later, complete with detailed Korean and English explanations.&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&lt;hr data-ke-style=&quot;style1&quot; /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;  Multiplayer Korean&amp;nbsp;Games&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Kokio lets you create online rooms to play games with friends, classmates, or study groups. It is a perfect way to reinforce what you have learned in a lively environment:&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;Battle Bingo:&lt;/b&gt; Review topic-based vocabulary in a competitive multiplayer bingo format.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Memory:&lt;/b&gt; Test your recall by matching Korean word cards to their corresponding images.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Traditional &amp;amp; Strategy Games:&lt;/b&gt; Play the traditional Korean board game Yut Nori, or enjoy Korea Travel, a Monopoly-style board game where you travel across Korean cities, buy land, and build landmarks.&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&lt;hr data-ke-style=&quot;style1&quot; /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt; &amp;zwj;  Real Human Feedback and 1:1&amp;nbsp;Tutoring&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Unlike many language apps that rely solely on AI-generated text, Kokio emphasizes real human connection.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;Human Corrections:&lt;/b&gt; Submit your Korean writing (via a manuscript-style input) or short voice recordings to receive detailed, personalized feedback from real human tutors.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Live Video Lessons:&lt;/b&gt; Book live 1:1 video lessons with native Korean speakers to practice conversation, pronunciation, and structured study.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Pay with Play:&lt;/b&gt; You can pay for these premium tutoring services using &amp;ldquo;Hubs,&amp;rdquo; which you earn simply by completing your daily vocabulary practice, challenges, and games on the platform.&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;&lt;hr data-ke-style=&quot;style1&quot; /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;  Join the Community&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Kokio is more than just an arcade; it is a comprehensive ecosystem for learners who want to truly improve their Korean vocabulary, spelling, listening, and speaking skills. The platform also features an official Discord community where you can practice speaking, chat with other learners from around the world, and find friends for multiplayer games.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Ready to make Korean practice fun again? Head over to &lt;a href=&quot;https://kokio.mogang.ac/&quot; data-href=&quot;https://kokio.mogang.ac/&quot;&gt;&lt;b&gt;Kokio&lt;/b&gt;&lt;/a&gt; and start your daily streak today!&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;</description>
      <category>Information</category>
      <category>korean</category>
      <category>koreanlanguage</category>
      <author>hursome</author>
      <guid isPermaLink="true">https://hursome.tistory.com/81</guid>
      <comments>https://hursome.tistory.com/81#entry81comment</comments>
      <pubDate>Mon, 11 May 2026 18:54:37 +0900</pubDate>
    </item>
    <item>
      <title>Level Up Your Korean: Why 'Kokio' is Now the Ultimate Free Language App</title>
      <link>https://hursome.tistory.com/80</link>
      <description>&lt;p data-path-to-node=&quot;6&quot; data-ke-size=&quot;size16&quot;&gt;&lt;i data-index-in-node=&quot;32&quot; data-path-to-node=&quot;6&quot;&gt;Kokio is a free, interactive web app for learning Korean. It features daily Hangeul word games including Wordle, Word Chains, and Crossword puzzles. It also provides a human Tutor feature(not AI) that gives feedback on Korean writing and pronunciation.&lt;/i&gt;&lt;/p&gt;
&lt;p data-path-to-node=&quot;6&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-path-to-node=&quot;7&quot; data-ke-size=&quot;size16&quot;&gt;Are you studying Korean and looking for a fun, effective way to practice every day?&lt;/p&gt;
&lt;p data-path-to-node=&quot;8&quot; data-ke-size=&quot;size16&quot;&gt;You might remember my previous post where I introduced &lt;b data-index-in-node=&quot;55&quot; data-path-to-node=&quot;8&quot;&gt;Kokio&lt;/b&gt; as a highly addictive, Hangeul-based daily word game. Well, it&amp;rsquo;s time for an update! Kokio has evolved from a simple 5-minute puzzle into a &lt;b data-index-in-node=&quot;201&quot; data-path-to-node=&quot;8&quot;&gt;comprehensive Korean learning platform&lt;/b&gt;.&lt;/p&gt;
&lt;p data-path-to-node=&quot;9&quot; data-ke-size=&quot;size16&quot;&gt;With brand-new mini-games and a powerful personalized Tutor feature, Kokio is now your ultimate daily Korean study companion. Here is everything you need to know about the massive new update!&lt;/p&gt;
&lt;h3 data-path-to-node=&quot;10&quot; data-ke-size=&quot;size23&quot;&gt;  Play to Learn: 3 Addictive Korean Word Games&lt;/h3&gt;
&lt;p data-path-to-node=&quot;11&quot; data-ke-size=&quot;size16&quot;&gt;Kokio now offers three distinct game modes to test your language skills:&lt;/p&gt;
&lt;p data-path-to-node=&quot;12&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;12&quot;&gt;1. Daily Word Quiz (The Classic Wordle)&lt;/b&gt; The fan favorite is still here! Guess the hidden Korean word in six tries. The color-coded feedback helps you understand the exact structure and spelling of Hangeul syllables.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;375&quot; data-origin-height=&quot;752&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/xJm95/dJMcadVmrsi/BrTfQdFuEaIt46fWL5Tmg1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/xJm95/dJMcadVmrsi/BrTfQdFuEaIt46fWL5Tmg1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/xJm95/dJMcadVmrsi/BrTfQdFuEaIt46fWL5Tmg1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FxJm95%2FdJMcadVmrsi%2FBrTfQdFuEaIt46fWL5Tmg1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;212&quot; height=&quot;425&quot; data-origin-width=&quot;375&quot; data-origin-height=&quot;752&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-path-to-node=&quot;13&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-path-to-node=&quot;13&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;13&quot;&gt;2. Word Chain (Kkeut-mal-it-gi / 끝말잇기) [NEW]&lt;/b&gt; A classic Korean game! Connect a starting word to a target word using exactly three intermediate words. It&amp;rsquo;s a fantastic brain-teaser that tests your active vocabulary recall. (And yes, the Korean initial sound rule, &lt;i&gt;두음법칙&lt;/i&gt;, is supported!)&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;381&quot; data-origin-height=&quot;480&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/d1MNm0/dJMcafeEKI0/yT584TWDO1BlYVKMox99VK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/d1MNm0/dJMcafeEKI0/yT584TWDO1BlYVKMox99VK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/d1MNm0/dJMcafeEKI0/yT584TWDO1BlYVKMox99VK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fd1MNm0%2FdJMcafeEKI0%2FyT584TWDO1BlYVKMox99VK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;326&quot; height=&quot;411&quot; data-origin-width=&quot;381&quot; data-origin-height=&quot;480&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-path-to-node=&quot;14&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-path-to-node=&quot;14&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;14&quot;&gt;3. Daily Crossword Puzzle (가로세로 퍼즐) [NEW]&lt;/b&gt; Challenge yourself with a daily Korean crossword. It's the perfect way to learn new expressions, understand context, and solidify your spelling skills.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;380&quot; data-origin-height=&quot;656&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/7YHnF/dJMcahKh4Bu/UtGDPTKntTvLJjHMyXFF30/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/7YHnF/dJMcahKh4Bu/UtGDPTKntTvLJjHMyXFF30/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/7YHnF/dJMcahKh4Bu/UtGDPTKntTvLJjHMyXFF30/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F7YHnF%2FdJMcahKh4Bu%2FUtGDPTKntTvLJjHMyXFF30%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;282&quot; height=&quot;487&quot; data-origin-width=&quot;380&quot; data-origin-height=&quot;656&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h3 data-path-to-node=&quot;15&quot; data-ke-size=&quot;size23&quot;&gt; &amp;zwj;  Meet Your New Korean Tutor&lt;/h3&gt;
&lt;p data-path-to-node=&quot;16&quot; data-ke-size=&quot;size16&quot;&gt;The most exciting addition to Kokio is the &lt;b data-index-in-node=&quot;43&quot; data-path-to-node=&quot;16&quot;&gt;Tutor feature&lt;/b&gt;. Practicing &quot;output&quot; (speaking and writing) is usually the hardest part for self-learners, but Kokio completely bridges that gap:&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;17&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;17,0,0&quot;&gt;Writing Correction (첨삭):&lt;/b&gt; Type your own Korean sentences, and the Tutor will check your grammar, vocabulary, and naturalness, offering better alternatives.&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;353&quot; data-origin-height=&quot;604&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bwow8B/dJMcacCcEmJ/Q3OshaNP878b9qTxqg9oZk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bwow8B/dJMcacCcEmJ/Q3OshaNP878b9qTxqg9oZk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bwow8B/dJMcacCcEmJ/Q3OshaNP878b9qTxqg9oZk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbwow8B%2FdJMcacCcEmJ%2FQ3OshaNP878b9qTxqg9oZk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;307&quot; height=&quot;525&quot; data-origin-width=&quot;353&quot; data-origin-height=&quot;604&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;17,1,0&quot;&gt;Pronunciation Feedback (교정):&lt;/b&gt; Record yourself speaking Korean, and get helpful, accurate feedback to sound more like a native speaker.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;337&quot; data-origin-height=&quot;574&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/z0V3l/dJMcaadj09R/uUvGqAwRmfU5W2VM6yKwo0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/z0V3l/dJMcaadj09R/uUvGqAwRmfU5W2VM6yKwo0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/z0V3l/dJMcaadj09R/uUvGqAwRmfU5W2VM6yKwo0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fz0V3l%2FdJMcaadj09R%2FuUvGqAwRmfU5W2VM6yKwo0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;337&quot; height=&quot;574&quot; data-origin-width=&quot;337&quot; data-origin-height=&quot;574&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-path-to-node=&quot;18&quot; data-ke-size=&quot;size16&quot;&gt;It&amp;rsquo;s like having a dedicated Korean language exchange partner available 24/7, right in your browser!&lt;/p&gt;
&lt;h3 data-path-to-node=&quot;19&quot; data-ke-size=&quot;size23&quot;&gt;  The Features You Already Love (Still Here!)&lt;/h3&gt;
&lt;p data-path-to-node=&quot;20&quot; data-ke-size=&quot;size16&quot;&gt;Don't worry, the core features that made Kokio great are still intact to support your journey:&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;21&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;21,0,0&quot;&gt;Gamified Levels:&lt;/b&gt; Progress from an Egg (Beginner A1) all the way to a Dinosaur (Advanced C1-C2).&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;21,1,0&quot;&gt;My Vocabulary Book (나의 단어장):&lt;/b&gt; Save every new word you discover in the games and review them later.&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;21,2,0&quot;&gt;Earn Gems ( ):&lt;/b&gt; Play games, earn gems, and use them to unlock higher difficulties.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;373&quot; data-origin-height=&quot;399&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b868kR/dJMcaioTfFb/JJYfy2YQpOmEW2urPlLjv0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b868kR/dJMcaioTfFb/JJYfy2YQpOmEW2urPlLjv0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b868kR/dJMcaioTfFb/JJYfy2YQpOmEW2urPlLjv0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb868kR%2FdJMcaioTfFb%2FJJYfy2YQpOmEW2urPlLjv0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;373&quot; height=&quot;399&quot; data-origin-width=&quot;373&quot; data-origin-height=&quot;399&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h3 data-path-to-node=&quot;22&quot; data-ke-size=&quot;size23&quot;&gt;  Start Your Korean Learning Journey Today!&lt;/h3&gt;
&lt;p data-path-to-node=&quot;23&quot; data-ke-size=&quot;size16&quot;&gt;Kokio is entirely web-based&amp;mdash;no downloads, no subscriptions, just pure learning. Whether you are aiming to pass the TOPIK exam, preparing for a trip to Seoul, or just want to understand your favorite K-dramas without subtitles, Kokio is the perfect tool to add to your daily routine.&lt;/p&gt;
&lt;p data-path-to-node=&quot;24&quot; data-ke-size=&quot;size16&quot;&gt;Ready to challenge your brain and improve your Korean?&lt;/p&gt;
&lt;p data-path-to-node=&quot;25&quot; data-ke-size=&quot;size16&quot;&gt; &lt;a href=&quot;https://kokio.mogang.ac&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt; &lt;b data-index-in-node=&quot;3&quot; data-path-to-node=&quot;25&quot;&gt;[Link to Kokio: Play Now and Meet Your Tutor!]&lt;/b&gt;&amp;nbsp;&lt;/a&gt;&lt;/p&gt;</description>
      <category>Information</category>
      <category>hangeul</category>
      <category>korean_app</category>
      <category>korean_crossword</category>
      <category>korean_language</category>
      <category>korean_practice</category>
      <category>korean_study</category>
      <category>korean_wordle</category>
      <category>korean_word_game</category>
      <category>learn_korean</category>
      <category>topik_prep</category>
      <author>hursome</author>
      <guid isPermaLink="true">https://hursome.tistory.com/80</guid>
      <comments>https://hursome.tistory.com/80#entry80comment</comments>
      <pubDate>Fri, 27 Feb 2026 00:29:10 +0900</pubDate>
    </item>
    <item>
      <title>고등학교 영어 문장 연습 - 직접 완성하는 영작 훈련</title>
      <link>https://hursome.tistory.com/79</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;예비 고등학생, 그리고 고등학생 여러분.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;방학동안 하루 10문장으로 영작 마스터.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;도전해보세요!&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;영어 독해를 위해 필수적인 구문독해&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;영어 모의고사 4등급 이하인 학생들은 반드시 연습해야하는 문장들로 구성했습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;Change happens slowly over time. &lt;/span&gt;&lt;span&gt;변화는 시간이 지남에 따라 천천히 일어난다&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;Great ideas come from curiosity. &lt;/span&gt;&lt;span&gt;위대한 아이디어는 호기심에서 나온다&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;Your age doesn't matter in learning. &lt;/span&gt;&lt;span&gt;배움에 있어서 나이는 중요하지 않다&lt;/span&gt;&lt;span&gt;. (matter: &lt;/span&gt;&lt;span&gt;중요하다&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;This medicine works effectively for headaches. &lt;/span&gt;&lt;span&gt;이 약은 두통에 효과가 있다&lt;/span&gt;&lt;span&gt;. (work: &lt;/span&gt;&lt;span&gt;효과가 있다&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;Hard work pays in the long run. &lt;/span&gt;&lt;span&gt;노력은 결국에는 보상받는다&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span&gt;이익이 된다&lt;/span&gt;&lt;span&gt;). (pay: &lt;/span&gt;&lt;span&gt;이익이 되다&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;보상받다&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;Every second counts in an emergency. &lt;/span&gt;&lt;span&gt;비상 상황에서는 &lt;/span&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;분 &lt;/span&gt;&lt;span&gt;1&lt;/span&gt;&lt;span&gt;초가 중요하다&lt;/span&gt;&lt;span&gt;. (count: &lt;/span&gt;&lt;span&gt;중요하다&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;A simple apology will do for him. &lt;/span&gt;&lt;span&gt;그에게는 간단한 사과면 충분할 것이다&lt;/span&gt;&lt;span&gt;. (do: &lt;/span&gt;&lt;span&gt;충분하다&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;The silence lasted for a moment. &lt;/span&gt;&lt;span&gt;침묵이 잠시 동안 지속되었다&lt;/span&gt;&lt;span&gt;. (last: &lt;/span&gt;&lt;span&gt;지속되다&lt;/span&gt;&lt;span&gt;)&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;We live in a digital age. &lt;/span&gt;&lt;span&gt;우리는 디지털 시대에 살고 있다&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;Mistakes occur due to carelessness. &lt;/span&gt;&lt;span&gt;실수는 부주의로 인해 발생한다&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;div id=&quot;code_1766076960755&quot; data-ke-type=&quot;html&quot; data-source=&quot;&amp;lt;!DOCTYPE html&amp;gt; 
&amp;lt;html lang=&amp;quot;ko&amp;quot;&amp;gt; 
&amp;lt;head&amp;gt; 
&amp;lt;meta charset=&amp;quot;UTF-8&amp;quot;&amp;gt; 
&amp;lt;meta name=&amp;quot;viewport&amp;quot; content=&amp;quot;width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no&amp;quot;&amp;gt; 
&amp;lt;title&amp;gt;영어 문장 마스터&amp;lt;/title&amp;gt; 
&amp;lt;style&amp;gt; 
/* --- 1. CSS Reset &amp;amp; Variables --- */ 
:root { 
--primary: #3182f6; /* Toss Blue */ 
--primary-light: #e8f3ff; 
--primary-dark: #1b64da; 
--text-main: #191f28; 
--text-sub: #8b95a1; 
--bg-base: #f2f4f6; 
--bg-white: #ffffff; 
--line: #e5e8eb; 
--success: #26d266; 
--error: #e64a39; 
--radius-l: 24px; 
--radius-m: 16px; 
--radius-s: 12px; 
--shadow: 0 4px 20px rgba(0, 0, 0, 0.08); 
--font-family: 'Pretendard', -apple-system, BlinkMacSystemFont, system-ui, Roboto, 'Helvetica Neue', 'Segoe UI', 'Apple SD Gothic Neo', 'Noto Sans KR', 'Malgun Gothic', sans-serif; 
} 

* { box-sizing: border-box; -webkit-tap-highlight-color: transparent; } 

body { 
margin: 0; 
padding: 0; 
font-family: var(--font-family); 
background-color: var(--bg-base); 
color: var(--text-main); 
overflow-x: hidden; /* 가로 스크롤 방지 */ 
min-height: 100vh; 
} 

/* --- 2. App Layout (Container) --- */ 
.app-container { 
width: 100%; 
max-width: 600px; /* PC 중앙 정렬 제한 */ 
margin: 0 auto; 
background-color: var(--bg-white); 
min-height: 100vh; 
display: flex; 
flex-direction: column; 
position: relative; 
box-shadow: 0 0 40px rgba(0,0,0,0.05); 
} 

/* --- 3. Header &amp;amp; Progress --- */ 
.header { 
height: 60px; 
display: flex; 
align-items: center; 
justify-content: space-between; 
padding: 0 20px; 
position: sticky; 
top: 0; 
background: rgba(255, 255, 255, 0.95); 
backdrop-filter: blur(10px); 
z-index: 100; 
border-bottom: 1px solid var(--line); 
} 

.logo { font-weight: 800; font-size: 18px; color: var(--text-main); } 
.badge { 
background: var(--bg-base); 
color: var(--text-sub); 
font-size: 12px; 
font-weight: 600; 
padding: 4px 10px; 
border-radius: 20px; 
} 

.progress-bar-container { 
height: 4px; 
width: 100%; 
background-color: var(--line); 
position: sticky; 
top: 60px; 
z-index: 99; 
} 
.progress-bar { 
height: 100%; 
background-color: var(--primary); 
width: 0%; 
transition: width 0.3s ease; 
} 

/* --- 4. Slide System --- */ 
.viewport { 
flex: 1; 
overflow: hidden; 
position: relative; 
width: 100%; 
} 

.slide-track { 
display: flex; 
width: 100%; 
height: 100%; 
transition: transform 0.4s cubic-bezier(0.25, 1, 0.5, 1); 
} 

.slide { 
flex: 0 0 100%; 
width: 100%; 
padding: 24px 20px 100px 20px; /* Footer 공간 확보 */ 
overflow-y: auto; 
opacity: 0; 
transition: opacity 0.3s; 
display: flex; 
flex-direction: column; 
} 
.slide.active { opacity: 1; } 

/* --- 5. Content Styling (Study &amp;amp; Game) --- */ 
/* 타이틀 */ 
.section-title { 
font-size: 24px; 
font-weight: 800; 
margin-bottom: 8px; 
line-height: 1.3; 
} 
.section-subtitle { 
font-size: 16px; 
color: var(--text-sub); 
margin-bottom: 30px; 
line-height: 1.5; 
} 

/* 문장 카드 */ 
.card { 
background: white; 
border: 1px solid var(--line); 
border-radius: var(--radius-l); 
padding: 24px; 
margin-bottom: 20px; 
box-shadow: var(--shadow); 
} 
.eng-text { 
font-size: 22px; 
font-weight: 700; 
color: var(--text-main); 
line-height: 1.4; 
margin-bottom: 12px; 
word-break: keep-all; 
} 
.kor-text { 
font-size: 16px; 
color: var(--text-sub); 
margin-bottom: 16px; 
font-weight: 500; 
} 

/* 오디오 버튼 */ 
.audio-btn { 
display: inline-flex; 
align-items: center; 
justify-content: center; 
width: 36px; height: 36px; 
background: var(--primary-light); 
color: var(--primary); 
border-radius: 50%; 
border: none; 
cursor: pointer; 
transition: transform 0.1s; 
vertical-align: middle; 
margin-left: 8px; 
} 
.audio-btn:active { transform: scale(0.9); } 

/* 분석 박스 (직독직해, 구조) */ 
.analysis-box { 
background-color: var(--bg-base); 
border-radius: var(--radius-m); 
padding: 16px; 
margin-top: 10px; 
} 
.analysis-label { 
font-size: 12px; 
color: var(--text-sub); 
font-weight: 700; 
margin-bottom: 8px; 
display: block; 
} 
.analysis-content { 
font-size: 15px; 
line-height: 1.6; 
color: #333; 
} 
/* 직독직해 스타일 수정 */ 
.chunk-container { 
display: flex; 
flex-wrap: wrap; 
align-items: flex-start; 
gap: 8px; 
} 
.chunk-block { 
display: inline-flex; 
flex-direction: column; 
background: white; 
padding: 6px 10px; 
border-radius: 8px; 
border: 1px solid var(--line); 
} 
.chunk-en { font-weight: 700; color: var(--primary-dark); font-size: 14px; margin-bottom: 2px; } 
.chunk-ko { font-size: 13px; color: var(--text-sub); } 

/* 게임 영역 */ 
.game-zone { 
min-height: 120px; 
background-color: #f9fafb; 
border: 2px dashed #cfd4da; 
border-radius: var(--radius-l); 
padding: 16px; 
margin-bottom: 24px; 
display: flex; 
flex-wrap: wrap; 
align-content: flex-start; 
align-items: center; /* 칩 세로 중앙 정렬 */ 
gap: 8px; 
transition: all 0.3s; 
position: relative; /* For caret positioning context if needed */ 
} 
.game-zone.correct { 
background-color: #e8fdf0; 
border-color: var(--success); 
border-style: solid; 
} 
.game-zone.wrong { 
background-color: #fff5f5; 
border-color: var(--error); 
border-style: solid; 
animation: shake 0.4s; 
} 

/* 단어 칩 */ 
.word-chip { 
background: white; 
border: 1px solid var(--line); 
padding: 10px 16px; 
border-radius: 20px; 
font-size: 16px; 
font-weight: 600; 
color: var(--text-main); 
box-shadow: 0 2px 4px rgba(0,0,0,0.05); 
cursor: grab; 
user-select: none; 
touch-action: none; 
flex-shrink: 0; 
transition: transform 0.1s, background-color 0.2s; 
position: relative; 
z-index: 1; 
} 
.word-chip:active { cursor: grabbing; transform: scale(1.05); } 

/* 드래그 중인 원본 스타일 (반투명) */ 
.word-chip.dragging { 
opacity: 0.3; 
background: var(--bg-base); 
} 

/* 모바일 터치 시 손가락 따라다니는 복제본 (Ghost) */ 
.drag-ghost { 
position: fixed; 
pointer-events: none; /* 중요: 마우스/터치 이벤트 통과 */ 
z-index: 9999; 
opacity: 0.9; 
transform: scale(1.1); 
background: white; 
border: 2px solid var(--primary); 
border-radius: 20px; 
padding: 10px 16px; 
font-size: 16px; 
font-weight: 600; 
box-shadow: 0 8px 16px rgba(0,0,0,0.2); 
width: max-content; 
} 

/* 위치 표시선 (Caret) */ 
.drop-caret { 
width: 2px; 
height: 32px; /* 칩 높이와 비슷하게 */ 
background-color: var(--primary); 
border-radius: 2px; 
margin: 0 2px; 
animation: blink 1s infinite; 
pointer-events: none; 
flex-shrink: 0; 
} 

@keyframes blink { 
0%, 100% { opacity: 1; } 
50% { opacity: 0.5; } 
} 

/* 정답 영역 내 칩 스타일 */ 
.game-zone .word-chip { 
background-color: var(--primary); 
color: white; 
border-color: var(--primary); 
} 

.word-bank { 
display: flex; 
flex-wrap: wrap; 
gap: 8px; 
padding: 10px; 
justify-content: center; 
align-items: center; 
min-height: 60px; /* 드롭 영역 확보 */ 
} 

/* 피드백 메시지 */ 
.feedback { 
text-align: center; 
font-weight: 700; 
font-size: 16px; 
height: 24px; 
margin-bottom: 16px; 
opacity: 0; 
transition: opacity 0.3s; 
} 
.feedback.show { opacity: 1; } 
.feedback.success { color: var(--success); } 
.feedback.error { color: var(--error); } 

/* --- 6. Footer Navigation --- */ 
.footer { 
position: absolute; 
bottom: 0; 
left: 0; right: 0; 
height: 80px; 
background: rgba(255,255,255,0.9); 
backdrop-filter: blur(10px); 
border-top: 1px solid var(--line); 
display: flex; 
justify-content: space-between; 
align-items: center; 
padding: 0 24px; 
z-index: 100; 
} 

.btn-nav { 
border: none; 
background: none; 
font-size: 16px; 
font-weight: 600; 
color: var(--text-sub); 
cursor: pointer; 
padding: 12px; 
} 
.btn-nav.primary { 
background-color: var(--primary); 
color: white; 
padding: 12px 24px; 
border-radius: var(--radius-l); 
box-shadow: 0 4px 12px rgba(49, 130, 246, 0.3); 
transition: transform 0.1s; 
} 
.btn-nav.primary:active { transform: scale(0.96); } 
.btn-nav:disabled { opacity: 0.3; cursor: not-allowed; } 

/* --- 7. Animations --- */ 
@keyframes shake { 
0%, 100% { transform: translateX(0); } 
25% { transform: translateX(-5px); } 
75% { transform: translateX(5px); } 
} 

@keyframes pop { 
0% { transform: scale(0.8); opacity: 0; } 
100% { transform: scale(1); opacity: 1; } 
} 

/* Intro/Outro specific */ 
.intro-container { 
flex: 1; 
display: flex; 
flex-direction: column; 
justify-content: center; 
align-items: center; 
text-align: center; 
padding-bottom: 60px; 
} 
.emoji-icon { font-size: 80px; margin-bottom: 24px; animation: pop 0.6s cubic-bezier(0.175, 0.885, 0.32, 1.275); } 

&amp;lt;/style&amp;gt; 
&amp;lt;/head&amp;gt; 
&amp;lt;body&amp;gt; 

&amp;lt;div class=&amp;quot;app-container&amp;quot;&amp;gt; 
&amp;lt;!-- Header --&amp;gt; 
&amp;lt;header class=&amp;quot;header&amp;quot;&amp;gt; 
&amp;lt;div class=&amp;quot;logo&amp;quot;&amp;gt;Daily Syntax&amp;lt;/div&amp;gt; 
&amp;lt;div class=&amp;quot;badge&amp;quot; id=&amp;quot;step-badge&amp;quot;&amp;gt;Intro&amp;lt;/div&amp;gt; 
&amp;lt;/header&amp;gt; 

&amp;lt;!-- Progress Bar --&amp;gt; 
&amp;lt;div class=&amp;quot;progress-bar-container&amp;quot;&amp;gt; 
&amp;lt;div class=&amp;quot;progress-bar&amp;quot; id=&amp;quot;progress-bar&amp;quot;&amp;gt;&amp;lt;/div&amp;gt; 
&amp;lt;/div&amp;gt; 

&amp;lt;!-- Main Content --&amp;gt; 
&amp;lt;div class=&amp;quot;viewport&amp;quot;&amp;gt; 
&amp;lt;div class=&amp;quot;slide-track&amp;quot; id=&amp;quot;slide-track&amp;quot;&amp;gt; 
&amp;lt;!-- Slides will be injected here via JS --&amp;gt; 
&amp;lt;/div&amp;gt; 
&amp;lt;/div&amp;gt; 

&amp;lt;!-- Footer --&amp;gt; 
&amp;lt;footer class=&amp;quot;footer&amp;quot;&amp;gt; 
&amp;lt;button class=&amp;quot;btn-nav&amp;quot; id=&amp;quot;prev-btn&amp;quot;&amp;gt;이전&amp;lt;/button&amp;gt; 
&amp;lt;button class=&amp;quot;btn-nav primary&amp;quot; id=&amp;quot;next-btn&amp;quot;&amp;gt;시작하기&amp;lt;/button&amp;gt; 
&amp;lt;/footer&amp;gt; 
&amp;lt;/div&amp;gt; 

&amp;lt;script&amp;gt; 
// --- 1. Data Structure --- 
const studyData = [ 
{ 
id: 1, 
eng: &amp;quot;Change happens slowly over time.&amp;quot;, 
kor: &amp;quot;변화는 시간이 지남에 따라 천천히 일어난다.&amp;quot;, 
chunks: [ 
{ en: &amp;quot;Change(S)&amp;quot;, ko: &amp;quot;변화는&amp;quot; }, 
{ en: &amp;quot;happens(V)&amp;quot;, ko: &amp;quot;일어난다&amp;quot; }, 
{ en: &amp;quot;slowly(adv)&amp;quot;, ko: &amp;quot;천천히&amp;quot; }, 
{ en: &amp;quot;over time(adv)&amp;quot;, ko: &amp;quot;시간이 지남에 따라&amp;quot; } 
], 
structure: &amp;quot;주어(Change) + 자동사(happens) + 부사(slowly) + 전치사구(over time)&amp;quot; 
}, 
{ 
id: 2, 
eng: &amp;quot;Great ideas come from curiosity.&amp;quot;, 
kor: &amp;quot;위대한 아이디어는 호기심에서 나온다.&amp;quot;, 
chunks: [ 
{ en: &amp;quot;Great ideas(S)&amp;quot;, ko: &amp;quot;위대한 아이디어는&amp;quot; }, 
{ en: &amp;quot;come(V)&amp;quot;, ko: &amp;quot;나온다&amp;quot; }, 
{ en: &amp;quot;from curiosity(adv)&amp;quot;, ko: &amp;quot;호기심에서&amp;quot; } 
], 
structure: &amp;quot;주어(Great ideas) + 동사(come) + 전치사구(from curiosity)&amp;quot; 
}, 
{ 
id: 3, 
eng: &amp;quot;Your age doesn't matter in learning.&amp;quot;, 
kor: &amp;quot;배움에 있어서 나이는 중요하지 않다.&amp;quot;, 
chunks: [ 
{ en: &amp;quot;Your age(S)&amp;quot;, ko: &amp;quot;나이는&amp;quot; }, 
{ en: &amp;quot;doesn't matter(V)&amp;quot;, ko: &amp;quot;중요하지 않다&amp;quot; }, 
{ en: &amp;quot;in learning(adv)&amp;quot;, ko: &amp;quot;배움에 있어서&amp;quot; } 
], 
structure: &amp;quot;주어(Your age) + 동사(doesn't matter) + 전치사구(in learning)&amp;quot; 
}, 
{ 
id: 4, 
eng: &amp;quot;This medicine works effectively for headaches.&amp;quot;, 
kor: &amp;quot;이 약은 두통에 효과가 있다.&amp;quot;, 
chunks: [ 
{ en: &amp;quot;This medicine(S)&amp;quot;, ko: &amp;quot;이 약은&amp;quot; }, 
{ en: &amp;quot;works(V)&amp;quot;, ko: &amp;quot;효과가 있다&amp;quot; }, 
{ en: &amp;quot;effectively(adv)&amp;quot;, ko: &amp;quot;효과적으로&amp;quot; }, 
{ en: &amp;quot;for headaches(adv)&amp;quot;, ko: &amp;quot;두통에&amp;quot; } 
], 
structure: &amp;quot;주어(This medicine) + 동사(works) + 부사(effectively) + 전치사구(for headaches)&amp;quot; 
}, 
{ 
id: 5, 
eng: &amp;quot;Hard work pays in the long run.&amp;quot;, 
kor: &amp;quot;노력은 결국에는 보상받는다.&amp;quot;, 
chunks: [ 
{ en: &amp;quot;Hard work(S)&amp;quot;, ko: &amp;quot;노력은&amp;quot; }, 
{ en: &amp;quot;pays(V)&amp;quot;, ko: &amp;quot;보상받는다&amp;quot; }, 
{ en: &amp;quot;in the long run(adv)&amp;quot;, ko: &amp;quot;결국에는&amp;quot; } 
], 
structure: &amp;quot;주어(Hard work) + 동사(pays) + 관용구(in the long run)&amp;quot; 
}, 
{ 
id: 6, 
eng: &amp;quot;Every second counts in an emergency.&amp;quot;, 
kor: &amp;quot;비상 상황에서는 1분 1초가 중요하다.&amp;quot;, 
chunks: [ 
{ en: &amp;quot;Every second(S)&amp;quot;, ko: &amp;quot;1분 1초가&amp;quot; }, 
{ en: &amp;quot;counts(V)&amp;quot;, ko: &amp;quot;중요하다&amp;quot; }, 
{ en: &amp;quot;in an emergency(adv)&amp;quot;, ko: &amp;quot;비상 상황에서는&amp;quot; } 
], 
structure: &amp;quot;주어(Every second) + 동사(counts) + 전치사구(in an emergency)&amp;quot; 
}, 
{ 
id: 7, 
eng: &amp;quot;A simple apology will do for him.&amp;quot;, 
kor: &amp;quot;그에게는 간단한 사과면 충분할 것이다.&amp;quot;, 
chunks: [ 
{ en: &amp;quot;A simple apology(S)&amp;quot;, ko: &amp;quot;간단한 사과는&amp;quot; }, 
{ en: &amp;quot;will do(V)&amp;quot;, ko: &amp;quot;충분할 것이다&amp;quot; }, 
{ en: &amp;quot;for him(adv)&amp;quot;, ko: &amp;quot;그에게&amp;quot; } 
], 
structure: &amp;quot;주어(A simple apology) + 동사(will do) + 전치사구(for him)&amp;quot; 
}, 
{ 
id: 8, 
eng: &amp;quot;The silence lasted for a moment.&amp;quot;, 
kor: &amp;quot;침묵이 잠시 동안 지속되었다.&amp;quot;, 
chunks: [ 
{ en: &amp;quot;The silence(S)&amp;quot;, ko: &amp;quot;침묵이&amp;quot; }, 
{ en: &amp;quot;lasted(V)&amp;quot;, ko: &amp;quot;지속되었다&amp;quot; }, 
{ en: &amp;quot;for a moment(adv)&amp;quot;, ko: &amp;quot;잠시 동안&amp;quot; } 
], 
structure: &amp;quot;주어(The silence) + 동사(lasted) + 시간 부사구(for a moment)&amp;quot; 
}, 
{ 
id: 9, 
eng: &amp;quot;We live in a digital age.&amp;quot;, 
kor: &amp;quot;우리는 디지털 시대에 살고 있다.&amp;quot;, 
chunks: [ 
{ en: &amp;quot;We(S)&amp;quot;, ko: &amp;quot;우리는&amp;quot; }, 
{ en: &amp;quot;live(V)&amp;quot;, ko: &amp;quot;살고 있다&amp;quot; }, 
{ en: &amp;quot;in a digital age(adv)&amp;quot;, ko: &amp;quot;디지털 시대에&amp;quot; } 
], 
structure: &amp;quot;주어(We) + 동사(live) + 장소/시간 부사구(in a digital age)&amp;quot; 
}, 
{ 
id: 10, 
eng: &amp;quot;Mistakes occur due to carelessness.&amp;quot;, 
kor: &amp;quot;실수는 부주의로 인해 발생한다.&amp;quot;, 
chunks: [ 
{ en: &amp;quot;Mistakes(S)&amp;quot;, ko: &amp;quot;실수는&amp;quot; }, 
{ en: &amp;quot;occur(V)&amp;quot;, ko: &amp;quot;발생한다&amp;quot; }, 
{ en: &amp;quot;due to carelessness(adv)&amp;quot;, ko: &amp;quot;부주의로 인해&amp;quot; } 
], 
structure: &amp;quot;주어(Mistakes) + 동사(occur) + 전치사구(due to carelessness)&amp;quot; 
} 
]; 

// --- 2. State Management --- 
let slides = []; 
let currentIndex = 0; 
let isTTSPlaying = false; 

// --- 3. DOM Elements --- 
const track = document.getElementById('slide-track'); 
const prevBtn = document.getElementById('prev-btn'); 
const nextBtn = document.getElementById('next-btn'); 
const stepBadge = document.getElementById('step-badge'); 
const progressBar = document.getElementById('progress-bar'); 

// --- 4. Initialization --- 
function init() { 
buildSlides(); 
renderSlides(); 
updateView(); 
setupGlobalEvents(); 
} 

function buildSlides() { 
// 1. Intro Slide 
slides.push({ type: 'intro' }); 

// 2. Study &amp;amp; Quiz Pair 
studyData.forEach((item, idx) =&amp;gt; { 
slides.push({ type: 'study', data: item, index: idx + 1 }); 
slides.push({ type: 'quiz', data: item, index: idx + 1 }); 
}); 

// 3. Outro Slide 
slides.push({ type: 'outro' }); 
} 

function renderSlides() { 
track.innerHTML = ''; 
slides.forEach((slide, i) =&amp;gt; { 
const el = document.createElement('div'); 
el.className = 'slide'; 
el.dataset.index = i; 

if (slide.type === 'intro') { 
el.innerHTML = &amp;#96; 
&amp;lt;div class=&amp;quot;intro-container&amp;quot;&amp;gt; 
&amp;lt;div class=&amp;quot;emoji-icon&amp;quot;&amp;gt; &amp;lt;/div&amp;gt; 
&amp;lt;div class=&amp;quot;section-title&amp;quot;&amp;gt;1형식 문장 마스터&amp;lt;/div&amp;gt; 
&amp;lt;div class=&amp;quot;section-subtitle&amp;quot;&amp;gt;핵심 동사의 의미와 구조를&amp;lt;br&amp;gt;완벽하게 익혀보세요.&amp;lt;/div&amp;gt; 
&amp;lt;/div&amp;gt; 
&amp;#96;; 
} else if (slide.type === 'study') { 
const { eng, kor, chunks, structure } = slide.data; 
el.innerHTML = &amp;#96; 
&amp;lt;!-- Badge Removed --&amp;gt; 
&amp;lt;div class=&amp;quot;card&amp;quot;&amp;gt; 
&amp;lt;div class=&amp;quot;eng-text&amp;quot;&amp;gt; 
${highlightKeywords(eng)} 
&amp;lt;button class=&amp;quot;audio-btn&amp;quot; onclick=&amp;quot;playTTS('${escapeText(eng)}')&amp;quot;&amp;gt; 
&amp;lt;svg width=&amp;quot;20&amp;quot; height=&amp;quot;20&amp;quot; viewBox=&amp;quot;0 0 24 24&amp;quot; fill=&amp;quot;currentColor&amp;quot;&amp;gt;&amp;lt;path d=&amp;quot;M3 9v6h4l5 5V4L7 9H3zm13.5 3c0-1.77-1.02-3.29-2.5-4.03v8.05c1.48-.73 2.5-2.25 2.5-4.02z&amp;quot;/&amp;gt;&amp;lt;/svg&amp;gt; 
&amp;lt;/button&amp;gt; 
&amp;lt;/div&amp;gt; 
&amp;lt;div class=&amp;quot;kor-text&amp;quot;&amp;gt;${kor}&amp;lt;/div&amp;gt; 

&amp;lt;div class=&amp;quot;analysis-box&amp;quot;&amp;gt; 
&amp;lt;span class=&amp;quot;analysis-label&amp;quot;&amp;gt;직독직해&amp;lt;/span&amp;gt; 
&amp;lt;div class=&amp;quot;chunk-container&amp;quot;&amp;gt;${formatChunks(chunks)}&amp;lt;/div&amp;gt; 
&amp;lt;/div&amp;gt; 

&amp;lt;div class=&amp;quot;analysis-box&amp;quot;&amp;gt; 
&amp;lt;span class=&amp;quot;analysis-label&amp;quot;&amp;gt;구문 분석&amp;lt;/span&amp;gt; 
&amp;lt;div class=&amp;quot;analysis-content&amp;quot;&amp;gt;${structure}&amp;lt;/div&amp;gt; 
&amp;lt;/div&amp;gt; 
&amp;lt;/div&amp;gt; 
&amp;#96;; 
} else if (slide.type === 'quiz') { 
const { eng, kor } = slide.data; 
const words = eng.split(' ').sort(() =&amp;gt; Math.random() - 0.5); 
el.innerHTML = &amp;#96; 
&amp;lt;!-- Badge Removed --&amp;gt; 
&amp;lt;div class=&amp;quot;section-title&amp;quot; style=&amp;quot;font-size:18px;&amp;quot;&amp;gt;문장을 완성하세요&amp;lt;/div&amp;gt; 
&amp;lt;div class=&amp;quot;kor-text&amp;quot; style=&amp;quot;margin-bottom:20px;&amp;quot;&amp;gt;&amp;quot;${kor}&amp;quot;&amp;lt;/div&amp;gt; 

&amp;lt;div class=&amp;quot;game-area&amp;quot; id=&amp;quot;game-${i}&amp;quot;&amp;gt; 
&amp;lt;div class=&amp;quot;feedback&amp;quot; id=&amp;quot;feedback-${i}&amp;quot;&amp;gt;&amp;lt;/div&amp;gt; 
&amp;lt;div class=&amp;quot;game-zone&amp;quot; id=&amp;quot;zone-${i}&amp;quot; data-answer=&amp;quot;${eng}&amp;quot;&amp;gt;&amp;lt;/div&amp;gt; 
&amp;lt;div class=&amp;quot;word-bank&amp;quot; id=&amp;quot;bank-${i}&amp;quot;&amp;gt; 
${words.map(w =&amp;gt; &amp;#96;&amp;lt;div class=&amp;quot;word-chip&amp;quot; draggable=&amp;quot;true&amp;quot;&amp;gt;${w}&amp;lt;/div&amp;gt;&amp;#96;).join('')} 
&amp;lt;/div&amp;gt; 
&amp;lt;/div&amp;gt; 
&amp;#96;; 
} else if (slide.type === 'outro') { 
el.innerHTML = &amp;#96; 
&amp;lt;div class=&amp;quot;intro-container&amp;quot;&amp;gt; 
&amp;lt;div class=&amp;quot;emoji-icon&amp;quot;&amp;gt; &amp;lt;/div&amp;gt; 
&amp;lt;div class=&amp;quot;section-title&amp;quot;&amp;gt;학습 완료!&amp;lt;/div&amp;gt; 
&amp;lt;div class=&amp;quot;section-subtitle&amp;quot;&amp;gt;오늘의 목표를 달성했습니다.&amp;lt;br&amp;gt;내일도 함께해요!&amp;lt;/div&amp;gt; 
&amp;lt;/div&amp;gt; 
&amp;#96;; 
} 
track.appendChild(el); 
}); 

// Initialize Drag &amp;amp; Drop after rendering 
initDragAndDrop(); 
} 

// --- 5. Helper Functions --- 
function escapeText(text) { 
return text.replace(/'/g, &amp;quot;\\'&amp;quot;); 
} 

function highlightKeywords(text) { 
return text; 
} 

function formatChunks(chunks) { 
// chunks is now an array of objects {en, ko} 
if (!Array.isArray(chunks)) return &amp;quot;&amp;quot;; 
return chunks.map(chunk =&amp;gt; &amp;#96; 
&amp;lt;div class=&amp;quot;chunk-block&amp;quot;&amp;gt; 
&amp;lt;span class=&amp;quot;chunk-en&amp;quot;&amp;gt;${chunk.en}&amp;lt;/span&amp;gt; 
&amp;lt;span class=&amp;quot;chunk-ko&amp;quot;&amp;gt;${chunk.ko}&amp;lt;/span&amp;gt; 
&amp;lt;/div&amp;gt; 
&amp;#96;).join(''); 
} 

// --- 6. Navigation Logic --- 
function updateView() { 
// Slide Transition 
track.style.transform = &amp;#96;translateX(-${currentIndex * 100}%)&amp;#96;; 

// Opacity Logic 
document.querySelectorAll('.slide').forEach((s, i) =&amp;gt; { 
s.classList.toggle('active', i === currentIndex); 
}); 

// Header &amp;amp; Progress 
const progress = ((currentIndex) / (slides.length - 1)) * 100; 
progressBar.style.width = &amp;#96;${progress}%&amp;#96;; 

const currentSlide = slides[currentIndex]; 

if (currentSlide.type === 'intro') { 
stepBadge.innerText = 'Intro'; 
prevBtn.style.visibility = 'hidden'; 
nextBtn.innerText = '시작하기'; 
} else if (currentSlide.type === 'outro') { 
stepBadge.innerText = 'Finish'; 
prevBtn.style.visibility = 'visible'; 
nextBtn.innerText = '처음으로'; 
} else { 
// Changed badge to just show type (Study or Quiz) and progress count 
const typeText = currentSlide.type === 'study' ? '학습' : '퀴즈'; 
stepBadge.innerText = &amp;#96;${typeText} (${currentSlide.index}/${studyData.length})&amp;#96;; 

// Hide Prev button only on the very first slide (index 0) 
prevBtn.style.visibility = currentIndex === 0 ? 'hidden' : 'visible'; 
nextBtn.innerText = '다음'; 
} 
} 

function setupGlobalEvents() { 
prevBtn.addEventListener('click', () =&amp;gt; { 
if (currentIndex &amp;gt; 0) { 
currentIndex--; 
updateView(); 
} 
}); 

nextBtn.addEventListener('click', () =&amp;gt; { 
if (currentIndex &amp;lt; slides.length - 1) { 
currentIndex++; 
updateView(); 
} else { 
// Restart 
currentIndex = 0; 
// Reset games 
renderSlides(); 
updateView(); 
} 
}); 
} 

// --- 7. TTS System --- 
window.playTTS = function(text) { 
if ('speechSynthesis' in window) { 
window.speechSynthesis.cancel(); // Stop previous 
const u = new SpeechSynthesisUtterance(text); 
u.lang = 'en-US'; 
u.rate = 0.8; // 0.8x Speed 
window.speechSynthesis.speak(u); 
} else { 
alert(&amp;quot;이 브라우저는 음성 합성을 지원하지 않습니다.&amp;quot;); 
} 
}; 

// --- 8. Drag &amp;amp; Drop + Click Logic (Unified) --- 
// Caret Element (The thin blue line) 
const caret = document.createElement('div'); 
caret.className = 'drop-caret'; 

// Drag State 
let draggedItem = null; 
let touchClone = null; // Ghost element for mobile 

function initDragAndDrop() { 
const chips = document.querySelectorAll('.word-chip'); 
const zones = document.querySelectorAll('.game-zone, .word-bank'); 

chips.forEach(chip =&amp;gt; { 
// Desktop Drag 
chip.addEventListener('dragstart', handleDragStart); 
chip.addEventListener('dragend', handleDragEnd); 

// Mobile Touch 
chip.addEventListener('touchstart', handleTouchStart, {passive: false}); 
chip.addEventListener('touchmove', handleTouchMove, {passive: false}); 
chip.addEventListener('touchend', handleTouchEnd); 

// Click to Move (Accessability &amp;amp; Convenience) 
chip.addEventListener('click', handleClickMove); 
}); 

zones.forEach(zone =&amp;gt; { 
zone.addEventListener('dragover', handleDragOver); 
zone.addEventListener('drop', handleDrop); 
}); 
} 

// -- Click Logic -- 
function handleClickMove(e) { 
if (this.classList.contains('dragging')) return; // Ignore if dragging 

const chip = this; 
const currentContainer = chip.parentElement; 
const gameArea = chip.closest('.game-area'); 
const answerZone = gameArea.querySelector('.game-zone'); 
const bankZone = gameArea.querySelector('.word-bank'); 

// Toggle Zones 
if (currentContainer === bankZone) { 
answerZone.appendChild(chip); 
} else { 
bankZone.appendChild(chip); 
} 

checkAnswer(answerZone); 
} 

// -- Desktop Drag Logic -- 
function handleDragStart(e) { 
draggedItem = this; 
setTimeout(() =&amp;gt; this.classList.add('dragging'), 0); 
e.dataTransfer.effectAllowed = 'move'; 
} 

function handleDragEnd(e) { 
this.classList.remove('dragging'); 

// If caret exists, move item to caret position 
if (caret.parentNode) { 
caret.parentNode.insertBefore(this, caret); 
caret.remove(); // Remove caret 
} 

const zone = this.closest('.game-area').querySelector('.game-zone'); 
checkAnswer(zone); 
draggedItem = null; 
} 

function handleDragOver(e) { 
e.preventDefault(); // Allow dropping 

const container = this; 

// Only allow drag over zones 
if (!container.classList.contains('game-zone') &amp;amp;&amp;amp; !container.classList.contains('word-bank')) return; 

const afterElement = getDragAfterElement(container, e.clientX); 

// Visual Indicator (Caret) Movement 
if (afterElement) { 
container.insertBefore(caret, afterElement); 
} else { 
container.appendChild(caret); 
} 
} 

function handleDrop(e) { 
e.preventDefault(); 
// Logic handled in dragEnd usually, but for safety: 
if (caret.parentNode) { 
caret.parentNode.insertBefore(draggedItem, caret); 
caret.remove(); 
} 
} 

// -- Mobile Touch Logic -- 
function handleTouchStart(e) { 
const touch = e.touches[0]; 
draggedItem = this; 

// Create Ghost (Visual Clone) 
touchClone = this.cloneNode(true); 
touchClone.classList.add('drag-ghost'); 
document.body.appendChild(touchClone); 

// Set initial position 
moveGhost(touch.clientX, touch.clientY); 

// Dim original 
this.classList.add('dragging'); 
} 

function handleTouchMove(e) { 
if (!draggedItem || !touchClone) return; 
e.preventDefault(); // Stop scrolling 

const touch = e.touches[0]; 
moveGhost(touch.clientX, touch.clientY); 

// Find element below finger 
// NOTE: Ghost has pointer-events: none, so we can see through it 
const elementBelow = document.elementFromPoint(touch.clientX, touch.clientY); 

if (!elementBelow) return; 

// Identify target container (Zone or Bank) 
const container = elementBelow.closest('.game-zone') || elementBelow.closest('.word-bank'); 

if (container) { 
const afterElement = getDragAfterElement(container, touch.clientX); 
if (afterElement) { 
container.insertBefore(caret, afterElement); 
} else { 
container.appendChild(caret); 
} 
} else { 
caret.remove(); 
} 
} 

function handleTouchEnd(e) { 
if (draggedItem) { 
draggedItem.classList.remove('dragging'); 

// Remove Ghost 
if (touchClone) { 
touchClone.remove(); 
touchClone = null; 
} 

// Move Real Item to Caret 
if (caret.parentNode) { 
caret.parentNode.insertBefore(draggedItem, caret); 
caret.remove(); 
} 

const zone = draggedItem.closest('.game-area').querySelector('.game-zone'); 
if (zone) checkAnswer(zone); 

draggedItem = null; 
} 
} 

function moveGhost(x, y) { 
if (touchClone) { 
// Center the ghost on finger 
const width = touchClone.offsetWidth; 
const height = touchClone.offsetHeight; 
touchClone.style.left = &amp;#96;${x - width / 2}px&amp;#96;; 
touchClone.style.top = &amp;#96;${y - height / 2 - 40}px&amp;#96;; // Slightly above finger 
} 
} 

// Helper: Find closest element to insert before 
function getDragAfterElement(container, x) { 
// Ignore dragging item AND the caret itself 
const draggableElements = [...container.querySelectorAll('.word-chip:not(.dragging)')]; 

return draggableElements.reduce((closest, child) =&amp;gt; { 
const box = child.getBoundingClientRect(); 
// Check horizontal distance 
const offset = x - box.left - box.width / 2; 
if (offset &amp;lt; 0 &amp;amp;&amp;amp; offset &amp;gt; closest.offset) { 
return { offset: offset, element: child }; 
} else { 
return closest; 
} 
}, { offset: Number.NEGATIVE_INFINITY }).element; 
} 

// --- 9. Check Answer &amp;amp; Feedback --- 
function checkAnswer(zone) { 
if (!zone) return; 
const gameArea = zone.closest('.game-area'); 
const feedback = gameArea.querySelector('.feedback'); 
const correctAnswer = zone.dataset.answer; 

// Get current sentence 
const currentSentence = [...zone.querySelectorAll('.word-chip')] 
.map(chip =&amp;gt; chip.innerText).join(' '); 

// Reset State 
zone.classList.remove('correct', 'wrong'); 
feedback.className = 'feedback'; 
feedback.innerText = ''; 

if (currentSentence.length === 0) return; 

// Check if lengths match (user put all words in zone) 
const correctWordsCount = correctAnswer.split(' ').length; 
const currentWordsCount = currentSentence.split(' ').length; 

if (currentWordsCount === correctWordsCount) { 
if (currentSentence === correctAnswer) { 
// Correct! 
zone.classList.add('correct'); 
feedback.innerText = &amp;quot;정답입니다!  &amp;quot;; 
feedback.classList.add('show', 'success'); 

// Auto Play TTS 
playTTS(correctAnswer); 

// Disable interactions 
const chips = zone.querySelectorAll('.word-chip'); 
chips.forEach(c =&amp;gt; { 
c.draggable = false; 
c.style.cursor = 'default'; 
// Remove listeners to prevent moving back 
c.replaceWith(c.cloneNode(true)); 
}); 

} else { 
// Wrong! 
zone.classList.add('wrong'); 
feedback.innerText = &amp;quot;순서가 다릅니다. 다시 확인해보세요  &amp;quot;; 
feedback.classList.add('show', 'error'); 

// Remove wrong class after animation 
setTimeout(() =&amp;gt; { 
zone.classList.remove('wrong'); 
}, 500); 
} 
} 
} 

// Start 
document.addEventListener('DOMContentLoaded', init); 

&amp;lt;/script&amp;gt; 
&amp;lt;/body&amp;gt; 
&amp;lt;/html&amp;gt;&quot;&gt;
&lt;style&gt; 
/* --- 1. CSS Reset &amp; Variables --- */ 
:root { 
--primary: #3182f6; /* Toss Blue */ 
--primary-light: #e8f3ff; 
--primary-dark: #1b64da; 
--text-main: #191f28; 
--text-sub: #8b95a1; 
--bg-base: #f2f4f6; 
--bg-white: #ffffff; 
--line: #e5e8eb; 
--success: #26d266; 
--error: #e64a39; 
--radius-l: 24px; 
--radius-m: 16px; 
--radius-s: 12px; 
--shadow: 0 4px 20px rgba(0, 0, 0, 0.08); 
--font-family: 'Pretendard', -apple-system, BlinkMacSystemFont, system-ui, Roboto, 'Helvetica Neue', 'Segoe UI', 'Apple SD Gothic Neo', 'Noto Sans KR', 'Malgun Gothic', sans-serif; 
} 

* { box-sizing: border-box; -webkit-tap-highlight-color: transparent; } 

body { 
margin: 0; 
padding: 0; 
font-family: var(--font-family); 
background-color: var(--bg-base); 
color: var(--text-main); 
overflow-x: hidden; /* 가로 스크롤 방지 */ 
min-height: 100vh; 
} 

/* --- 2. App Layout (Container) --- */ 
.app-container { 
width: 100%; 
max-width: 600px; /* PC 중앙 정렬 제한 */ 
margin: 0 auto; 
background-color: var(--bg-white); 
min-height: 100vh; 
display: flex; 
flex-direction: column; 
position: relative; 
box-shadow: 0 0 40px rgba(0,0,0,0.05); 
} 

/* --- 3. Header &amp; Progress --- */ 
.header { 
height: 60px; 
display: flex; 
align-items: center; 
justify-content: space-between; 
padding: 0 20px; 
position: sticky; 
top: 0; 
background: rgba(255, 255, 255, 0.95); 
backdrop-filter: blur(10px); 
z-index: 100; 
border-bottom: 1px solid var(--line); 
} 

.logo { font-weight: 800; font-size: 18px; color: var(--text-main); } 
.badge { 
background: var(--bg-base); 
color: var(--text-sub); 
font-size: 12px; 
font-weight: 600; 
padding: 4px 10px; 
border-radius: 20px; 
} 

.progress-bar-container { 
height: 4px; 
width: 100%; 
background-color: var(--line); 
position: sticky; 
top: 60px; 
z-index: 99; 
} 
.progress-bar { 
height: 100%; 
background-color: var(--primary); 
width: 0%; 
transition: width 0.3s ease; 
} 

/* --- 4. Slide System --- */ 
.viewport { 
flex: 1; 
overflow: hidden; 
position: relative; 
width: 100%; 
} 

.slide-track { 
display: flex; 
width: 100%; 
height: 100%; 
transition: transform 0.4s cubic-bezier(0.25, 1, 0.5, 1); 
} 

.slide { 
flex: 0 0 100%; 
width: 100%; 
padding: 24px 20px 100px 20px; /* Footer 공간 확보 */ 
overflow-y: auto; 
opacity: 0; 
transition: opacity 0.3s; 
display: flex; 
flex-direction: column; 
} 
.slide.active { opacity: 1; } 

/* --- 5. Content Styling (Study &amp; Game) --- */ 
/* 타이틀 */ 
.section-title { 
font-size: 24px; 
font-weight: 800; 
margin-bottom: 8px; 
line-height: 1.3; 
} 
.section-subtitle { 
font-size: 16px; 
color: var(--text-sub); 
margin-bottom: 30px; 
line-height: 1.5; 
} 

/* 문장 카드 */ 
.card { 
background: white; 
border: 1px solid var(--line); 
border-radius: var(--radius-l); 
padding: 24px; 
margin-bottom: 20px; 
box-shadow: var(--shadow); 
} 
.eng-text { 
font-size: 22px; 
font-weight: 700; 
color: var(--text-main); 
line-height: 1.4; 
margin-bottom: 12px; 
word-break: keep-all; 
} 
.kor-text { 
font-size: 16px; 
color: var(--text-sub); 
margin-bottom: 16px; 
font-weight: 500; 
} 

/* 오디오 버튼 */ 
.audio-btn { 
display: inline-flex; 
align-items: center; 
justify-content: center; 
width: 36px; height: 36px; 
background: var(--primary-light); 
color: var(--primary); 
border-radius: 50%; 
border: none; 
cursor: pointer; 
transition: transform 0.1s; 
vertical-align: middle; 
margin-left: 8px; 
} 
.audio-btn:active { transform: scale(0.9); } 

/* 분석 박스 (직독직해, 구조) */ 
.analysis-box { 
background-color: var(--bg-base); 
border-radius: var(--radius-m); 
padding: 16px; 
margin-top: 10px; 
} 
.analysis-label { 
font-size: 12px; 
color: var(--text-sub); 
font-weight: 700; 
margin-bottom: 8px; 
display: block; 
} 
.analysis-content { 
font-size: 15px; 
line-height: 1.6; 
color: #333; 
} 
/* 직독직해 스타일 수정 */ 
.chunk-container { 
display: flex; 
flex-wrap: wrap; 
align-items: flex-start; 
gap: 8px; 
} 
.chunk-block { 
display: inline-flex; 
flex-direction: column; 
background: white; 
padding: 6px 10px; 
border-radius: 8px; 
border: 1px solid var(--line); 
} 
.chunk-en { font-weight: 700; color: var(--primary-dark); font-size: 14px; margin-bottom: 2px; } 
.chunk-ko { font-size: 13px; color: var(--text-sub); } 

/* 게임 영역 */ 
.game-zone { 
min-height: 120px; 
background-color: #f9fafb; 
border: 2px dashed #cfd4da; 
border-radius: var(--radius-l); 
padding: 16px; 
margin-bottom: 24px; 
display: flex; 
flex-wrap: wrap; 
align-content: flex-start; 
align-items: center; /* 칩 세로 중앙 정렬 */ 
gap: 8px; 
transition: all 0.3s; 
position: relative; /* For caret positioning context if needed */ 
} 
.game-zone.correct { 
background-color: #e8fdf0; 
border-color: var(--success); 
border-style: solid; 
} 
.game-zone.wrong { 
background-color: #fff5f5; 
border-color: var(--error); 
border-style: solid; 
animation: shake 0.4s; 
} 

/* 단어 칩 */ 
.word-chip { 
background: white; 
border: 1px solid var(--line); 
padding: 10px 16px; 
border-radius: 20px; 
font-size: 16px; 
font-weight: 600; 
color: var(--text-main); 
box-shadow: 0 2px 4px rgba(0,0,0,0.05); 
cursor: grab; 
user-select: none; 
touch-action: none; 
flex-shrink: 0; 
transition: transform 0.1s, background-color 0.2s; 
position: relative; 
z-index: 1; 
} 
.word-chip:active { cursor: grabbing; transform: scale(1.05); } 

/* 드래그 중인 원본 스타일 (반투명) */ 
.word-chip.dragging { 
opacity: 0.3; 
background: var(--bg-base); 
} 

/* 모바일 터치 시 손가락 따라다니는 복제본 (Ghost) */ 
.drag-ghost { 
position: fixed; 
pointer-events: none; /* 중요: 마우스/터치 이벤트 통과 */ 
z-index: 9999; 
opacity: 0.9; 
transform: scale(1.1); 
background: white; 
border: 2px solid var(--primary); 
border-radius: 20px; 
padding: 10px 16px; 
font-size: 16px; 
font-weight: 600; 
box-shadow: 0 8px 16px rgba(0,0,0,0.2); 
width: max-content; 
} 

/* 위치 표시선 (Caret) */ 
.drop-caret { 
width: 2px; 
height: 32px; /* 칩 높이와 비슷하게 */ 
background-color: var(--primary); 
border-radius: 2px; 
margin: 0 2px; 
animation: blink 1s infinite; 
pointer-events: none; 
flex-shrink: 0; 
} 

@keyframes blink { 
0%, 100% { opacity: 1; } 
50% { opacity: 0.5; } 
} 

/* 정답 영역 내 칩 스타일 */ 
.game-zone .word-chip { 
background-color: var(--primary); 
color: white; 
border-color: var(--primary); 
} 

.word-bank { 
display: flex; 
flex-wrap: wrap; 
gap: 8px; 
padding: 10px; 
justify-content: center; 
align-items: center; 
min-height: 60px; /* 드롭 영역 확보 */ 
} 

/* 피드백 메시지 */ 
.feedback { 
text-align: center; 
font-weight: 700; 
font-size: 16px; 
height: 24px; 
margin-bottom: 16px; 
opacity: 0; 
transition: opacity 0.3s; 
} 
.feedback.show { opacity: 1; } 
.feedback.success { color: var(--success); } 
.feedback.error { color: var(--error); } 

/* --- 6. Footer Navigation --- */ 
.footer { 
position: absolute; 
bottom: 0; 
left: 0; right: 0; 
height: 80px; 
background: rgba(255,255,255,0.9); 
backdrop-filter: blur(10px); 
border-top: 1px solid var(--line); 
display: flex; 
justify-content: space-between; 
align-items: center; 
padding: 0 24px; 
z-index: 100; 
} 

.btn-nav { 
border: none; 
background: none; 
font-size: 16px; 
font-weight: 600; 
color: var(--text-sub); 
cursor: pointer; 
padding: 12px; 
} 
.btn-nav.primary { 
background-color: var(--primary); 
color: white; 
padding: 12px 24px; 
border-radius: var(--radius-l); 
box-shadow: 0 4px 12px rgba(49, 130, 246, 0.3); 
transition: transform 0.1s; 
} 
.btn-nav.primary:active { transform: scale(0.96); } 
.btn-nav:disabled { opacity: 0.3; cursor: not-allowed; } 

/* --- 7. Animations --- */ 
@keyframes shake { 
0%, 100% { transform: translateX(0); } 
25% { transform: translateX(-5px); } 
75% { transform: translateX(5px); } 
} 

@keyframes pop { 
0% { transform: scale(0.8); opacity: 0; } 
100% { transform: scale(1); opacity: 1; } 
} 

/* Intro/Outro specific */ 
.intro-container { 
flex: 1; 
display: flex; 
flex-direction: column; 
justify-content: center; 
align-items: center; 
text-align: center; 
padding-bottom: 60px; 
} 
.emoji-icon { font-size: 80px; margin-bottom: 24px; animation: pop 0.6s cubic-bezier(0.175, 0.885, 0.32, 1.275); } 

&lt;/style&gt;
&lt;div class=&quot;app-container&quot;&gt;&lt;!-- Header --&gt;&lt;header class=&quot;header&quot;&gt;
&lt;div class=&quot;logo&quot;&gt;Daily Syntax&lt;/div&gt;
&lt;div id=&quot;step-badge&quot; class=&quot;badge&quot;&gt;Intro&lt;/div&gt;
&lt;/header&gt;&lt;!-- Progress Bar --&gt;
&lt;div class=&quot;progress-bar-container&quot;&gt;
&lt;div id=&quot;progress-bar&quot; class=&quot;progress-bar&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;!-- Main Content --&gt;
&lt;div class=&quot;viewport&quot;&gt;
&lt;div id=&quot;slide-track&quot; class=&quot;slide-track&quot;&gt;&lt;!-- Slides will be injected here via JS --&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;!-- Footer --&gt;&lt;footer class=&quot;footer&quot;&gt;&lt;button id=&quot;prev-btn&quot; class=&quot;btn-nav&quot;&gt;이전&lt;/button&gt; &lt;button id=&quot;next-btn&quot; class=&quot;btn-nav primary&quot;&gt;시작하기&lt;/button&gt;&lt;/footer&gt;&lt;/div&gt;
&lt;script&gt; 
// --- 1. Data Structure --- 
const studyData = [ 
{ 
id: 1, 
eng: &quot;Change happens slowly over time.&quot;, 
kor: &quot;변화는 시간이 지남에 따라 천천히 일어난다.&quot;, 
chunks: [ 
{ en: &quot;Change(S)&quot;, ko: &quot;변화는&quot; }, 
{ en: &quot;happens(V)&quot;, ko: &quot;일어난다&quot; }, 
{ en: &quot;slowly(adv)&quot;, ko: &quot;천천히&quot; }, 
{ en: &quot;over time(adv)&quot;, ko: &quot;시간이 지남에 따라&quot; } 
], 
structure: &quot;주어(Change) + 자동사(happens) + 부사(slowly) + 전치사구(over time)&quot; 
}, 
{ 
id: 2, 
eng: &quot;Great ideas come from curiosity.&quot;, 
kor: &quot;위대한 아이디어는 호기심에서 나온다.&quot;, 
chunks: [ 
{ en: &quot;Great ideas(S)&quot;, ko: &quot;위대한 아이디어는&quot; }, 
{ en: &quot;come(V)&quot;, ko: &quot;나온다&quot; }, 
{ en: &quot;from curiosity(adv)&quot;, ko: &quot;호기심에서&quot; } 
], 
structure: &quot;주어(Great ideas) + 동사(come) + 전치사구(from curiosity)&quot; 
}, 
{ 
id: 3, 
eng: &quot;Your age doesn't matter in learning.&quot;, 
kor: &quot;배움에 있어서 나이는 중요하지 않다.&quot;, 
chunks: [ 
{ en: &quot;Your age(S)&quot;, ko: &quot;나이는&quot; }, 
{ en: &quot;doesn't matter(V)&quot;, ko: &quot;중요하지 않다&quot; }, 
{ en: &quot;in learning(adv)&quot;, ko: &quot;배움에 있어서&quot; } 
], 
structure: &quot;주어(Your age) + 동사(doesn't matter) + 전치사구(in learning)&quot; 
}, 
{ 
id: 4, 
eng: &quot;This medicine works effectively for headaches.&quot;, 
kor: &quot;이 약은 두통에 효과가 있다.&quot;, 
chunks: [ 
{ en: &quot;This medicine(S)&quot;, ko: &quot;이 약은&quot; }, 
{ en: &quot;works(V)&quot;, ko: &quot;효과가 있다&quot; }, 
{ en: &quot;effectively(adv)&quot;, ko: &quot;효과적으로&quot; }, 
{ en: &quot;for headaches(adv)&quot;, ko: &quot;두통에&quot; } 
], 
structure: &quot;주어(This medicine) + 동사(works) + 부사(effectively) + 전치사구(for headaches)&quot; 
}, 
{ 
id: 5, 
eng: &quot;Hard work pays in the long run.&quot;, 
kor: &quot;노력은 결국에는 보상받는다.&quot;, 
chunks: [ 
{ en: &quot;Hard work(S)&quot;, ko: &quot;노력은&quot; }, 
{ en: &quot;pays(V)&quot;, ko: &quot;보상받는다&quot; }, 
{ en: &quot;in the long run(adv)&quot;, ko: &quot;결국에는&quot; } 
], 
structure: &quot;주어(Hard work) + 동사(pays) + 관용구(in the long run)&quot; 
}, 
{ 
id: 6, 
eng: &quot;Every second counts in an emergency.&quot;, 
kor: &quot;비상 상황에서는 1분 1초가 중요하다.&quot;, 
chunks: [ 
{ en: &quot;Every second(S)&quot;, ko: &quot;1분 1초가&quot; }, 
{ en: &quot;counts(V)&quot;, ko: &quot;중요하다&quot; }, 
{ en: &quot;in an emergency(adv)&quot;, ko: &quot;비상 상황에서는&quot; } 
], 
structure: &quot;주어(Every second) + 동사(counts) + 전치사구(in an emergency)&quot; 
}, 
{ 
id: 7, 
eng: &quot;A simple apology will do for him.&quot;, 
kor: &quot;그에게는 간단한 사과면 충분할 것이다.&quot;, 
chunks: [ 
{ en: &quot;A simple apology(S)&quot;, ko: &quot;간단한 사과는&quot; }, 
{ en: &quot;will do(V)&quot;, ko: &quot;충분할 것이다&quot; }, 
{ en: &quot;for him(adv)&quot;, ko: &quot;그에게&quot; } 
], 
structure: &quot;주어(A simple apology) + 동사(will do) + 전치사구(for him)&quot; 
}, 
{ 
id: 8, 
eng: &quot;The silence lasted for a moment.&quot;, 
kor: &quot;침묵이 잠시 동안 지속되었다.&quot;, 
chunks: [ 
{ en: &quot;The silence(S)&quot;, ko: &quot;침묵이&quot; }, 
{ en: &quot;lasted(V)&quot;, ko: &quot;지속되었다&quot; }, 
{ en: &quot;for a moment(adv)&quot;, ko: &quot;잠시 동안&quot; } 
], 
structure: &quot;주어(The silence) + 동사(lasted) + 시간 부사구(for a moment)&quot; 
}, 
{ 
id: 9, 
eng: &quot;We live in a digital age.&quot;, 
kor: &quot;우리는 디지털 시대에 살고 있다.&quot;, 
chunks: [ 
{ en: &quot;We(S)&quot;, ko: &quot;우리는&quot; }, 
{ en: &quot;live(V)&quot;, ko: &quot;살고 있다&quot; }, 
{ en: &quot;in a digital age(adv)&quot;, ko: &quot;디지털 시대에&quot; } 
], 
structure: &quot;주어(We) + 동사(live) + 장소/시간 부사구(in a digital age)&quot; 
}, 
{ 
id: 10, 
eng: &quot;Mistakes occur due to carelessness.&quot;, 
kor: &quot;실수는 부주의로 인해 발생한다.&quot;, 
chunks: [ 
{ en: &quot;Mistakes(S)&quot;, ko: &quot;실수는&quot; }, 
{ en: &quot;occur(V)&quot;, ko: &quot;발생한다&quot; }, 
{ en: &quot;due to carelessness(adv)&quot;, ko: &quot;부주의로 인해&quot; } 
], 
structure: &quot;주어(Mistakes) + 동사(occur) + 전치사구(due to carelessness)&quot; 
} 
]; 

// --- 2. State Management --- 
let slides = []; 
let currentIndex = 0; 
let isTTSPlaying = false; 

// --- 3. DOM Elements --- 
const track = document.getElementById('slide-track'); 
const prevBtn = document.getElementById('prev-btn'); 
const nextBtn = document.getElementById('next-btn'); 
const stepBadge = document.getElementById('step-badge'); 
const progressBar = document.getElementById('progress-bar'); 

// --- 4. Initialization --- 
function init() { 
buildSlides(); 
renderSlides(); 
updateView(); 
setupGlobalEvents(); 
} 

function buildSlides() { 
// 1. Intro Slide 
slides.push({ type: 'intro' }); 

// 2. Study &amp; Quiz Pair 
studyData.forEach((item, idx) =&gt; { 
slides.push({ type: 'study', data: item, index: idx + 1 }); 
slides.push({ type: 'quiz', data: item, index: idx + 1 }); 
}); 

// 3. Outro Slide 
slides.push({ type: 'outro' }); 
} 

function renderSlides() { 
track.innerHTML = ''; 
slides.forEach((slide, i) =&gt; { 
const el = document.createElement('div'); 
el.className = 'slide'; 
el.dataset.index = i; 

if (slide.type === 'intro') { 
el.innerHTML = ` 
&lt;div class=&quot;intro-container&quot;&gt; 
&lt;div class=&quot;emoji-icon&quot;&gt; &lt;/div&gt; 
&lt;div class=&quot;section-title&quot;&gt;1형식 문장 마스터&lt;/div&gt; 
&lt;div class=&quot;section-subtitle&quot;&gt;핵심 동사의 의미와 구조를&lt;br&gt;완벽하게 익혀보세요.&lt;/div&gt; 
&lt;/div&gt; 
`; 
} else if (slide.type === 'study') { 
const { eng, kor, chunks, structure } = slide.data; 
el.innerHTML = ` 
&lt;!-- Badge Removed --&gt; 
&lt;div class=&quot;card&quot;&gt; 
&lt;div class=&quot;eng-text&quot;&gt; 
${highlightKeywords(eng)} 
&lt;button class=&quot;audio-btn&quot; onclick=&quot;playTTS('${escapeText(eng)}')&quot;&gt; 
&lt;svg width=&quot;20&quot; height=&quot;20&quot; viewBox=&quot;0 0 24 24&quot; fill=&quot;currentColor&quot;&gt;&lt;path d=&quot;M3 9v6h4l5 5V4L7 9H3zm13.5 3c0-1.77-1.02-3.29-2.5-4.03v8.05c1.48-.73 2.5-2.25 2.5-4.02z&quot;/&gt;&lt;/svg&gt; 
&lt;/button&gt; 
&lt;/div&gt; 
&lt;div class=&quot;kor-text&quot;&gt;${kor}&lt;/div&gt; 

&lt;div class=&quot;analysis-box&quot;&gt; 
&lt;span class=&quot;analysis-label&quot;&gt;직독직해&lt;/span&gt; 
&lt;div class=&quot;chunk-container&quot;&gt;${formatChunks(chunks)}&lt;/div&gt; 
&lt;/div&gt; 

&lt;div class=&quot;analysis-box&quot;&gt; 
&lt;span class=&quot;analysis-label&quot;&gt;구문 분석&lt;/span&gt; 
&lt;div class=&quot;analysis-content&quot;&gt;${structure}&lt;/div&gt; 
&lt;/div&gt; 
&lt;/div&gt; 
`; 
} else if (slide.type === 'quiz') { 
const { eng, kor } = slide.data; 
const words = eng.split(' ').sort(() =&gt; Math.random() - 0.5); 
el.innerHTML = ` 
&lt;!-- Badge Removed --&gt; 
&lt;div class=&quot;section-title&quot; style=&quot;font-size:18px;&quot;&gt;문장을 완성하세요&lt;/div&gt; 
&lt;div class=&quot;kor-text&quot; style=&quot;margin-bottom:20px;&quot;&gt;&quot;${kor}&quot;&lt;/div&gt; 

&lt;div class=&quot;game-area&quot; id=&quot;game-${i}&quot;&gt; 
&lt;div class=&quot;feedback&quot; id=&quot;feedback-${i}&quot;&gt;&lt;/div&gt; 
&lt;div class=&quot;game-zone&quot; id=&quot;zone-${i}&quot; data-answer=&quot;${eng}&quot;&gt;&lt;/div&gt; 
&lt;div class=&quot;word-bank&quot; id=&quot;bank-${i}&quot;&gt; 
${words.map(w =&gt; `&lt;div class=&quot;word-chip&quot; draggable=&quot;true&quot;&gt;${w}&lt;/div&gt;`).join('')} 
&lt;/div&gt; 
&lt;/div&gt; 
`; 
} else if (slide.type === 'outro') { 
el.innerHTML = ` 
&lt;div class=&quot;intro-container&quot;&gt; 
&lt;div class=&quot;emoji-icon&quot;&gt; &lt;/div&gt; 
&lt;div class=&quot;section-title&quot;&gt;학습 완료!&lt;/div&gt; 
&lt;div class=&quot;section-subtitle&quot;&gt;오늘의 목표를 달성했습니다.&lt;br&gt;내일도 함께해요!&lt;/div&gt; 
&lt;/div&gt; 
`; 
} 
track.appendChild(el); 
}); 

// Initialize Drag &amp; Drop after rendering 
initDragAndDrop(); 
} 

// --- 5. Helper Functions --- 
function escapeText(text) { 
return text.replace(/'/g, &quot;\\'&quot;); 
} 

function highlightKeywords(text) { 
return text; 
} 

function formatChunks(chunks) { 
// chunks is now an array of objects {en, ko} 
if (!Array.isArray(chunks)) return &quot;&quot;; 
return chunks.map(chunk =&gt; ` 
&lt;div class=&quot;chunk-block&quot;&gt; 
&lt;span class=&quot;chunk-en&quot;&gt;${chunk.en}&lt;/span&gt; 
&lt;span class=&quot;chunk-ko&quot;&gt;${chunk.ko}&lt;/span&gt; 
&lt;/div&gt; 
`).join(''); 
} 

// --- 6. Navigation Logic --- 
function updateView() { 
// Slide Transition 
track.style.transform = `translateX(-${currentIndex * 100}%)`; 

// Opacity Logic 
document.querySelectorAll('.slide').forEach((s, i) =&gt; { 
s.classList.toggle('active', i === currentIndex); 
}); 

// Header &amp; Progress 
const progress = ((currentIndex) / (slides.length - 1)) * 100; 
progressBar.style.width = `${progress}%`; 

const currentSlide = slides[currentIndex]; 

if (currentSlide.type === 'intro') { 
stepBadge.innerText = 'Intro'; 
prevBtn.style.visibility = 'hidden'; 
nextBtn.innerText = '시작하기'; 
} else if (currentSlide.type === 'outro') { 
stepBadge.innerText = 'Finish'; 
prevBtn.style.visibility = 'visible'; 
nextBtn.innerText = '처음으로'; 
} else { 
// Changed badge to just show type (Study or Quiz) and progress count 
const typeText = currentSlide.type === 'study' ? '학습' : '퀴즈'; 
stepBadge.innerText = `${typeText} (${currentSlide.index}/${studyData.length})`; 

// Hide Prev button only on the very first slide (index 0) 
prevBtn.style.visibility = currentIndex === 0 ? 'hidden' : 'visible'; 
nextBtn.innerText = '다음'; 
} 
} 

function setupGlobalEvents() { 
prevBtn.addEventListener('click', () =&gt; { 
if (currentIndex &gt; 0) { 
currentIndex--; 
updateView(); 
} 
}); 

nextBtn.addEventListener('click', () =&gt; { 
if (currentIndex &lt; slides.length - 1) { 
currentIndex++; 
updateView(); 
} else { 
// Restart 
currentIndex = 0; 
// Reset games 
renderSlides(); 
updateView(); 
} 
}); 
} 

// --- 7. TTS System --- 
window.playTTS = function(text) { 
if ('speechSynthesis' in window) { 
window.speechSynthesis.cancel(); // Stop previous 
const u = new SpeechSynthesisUtterance(text); 
u.lang = 'en-US'; 
u.rate = 0.8; // 0.8x Speed 
window.speechSynthesis.speak(u); 
} else { 
alert(&quot;이 브라우저는 음성 합성을 지원하지 않습니다.&quot;); 
} 
}; 

// --- 8. Drag &amp; Drop + Click Logic (Unified) --- 
// Caret Element (The thin blue line) 
const caret = document.createElement('div'); 
caret.className = 'drop-caret'; 

// Drag State 
let draggedItem = null; 
let touchClone = null; // Ghost element for mobile 

function initDragAndDrop() { 
const chips = document.querySelectorAll('.word-chip'); 
const zones = document.querySelectorAll('.game-zone, .word-bank'); 

chips.forEach(chip =&gt; { 
// Desktop Drag 
chip.addEventListener('dragstart', handleDragStart); 
chip.addEventListener('dragend', handleDragEnd); 

// Mobile Touch 
chip.addEventListener('touchstart', handleTouchStart, {passive: false}); 
chip.addEventListener('touchmove', handleTouchMove, {passive: false}); 
chip.addEventListener('touchend', handleTouchEnd); 

// Click to Move (Accessability &amp; Convenience) 
chip.addEventListener('click', handleClickMove); 
}); 

zones.forEach(zone =&gt; { 
zone.addEventListener('dragover', handleDragOver); 
zone.addEventListener('drop', handleDrop); 
}); 
} 

// -- Click Logic -- 
function handleClickMove(e) { 
if (this.classList.contains('dragging')) return; // Ignore if dragging 

const chip = this; 
const currentContainer = chip.parentElement; 
const gameArea = chip.closest('.game-area'); 
const answerZone = gameArea.querySelector('.game-zone'); 
const bankZone = gameArea.querySelector('.word-bank'); 

// Toggle Zones 
if (currentContainer === bankZone) { 
answerZone.appendChild(chip); 
} else { 
bankZone.appendChild(chip); 
} 

checkAnswer(answerZone); 
} 

// -- Desktop Drag Logic -- 
function handleDragStart(e) { 
draggedItem = this; 
setTimeout(() =&gt; this.classList.add('dragging'), 0); 
e.dataTransfer.effectAllowed = 'move'; 
} 

function handleDragEnd(e) { 
this.classList.remove('dragging'); 

// If caret exists, move item to caret position 
if (caret.parentNode) { 
caret.parentNode.insertBefore(this, caret); 
caret.remove(); // Remove caret 
} 

const zone = this.closest('.game-area').querySelector('.game-zone'); 
checkAnswer(zone); 
draggedItem = null; 
} 

function handleDragOver(e) { 
e.preventDefault(); // Allow dropping 

const container = this; 

// Only allow drag over zones 
if (!container.classList.contains('game-zone') &amp;&amp; !container.classList.contains('word-bank')) return; 

const afterElement = getDragAfterElement(container, e.clientX); 

// Visual Indicator (Caret) Movement 
if (afterElement) { 
container.insertBefore(caret, afterElement); 
} else { 
container.appendChild(caret); 
} 
} 

function handleDrop(e) { 
e.preventDefault(); 
// Logic handled in dragEnd usually, but for safety: 
if (caret.parentNode) { 
caret.parentNode.insertBefore(draggedItem, caret); 
caret.remove(); 
} 
} 

// -- Mobile Touch Logic -- 
function handleTouchStart(e) { 
const touch = e.touches[0]; 
draggedItem = this; 

// Create Ghost (Visual Clone) 
touchClone = this.cloneNode(true); 
touchClone.classList.add('drag-ghost'); 
document.body.appendChild(touchClone); 

// Set initial position 
moveGhost(touch.clientX, touch.clientY); 

// Dim original 
this.classList.add('dragging'); 
} 

function handleTouchMove(e) { 
if (!draggedItem || !touchClone) return; 
e.preventDefault(); // Stop scrolling 

const touch = e.touches[0]; 
moveGhost(touch.clientX, touch.clientY); 

// Find element below finger 
// NOTE: Ghost has pointer-events: none, so we can see through it 
const elementBelow = document.elementFromPoint(touch.clientX, touch.clientY); 

if (!elementBelow) return; 

// Identify target container (Zone or Bank) 
const container = elementBelow.closest('.game-zone') || elementBelow.closest('.word-bank'); 

if (container) { 
const afterElement = getDragAfterElement(container, touch.clientX); 
if (afterElement) { 
container.insertBefore(caret, afterElement); 
} else { 
container.appendChild(caret); 
} 
} else { 
caret.remove(); 
} 
} 

function handleTouchEnd(e) { 
if (draggedItem) { 
draggedItem.classList.remove('dragging'); 

// Remove Ghost 
if (touchClone) { 
touchClone.remove(); 
touchClone = null; 
} 

// Move Real Item to Caret 
if (caret.parentNode) { 
caret.parentNode.insertBefore(draggedItem, caret); 
caret.remove(); 
} 

const zone = draggedItem.closest('.game-area').querySelector('.game-zone'); 
if (zone) checkAnswer(zone); 

draggedItem = null; 
} 
} 

function moveGhost(x, y) { 
if (touchClone) { 
// Center the ghost on finger 
const width = touchClone.offsetWidth; 
const height = touchClone.offsetHeight; 
touchClone.style.left = `${x - width / 2}px`; 
touchClone.style.top = `${y - height / 2 - 40}px`; // Slightly above finger 
} 
} 

// Helper: Find closest element to insert before 
function getDragAfterElement(container, x) { 
// Ignore dragging item AND the caret itself 
const draggableElements = [...container.querySelectorAll('.word-chip:not(.dragging)')]; 

return draggableElements.reduce((closest, child) =&gt; { 
const box = child.getBoundingClientRect(); 
// Check horizontal distance 
const offset = x - box.left - box.width / 2; 
if (offset &lt; 0 &amp;&amp; offset &gt; closest.offset) { 
return { offset: offset, element: child }; 
} else { 
return closest; 
} 
}, { offset: Number.NEGATIVE_INFINITY }).element; 
} 

// --- 9. Check Answer &amp; Feedback --- 
function checkAnswer(zone) { 
if (!zone) return; 
const gameArea = zone.closest('.game-area'); 
const feedback = gameArea.querySelector('.feedback'); 
const correctAnswer = zone.dataset.answer; 

// Get current sentence 
const currentSentence = [...zone.querySelectorAll('.word-chip')] 
.map(chip =&gt; chip.innerText).join(' '); 

// Reset State 
zone.classList.remove('correct', 'wrong'); 
feedback.className = 'feedback'; 
feedback.innerText = ''; 

if (currentSentence.length === 0) return; 

// Check if lengths match (user put all words in zone) 
const correctWordsCount = correctAnswer.split(' ').length; 
const currentWordsCount = currentSentence.split(' ').length; 

if (currentWordsCount === correctWordsCount) { 
if (currentSentence === correctAnswer) { 
// Correct! 
zone.classList.add('correct'); 
feedback.innerText = &quot;정답입니다!  &quot;; 
feedback.classList.add('show', 'success'); 

// Auto Play TTS 
playTTS(correctAnswer); 

// Disable interactions 
const chips = zone.querySelectorAll('.word-chip'); 
chips.forEach(c =&gt; { 
c.draggable = false; 
c.style.cursor = 'default'; 
// Remove listeners to prevent moving back 
c.replaceWith(c.cloneNode(true)); 
}); 

} else { 
// Wrong! 
zone.classList.add('wrong'); 
feedback.innerText = &quot;순서가 다릅니다. 다시 확인해보세요  &quot;; 
feedback.classList.add('show', 'error'); 

// Remove wrong class after animation 
setTimeout(() =&gt; { 
zone.classList.remove('wrong'); 
}, 500); 
} 
} 
} 

// Start 
document.addEventListener('DOMContentLoaded', init); 

&lt;/script&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;매일 10분 영어공부&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;더 많은 자료는:&amp;nbsp;&lt;a title=&quot;모강고등&quot; href=&quot;http://high.mogang.ac&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;http://high.mogang.ac&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1766077531887&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;모강 고등 - 고등학교 온라인 학습 플랫폼&quot; data-og-description=&quot;고등학교 1, 2, 3학년을 위한 온라인 학습 플랫폼. 모의고사&amp;middot;전국연합학력평가&amp;middot;내신 대비, 변형문제&amp;middot;유형별기출문제 콘텐츠 제공. 선생님께 1:1 쪽지 보내기, 선생님과 1:1 화상 클리닉으로 맞춤 &quot; data-og-host=&quot;high.mogang.ac&quot; data-og-source-url=&quot;http://high.mogang.ac&quot; data-og-url=&quot;https://high.mogang.ac/&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/bjSRjv/hyZP0LwV2r/a9kZJncCckWcSXtkXIkqgk/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630,https://scrap.kakaocdn.net/dn/cjGInQ/hyZPPDtMzA/7owBH7SnGFPixdMc293K5K/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630&quot;&gt;&lt;a href=&quot;http://high.mogang.ac&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;http://high.mogang.ac&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/bjSRjv/hyZP0LwV2r/a9kZJncCckWcSXtkXIkqgk/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630,https://scrap.kakaocdn.net/dn/cjGInQ/hyZPPDtMzA/7owBH7SnGFPixdMc293K5K/img.png?width=1200&amp;amp;height=630&amp;amp;face=0_0_1200_630');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;모강 고등 - 고등학교 온라인 학습 플랫폼&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;고등학교 1, 2, 3학년을 위한 온라인 학습 플랫폼. 모의고사&amp;middot;전국연합학력평가&amp;middot;내신 대비, 변형문제&amp;middot;유형별기출문제 콘텐츠 제공. 선생님께 1:1 쪽지 보내기, 선생님과 1:1 화상 클리닉으로 맞춤&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;high.mogang.ac&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-path-to-node=&quot;12&quot; data-ke-size=&quot;size23&quot;&gt;[학습 포인트 요약]&lt;/h3&gt;
&lt;p data-path-to-node=&quot;13&quot; data-ke-size=&quot;size16&quot;&gt;오늘 퀴즈에 나온 핵심 단어들을 다시 한번 복습해 보세요!&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;14&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;14,0,0&quot;&gt;count:&lt;/b&gt; 세다(X) &amp;rarr; 중요하다(O)&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;14,1,0&quot;&gt;do:&lt;/b&gt; 하다(X) &amp;rarr; 충분하다(O)&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;14,2,0&quot;&gt;matter:&lt;/b&gt; 문제(X) &amp;rarr; 중요하다(O)&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;14,3,0&quot;&gt;work:&lt;/b&gt; 일하다(X) &amp;rarr; 효과가 있다(O)&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;14,4,0&quot;&gt;pay:&lt;/b&gt; 지불하다(X) &amp;rarr; 이익이 되다/보상받다(O)&lt;/li&gt;
&lt;/ul&gt;</description>
      <category>Notice</category>
      <category>고등학교영어</category>
      <category>구문독해</category>
      <category>기초영어</category>
      <category>내신대비</category>
      <category>모의고사</category>
      <category>영작연습</category>
      <category>예비고1</category>
      <category>예비고2</category>
      <category>예비고3</category>
      <author>hursome</author>
      <guid isPermaLink="true">https://hursome.tistory.com/79</guid>
      <comments>https://hursome.tistory.com/79#entry79comment</comments>
      <pubDate>Fri, 19 Dec 2025 01:56:35 +0900</pubDate>
    </item>
    <item>
      <title>아직도 계획만 세우나요? '노베이스'도 한눈에 보이는 공부 습관 만들기!</title>
      <link>https://hursome.tistory.com/78</link>
      <description>&lt;p data-path-to-node=&quot;4&quot; data-ke-size=&quot;size16&quot;&gt;안녕하세요! 오늘 하루 공부, 얼마나 하셨나요?&lt;/p&gt;
&lt;p data-path-to-node=&quot;5&quot; data-ke-size=&quot;size16&quot;&gt;&quot;열심히 해야지!&quot; 마음은 먹었는데, 정작 얼마나 했는지, 진도는 어디까지 나갔는지 헷갈릴 때가 많죠. 특히 &lt;b&gt;기초가 부족한 '노베이스'&lt;/b&gt; 단계라면 더 막막할 수밖에 없습니다.&lt;/p&gt;
&lt;p data-path-to-node=&quot;6&quot; data-ke-size=&quot;size16&quot;&gt;오늘은 복잡한 플래너 없이도, &lt;b&gt;스마트폰 하나로 내 공부 상태를 완벽하게 관리하는 방법&lt;/b&gt;을 보여드릴게요.  &lt;/p&gt;
&lt;hr data-path-to-node=&quot;7&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h3 data-path-to-node=&quot;8&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;1. 내 공부량, 그래프로 '직관적'으로 확인!  &lt;/b&gt;&lt;/h3&gt;
&lt;p data-path-to-node=&quot;9&quot; data-ke-size=&quot;size16&quot;&gt;글로만 적힌 계획표는 이제 그만!  &amp;zwj;♂️&lt;/p&gt;
&lt;p data-path-to-node=&quot;10&quot; data-ke-size=&quot;size16&quot;&gt;앱을 켜자마자 &lt;b&gt;오늘의 목표 달성률&lt;/b&gt;이 직관적인 그래프로 보입니다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;11&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;일일 목표:&lt;/b&gt; 오늘 해야 할 분량 중 얼마나 했는지 (예: 3/5)&lt;/li&gt;
&lt;li&gt;&lt;b&gt;주간 목표:&lt;/b&gt; 이번 주 전체 흐름은 어떤지 (예: 3/10)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;dark_mode_ad.png&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1080&quot;&gt;&lt;a href=&quot;http://high.mogang.ac&quot; target=&quot;_blank&quot; title=&quot;모강고등&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bCpI7Z/dJMcacVVuQp/Y3hj07xGKny4UfmgykCRu0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbCpI7Z%2FdJMcacVVuQp%2FY3hj07xGKny4UfmgykCRu0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1080&quot; height=&quot;1080&quot; data-filename=&quot;dark_mode_ad.png&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;1080&quot;/&gt;&lt;/a&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-path-to-node=&quot;12&quot; data-ke-size=&quot;size16&quot;&gt;초록색 바가 채워지는 걸 보면서 &lt;b&gt;&quot;조금만 더 하면 끝이다!&quot;&lt;/b&gt; 라는 성취감을 느껴보세요. 눈에 보여야 의욕도 생기는 법이니까요!  &lt;/p&gt;
&lt;hr data-path-to-node=&quot;13&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h3 data-path-to-node=&quot;14&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;2. '노베이스' 탈출을 위한 꼼꼼한 커리큘럼  &lt;/b&gt;&lt;/h3&gt;
&lt;p data-path-to-node=&quot;15&quot; data-ke-size=&quot;size16&quot;&gt;영어 문법, 어디서부터 손대야 할지 모르겠다면? 걱정 마세요. &lt;b&gt;기초부터 차근차근&lt;/b&gt; 밟아나갈 수 있도록 로드맵이 짜여 있습니다.&lt;/p&gt;
&lt;p data-path-to-node=&quot;16&quot; data-ke-size=&quot;size16&quot;&gt;  &lt;b&gt;화면 속 리스트를 보세요!&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;17&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;품사와 문장성분 (✅ 완료!)&lt;/li&gt;
&lt;li&gt;문장의 형식&lt;/li&gt;
&lt;li&gt;be동사 / 일반동사&lt;/li&gt;
&lt;li&gt;시제 (현재/과거)&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-path-to-node=&quot;18&quot; data-ke-size=&quot;size16&quot;&gt;가장 기본이 되는 내용부터 하나씩 '도장 깨기' 하듯 클리어하다 보면, 어느새 '영어 노베이스' 꼬리표는 떼어져 있을 거예요.&lt;/p&gt;
&lt;hr data-path-to-node=&quot;19&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h3 data-path-to-node=&quot;20&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;3. 막힐 땐 바로바로! 1:1 클리닉  &lt;/b&gt;&lt;/h3&gt;
&lt;p data-path-to-node=&quot;21&quot; data-ke-size=&quot;size16&quot;&gt;혼자 공부하다가 모르는 문제가 나오면 꽉 막힌 기분 들잖아요. 그럴 땐 고민하지 말고 &lt;b&gt;[  1:1 클리닉 신청하기]&lt;/b&gt; 버튼을 눌러보세요.&lt;/p&gt;
&lt;p data-path-to-node=&quot;22&quot; data-ke-size=&quot;size16&quot;&gt;내가 푼 문제만 모아보는 오답 노트 기능까지 있어서, 빈틈없는 공부가 가능합니다.&lt;/p&gt;
&lt;hr data-path-to-node=&quot;23&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h3 data-path-to-node=&quot;24&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;  지금 바로 시작하세요!&lt;/b&gt;&lt;/h3&gt;
&lt;p data-path-to-node=&quot;25&quot; data-ke-size=&quot;size16&quot;&gt;공부는 '무작정' 하는 게 아니라, &lt;b&gt;'보이게'&lt;/b&gt; 하는 것입니다.&lt;/p&gt;
&lt;p data-path-to-node=&quot;26&quot; data-ke-size=&quot;size16&quot;&gt;오늘 끝내야 할 공부, 미루지 말고 그래프로 꽉 채워보세요! 여러분의 노베이스 탈출을 응원합니다.  &lt;/p&gt;
&lt;blockquote data-path-to-node=&quot;27&quot; data-ke-style=&quot;style1&quot;&gt;
&lt;p data-path-to-node=&quot;27,0&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;  더 자세히 알아보고 싶다면?&lt;/b&gt;&lt;/p&gt;
&lt;p data-path-to-node=&quot;27,1&quot; data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;http://high.mogang.ac&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;&lt;b&gt;[모강고등 바로가기 클릭]&lt;/b&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>Notice</category>
      <category>공부앱</category>
      <category>공부인증</category>
      <category>공부자극</category>
      <category>노베이스영어</category>
      <category>모강고등</category>
      <category>수험생필수앱</category>
      <author>hursome</author>
      <guid isPermaLink="true">https://hursome.tistory.com/78</guid>
      <comments>https://hursome.tistory.com/78#entry78comment</comments>
      <pubDate>Fri, 12 Dec 2025 16:00:31 +0900</pubDate>
    </item>
    <item>
      <title>  Meet Your New Obsession: Kokio Game</title>
      <link>https://hursome.tistory.com/77</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;  Learn Korean the Fun Way with &quot;Kokio&quot;! (꼬끼오!)&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-path-to-node=&quot;3&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Feeling bored? Waiting for the bus? Need a 5-minute break from work?&lt;/b&gt;&lt;/p&gt;
&lt;p data-path-to-node=&quot;4&quot; data-ke-size=&quot;size16&quot;&gt;Stop scrolling through social media and start playing &lt;b&gt;Kokio Game&lt;/b&gt;. It&amp;rsquo;s the simple, addictive web game that requires absolutely &lt;b&gt;no downloads&lt;/b&gt;.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;  What is Kokio Game?&lt;/h3&gt;
&lt;p data-path-to-node=&quot;7&quot; data-ke-size=&quot;size16&quot;&gt;Kokio is a daily &lt;b&gt;Korean word puzzle game&lt;/b&gt; inspired by the popular game Wordle, but uniquely adapted for the structure of the Korean writing system, Hangeul. The goal is simple: guess the daily target word within six tries.&lt;/p&gt;
&lt;p data-path-to-node=&quot;7&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-path-to-node=&quot;7&quot; data-ke-size=&quot;size16&quot;&gt;Instead of guessing a full word instantly, you submit guesses, and the game provides color-coded feedback based on the Hangeul components: &lt;br /&gt;&lt;br /&gt;&amp;nbsp;  Green: The character component is correct and in the correct position within the word.&lt;/p&gt;
&lt;p data-path-to-node=&quot;7&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;  Yellow: The character component is included in the final word, but it is in the wrong position. &lt;br /&gt;&amp;nbsp;  Orange: The character component is included in the final word, but it is not included in that specific syllable block.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;381&quot; data-origin-height=&quot;460&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/btdnmc/dJMcagKJ8o4/ezYKFkaWFTVrNYxd9K21k0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/btdnmc/dJMcagKJ8o4/ezYKFkaWFTVrNYxd9K21k0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/btdnmc/dJMcagKJ8o4/ezYKFkaWFTVrNYxd9K21k0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbtdnmc%2FdJMcagKJ8o4%2FezYKFkaWFTVrNYxd9K21k0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;381&quot; height=&quot;460&quot; data-origin-width=&quot;381&quot; data-origin-height=&quot;460&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-path-to-node=&quot;7&quot; data-ke-size=&quot;size16&quot;&gt;This ingenious feedback system helps players not only memorize words but also deeply understand the structure and composition of Hangeul syllables.&lt;/p&gt;
&lt;p data-path-to-node=&quot;7&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;  Key Features for Korean Learners&lt;/h2&gt;
&lt;p data-path-to-node=&quot;11&quot; data-ke-size=&quot;size16&quot;&gt;Kokio goes beyond a simple word game by incorporating features designed specifically to boost your Korean learning journey:&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;1. &lt;b&gt;Gamified Level System&lt;/b&gt;&lt;/h3&gt;
&lt;p data-path-to-node=&quot;13&quot; data-ke-size=&quot;size16&quot;&gt;The game uses fun, chicken-themed levels to track your progress, motivating you to keep playing and improving your vocabulary:&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-path-to-node=&quot;14&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;b&gt;Level Name (Korean)&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;&lt;b&gt;Level Name (English)&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;&lt;b&gt;Focus Level&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;14,1,0,0&quot;&gt;&lt;b&gt;  달걀&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;14,1,1,0&quot;&gt;Egg&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;14,1,2,0&quot;&gt;Beginner/Kindergarten (A1)&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;14,2,0,0&quot;&gt;&lt;b&gt;  병아리&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;14,2,1,0&quot;&gt;Chick&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;14,2,2,0&quot;&gt;Elementary School (A2)&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;14,3,0,0&quot;&gt;&lt;b&gt;  닭&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;14,3,1,0&quot;&gt;Chicken&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;14,3,2,0&quot;&gt;Middle School (B1~B2)&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;14,4,0,0&quot;&gt;&lt;b&gt;  공룡&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;14,4,1,0&quot;&gt;Dinosaur&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;&lt;span data-path-to-node=&quot;14,4,2,0&quot;&gt;High School (C1~C2)&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;2. &lt;b&gt;Earn and Use Gems ( )&lt;/b&gt;&lt;/h3&gt;
&lt;p data-path-to-node=&quot;16&quot; data-ke-size=&quot;size16&quot;&gt;As you successfully solve puzzles, you earn &lt;b&gt;Gems (보석)&lt;/b&gt;. These can be spent within the game to:&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;17&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;Unlock New Levels:&lt;/b&gt; Purchase access to more challenging word categories.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Post on the Bulletin Board:&lt;/b&gt; Interact with the community.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Vocaublary Book:&amp;nbsp;&lt;/b&gt;Review the words.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;3. &lt;b&gt;My Personal Vocabulary Book ( )&lt;/b&gt;&lt;/h3&gt;
&lt;p data-path-to-node=&quot;19&quot; data-ke-size=&quot;size16&quot;&gt;Every word you solve can be added to your personal &lt;b&gt;Vocabulary Book (나의 단어장)&lt;/b&gt;. This feature allows you to:&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;20&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Review the words you've learned.&lt;/li&gt;
&lt;li&gt;Create and manage custom word lists to target specific areas of study.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;389&quot; data-origin-height=&quot;521&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/oaqrI/dJMcabo70M4/kXT1Tnf9TRzuh6xYCjqLn1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/oaqrI/dJMcabo70M4/kXT1Tnf9TRzuh6xYCjqLn1/img.png&quot; data-alt=&quot;After you solve the puzzle, you can add the word to the vocabulary book.&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/oaqrI/dJMcabo70M4/kXT1Tnf9TRzuh6xYCjqLn1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FoaqrI%2FdJMcabo70M4%2FkXT1Tnf9TRzuh6xYCjqLn1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;389&quot; height=&quot;521&quot; data-origin-width=&quot;389&quot; data-origin-height=&quot;521&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;After you solve the puzzle, you can add the word to the vocabulary book.&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;426&quot; data-origin-height=&quot;469&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bCeyPa/dJMcaaRixlC/iGuJNV9P5yaIHKTNEusolk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bCeyPa/dJMcaaRixlC/iGuJNV9P5yaIHKTNEusolk/img.png&quot; data-alt=&quot;Vocabulary Book Test&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bCeyPa/dJMcaaRixlC/iGuJNV9P5yaIHKTNEusolk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbCeyPa%2FdJMcaaRixlC%2FiGuJNV9P5yaIHKTNEusolk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;426&quot; height=&quot;469&quot; data-origin-width=&quot;426&quot; data-origin-height=&quot;469&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;Vocabulary Book Test&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;4. &lt;b&gt;Practical Practice Tools&lt;/b&gt;&lt;/h3&gt;
&lt;p data-path-to-node=&quot;22&quot; data-ke-size=&quot;size16&quot;&gt;Kokio includes useful tools to integrate learning into real life:&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;23&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;Korean Speaking Practice ( ️):&lt;/b&gt; You can have 1:1 lessons, or you can find a language exchange partner through the community post&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Monthly Ranking ( ):&lt;/b&gt; Compete with other learners worldwide and track your progress on the leaderboard.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr data-path-to-node=&quot;24&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;  Why You Should Play Kokio&lt;/h2&gt;
&lt;p data-path-to-node=&quot;26&quot; data-ke-size=&quot;size16&quot;&gt;For anyone learning Korean, Kokio offers a perfect blend of challenge, fun, and genuine linguistic practice. It&amp;rsquo;s an effective way to &lt;b&gt;boost your vocabulary retention, solidify your understanding of Hangeul construction, and keep you engaged&lt;/b&gt; with your daily study routine.&lt;/p&gt;
&lt;p data-path-to-node=&quot;27&quot; data-ke-size=&quot;size16&quot;&gt;Ready to test your Korean skills? Hop on over to &lt;b&gt;Kokio&lt;/b&gt; and start your daily word challenge today!&lt;/p&gt;
&lt;p data-path-to-node=&quot;27&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;  Play Now&lt;/h3&gt;
&lt;p data-path-to-node=&quot;13&quot; data-ke-size=&quot;size16&quot;&gt;Ready to challenge your friends? Click the link below to jump in:&lt;/p&gt;
&lt;p data-path-to-node=&quot;14&quot; data-ke-size=&quot;size16&quot;&gt;  &lt;b&gt;&lt;a href=&quot;https://kokio.mogang.ac&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Play Kokio Game Here&lt;/a&gt;&lt;/b&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1764593072679&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;  꼬끼오~! | 한글 단어 게임&quot; data-og-description=&quot;재미있게 한글을 배우고 한국어 단어를 공부하는 게임입니다.&quot; data-og-host=&quot;kokio-game.web.app&quot; data-og-source-url=&quot;https://kokio-game.web.app/&quot; data-og-url=&quot;https://kokio-game.web.app/&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/qLrwQ/hyZOGfw1Z2/mHIErYS1IF5U0Y8u4KkMCk/img.png?width=2048&amp;amp;height=2048&amp;amp;face=0_0_2048_2048,https://scrap.kakaocdn.net/dn/dfuioV/hyZOS77S1d/gLaWMdBwqqr6kJqkt7uWt1/img.png?width=2048&amp;amp;height=2048&amp;amp;face=0_0_2048_2048&quot;&gt;&lt;a href=&quot;https://kokio-game.web.app/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://kokio-game.web.app/&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/qLrwQ/hyZOGfw1Z2/mHIErYS1IF5U0Y8u4KkMCk/img.png?width=2048&amp;amp;height=2048&amp;amp;face=0_0_2048_2048,https://scrap.kakaocdn.net/dn/dfuioV/hyZOS77S1d/gLaWMdBwqqr6kJqkt7uWt1/img.png?width=2048&amp;amp;height=2048&amp;amp;face=0_0_2048_2048');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;  꼬끼오~! | 한글 단어 게임&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;재미있게 한글을 배우고 한국어 단어를 공부하는 게임입니다.&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;kokio-game.web.app&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>Information</category>
      <category>comprehensibleinput</category>
      <category>koreanvocabpuzzle</category>
      <category>koreanwordle</category>
      <category>LearningKorean</category>
      <category>wordpuzzle</category>
      <author>hursome</author>
      <guid isPermaLink="true">https://hursome.tistory.com/77</guid>
      <comments>https://hursome.tistory.com/77#entry77comment</comments>
      <pubDate>Mon, 1 Dec 2025 21:44:56 +0900</pubDate>
    </item>
    <item>
      <title>26학년도 수능 영어 변형문제</title>
      <link>https://hursome.tistory.com/76</link>
      <description>&lt;ol style=&quot;list-style-type: decimal; background-color: #ffffff; color: #333333; text-align: left;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li style=&quot;list-style-type: inherit;&quot;&gt;&lt;span&gt;모강 회원가입, 허브 충전&lt;/span&gt;&lt;/li&gt;
&lt;li style=&quot;list-style-type: inherit;&quot;&gt;&lt;span&gt;변형문제 골라 담기&lt;/span&gt;&lt;span&gt;&lt;b&gt;(필터, 검색 사용),&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;span&gt;구매하기&lt;/span&gt;&lt;/li&gt;
&lt;li style=&quot;list-style-type: inherit;&quot;&gt;&lt;span&gt;우&lt;/span&gt;&lt;span&gt;측상단 아이디 클릭&lt;/span&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;b&gt;- 내 변형문제 이동&lt;/b&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style=&quot;list-style-type: inherit;&quot;&gt;&lt;span&gt;&lt;b&gt;구매한 변형문제 선택 - 나만의 모의고사에 추가&lt;/b&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li style=&quot;list-style-type: inherit;&quot;&gt;&lt;span&gt;&lt;b&gt;나만의 모의고사 탭으로 이동 - 문제풀기&lt;/b&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://blog.naver.com/mogang25/224021206221&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt; 변형문제 구매 및 풀이방법 자세히 보기 &lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;&lt;a href=&quot;https://www.mogang.ac&quot;&gt;https://www.mogang.ac&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1764059819902&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;모강 - 온라인 교육 플랫폼&quot; data-og-description=&quot;모강은 온라인 교육을 위한 최고의 플랫폼입니다.&quot; data-og-host=&quot;www.mogang.ac&quot; data-og-source-url=&quot;https://www.mogang.ac&quot; data-og-url=&quot;https://mogang.ac&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/LIY37/hyZObg6nuP/dtTGUunJ0bE5OgbK4p10J0/img.png?width=512&amp;amp;height=512&amp;amp;face=0_0_512_512,https://scrap.kakaocdn.net/dn/XKi0g/hyZOtNY5lh/9nRIRfLH8eUSpnNUaitEvK/img.png?width=512&amp;amp;height=512&amp;amp;face=0_0_512_512&quot;&gt;&lt;a href=&quot;https://www.mogang.ac&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://www.mogang.ac&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/LIY37/hyZObg6nuP/dtTGUunJ0bE5OgbK4p10J0/img.png?width=512&amp;amp;height=512&amp;amp;face=0_0_512_512,https://scrap.kakaocdn.net/dn/XKi0g/hyZOtNY5lh/9nRIRfLH8eUSpnNUaitEvK/img.png?width=512&amp;amp;height=512&amp;amp;face=0_0_512_512');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;모강 - 온라인 교육 플랫폼&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;모강은 온라인 교육을 위한 최고의 플랫폼입니다.&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;www.mogang.ac&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>Notice</category>
      <category>고등내신</category>
      <category>변형문제</category>
      <category>수능영어</category>
      <author>hursome</author>
      <guid isPermaLink="true">https://hursome.tistory.com/76</guid>
      <comments>https://hursome.tistory.com/76#entry76comment</comments>
      <pubDate>Tue, 25 Nov 2025 17:37:20 +0900</pubDate>
    </item>
    <item>
      <title>노베용 영문법 무료교재 pdf 배포</title>
      <link>https://hursome.tistory.com/74</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://www.mogang.ac&quot;&gt;https://www.mogang.ac&lt;/a&gt; 에서 무료 강의도 들을 수 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;fileblock&quot; data-ke-align=&quot;alignCenter&quot;&gt;&lt;a href=&quot;https://blog.kakaocdn.net/dn/chIdYh/dJMcacuLxBe/lSPR9AitZ80Vtk6aLXlWfk/Hursome%20Grammar%201.pdf?attach=1&amp;amp;knm=tfile.pdf&quot; class=&quot;&quot;&gt;
    &lt;div class=&quot;image&quot;&gt;&lt;/div&gt;
    &lt;div class=&quot;desc&quot;&gt;&lt;div class=&quot;filename&quot;&gt;&lt;span class=&quot;name&quot;&gt;Hursome Grammar 1.pdf&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;size&quot;&gt;3.80MB&lt;/div&gt;
&lt;/div&gt;
  &lt;/a&gt;&lt;/figure&gt;
&lt;/p&gt;</description>
      <category>Notice</category>
      <author>hursome</author>
      <guid isPermaLink="true">https://hursome.tistory.com/74</guid>
      <comments>https://hursome.tistory.com/74#entry74comment</comments>
      <pubDate>Mon, 24 Nov 2025 16:18:48 +0900</pubDate>
    </item>
    <item>
      <title>2025. 11. 11.</title>
      <link>https://hursome.tistory.com/73</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;This is your captain speaking&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;사랑하는 나의 아들, 딸들아&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;수능은 너희가 걸어온 긴 여정의 마침표 중 하나일 뿐, 인생 전체를 규정하는 잣대가 아니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그러니 시험 당일, 모든 것을 후회 없이 쏟아내고 나면 되는 것이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;결과가 어떻든, 포기하지 않고 끝까지 달려온 그 치열했던 과정만으로도 너희들은 이미 최고다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그래서 나는 너희들이 자랑스럽다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;내가 비추어 준 길을 걸어온 너희가&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이젠 스스로 빛이 되어 길을 걸을 때이다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;너희의 빛을, 가장 뜨거운 마음으로 응원한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>Non-Fiction</category>
      <author>hursome</author>
      <guid isPermaLink="true">https://hursome.tistory.com/73</guid>
      <comments>https://hursome.tistory.com/73#entry73comment</comments>
      <pubDate>Tue, 11 Nov 2025 00:00:01 +0900</pubDate>
    </item>
    <item>
      <title>Eating in Busan with IBS</title>
      <link>https://hursome.tistory.com/72</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;Dreaming of a trip to Busan? The vibrant markets, beautiful beaches, and, of course, the delicious food are all waiting for you. But if you have Irritable Bowel Syndrome (IBS), the words &quot;delicious food&quot; might make you a little hesitant. A trip that should be full of joy shouldn't be overshadowed by worries about what you can eat.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;This guide is here to help you, a traveler with IBS, enjoy the diverse and exciting food scene of Busan to the fullest.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;FODMAP? A New Concept in Korea&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;If you have IBS, you've likely heard of the Low FODMAP diet. It&amp;rsquo;s a plan that helps reduce intestinal irritation by avoiding certain groups of carbohydrates. However, for most people in Korea, the concept of FODMAP is still unfamiliar. This can make it practically difficult to ask detailed questions at a restaurant about which FODMAP ingredients (like garlic, onions, or wheat) are in a dish, or to request they be removed.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Furthermore, Korean cuisine, especially in Busan, is often characterized by bold, spicy, and salty flavors, which can present an even greater challenge for travelers with IBS.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;The Secret Behind &quot;It's Not Spicy&quot;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;One of the most bewildering moments you might experience is when a restaurant owner assures you a dish isn't spicy, only for you to feel a fire ignite in your mouth after the first bite. Please know, this is never an attempt to deceive you.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Koreans, particularly people from Busan, are very accustomed to spicy food. They grow up eating kimchi and other spicy dishes, so their threshold for what they consider &quot;spicy&quot; is incredibly high. It&amp;rsquo;s crucial to remember that what is genuinely 'not spicy' to them can be quite painful for you. This is simply a cultural difference in taste perception, not ill intent.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;Safe Choices, But What About Adventure?&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Bibimbap and Gimbap can be relatively safe choices for travelers with IBS. They are primarily rice-based, and you can generally see the ingredients they contain. For bibimbap, you can ask for no gochujang (chili paste) or request to have just a tiny bit on the side.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;But you've come all the way to Busan! You can't just eat bibimbap and gimbap every day, right? Tasting new food is one of the greatest joys of traveling.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;Recommended Korean Dishes for IBS Travelers (with Warnings!)&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Keeping in mind that everyone's IBS sensitivity is different, here are a few dishes you might want to try. Please pay close attention to the potential triggers and tips for each menu.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;1. Clear Broth Soups (Seolleongtang, Gomtang)&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1200&quot; data-origin-height=&quot;900&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/0XUvW/btsQ9w1bVuY/EfiKbN28BU89K8wkX0A9VK/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/0XUvW/btsQ9w1bVuY/EfiKbN28BU89K8wkX0A9VK/img.jpg&quot; data-alt=&quot;Seoulleongtang&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/0XUvW/btsQ9w1bVuY/EfiKbN28BU89K8wkX0A9VK/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F0XUvW%2FbtsQ9w1bVuY%2FEfiKbN28BU89K8wkX0A9VK%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1200&quot; height=&quot;900&quot; data-origin-width=&quot;1200&quot; data-origin-height=&quot;900&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;Seoulleongtang&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;The Pros:&lt;/b&gt; This is a fantastic choice. The broth is made from long-simmered bones and meat without gochujang or chili powder, making it gentle and soothing. You can typically season it yourself with salt, pepper, and green onions.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;What to Watch Out For:&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;Green Onions (Pa):&lt;/b&gt; These are high in FODMAPs. It's safest to ask, &lt;b&gt;&quot;Pa bbae-juseyo&quot;&lt;/b&gt; (Please hold the green onions).&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Kimchi/Kkakdugi:&lt;/b&gt; These delicious side dishes are loaded with garlic, onion, and chili. It's best to avoid them and focus on the soup, meat, and rice.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;2. Korean BBQ (Samgyeopsal, Moksal) - ⚠️ High-Fat Warning!&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;650&quot; data-origin-height=&quot;433&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ck70mn/btsQ8XEY9HB/clZgFRmhOLLGLZH3Rp7GW0/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ck70mn/btsQ8XEY9HB/clZgFRmhOLLGLZH3Rp7GW0/img.jpg&quot; data-alt=&quot;Samgyepsal&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ck70mn/btsQ8XEY9HB/clZgFRmhOLLGLZH3Rp7GW0/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fck70mn%2FbtsQ8XEY9HB%2FclZgFRmhOLLGLZH3Rp7GW0%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;650&quot; height=&quot;433&quot; data-origin-width=&quot;650&quot; data-origin-height=&quot;433&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;Samgyepsal&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;The Pros:&lt;/b&gt; You control the cooking and seasoning, making it a very adaptable meal.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;  The Warning:&lt;/b&gt; &lt;b&gt;High-fat food is a major trigger for IBS&lt;/b&gt;, as it can overstimulate gut motility and cause pain or diarrhea. &lt;b&gt;Samgyeopsal (pork belly) is extremely fatty.&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Smarter Choices:&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Opt for &lt;b&gt;Moksal (pork neck)&lt;/b&gt;, which is a much leaner cut of pork.&lt;/li&gt;
&lt;li&gt;When you cook, use the provided scissors to &lt;b&gt;trim off any large pieces of visible fat&lt;/b&gt; before eating.&lt;/li&gt;
&lt;li&gt;Skip the garlic, onions, and dipping sauces (ssamjang). Enjoy your meat with safe vegetables like lettuce.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;3. Steamed Egg (Gyeran-jjim) - &lt;i&gt;Not&lt;/i&gt; a Boiled Egg!&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;800&quot; data-origin-height=&quot;544&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dq7eAj/btsQ8jokLn7/v47V9Izf91uqtqmlMEC4V0/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dq7eAj/btsQ8jokLn7/v47V9Izf91uqtqmlMEC4V0/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dq7eAj/btsQ8jokLn7/v47V9Izf91uqtqmlMEC4V0/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fdq7eAj%2FbtsQ8jokLn7%2Fv47V9Izf91uqtqmlMEC4V0%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;800&quot; height=&quot;544&quot; data-origin-width=&quot;800&quot; data-origin-height=&quot;544&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;The Pros:&lt;/b&gt; This is a perfect side dish for anyone with a sensitive gut. To be clear, &lt;b&gt;this is very different from a simple boiled egg.&lt;/b&gt; It's a savory, fluffy, and soft steamed egg custard, often cooked and served in its own small pot. It is low-fat, generally low-FODMAP, and very easy to digest.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;What to Watch Out For:&lt;/b&gt; Almost nothing. It's one of the safest and most soothing items you can order.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;4. Soy Sauce-Based Braised Chicken (Jjimdak)&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;618&quot; data-origin-height=&quot;442&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/es1U58/btsQ8wgjTI1/KfyuehJOUAOqNOQuU48Ke1/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/es1U58/btsQ8wgjTI1/KfyuehJOUAOqNOQuU48Ke1/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/es1U58/btsQ8wgjTI1/KfyuehJOUAOqNOQuU48Ke1/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fes1U58%2FbtsQ8wgjTI1%2FKfyuehJOUAOqNOQuU48Ke1%2Fimg.jpg&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;618&quot; height=&quot;442&quot; data-origin-width=&quot;618&quot; data-origin-height=&quot;442&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;The Pros:&lt;/b&gt; It uses a soy-sauce base, which is often less irritating than spicy gochujang-based stews.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;What to Watch Out For:&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;  Spiciness:&lt;/b&gt; Be careful! Even though the base is soy sauce, &lt;b&gt;many Jjimdak recipes include dried red chili peppers, making the dish very spicy.&lt;/b&gt; It is essential to ask, &lt;b&gt;&quot;An maep-ge hae-juseyo&quot;&lt;/b&gt; (Please make it not spicy).&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Fat Content:&lt;/b&gt; The dish can be oily depending on the cut of chicken used. Try to eat the lean meat and avoid the skin or visible fat.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;High-FODMAP Vegetables:&lt;/b&gt; It almost always contains onions and minced garlic.&amp;nbsp;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;When You Need a Helping Hand, Don't Hesitate&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Everyone has different trigger foods. A dish I recommend might be fine for one person but could be a problem for you. Navigating a menu in a foreign language, choosing a restaurant, and trying to explain your dietary needs can be stressful.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;If this process feels overwhelming, I recommend getting help from &lt;b&gt;FIT Assistant&lt;/b&gt;.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;The FIT Assistant is not a tour guide who sticks to a fixed schedule. It's more like a personal assistant who helps you enjoy the places you want to go and the things you want to do. For example, they can help you find restaurants that suit your dietary needs or assist you in accurately ordering the menu items you want.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Don't let worries about food diminish the joy of your trip. When you need help, reach out to the FIT Assistant.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Visit the FIT Assistant:&lt;/b&gt; &lt;a href=&quot;https://sites.google.com/mogang.ac/fit-assistant/home&quot;&gt;https://sites.google.com/mogang.ac/fit-assistant/home&lt;/a&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Busan is a truly wonderful city. With a bit of information, smart choices, and sometimes a little help, I hope you can fully enjoy the tastes and sights of Busan without any IBS-related worries.&lt;/p&gt;</description>
      <category>Information</category>
      <author>hursome</author>
      <guid isPermaLink="true">https://hursome.tistory.com/72</guid>
      <comments>https://hursome.tistory.com/72#entry72comment</comments>
      <pubDate>Tue, 14 Oct 2025 22:52:42 +0900</pubDate>
    </item>
    <item>
      <title>24,25년 10월 고1, 고2 모의고사 변형문제 업로드 완료</title>
      <link>https://hursome.tistory.com/71</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;2024년 10월 치뤄진 시험 뿐만 아니라&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2025년 10월 14일, 오늘 치뤄진 시험의 변형문제도 업로드 완료하였습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;모의고사당 18~40번 (25~28제외) 19지문 각 10문제씩 총 190문제&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;10문제씩 풀고 제출하면 자동채점되며 해설 볼 수 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;사교육을 받지 않는 학생들을 위해 만든 것이다 보니&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;문제를 pdf가 아닌 문제풀이 링크로 제공하는 점 선생님들의 양해 부탁드립니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아래 링크에서 필요한 모의고사로 이동 후 클래스룸으로 이동하시면 됩니다. (전부 무료)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a title=&quot;모강lite&quot; href=&quot;https://sites.google.com/mogang.ac/lite/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://sites.google.com/mogang.ac/lite/&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1760446506852&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;모강 Lite&quot; data-og-description=&quot;모강에게는 돈보다 학생이 우선입니다 모강은 &amp;quot;사는 지역과 소득에 관계 없는 교육 기회의 평등&amp;quot; 을 추구합니다 사교육 없이 내신1등급 모강 Lite가 시작합니다.&quot; data-og-host=&quot;sites.google.com&quot; data-og-source-url=&quot;https://sites.google.com/mogang.ac/lite/&quot; data-og-url=&quot;https://sites.google.com/mogang.ac/lite/&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/ltoa2/hyZLq41yre/k6GErBXtKejS0mNacnIHN1/img.png?width=869&amp;amp;height=334&amp;amp;face=0_0_869_334,https://scrap.kakaocdn.net/dn/bMkaGW/hyZKE4SXeJ/BdX986PfARV3TjRdvoNvgk/img.jpg?width=1280&amp;amp;height=968&amp;amp;face=446_508_548_620&quot;&gt;&lt;a href=&quot;https://sites.google.com/mogang.ac/lite/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://sites.google.com/mogang.ac/lite/&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/ltoa2/hyZLq41yre/k6GErBXtKejS0mNacnIHN1/img.png?width=869&amp;amp;height=334&amp;amp;face=0_0_869_334,https://scrap.kakaocdn.net/dn/bMkaGW/hyZKE4SXeJ/BdX986PfARV3TjRdvoNvgk/img.jpg?width=1280&amp;amp;height=968&amp;amp;face=446_508_548_620');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;모강 Lite&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;모강에게는 돈보다 학생이 우선입니다 모강은 &quot;사는 지역과 소득에 관계 없는 교육 기회의 평등&quot; 을 추구합니다 사교육 없이 내신1등급 모강 Lite가 시작합니다.&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;sites.google.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>Notice</category>
      <category>고등내신</category>
      <category>무료변형문제</category>
      <category>영어변형</category>
      <author>hursome</author>
      <guid isPermaLink="true">https://hursome.tistory.com/71</guid>
      <comments>https://hursome.tistory.com/71#entry71comment</comments>
      <pubDate>Tue, 14 Oct 2025 21:55:54 +0900</pubDate>
    </item>
  </channel>
</rss>