㰀栀琀洀氀 氀愀渀最㴀∀攀渀∀㸀
㰀洀攀琀愀 挀栀愀爀猀攀琀㴀∀唀吀䘀ⴀ㠀∀㸀 㰀琀椀琀氀攀㸀䨀䔀䔀 倀栀礀猀椀挀猀 匀攀挀琀椀漀渀 吀攀猀琀㰀⼀琀椀琀氀攀㸀 㰀氀椀渀欀 栀爀攀昀㴀∀栀琀琀瀀猀㨀⼀⼀昀漀渀琀猀⸀最漀漀最氀攀愀瀀椀猀⸀挀漀洀⼀挀猀猀㈀㼀昀愀洀椀氀礀㴀倀漀瀀瀀椀渀猀㨀眀最栀琀䀀㌀ 㬀㐀 㬀㔀 㬀㘀 㬀㜀 ☀搀椀猀瀀氀愀礀㴀猀眀愀瀀∀ 爀攀氀㴀∀猀琀礀氀攀猀栀攀攀琀∀㸀 㰀猀琀礀氀攀㸀 :root { ⴀⴀ瀀爀椀洀愀爀礀ⴀ挀漀氀漀爀㨀 ⌀㐀㌀㘀攀攀㬀 --secondary-color: #3a0ca3; ⴀⴀ愀挀挀攀渀琀ⴀ挀漀氀漀爀㨀 ⌀㐀挀挀㤀昀 㬀 --light-color: #f8f9fa; ⴀⴀ搀愀爀欀ⴀ挀漀氀漀爀㨀 ⌀㈀㈀㔀㈀㤀㬀 --success-color: #38b000; ⴀⴀ搀愀渀最攀爀ⴀ挀漀氀漀爀㨀 ⌀昀昀㌀㌀㌀㌀㬀 --warning-color: #ff9e00; ⴀⴀ椀渀昀漀ⴀ挀漀氀漀爀㨀 ⌀㐀㠀㤀㔀攀昀㬀 --background-gradient: linear-gradient(135deg, #f0f4ff 0%, #e6f0ff 100%); ⴀⴀ挀愀爀搀ⴀ猀栀愀搀漀眀㨀 瀀砀 ㌀ 瀀砀 爀最戀愀⠀㘀㜀Ⰰ 㤀㜀Ⰰ ㈀㌀㠀Ⰰ ⸀㔀⤀㬀 --button-hover-shadow: 0 6px 12px rgba(67, 97, 238, 0.25); 紀 ⨀ 笀 box-sizing: border-box; 洀愀爀最椀渀㨀 㬀 padding: 0; 昀漀渀琀ⴀ昀愀洀椀氀礀㨀 ✀倀漀瀀瀀椀渀猀✀Ⰰ 猀愀渀猀ⴀ猀攀爀椀昀㬀 } body { 戀愀挀欀最爀漀甀渀搀㨀 瘀愀爀⠀ⴀⴀ戀愀挀欀最爀漀甀渀搀ⴀ最爀愀搀椀攀渀琀⤀㬀 min-height: 100vh; 瀀愀搀搀椀渀最㨀 ㈀ 瀀砀㬀 } .hidden { 搀椀猀瀀氀愀礀㨀 渀漀渀攀㬀 } .container { 戀愀挀欀最爀漀甀渀搀ⴀ挀漀氀漀爀㨀 ⌀昀昀昀㬀 padding: 30px; 戀漀爀搀攀爀ⴀ爀愀搀椀甀猀㨀 㔀瀀砀㬀 box-shadow: var(--card-shadow); 眀椀搀琀栀㨀 ─㬀 max-width: 1000px; 洀愀爀最椀渀㨀 ㈀ 瀀砀 愀甀琀漀㬀 transition: all 0.3s ease; 紀 栀Ⰰ 栀㈀Ⰰ 栀㌀Ⰰ 栀㐀 笀 color: var(--dark-color); 洀愀爀最椀渀ⴀ戀漀琀琀漀洀㨀 ㈀ 瀀砀㬀 } h1 { 琀攀砀琀ⴀ愀氀椀最渀㨀 挀攀渀琀攀爀㬀 color: var(--primary-color); 昀漀渀琀ⴀ猀椀稀攀㨀 ㈀⸀㈀爀攀洀㬀 margin-bottom: 30px; 瀀漀猀椀琀椀漀渀㨀 爀攀氀愀琀椀瘀攀㬀 padding-bottom: 10px; 紀 栀㨀㨀愀昀琀攀爀 笀 content: ''; 瀀漀猀椀琀椀漀渀㨀 愀戀猀漀氀甀琀攀㬀 bottom: 0; 氀攀昀琀㨀 㔀 ─㬀 transform: translateX(-50%); 眀椀搀琀栀㨀 瀀砀㬀 height: 3px; 戀愀挀欀最爀漀甀渀搀㨀 瘀愀爀⠀ⴀⴀ愀挀挀攀渀琀ⴀ挀漀氀漀爀⤀㬀 border-radius: 3px; 紀 栀㈀ 笀 font-size: 1.5rem; 挀漀氀漀爀㨀 瘀愀爀⠀ⴀⴀ猀攀挀漀渀搀愀爀礀ⴀ挀漀氀漀爀⤀㬀 margin-top: 10px; 紀 猀攀氀攀挀琀Ⰰ 椀渀瀀甀琀嬀琀礀瀀攀㴀∀挀栀攀挀欀戀漀砀∀崀Ⰰ 椀渀瀀甀琀嬀琀礀瀀攀㴀∀爀愀搀椀漀∀崀 笀 margin-right: 10px; 紀 猀攀氀攀挀琀 笀 width: 100%; 瀀愀搀搀椀渀最㨀 ㈀瀀砀 㔀瀀砀㬀 border: 2px solid #ddd; 戀漀爀搀攀爀ⴀ爀愀搀椀甀猀㨀 㠀瀀砀㬀 font-size: 1rem; 琀爀愀渀猀椀琀椀漀渀㨀 愀氀氀 ⸀㌀猀㬀 margin-bottom: 20px; 紀 猀攀氀攀挀琀㨀昀漀挀甀猀 笀 border-color: var(--primary-color); 漀甀琀氀椀渀攀㨀 渀漀渀攀㬀 box-shadow: 0 0 0 3px rgba(67, 97, 238, 0.2); 紀 氀愀戀攀氀 笀 display: inline-flex; 愀氀椀最渀ⴀ椀琀攀洀猀㨀 挀攀渀琀攀爀㬀 margin-bottom: 12px; 挀甀爀猀漀爀㨀 瀀漀椀渀琀攀爀㬀 transition: all 0.2s; 瀀愀搀搀椀渀最㨀 㠀瀀砀 ㈀瀀砀㬀 border-radius: 8px; 紀 氀愀戀攀氀㨀栀漀瘀攀爀 笀 background-color: rgba(67, 97, 238, 0.05); 紀 椀渀瀀甀琀嬀琀礀瀀攀㴀∀挀栀攀挀欀戀漀砀∀崀Ⰰ 椀渀瀀甀琀嬀琀礀瀀攀㴀∀爀愀搀椀漀∀崀 笀 width: 18px; 栀攀椀最栀琀㨀 㠀瀀砀㬀 accent-color: var(--primary-color); 紀 ⸀戀琀渀 笀 padding: 12px 25px; 戀漀爀搀攀爀㨀 渀漀渀攀㬀 background-color: var(--primary-color); 挀漀氀漀爀㨀 眀栀椀琀攀㬀 border-radius: 8px; 挀甀爀猀漀爀㨀 瀀漀椀渀琀攀爀㬀 font-size: 1rem; 昀漀渀琀ⴀ眀攀椀最栀琀㨀 㔀 㬀 transition: all 0.3s; 戀漀砀ⴀ猀栀愀搀漀眀㨀 㐀瀀砀 㘀瀀砀 爀最戀愀⠀ Ⰰ Ⰰ Ⰰ ⸀⤀㬀 display: inline-block; 琀攀砀琀ⴀ愀氀椀最渀㨀 挀攀渀琀攀爀㬀 margin: 10px 5px; 紀 ⸀戀琀渀㨀栀漀瘀攀爀 笀 background-color: var(--secondary-color); 琀爀愀渀猀昀漀爀洀㨀 琀爀愀渀猀氀愀琀攀夀⠀ⴀ㈀瀀砀⤀㬀 box-shadow: var(--button-hover-shadow); 紀 ⸀戀琀渀㨀愀挀琀椀瘀攀 笀 transform: translateY(0); 紀 ⸀戀琀渀ⴀ猀攀挀漀渀搀愀爀礀 笀 background-color: var(--info-color); 紀 ⸀戀琀渀ⴀ猀攀挀漀渀搀愀爀礀㨀栀漀瘀攀爀 笀 background-color: #3a7bd5; 紀 ⸀戀琀渀ⴀ搀愀渀最攀爀 笀 background-color: var(--danger-color); 紀 ⸀戀琀渀ⴀ搀愀渀最攀爀㨀栀漀瘀攀爀 笀 background-color: #e60000; 紀 ⸀戀琀渀ⴀ猀甀挀挀攀猀猀 笀 background-color: var(--success-color); 紀 ⸀戀琀渀ⴀ猀甀挀挀攀猀猀㨀栀漀瘀攀爀 笀 background-color: #32a000; 紀 ⸀渀愀瘀椀最愀琀椀漀渀ⴀ戀甀琀琀漀渀猀 笀 display: flex; 樀甀猀琀椀昀礀ⴀ挀漀渀琀攀渀琀㨀 猀瀀愀挀攀ⴀ戀攀琀眀攀攀渀㬀 margin-top: 30px; 紀 ⸀焀甀攀猀琀椀漀渀 笀 margin-bottom: 25px; 瀀愀搀搀椀渀最㨀 ㈀ 瀀砀㬀 background-color: #f8f9fa; 戀漀爀搀攀爀ⴀ爀愀搀椀甀猀㨀 瀀砀㬀 box-shadow: 0 2px 5px rgba(0, 0, 0, 0.05); 戀漀爀搀攀爀ⴀ氀攀昀琀㨀 㐀瀀砀 猀漀氀椀搀 瘀愀爀⠀ⴀⴀ瀀爀椀洀愀爀礀ⴀ挀漀氀漀爀⤀㬀 } .question p { 昀漀渀琀ⴀ猀椀稀攀㨀 ⸀爀攀洀㬀 margin-bottom: 15px; 昀漀渀琀ⴀ眀攀椀最栀琀㨀 㔀 㬀 color: var(--dark-color); 紀 ⸀漀瀀琀椀漀渀 笀 display: flex; 愀氀椀最渀ⴀ椀琀攀洀猀㨀 挀攀渀琀攀爀㬀 margin-bottom: 10px; 瀀愀搀搀椀渀最㨀 瀀砀 㔀瀀砀㬀 border-radius: 8px; 戀愀挀欀最爀漀甀渀搀ⴀ挀漀氀漀爀㨀 眀栀椀琀攀㬀 border: 1px solid #eee; 琀爀愀渀猀椀琀椀漀渀㨀 愀氀氀 ⸀㈀猀㬀 } .option:hover { 戀漀爀搀攀爀ⴀ挀漀氀漀爀㨀 瘀愀爀⠀ⴀⴀ愀挀挀攀渀琀ⴀ挀漀氀漀爀⤀㬀 background-color: rgba(76, 201, 240, 0.05); 紀 ⸀漀瀀琀椀漀渀 椀渀瀀甀琀嬀琀礀瀀攀㴀∀爀愀搀椀漀∀崀㨀挀栀攀挀欀攀搀 ⬀ 氀愀戀攀氀 笀 font-weight: 600; 挀漀氀漀爀㨀 瘀愀爀⠀ⴀⴀ瀀爀椀洀愀爀礀ⴀ挀漀氀漀爀⤀㬀 } #timer { 昀漀渀琀ⴀ猀椀稀攀㨀 ⸀㌀爀攀洀㬀 font-weight: 600; 瀀愀搀搀椀渀最㨀 瀀砀 ㈀ 瀀砀㬀 background: linear-gradient(135deg, var(--secondary-color) 0%, var(--primary-color) 100%); 挀漀氀漀爀㨀 眀栀椀琀攀㬀 border-radius: 50px; 搀椀猀瀀氀愀礀㨀 椀渀氀椀渀攀ⴀ戀氀漀挀欀㬀 margin-bottom: 20px; 戀漀砀ⴀ猀栀愀搀漀眀㨀 㐀瀀砀 瀀砀 爀最戀愀⠀ Ⰰ Ⰰ Ⰰ ⸀⤀㬀 } #time.warning { 挀漀氀漀爀㨀 瘀愀爀⠀ⴀⴀ眀愀爀渀椀渀最ⴀ挀漀氀漀爀⤀㬀 animation: pulse 1s infinite; 紀 ⌀琀椀洀攀⸀搀愀渀最攀爀 笀 color: var(--danger-color); 愀渀椀洀愀琀椀漀渀㨀 瀀甀氀猀攀 ⸀㔀猀 椀渀昀椀渀椀琀攀㬀 } @keyframes pulse { ─ 笀 漀瀀愀挀椀琀礀㨀 㬀 紀 50% { opacity: 0.5; } ─ 笀 漀瀀愀挀椀琀礀㨀 㬀 紀 } .divider { 栀攀椀最栀琀㨀 ㈀瀀砀㬀 background: linear-gradient(to right, transparent, var(--accent-color), transparent); 洀愀爀最椀渀㨀 ㈀ 瀀砀 㬀 border: none; 紀 ⸀爀攀猀甀氀琀猀ⴀ挀愀爀搀 笀 background-color: white; 戀漀爀搀攀爀ⴀ爀愀搀椀甀猀㨀 㔀瀀砀㬀 padding: 30px; 戀漀砀ⴀ猀栀愀搀漀眀㨀 瘀愀爀⠀ⴀⴀ挀愀爀搀ⴀ猀栀愀搀漀眀⤀㬀 margin-bottom: 30px; 琀攀砀琀ⴀ愀氀椀最渀㨀 挀攀渀琀攀爀㬀 border-top: 5px solid var(--primary-color); 紀 ⸀猀挀漀爀攀 笀 font-size: 3rem; 昀漀渀琀ⴀ眀攀椀最栀琀㨀 㜀 㬀 color: var(--primary-color); 洀愀爀最椀渀㨀 ㈀ 瀀砀 㬀 } .progress-container { 眀椀搀琀栀㨀 ─㬀 height: 20px; 戀愀挀欀最爀漀甀渀搀ⴀ挀漀氀漀爀㨀 ⌀攀㤀攀挀攀昀㬀 border-radius: 10px; 洀愀爀最椀渀㨀 ㈀ 瀀砀 㬀 overflow: hidden; 紀 ⸀瀀爀漀最爀攀猀猀ⴀ戀愀爀 笀 height: 100%; 戀愀挀欀最爀漀甀渀搀㨀 氀椀渀攀愀爀ⴀ最爀愀搀椀攀渀琀⠀琀漀 爀椀最栀琀Ⰰ 瘀愀爀⠀ⴀⴀ愀挀挀攀渀琀ⴀ挀漀氀漀爀⤀Ⰰ 瘀愀爀⠀ⴀⴀ瀀爀椀洀愀爀礀ⴀ挀漀氀漀爀⤀⤀㬀 border-radius: 10px; 琀爀愀渀猀椀琀椀漀渀㨀 眀椀搀琀栀 ⸀㔀猀 攀愀猀攀㬀 } .summary-item { 洀愀爀最椀渀ⴀ戀漀琀琀漀洀㨀 ㌀ 瀀砀㬀 padding: 20px; 戀愀挀欀最爀漀甀渀搀ⴀ挀漀氀漀爀㨀 眀栀椀琀攀㬀 border-radius: 10px; 戀漀砀ⴀ猀栀愀搀漀眀㨀 ㈀瀀砀 瀀砀 爀最戀愀⠀ Ⰰ Ⰰ Ⰰ ⸀ 㔀⤀㬀 border-left: 3px solid var(--primary-color); 紀 ⸀挀漀爀爀攀挀琀ⴀ愀渀猀眀攀爀 笀 color: var(--success-color); 昀漀渀琀ⴀ眀攀椀最栀琀㨀 㘀 㬀 } .user-correct { 挀漀氀漀爀㨀 瘀愀爀⠀ⴀⴀ猀甀挀挀攀猀猀ⴀ挀漀氀漀爀⤀㬀 font-weight: 600; 紀 ⸀甀猀攀爀ⴀ椀渀挀漀爀爀攀挀琀 笀 color: var(--danger-color); 昀漀渀琀ⴀ眀攀椀最栀琀㨀 㘀 㬀 text-decoration: line-through; 紀 ⸀挀栀愀瀀琀攀爀ⴀ猀攀氀攀挀琀椀漀渀ⴀ挀漀渀琀愀椀渀攀爀 笀 background-color: white; 瀀愀搀搀椀渀最㨀 ㈀㔀瀀砀㬀 border-radius: 15px; 戀漀砀ⴀ猀栀愀搀漀眀㨀 瘀愀爀⠀ⴀⴀ挀愀爀搀ⴀ猀栀愀搀漀眀⤀㬀 margin-bottom: 30px; 紀 ⸀挀栀愀瀀琀攀爀ⴀ氀椀猀琀 笀 columns: 2; 挀漀氀甀洀渀ⴀ最愀瀀㨀 ㌀ 瀀砀㬀 } .marks-list { 戀愀挀欀最爀漀甀渀搀ⴀ挀漀氀漀爀㨀 ⌀昀㠀昀㤀昀愀㬀 padding: 20px; 戀漀爀搀攀爀ⴀ爀愀搀椀甀猀㨀 瀀砀㬀 margin: 20px 0; 紀 ⸀洀愀爀欀猀ⴀ氀椀猀琀 氀愀戀攀氀 笀 display: block; 洀愀爀最椀渀ⴀ戀漀琀琀漀洀㨀 㔀瀀砀㬀 padding: 15px; 戀愀挀欀最爀漀甀渀搀ⴀ挀漀氀漀爀㨀 眀栀椀琀攀㬀 border-radius: 8px; 戀漀砀ⴀ猀栀愀搀漀眀㨀 ㈀瀀砀 㔀瀀砀 爀最戀愀⠀ Ⰰ Ⰰ Ⰰ ⸀ 㔀⤀㬀 transition: all 0.3s; 紀 ⸀洀愀爀欀猀ⴀ氀椀猀琀 氀愀戀攀氀㨀栀漀瘀攀爀 笀 transform: translateX(5px); 戀漀砀ⴀ猀栀愀搀漀眀㨀 㔀瀀砀 瀀砀 爀最戀愀⠀ Ⰰ Ⰰ Ⰰ ⸀⤀㬀 } /* Graphics Section */ ⸀最爀愀瀀栀椀挀猀ⴀ猀攀挀琀椀漀渀 笀 display: flex; 昀氀攀砀ⴀ眀爀愀瀀㨀 眀爀愀瀀㬀 justify-content: space-around; 洀愀爀最椀渀㨀 ㌀ 瀀砀 㬀 gap: 20px; 紀 ⸀最爀愀瀀栀椀挀ⴀ挀愀爀搀 笀 background: white; 戀漀爀搀攀爀ⴀ爀愀搀椀甀猀㨀 瀀砀㬀 padding: 20px; 眀椀搀琀栀㨀 㔀 瀀砀㬀 text-align: center; 戀漀砀ⴀ猀栀愀搀漀眀㨀 瘀愀爀⠀ⴀⴀ挀愀爀搀ⴀ猀栀愀搀漀眀⤀㬀 transition: transform 0.3s; 戀漀爀搀攀爀ⴀ琀漀瀀㨀 ㌀瀀砀 猀漀氀椀搀 瘀愀爀⠀ⴀⴀ瀀爀椀洀愀爀礀ⴀ挀漀氀漀爀⤀㬀 } .graphic-card:hover { 琀爀愀渀猀昀漀爀洀㨀 琀爀愀渀猀氀愀琀攀夀⠀ⴀ㔀瀀砀⤀㬀 } .graphic-icon { 昀漀渀琀ⴀ猀椀稀攀㨀 ㈀⸀㔀爀攀洀㬀 color: var(--primary-color); 洀愀爀最椀渀ⴀ戀漀琀琀漀洀㨀 瀀砀㬀 } .graphic-title { 昀漀渀琀ⴀ猀椀稀攀㨀 ⸀㤀爀攀洀㬀 font-weight: 500; 挀漀氀漀爀㨀 瘀愀爀⠀ⴀⴀ搀愀爀欀ⴀ挀漀氀漀爀⤀㬀 } .slogan { 琀攀砀琀ⴀ愀氀椀最渀㨀 挀攀渀琀攀爀㬀 font-size: 1.2rem; 昀漀渀琀ⴀ猀琀礀氀攀㨀 椀琀愀氀椀挀㬀 color: var(--secondary-color); 洀愀爀最椀渀㨀 ㌀ 瀀砀 㬀 padding: 15px; 戀愀挀欀最爀漀甀渀搀㨀 爀最戀愀⠀㘀㜀Ⰰ 㤀㜀Ⰰ ㈀㌀㠀Ⰰ ⸀⤀㬀 border-radius: 8px; 戀漀爀搀攀爀ⴀ氀攀昀琀㨀 㐀瀀砀 猀漀氀椀搀 瘀愀爀⠀ⴀⴀ瀀爀椀洀愀爀礀ⴀ挀漀氀漀爀⤀㬀 } /* Exam Type Selection */ ⸀攀砀愀洀ⴀ琀礀瀀攀ⴀ猀攀氀攀挀琀椀漀渀 笀 background-color: white; 瀀愀搀搀椀渀最㨀 ㈀㔀瀀砀㬀 border-radius: 15px; 戀漀砀ⴀ猀栀愀搀漀眀㨀 瘀愀爀⠀ⴀⴀ挀愀爀搀ⴀ猀栀愀搀漀眀⤀㬀 margin-top: 20px; 紀 ⼀⨀ 匀攀氀攀挀琀攀搀 䌀栀愀瀀琀攀爀猀 䐀椀猀瀀氀愀礀 ⨀⼀ .selected-chapters-display { 戀愀挀欀最爀漀甀渀搀ⴀ挀漀氀漀爀㨀 ⌀昀㠀昀㤀昀愀㬀 padding: 15px; 戀漀爀搀攀爀ⴀ爀愀搀椀甀猀㨀 㠀瀀砀㬀 margin: 15px 0; 紀 ⸀猀攀氀攀挀琀攀搀ⴀ挀栀愀瀀琀攀爀 笀 display: inline-block; 戀愀挀欀最爀漀甀渀搀ⴀ挀漀氀漀爀㨀 瘀愀爀⠀ⴀⴀ瀀爀椀洀愀爀礀ⴀ挀漀氀漀爀⤀㬀 color: white; 瀀愀搀搀椀渀最㨀 㔀瀀砀 瀀砀㬀 border-radius: 15px; 洀愀爀最椀渀㨀 㔀瀀砀㬀 font-size: 0.9rem; 紀 ⼀⨀ 一攀砀琀 䈀甀琀琀漀渀 昀漀爀 䌀栀愀瀀琀攀爀 匀攀氀攀挀琀椀漀渀 ⨀⼀ .chapter-next-btn { 琀攀砀琀ⴀ愀氀椀最渀㨀 挀攀渀琀攀爀㬀 margin-top: 20px; 紀 ⼀⨀ 匀甀戀樀攀挀琀 匀攀氀攀挀琀椀漀渀 䌀愀爀搀猀 ⨀⼀ .subject-selection-container { 搀椀猀瀀氀愀礀㨀 昀氀攀砀㬀 flex-wrap: wrap; 樀甀猀琀椀昀礀ⴀ挀漀渀琀攀渀琀㨀 挀攀渀琀攀爀㬀 gap: 20px; 洀愀爀最椀渀㨀 ㌀ 瀀砀 㬀 } .subject-card { 眀椀搀琀栀㨀 㔀 瀀砀㬀 height: 150px; 戀愀挀欀最爀漀甀渀搀㨀 眀栀椀琀攀㬀 border-radius: 15px; 搀椀猀瀀氀愀礀㨀 昀氀攀砀㬀 flex-direction: column; 愀氀椀最渀ⴀ椀琀攀洀猀㨀 挀攀渀琀攀爀㬀 justify-content: center; 挀甀爀猀漀爀㨀 瀀漀椀渀琀攀爀㬀 transition: all 0.3s; 戀漀砀ⴀ猀栀愀搀漀眀㨀 瘀愀爀⠀ⴀⴀ挀愀爀搀ⴀ猀栀愀搀漀眀⤀㬀 border: 3px solid transparent; 紀 ⸀猀甀戀樀攀挀琀ⴀ挀愀爀搀㨀栀漀瘀攀爀 笀 transform: translateY(-5px); 戀漀砀ⴀ猀栀愀搀漀眀㨀 瘀愀爀⠀ⴀⴀ戀甀琀琀漀渀ⴀ栀漀瘀攀爀ⴀ猀栀愀搀漀眀⤀㬀 } .subject-card.selected { 戀漀爀搀攀爀ⴀ挀漀氀漀爀㨀 瘀愀爀⠀ⴀⴀ瀀爀椀洀愀爀礀ⴀ挀漀氀漀爀⤀㬀 background-color: rgba(67, 97, 238, 0.05); 紀 ⸀猀甀戀樀攀挀琀ⴀ椀挀漀渀 笀 font-size: 3rem; 洀愀爀最椀渀ⴀ戀漀琀琀漀洀㨀 瀀砀㬀 color: var(--primary-color); 紀 ⸀猀甀戀樀攀挀琀ⴀ渀愀洀攀 笀 font-weight: 500; 琀攀砀琀ⴀ愀氀椀最渀㨀 挀攀渀琀攀爀㬀 } .selected-subjects-display { 搀椀猀瀀氀愀礀㨀 昀氀攀砀㬀 flex-wrap: wrap; 最愀瀀㨀 瀀砀㬀 margin-top: 20px; 樀甀猀琀椀昀礀ⴀ挀漀渀琀攀渀琀㨀 挀攀渀琀攀爀㬀 } .selected-subject-chip { 戀愀挀欀最爀漀甀渀搀ⴀ挀漀氀漀爀㨀 瘀愀爀⠀ⴀⴀ瀀爀椀洀愀爀礀ⴀ挀漀氀漀爀⤀㬀 color: white; 瀀愀搀搀椀渀最㨀 㠀瀀砀 㔀瀀砀㬀 border-radius: 20px; 搀椀猀瀀氀愀礀㨀 昀氀攀砀㬀 align-items: center; 最愀瀀㨀 㠀瀀砀㬀 } .selected-subject-chip i { 挀甀爀猀漀爀㨀 瀀漀椀渀琀攀爀㬀 } /* Responsive styles */ 䀀洀攀搀椀愀 ⠀洀愀砀ⴀ眀椀搀琀栀㨀 㜀㘀㠀瀀砀⤀ 笀 .container { 瀀愀搀搀椀渀最㨀 ㈀ 瀀砀㬀 } h1 { 昀漀渀琀ⴀ猀椀稀攀㨀 ⸀㠀爀攀洀㬀 } .chapter-list { 挀漀氀甀洀渀猀㨀 㬀 } .navigation-buttons { 昀氀攀砀ⴀ搀椀爀攀挀琀椀漀渀㨀 挀漀氀甀洀渀㬀 } .btn { 眀椀搀琀栀㨀 ─㬀 margin: 5px 0; 紀 ⸀焀甀攀猀琀椀漀渀 笀 padding: 15px; 紀 ⸀最爀愀瀀栀椀挀猀ⴀ猀攀挀琀椀漀渀 笀 gap: 10px; 紀 ⸀最爀愀瀀栀椀挀ⴀ挀愀爀搀 笀 width: 120px; 瀀愀搀搀椀渀最㨀 㔀瀀砀㬀 } .subject-card { 眀椀搀琀栀㨀 ㈀ 瀀砀㬀 height: 120px; 紀 } @media (max-width: 480px) { 戀漀搀礀 笀 padding: 10px; 紀 ⸀挀漀渀琀愀椀渀攀爀 笀 padding: 15px; 紀 栀 笀 font-size: 1.5rem; 紀 ⸀猀挀漀爀攀 笀 font-size: 2rem; 紀 ⸀最爀愀瀀栀椀挀ⴀ挀愀爀搀 笀 width: 100px; 瀀愀搀搀椀渀最㨀 瀀砀㬀 } .graphic-icon { 昀漀渀琀ⴀ猀椀稀攀㨀 ㈀爀攀洀㬀 } .subject-card { 眀椀搀琀栀㨀 瀀砀㬀 height: 100px; 紀 ⸀猀甀戀樀攀挀琀ⴀ椀挀漀渀 笀 font-size: 2rem; 紀 } 㰀⼀猀琀礀氀攀㸀 㰀猀挀爀椀瀀琀 愀猀礀渀挀 猀爀挀㴀∀栀琀琀瀀猀㨀⼀⼀瀀愀最攀愀搀㈀⸀最漀漀最氀攀猀礀渀搀椀挀愀琀椀漀渀⸀挀漀洀⼀瀀愀最攀愀搀⼀樀猀⼀愀搀猀戀礀最漀漀最氀攀⸀樀猀㼀挀氀椀攀渀琀㴀挀愀ⴀ瀀甀戀ⴀ㐀㤀㌀ ㌀㜀㌀㌀㘀㔀㔀㘀㠀㘀㜀∀ crossorigin="anonymous"> 㰀猀挀爀椀瀀琀 愀猀礀渀挀 猀爀挀㴀∀栀琀琀瀀猀㨀⼀⼀眀眀眀⸀最漀漀最氀攀琀愀最洀愀渀愀最攀爀⸀挀漀洀⼀最琀愀最⼀樀猀㼀椀搀㴀䜀ⴀ䬀䴀娀㤀刀䨀㘀㈀䔀夀∀㸀㰀⼀猀挀爀椀瀀琀㸀 㰀⼀栀攀愀搀㸀 㰀搀椀瘀 挀氀愀猀猀㴀∀挀漀渀琀愀椀渀攀爀∀㸀Question ${currentQuestionIndex + 1} of ${quizQuestions.length}
㰀瀀㸀␀笀挀甀爀爀攀渀琀儀甀攀猀琀椀漀渀⸀焀甀攀猀琀椀漀渀紀㰀⼀瀀㸀 `; currentQuestion.options.forEach((option, index) => { 挀漀渀猀琀 漀瀀琀椀漀渀䐀椀瘀 㴀 搀漀挀甀洀攀渀琀⸀挀爀攀愀琀攀䔀氀攀洀攀渀琀⠀✀搀椀瘀✀⤀㬀 optionDiv.className = 'option'; const radio = document.createElement('input'); 爀愀搀椀漀⸀琀礀瀀攀 㴀 ✀爀愀搀椀漀✀㬀 radio.name = 'option'; 爀愀搀椀漀⸀椀搀 㴀 怀漀瀀琀椀漀渀ⴀ␀笀挀甀爀爀攀渀琀儀甀攀猀琀椀漀渀䤀渀搀攀砀紀ⴀ␀笀椀渀搀攀砀紀怀㬀 radio.value = option; 爀愀搀椀漀⸀挀栀攀挀欀攀搀 㴀 挀甀爀爀攀渀琀儀甀攀猀琀椀漀渀⸀猀攀氀攀挀琀攀搀伀瀀琀椀漀渀 㴀㴀㴀 漀瀀琀椀漀渀㬀 挀漀渀猀琀 氀愀戀攀氀 㴀 搀漀挀甀洀攀渀琀⸀挀爀攀愀琀攀䔀氀攀洀攀渀琀⠀✀氀愀戀攀氀✀⤀㬀 label.htmlFor = `option-${currentQuestionIndex}-${index}`; 氀愀戀攀氀⸀琀攀砀琀䌀漀渀琀攀渀琀 㴀 漀瀀琀椀漀渀㬀 漀瀀琀椀漀渀䐀椀瘀⸀愀瀀瀀攀渀搀䌀栀椀氀搀⠀爀愀搀椀漀⤀㬀 optionDiv.appendChild(label); 焀甀攀猀琀椀漀渀䔀氀攀洀攀渀琀⸀愀瀀瀀攀渀搀䌀栀椀氀搀⠀漀瀀琀椀漀渀䐀椀瘀⤀㬀 }); quizDiv.appendChild(questionElement); 甀瀀搀愀琀攀一愀瘀椀最愀琀椀漀渀䈀甀琀琀漀渀猀⠀⤀㬀 } function updateNavigationButtons() { 搀漀挀甀洀攀渀琀⸀最攀琀䔀氀攀洀攀渀琀䈀礀䤀搀⠀✀瀀爀攀瘀椀漀甀猀✀⤀⸀挀氀愀猀猀䰀椀猀琀⸀琀漀最最氀攀⠀✀栀椀搀搀攀渀✀Ⰰ 挀甀爀爀攀渀琀儀甀攀猀琀椀漀渀䤀渀搀攀砀 㴀㴀㴀 ⤀㬀 document.getElementById('next').classList.toggle('hidden', currentQuestionIndex === quizQuestions.length - 1); 紀 搀漀挀甀洀攀渀琀⸀最攀琀䔀氀攀洀攀渀琀䈀礀䤀搀⠀✀瀀爀攀瘀椀漀甀猀✀⤀⸀愀搀搀䔀瘀攀渀琀䰀椀猀琀攀渀攀爀⠀✀挀氀椀挀欀✀Ⰰ 昀甀渀挀琀椀漀渀⠀⤀ 笀 saveAnswer(); 椀昀 ⠀挀甀爀爀攀渀琀儀甀攀猀琀椀漀渀䤀渀搀攀砀 㸀 ⤀ 笀 currentQuestionIndex--; 搀椀猀瀀氀愀礀儀甀攀猀琀椀漀渀⠀⤀㬀 } 紀⤀㬀 搀漀挀甀洀攀渀琀⸀最攀琀䔀氀攀洀攀渀琀䈀礀䤀搀⠀✀渀攀砀琀✀⤀⸀愀搀搀䔀瘀攀渀琀䰀椀猀琀攀渀攀爀⠀✀挀氀椀挀欀✀Ⰰ 昀甀渀挀琀椀漀渀⠀⤀ 笀 saveAnswer(); 椀昀 ⠀挀甀爀爀攀渀琀儀甀攀猀琀椀漀渀䤀渀搀攀砀 㰀 焀甀椀稀儀甀攀猀琀椀漀渀猀⸀氀攀渀最琀栀 ⴀ ⤀ 笀 currentQuestionIndex++; 搀椀猀瀀氀愀礀儀甀攀猀琀椀漀渀⠀⤀㬀 } 紀⤀㬀 搀漀挀甀洀攀渀琀⸀最攀琀䔀氀攀洀攀渀琀䈀礀䤀搀⠀✀猀甀戀洀椀琀✀⤀⸀愀搀搀䔀瘀攀渀琀䰀椀猀琀攀渀攀爀⠀✀挀氀椀挀欀✀Ⰰ 昀甀渀挀琀椀漀渀⠀⤀ 笀 if (confirm('Are you sure you want to submit your JEE Physics exam?')) { 猀愀瘀攀䄀渀猀眀攀爀⠀⤀㬀 clearInterval(timer); 猀栀漀眀刀攀猀甀氀琀猀⠀⤀㬀 } 紀⤀㬀 昀甀渀挀琀椀漀渀 猀愀瘀攀䄀渀猀眀攀爀⠀⤀ 笀 const selectedOption = document.querySelector('#quiz input[name="option"]:checked'); 椀昀 ⠀猀攀氀攀挀琀攀搀伀瀀琀椀漀渀⤀ 笀 quizQuestions[currentQuestionIndex].selectedOption = selectedOption.value; 紀 } function startTimer() { 琀椀洀攀䰀攀昀琀 㴀 猀攀氀攀挀琀攀搀䴀愀爀欀猀 㴀㴀㴀 㼀 㘀 㨀 猀攀氀攀挀琀攀搀䴀愀爀欀猀 㴀㴀㴀 ㈀ 㼀 㤀 㨀 ㈀ 㬀 甀瀀搀愀琀攀吀椀洀攀爀䐀椀猀瀀氀愀礀⠀⤀㬀 琀椀洀攀爀 㴀 猀攀琀䤀渀琀攀爀瘀愀氀⠀昀甀渀挀琀椀漀渀⠀⤀ 笀 timeLeft--; 甀瀀搀愀琀攀吀椀洀攀爀䐀椀猀瀀氀愀礀⠀⤀㬀 椀昀 ⠀琀椀洀攀䰀攀昀琀 㰀㴀 ⤀ 笀 clearInterval(timer); 愀氀攀爀琀⠀✀吀椀洀攀 椀猀 甀瀀℀ 夀漀甀爀 䨀䔀䔀 倀栀礀猀椀挀猀 攀砀愀洀 眀椀氀氀 戀攀 猀甀戀洀椀琀琀攀搀 愀甀琀漀洀愀琀椀挀愀氀氀礀⸀✀⤀㬀 showResults(); 紀 }, 1000); 紀 昀甀渀挀琀椀漀渀 甀瀀搀愀琀攀吀椀洀攀爀䐀椀猀瀀氀愀礀⠀⤀ 笀 const timeElement = document.getElementById('time'); 琀椀洀攀䔀氀攀洀攀渀琀⸀琀攀砀琀䌀漀渀琀攀渀琀 㴀 昀漀爀洀愀琀吀椀洀攀⠀琀椀洀攀䰀攀昀琀⤀㬀 ⼀⼀ 䌀栀愀渀最攀 挀漀氀漀爀 戀愀猀攀搀 漀渀 爀攀洀愀椀渀椀渀最 琀椀洀攀 if (timeLeft <= 60) { 琀椀洀攀䔀氀攀洀攀渀琀⸀挀氀愀猀猀一愀洀攀 㴀 ✀搀愀渀最攀爀✀㬀 } else if (timeLeft <= 180) { 琀椀洀攀䔀氀攀洀攀渀琀⸀挀氀愀猀猀一愀洀攀 㴀 ✀眀愀爀渀椀渀最✀㬀 } else { 琀椀洀攀䔀氀攀洀攀渀琀⸀挀氀愀猀猀一愀洀攀 㴀 ✀✀㬀 } 紀 昀甀渀挀琀椀漀渀 昀漀爀洀愀琀吀椀洀攀⠀猀攀挀漀渀搀猀⤀ 笀 const minutes = Math.floor(seconds / 60); 挀漀渀猀琀 猀攀挀猀 㴀 猀攀挀漀渀搀猀 ─ 㘀 㬀 return `${minutes}:${secs < 10 ? '0' : ''}${secs}`; 紀 昀甀渀挀琀椀漀渀 猀栀漀眀刀攀猀甀氀琀猀⠀⤀ 笀 // Calculate results 挀漀渀猀琀 挀漀爀爀攀挀琀䌀漀甀渀琀 㴀 焀甀椀稀儀甀攀猀琀椀漀渀猀⸀爀攀搀甀挀攀⠀⠀愀挀挀Ⰰ 焀⤀ 㴀㸀 愀挀挀 ⬀ ⠀焀⸀猀攀氀攀挀琀攀搀伀瀀琀椀漀渀 㴀㴀㴀 焀⸀愀渀猀眀攀爀 㼀 㨀 ⤀Ⰰ ⤀㬀 const percentage = Math.round((correctCount / quizQuestions.length) * 100); // Hide exam screen 搀漀挀甀洀攀渀琀⸀最攀琀䔀氀攀洀攀渀琀䈀礀䤀搀⠀✀攀砀愀洀ⴀ猀挀爀攀攀渀✀⤀⸀挀氀愀猀猀䰀椀猀琀⸀愀搀搀⠀✀栀椀搀搀攀渀✀⤀㬀 ⼀⼀ 䐀椀猀瀀氀愀礀 爀攀猀甀氀琀猀 挀愀爀搀 const resultsDiv = document.getElementById('results'); 爀攀猀甀氀琀猀䐀椀瘀⸀椀渀渀攀爀䠀吀䴀䰀 㴀 怀Subject: Physics
㰀搀椀瘀 挀氀愀猀猀㴀∀猀挀漀爀攀∀㸀␀笀挀漀爀爀攀挀琀䌀漀甀渀琀紀⼀␀笀焀甀椀稀儀甀攀猀琀椀漀渀猀⸀氀攀渀最琀栀紀㰀⼀搀椀瘀㸀Attempted: ${quizQuestions.filter(q => q.selectedOption).length}
㰀瀀㸀䌀漀爀爀攀挀琀 愀渀猀眀攀爀猀㨀 ␀笀挀漀爀爀攀挀琀䌀漀甀渀琀紀㰀⼀瀀㸀Incorrect answers: ${quizQuestions.filter(q => q.selectedOption && q.selectedOption !== q.answer).length}
㰀瀀㸀唀渀愀琀琀攀洀瀀琀攀搀㨀 ␀笀焀甀椀稀儀甀攀猀琀椀漀渀猀⸀昀椀氀琀攀爀⠀焀 㴀㸀 ℀焀⸀猀攀氀攀挀琀攀搀伀瀀琀椀漀渀⤀⸀氀攀渀最琀栀紀㰀⼀瀀㸀 `; // Add detailed question review 焀甀椀稀儀甀攀猀琀椀漀渀猀⸀昀漀爀䔀愀挀栀⠀⠀焀Ⰰ 椀渀搀攀砀⤀ 㴀㸀 笀 const questionDiv = document.createElement('div'); 焀甀攀猀琀椀漀渀䐀椀瘀⸀挀氀愀猀猀一愀洀攀 㴀 ✀猀甀洀洀愀爀礀ⴀ椀琀攀洀✀㬀 氀攀琀 猀琀愀琀甀猀䌀氀愀猀猀 㴀 ✀✀㬀 if (q.selectedOption === q.answer) { 猀琀愀琀甀猀䌀氀愀猀猀 㴀 ✀甀猀攀爀ⴀ挀漀爀爀攀挀琀✀㬀 } else if (q.selectedOption && q.selectedOption !== q.answer) { 猀琀愀琀甀猀䌀氀愀猀猀 㴀 ✀甀猀攀爀ⴀ椀渀挀漀爀爀攀挀琀✀㬀 } questionDiv.innerHTML = ` 㰀瀀㸀㰀猀琀爀漀渀最㸀儀甀攀猀琀椀漀渀 ␀笀椀渀搀攀砀 ⬀ 紀㨀㰀⼀猀琀爀漀渀最㸀 ␀笀焀⸀焀甀攀猀琀椀漀渀紀㰀⼀瀀㸀Your answer: ${q.selectedOption || 'Not attempted'}
㰀瀀 挀氀愀猀猀㴀∀挀漀爀爀攀挀琀ⴀ愀渀猀眀攀爀∀㸀䌀漀爀爀攀挀琀 愀渀猀眀攀爀㨀 ␀笀焀⸀愀渀猀眀攀爀紀㰀⼀瀀㸀 `; summaryDiv.appendChild(questionDiv); 紀⤀㬀 ⼀⼀ 匀栀漀眀 搀攀琀愀椀氀猀 戀甀琀琀漀渀 昀甀渀挀琀椀漀渀愀氀椀琀礀 document.getElementById('view-details').addEventListener('click', function() { 猀甀洀洀愀爀礀䐀椀瘀⸀挀氀愀猀猀䰀椀猀琀⸀琀漀最最氀攀⠀✀栀椀搀搀攀渀✀⤀㬀 this.textContent = summaryDiv.classList.contains('hidden') ? 'View Detailed Results' : 'Hide Detailed Results'; 紀⤀㬀 } 㰀⼀猀挀爀椀瀀琀㸀 㰀⼀栀琀洀氀㸀