<!-- ======================================================== --> <!-- THIÊN CAN — 10 CAN & CAN HỢP (có bảng 12 giờ × 10 ngày) --> <!-- WordPress safe iframe (JNews compatible) --> <!-- Paste into Custom HTML block in Gutenberg --> <!-- ======================================================== --> <style> .lt-wrap-lt-tc-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-tc-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-tc-frame"> <iframe id="lt-tc-frame" height="5500" 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>Thiên Can — 10 can & Can Hợp</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; --warn: #e08eaa; --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; } .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 correctPop { 0% { transform: scale(0.95); } 50% { transform: scale(1.02); } 100% { transform: scale(1); } } @keyframes shake { 0%, 100% { transform: translateX(0); } 25% { transform: translateX(-4px); } 75% { transform: translateX(4px); } } .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 30px; } .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 14px; 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.18; color: var(--ink); margin: 4px 0 6px; } .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: 18px auto 22px; } .hero-intro { font-family: 'Cormorant Garamond', serif; font-style: italic; font-size: 16px; color: var(--ink-soft); line-height: 1.6; padding: 0 4px; max-width: 380px; margin: 0 auto; } .hero-intro em { color: var(--gold-bright); font-weight: 600; } .hero-author { margin-top: 22px; font-family: 'Cormorant Garamond', serif; font-size: 12px; letter-spacing: 3px; text-transform: uppercase; color: var(--gold); font-weight: 600; } .hero-author::before, .hero-author::after { content: ''; display: inline-block; width: 22px; height: 1px; background: var(--gold); margin: 0 10px; vertical-align: middle; } /* PROGRESS DOTS */ .part-progress { display: flex; align-items: center; justify-content: center; gap: 8px; margin: 30px 0 24px; flex-wrap: wrap; } .part-progress .dot { width: 8px; height: 8px; border-radius: 50%; background: rgba(212,175,55,0.2); border: 1px solid rgba(212,175,55,0.3); transition: all 0.3s ease; } .part-progress .dot.done { background: var(--gold); box-shadow: 0 0 8px rgba(212,175,55,0.5); } .part-progress .dot.current { background: var(--gold-bright); box-shadow: 0 0 12px rgba(245,208,97,0.7); transform: scale(1.4); border-color: var(--gold-bright); } .part-progress .label { font-family: 'Cormorant Garamond', serif; font-style: italic; font-size: 12px; letter-spacing: 2px; color: var(--gold); margin-left: 8px; } .part-progress .label strong { color: var(--gold-bright); font-weight: 700; } /* PART CARD */ .part-card { background: linear-gradient(155deg, rgba(28,21,40,0.88), rgba(21,16,31,0.65)); border: 1px solid rgba(212,175,55,0.22); border-radius: 6px; padding: 32px 24px 28px; position: relative; overflow: hidden; animation: fadeUp 0.5s ease; } .part-card::before { content: ''; position: absolute; top: 0; left: 0; width: 100%; height: 1px; background: linear-gradient(90deg, transparent, var(--gold), transparent); opacity: 0.5; } .part-card-header { text-align: center; margin-bottom: 22px; padding-bottom: 18px; border-bottom: 1px solid rgba(212,175,55,0.15); } .part-card .seal { display: inline-flex; align-items: center; justify-content: center; width: 52px; height: 52px; border-radius: 50%; background: linear-gradient(145deg, var(--crimson), var(--deep-red)); border: 2px solid var(--gold); color: var(--gold-bright); font-family: 'Cormorant Garamond', serif; font-style: italic; font-weight: 700; font-size: 20px; box-shadow: 0 0 0 2px var(--bg), 0 0 18px rgba(158,27,63,0.5), inset 0 0 12px rgba(0,0,0,0.4); margin-bottom: 14px; position: relative; } .part-card .seal::before { content: ''; position: absolute; inset: -8px; border-radius: 50%; border: 1px dashed var(--gold-soft); animation: rotate 40s linear infinite; } .part-card .lbl { display: block; font-family: 'Cormorant Garamond', serif; font-style: italic; font-size: 11px; letter-spacing: 4px; text-transform: uppercase; color: var(--gold); margin-bottom: 6px; } .part-card h2 { font-family: 'Cormorant Garamond', serif; font-weight: 600; font-size: 24px; line-height: 1.2; color: var(--ink); margin-bottom: 4px; } .part-card h2 em { color: var(--gold-bright); font-style: italic; } .part-card .subtitle { display: block; margin-top: 6px; font-family: 'Cormorant Garamond', serif; font-style: italic; font-size: 13px; color: var(--ink-dim); letter-spacing: 1px; } .part-card .body { font-size: 15px; line-height: 1.75; color: var(--ink-soft); } .part-card .body p { margin-bottom: 14px; } .part-card .body p:last-child { margin-bottom: 0; } .part-card .body p strong { color: var(--ink); font-weight: 600; } .part-card .body em { color: var(--gold-bright); font-style: italic; } .part-card .body .hl { color: var(--gold-bright); font-weight: 500; font-style: italic; } .part-card .body .inline-sub { font-family: 'Cormorant Garamond', serif; font-style: italic; font-size: 13px; letter-spacing: 3px; text-transform: uppercase; color: var(--gold); font-weight: 600; margin: 22px 0 12px; padding-bottom: 6px; border-bottom: 1px solid rgba(212,175,55,0.2); text-align: center; } .kp { margin: 16px 0; padding: 14px 16px; background: rgba(212,175,55,0.07); 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.6; color: var(--ink); } .kp strong { color: var(--gold-bright); font-style: normal; font-family: 'Be Vietnam Pro', sans-serif; font-weight: 700; font-size: 14px; } .compare-pair { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; margin: 16px 0; } .compare-cell { padding: 14px; border-radius: 4px; border: 1px solid; } .compare-cell.bad { background: rgba(158,27,63,0.1); border-color: rgba(158,27,63,0.4); } .compare-cell.good { background: rgba(126,211,158,0.08); border-color: rgba(126,211,158,0.4); } .compare-cell .c-lbl { display: block; font-family: 'Cormorant Garamond', serif; font-style: italic; font-weight: 700; font-size: 11px; letter-spacing: 2px; text-transform: uppercase; margin-bottom: 6px; } .compare-cell.bad .c-lbl { color: var(--warn); } .compare-cell.good .c-lbl { color: var(--green); } .compare-cell .c-text { font-family: 'Cormorant Garamond', serif; font-style: italic; font-size: 13.5px; line-height: 1.5; color: var(--ink-soft); } .persons-grid { display: flex; flex-direction: column; gap: 10px; margin: 14px 0; } .person-row { padding: 12px 14px; background: rgba(15,11,22,0.5); border: 1px solid rgba(212,175,55,0.18); border-radius: 3px; display: grid; grid-template-columns: 1fr auto; gap: 4px 10px; align-items: center; } .person-row.tragic { border-color: rgba(158,27,63,0.4); background: rgba(158,27,63,0.08); } .person-name { font-family: 'Cormorant Garamond', serif; font-weight: 700; font-style: italic; font-size: 14.5px; color: var(--gold-bright); } .person-row.tragic .person-name { color: var(--warn); } .person-father { font-size: 12.5px; color: var(--ink-soft); font-style: italic; font-family: 'Cormorant Garamond', serif; text-align: right; } .person-fate { grid-column: 1 / -1; font-size: 13px; color: var(--ink-soft); padding-top: 4px; border-top: 1px dashed rgba(212,175,55,0.15); } .person-fate strong { color: var(--ink); font-weight: 600; } /* Nav buttons */ .part-nav { margin-top: 32px; display: flex; gap: 10px; flex-wrap: wrap; } .part-nav-btn { flex: 1; min-width: 130px; padding: 14px 18px; font-family: 'Cormorant Garamond', serif; font-style: italic; font-weight: 700; font-size: 14.5px; letter-spacing: 2px; border-radius: 4px; cursor: pointer; -webkit-tap-highlight-color: transparent; transition: all 0.2s ease; text-align: center; text-transform: uppercase; } .part-nav-btn.prev { background: transparent; border: 1px solid rgba(212,175,55,0.4); color: var(--gold); } .part-nav-btn.prev:hover { background: rgba(212,175,55,0.08); color: var(--gold-bright); border-color: var(--gold); } .part-nav-btn.prev:disabled { opacity: 0.3; cursor: not-allowed; } .part-nav-btn.next { background: linear-gradient(145deg, var(--crimson), var(--deep-red)); border: 1px solid var(--gold); color: var(--gold-bright); box-shadow: 0 0 18px rgba(158,27,63,0.3), inset 0 0 12px rgba(0,0,0,0.3); } .part-nav-btn.next:hover { transform: translateY(-2px); box-shadow: 0 4px 24px rgba(158,27,63,0.5), inset 0 0 12px rgba(0,0,0,0.3); } /* CLOSING + CTA */ .closing { margin: 30px 0 0; padding: 30px 22px; background: radial-gradient(ellipse at top, rgba(212,175,55,0.1), transparent 70%), linear-gradient(165deg, rgba(28,21,40,0.95), rgba(21,16,31,0.85)); border: 1px solid var(--gold-soft); border-radius: 4px; text-align: center; position: relative; overflow: hidden; } .closing::before { content: ''; position: absolute; inset: 6px; border: 1px solid rgba(212,175,55,0.15); border-radius: 2px; pointer-events: none; } .closing-label { font-family: 'Cormorant Garamond', serif; font-style: italic; font-size: 12px; letter-spacing: 4px; text-transform: uppercase; color: var(--gold); margin-bottom: 14px; } .closing-text { font-family: 'Cormorant Garamond', serif; font-style: italic; font-size: 16px; line-height: 1.65; color: var(--ink); } .closing-text em { color: var(--gold-bright); font-weight: 600; } .closing-mark { margin-top: 16px; font-size: 16px; color: var(--gold); letter-spacing: 12px; } .cta { margin: 30px 0 0; padding: 30px 22px; background: linear-gradient(155deg, rgba(28,21,40,0.92), rgba(21,16,31,0.75)); border: 1px solid rgba(212,175,55,0.4); border-radius: 4px; text-align: center; } .cta-label { font-family: 'Cormorant Garamond', serif; font-style: italic; font-size: 12px; letter-spacing: 4px; text-transform: uppercase; color: var(--gold); margin-bottom: 12px; } .cta h3 { font-family: 'Cormorant Garamond', serif; font-weight: 600; font-size: 24px; line-height: 1.2; color: var(--ink); margin-bottom: 8px; } .cta h3 em { color: var(--gold-bright); font-style: italic; } .cta-desc { font-family: 'Cormorant Garamond', serif; font-style: italic; font-size: 15px; color: var(--ink-soft); line-height: 1.55; margin-bottom: 18px; max-width: 360px; margin-left: auto; margin-right: auto; } .cta-meta { display: flex; gap: 12px; justify-content: center; margin-bottom: 20px; flex-wrap: wrap; } .cta-meta-item { font-family: 'Cormorant Garamond', serif; font-style: italic; font-size: 12px; letter-spacing: 2px; text-transform: uppercase; color: var(--gold); padding: 4px 12px; background: rgba(212,175,55,0.08); border: 1px solid rgba(212,175,55,0.3); border-radius: 2px; } .btn-primary { display: block; width: 100%; margin: 0 auto; 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: 17px; 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 */ .quiz-back { display: inline-flex; align-items: center; gap: 8px; background: transparent; border: 1px solid rgba(212,175,55,0.4); border-radius: 2px; padding: 8px 14px; font-family: 'Cormorant Garamond', serif; font-style: italic; font-size: 13px; letter-spacing: 1.5px; color: var(--gold); cursor: pointer; transition: all 0.25s ease; margin-bottom: 20px; -webkit-tap-highlight-color: transparent; } .quiz-back:hover { background: rgba(212,175,55,0.08); color: var(--gold-bright); } .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-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); } .q-card h2 em { font-style: italic; color: var(--gold-bright); } .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: 14px; 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; } .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: 14px; color: var(--green); font-weight: 700; font-size: 18px; } .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: 14px; color: var(--red); font-weight: 700; font-size: 18px; } .opt-btn.dimmed { opacity: 0.4; } .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-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-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; } .action-row { display: flex; gap: 10px; margin-top: 32px; flex-wrap: wrap; } .btn-secondary { flex: 1; min-width: 130px; 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: 13px; letter-spacing: 1.5px; cursor: pointer; -webkit-tap-highlight-color: transparent; transition: all 0.2s ease; text-align: center; } .btn-secondary:hover { background: rgba(212,175,55,0.08); color: var(--gold-bright); } @media (max-width: 400px) { .app { padding: 24px 16px 50px; } .hero h1 { font-size: 26px; } .hero-chinese { font-size: 46px; letter-spacing: 6px; } .part-card { padding: 28px 18px 24px; } .part-card h2 { font-size: 21px; } .part-card .body { font-size: 14.5px; } .compare-pair { grid-template-columns: 1fr; } .person-row { grid-template-columns: 1fr; } .person-father { text-align: left; } .q-card { padding: 22px 18px; } .q-card h2 { font-size: 17px; } .opt-btn { font-size: 14.5px; padding: 12px 12px 12px 44px; } .result-circle { width: 140px; height: 140px; } .result-score { font-size: 48px; } } /* CHI TABLE */ .chi-table { margin: 16px 0; display: flex; flex-direction: column; gap: 4px; background: rgba(15,11,22,0.5); border: 1px solid rgba(212,175,55,0.25); border-radius: 4px; padding: 8px; } .chi-row { display: grid; grid-template-columns: 1fr 1fr 1fr; gap: 8px; padding: 9px 12px; border-radius: 3px; align-items: center; background: rgba(28,21,40,0.5); border-left: 3px solid; } .chi-row.chi-header { background: linear-gradient(145deg, rgba(212,175,55,0.12), rgba(212,175,55,0.04)); border-left-color: var(--gold); font-family: 'Cormorant Garamond', serif; font-style: italic; font-weight: 700; font-size: 12px; letter-spacing: 2px; text-transform: uppercase; color: var(--gold); } .chi-row.chi-thuy { border-left-color: #86bfe0; } .chi-row.chi-moc { border-left-color: #7ed39e; } .chi-row.chi-hoa { border-left-color: #ef6a6a; } .chi-row.chi-tho { border-left-color: #e0b256; } .chi-row.chi-kim { border-left-color: #d8d8e0; } .chi-row .chi-name { font-family: 'Cormorant Garamond', serif; font-weight: 700; font-style: italic; font-size: 17px; color: var(--gold-bright); } .chi-row.chi-header .chi-name { color: var(--gold); font-size: 12px; } .chi-row .chi-hanh { font-family: 'Cormorant Garamond', serif; font-style: italic; font-size: 14.5px; color: var(--ink); } .chi-row.chi-thuy .chi-hanh { color: #86bfe0; } .chi-row.chi-moc .chi-hanh { color: #7ed39e; } .chi-row.chi-hoa .chi-hanh { color: #ef6a6a; } .chi-row.chi-tho .chi-hanh { color: #e0b256; } .chi-row.chi-kim .chi-hanh { color: #d8d8e0; } .chi-row.chi-header .chi-hanh { color: var(--gold); font-size: 12px; } .chi-row .chi-am { font-family: 'Cormorant Garamond', serif; font-style: italic; font-size: 13.5px; color: var(--ink-soft); text-align: right; } .chi-row.chi-header .chi-am { color: var(--gold); font-size: 12px; text-align: right; } @media (max-width: 400px) { .chi-row { padding: 8px 10px; gap: 4px; } .chi-row .chi-name { font-size: 15px; } .chi-row .chi-hanh { font-size: 13.5px; } .chi-row .chi-am { font-size: 12.5px; } } /* PAIR GRID — for xung & hợp */ .pair-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 8px; margin: 14px 0; } .pair-row { display: flex; align-items: center; justify-content: center; gap: 8px; padding: 10px 12px; background: rgba(28,21,40,0.6); border: 1px solid rgba(212,175,55,0.25); border-radius: 4px; font-family: 'Cormorant Garamond', serif; font-style: italic; font-weight: 700; font-size: 15px; } .pair-row.hop { border-color: rgba(126,211,158,0.35); background: rgba(126,211,158,0.06); } .pair-row .pair-a, .pair-row .pair-b { color: var(--gold-bright); min-width: 30px; text-align: center; } .pair-row.hop .pair-a, .pair-row.hop .pair-b { color: #aae5bf; } .pair-row .pair-arrow { color: var(--crimson); font-size: 14px; font-style: normal; } .pair-row.hop .pair-arrow { color: var(--green); } /* HINH CARD */ .hinh-card { margin: 10px 0; padding: 12px 14px; 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-left: 3px solid var(--gold); border-radius: 4px; } .hinh-card .hinh-label { font-family: 'Cormorant Garamond', serif; font-style: italic; font-weight: 700; font-size: 11px; letter-spacing: 3px; text-transform: uppercase; color: var(--gold); margin-bottom: 4px; } .hinh-card .hinh-desc { font-family: 'Cormorant Garamond', serif; font-style: italic; font-size: 13.5px; color: var(--ink-soft); margin-bottom: 6px; } .hinh-card .hinh-content { font-family: 'Cormorant Garamond', serif; font-style: italic; font-weight: 700; font-size: 15px; color: var(--gold-bright); } /* QUAD GRID — for tứ hành xung */ .quad-grid { display: flex; flex-direction: column; gap: 6px; margin: 12px 0 16px; } .quad-row { padding: 10px 14px; background: rgba(158,27,63,0.08); border: 1px dashed rgba(158,27,63,0.4); border-radius: 3px; text-align: center; font-family: 'Cormorant Garamond', serif; font-style: italic; font-size: 15px; color: var(--ink); letter-spacing: 1px; } .quad-row strong { color: var(--warn); font-weight: 700; font-style: normal; font-family: 'Be Vietnam Pro', sans-serif; font-size: 14.5px; } /* WARN BOX */ .warn-box { margin: 16px 0; padding: 14px 16px; background: linear-gradient(155deg, rgba(158,27,63,0.18), rgba(92,10,26,0.08)); border: 1px solid rgba(158,27,63,0.5); border-left: 3px solid var(--crimson); border-radius: 4px; } .warn-box .warn-label { display: block; font-family: 'Cormorant Garamond', serif; font-style: italic; font-weight: 700; font-size: 11px; letter-spacing: 3px; text-transform: uppercase; color: var(--warn); margin-bottom: 6px; } .warn-box p { font-family: 'Cormorant Garamond', serif; font-style: italic; font-size: 14.5px; line-height: 1.55; color: var(--ink); margin: 0; } .warn-box p strong { color: var(--warn); font-style: normal; font-family: 'Be Vietnam Pro', sans-serif; font-weight: 700; } @media (max-width: 400px) { .pair-grid { grid-template-columns: 1fr; } .pair-row { font-size: 14.5px; } } /* AD GRID — âm dương table */ .ad-grid { display: flex; flex-direction: column; gap: 8px; margin: 14px 0; } .ad-row { display: grid; grid-template-columns: 90px 1fr; gap: 12px; padding: 12px 14px; border-radius: 4px; border: 1px solid; align-items: center; } .ad-row.duong { background: rgba(245,208,97,0.08); border-color: rgba(245,208,97,0.4); } .ad-row.am { background: rgba(134,191,224,0.08); border-color: rgba(134,191,224,0.4); } .ad-row .ad-lbl { font-family: 'Cormorant Garamond', serif; font-style: italic; font-weight: 700; font-size: 14px; letter-spacing: 2px; text-transform: uppercase; text-align: center; padding: 4px 0; border-radius: 3px; } .ad-row.duong .ad-lbl { color: var(--gold-bright); background: rgba(245,208,97,0.15); border: 1px solid rgba(245,208,97,0.4); } .ad-row.am .ad-lbl { color: #b8d8f0; background: rgba(134,191,224,0.12); border: 1px solid rgba(134,191,224,0.4); } .ad-row .ad-items { font-family: 'Cormorant Garamond', serif; font-style: italic; font-weight: 700; font-size: 16px; color: var(--ink); letter-spacing: 1px; } .ad-row.duong .ad-items { color: var(--ink); } .ad-row.am .ad-items { color: var(--ink-soft); } /* DYAD GRID — giữ nguyên vs thay đổi */ .dyad-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; margin: 14px 0; } .dyad-cell { padding: 14px 14px; border-radius: 4px; border: 1px solid; } .dyad-cell.tinh { background: rgba(134,191,224,0.06); border-color: rgba(134,191,224,0.4); } .dyad-cell.dong { background: rgba(245,208,97,0.06); border-color: rgba(245,208,97,0.4); } .dyad-cell .dyad-lbl { display: block; font-family: 'Cormorant Garamond', serif; font-style: italic; font-weight: 700; font-size: 11px; letter-spacing: 2px; text-transform: uppercase; margin-bottom: 6px; } .dyad-cell.tinh .dyad-lbl { color: #b8d8f0; } .dyad-cell.dong .dyad-lbl { color: var(--gold-bright); } .dyad-cell .dyad-text { font-family: 'Cormorant Garamond', serif; font-style: italic; font-size: 14px; line-height: 1.55; color: var(--ink-soft); } .dyad-cell .dyad-text strong { color: var(--ink); font-style: normal; font-family: 'Be Vietnam Pro', sans-serif; font-weight: 700; font-size: 13.5px; } .dyad-cell.tinh .dyad-text strong { color: #b8d8f0; } .dyad-cell.dong .dyad-text strong { color: var(--gold-bright); } @media (max-width: 400px) { .ad-row { grid-template-columns: 70px 1fr; gap: 10px; padding: 10px 12px; } .ad-row .ad-items { font-size: 14.5px; } .dyad-grid { grid-template-columns: 1fr; } } /* HOUR TABLE - 12 giờ × 10 ngày, ghép cặp can hợp */ .hour-table-wrap { margin: 14px -8px 16px; overflow-x: auto; -webkit-overflow-scrolling: touch; padding: 0 8px; } .hour-table { display: inline-flex; flex-direction: column; gap: 2px; min-width: 100%; background: rgba(15,11,22,0.5); border: 1px solid rgba(212,175,55,0.25); border-radius: 4px; padding: 6px; } .hr-header, .hr-row { display: flex; align-items: stretch; gap: 2px; } .hr-corner, .hr-chi { flex: 0 0 42px; display: flex; align-items: center; justify-content: center; font-family: 'Cormorant Garamond', serif; font-style: italic; font-weight: 700; font-size: 13px; border-radius: 2px; padding: 4px 0; } .hr-corner { background: linear-gradient(145deg, rgba(212,175,55,0.18), rgba(212,175,55,0.06)); color: var(--gold); letter-spacing: 1.5px; text-transform: uppercase; font-size: 10px; } .hr-chi { background: rgba(28,21,40,0.7); color: var(--gold-bright); font-size: 13px; } .hr-pair { flex: 1 1 auto; display: grid; grid-template-columns: 1fr 1fr; gap: 1px; border-radius: 2px; overflow: hidden; min-width: 0; } .hr-pair.p1 { background: rgba(126,211,158,0.22); } .hr-pair.p2 { background: rgba(245,208,97,0.22); } .hr-pair.p3 { background: rgba(239,106,106,0.22); } .hr-pair.p4 { background: rgba(134,191,224,0.22); } .hr-pair.p5 { background: rgba(216,184,224,0.22); } .hr-d, .hr-c { display: flex; align-items: center; justify-content: center; padding: 4px 2px; font-family: 'Cormorant Garamond', serif; font-style: italic; text-align: center; font-size: 11.5px; line-height: 1.1; background: rgba(11,8,18,0.6); min-width: 0; } .hr-d { font-weight: 700; font-size: 11px; letter-spacing: 0.5px; text-transform: uppercase; } .hr-pair.p1 .hr-d { color: #aae5bf; background: rgba(126,211,158,0.12); } .hr-pair.p2 .hr-d { color: var(--gold-bright); background: rgba(245,208,97,0.12); } .hr-pair.p3 .hr-d { color: #f4a0a0; background: rgba(239,106,106,0.12); } .hr-pair.p4 .hr-d { color: #b8d8f0; background: rgba(134,191,224,0.12); } .hr-pair.p5 .hr-d { color: #d8b8e0; background: rgba(216,184,224,0.12); } .hr-c { color: var(--ink); font-weight: 600; } .hr-pair.p1 .hr-c { color: #c8eed5; } .hr-pair.p2 .hr-c { color: #f5d894; } .hr-pair.p3 .hr-c { color: #f5b8b8; } .hr-pair.p4 .hr-c { color: #c8dff0; } .hr-pair.p5 .hr-c { color: #e0c8e8; } @media (max-width: 480px) { .hr-corner, .hr-chi { flex: 0 0 36px; font-size: 12px; } .hr-d { font-size: 9.5px; padding: 3px 1px; } .hr-c { font-size: 10px; padding: 3px 1px; } } /* CAN TABLE — bảng 10 thiên can */ .can-table { margin: 16px 0; display: flex; flex-direction: column; gap: 4px; background: rgba(15,11,22,0.5); border: 1px solid rgba(212,175,55,0.25); border-radius: 4px; padding: 8px; } .can-row { display: grid; grid-template-columns: 1fr 1fr 1fr; gap: 8px; padding: 9px 12px; border-radius: 3px; align-items: center; background: rgba(28,21,40,0.5); border-left: 3px solid; } .can-row.can-header { background: linear-gradient(145deg, rgba(212,175,55,0.12), rgba(212,175,55,0.04)); border-left-color: var(--gold); font-family: 'Cormorant Garamond', serif; font-style: italic; font-weight: 700; font-size: 12px; letter-spacing: 2px; text-transform: uppercase; color: var(--gold); } .can-row.can-moc { border-left-color: #7ed39e; } .can-row.can-hoa { border-left-color: #ef6a6a; } .can-row.can-tho { border-left-color: #e0b256; } .can-row.can-kim { border-left-color: #d8d8e0; } .can-row.can-thuy { border-left-color: #86bfe0; } .can-row .can-hanh { font-family: 'Cormorant Garamond', serif; font-style: italic; font-weight: 700; font-size: 14.5px; color: var(--ink); } .can-row.can-moc .can-hanh { color: #7ed39e; } .can-row.can-hoa .can-hanh { color: #ef6a6a; } .can-row.can-tho .can-hanh { color: #e0b256; } .can-row.can-kim .can-hanh { color: #d8d8e0; } .can-row.can-thuy .can-hanh { color: #86bfe0; } .can-row.can-header .can-hanh { color: var(--gold); font-size: 12px; } .can-row .can-duong, .can-row .can-am { font-family: 'Cormorant Garamond', serif; font-weight: 700; font-style: italic; font-size: 16px; text-align: center; } .can-row .can-duong { color: var(--gold-bright); } .can-row .can-am { color: #b8d8f0; } .can-row.can-header .can-duong, .can-row.can-header .can-am { color: var(--gold); font-size: 12px; } @media (max-width: 400px) { .can-row { padding: 8px 10px; gap: 4px; } .can-row .can-hanh { font-size: 13.5px; } .can-row .can-duong, .can-row .can-am { font-size: 15px; } } /* STEP GRID — minh họa cách 5 bước */ .step-grid { display: flex; flex-direction: column; gap: 6px; margin: 12px 0 16px; } .step-row { display: grid; grid-template-columns: 1fr auto 1fr auto; gap: 10px; align-items: center; padding: 9px 14px; background: rgba(126,211,158,0.06); border: 1px solid rgba(126,211,158,0.25); border-radius: 3px; } .step-row .step-a, .step-row .step-b { font-family: 'Cormorant Garamond', serif; font-style: italic; font-weight: 700; font-size: 15px; color: var(--gold-bright); } .step-row .step-a { text-align: right; } .step-row .step-a small, .step-row .step-b small { color: var(--ink-dim); font-size: 11px; font-weight: 400; margin-left: 2px; } .step-row .step-arrow { color: var(--green); font-size: 14px; font-style: normal; } .step-row .step-tag { font-family: 'Cormorant Garamond', serif; font-style: italic; font-size: 11px; letter-spacing: 1.5px; text-transform: uppercase; color: var(--green); padding: 2px 8px; background: rgba(126,211,158,0.1); border: 1px solid rgba(126,211,158,0.3); border-radius: 2px; white-space: nowrap; } @media (max-width: 400px) { .step-row { grid-template-columns: 1fr auto 1fr; gap: 6px; padding: 8px 10px; } .step-row .step-tag { display: none; } .step-row .step-a, .step-row .step-b { font-size: 14px; } } </style> </head> <body> <div class="bg-gradient"></div> <div class="stars"></div> <div class="app"> <div class="view active" id="view-article"> <section class="hero"> <span class="hero-tag">Bát Tự · Cơ bản</span> <div class="hero-chinese">天干</div> <h1>Thiên Can<br><em>10 can &amp; Can Hợp</em></h1> <div class="hero-rule"></div> <p class="hero-intro"> Mười thiên can — <em>Giáp Ất Bính Đinh Mậu Kỷ Canh Tân Nhâm Quý</em> — là <em>cành cây vươn lên</em>: dễ thấy, dễ phân tích. Hai phần dưới đây để nắm bảng can và hiểu <em>can hợp</em> sinh ra từ đâu. </p> <div class="hero-author">Hoàng Trung</div> </section> <div class="part-progress"> <span class="dot current"></span> <span class="dot"></span> <span class="label">Phần <strong id="partNumDisplay">1</strong> / 2</span> </div> <article class="part-card"> <div class="part-card-header"> <div class="seal" id="partSeal">I</div> <span class="lbl" id="partLbl">Phần thứ nhất</span> <h2 id="partTitle">…</h2> <span class="subtitle" id="partSubtitle">…</span> </div> <div class="body" id="partBody">…</div> <div class="part-nav"> <button class="part-nav-btn prev" id="prevPartBtn" onclick="prevPart()">← Phần trước</button> <button class="part-nav-btn next" id="nextPartBtn" onclick="nextPart()">Xem tiếp →</button> </div> </article> <div id="endSection" style="display: none;"> <section class="closing"> <div class="closing-label">⟢ Lời gửi gắm ⟢</div> <p class="closing-text"> <em>Giáp Mộc — Ất Mộc — Bính Hỏa — Đinh Hỏa — Mậu Thổ —<br> Kỷ Thổ — Canh Kim — Tân Kim — Nhâm Thủy — Quý Thủy.</em><br><br> Mười can — năm cặp can hợp. Không phải triết lý đặt ra mà là <em>kết quả tự nhiên</em> của vòng Hoa Giáp 60. </p> <div class="closing-mark">⟢ ◈ ⟢</div> </section> <section class="cta"> <div class="cta-label">⟢ Tự kiểm tra ⟢</div> <h3>Đã hiểu? <em>Thử ngay</em></h3> <p class="cta-desc"> Mười câu hỏi để củng cố hai phần vừa đọc. Trả lời từng câu, xem giải thích ngay lập tức. </p> <div class="cta-meta"> <span class="cta-meta-item">10 câu hỏi</span> <span class="cta-meta-item">Phản hồi ngay</span> <span class="cta-meta-item">Không tính giờ</span> </div> <button class="btn-primary" onclick="startQuiz()">⟢ Bắt đầu trắc nghiệm ⟢</button> </section> </div> </div> <div class="view" id="view-quiz"> <button class="quiz-back" onclick="backToArticle()">← Quay về bài viết</button> <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> / 10</div> </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> <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">/ 10</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="action-row"> <button class="btn-secondary" onclick="restartQuiz()">⟲ Làm lại</button> <button class="btn-secondary" onclick="backToArticle()">← Đọc lại bài</button> </div> </div> </div> <script> const ROMAN = ['', 'I', 'II', 'III', 'IV', 'V', 'VI']; const ORDINAL = ['', 'thứ nhất', 'thứ hai', 'thứ ba', 'thứ tư', 'thứ năm', 'thứ sáu']; const PARTS = [ { title: '<em>Thiên Can</em>', subtitle: 'Mười can — cành cây vươn lên trời', body: ` <p>Thiên can gồm <strong>10 chữ</strong>: <em>Giáp — Ất — Bính — Đinh — Mậu — Kỷ — Canh — Tân — Nhâm — Quý</em>.</p> <h3 class="inline-sub">⟢ Tên gọi và bản chất ⟢</h3> <p>Tên gọi <em>thiên can</em> — <strong>thiên</strong> là trời, <strong>can</strong> là cành. Hình ảnh là những cành cây vươn lên phía trời — thứ <em>dễ thấy, dễ quan sát, biến đổi rõ ràng</em>.</p> <div class="kp"> Đó cũng là tính chất của can trong bát tự: <strong>động, lộ ra ngoài, dễ phân tích</strong>. </div> <h3 class="inline-sub">⟢ Bảng 10 thiên can ⟢</h3> <p>Mỗi thiên can mang <strong>hai thuộc tính cố định</strong>: <em>ngũ hành</em> và <em>âm dương</em>.</p> <div class="can-table"> <div class="can-row can-header"> <span class="can-hanh">Hành</span> <span class="can-duong">Dương</span> <span class="can-am">Âm</span> </div> <div class="can-row can-moc"> <span class="can-hanh">Mộc</span> <span class="can-duong">Giáp</span> <span class="can-am">Ất</span> </div> <div class="can-row can-hoa"> <span class="can-hanh">Hỏa</span> <span class="can-duong">Bính</span> <span class="can-am">Đinh</span> </div> <div class="can-row can-tho"> <span class="can-hanh">Thổ</span> <span class="can-duong">Mậu</span> <span class="can-am">Kỷ</span> </div> <div class="can-row can-kim"> <span class="can-hanh">Kim</span> <span class="can-duong">Canh</span> <span class="can-am">Tân</span> </div> <div class="can-row can-thuy"> <span class="can-hanh">Thủy</span> <span class="can-duong">Nhâm</span> <span class="can-am">Quý</span> </div> </div> <p>Hai thuộc tính này <strong>không thay đổi theo hoàn cảnh</strong> — <em>Giáp luôn là Mộc dương, Tân luôn là Kim âm</em>, bất kể nó xuất hiện ở trụ nào trong lá số.</p> <div class="kp"> Đây là <strong>nền để xác định thập thần</strong> — bước cơ bản nhất để bắt đầu phân tích bất kỳ lá số nào. </div> ` }, { title: '<em>Can Hợp</em><br>Năm cặp từ vòng lịch', subtitle: 'Không phải triết lý — là cơ học', body: ` <p>Trong 10 thiên can có <strong>5 cặp hợp nhau</strong> — gọi là <em>ngũ hợp</em> hay <em>can hợp</em>:</p> <div class="pair-grid"> <div class="pair-row hop"><span class="pair-a">Giáp</span><span class="pair-arrow">↔</span><span class="pair-b">Kỷ</span></div> <div class="pair-row hop"><span class="pair-a">Ất</span><span class="pair-arrow">↔</span><span class="pair-b">Canh</span></div> <div class="pair-row hop"><span class="pair-a">Bính</span><span class="pair-arrow">↔</span><span class="pair-b">Tân</span></div> <div class="pair-row hop"><span class="pair-a">Đinh</span><span class="pair-arrow">↔</span><span class="pair-b">Nhâm</span></div> <div class="pair-row hop"><span class="pair-a">Mậu</span><span class="pair-arrow">↔</span><span class="pair-b">Quý</span></div> </div> <h3 class="inline-sub">⟢ Vòng Hoa Giáp — nguồn gốc cơ học ⟢</h3> <p>Thiên can gồm <strong>10 chữ</strong>, địa chi gồm <strong>12 chữ</strong>. Khi ghép can và chi lại để tính năm, tháng, ngày, giờ — hai vòng này <em>quay cùng nhau nhưng với tốc độ khác nhau</em>, và từ đó sinh ra can hợp.</p> <p>Lấy ví dụ tính giờ trong một ngày. Một ngày có 12 giờ — ứng với 12 địa chi, mỗi giờ một chi, <em>chi giữ nguyên theo thứ tự cố định</em>. Còn can thì thay đổi theo ngày — mỗi ngày bắt đầu bằng một can khác nhau, và các can trong ngày đó xếp tuần tự theo vòng 10 can.</p> <div class="kp"> Vì chi có 12, can có 10 — sau <strong>60 đơn vị</strong> thì cả can lẫn chi mới trùng về điểm xuất phát. Đây là <em>vòng Hoa Giáp 60 can chi</em>. </div> <h3 class="inline-sub">⟢ Quy luật cách 5 bước ⟢</h3> <p>Điều thú vị xảy ra ở đây: các can <strong>cách nhau đúng 5 vị trí</strong> trong vòng 10 can sẽ luôn rơi vào <em>cùng một chi</em>. Giáp và Kỷ cách nhau 5 bước — cứ 5 ngày (hoặc 5 năm), can chi của ngày đó lại trùng nhau. Ất và Canh cũng vậy. Bính và Tân cũng vậy. Và cứ thế cho hết 5 cặp.</p> <div class="step-grid"> <div class="step-row"><span class="step-a">Giáp <small>(1)</small></span><span class="step-arrow">↔</span><span class="step-b">Kỷ <small>(6)</small></span><span class="step-tag">cách 5</span></div> <div class="step-row"><span class="step-a">Ất <small>(2)</small></span><span class="step-arrow">↔</span><span class="step-b">Canh <small>(7)</small></span><span class="step-tag">cách 5</span></div> <div class="step-row"><span class="step-a">Bính <small>(3)</small></span><span class="step-arrow">↔</span><span class="step-b">Tân <small>(8)</small></span><span class="step-tag">cách 5</span></div> <div class="step-row"><span class="step-a">Đinh <small>(4)</small></span><span class="step-arrow">↔</span><span class="step-b">Nhâm <small>(9)</small></span><span class="step-tag">cách 5</span></div> <div class="step-row"><span class="step-a">Mậu <small>(5)</small></span><span class="step-arrow">↔</span><span class="step-b">Quý <small>(10)</small></span><span class="step-tag">cách 5</span></div> </div> <h3 class="inline-sub">⟢ Bảng 12 giờ × 10 ngày ⟢</h3> <p>Đây là bảng <em>can giờ</em> thực tế trong vòng lịch — mỗi cột là một loại ngày, mỗi hàng là một chi giờ. Hai cột cùng màu là một <strong>cặp can hợp</strong>:</p> <div class="hour-table-wrap"> <div class="hour-table"> <div class="hr-header"> <span class="hr-corner">Giờ</span> <span class="hr-pair p1"><span class="hr-d">Giáp</span><span class="hr-d">Kỷ</span></span> <span class="hr-pair p2"><span class="hr-d">Ất</span><span class="hr-d">Canh</span></span> <span class="hr-pair p3"><span class="hr-d">Bính</span><span class="hr-d">Tân</span></span> <span class="hr-pair p4"><span class="hr-d">Đinh</span><span class="hr-d">Nhâm</span></span> <span class="hr-pair p5"><span class="hr-d">Mậu</span><span class="hr-d">Quý</span></span> </div> <div class="hr-row"> <span class="hr-chi">Tý</span> <span class="hr-pair p1"><span class="hr-c">Giáp</span><span class="hr-c">Giáp</span></span> <span class="hr-pair p2"><span class="hr-c">Bính</span><span class="hr-c">Bính</span></span> <span class="hr-pair p3"><span class="hr-c">Mậu</span><span class="hr-c">Mậu</span></span> <span class="hr-pair p4"><span class="hr-c">Canh</span><span class="hr-c">Canh</span></span> <span class="hr-pair p5"><span class="hr-c">Nhâm</span><span class="hr-c">Nhâm</span></span> </div> <div class="hr-row"> <span class="hr-chi">Sửu</span> <span class="hr-pair p1"><span class="hr-c">Ất</span><span class="hr-c">Ất</span></span> <span class="hr-pair p2"><span class="hr-c">Đinh</span><span class="hr-c">Đinh</span></span> <span class="hr-pair p3"><span class="hr-c">Kỷ</span><span class="hr-c">Kỷ</span></span> <span class="hr-pair p4"><span class="hr-c">Tân</span><span class="hr-c">Tân</span></span> <span class="hr-pair p5"><span class="hr-c">Quý</span><span class="hr-c">Quý</span></span> </div> <div class="hr-row"> <span class="hr-chi">Dần</span> <span class="hr-pair p1"><span class="hr-c">Bính</span><span class="hr-c">Bính</span></span> <span class="hr-pair p2"><span class="hr-c">Mậu</span><span class="hr-c">Mậu</span></span> <span class="hr-pair p3"><span class="hr-c">Canh</span><span class="hr-c">Canh</span></span> <span class="hr-pair p4"><span class="hr-c">Nhâm</span><span class="hr-c">Nhâm</span></span> <span class="hr-pair p5"><span class="hr-c">Giáp</span><span class="hr-c">Giáp</span></span> </div> <div class="hr-row"> <span class="hr-chi">Mão</span> <span class="hr-pair p1"><span class="hr-c">Đinh</span><span class="hr-c">Đinh</span></span> <span class="hr-pair p2"><span class="hr-c">Kỷ</span><span class="hr-c">Kỷ</span></span> <span class="hr-pair p3"><span class="hr-c">Tân</span><span class="hr-c">Tân</span></span> <span class="hr-pair p4"><span class="hr-c">Quý</span><span class="hr-c">Quý</span></span> <span class="hr-pair p5"><span class="hr-c">Ất</span><span class="hr-c">Ất</span></span> </div> <div class="hr-row"> <span class="hr-chi">Thìn</span> <span class="hr-pair p1"><span class="hr-c">Mậu</span><span class="hr-c">Mậu</span></span> <span class="hr-pair p2"><span class="hr-c">Canh</span><span class="hr-c">Canh</span></span> <span class="hr-pair p3"><span class="hr-c">Nhâm</span><span class="hr-c">Nhâm</span></span> <span class="hr-pair p4"><span class="hr-c">Giáp</span><span class="hr-c">Giáp</span></span> <span class="hr-pair p5"><span class="hr-c">Bính</span><span class="hr-c">Bính</span></span> </div> <div class="hr-row"> <span class="hr-chi">Tỵ</span> <span class="hr-pair p1"><span class="hr-c">Kỷ</span><span class="hr-c">Kỷ</span></span> <span class="hr-pair p2"><span class="hr-c">Tân</span><span class="hr-c">Tân</span></span> <span class="hr-pair p3"><span class="hr-c">Quý</span><span class="hr-c">Quý</span></span> <span class="hr-pair p4"><span class="hr-c">Ất</span><span class="hr-c">Ất</span></span> <span class="hr-pair p5"><span class="hr-c">Đinh</span><span class="hr-c">Đinh</span></span> </div> <div class="hr-row"> <span class="hr-chi">Ngọ</span> <span class="hr-pair p1"><span class="hr-c">Canh</span><span class="hr-c">Canh</span></span> <span class="hr-pair p2"><span class="hr-c">Nhâm</span><span class="hr-c">Nhâm</span></span> <span class="hr-pair p3"><span class="hr-c">Giáp</span><span class="hr-c">Giáp</span></span> <span class="hr-pair p4"><span class="hr-c">Bính</span><span class="hr-c">Bính</span></span> <span class="hr-pair p5"><span class="hr-c">Mậu</span><span class="hr-c">Mậu</span></span> </div> <div class="hr-row"> <span class="hr-chi">Mùi</span> <span class="hr-pair p1"><span class="hr-c">Tân</span><span class="hr-c">Tân</span></span> <span class="hr-pair p2"><span class="hr-c">Quý</span><span class="hr-c">Quý</span></span> <span class="hr-pair p3"><span class="hr-c">Ất</span><span class="hr-c">Ất</span></span> <span class="hr-pair p4"><span class="hr-c">Đinh</span><span class="hr-c">Đinh</span></span> <span class="hr-pair p5"><span class="hr-c">Kỷ</span><span class="hr-c">Kỷ</span></span> </div> <div class="hr-row"> <span class="hr-chi">Thân</span> <span class="hr-pair p1"><span class="hr-c">Nhâm</span><span class="hr-c">Nhâm</span></span> <span class="hr-pair p2"><span class="hr-c">Giáp</span><span class="hr-c">Giáp</span></span> <span class="hr-pair p3"><span class="hr-c">Bính</span><span class="hr-c">Bính</span></span> <span class="hr-pair p4"><span class="hr-c">Mậu</span><span class="hr-c">Mậu</span></span> <span class="hr-pair p5"><span class="hr-c">Canh</span><span class="hr-c">Canh</span></span> </div> <div class="hr-row"> <span class="hr-chi">Dậu</span> <span class="hr-pair p1"><span class="hr-c">Quý</span><span class="hr-c">Quý</span></span> <span class="hr-pair p2"><span class="hr-c">Ất</span><span class="hr-c">Ất</span></span> <span class="hr-pair p3"><span class="hr-c">Đinh</span><span class="hr-c">Đinh</span></span> <span class="hr-pair p4"><span class="hr-c">Kỷ</span><span class="hr-c">Kỷ</span></span> <span class="hr-pair p5"><span class="hr-c">Tân</span><span class="hr-c">Tân</span></span> </div> <div class="hr-row"> <span class="hr-chi">Tuất</span> <span class="hr-pair p1"><span class="hr-c">Giáp</span><span class="hr-c">Giáp</span></span> <span class="hr-pair p2"><span class="hr-c">Bính</span><span class="hr-c">Bính</span></span> <span class="hr-pair p3"><span class="hr-c">Mậu</span><span class="hr-c">Mậu</span></span> <span class="hr-pair p4"><span class="hr-c">Canh</span><span class="hr-c">Canh</span></span> <span class="hr-pair p5"><span class="hr-c">Nhâm</span><span class="hr-c">Nhâm</span></span> </div> <div class="hr-row"> <span class="hr-chi">Hợi</span> <span class="hr-pair p1"><span class="hr-c">Ất</span><span class="hr-c">Ất</span></span> <span class="hr-pair p2"><span class="hr-c">Đinh</span><span class="hr-c">Đinh</span></span> <span class="hr-pair p3"><span class="hr-c">Kỷ</span><span class="hr-c">Kỷ</span></span> <span class="hr-pair p4"><span class="hr-c">Tân</span><span class="hr-c">Tân</span></span> <span class="hr-pair p5"><span class="hr-c">Quý</span><span class="hr-c">Quý</span></span> </div> </div> </div> <div class="kp"> Nhìn vào cột <strong>Giáp và Kỷ</strong>: can giờ <em>hoàn toàn giống nhau</em> từ Tý đến Hợi. Tương tự với <em>Ất–Canh, Bính–Tân, Đinh–Nhâm, Mậu–Quý</em>. </div> <p>Đây chính là <strong>cơ sở cơ học của can hợp</strong> — không phải triết lý, mà là <em>hai ngày dùng chung một bộ 12 can giờ</em>. Khi Giáp và Kỷ "hợp nhau", nghĩa là chúng <em>luôn xuất hiện trên cùng một khung giờ</em> trong suốt vòng lịch.</p> <p>Can hợp <strong>không phải do người xưa ngồi đặt ra tùy ý</strong> — nó là <em>kết quả tự nhiên của cách tính lịch</em>. Hai can hợp nhau vì chúng luôn xuất hiện cùng nhau trong cùng một chu kỳ, tạo ra sự gắn kết có tính <em>cơ học</em>.</p> <p>Đó cũng là lý do mỗi cặp can hợp đều gồm <strong>một dương và một âm</strong> — vì trong vòng 10 can, các can dương và âm xen kẽ nhau đều đặn, nên can cách 5 vị trí <em>bao giờ cũng trái dấu</em>.</p> <h3 class="inline-sub">⟢ Khi can hợp xuất hiện trong lá số ⟢</h3> <p>Khi hai can hợp xuất hiện <em>cạnh nhau</em> trong lá số, chúng có xu hướng bị <strong>kéo về phía nhau</strong> — tập trung tương tác với nhau hơn là với các can khác xung quanh. <em>Can mạnh hơn sẽ kéo can yếu hơn theo ý mình</em>.</p> <div class="kp"> Nếu <strong>dụng thần bị hợp bởi một can xấu</strong> thì dụng thần bị trói lại, giảm khả năng phát huy — đó là lúc can hợp trở thành <em>vấn đề cần chú ý</em>. </div> ` } ]; const QUESTIONS = [ { text: 'Thiên can gồm <em>bao nhiêu chữ</em>, theo thứ tự bắt đầu từ can nào?', options: [ '10 can, bắt đầu từ Ất', '12 can, bắt đầu từ Giáp', '10 can, bắt đầu từ Giáp', '8 can, bắt đầu từ Giáp' ], correct: 2, explain: '<strong>10 can, bắt đầu từ Giáp.</strong> Thứ tự đầy đủ: <em>Giáp — Ất — Bính — Đinh — Mậu — Kỷ — Canh — Tân — Nhâm — Quý</em>. Đây là thứ tự cố định, học thuộc lòng vì sẽ dùng suốt trong bát tự — đặc biệt khi xác định thập thần.' }, { text: 'Can nào dưới đây <em>mang hành Hỏa</em>?', options: [ 'Mậu và Kỷ', 'Giáp và Ất', 'Bính và Đinh', 'Nhâm và Quý' ], correct: 2, explain: '<strong>Bính và Đinh</strong> là hai can Hỏa. Bính là <em>Dương Hỏa</em>, Đinh là <em>Âm Hỏa</em>. Mậu-Kỷ là Thổ, Giáp-Ất là Mộc, Nhâm-Quý là Thủy.' }, { text: '<em>Tân</em> mang thuộc tính nào sau đây?', options: [ 'Kim Dương', 'Thổ Âm', 'Kim Âm', 'Thủy Âm' ], correct: 2, explain: '<strong>Tân = Kim Âm.</strong> Hai can Kim là Canh và Tân — Canh đứng trước nên là <em>Dương Kim</em>, Tân đứng sau nên là <em>Âm Kim</em>. Hình tượng: Canh như rìu cứng cáp, Tân như đồ trang sức tinh xảo.' }, { text: 'Can hợp gồm bao nhiêu cặp? <em>Nguyên nhân</em> hình thành can hợp là gì?', options: [ '4 cặp — do người xưa đặt ra theo triết lý âm dương', '5 cặp — do các can cách nhau đúng 5 vị trí luôn rơi vào cùng một chi trong vòng lịch', '6 cặp — do các can cùng hành ghép lại với nhau', '5 cặp — do các can cùng âm dương ghép thành cặp' ], correct: 1, explain: '<strong>5 cặp — do can cách nhau 5 vị trí luôn rơi vào cùng một chi.</strong> Đây là <em>kết quả cơ học</em> từ cách tính lịch — không phải triết lý đặt ra. Trong vòng Hoa Giáp 60, các can cách 5 bước luôn xuất hiện cùng chi với nhau.' }, { text: 'Cặp nào dưới đây <em>KHÔNG</em> phải là cặp can hợp?', options: [ 'Giáp — Kỷ', 'Bính — Tân', 'Đinh — Nhâm', 'Mậu — Tân' ], correct: 3, explain: '<strong>Mậu — Tân KHÔNG hợp.</strong> Năm cặp can hợp đúng: <em>Giáp-Kỷ, Ất-Canh, Bính-Tân, Đinh-Nhâm, Mậu-Quý</em>. Mậu (5) và Tân (8) chỉ cách 3 bước, không phải 5 bước. Mậu hợp Quý, Tân hợp Bính.' }, { text: 'Vì sao mỗi cặp can hợp đều gồm <em>một can dương và một can âm</em>?', options: [ 'Vì người xưa quy định dương hợp âm cho cân bằng', 'Vì trong vòng 10 can, dương và âm xen kẽ đều đặn — can cách 5 vị trí bao giờ cũng trái dấu', 'Vì can dương mạnh hơn cần can âm để kiềm chế', 'Vì can cùng dấu thì xung nhau, không thể hợp' ], correct: 1, explain: '<strong>Vì 10 can xen kẽ dương — âm — dương — âm.</strong> Vị trí lẻ là dương, vị trí chẵn là âm. Cộng thêm 5 (số lẻ) thì lẻ thành chẵn, chẵn thành lẻ → <em>luôn trái dấu</em>. Đây là kết quả số học, không phải quy ước.' }, { text: 'Vòng <em>Hoa Giáp</em> gồm bao nhiêu can chi? Tại sao lại là con số đó?', options: [ '120 — vì 10 can nhân 12 chi', '60 — vì sau 60 đơn vị, can và chi mới cùng trở về điểm xuất phát', '10 — vì thiên can có 10 chữ', '12 — vì địa chi có 12 chữ' ], correct: 1, explain: '<strong>60 — bội số chung nhỏ nhất của 10 và 12.</strong> 10 can quay 6 vòng = 60. 12 chi quay 5 vòng = 60. Sau 60 đơn vị thì can và chi đều cùng quay về điểm xuất phát — gọi là <em>một Hoa Giáp</em>.' }, { text: 'Khi hai can hợp xuất hiện <em>cạnh nhau</em> trong lá số, điều gì xảy ra?', options: [ 'Chúng triệt tiêu nhau và mất đi tác dụng hoàn toàn', 'Chúng tập trung tương tác với nhau — can mạnh hơn kéo can yếu hơn theo ý mình', 'Chúng sinh ra hành mới khác hoàn toàn với hành gốc', 'Chúng luôn tạo ra tác động tốt cho lá số' ], correct: 1, explain: '<strong>Chúng tập trung tương tác với nhau.</strong> Can mạnh hơn <em>kéo can yếu hơn theo ý mình</em>. Đặc biệt cần chú ý: nếu <em>dụng thần bị hợp bởi một can xấu</em>, dụng thần sẽ bị trói lại, giảm khả năng phát huy — đây là lúc can hợp thành vấn đề.' }, { text: '<em>Giáp</em> đứng thứ mấy trong thiên can, và hợp với can nào?', options: [ 'Thứ 1 — hợp Mậu', 'Thứ 1 — hợp Kỷ', 'Thứ 3 — hợp Kỷ', 'Thứ 2 — hợp Canh' ], correct: 1, explain: '<strong>Giáp đứng thứ 1, hợp Kỷ.</strong> Giáp (1) + 5 = Kỷ (6). Đây là cặp đầu tiên trong 5 cặp can hợp. Ất (thứ 2) hợp Canh (thứ 7) — không phải Giáp hợp Canh.' }, { text: 'Nhìn vào vị trí trong vòng 10 can, <em>Đinh</em> đứng thứ mấy và hợp với can nào? Vì sao?', options: [ 'Thứ 4 — hợp Kỷ vì cách 5 bước', 'Thứ 3 — hợp Mậu vì cùng hành', 'Thứ 4 — hợp Nhâm vì cách 5 bước', 'Thứ 5 — hợp Nhâm vì trái dấu âm dương' ], correct: 2, explain: '<strong>Đinh đứng thứ 4, hợp Nhâm vì cách 5 bước.</strong> Đinh (4) + 5 = Nhâm (9). Đinh là Âm Hỏa, Nhâm là Dương Thủy — đúng quy luật cặp can hợp luôn trái dấu. Lưu ý: cùng hành (như Đinh-Bính cùng Hỏa) <em>không</em> phải lý do tạo ra can hợp.' } ]; let currentPart = 0; let currentQ = 0; let answers = []; let answered = false; function renderPart() { const p = PARTS[currentPart]; document.getElementById('partSeal').textContent = ROMAN[currentPart + 1]; document.getElementById('partLbl').textContent = 'Phần ' + ORDINAL[currentPart + 1]; document.getElementById('partTitle').innerHTML = p.title; document.getElementById('partSubtitle').textContent = p.subtitle; document.getElementById('partBody').innerHTML = p.body; document.getElementById('partNumDisplay').textContent = currentPart + 1; document.querySelectorAll('.part-progress .dot').forEach((d, i) => { d.classList.remove('current', 'done'); if (i < currentPart) d.classList.add('done'); else if (i === currentPart) d.classList.add('current'); }); document.getElementById('prevPartBtn').disabled = currentPart === 0; const nextBtn = document.getElementById('nextPartBtn'); if (currentPart === PARTS.length - 1) { nextBtn.textContent = '⟢ Hoàn tất ⟢'; document.getElementById('endSection').style.display = 'block'; } else { nextBtn.textContent = 'Xem tiếp →'; document.getElementById('endSection').style.display = 'none'; } } function nextPart() { if (currentPart < PARTS.length - 1) { currentPart++; renderPart(); scrollPartIntoView(); } else { scrollToCTA(); } } function prevPart() { if (currentPart > 0) { currentPart--; renderPart(); scrollPartIntoView(); } } function scrollPartIntoView() { const card = document.querySelector('.part-card'); if (card) { const rect = card.getBoundingClientRect(); const top = rect.top + window.pageYOffset - 80; try { window.scrollTo({ top: top, behavior: 'smooth' }); } catch(e) { window.scrollTo(0, top); } } } function scrollToCTA() { const cta = document.querySelector('.cta'); if (cta) { const rect = cta.getBoundingClientRect(); const top = rect.top + window.pageYOffset - 30; try { window.scrollTo({ top: top, behavior: 'smooth' }); } catch(e) { window.scrollTo(0, top); } } } function startQuiz() { currentQ = 0; answers = []; document.getElementById('view-article').classList.remove('active'); document.getElementById('view-quiz').classList.add('active'); renderQuestion(); scrollToTop(); } function backToArticle() { document.getElementById('view-quiz').classList.remove('active'); document.getElementById('view-result').classList.remove('active'); document.getElementById('view-article').classList.add('active'); scrollToTop(); } function renderQuestion() { answered = false; const q = QUESTIONS[currentQ]; const total = QUESTIONS.length; document.getElementById('progressFill').style.width = ((currentQ) / total * 100) + '%'; document.getElementById('qNumDisplay').textContent = currentQ + 1; document.getElementById('qLabel').textContent = 'Câu ' + (currentQ + 1); document.getElementById('qText').innerHTML = q.text; const letters = ['A', 'B', 'C', 'D']; document.getElementById('qOptions').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(''); const explain = document.getElementById('qExplain'); explain.classList.remove('visible', 'is-correct', 'is-wrong'); explain.innerHTML = ''; document.getElementById('nextBtn').classList.remove('visible'); document.getElementById('nextBtn').textContent = (currentQ === QUESTIONS.length - 1) ? '⟢ Xem kết quả ⟢' : '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 }); document.querySelectorAll('.opt-btn').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'); }); const explain = document.getElementById('qExplain'); explain.innerHTML = `<span class="verdict">${isCorrect ? '✓ Chính xác' : '✕ Chưa đúng'}</span><br>${q.explain}`; explain.classList.add('visible'); explain.classList.add(isCorrect ? 'is-correct' : 'is-wrong'); document.getElementById('nextBtn').classList.add('visible'); document.getElementById('progressFill').style.width = ((currentQ + 1) / QUESTIONS.length * 100) + '%'; } function nextQuestion() { if (currentQ < QUESTIONS.length - 1) { currentQ++; renderQuestion(); scrollToTop(); } else { showResult(); } } function showResult() { let totalCorrect = 0; answers.forEach(a => { if (a.correct) totalCorrect++; }); document.getElementById('finalScore').textContent = totalCorrect; let title, msg; if (totalCorrect === 10) { title = 'Toàn <em>thập</em>!'; msg = 'Hoàn hảo. Bạn đã nắm vững toàn bộ kiến thức về 12 địa chi và cơ chế sinh khắc — sẵn sàng học các phần sâu hơn về can tàng, hợp xung, hình hại.'; } else if (totalCorrect >= 8) { title = 'Xuất <em>sắc</em>'; msg = 'Bạn đã nắm vững phần lớn nền tảng địa chi. Vài câu sai chỉ là chi tiết nhỏ về sinh khắc — xem lại giải thích để hoàn thiện.'; } else if (totalCorrect >= 6) { title = '<em>Khá</em> tốt'; msg = 'Đã có khái niệm cơ bản. Nên đọc lại phần II (sinh khắc) — đây là nội dung quan trọng và dễ nhầm lẫn nhất.'; } else if (totalCorrect >= 4) { title = 'Còn <em>chỗ trống</em>'; msg = 'Nền tảng chưa thật vững. Khuyến nghị: đọc lại bảng ngũ hành — âm dương của 12 chi, sau đó ôn vòng tương sinh — tương khắc.'; } else { title = '<em>Khởi đầu</em>'; msg = 'Đây mới là bước đầu — không sao cả. Học thuộc 12 chi theo thứ tự, ngũ hành của từng chi, sau đó quay lại làm trắc nghiệm.'; } document.getElementById('resultTitle').innerHTML = title; document.getElementById('resultMsg').innerHTML = msg; document.getElementById('view-quiz').classList.remove('active'); document.getElementById('view-result').classList.add('active'); scrollToTop(); } function restartQuiz() { currentQ = 0; answers = []; document.getElementById('view-result').classList.remove('active'); document.getElementById('view-quiz').classList.add('active'); renderQuestion(); scrollToTop(); } function scrollToTop() { try { window.scrollTo({ top: 0, behavior: 'instant' }); } catch(e) { window.scrollTo(0, 0); } } renderPart(); </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 : ''; if (viewId === 'view-article') { var endVisible = document.getElementById('endSection').style.display !== 'none'; viewId = 'view-article-p' + (typeof currentPart !== 'undefined' ? currentPart : 0) + (endVisible ? 'e' : ''); } window.parent.postMessage({ ltTcHeight: 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, 1000); window.addEventListener('resize', postH); window.addEventListener('load', postH); if (document.fonts && document.fonts.ready) document.fonts.ready.then(postH); ['nextPart', 'prevPart', 'startQuiz', 'backToArticle', 'selectAnswer', 'nextQuestion', 'restartQuiz'].forEach(function(name) { var orig = window[name]; if (orig) { window[name] = function() { var r = orig.apply(this, arguments); [50, 200, 500, 1000].forEach(function(t){ setTimeout(postH, t); }); return r; }; } }); } if (document.readyState === 'loading') document.addEventListener('DOMContentLoaded', init); else init(); })(); </script> </body> </html> " style="width: 100% !important; height: 5500px !important; min-height: 5500px !important; max-height: none !important; border: 0 !important; display: block !important; background: transparent !important; margin: 0 !important; padding: 0 !important;" title="Thiên Can - Hoàng Trung"> </iframe> </div> <script> (function() { var IFRAME_ID = 'lt-tc-frame'; var INITIAL_H = 5500; var currentH = INITIAL_H; var heightsByView = {}; var currentViewId = 'view-article-p0'; function applyH(h) { var f = document.getElementById(IFRAME_ID); if (!f) return; var newH = h + 50; if (newH < 200) return; 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) { 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.ltTcHeight === 'number') setH(e.data.ltTcHeight, 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 THIÊN CAN -->