Awakener's Guide to Climbing the Tower

Chapter 8: Tutorial (4)

Had she somehow managed to catch the attention of the administrator or something?


From what she knew from the comics she used to read, towers were always governed by administrators or overseers so if this tower followed the same logic, then there was a high chance this tower would have one since it already has a guide, right?


What if the tower has a mind of its own? No administrators? No overseers?


[So you survived nya nya!]


Hearing the familiar voice, Misha immediately turned her head and glared at the floating cat-like creature nearby. "Of course I did! I’m not dying on Floor One!"


[This is the Basement Floor nya.]


"Whatever," she huffed.


[Right, right... Congratulations then nyauh...] King clapped his paws slowly, though his expression looked far less enthusiastic than his words suggested.


"That doesn’t sound like you mean it," she huffed as she crossed her arms.


[Anyway! It is time for you to choose your awakening skill n6a!]


"I already felt like I’ve awakened though..."


[This is why humans are dumb nya nya!]


Her brow twitched in annoyance. "I was just saying!"


The cat-like creature rolled his eyes dramatically before flicking its tails. [Anyway, stop wasting time and choose your awakening ability already nya!]


With a casual wave of his paw in the air, cards appeared before her.


Her eyes scanned them and saw that the cards were blank and identical to the others.


[Every card represents a unique awakening. From this point onward, your chosen awakening skill will serve as the bedrock of your growth nya. A second awakening cannot be obtained.]


"Eh? Only one? I thought we were supposed to gain more skills as we climbed the tower?"


King looked at her as though she had asked something obvious.


[The awakening skill you’ll pick will be your path. It’s not going to be collectible powers nya. Your growth direction becomes fixed once you’ve chosen. Just like this, you won’t gain new [Traits] either. [Traits] are reflections of qualities you already possess. The Tower only recognizes and enhances them nya nya.]


Learning that her [Traits] were innate, Misha couldn’t help but silently thank every difficult patient she encountered throughout her career. The entitled patients, spoiled children, and the endless documents she had to analyze while juggling multiple responsibilities, all of it had unknowingly shaped the [Traits] that carried her through the tutorial.


"Then I guess leveling up through the tower mostly comes down to gaining EXP and obtaining items? Is that correct?"


[Finally! You’re starting to understand nya! The Tower gives you tools. What you do with those tools is your responsibility. Give a legendary sword to an idiot and he’ll still find a way to die nya. Give a rusty dagger to the right person and they’ll climb farther than anyone expects nya nya.]


He stretched out the claws from his paws. [The Tower doesn’t do the climbing for you nya~]


Misha nodded slowly. With her questions answered, she shifted her gaze back to the floating cards. A quick count revealed exactly 21 cards suspended in the air.


Since every card looked identical, spending hours agonizing over the choice felt pointless since any decision would be nothing more than a guess so she went with the last card.


Stretching out her hand, Misha plucked it from the air. As her fingers brushed the card, an illustration gradually appeared.


A mysterious veiled woman occupied the center of the card. Resting in her hands was a silver bowl filled with stars that glittered like fireflies.


King leaned forward slightly just to take a peek on her card.


[Huh.] King sounded mildly impressed.


[Looks like fortune favors you nya nya.]


Before Misha could respond, the card began radiating light. Its physical form slowly broke apart into particles before condensing into a single ball of light. The sphere flew directly into her chest and vanished inside her body.


「 Congratulations! A Super Rare (SR) ability has been inherited! 」


「 Class Acquired: Soulbinder 」


「 Skill Unlocked: Microscopic Examination 」


「 Rank Promotion Complete! ☆ → ☆☆☆☆ 」


After the messages disappeared, Misha stood there expectantly.


A glow. A surge of power. Maybe even a dramatic gust of wind. But nothing happened, there was no dramatic aura, and no explosion of power.


She looked down at her dirty self. "Am I supposed to glow or something?"


King stared blankly at her, as though she had lost several brain cells. [Humans are not supposed to glow nya.]


