In the world, there are three distinct types of souls, each shaped by the emotions and qualities that define a person.
"First", there are "Normal Souls". These souls are found in almost everyone, from the average person to those leading ordinary lives. They are a mix of many different emotions—joy, sadness, fear, excitement, and much more. Just like how people experience a variety of feelings, these souls reflect that balance. Normal souls are shaped like any other soul and don't stand out much. They're the most common, representing the emotional complexity of regular individuals.
Then, there are "Noble Souls". These are rare, appearing in only one out of a million people. These souls are born when someone experiences a single powerful emotion that overrides all others. This emotion could be pride,justice,righteousness, or bravery etc... People with noble souls are often fearless, unafraid of death, and always ready to stand for what is right. They are the kind of people who help others, protect the weak, and fight for justice, no matter the cost. The appearance of a noble soul is quite special—it's transparent, like clear water, a bubble without color, reflecting the purity of their intentions.
Finally, we have the Fallen Souls, also known as Evil Souls. These souls are shaped by dark and negative emotions like greed, hatred, lust, and envy etc... People with fallen souls care only for themselves or someone they love. They are driven by a desire for revenge, power, or material gain, and as their dark emotions grow stronger, so does the corruption within their soul. Over time, their soul turns into a deep, **pitch black**, a sign that their dark desires have fully taken over. These are people who walk a path of selfishness and evil, their souls reflecting the darkness they harbor inside.
Fallen souls are as rare as noble souls. New ɴᴏᴠᴇʟ ᴄhapters are published on novel·fıre·net
Lunatic explained everything to Scarlett with a calm but serious tone. "Noble souls can repair the souls of angels, and fallen souls have the same effect on monsters and demons. That's why we need to find a fallen soul," she stated, her eyes locked on Scarlett's.
Scarlett nodded in understanding, but before she could respond, Li Feng interrupted. His usual carefree demeanor was gone, replaced by anger. "What I don't get is how they invaded so smoothly. There's no way I'm believing they pulled that off without inside help."
Scarlett smirked, as though she had expected this. "Of course. Everyone have traitors," she replied confidently.
Li Feng raised an eyebrow, clearly confused. "Traitors? Are you saying we have traitors among us?" His disbelief was evident.
Scarlett gazed up at the sky, her face emotionless. "Yes. But this applies on both sides." she said, her back now turned to him. Her tone was cold and distant, devoid of feeling, as if she were processing something greater.
Suddenly, her posture shifted. "I can sense it… someone is coming through teleportation," she murmured, her senses heightened.
Xao Feng returned with a grave expression. Scarlett wasted no time giving orders. "Xao, take the bodies of those who died to a separate room and freeze them. We need to preserve them."
Then, addressing everyone around her, she raised her voice, her words commanding respect. "No need to cry. They aren't truly gone yet.One week....In one week, I'll bring them back to life. Think of it as them taking a short trip."
Hearing her confidence, the villagers' faces brightened, their worries easing. Scarlett had given them hope, and that was enough for now.
Before Scarlett could say anything else, Lunatic acted quickly, casting a spell that put Yumi Yamamoto into a deep sleep.
"How did you know I was about to ask you to do that?" Scarlett asked, surprised.
Lunatic smiled faintly. "Just a lucky guess."
Scarlett thought to herself, "What we're dealing with isn't something the president can handle… it was better this way."
Suddenly a villager came towards them runnin, "Scarlett-sama... Some humans hae arrived, Do we attack them? " He said hurriness in his voice.
"No!, I'm going to talk to them! ", she said as she turned towards the exit gate with an evil grin.
At the eastern corner of the world, where the *Kingdom of Armament* lies isolated, a land as secretive as North Korea but even more so in its strictness. No citizen is allowed to leave, and no outsiders are permitted to enter. Hidden within the sealed borders of this mysterious kingdom is an unknown location, a room unlike any other. The walls and floor are pure white, bathed in an eerie glow, as if the entire space was swallowed by light itself.
In the center of the room stood a single object: a modern, sleek gaming chair. Resting on it, a man reclined silently, his form barely visible, his face obscured in the shadows, blending with the wall in front of him. Only his stillness hinted at his presence.
Suddenly, the silence was broken. A figure entered the room, dressed in a white suit reminiscent of advanced civilizations—something out of a futuristic sci-fi world. His outfit, like an astronaut's suit but more streamlined, gave off the impression of technological superiority, resembling a Doomslayer's armor but in bright white.
The man in white knelt immediately and spoke, his voice laced with urgency and fear. "I have come to report to Lord Auren."
Auren, the man in the chair, remained silent but listened intently. His mechanical-sounding voice finally responded, cold and emotionless, "Speak."
"An emergency has occurred, my Lord," the man began, keeping his head bowed. "Something has struck our precious solar sphere, the one we use to harness the energy from neutron stars."
Auren's head tilted slightly at this news, his voice gaining an edge. "What?"
"I… I am deeply sorry," the man continued, his voice trembling with fear. "It was caused by a slash wave from someone's sword. We believe the strike wasn't meant for us, but it was so powerful that it traveled millions of kilometers and damaged our sphere, We were just unlucky."
The silence grew heavier as the man in white finished. He hesitated for a moment before adding, "Because of this, repairs will take six months. Our plan is delayed by an entire year."
For a moment, the room was completely still, the white light flickering slightly. Auren clenched his fist tightly, frustration evident in his mechanical voice. "A whole year… Just who is this fool responsible for such a reckless act?"
</p>
</article>
<nav class="chapter-nav">
<div class="keyboard-hint" x-show="showKeyboardHint" x-transition.opacity>
<svg class="hint-icon" fill="none" stroke="currentColor" viewBox="0 0 24 24">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M13 16h-1v-4h-1m1-4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z"/>
</svg>
<span class="hint-text">
Use <span class="kbd">←</span> and <span class="kbd">→</span> arrow keys to navigate between chapters
</span>
<button @click="dismissKeyboardHint()" class="dismiss-hint" title="Close">×</button>
</div>
<div class="nav-row">
<a href="https://novelhub.net/novel/that-time-i-got-turned-into-a-dragonoid/chapter-87" class="nav-link">
<svg fill="none" stroke="currentColor" viewBox="0 0 24 24">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M15 19l-7-7 7-7"/>
</svg>
<div class="text">
<div class="label">Previous</div>
<div class="title">Chapter 87</div>
</div>
</a>
<a href="https://novelhub.net/novel/that-time-i-got-turned-into-a-dragonoid/chapter-89" class="nav-link next">
<div class="text">
<div class="label">Next</div>
<div class="title">Chapter 89</div>
</div>
<svg fill="none" stroke="currentColor" viewBox="0 0 24 24">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 5l7 7-7 7"/>
</svg>
</a>
</div>
<a href="https://novelhub.net/novel/that-time-i-got-turned-into-a-dragonoid" class="novel-link">
<svg fill="none" stroke="currentColor" viewBox="0 0 24 24">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M10 19l-7-7m0 0l7-7m-7 7h18"/>
</svg>
Back to That Time I Got Turned In...
</a>
</nav>
<section class="comments-section">
<div x-data="commentSystem(4769, 2646228, [], 'false')">
<h2 class="py-2 mb-4 text-lg font-bold text-blue-600 dark:text-blue-400">Comments</h2>
<div class="mb-6">
<div class="p-4 text-center text-gray-500 dark:text-dark-600 bg-gray-50 dark:bg-dark-50 rounded-lg border border-gray-200 dark:border-dark-300">
<svg class="mx-auto mb-3 w-12 h-12 text-gray-300 dark:text-dark-500" fill="none" stroke="currentColor" viewBox="0 0 24 24">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 12h.01M12 12h.01M16 12h.01M21 12c0 4.418-4.03 8-9 8a9.863 9.863 0 01-4.255-.949L3 20l1.395-3.72C3.512 15.042 3 13.574 3 12c0-4.418 4.03-8 9-8s9 3.582 9 8z"></path>
</svg>
<p class="mb-3 text-sm dark:text-dark-700">Join the discussion! Login to share your thoughts and connect with other readers.</p>
<div class="flex gap-3 justify-center">
<button @click="$dispatch('open-modal', { type: 'auth', mode: 'login' })" class="px-4 py-2 text-sm font-medium text-white bg-blue-600 rounded-md transition-colors hover:bg-blue-700">
Login
</button>
<button @click="$dispatch('open-modal', { type: 'auth', mode: 'register' })" class="px-4 py-2 text-sm font-medium text-gray-700 dark:text-dark-800 bg-gray-200 dark:bg-dark-200 rounded-md transition-colors hover:bg-gray-300 dark:hover:bg-dark-300">
Register
</button>
</div>
</div>
</div>
<div id="comments-list" class="space-y-4" x-show="replyingTo === null && !hasInteractions">
<div class="p-6 text-center text-gray-500 dark:text-dark-600 bg-white dark:bg-dark-50 rounded-lg border border-gray-200 dark:border-dark-300">
<svg class="mx-auto mb-3 w-12 h-12 text-gray-300 dark:text-dark-500" fill="none" stroke="currentColor" viewBox="0 0 24 24">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 12h.01M12 12h.01M16 12h.01M21 12c0 4.418-4.03 8-9 8a9.863 9.863 0 01-4.255-.949L3 20l1.395-3.72C3.512 15.042 3 13.574 3 12c0-4.418 4.03-8 9-8s9 3.582 9 8z"></path>
</svg>
<p class="text-sm dark:text-dark-700">No comments yet. Be the first to comment!</p>
</div>
</div>
<div x-show="hasInteractions" x-cloak class="space-y-4">
<template x-for="comment in comments" :key="comment.id">
<div :data-comment-id="comment.id" class="p-2 bg-white dark:bg-dark-50 rounded-lg border border-gray-200 dark:border-dark-300 transition-all duration-200">
<div class="flex gap-3">
<div class="flex-shrink-0">
<div class="inline-block relative">
<img :src="comment.user.avatar && comment.user.avatar !== 'images/default-avatar.svg' ? `/storage/${comment.user.avatar}` : '/images/default-avatar.svg'"
alt=""
class="object-cover w-12 h-12 rounded-full"
loading="lazy">
</div>
</div>
<div class="flex-1">
<div class="flex justify-between items-center mb-2">
<div class="flex gap-2 items-center">
<span class="font-semibold text-gray-800 dark:text-dark-900" x-text="comment.user.name"></span>
<span class="username-level-badge"
:class="`lv_${comment.user.level || 1}`">
<span x-text="`Lv${comment.user.level || 1}`"></span>
</span>
<template x-if="comment.chapter_id">
<span class="inline-flex items-center px-2 py-1 text-xs font-medium text-blue-700 dark:text-blue-300 bg-blue-100 dark:bg-blue-900/30 rounded-full">
Chapter <span x-text="comment.chapter_number"></span>
</span>
</template>
</div>
<span class="text-xs text-gray-500 dark:text-dark-600" x-text="formatDate(comment.created_at)"></span>
</div>
<div class="leading-relaxed text-gray-700 dark:text-dark-800" x-html="parseCommentBody(comment.content)"></div>
<div class="flex gap-4 items-center mt-3 text-xs text-gray-600 dark:text-dark-600">
<button x-on:click="toggleLike(comment.id)"
class="flex gap-1 items-center px-2 py-1 rounded transition-colors duration-200 hover:text-blue-600 dark:hover:text-blue-400 hover:bg-blue-50 dark:hover:bg-blue-900/30">
<svg class="w-4 h-4" fill="none" stroke="currentColor" viewBox="0 0 24 24">
<path d="M7.493 18.75c-.425 0-.82-.236-.975-.632A7.48 7.48 0 016 15.375c0-1.75.599-3.358 1.602-4.634.151-.192.373-.309.6-.397.473-.183.89-.514 1.212-.924a9.042 9.042 0 012.861-2.4c.723-.384 1.35-.956 1.653-1.715a4.498 4.498 0 00.322-1.672V3a.75.75 0 01.75-.75 2.25 2.25 0 012.25 2.25c0 1.152-.26 2.243-.723 3.218-.266.558-.107 1.282.725 1.282h3.126c1.026 0 1.945.694 2.054 1.715.045.422.068.85.068 1.285a11.95 11.95 0 01-2.649 7.521c-.388.482-.987.729-1.605.729H14.23c-.483 0-.964-.078-1.423-.23l-3.114-1.04a4.501 4.501 0 00-1.423-.23h-.777zM2.331 10.977a11.969 11.969 0 00-.831 4.398 12 12 0 00.52 3.507c.26.85 1.084 1.368 1.973 1.368H4.9c.445 0 .72-.498.523-.898a8.963 8.963 0 01-.924-3.977c0-1.708.476-3.305 1.302-4.666.245-.403-.028-.959-.5-.959H4.25c-.832 0-1.612.453-1.918 1.227z" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5"/>
</svg>
<span x-text="comment.likes_count > 0 ? comment.likes_count : ''"></span>
</button>
<button x-on:click="toggleReply(comment.id)"
class="flex gap-1 items-center px-2 py-1 rounded transition-colors duration-200 hover:text-blue-600 dark:hover:text-blue-400 hover:bg-blue-50 dark:hover:bg-blue-900/30">
<svg class="w-4 h-4" fill="none" stroke="currentColor" viewBox="0 0 24 24">
<path d="M4.5 12L9.5 17M4.5 12L9.5 7M4.5 12L14.5 12C16.1667 12 19.5 11 19.5 7" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5"/>
</svg>
<span>Reply</span>
</button>
</div>
</div>
</div>
<div x-show="replyingTo === comment.id" x-transition class="mt-4 ml-0 md:ml-4">
<div :id="`replyPlaceholder${comment.id}`" class="reply-placeholder"></div>
</div>
<div x-show="comment.replies && comment.replies.length > 0" class="mt-4 ml-4 space-y-4">
<template x-for="reply in comment.replies" :key="reply.id">
<div class="flex gap-3">
<div class="flex-shrink-0">
<div class="inline-block relative">
<img :src="reply.user.avatar && reply.user.avatar !== 'images/default-avatar.svg' ? `/storage/${reply.user.avatar}` : '/images/default-avatar.svg'"
alt=""
class="object-cover w-8 h-8 rounded-full"
loading="lazy">
</div>
</div>
<div class="flex-1">
<div class="flex justify-between items-center mb-2">
<div class="flex gap-2 items-center">
<span class="font-semibold text-gray-800 dark:text-dark-900" x-text="reply.user.name"></span>
<span class="username-level-badge"
:class="`lv_${reply.user.level || 1}`">
<span x-text="`Lv${reply.user.level || 1}`"></span>
</span>
</div>
<span class="text-xs text-gray-500 dark:text-dark-600" x-text="formatDate(reply.created_at)"></span>
</div>
<div class="leading-relaxed text-gray-700 dark:text-dark-800" x-html="parseCommentBody(reply.content)"></div>
<div class="flex gap-4 items-center mt-3 text-xs text-gray-600 dark:text-dark-600">
<button x-on:click="toggleLike(reply.id)"
class="flex gap-1 items-center px-2 py-1 rounded transition-colors duration-200 hover:text-blue-600 dark:hover:text-blue-400 hover:bg-blue-50 dark:hover:bg-blue-900/30">
<svg class="w-4 h-4" fill="none" stroke="currentColor" viewBox="0 0 24 24">
<path d="M7.493 18.75c-.425 0-.82-.236-.975-.632A7.48 7.48 0 016 15.375c0-1.75.599-3.358 1.602-4.634.151-.192.373-.309.6-.397.473-.183.89-.514 1.212-.924a9.042 9.042 0 012.861-2.4c.723-.384 1.35-.956 1.653-1.715a4.498 4.498 0 00.322-1.672V3a.75.75 0 01.75-.75 2.25 2.25 0 012.25 2.25c0 1.152-.26 2.243-.723 3.218-.266.558-.107 1.282.725 1.282h3.126c1.026 0 1.945.694 2.054 1.715.045.422.068.85.068 1.285a11.95 11.95 0 01-2.649 7.521c-.388.482-.987.729-1.605.729H14.23c-.483 0-.964-.078-1.423-.23l-3.114-1.04a4.501 4.501 0 00-1.423-.23h-.777zM2.331 10.977a11.969 11.969 0 00-.831 4.398 12 12 0 00.52 3.507c.26.85 1.084 1.368 1.973 1.368H4.9c.445 0 .72-.498.523-.898a8.963 8.963 0 01-.924-3.977c0-1.708.476-3.305 1.302-4.666.245-.403-.028-.959-.5-.959H4.25c-.832 0-1.612.453-1.918 1.227z" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5"/>
</svg>
<span x-text="reply.likes_count > 0 ? reply.likes_count : ''"></span>
</button>
<button x-on:click="toggleReply(reply.id)"
class="flex gap-1 items-center px-2 py-1 rounded transition-colors duration-200 hover:text-blue-600 dark:hover:text-blue-400 hover:bg-blue-50 dark:hover:bg-blue-900/30">
<svg class="w-4 h-4" fill="none" stroke="currentColor" viewBox="0 0 24 24">
<path d="M4.5 12L9.5 17M4.5 12L9.5 7M4.5 12L14.5 12C16.1667 12 19.5 11 19.5 7" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5"/>
</svg>
<span>Reply</span>
</button>
</div>
<div x-show="replyingTo === reply.id" x-transition class="mt-4 -ml-4 md:ml-0">
<div :id="`replyPlaceholder${reply.id}`" class="reply-placeholder"></div>
</div>
</div>
</div>
</template>
</div>
</div>
</template>
</div>
<div x-show="hasMorePages" x-cloak class="mt-6 text-center">
<button x-on:click="loadMoreComments" :disabled="loadingMore"
class="px-6 py-3 text-sm font-medium text-white bg-gray-600 rounded-lg transition-colors duration-200 hover:bg-gray-700 disabled:opacity-50 disabled:cursor-not-allowed">
<span x-show="!loadingMore">Load More Comments</span>
<span x-show="loadingMore" class="flex justify-center items-center">
<svg class="mr-2 w-4 h-4 animate-spin" fill="none" viewBox="0 0 24 24">
<circle class="opacity-25" cx="12" cy="12" r="10" stroke="currentColor" stroke-width="4"></circle>
<path class="opacity-75" fill="currentColor" d="M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z"></path>
</svg>
Loading...
</span>
</button>
</div>
<div id="mobileReplyForm" x-show="replyingTo !== null" x-cloak class="hidden">
<form x-on:submit.prevent="postReply()" class="ml-0 space-y-4 md:ml-0">
<div class="bg-white dark:bg-dark-50 rounded-lg border border-gray-200 dark:border-dark-300 focus-within:ring-2 focus-within:ring-blue-500 focus-within:border-blue-500">
<div class="px-2 py-2 border-b border-gray-200 dark:border-dark-300">
<div class="flex justify-end items-center mb-1">
<button type="button" x-on:click="activeReplyStickerSet = null" x-show="activeReplyStickerSet"
class="text-xs text-gray-500 dark:text-dark-600 hover:text-gray-700 dark:hover:text-dark-800">
Close
</button>
</div>
<nav class="flex overflow-x-auto pb-1 space-x-3" aria-label="Reply Sticker Sets">
<template x-for="(set, setName) in stickerSets" :key="setName">
<button type="button"
x-on:click="activeReplyStickerSet = (activeReplyStickerSet === setName ? null : setName)"
:class="activeReplyStickerSet === setName ? 'ring-2 ring-blue-500 bg-blue-50 dark:bg-blue-900/30' : 'hover:bg-gray-200 dark:hover:bg-dark-200'"
class="flex-shrink-0 p-2 rounded-md transition-all duration-200 focus:outline-none">
<img :src="getRepresentative(setName)" :alt="set.name"
class="object-contain w-8 h-8" :title="set.name">
</button>
</template>
</nav>
<div x-show="activeReplyStickerSet" x-transition class="pt-2 mt-2 border-t border-gray-200 dark:border-dark-300">
<div class="grid overflow-y-auto grid-cols-6 gap-3 max-h-48 md:grid-cols-8 lg:grid-cols-10">
<template x-for="file in stickerSets[activeReplyStickerSet]?.files || []" :key="file">
<button type="button"
x-on:click="insertReplySticker(activeReplyStickerSet, file, replyingTo)"
class="p-2 rounded-md transition-transform sticker-button hover:bg-gray-200 dark:hover:bg-dark-200 focus:outline-none focus:ring-2 focus:ring-blue-500">
<img :src="stickerSets[activeReplyStickerSet].path + file"
:alt="file" class="object-contain w-12 h-12 md:w-16 md:h-16">
</button>
</template>
</div>
</div>
</div>
<div class="relative px-2 py-2">
<input type="hidden" name="reply_content" x-model="newReply">
<div id="mobileReplyEditor"
x-on:input="syncMobileReplyEditorState()"
contenteditable="true"
role="textbox"
class="block p-3 pr-20 w-full border-0 resize-none reply-editor focus:ring-0"
style="word-break: break-word; min-height: 60px;"
data-placeholder="Write your reply...">
</div>
<div class="absolute right-2 bottom-2">
<button type="submit" :disabled="loading"
class="inline-flex items-center px-3 py-1.5 text-sm font-medium text-white bg-blue-600 rounded-md border border-transparent shadow-sm transition-all duration-200 hover:bg-blue-700 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-blue-500 disabled:opacity-50 disabled:cursor-not-allowed">
<svg x-show="!loading" class="mr-1 w-4 h-4" fill="none" stroke="currentColor" viewBox="0 0 24 24">
<path d="M4.5 12L9.5 17M4.5 12L9.5 7M4.5 12L14.5 12C16.1667 12 19.5 11 19.5 7" stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5"/>
</svg>
<svg x-show="loading" class="mr-1 w-4 h-4 animate-spin" fill="none" viewBox="0 0 24 24">
<circle class="opacity-25" cx="12" cy="12" r="10" stroke="currentColor" stroke-width="4"></circle>
<path class="opacity-75" fill="currentColor" d="M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z"></path>
</svg>
<span x-text="loading ? 'Replying...' : 'Reply'"></span>
</button>
</div>
</div>
</div>
</form>
</div>
</div>
</section>
</main>
<div class="side-panel" @click.stop>
<button class="side-btn" :class="{ 'active': showSettings }" @click="toggleSettings()" title="Settings">
<svg fill="none" stroke="currentColor" viewBox="0 0 24 24">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M10.325 4.317c.426-1.756 2.924-1.756 3.35 0a1.724 1.724 0 002.573 1.066c1.543-.94 3.31.826 2.37 2.37a1.724 1.724 0 001.065 2.572c1.756.426 1.756 2.924 0 3.35a1.724 1.724 0 00-1.066 2.573c.94 1.543-.826 3.31-2.37 2.37a1.724 1.724 0 00-2.572 1.065c-.426 1.756-2.924 1.756-3.35 0a1.724 1.724 0 00-2.573-1.066c-1.543.94-3.31-.826-2.37-2.37a1.724 1.724 0 00-1.065-2.572c-1.756-.426-1.756-2.924 0-3.35a1.724 1.724 0 001.066-2.573c-.94-1.543.826-3.31 2.37-2.37.996.608 2.296.07 2.572-1.065z"/>
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M15 12a3 3 0 11-6 0 3 3 0 016 0z"/>
</svg>
</button>
<a href="https://novelhub.net/novel/that-time-i-got-turned-into-a-dragonoid/chapters" class="side-btn" title="Chapters">
<svg fill="none" stroke="currentColor" viewBox="0 0 24 24">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M4 6h16M4 10h16M4 14h16M4 18h16"/>
</svg>
</a>
<button class="side-btn" @click="$dispatch('open-report')" title="Report">
<svg fill="none" stroke="currentColor" viewBox="0 0 24 24">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M12 9v2m0 4h.01m-6.938 4h13.856c1.54 0 2.502-1.667 1.732-3L13.732 4c-.77-1.333-2.694-1.333-3.464 0L3.34 16c-.77 1.333.192 3 1.732 3z"/>
</svg>
</button>
</div>
<div class="swipe-hint" :class="{ 'show': showHint }">↑ Swipe up for menu</div>
<nav class="mobile-bar" :class="{ 'show': toolbarVisible }" @click.stop>
<div class="mobile-bar-inner">
<a href="https://novelhub.net/novel/that-time-i-got-turned-into-a-dragonoid/chapter-87" class="mobile-btn">
<svg fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M15 19l-7-7 7-7"/></svg>
<span>Prev</span>
</a>
<a href="https://novelhub.net/novel/that-time-i-got-turned-into-a-dragonoid/chapters" class="mobile-btn">
<svg fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M4 6h16M4 10h16M4 14h16M4 18h16"/></svg>
<span>List</span>
</a>
<button class="mobile-btn" :class="{ 'active': showSettings }" @click="toggleSettings()">
<svg fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M10.325 4.317c.426-1.756 2.924-1.756 3.35 0a1.724 1.724 0 002.573 1.066c1.543-.94 3.31.826 2.37 2.37a1.724 1.724 0 001.065 2.572c1.756.426 1.756 2.924 0 3.35a1.724 1.724 0 00-1.066 2.573c.94 1.543-.826 3.31-2.37 2.37a1.724 1.724 0 00-2.572 1.065c-.426 1.756-2.924 1.756-3.35 0a1.724 1.724 0 00-2.573-1.066c-1.543.94-3.31-.826-2.37-2.37a1.724 1.724 0 00-1.065-2.572c-1.756-.426-1.756-2.924 0-3.35a1.724 1.724 0 001.066-2.573c-.94-1.543.826-3.31 2.37-2.37.996.608 2.296.07 2.572-1.065z"/><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M15 12a3 3 0 11-6 0 3 3 0 016 0z"/></svg>
<span>Settings</span>
</button>
<a href="https://novelhub.net/novel/that-time-i-got-turned-into-a-dragonoid/chapter-89" class="mobile-btn">
<svg fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 5l7 7-7 7"/></svg>
<span>Next</span>
</a>
</div>
</nav>
<div class="overlay" :class="{ 'show': showSettings }" @click="closeAll()"></div>
<div class="settings" :class="{ 'show': showSettings }" @click.stop>
<div class="settings-header">
<span class="settings-title">Reading Settings</span>
<button class="settings-close" @click="closeAll()">
<svg fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M6 18L18 6M6 6l12 12"/></svg>
</button>
</div>
<div class="settings-body">
<div class="theme-row">
<button class="theme-box white" :class="{ 'active': theme === 'auto' }" @click="setTheme('auto')"></button>
<button class="theme-box gray" :class="{ 'active': theme === 'gray' }" @click="setTheme('gray')"></button>
<button class="theme-box cream" :class="{ 'active': theme === 'sepia' }" @click="setTheme('sepia')"></button>
<button class="theme-box pink" :class="{ 'active': theme === 'pink' }" @click="setTheme('pink')"></button>
<button class="theme-box green" :class="{ 'active': theme === 'green' }" @click="setTheme('green')"></button>
<button class="theme-box dark" :class="{ 'active': theme === 'dark' }" @click="setTheme('dark')">
<svg fill="currentColor" viewBox="0 0 24 24"><path d="M21.752 15.002A9.718 9.718 0 0118 15.75c-5.385 0-9.75-4.365-9.75-9.75 0-1.33.266-2.597.748-3.752A9.753 9.753 0 003 11.25C3 16.635 7.365 21 12.75 21a9.753 9.753 0 009.002-5.998z"/></svg>
</button>
</div>
<div class="control-row">
<button class="control-btn" @click="decreaseFontSize()" :disabled="fontSize <= 14">-</button>
<span class="control-value" x-text="fontSize + 'px'"></span>
<button class="control-btn" @click="increaseFontSize()" :disabled="fontSize >= 28">+</button>
<span class="control-divider"></span>
<button class="control-btn" @click="decreaseLineHeight()" :disabled="lineHeight <= 1.4">-</button>
<span class="control-value" x-text="lineHeight.toFixed(1) + 'x'"></span>
<button class="control-btn" @click="increaseLineHeight()" :disabled="lineHeight >= 2.4">+</button>
</div>
<div class="settings-actions">
<button class="report-btn" @click="$dispatch('open-report'); closeAll();">
<svg fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M12 9v2m0 4h.01m-6.938 4h13.856c1.54 0 2.502-1.667 1.732-3L13.732 4c-.77-1.333-2.694-1.333-3.464 0L3.34 16c-.77 1.333.192 3 1.732 3z"/></svg>
Report Issue
</button>
</div>
</div>
</div>
</div>
<div x-data="{ show: false }" @open-report.window="show = true" @close-report.window="show = false" x-show="show" x-cloak class="modal">
<div class="modal-bg" @click="show = false"></div>
<div class="modal-box" @click.stop x-show="show" x-transition>
<div class="modal-head">
<h3>Report Issue</h3>
<button class="modal-close" @click="show = false">
<svg class="w-5 h-5" fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M6 18L18 6M6 6l12 12"/></svg>
</button>
</div>
<div class="modal-body">
<form action="https://novelhub.net/novel/that-time-i-got-turned-into-a-dragonoid/chapter-88/report" method="POST" x-data="reportForm()" @submit.prevent="submit($event)">
<input type="hidden" name="chapter_id" value="2646228">
<input type="hidden" name="novel_id" value="4769">
<div x-show="success" class="mb-4 p-3 bg-green-100 text-green-700 rounded-lg text-sm">Report submitted!</div>
<div x-show="error" x-text="error" class="mb-4 p-3 bg-red-100 text-red-700 rounded-lg text-sm"></div>
<div class="mb-4" x-show="!success">
<label class="block text-sm font-medium mb-2">Issue Type</label>
<select name="report_type" required class="w-full px-4 py-3 rounded-lg border border-gray-200 dark:border-gray-700 bg-white dark:bg-gray-800">
<option value="">Select...</option>
<option value="missing_content">Missing Content</option>
<option value="wrong_chapter">Wrong Chapter</option>
<option value="formatting_issue">Formatting Issue</option>
<option value="duplicate_content">Duplicate Content</option>
<option value="other">Other</option>
</select>
</div>
<div class="mb-4" x-show="!success">
<label class="block text-sm font-medium mb-2">Description</label>
<textarea name="description" required rows="3" maxlength="500" placeholder="Describe the issue..." class="w-full px-4 py-3 rounded-lg border border-gray-200 dark:border-gray-700 bg-white dark:bg-gray-800 resize-none"></textarea>
</div>
<div class="flex gap-3" x-show="!success">
<button type="button" @click="show = false" class="flex-1 py-3 px-4 rounded-lg bg-gray-100 dark:bg-gray-800 font-medium">Cancel</button>
<button type="submit" :disabled="submitting" class="flex-1 py-3 px-4 rounded-lg bg-blue-600 text-white font-medium disabled:opacity-50">
<span x-show="!submitting">Submit</span>
<span x-show="submitting">Sending...</span>
</button>
</div>
</form>
</div>
</div>
</div>
<link rel="modulepreload" href="https://novelhub.net/build/assets/reader-3ZEI6_A9.js" /><link rel="modulepreload" href="https://novelhub.net/build/assets/comments-LdW9pvaX.js" /><script type="module" src="https://novelhub.net/build/assets/reader-3ZEI6_A9.js" data-navigate-track="reload"></script>
<link rel="modulepreload" href="https://novelhub.net/build/assets/common-4CfY8fbP.js" /><script type="module" src="https://novelhub.net/build/assets/common-4CfY8fbP.js" data-navigate-track="reload"></script></body>
</html>
<script>(function(){function c(){var b=a.contentDocument||a.contentWindow.document;if(b){var d=b.createElement('script');d.innerHTML="window.__CF$cv$params={r:'9c76b5d0482d5fa8',t:'MTc3MDAwNDA3OA=='};var a=document.createElement('script');a.src='/cdn-cgi/challenge-platform/scripts/jsd/main.js';document.getElementsByTagName('head')[0].appendChild(a);";b.getElementsByTagName('head')[0].appendChild(d)}}if(document.body){var a=document.createElement('iframe');a.height=1;a.width=1;a.style.position='absolute';a.style.top=0;a.style.left=0;a.style.border='none';a.style.visibility='hidden';document.body.appendChild(a);if('loading'!==document.readyState)c();else if(window.addEventListener)document.addEventListener('DOMContentLoaded',c);else{var e=document.onreadystatechange||function(){};document.onreadystatechange=function(b){e(b);'loading'!==document.readyState&&(document.onreadystatechange=e,c())}}}})();</script>