<!-- ======================================================== --> <!-- TRẮC NGHIỆM BÁT TỰ - Ngũ hành, Thiên Can, Địa Chi --> <!-- WordPress safe iframe (JNews compatible) --> <!-- Paste into Custom HTML block in Gutenberg --> <!-- ======================================================== --> <style> .lt-wrap-lt-quiz-frame { display: block !important; width: 100% !important; max-width: 100% !important; margin: 30px 0 !important; padding: 0 !important; background: transparent !important; border: 0 !important; position: relative !important; overflow: visible !important; box-sizing: border-box !important; height: auto !important; max-height: none !important; contain: none !important; } .lt-wrap-lt-quiz-frame > iframe { width: 100% !important; max-width: 100% !important; border: 0 !important; display: block !important; background: transparent !important; padding: 0 !important; margin: 0 !important; max-height: none !important; min-height: 0 !important; vertical-align: top !important; } </style> <div class="lt-wrap-lt-quiz-frame"> <iframe id="lt-quiz-frame" height="1400" loading="eager" scrolling="no" srcdoc="<!DOCTYPE html> <html lang="vi"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0, viewport-fit=cover"> <title>Trắc nghiệm — Ngũ hành, Thiên Can, Địa Chi</title> <link rel="preconnect" href="https://fonts.googleapis.com"> <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin> <link href="https://fonts.googleapis.com/css2?family=Cormorant+Garamond:ital,wght@0,400;0,500;0,600;0,700;1,400;1,600;1,700&family=Be+Vietnam+Pro:wght@300;400;500;600;700&display=swap" rel="stylesheet"> <style> :root { --bg: #0b0812; --bg-2: #15101f; --bg-3: #1c1528; --ink: #f2e8d1; --ink-dim: #a89878; --ink-soft: #c7b88f; --gold: #d4af37; --gold-bright: #f5d061; --gold-soft: rgba(212, 175, 55, 0.35); --crimson: #9e1b3f; --deep-red: #5c0a1a; --jade: #4a8574; --green: #7ed39e; --red: #ef6a6a; } * { box-sizing: border-box; margin: 0; padding: 0; } html { background: var(--bg); } body { background: var(--bg); color: var(--ink); font-family: 'Be Vietnam Pro', -apple-system, sans-serif; overflow-x: hidden; line-height: 1.65; font-size: 15px; -webkit-font-smoothing: antialiased; position: relative; min-height: 0; } /* Background layers */ .bg-gradient { position: fixed; inset: 0; z-index: 0; background: radial-gradient(ellipse 80% 50% at 50% 0%, rgba(139, 30, 63, 0.18), transparent 60%), radial-gradient(ellipse 60% 40% at 100% 50%, rgba(212, 175, 55, 0.08), transparent 60%), radial-gradient(ellipse 70% 50% at 0% 100%, rgba(92, 10, 26, 0.22), transparent 60%); pointer-events: none; } .stars { position: fixed; inset: 0; z-index: 1; pointer-events: none; background-image: radial-gradient(1.2px 1.2px at 23px 34px, rgba(212,175,55,0.6), transparent), radial-gradient(1px 1px at 67px 128px, rgba(244,234,213,0.45), transparent), radial-gradient(1.5px 1.5px at 142px 76px, rgba(212,175,55,0.55), transparent), radial-gradient(1px 1px at 198px 199px, rgba(244,234,213,0.35), transparent), radial-gradient(1px 1px at 253px 54px, rgba(212,175,55,0.45), transparent); background-size: 300px 280px; animation: twinkle 6s ease-in-out infinite; } @keyframes twinkle { 0%,100% { opacity: 0.5; } 50% { opacity: 1; } } @keyframes rotate { from { transform: rotate(0); } to { transform: rotate(360deg); } } @keyframes fadeUp { from { opacity: 0; transform: translateY(15px); } to { opacity: 1; transform: translateY(0); } } @keyframes fadeIn { from { opacity: 0; } to { opacity: 1; } } @keyframes pulse { 0%,100% { transform: scale(1); } 50% { transform: scale(1.05); } } @keyframes shake { 0%, 100% { transform: translateX(0); } 25% { transform: translateX(-4px); } 75% { transform: translateX(4px); } } @keyframes correctPop { 0% { transform: scale(0.95); } 50% { transform: scale(1.02); } 100% { transform: scale(1); } } /* Avatar pin */ .avatar-pin { position: fixed; top: 16px; right: 16px; width: 100px; height: 100px; z-index: 50; pointer-events: none; animation: pinFloat 6s ease-in-out infinite; } @keyframes pinFloat { 0%, 100% { transform: translateY(0); } 50% { transform: translateY(-3px); } } .avatar-pin .avatar-img { position: absolute; inset: 8px; border-radius: 50%; background-image: url("data:image/jpeg;base64,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"); background-size: cover; background-position: center; border: 2px solid var(--gold); box-shadow: 0 0 0 2px var(--bg), 0 0 14px rgba(212,175,55,0.6), 0 4px 16px rgba(0,0,0,0.6); animation: avatarBreathe 3s ease-in-out infinite; z-index: 2; } @keyframes avatarBreathe { 0%, 100% { box-shadow: 0 0 0 2px var(--bg), 0 0 14px rgba(212,175,55,0.6), 0 4px 16px rgba(0,0,0,0.6); } 50% { box-shadow: 0 0 0 2px var(--bg), 0 0 22px rgba(212,175,55,0.85), 0 4px 16px rgba(0,0,0,0.6); } } .avatar-pin .avatar-ring { position: absolute; inset: 0; border-radius: 50%; border: 1px dashed rgba(212,175,55,0.6); animation: rotate 18s linear infinite; pointer-events: none; } .avatar-pin .avatar-ring.r2 { inset: -5px; border: 1px solid rgba(212,175,55,0.22); animation: rotate 30s linear infinite reverse; } /* App container */ .app { position: relative; z-index: 5; max-width: 460px; margin: 0 auto; padding: 28px 22px 60px; } .view { display: none; animation: fadeIn 0.4s ease; } .view.active { display: block; } /* ==== HERO ==== */ .hero { text-align: center; padding: 24px 0 36px; } .hero-tag { font-family: 'Cormorant Garamond', serif; font-style: italic; font-size: 12px; letter-spacing: 4px; text-transform: uppercase; color: var(--gold); margin-bottom: 18px; display: block; } .hero-tag::before, .hero-tag::after { content: '⟢'; margin: 0 10px; opacity: 0.7; } .hero-chinese { font-family: 'Cormorant Garamond', serif; font-size: 56px; line-height: 1; font-weight: 400; color: transparent; background: linear-gradient(180deg, var(--gold-bright), var(--gold), rgba(212,175,55,0.3)); -webkit-background-clip: text; background-clip: text; margin: 12px 0 8px; letter-spacing: 8px; padding-left: 8px; text-shadow: 0 0 30px rgba(212,175,55,0.3); } .hero h1 { font-family: 'Cormorant Garamond', serif; font-weight: 600; font-size: 30px; line-height: 1.15; color: var(--ink); margin: 4px 0 14px; } .hero h1 em { font-style: italic; color: var(--gold-bright); } .hero-rule { width: 80px; height: 1px; background: linear-gradient(90deg, transparent, var(--gold), transparent); margin: 8px auto 18px; } .hero-intro { font-family: 'Cormorant Garamond', serif; font-style: italic; font-size: 16px; color: var(--ink-soft); line-height: 1.55; padding: 0 4px; max-width: 380px; margin: 0 auto; } .hero-intro em { color: var(--gold-bright); font-weight: 600; } /* Start screen meta */ .meta-row { display: flex; gap: 12px; justify-content: center; margin: 24px 0 28px; flex-wrap: wrap; } .meta-item { background: linear-gradient(155deg, rgba(28,21,40,0.7), rgba(21,16,31,0.5)); border: 1px solid rgba(212,175,55,0.25); border-radius: 4px; padding: 12px 16px; text-align: center; min-width: 90px; } .meta-item .num { font-family: 'Cormorant Garamond', serif; font-style: italic; font-weight: 700; font-size: 22px; color: var(--gold-bright); display: block; line-height: 1; } .meta-item .lbl { font-family: 'Cormorant Garamond', serif; font-style: italic; font-size: 11px; letter-spacing: 2px; text-transform: uppercase; color: var(--gold); margin-top: 4px; } /* Sections in start screen */ .sect-list { margin: 24px 0 28px; display: flex; flex-direction: column; gap: 10px; } .sect-card { background: linear-gradient(155deg, rgba(28,21,40,0.6), rgba(21,16,31,0.4)); border: 1px solid rgba(212,175,55,0.18); border-left: 3px solid var(--gold); border-radius: 4px; padding: 14px 16px; display: flex; align-items: center; gap: 14px; } .sect-card .icon { flex-shrink: 0; width: 38px; height: 38px; border-radius: 50%; background: rgba(212,175,55,0.1); border: 1px solid var(--gold); display: flex; align-items: center; justify-content: center; font-family: 'Cormorant Garamond', serif; font-weight: 700; font-style: italic; font-size: 17px; color: var(--gold-bright); } .sect-card .info { flex: 1; } .sect-card .name { font-family: 'Cormorant Garamond', serif; font-weight: 600; font-size: 16px; color: var(--ink); margin-bottom: 2px; } .sect-card .desc { font-family: 'Cormorant Garamond', serif; font-style: italic; font-size: 13px; color: var(--ink-dim); } /* Big start button */ .btn-primary { display: block; width: 100%; margin: 28px auto 0; padding: 16px 24px; background: linear-gradient(145deg, var(--crimson), var(--deep-red)); border: 1px solid var(--gold); border-radius: 4px; color: var(--gold-bright); font-family: 'Cormorant Garamond', serif; font-style: italic; font-weight: 700; font-size: 18px; letter-spacing: 3px; text-transform: uppercase; cursor: pointer; box-shadow: 0 0 24px rgba(158,27,63,0.4), inset 0 0 15px rgba(0,0,0,0.3); -webkit-tap-highlight-color: transparent; transition: transform 0.2s ease, box-shadow 0.2s ease; } .btn-primary:hover, .btn-primary:active { transform: translateY(-2px); box-shadow: 0 6px 32px rgba(158,27,63,0.6), inset 0 0 15px rgba(0,0,0,0.3); } /* ==== QUIZ VIEW ==== */ .progress-bar { display: flex; align-items: center; gap: 8px; margin: 8px 0 24px; } .progress-track { flex: 1; height: 4px; background: rgba(212,175,55,0.15); border-radius: 2px; overflow: hidden; } .progress-fill { height: 100%; background: linear-gradient(90deg, var(--crimson), var(--gold)); border-radius: 2px; transition: width 0.4s ease; box-shadow: 0 0 6px var(--gold); } .progress-text { font-family: 'Cormorant Garamond', serif; font-style: italic; font-size: 13px; color: var(--gold); white-space: nowrap; } .progress-text strong { color: var(--gold-bright); font-weight: 700; } .q-section-tag { text-align: center; margin-bottom: 14px; } .q-section-tag span { font-family: 'Cormorant Garamond', serif; font-style: italic; font-size: 11px; letter-spacing: 4px; text-transform: uppercase; color: var(--gold); background: rgba(212,175,55,0.08); border: 1px solid rgba(212,175,55,0.3); padding: 4px 12px; border-radius: 2px; } .q-card { background: linear-gradient(155deg, rgba(28,21,40,0.92), rgba(21,16,31,0.75)); border: 1px solid rgba(212,175,55,0.25); border-radius: 4px; padding: 24px 22px; margin-bottom: 20px; position: relative; animation: fadeUp 0.5s ease; } .q-card::before { content: ''; position: absolute; top: 0; left: 24px; width: 30px; height: 1px; background: var(--gold); box-shadow: 0 0 6px var(--gold); } .q-card .q-num { position: absolute; top: -14px; left: 18px; background: var(--bg); padding: 0 10px; font-family: 'Cormorant Garamond', serif; font-style: italic; font-size: 12px; letter-spacing: 2px; color: var(--gold); text-transform: uppercase; } .q-card h2 { font-family: 'Cormorant Garamond', serif; font-weight: 600; font-size: 19px; line-height: 1.4; color: var(--ink); margin-bottom: 4px; } .q-card h2 em { font-style: italic; color: var(--gold-bright); } /* Options */ .options { display: flex; flex-direction: column; gap: 10px; margin-top: 18px; } .opt-btn { width: 100%; text-align: left; background: linear-gradient(155deg, rgba(15,11,22,0.7), rgba(11,8,18,0.5)); border: 1px solid rgba(212,175,55,0.2); border-radius: 4px; padding: 13px 14px 13px 48px; font-family: 'Be Vietnam Pro', sans-serif; font-size: 15px; line-height: 1.5; color: var(--ink-soft); cursor: pointer; position: relative; transition: all 0.2s ease; -webkit-tap-highlight-color: transparent; } .opt-btn:hover:not(:disabled) { border-color: var(--gold-soft); background: linear-gradient(155deg, rgba(28,21,40,0.85), rgba(21,16,31,0.65)); color: var(--ink); transform: translateX(2px); } .opt-btn .opt-letter { position: absolute; left: 14px; top: 50%; transform: translateY(-50%); width: 24px; height: 24px; border-radius: 50%; border: 1px solid rgba(212,175,55,0.4); display: flex; align-items: center; justify-content: center; font-family: 'Cormorant Garamond', serif; font-style: italic; font-weight: 700; font-size: 13px; color: var(--gold); background: rgba(212,175,55,0.05); transition: all 0.2s ease; } .opt-btn:hover:not(:disabled) .opt-letter { border-color: var(--gold); background: rgba(212,175,55,0.15); color: var(--gold-bright); } .opt-btn:disabled { cursor: default; } /* Correct answer */ .opt-btn.correct { background: linear-gradient(155deg, rgba(126,211,158,0.18), rgba(74,133,116,0.1)); border-color: var(--green); color: var(--ink); animation: correctPop 0.4s ease; } .opt-btn.correct .opt-letter { background: var(--green); border-color: var(--green); color: var(--bg); } .opt-btn.correct::after { content: '✓'; position: absolute; right: 14px; top: 50%; transform: translateY(-50%); color: var(--green); font-weight: 700; font-size: 18px; } /* Wrong answer */ .opt-btn.wrong { background: linear-gradient(155deg, rgba(239,106,106,0.15), rgba(158,27,63,0.08)); border-color: var(--red); color: var(--ink); animation: shake 0.4s ease; } .opt-btn.wrong .opt-letter { background: var(--red); border-color: var(--red); color: var(--bg); } .opt-btn.wrong::after { content: '✕'; position: absolute; right: 14px; top: 50%; transform: translateY(-50%); color: var(--red); font-weight: 700; font-size: 18px; } .opt-btn.dimmed { opacity: 0.4; } /* Explanation box */ .explain { margin-top: 16px; padding: 14px 16px; background: rgba(212,175,55,0.06); border-left: 3px solid var(--gold); border-radius: 0 2px 2px 0; font-family: 'Cormorant Garamond', serif; font-style: italic; font-size: 15px; line-height: 1.55; color: var(--ink); display: none; animation: fadeUp 0.4s ease; } .explain.visible { display: block; } .explain strong { color: var(--gold-bright); font-style: normal; font-family: 'Be Vietnam Pro', sans-serif; font-weight: 700; font-size: 14.5px; } .explain em { color: var(--gold-bright); font-weight: 600; font-style: italic; } .explain .verdict { display: inline-block; padding: 2px 10px; border-radius: 2px; font-family: 'Be Vietnam Pro', sans-serif; font-style: normal; font-weight: 700; font-size: 13px; letter-spacing: 1px; text-transform: uppercase; margin-bottom: 8px; } .explain.is-correct .verdict { background: rgba(126,211,158,0.15); border: 1px solid var(--green); color: var(--green); } .explain.is-wrong .verdict { background: rgba(239,106,106,0.12); border: 1px solid var(--red); color: var(--red); } /* Next button */ .next-btn { display: none; width: 100%; margin-top: 18px; padding: 14px 20px; background: linear-gradient(145deg, var(--crimson), var(--deep-red)); border: 1px solid var(--gold); border-radius: 4px; color: var(--gold-bright); font-family: 'Cormorant Garamond', serif; font-style: italic; font-weight: 700; font-size: 15px; letter-spacing: 2px; text-transform: uppercase; cursor: pointer; -webkit-tap-highlight-color: transparent; transition: all 0.2s ease; } .next-btn.visible { display: block; animation: fadeUp 0.4s ease; } .next-btn:hover { transform: translateY(-2px); box-shadow: 0 4px 20px rgba(158,27,63,0.5); } /* ==== RESULT VIEW ==== */ .result-hero { text-align: center; padding: 30px 0 20px; } .result-circle { width: 160px; height: 160px; margin: 0 auto 24px; border-radius: 50%; background: radial-gradient(circle at 50% 40%, rgba(212,175,55,0.25), transparent 60%), linear-gradient(145deg, var(--bg-3), var(--bg-2)); border: 2px solid var(--gold); display: flex; flex-direction: column; align-items: center; justify-content: center; position: relative; box-shadow: 0 0 0 6px rgba(212,175,55,0.05), 0 0 40px rgba(212,175,55,0.2), inset 0 0 30px rgba(212,175,55,0.1); animation: correctPop 0.6s ease; } .result-circle::before { content: ''; position: absolute; inset: -12px; border-radius: 50%; border: 1px dashed var(--gold-soft); animation: rotate 60s linear infinite; } .result-score { font-family: 'Cormorant Garamond', serif; font-weight: 700; font-size: 56px; line-height: 1; color: var(--gold-bright); text-shadow: 0 0 20px rgba(245,208,97,0.4); } .result-total { font-family: 'Cormorant Garamond', serif; font-style: italic; font-size: 14px; color: var(--ink-dim); margin-top: 4px; letter-spacing: 2px; } .result-label { font-family: 'Cormorant Garamond', serif; font-style: italic; font-size: 12px; letter-spacing: 4px; text-transform: uppercase; color: var(--gold); margin-bottom: 10px; display: block; } .result-title { font-family: 'Cormorant Garamond', serif; font-weight: 600; font-size: 26px; line-height: 1.2; color: var(--ink); margin-bottom: 8px; } .result-title em { font-style: italic; color: var(--gold-bright); } .result-msg { font-family: 'Cormorant Garamond', serif; font-style: italic; font-size: 16px; line-height: 1.55; color: var(--ink-soft); max-width: 380px; margin: 14px auto 0; } /* Result section breakdown */ .breakdown { margin: 32px 0 24px; display: flex; flex-direction: column; gap: 10px; } .breakdown-item { background: linear-gradient(155deg, rgba(28,21,40,0.7), rgba(21,16,31,0.5)); border: 1px solid rgba(212,175,55,0.2); border-radius: 4px; padding: 14px 16px; display: flex; align-items: center; gap: 14px; } .breakdown-item .ic { width: 36px; height: 36px; border-radius: 50%; background: rgba(212,175,55,0.1); border: 1px solid var(--gold); display: flex; align-items: center; justify-content: center; font-family: 'Cormorant Garamond', serif; font-weight: 700; font-style: italic; font-size: 16px; color: var(--gold-bright); flex-shrink: 0; } .breakdown-item .nm { flex: 1; font-family: 'Cormorant Garamond', serif; font-weight: 600; font-size: 15px; color: var(--ink); } .breakdown-item .sc { font-family: 'Cormorant Garamond', serif; font-style: italic; font-weight: 700; font-size: 17px; color: var(--gold-bright); } /* Action buttons */ .action-row { display: flex; gap: 10px; margin-top: 16px; } .btn-secondary { flex: 1; padding: 12px 16px; background: transparent; border: 1px solid var(--gold); border-radius: 4px; color: var(--gold); font-family: 'Cormorant Garamond', serif; font-style: italic; font-weight: 600; font-size: 14px; letter-spacing: 2px; cursor: pointer; -webkit-tap-highlight-color: transparent; transition: all 0.2s ease; } .btn-secondary:hover { background: rgba(212,175,55,0.08); color: var(--gold-bright); } /* Mobile adjustments */ @media (max-width: 400px) { .app { padding: 24px 16px 50px; } .hero h1 { font-size: 26px; } .hero-chinese { font-size: 48px; letter-spacing: 6px; } .q-card { padding: 22px 18px; } .q-card h2 { font-size: 17px; } .opt-btn { font-size: 14.5px; padding: 12px 12px 12px 44px; } .avatar-pin { width: 88px; height: 88px; top: 12px; right: 12px; } .result-circle { width: 140px; height: 140px; } .result-score { font-size: 48px; } .result-title { font-size: 22px; } } @media (max-width: 340px) { .avatar-pin { width: 76px; height: 76px; } .opt-btn { padding: 10px 10px 10px 40px; font-size: 14px; } } </style> </head> <body> <div class="bg-gradient"></div> <div class="stars"></div> <div class="avatar-pin"> <div class="avatar-ring r2"></div> <div class="avatar-ring"></div> <div class="avatar-img"></div> </div> <div class="app"> <!-- ============ START VIEW ============ --> <div class="view active" id="view-start"> <section class="hero"> <span class="hero-tag">Bát Tự Tử Bình</span> <div class="hero-chinese">五行 · 干支</div> <h1>Trắc nghiệm<br><em>Cơ bản</em></h1> <div class="hero-rule"></div> <p class="hero-intro"> Mười lăm câu hỏi về <em>Ngũ hành</em>, <em>Thiên Can</em> và <em>Địa Chi</em> — những viên gạch nền tảng của Bát Tự. Trả lời từng câu, xem giải thích ngay, không tính giờ. </p> </section> <div class="meta-row"> <div class="meta-item"> <span class="num">15</span> <span class="lbl">Câu hỏi</span> </div> <div class="meta-item"> <span class="num">3</span> <span class="lbl">Phần</span> </div> <div class="meta-item"> <span class="num">∞</span> <span class="lbl">Thời gian</span> </div> </div> <div class="sect-list"> <div class="sect-card"> <div class="icon">五</div> <div class="info"> <div class="name">Phần I — Ngũ hành</div> <div class="desc">5 câu về Mộc, Hỏa, Thổ, Kim, Thủy & quy luật sinh khắc</div> </div> </div> <div class="sect-card"> <div class="icon">干</div> <div class="info"> <div class="name">Phần II — Thiên Can</div> <div class="desc">5 câu về 10 Can, âm dương ngũ hành & tương hợp</div> </div> </div> <div class="sect-card"> <div class="icon">支</div> <div class="info"> <div class="name">Phần III — Địa Chi</div> <div class="desc">5 câu về 12 Chi, ngũ hành tàng & các quan hệ</div> </div> </div> </div> <button class="btn-primary" onclick="startQuiz()">⟢ Bắt đầu ⟢</button> </div> <!-- ============ QUIZ VIEW ============ --> <div class="view" id="view-quiz"> <div class="progress-bar"> <div class="progress-track"> <div class="progress-fill" id="progressFill" style="width: 0%"></div> </div> <div class="progress-text">Câu <strong id="qNumDisplay">1</strong> / 15</div> </div> <div class="q-section-tag"> <span id="qSectionLabel">Phần I — Ngũ hành</span> </div> <div class="q-card"> <div class="q-num" id="qLabel">Câu 1</div> <h2 id="qText">…</h2> <div class="options" id="qOptions"></div> <div class="explain" id="qExplain"></div> <button class="next-btn" id="nextBtn" onclick="nextQuestion()">Câu tiếp →</button> </div> </div> <!-- ============ RESULT VIEW ============ --> <div class="view" id="view-result"> <section class="result-hero"> <div class="result-circle"> <div class="result-score"><span id="finalScore">0</span></div> <div class="result-total">/ 15</div> </div> <span class="result-label">⟢ Kết quả ⟢</span> <h2 class="result-title" id="resultTitle">…</h2> <p class="result-msg" id="resultMsg">…</p> </section> <div class="breakdown"> <div class="breakdown-item"> <div class="ic">五</div> <div class="nm">Ngũ hành</div> <div class="sc"><span id="score1">0</span>/5</div> </div> <div class="breakdown-item"> <div class="ic">干</div> <div class="nm">Thiên Can</div> <div class="sc"><span id="score2">0</span>/5</div> </div> <div class="breakdown-item"> <div class="ic">支</div> <div class="nm">Địa Chi</div> <div class="sc"><span id="score3">0</span>/5</div> </div> </div> <div class="action-row"> <button class="btn-secondary" onclick="restartQuiz()">⟲ Làm lại</button> </div> </div> </div> <script> const QUESTIONS = [ // ===== PHẦN I — NGŨ HÀNH (5 câu) ===== { section: 1, sectionLabel: 'Phần I — Ngũ hành', text: 'Theo vòng <em>tương sinh</em>, Mộc sinh ra hành nào?', options: ['Hỏa', 'Thổ', 'Kim', 'Thủy'], correct: 0, explain: '<strong>Mộc sinh Hỏa</strong>. Vòng tương sinh đầy đủ: Mộc → Hỏa → Thổ → Kim → Thủy → Mộc. Cây gỗ cháy thành lửa — cách nhớ trực quan nhất.' }, { section: 1, sectionLabel: 'Phần I — Ngũ hành', text: 'Theo vòng <em>tương khắc</em>, Kim khắc hành nào?', options: ['Thổ', 'Mộc', 'Thủy', 'Hỏa'], correct: 1, explain: '<strong>Kim khắc Mộc</strong>. Vòng tương khắc: Mộc khắc Thổ → Thổ khắc Thủy → Thủy khắc Hỏa → Hỏa khắc Kim → Kim khắc Mộc. Búa rìu (Kim) chặt cây (Mộc).' }, { section: 1, sectionLabel: 'Phần I — Ngũ hành', text: 'Hành nào <em>khắc</em> Hỏa?', options: ['Mộc', 'Thổ', 'Kim', 'Thủy'], correct: 3, explain: '<strong>Thủy khắc Hỏa</strong>. Nước dập tắt lửa. Trong vòng khắc, mỗi hành bị một hành khác khắc — và Hỏa bị Thủy khắc.' }, { section: 1, sectionLabel: 'Phần I — Ngũ hành', text: 'Phát biểu nào <em>đúng</em> về quan hệ Mộc — Thổ?', options: [ 'Mộc sinh Thổ vì cây mục thành đất', 'Mộc khắc Thổ vì rễ cây hút chất từ đất', 'Thổ sinh Mộc vì đất nuôi cây', 'Hai hành không có quan hệ trực tiếp' ], correct: 1, explain: '<strong>Mộc khắc Thổ</strong>. Trong hệ tương khắc, rễ cây cắm sâu vào đất, hút chất dinh dưỡng — cây kiểm soát đất. <em>Lưu ý:</em> "Đất nuôi cây" chỉ là cảm nhận đời thường, không phải logic tương sinh trong Bát Tự.' }, { section: 1, sectionLabel: 'Phần I — Ngũ hành', text: 'Theo một trong những sách cổ nhất viết về ngũ hành (sách Lã Thị Xuân Thu), <em>ngũ hành</em> được hiểu là gì?', options: [ 'Năm chất vật lý: cây, lửa, đất, kim loại, nước', 'Năm loại khí vận hành trong trời đất', 'Năm vị thần trông coi bốn mùa', 'Năm cõi của vũ trụ' ], correct: 1, explain: '<strong>Năm loại khí vận hành (五行 = năm sự vận hành).</strong> Lã Thị Xuân Thu thời Tần định nghĩa ngũ hành là <em>khí</em>, không phải vật chất cụ thể. Cách hiểu "ngũ hành = ngũ chất" xuất hiện sau, từ thời nhà Hán, để dạy cho dễ — nhưng làm lệch bản chất gốc.' }, // ===== PHẦN II — THIÊN CAN (5 câu) ===== { section: 2, sectionLabel: 'Phần II — Thiên Can', text: 'Hệ Thiên Can có <em>bao nhiêu</em> Can?', options: ['8', '10', '12', '24'], correct: 1, explain: '<strong>10 Thiên Can</strong>: Giáp, Ất, Bính, Đinh, Mậu, Kỷ, Canh, Tân, Nhâm, Quý. Cứ 2 Can ghép thành một cặp âm-dương cùng hành: Giáp-Ất (Mộc), Bính-Đinh (Hỏa), Mậu-Kỷ (Thổ), Canh-Tân (Kim), Nhâm-Quý (Thủy).' }, { section: 2, sectionLabel: 'Phần II — Thiên Can', text: 'Can <em>Giáp</em> thuộc hành gì, âm hay dương?', options: [ 'Mộc — dương', 'Mộc — âm', 'Hỏa — dương', 'Thủy — dương' ], correct: 0, explain: '<strong>Giáp = Dương Mộc</strong>. Trong cặp Giáp-Ất, Giáp đứng trước nên là dương, Ất là âm. Hình tượng: Giáp như cây đại thụ, thân thẳng cứng cáp; Ất như cây cỏ mềm dẻo.' }, { section: 2, sectionLabel: 'Phần II — Thiên Can', text: 'Cặp Thiên Can nào sau đây cùng hành <em>Thủy</em>?', options: [ 'Canh — Tân', 'Mậu — Kỷ', 'Nhâm — Quý', 'Bính — Đinh' ], correct: 2, explain: '<strong>Nhâm — Quý là Thủy</strong>. Nhâm là Dương Thủy (như nước biển, sông lớn), Quý là Âm Thủy (như nước mưa, sương). Các cặp khác: Canh-Tân (Kim), Mậu-Kỷ (Thổ), Bính-Đinh (Hỏa).' }, { section: 2, sectionLabel: 'Phần II — Thiên Can', text: 'Trong các cặp <em>Thiên Can hợp</em>, Giáp hợp với Can nào?', options: ['Ất', 'Canh', 'Kỷ', 'Bính'], correct: 2, explain: '<strong>Giáp hợp Kỷ</strong> — hóa Thổ. Năm cặp Can hợp: Giáp-Kỷ (hóa Thổ), Ất-Canh (hóa Kim), Bính-Tân (hóa Thủy), Đinh-Nhâm (hóa Mộc), Mậu-Quý (hóa Hỏa). Quy tắc: hai Can cách nhau 5 vị trí, một âm một dương.' }, { section: 2, sectionLabel: 'Phần II — Thiên Can', text: 'Khi nói "<em>Nhật Chủ</em>" trong lá số, người ta đang chỉ điều gì?', options: [ 'Thiên Can của ngày sinh', 'Địa Chi của giờ sinh', 'Thiên Can của năm sinh', 'Tổng hòa của bốn trụ' ], correct: 0, explain: '<strong>Nhật Chủ là Thiên Can của ngày sinh</strong> (còn gọi là Nhật Nguyên, Nhật Can). Đây là điểm tham chiếu trung tâm của lá số — toàn bộ lục thân, dụng thần, cách cục đều được xác định <em>từ góc nhìn của Nhật Chủ</em>.' }, // ===== PHẦN III — ĐỊA CHI (5 câu) ===== { section: 3, sectionLabel: 'Phần III — Địa Chi', text: 'Hệ Địa Chi có <em>bao nhiêu</em> Chi?', options: ['10', '12', '24', '60'], correct: 1, explain: '<strong>12 Địa Chi</strong>: Tý, Sửu, Dần, Mão, Thìn, Tỵ, Ngọ, Mùi, Thân, Dậu, Tuất, Hợi. Mỗi Chi ứng với một con giáp và một tháng âm lịch.' }, { section: 3, sectionLabel: 'Phần III — Địa Chi', text: 'Chi <em>Tý</em> ứng với hành nào?', options: ['Mộc', 'Hỏa', 'Kim', 'Thủy'], correct: 3, explain: '<strong>Tý = Thủy</strong>. Hai chi Thủy: Tý (Dương Thủy) và Hợi (Âm Thủy — đây là quy ước theo một số tài liệu, có sách ngược lại). Tý ứng với tháng 11 âm lịch, giờ 23h-1h, con chuột.' }, { section: 3, sectionLabel: 'Phần III — Địa Chi', text: 'Cặp Chi nào sau đây <em>xung</em> nhau?', options: [ 'Tý — Sửu', 'Tý — Ngọ', 'Tý — Thân', 'Tý — Dần' ], correct: 1, explain: '<strong>Tý xung Ngọ</strong>. Sáu cặp Lục Xung: Tý-Ngọ, Sửu-Mùi, Dần-Thân, Mão-Dậu, Thìn-Tuất, Tỵ-Hợi. Quy tắc: hai Chi đối diện nhau trên vòng 12 Chi (cách nhau 6 vị trí). <em>Tý-Sửu</em> là cặp <em>hợp</em>, không phải xung.' }, { section: 3, sectionLabel: 'Phần III — Địa Chi', text: 'Tam hợp <em>Hỏa cục</em> bao gồm những Chi nào?', options: [ 'Dần — Ngọ — Tuất', 'Tỵ — Dậu — Sửu', 'Thân — Tý — Thìn', 'Hợi — Mão — Mùi' ], correct: 0, explain: '<strong>Dần — Ngọ — Tuất hợp Hỏa cục</strong>. Bốn nhóm Tam Hợp: Dần-Ngọ-Tuất (Hỏa), Tỵ-Dậu-Sửu (Kim), Thân-Tý-Thìn (Thủy), Hợi-Mão-Mùi (Mộc). Quy tắc: ba Chi cách đều nhau 4 vị trí trên vòng, gồm Sinh - Vượng - Mộ của một hành.' }, { section: 3, sectionLabel: 'Phần III — Địa Chi', text: 'Khái niệm <em>"ngũ hành tàng"</em> trong Địa Chi nói lên điều gì?', options: [ 'Mỗi Chi che giấu hành đối lập với mình', 'Mỗi Chi chứa một hoặc nhiều Thiên Can ẩn bên trong', 'Mỗi Chi tàng giữ năng lượng âm dương riêng', 'Mỗi Chi có thể biến đổi thành hành khác theo mùa' ], correct: 1, explain: '<strong>Mỗi Chi chứa các Thiên Can ẩn (Tàng Can) bên trong</strong>. Ví dụ: Dần tàng <em>Giáp, Bính, Mậu</em>; Ngọ tàng <em>Đinh, Kỷ</em>; Sửu tàng <em>Kỷ, Quý, Tân</em>... Đây là điểm khác biệt then chốt giữa Chi và Can: Can chỉ có một hành thuần, Chi có nhiều Can pha trộn theo tỷ lệ.' } ]; let currentQ = 0; let answers = []; // {correct: bool, sectionIndex: int} let answered = false; function startQuiz() { currentQ = 0; answers = []; document.getElementById('view-start').classList.remove('active'); document.getElementById('view-quiz').classList.add('active'); renderQuestion(); scrollToTop(); } function renderQuestion() { answered = false; const q = QUESTIONS[currentQ]; const total = QUESTIONS.length; // Progress document.getElementById('progressFill').style.width = ((currentQ) / total * 100) + '%'; document.getElementById('qNumDisplay').textContent = currentQ + 1; // Section label document.getElementById('qSectionLabel').textContent = q.sectionLabel; // Question document.getElementById('qLabel').textContent = 'Câu ' + (currentQ + 1); document.getElementById('qText').innerHTML = q.text; // Options const letters = ['A', 'B', 'C', 'D']; const optsContainer = document.getElementById('qOptions'); optsContainer.innerHTML = q.options.map((opt, i) => ` <button class="opt-btn" data-idx="${i}" onclick="selectAnswer(${i})"> <span class="opt-letter">${letters[i]}</span> ${opt} </button> `).join(''); // Hide explain & next const explain = document.getElementById('qExplain'); explain.classList.remove('visible', 'is-correct', 'is-wrong'); explain.innerHTML = ''; document.getElementById('nextBtn').classList.remove('visible'); // Update next button text const nextBtn = document.getElementById('nextBtn'); if (currentQ === QUESTIONS.length - 1) { nextBtn.textContent = '⟢ Xem kết quả ⟢'; } else { nextBtn.textContent = 'Câu tiếp →'; } } function selectAnswer(idx) { if (answered) return; answered = true; const q = QUESTIONS[currentQ]; const isCorrect = idx === q.correct; answers.push({ correct: isCorrect, section: q.section }); // Mark all options const buttons = document.querySelectorAll('.opt-btn'); buttons.forEach((btn, i) => { btn.disabled = true; if (i === q.correct) { btn.classList.add('correct'); } else if (i === idx) { btn.classList.add('wrong'); } else { btn.classList.add('dimmed'); } }); // Show explain const explain = document.getElementById('qExplain'); const verdictText = isCorrect ? '✓ Chính xác' : '✕ Chưa đúng'; explain.innerHTML = `<span class="verdict">${verdictText}</span><br>${q.explain}`; explain.classList.add('visible'); explain.classList.add(isCorrect ? 'is-correct' : 'is-wrong'); // Show next button document.getElementById('nextBtn').classList.add('visible'); // Update progress to current count const total = QUESTIONS.length; document.getElementById('progressFill').style.width = ((currentQ + 1) / total * 100) + '%'; } function nextQuestion() { if (currentQ < QUESTIONS.length - 1) { currentQ++; renderQuestion(); scrollToTop(); } else { showResult(); } } function showResult() { // Calculate scores let totalCorrect = 0; const sectionScores = { 1: 0, 2: 0, 3: 0 }; answers.forEach(a => { if (a.correct) { totalCorrect++; sectionScores[a.section]++; } }); document.getElementById('finalScore').textContent = totalCorrect; document.getElementById('score1').textContent = sectionScores[1]; document.getElementById('score2').textContent = sectionScores[2]; document.getElementById('score3').textContent = sectionScores[3]; // Title & message based on score let title, msg; if (totalCorrect === 15) { title = 'Toàn <em>thập</em>!'; msg = 'Mười lăm trên mười lăm — bạn nắm vững nền tảng Bát Tự. Có thể tiến tới các phần Cách Cục, Dụng Thần, Đại Vận.'; } else if (totalCorrect >= 12) { title = 'Xuất <em>sắc</em>'; msg = 'Bạn đã nắm vững phần lớn nền tảng. Vài câu sai chỉ là chi tiết — xem lại giải thích từng câu để hoàn thiện.'; } else if (totalCorrect >= 9) { title = '<em>Khá</em> tốt'; msg = 'Bạn đã có khái niệm cơ bản. Nên ôn lại phần điểm yếu (Ngũ hành / Can / Chi) trước khi học nâng cao.'; } else if (totalCorrect >= 6) { title = 'Còn <em>chỗ trống</em>'; msg = 'Nền tảng chưa thật vững. Khuyến nghị: học lại từ Ngũ hành sinh khắc, rồi Thiên Can âm dương, sau đó mới đến Địa Chi.'; } else { title = '<em>Khởi đầu</em>'; msg = 'Đây mới là bước đầu — không sao cả. Đọc lại tài liệu cơ bản về Ngũ hành và 10 Thiên Can, sau đó quay lại làm trắc nghiệm.'; } document.getElementById('resultTitle').innerHTML = title; document.getElementById('resultMsg').innerHTML = msg; // Switch view document.getElementById('view-quiz').classList.remove('active'); document.getElementById('view-result').classList.add('active'); scrollToTop(); } function restartQuiz() { document.getElementById('view-result').classList.remove('active'); document.getElementById('view-start').classList.add('active'); scrollToTop(); } function scrollToTop() { // Inside iframe, scroll the iframe's window. Parent doesn't need to scroll. try { window.scrollTo({ top: 0, behavior: 'instant' }); } catch(e) { window.scrollTo(0, 0); } } </script> <script> (function(){ function getH() { var app = document.querySelector('.app'); if (app) { var rect = app.getBoundingClientRect(); var appTop = rect.top + (window.pageYOffset || document.documentElement.scrollTop); return Math.ceil(appTop + app.scrollHeight + 40); } return Math.max( document.body.scrollHeight, document.body.offsetHeight, document.documentElement.scrollHeight, document.documentElement.offsetHeight ); } function postH(){ try { if (window.parent && window.parent !== window) { var activeView = document.querySelector('.view.active'); var viewId = activeView ? activeView.id : ''; window.parent.postMessage({ ltQuizHeight: getH(), viewId: viewId }, '*'); } } catch(e){} } function init() { postH(); [50, 200, 500, 1000, 2000, 3500, 5000, 8000, 12000].forEach(function(t){ setTimeout(postH, t); }); if (typeof ResizeObserver !== 'undefined') { try { var ro = new ResizeObserver(postH); var app = document.querySelector('.app'); if (app) ro.observe(app); ro.observe(document.body); } catch(e){} } if (typeof MutationObserver !== 'undefined') { try { new MutationObserver(postH).observe(document.body, { childList: true, subtree: true, attributes: true }); } catch(e){} } setInterval(postH, 800); window.addEventListener('resize', postH); window.addEventListener('load', postH); if (document.fonts && document.fonts.ready) document.fonts.ready.then(postH); // Hook into quiz functions var origStartQuiz = window.startQuiz; var origSelectAnswer = window.selectAnswer; var origNextQuestion = window.nextQuestion; var origRestartQuiz = window.restartQuiz; if (origStartQuiz) { window.startQuiz = function() { origStartQuiz(); [50, 200, 500, 1000].forEach(function(t){ setTimeout(postH, t); }); }; } if (origSelectAnswer) { window.selectAnswer = function(i) { origSelectAnswer(i); [50, 200, 500, 1000].forEach(function(t){ setTimeout(postH, t); }); }; } if (origNextQuestion) { window.nextQuestion = function() { origNextQuestion(); [50, 200, 500, 1000].forEach(function(t){ setTimeout(postH, t); }); }; } if (origRestartQuiz) { window.restartQuiz = function() { origRestartQuiz(); [50, 200, 500, 1000].forEach(function(t){ setTimeout(postH, t); }); }; } } if (document.readyState === 'loading') document.addEventListener('DOMContentLoaded', init); else init(); })(); </script> </body> </html> " style="width: 100% !important; height: 1400px !important; min-height: 1400px !important; max-height: none !important; border: 0 !important; display: block !important; background: transparent !important; margin: 0 !important; padding: 0 !important;" title="Trắc nghiệm Bát Tự - Hoàng Trung"> </iframe> </div> <script> (function() { var IFRAME_ID = 'lt-quiz-frame'; var INITIAL_H = 1400; var currentH = INITIAL_H; var heightsByView = {}; var currentViewId = 'view-start'; function applyH(h) { var f = document.getElementById(IFRAME_ID); if (!f) return; var newH = Math.max(h + 50, INITIAL_H); if (newH === currentH) return; currentH = newH; f.style.setProperty('height', newH + 'px', 'important'); f.style.setProperty('min-height', newH + 'px', 'important'); f.style.setProperty('max-height', 'none', 'important'); f.setAttribute('height', newH); var parent = f.parentElement; while (parent && parent !== document.body) { var cs = window.getComputedStyle(parent); if (cs.maxHeight !== 'none' && cs.maxHeight !== '' && parseInt(cs.maxHeight) < newH) { parent.style.setProperty('max-height', 'none', 'important'); } if (cs.overflow === 'hidden') { parent.style.setProperty('overflow', 'visible', 'important'); } parent = parent.parentElement; } } function setH(h, viewId) { if (!h || h < 100) return; if (viewId) { // Remember max height per view if (!heightsByView[viewId] || h > heightsByView[viewId]) { heightsByView[viewId] = h; } currentViewId = viewId; } var targetH = heightsByView[currentViewId] || h; applyH(targetH); } window.addEventListener('message', function(e) { if (e && e.data && typeof e.data.ltQuizHeight === 'number') { setH(e.data.ltQuizHeight, e.data.viewId); } }); function pollHeight() { var f = document.getElementById(IFRAME_ID); if (!f || !f.contentWindow) return; try { var doc = f.contentWindow.document; if (doc) { var app = doc.querySelector('.app'); var activeView = doc.querySelector('.view.active'); var viewId = activeView ? activeView.id : ''; var h; if (app) { var rect = app.getBoundingClientRect(); var appTop = rect.top + (f.contentWindow.pageYOffset || doc.documentElement.scrollTop); h = Math.ceil(appTop + app.scrollHeight + 40); } else if (doc.body) { h = Math.max(doc.body.scrollHeight, doc.body.offsetHeight, doc.documentElement.scrollHeight, doc.documentElement.offsetHeight); } if (h) setH(h, viewId); } } catch(e) {} } function breakParents() { var f = document.getElementById(IFRAME_ID); if (!f) return; var parent = f.parentElement; while (parent && parent !== document.body) { var cs = window.getComputedStyle(parent); if (cs.maxHeight !== 'none' && cs.maxHeight !== '' && parseInt(cs.maxHeight) < INITIAL_H) { parent.style.setProperty('max-height', 'none', 'important'); } if (cs.overflow === 'hidden') { parent.style.setProperty('overflow', 'visible', 'important'); } parent = parent.parentElement; } } breakParents(); [100, 500, 1000, 2000, 4000, 7000, 11000].forEach(function(t) { setTimeout(function() { breakParents(); pollHeight(); }, t); }); setInterval(pollHeight, 800); window.addEventListener('resize', pollHeight); window.addEventListener('load', pollHeight); })(); </script> <!-- End of TRẮC NGHIỆM BÁT TỰ -->