"Now that’s incredibly underwhelming." She sighed in disappointment.


"System, show me my Status. And include the skill descriptions."


「 〔STATUS WINDOW〕


Tower Name: Misha Apocalypse


Name: Misha Reyes


Level: 2 (EXP: 100/150)


Rank: ☆☆☆☆


Class: Soulbinder


Affiliation: Tower of Hellfire



</p><br> <p>The One Acknowledged By the Tower</p><br> <p>Effect: Trait proficiency grows slightly faster during critical situations.</p><br> <p>—</p><br> <p><TRAITS></p><br> <p>Analytical Thinking (Lv. 3) • Improves threat analysis and pattern recognition. Slightly increases mental processing speed.</p><br> <p>Calm Under Pressure (Lv. 3) • Emotional disturbances are suppressed. Focus improves when facing pressure or danger.</p><br> <p>Sleep Deprivation Resistance (Lv. 2) • Moderately reduces drowsiness, mental fatigue and performance degradation caused by lack of sleep.</p><br> <p>Steady Hands (Lv.2) • Maintains stable hand movements under stress, fatigue, or pressure.</p><br> <p>—</p><br> <p><SKILLS></p><br> <p>Microscopic Examination (R)</p><br> <p>Description: A special analysis developed through repeated laboratory observation. Enhances the user’s visual perception, allowing them to observe abnormalities such as mana contamination, toxins, and parasites invisible to the naked eyes.</p><br> <p>Soul Inventory (SR)</p><br> <p>Description: Within every soul lies twelve empty thrones. Each chamber may house a Constellation Soul and grant unique benefits upon possession.</p><br> <p>Passive Effect: Detects nearby souls and displays their suitability for chamber occupancy. 」</p><br> <p>"Mmm..."</p><br> <p>She scanned the status window from top to bottom.</p><br> <p>"Wow." She paused. "That’s a lot of words just to tell me I’m still weak."</p><br> <p>King nearly fell over.</p><br> <p>"Anyway, I’d like to try using my new skill, Soul Inventory."</p><br> <p>Ding!</p><br> <p>「 〔 SOUL INVENTORY 〕</p><br> <p>Soul Storage Capacity (1/12)</p><br> <p>♈️ Aries: Vacant</p><br> <p>♉️ Taurus: Vacant</p><br> <p>♊️ Gemini: Vacant</p><br> <p>♋️ Cancer: Vacant</p><br> <p>♍️ Virgo: Vacant</p><br> <p>♎️ Libra: Vacant</p><br> <p>♏️ Scorpio: Vacant</p><br> <p>♐️ Sagittarius: Vacant</p><br> <p>♑️ Capricorn: Vacant</p><br> <p>♒️ Aquarius: Vacant</p><br> <p>♓️ Pisces: Vacant</p><br> <p>♌️ Leo: Occupied [LOCKED]</p><br> <p>—</p><br> <p>A Constellation Soul has been detected within the Leo Chamber.</p><br> <p>Benefits: UNAVAILABLE</p><br> <p>Unlock Conditions: UNKNOWN</p><br> <p>Further growth is required. 」</p> </div> <div class="reading-navi"> <div class="change-chapter"> <div class="change-page">Chapter 8 <i class="icofont-rounded-down"></i></div> <ul class="top"> <li class="novel-1-title"><a href="/novel/awakeners-guide-to-climbing-the-tower/chapter-40-bulwark-3/" title="Awakener's Guide to Climbing the Tower - Chapter 40">Chapter 40: Bulwark (3)</a></li> <li class="novel-1-title"><a href="/novel/awakeners-guide-to-climbing-the-tower/chapter-39-bulwark-2/" title="Awakener's Guide to Climbing the Tower - Chapter 39">Chapter 39: Bulwark (2)</a></li> <li class="novel-1-title"><a href="/novel/awakeners-guide-to-climbing-the-tower/chapter-38-bulwark-1/" title="Awakener's Guide to Climbing the Tower - Chapter 38">Chapter 38: Bulwark (1)</a></li> <li class="novel-1-title"><a href="/novel/awakeners-guide-to-climbing-the-tower/chapter-37-skyreach-4/" title="Awakener's Guide to Climbing the Tower - Chapter 37">Chapter 37: Skyreach (4)</a></li> <li class="novel-1-title"><a href="/novel/awakeners-guide-to-climbing-the-tower/chapter-36-skyreach-3/" title="Awakener's Guide to Climbing the Tower - Chapter 36">Chapter 36: Skyreach (3)</a></li> <li class="novel-1-title"><a href="/novel/awakeners-guide-to-climbing-the-tower/chapter-35-skyreach-2/" title="Awakener's Guide to Climbing the Tower - Chapter 35">Chapter 35: Skyreach (2)</a></li> <li class="novel-1-title"><a href="/novel/awakeners-guide-to-climbing-the-tower/chapter-34-skyreach-1/" title="Awakener's Guide to Climbing the Tower - Chapter 34">Chapter 34: Skyreach (1)</a></li> <li class="novel-1-title"><a href="/novel/awakeners-guide-to-climbing-the-tower/chapter-33-cleansing-3/" title="Awakener's Guide to Climbing the Tower - Chapter 33">Chapter 33: Cleansing (3)</a></li> <li class="novel-1-title"><a href="/novel/awakeners-guide-to-climbing-the-tower/chapter-32-cleansing-2/" title="Awakener's Guide to Climbing the Tower - Chapter 32">Chapter 32: Cleansing (2)</a></li> <li class="novel-1-title"><a href="/novel/awakeners-guide-to-climbing-the-tower/chapter-31-cleansing-1/" title="Awakener's Guide to Climbing the Tower - Chapter 31">Chapter 31: Cleansing (1)</a></li> <li class="novel-1-title"><a href="/novel/awakeners-guide-to-climbing-the-tower/chapter-30-death-maze-2/" title="Awakener's Guide to Climbing the Tower - Chapter 30">Chapter 30: Death Maze (2)</a></li> <li class="novel-1-title"><a href="/novel/awakeners-guide-to-climbing-the-tower/chapter-29-death-maze-1/" title="Awakener's Guide to Climbing the Tower - Chapter 29">Chapter 29: Death Maze (1)</a></li> <li class="novel-1-title"><a href="/novel/awakeners-guide-to-climbing-the-tower/chapter-28-olivia-bloodthorne-2/" title="Awakener's Guide to Climbing the Tower - Chapter 28">Chapter 28: Olivia Bloodthorne (2)</a></li> <li class="novel-1-title"><a href="/novel/awakeners-guide-to-climbing-the-tower/chapter-27-olivia-bloodthorne-1/" title="Awakener's Guide to Climbing the Tower - Chapter 27">Chapter 27: Olivia Bloodthorne (1)</a></li> <li class="novel-1-title"><a href="/novel/awakeners-guide-to-climbing-the-tower/chapter-26-possession-6/" title="Awakener's Guide to Climbing the Tower - Chapter 26">Chapter 26: Possession (6)</a></li> <li class="novel-1-title"><a href="/novel/awakeners-guide-to-climbing-the-tower/chapter-25-possession-5/" title="Awakener's Guide to Climbing the Tower - Chapter 25">Chapter 25: Possession (5)</a></li> <li class="novel-1-title"><a href="/novel/awakeners-guide-to-climbing-the-tower/chapter-24-possession-4/" title="Awakener's Guide to Climbing the Tower - Chapter 24">Chapter 24: Possession (4)</a></li> <li class="novel-1-title"><a href="/novel/awakeners-guide-to-climbing-the-tower/chapter-23-possession-3/" title="Awakener's Guide to Climbing the Tower - Chapter 23">Chapter 23: Possession (3)</a></li> <li class="novel-1-title"><a href="/novel/awakeners-guide-to-climbing-the-tower/chapter-22-possession-2/" title="Awakener's Guide to Climbing the Tower - Chapter 22">Chapter 22: Possession (2)</a></li> <li class="novel-1-title"><a href="/novel/awakeners-guide-to-climbing-the-tower/chapter-21-possession-1/" title="Awakener's Guide to Climbing the Tower - Chapter 21">Chapter 21: Possession (1)</a></li> <li class="novel-1-title"><a href="/novel/awakeners-guide-to-climbing-the-tower/chapter-20-ascending-5/" title="Awakener's Guide to Climbing the Tower - Chapter 20">Chapter 20: Ascending (5)</a></li> <li class="novel-1-title"><a href="/novel/awakeners-guide-to-climbing-the-tower/chapter-19-ascending-4/" title="Awakener's Guide to Climbing the Tower - Chapter 19">Chapter 19: Ascending (4)</a></li> <li class="novel-1-title"><a href="/novel/awakeners-guide-to-climbing-the-tower/chapter-18-ascending-3/" title="Awakener's Guide to Climbing the Tower - Chapter 18">Chapter 18: Ascending (3)</a></li> <li class="novel-1-title"><a href="/novel/awakeners-guide-to-climbing-the-tower/chapter-17-ascending-2/" title="Awakener's Guide to Climbing the Tower - Chapter 17">Chapter 17: Ascending (2)</a></li> <li class="novel-1-title"><a href="/novel/awakeners-guide-to-climbing-the-tower/chapter-16-ascending-1/" title="Awakener's Guide to Climbing the Tower - Chapter 16">Chapter 16: Ascending (1)</a></li> <li class="novel-1-title"><a href="/novel/awakeners-guide-to-climbing-the-tower/chapter-15-recruitment-2/" title="Awakener's Guide to Climbing the Tower - Chapter 15">Chapter 15: Recruitment (2)</a></li> <li class="novel-1-title"><a href="/novel/awakeners-guide-to-climbing-the-tower/chapter-14-recruitment-1/" title="Awakener's Guide to Climbing the Tower - Chapter 14">Chapter 14: Recruitment (1)</a></li> <li class="novel-1-title"><a href="/novel/awakeners-guide-to-climbing-the-tower/chapter-13-genesis-5/" title="Awakener's Guide to Climbing the Tower - Chapter 13">Chapter 13: Genesis (5)</a></li> <li class="novel-1-title"><a href="/novel/awakeners-guide-to-climbing-the-tower/chapter-12-genesis-4/" title="Awakener's Guide to Climbing the Tower - Chapter 12">Chapter 12: Genesis (4)</a></li> <li class="novel-1-title"><a href="/novel/awakeners-guide-to-climbing-the-tower/chapter-11-genesis-3/" title="Awakener's Guide to Climbing the Tower - Chapter 11">Chapter 11: Genesis (3)</a></li> <li class="novel-1-title"><a href="/novel/awakeners-guide-to-climbing-the-tower/chapter-10-genesis-2/" title="Awakener's Guide to Climbing the Tower - Chapter 10">Chapter 10: Genesis (2)</a></li> <li class="novel-1-title"><a href="/novel/awakeners-guide-to-climbing-the-tower/chapter-9-genesis-1/" title="Awakener's Guide to Climbing the Tower - Chapter 9">Chapter 9: Genesis (1)</a></li> <li class="novel-1-title"><a href="/novel/awakeners-guide-to-climbing-the-tower/chapter-8-tutorial-4/" title="Awakener's Guide to Climbing the Tower - Chapter 8">Chapter 8: Tutorial (4)</a></li> <li class="novel-1-title"><a href="/novel/awakeners-guide-to-climbing-the-tower/chapter-7-tutorial-3/" title="Awakener's Guide to Climbing the Tower - Chapter 7">Chapter 7: Tutorial (3)</a></li> <li class="novel-1-title"><a href="/novel/awakeners-guide-to-climbing-the-tower/chapter-6-tutorial-2/" title="Awakener's Guide to Climbing the Tower - Chapter 6">Chapter 6: Tutorial (2)</a></li> <li class="novel-1-title"><a href="/novel/awakeners-guide-to-climbing-the-tower/chapter-5-tutorial-1/" title="Awakener's Guide to Climbing the Tower - Chapter 5">Chapter 5: Tutorial (1)</a></li> <li class="novel-1-title"><a href="/novel/awakeners-guide-to-climbing-the-tower/chapter-4-the-invitation-4/" title="Awakener's Guide to Climbing the Tower - Chapter 4">Chapter 4: The Invitation (4)</a></li> <li class="novel-1-title"><a href="/novel/awakeners-guide-to-climbing-the-tower/chapter-3-the-invitation-3/" title="Awakener's Guide to Climbing the Tower - Chapter 3">Chapter 3: The Invitation (3)</a></li> <li class="novel-1-title"><a href="/novel/awakeners-guide-to-climbing-the-tower/chapter-2-the-invitation-2/" title="Awakener's Guide to Climbing the Tower - Chapter 2">Chapter 2: The Invitation (2)</a></li> <li class="novel-1-title"><a href="/novel/awakeners-guide-to-climbing-the-tower/chapter-1-the-invitation-1/" title="Awakener's Guide to Climbing the Tower - Chapter 1">Chapter 1: The Invitation (1)</a></li> </ul> </div> <div class="navi-change-chapter-btn"> <a class="navi-change-chapter-btn-prev a-h moghref" href="https://novelhere.me/novel/awakeners-guide-to-climbing-the-tower/chapter-7-tutorial-3/"> <i class="icofont-double-left"></i> PREV </a> <a class="navi-change-chapter-btn-next a-h moghref" href="https://novelhere.me/novel/awakeners-guide-to-climbing-the-tower/chapter-9-genesis-1/"> NEXT <i class="icofont-double-right"></i> </a> </div> </div> <div class="novel-comments chapter-comments"> <div class="section-header"> <h2><i class="icofont-speech-comments"></i> Comments</h2> </div> <div class="comment-form"> <div class="maincommentform"> <form id="mainForm" class="commentForm"> <input type="hidden" id="blog_id" name="blog_id" value="c485599"> <input type="hidden" id="parent_id" name="parent_id" value="0"> <p class="comment-form-comment"> <textarea id="content" name="content" cols="45" rows="4" required="required" placeholder="Comment" spellcheck="false"></textarea> </p> <p class="comment-form-author comment-form-input"> <input id="name" name="name" type="text" placeholder="Name (Required)" value="" size="30" maxlength="245" autocomplete="name" required="required"> </p> <p class="comment-form-email comment-form-input"> <input id="email" name="email" type="email" placeholder="Email (Required)" value="" size="30" maxlength="100" aria-describedby="email-notes" autocomplete="email"> </p> <div class="comment-result" style="display: none"></div> <p class="form-submit"> <input name="submit" type="submit" id="submit" class="submit" value="Post Comment"> </p> </form> </div> </div> <div class="list-comments"> <div id="comments" class="comment-list"> </div> </div> </div> </div> </main> <script type="text/javascript"> function isValidEmail(email) { return /^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(email); } function isValidUsername(username) { const usernameRegex = /^[\p{L}0-9\.\-_]+$/u; return usernameRegex.test(username.trim()); } $(document).ready(function () { $('.change-page').click(function () { if($(this).parent().find('ul').css('display') == 'none'){ $(this).parent().find('ul').css('display','block'); }else { $(this).parent().find('ul').css('display','none'); } }); $('.change-chapter ul').click(function () { $('.change-chapter ul').css('display','none'); }); const name = localStorage.getItem('comment_name'); const email = localStorage.getItem('comment_email'); if (name !== 'undefined' && name !== 'null') $('input[name="name"]').val(name); if (email !== 'undefined' && email !== 'null') $('input[name="email"]').val(email); $('#mainForm').on('submit', function (e) { e.preventDefault(); const name = $(this).find('input[name="name"]').val(); const email = $(this).find('input[name="email"]').val(); localStorage.setItem('comment_name', name); localStorage.setItem('comment_email', email); if(name){ if (!isValidUsername(name)) { alert('Usernames must contain only letters, numbers, periods, or underscores.'); return; } } if(email){ if (!isValidEmail(email)) { alert('Invalid email address.'); return; } } $.post('/api/comment/', $(this).serialize(), function (data) { if(data.validate){ if(data.refresh){ let newComment = ` <article id="div-comment-${data.content.id}" class="comment-body" style="padding-left: 0px;"> <div class="block block-left"> <div class="comment-avatar"> <span>${data.first_word}</span> </div> </div> <div class="block block-right"> <div class="comment-author"> <h5 class="heading fn">${data.content.user_name}</h5> <div class="reply"> <a rel="nofollow" class="comment-reply-link" href="#comment-${data.content.id}" data-commentuser="${data.content.user_name}" data-commentid="${data.content.id}" data-postid="${data.content.chapter_id}"><i class="icofont-reply"></i> Reply</a> </div> </div> <!--!comment-author--> <div class="comment-content"> <p>${data.comment_content}</p> </div> </div> </article> `; $('#comments').prepend(newComment); $('#mainForm textarea[name="content"]').val(''); }else{ messpasswd = '<p class="comment-message success">'+data.message+'</p>'; } }else{ messpasswd = '<p class="comment-message error">'+data.message+'</p>'; } $('.comment-result').html(messpasswd).show(); setTimeout(function() { $('.comment-result').hide(); }, 4000); }); }); $(document).on('submit', '.replyForm', function (e) { e.preventDefault(); const form = $(this); const name = $(this).find('input[name="name"]').val(); const email = $(this).find('input[name="email"]').val(); localStorage.setItem('comment_name', name); localStorage.setItem('comment_email', email); if(name){ if (!isValidUsername(name)) { alert('Usernames must contain only letters, numbers, periods, or underscores.'); return; } } if(email){ if (!isValidEmail(email)) { alert('Invalid email address.'); return; } } $.post('/api/comment/', form.serialize(), function (data) { if(data.validate){ if(data.refresh){ let newComment = ` <article id="div-comment-${data.content.id}" class="comment-body" style="padding-left: 20px;"> <div class="block block-left"> <div class="comment-avatar"> <span>${data.first_word}</span> </div> </div> <div class="block block-right"> <div class="comment-author"> <h5 class="heading fn">${data.content.user_name}</h5> <div class="reply"> <a rel="nofollow" class="comment-reply-link" href="#comment-${data.content.id}" data-commentuser="${data.content.user_name}" data-commentid="${data.content.id}" data-postid="${data.content.novel_id}"><i class="icofont-reply"></i> Reply</a> </div> </div> <!--!comment-author--> <div class="comment-content"> <p>${data.comment_content}</p> </div> </div> </article> `; $('#div-comment-'+data.content.parent_id).append(newComment); $('.replyBlock').remove(); $('.maincommentform').show(); }else{ messpasswd = '<p class="comment-message success">'+data.message+'</p>'; } }else{ messpasswd = '<p class="comment-message error">'+data.message+'</p>'; } $('.comment-result').html(messpasswd).show(); setTimeout(function() { $('.comment-result').hide(); }, 4000); $('.replyForm')[0].reset(); }); }); $('.comment-reply-link').click(function () { // e.preventDefault(); $('.replyBlock').remove(); $('.maincommentform').hide(); const commentId = this.dataset.commentid; const commentuser = this.dataset.commentuser; const target = document.getElementById('div-comment-' + commentId); if (target) { const replyFormHTML = ` <div class="replyBlock"> <h6 id="reply-title" class="comment-reply-title">Reply to `+commentuser+`</h6> <span class="cancel-reply"><i class="icofont-close"></i> Cancel Reply</span> <form class="commentForm replyForm"> <input type="hidden" id="blog_id" name="blog_id" value="c485599"> <input type="hidden" id="parent_id" name="parent_id" value="`+commentId+`"> <p class="comment-form-comment"> <textarea id="content" name="content" cols="45" rows="4" required="required" placeholder="Comment" spellcheck="false"></textarea> </p> <p class="comment-form-author comment-form-input"> <input id="name" name="name" placeholder="Name (Required)" type="text" value="" size="30" maxlength="245" autocomplete="name" required="required"> </p> <p class="comment-form-email comment-form-input"> <input id="email" name="email" type="email" placeholder="Email (Required)" value="" size="30" maxlength="100" aria-describedby="email-notes" autocomplete="email"> </p> <div class="comment-result" style="display: none"></div> <p class="form-submit"> <input name="submit" type="submit" id="submit" class="submit" value="Post Comment"> </p> </form> </div>`; target.insertAdjacentHTML('beforeend', replyFormHTML); const name = localStorage.getItem('comment_name'); const email = localStorage.getItem('comment_email'); if (name !== 'undefined' && name !== 'null') $('input[name="name"]').val(name); if (email !== 'undefined' && email !== 'null') $('input[name="email"]').val(email); } }); $(document).on('click', '.cancel-reply', function () { $('.replyBlock').remove(); $('.maincommentform').show(); }); }) </script> <footer class="site-footer"> <div class="container"> <div class="links-col"> <ul> <li><a href="/terms-of-service/"><i class="icofont-rounded-right"></i> Terms of Service</a></li> <li><a href="/privacy-policy/"><i class="icofont-rounded-right"></i> Privacy Policy</a></li> </ul> </div> <div class="footer-bottom"> <p>© 2026 NovelHere. All Rights Reserved.</p> </div> </div> </footer> <script type="text/javascript" src="/js/jquery.star-rating-svg.js"></script> <script> $(document).ready(function() { // ========================================== // 1. LOGIC CHO PC HEADER ("Midnight Style") // ========================================== const $userTogglePc = $('#userTogglePc'); const $userDropdownPc = $('#userDropdownPc'); // Mở / Đóng Dropdown Avatar $userTogglePc.on('click', function(e) { e.stopPropagation(); $userDropdownPc.toggleClass('active'); }); // ========================================== // 2. LOGIC CHO MOBILE HEADER ("FreeWebNovel Style") // ========================================== const $menuToggleMobile = $('#menuToggleMobile'); const $mobileMenuOverlay = $('#mobileMenuOverlay'); const $menuIconMobile = $menuToggleMobile.find('i'); // Mở / Đóng Hamburger Menu (kèm hiệu ứng trượt) $menuToggleMobile.on('click', function(e) { e.stopPropagation(); $mobileMenuOverlay.slideToggle(250); // Đổi icon Hamburger thành dấu X và ngược lại if ($menuIconMobile.hasClass('icofont-navigation-menu')) { $menuIconMobile.removeClass('icofont-navigation-menu').addClass('icofont-close'); } else { $menuIconMobile.removeClass('icofont-close').addClass('icofont-navigation-menu'); } }); // ========================================== // 3. GLOBAL CLICK (Đóng menu khi click ra ngoài) // ========================================== $(document).on('click', function(e) { // Đóng PC Dropdown nếu click ra ngoài nó if ($userDropdownPc.hasClass('active') && !$userDropdownPc.is(e.target) && $userDropdownPc.has(e.target).length === 0 && !$userTogglePc.is(e.target) && $userTogglePc.has(e.target).length === 0) { $userDropdownPc.removeClass('active'); } // Đóng Mobile Menu nếu click ra ngoài nó if ($mobileMenuOverlay.is(':visible') && !$mobileMenuOverlay.is(e.target) && $mobileMenuOverlay.has(e.target).length === 0 && !$menuToggleMobile.is(e.target) && $menuToggleMobile.has(e.target).length === 0) { $mobileMenuOverlay.slideUp(250); $menuIconMobile.removeClass('icofont-close').addClass('icofont-navigation-menu'); } }); }); </script> </body> </html>