<!-- ================================================== --> <!-- CAN CÓ GỐC VÀ CAN KHÔNG CÓ GỐC — Hoàng Trung --> <!-- Paste toàn bộ vào Custom HTML block trong WordPress --> <!-- ================================================== --> <style> .lt-wrap-cangoc { 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; } .lt-wrap-cangoc > iframe { width: 100% !important; max-width: 100% !important; border: 0 !important; display: block !important; background: transparent !important; padding: 0 !important; margin: 0 !important; vertical-align: top !important; max-height: none !important; min-height: 0 !important; } </style> <div class="lt-wrap-cangoc"> <iframe id="lt-cangoc-frame" height="5000" 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>Can Có Gốc Và Can Không Có Gốc</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; --blue: #86bfe0; } * { box-sizing: border-box; margin: 0; padding: 0; } html, body { background: var(--bg); min-height: 100%; } body { color: var(--ink); font-family: 'Be Vietnam Pro', -apple-system, sans-serif; overflow-x: hidden; line-height: 1.7; font-size: 16px; -webkit-font-smoothing: antialiased; } .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:.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(.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 .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: .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; } .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 */ .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 .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 .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: .5; } .part-card-header { text-align: center; margin-bottom: 22px; padding-bottom: 18px; border-bottom: 1px solid rgba(212,175,55,0.15); } .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; } .seal::before { content: ''; position: absolute; inset: -8px; border-radius: 50%; border: 1px dashed var(--gold-soft); animation: rotate 40s linear infinite; } .part-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-title { font-family: 'Cormorant Garamond', serif; font-weight: 600; font-size: 24px; line-height: 1.2; color: var(--ink); margin-bottom: 4px; } .part-title em { color: var(--gold-bright); font-style: italic; } .part-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-body { font-size: 16px; line-height: 1.75; color: var(--ink-soft); } .part-body p { margin-bottom: 14px; } .part-body p:last-child { margin-bottom: 0; } .part-body p strong { color: var(--ink); font-weight: 600; } .part-body em { color: var(--gold-bright); font-style: italic; } .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: 16px; line-height: 1.65; color: var(--ink); } .kp strong { color: var(--gold-bright); font-style: normal; font-family: 'Be Vietnam Pro', sans-serif; font-weight: 700; font-size: 15px; } /* NAV */ .part-nav { margin-top: 32px; display: flex; gap: 10px; flex-wrap: wrap; } .nav-btn { flex: 1; min-width: 130px; padding: 14px 18px; font-family: 'Cormorant Garamond', serif; font-style: italic; font-weight: 700; font-size: 15.5px; letter-spacing: 2px; border-radius: 4px; cursor: pointer; -webkit-tap-highlight-color: transparent; transition: all .2s ease; text-align: center; text-transform: uppercase; } .nav-btn.prev { background: transparent; border: 1px solid rgba(212,175,55,0.4); color: var(--gold); } .nav-btn.prev:hover { background: rgba(212,175,55,0.08); color: var(--gold-bright); border-color: var(--gold); } .nav-btn.prev:disabled { opacity: .3; cursor: not-allowed; } .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); } .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 */ .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 */ .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; 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: 16px; 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%; 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 .2s ease, box-shadow .2s ease; } .btn-primary:hover { 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 .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 .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 .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-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-text { font-family: 'Cormorant Garamond', serif; font-weight: 600; font-size: 19px; line-height: 1.4; color: var(--ink); } .q-text 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: 16px; line-height: 1.55; color: var(--ink-soft); cursor: pointer; position: relative; transition: all .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-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 .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 .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 .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: .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: 16px; line-height: 1.6; color: var(--ink); display: none; animation: fadeUp .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: 15.5px; } .explain em { color: var(--gold-bright); font-weight: 600; } .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-q-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 .2s ease; } .next-q-btn.visible { display: block; animation: fadeUp .4s ease; } .next-q-btn:hover { transform: translateY(-2px); box-shadow: 0 4px 20px rgba(158,27,63,0.5); } /* RESULT */ .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 .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-lbl { 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 .2s ease; text-align: center; } .btn-secondary:hover { background: rgba(212,175,55,0.08); color: var(--gold-bright); } /* TANGCAN SPECIFIC */ .stage-goal { margin: 14px 0 18px; padding: 16px 18px; background: linear-gradient(155deg, rgba(245,208,97,0.12), rgba(212,175,55,0.04)); border: 1px solid rgba(245,208,97,0.4); border-left: 4px solid var(--gold-bright); border-radius: 4px; } .stage-goal .goal-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(--gold-bright); margin-bottom: 8px; } .stage-goal .goal-text { font-family: 'Cormorant Garamond', serif; font-style: italic; font-size: 16px; line-height: 1.55; color: var(--ink); margin: 0; } .stage-goal .goal-text strong { color: var(--gold-bright); font-style: normal; font-family: 'Be Vietnam Pro', sans-serif; font-weight: 700; font-size: 15.5px; } .stage-goal .goal-text em { color: var(--gold-bright); } .src-table { margin: 14px 0; display: flex; flex-direction: column; gap: 4px; } .src-row { display: grid; grid-template-columns: 120px 1fr; gap: 10px; padding: 10px 13px; border-radius: 3px; align-items: center; border-left: 3px solid; } .src-row.r1 { background: rgba(245,208,97,0.08); border-left-color: var(--gold); } .src-row.r2 { background: rgba(126,211,158,0.07); border-left-color: var(--green); } .src-row.r3 { background: rgba(134,191,224,0.07); border-left-color: var(--blue); } .src-row .src-key { font-family: 'Cormorant Garamond', serif; font-style: italic; font-weight: 700; font-size: 14.5px; } .src-row.r1 .src-key { color: var(--gold-bright); } .src-row.r2 .src-key { color: #aae5bf; } .src-row.r3 .src-key { color: #b0d8f0; } .src-row .src-val { font-family: 'Cormorant Garamond', serif; font-style: italic; font-size: 14.5px; line-height: 1.55; color: var(--ink-soft); } .src-row .src-val em { color: var(--gold-bright); font-weight: 600; } .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: 15.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; } .principle-box { margin: 12px 0; padding: 13px 15px; background: rgba(134,191,224,0.08); border: 1px solid rgba(134,191,224,0.35); border-left: 3px solid var(--blue); border-radius: 4px; } .principle-box .p-label { display: block; font-family: 'Cormorant Garamond', serif; font-style: italic; font-weight: 700; font-size: 11px; letter-spacing: 2px; text-transform: uppercase; color: #b8d8f0; margin-bottom: 6px; } .principle-box p { font-family: 'Cormorant Garamond', serif; font-style: italic; font-size: 15.5px; line-height: 1.6; color: var(--ink); margin: 0; } .principle-box p strong { color: #b8d8f0; font-family: 'Be Vietnam Pro', sans-serif; font-style: normal; font-weight: 700; } .principle-box p em { color: var(--gold-bright); font-weight: 600; } .notho-row { display: flex; justify-content: center; gap: 12px; margin: 12px 0; flex-wrap: wrap; } .notho-chi { padding: 8px 18px; border-radius: 3px; background: rgba(239,106,106,0.1); border: 1px solid rgba(239,106,106,0.4); font-family: 'Cormorant Garamond', serif; font-style: italic; font-weight: 700; font-size: 18px; color: #f4a0a0; letter-spacing: 2px; } .tc-table { margin: 16px 0; display: flex; flex-direction: column; gap: 3px; background: rgba(15,11,22,0.5); border: 1px solid rgba(212,175,55,0.25); border-radius: 4px; padding: 6px; } .tc-header { display: grid; grid-template-columns: 52px 1fr 1fr; gap: 6px; padding: 7px 10px; border-radius: 3px; background: linear-gradient(145deg, rgba(212,175,55,0.12), rgba(212,175,55,0.04)); border-left: 3px solid var(--gold); font-family: 'Cormorant Garamond', serif; font-style: italic; font-weight: 700; font-size: 11px; letter-spacing: 2px; text-transform: uppercase; color: var(--gold); align-items: center; } .tc-row { display: grid; grid-template-columns: 52px 1fr 1fr; gap: 6px; padding: 9px 10px; border-radius: 3px; background: rgba(28,21,40,0.5); border-left: 3px solid; align-items: center; } .tc-row.moc { border-left-color: #7ed39e; } .tc-row.hoa { border-left-color: #ef6a6a; } .tc-row.tho { border-left-color: #e0b256; } .tc-row.kim { border-left-color: #d8d8e0; } .tc-row.thuy { border-left-color: #86bfe0; } .tc-chi { font-family: 'Cormorant Garamond', serif; font-weight: 700; font-style: italic; font-size: 17px; color: var(--gold-bright); } .tc-bk { font-family: 'Cormorant Garamond', serif; font-style: italic; font-size: 15px; } .tc-row.moc .tc-bk { color: #aae5bf; } .tc-row.hoa .tc-bk { color: #f4a0a0; } .tc-row.tho .tc-bk { color: #e8c87a; } .tc-row.kim .tc-bk { color: #d8d8e8; } .tc-row.thuy .tc-bk { color: #b0d8f0; } .tc-tang { font-family: 'Cormorant Garamond', serif; font-weight: 700; font-style: italic; font-size: 15.5px; color: var(--ink); letter-spacing: 1px; } .ex-grid { display: flex; flex-direction: column; gap: 8px; margin: 14px 0; } .ex-row { padding: 11px 14px; background: rgba(28,21,40,0.6); border: 1px solid rgba(212,175,55,0.2); border-radius: 3px; display: grid; grid-template-columns: 40px 1fr; gap: 10px; align-items: start; } .ex-chi { font-family: 'Cormorant Garamond', serif; font-weight: 700; font-style: italic; font-size: 18px; color: var(--gold-bright); text-align: center; padding-top: 2px; } .ex-desc { font-family: 'Cormorant Garamond', serif; font-style: italic; font-size: 14.5px; line-height: 1.6; color: var(--ink-soft); } .ex-desc strong { color: var(--ink); font-family: 'Be Vietnam Pro', sans-serif; font-style: normal; font-weight: 600; font-size: 14px; } .ex-desc em { color: var(--gold-bright); font-weight: 600; } @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-title { font-size: 21px; } .src-row { grid-template-columns: 90px 1fr; } .tc-chi { font-size: 15px; } .tc-tang { font-size: 13px; } .q-card { padding: 22px 18px; } .q-text { font-size: 17px; } .opt-btn { font-size: 14px; padding: 12px 12px 12px 44px; } .result-circle { width: 140px; height: 140px; } .result-score { font-size: 48px; } } </style> </head> <body> <div class="bg-gradient"></div> <div class="stars"></div> <div class="app"> <!-- VIEW: BÀI VIẾT --> <div class="view active" id="view-article"> <section class="hero"> <span class="hero-tag">Lý Thuyết · Bát Tự Cơ Bản</span> <div class="hero-chinese">根氣</div> <h1>Can Có Gốc<br><em>Và Can Không Có Gốc</em></h1> <div class="hero-rule"></div> <p class="hero-intro"> Mỗi Thiên Can trong tứ trụ chỉ tồn tại ở <em>một trong hai trạng thái</em>: có gốc hoặc không có gốc. Hiểu điều này là bước đầu để biết <em>can nào thực sự có thực lực</em> trong lá số. </p> <div class="hero-author">Hoàng Trung</div> </section> <div class="part-progress"> <span class="dot current" id="dot0"></span> <span class="dot" id="dot1"></span> <span class="dot" id="dot2"></span> <span class="label">Phần <strong id="partNumDisplay">1</strong> / 3</span> </div> <article class="part-card"> <div class="part-card-header"> <div class="seal" id="partSeal">I</div> <span class="part-lbl" id="partLbl">Phần thứ nhất</span> <h2 class="part-title" id="partTitle"></h2> <span class="part-subtitle" id="partSubtitle"></span> </div> <div class="part-body" id="partBody"></div> <div class="part-nav"> <button class="nav-btn prev" id="prevBtn" onclick="prevPart()">← Phần trước</button> <button class="nav-btn next" id="nextBtn" onclick="nextPart()">Xem tiếp →</button> </div> </article> <div id="endSection" style="display:none"> <section class="closing"> <div class="closing-label">⟢ Tóm lược ⟢</div> <p class="closing-text"> <em>Can có gốc</em> — ít nhất một Chi tàng can cùng ngũ hành.<br> <em>Gốc cùng trụ</em> — mạnh nhất, ổn định nhất.<br> <em>Gốc quá xa</em> — có cũng như không.<br><br> Xác định gốc là bước đầu tiên để biết <em>can nào có tiếng nói</em> trong hội đồng điều hành bát tự. </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 để kiểm tra hiểu biết về can có gốc, mức độ gốc và ứng dụng trong luận bát tự. 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> <!-- VIEW: TRẮC NGHIỆM --> <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> <div class="q-text" id="qText"></div> <div class="options" id="qOptions"></div> <div class="explain" id="qExplain"></div> <button class="next-q-btn" id="nextQBtn" onclick="nextQuestion()">Câu tiếp →</button> </div> </div> <!-- VIEW: KẾT QUẢ --> <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-lbl">⟢ 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: 'Hai tình trạng<br><em>của một Thiên Can trong tứ trụ</em>', subtitle: 'Can thấu · Có gốc · Không có gốc', body: ` <p>Một thiên can xuất hiện trong bất kỳ trụ nào trong tứ trụ (năm, tháng, ngày, giờ) — lưu ý là 1 trong 4 can trên, <em>không phải tàng can</em> — thì còn được gọi là <strong>can thấu</strong>. Các can thấu chỉ có một trong hai tình trạng: <em>có gốc hoặc không có gốc.</em></p> <div class="src-table"> <div class="src-row r2"> <span class="src-key">Can có gốc</span> <span class="src-val">Có ít nhất một địa chi (cùng trụ hoặc khác trụ) có tàng can chứa thiên can <em>cùng ngũ hành</em> với nó</span> </div> <div class="src-row" style="background:rgba(239,106,106,0.08);border-left:3px solid var(--red)"> <span class="src-key" style="color:#f4a0a0">Can không có gốc</span> <span class="src-val">Không có bất kỳ địa chi nào có tàng can chứa thiên can cùng ngũ hành với nó</span> </div> </div> <div class="kp"><strong>Không có trạng thái trung gian nào khác.</strong></div> <h3 class="inline-sub">⟢ Ví dụ nhận diện gốc ⟢</h3> <div class="tc-table"> <div class="tc-header"><span>Can thấu</span><span>Ngũ hành</span><span>Tàng can tính là gốc</span></div> <div class="tc-row moc"><span class="tc-chi">Giáp</span><span class="tc-bk">Mộc</span><span class="tc-tang">Giáp, Ất</span></div> <div class="tc-row moc"><span class="tc-chi">Ất</span><span class="tc-bk">Mộc</span><span class="tc-tang">Giáp, Ất</span></div> <div class="tc-row hoa"><span class="tc-chi">Bính</span><span class="tc-bk">Hỏa</span><span class="tc-tang">Bính, Đinh</span></div> <div class="tc-row hoa"><span class="tc-chi">Đinh</span><span class="tc-bk">Hỏa</span><span class="tc-tang">Bính, Đinh</span></div> <div class="tc-row tho"><span class="tc-chi">Mậu</span><span class="tc-bk">Thổ</span><span class="tc-tang">Mậu, Kỷ</span></div> <div class="tc-row tho"><span class="tc-chi">Kỷ</span><span class="tc-bk">Thổ</span><span class="tc-tang">Mậu, Kỷ</span></div> <div class="tc-row kim"><span class="tc-chi">Canh</span><span class="tc-bk">Kim</span><span class="tc-tang">Canh, Tân</span></div> <div class="tc-row kim"><span class="tc-chi">Tân</span><span class="tc-bk">Kim</span><span class="tc-tang">Canh, Tân</span></div> <div class="tc-row thuy"><span class="tc-chi">Nhâm</span><span class="tc-bk">Thủy</span><span class="tc-tang">Nhâm, Quý</span></div> <div class="tc-row thuy"><span class="tc-chi">Quý</span><span class="tc-bk">Thủy</span><span class="tc-tang">Nhâm, Quý</span></div> </div> <div class="warn-box"> <span class="warn-label">⚠ Nhắc lại</span> <p>Gốc chỉ tính <strong>cùng ngũ hành</strong> — không tính tàng can có ngũ hành tương sinh. Ví dụ can Giáp (Mộc) <strong>không nhận</strong> gốc từ chi tàng Nhâm, Quý dù Thủy sinh Mộc.</p> </div> ` }, { title: 'Khoảng cách đến nhật chủ<br><em>và mức độ ảnh hưởng của gốc</em>', subtitle: 'Cùng trụ · Trụ bên cạnh · Cách xa', body: ` <p>Khoảng cách đến nhật chủ <em>không liên quan</em> đến việc can đó có gốc hay không, nhưng nó ảnh hưởng đến <strong>mức độ tác dụng của gốc đó</strong> trong thực tế vận hành của bát tự.</p> <div class="src-table"> <div class="src-row r1"> <span class="src-key">Cùng trụ</span> <span class="src-val">Can và chi nằm chung một cột → <em>Gốc mạnh nhất, ổn định nhất</em></span> </div> <div class="src-row r2"> <span class="src-key">Trụ bên cạnh</span> <span class="src-val">Ví dụ can năm có gốc ở chi tháng, hoặc can tháng có gốc ở chi ngày → <em>Gốc yếu hơn cùng trụ, nhưng vẫn có tác dụng rõ rệt</em></span> </div> <div class="src-row" style="background:rgba(239,106,106,0.08);border-left:3px solid var(--red)"> <span class="src-key" style="color:#f4a0a0">Cách xa</span> <span class="src-val">Can năm có gốc duy nhất ở chi giờ, hoặc can giờ có gốc duy nhất ở chi năm → <em>Gốc này có cũng như không</em>, ảnh hưởng hầu như không đáng kể trong việc luận cục bát tự</span> </div> </div> <div class="kp"><strong>Nguyên tắc:</strong> Một gốc chỉ thực sự có giá trị khi nó nằm ở vị trí có thể hỗ trợ hoặc tác động kịp thời đến hành trình vận hành của ngũ hành trong tứ trụ. <em>Gốc quá xa thì không khác gì không có.</em></div> ` }, { title: 'Ví dụ cụ thể<br><em>và ứng dụng trong luận bát tự</em>', subtitle: 'Ba ví dụ · Tư duy hệ thống · Hội đồng điều hành', body: ` <h3 class="inline-sub">⟢ Ví dụ 1 — Can Giáp có gốc (ổn định, rất mạnh nhưng không quá mạnh) ⟢</h3> <p><strong>Bát tự:</strong> Năm Giáp Dần, tháng Mão, ngày Thìn</p> <div class="ex-grid"> <div class="ex-row"><span class="ex-chi" style="font-size:13px;padding-top:4px">Can<br>Giáp</span> <span class="ex-desc"> Chi <em>Dần</em> (cùng trụ) tàng Giáp (Mộc) → gốc.<br> Chi <em>Mão</em> tàng Ất (Mộc) → gốc.<br> Chi <em>Thìn</em> tàng Ất (Mộc) → gốc.<br> → Giáp có gốc từ cả 3 chi, 3 chi đều thuộc mùa xuân, đều tàng mộc (Giáp trong Dần, Ất từ Mão, Thìn), nên được coi là <strong>có gốc mạnh và ổn định.</strong> </span> </div> </div> <h3 class="inline-sub">⟢ Ví dụ 2 — Can Tân không có gốc ⟢</h3> <p><strong>Bát tự:</strong> Năm Bính Tý, tháng Tân Mão, ngày Mậu Ngọ, giờ Quý Hợi</p> <div class="ex-grid"> <div class="ex-row"><span class="ex-chi" style="font-size:13px;padding-top:4px">Can<br>Tân</span> <span class="ex-desc"> Can Tân (Kim) ở trụ tháng. Kiểm tra tàng can các chi:<br> <em>Tý:</em> Quý (Thủy) · <em>Mão:</em> Ất (Mộc) · <em>Ngọ:</em> Đinh, Kỷ (Hỏa, Thổ) · <em>Hợi:</em> Nhâm, Giáp (Thủy, Mộc)<br> Không có chi nào tàng Kim (Tân, Canh) → <strong>Tân không có gốc.</strong><br> → Dù Tân đứng ở trụ tháng, vị trí đẹp, nhưng <em>không có gốc thì thực lực bằng không.</em> </span> </div> </div> <h3 class="inline-sub">⟢ Ví dụ 3 — Gốc xa, có cũng như không ⟢</h3> <p><strong>Bát tự:</strong> Năm Tân Dậu, tháng Tân Mão, ngày Giáp Ngọ, giờ Canh Ngọ</p> <div class="ex-grid"> <div class="ex-row"><span class="ex-chi" style="font-size:13px;padding-top:4px">Can<br>Canh</span> <span class="ex-desc"> Can Canh (Kim) ở trụ giờ. Chi Dậu (cùng trụ năm) tàng Tân (Kim) → về kỹ thuật là có gốc.<br> Nhưng can Canh ở trụ giờ — gốc ở chi năm <em>cách xa 3 trụ</em> → <strong>gốc này có cũng như không</strong> nếu không có thêm các gốc khác ở gần. </span> </div> </div> <h3 class="inline-sub">⟢ Ứng dụng trong luận bát tự ⟢</h3> <p>Bát tự truyền thống là <strong>tư duy hệ thống</strong>. Một yếu tố như "can có gốc hay không" cũng chỉ như <em>một cái bulong trong chiếc xe đạp</em> — không nói lên được điều gì một cách đơn lẻ.</p> <p>Tuy nhiên:</p> <div class="src-table"> <div class="src-row r2"> <span class="src-key" style="font-size:13.5px">Can có gốc mạnh</span> <span class="src-val">Là một lực lượng đáng kể, góp phần tham gia vào <em>hội đồng điều hành</em> của bát tự</span> </div> <div class="src-row r1"> <span class="src-key" style="font-size:13.5px">Hội đồng điều hành</span> <span class="src-val">Gồm các nhóm can chi <em>có thực lực</em>, có tiếng nói quyết định trong vận hành bát tự</span> </div> <div class="src-row" style="background:rgba(239,106,106,0.08);border-left:3px solid var(--red)"> <span class="src-key" style="color:#f4a0a0;font-size:13.5px">Can yếu</span> <span class="src-val">Không có gốc, hoặc gốc quá xa, hoặc gốc bị phá vỡ → <em>chỉ là lực lượng yếu</em>, ít ảnh hưởng đến cục diện chính</span> </div> </div> <p>Do đó, khi luận bát tự, cần:</p> <div class="src-table"> <div class="src-row r1"><span class="src-key">Bước 1</span><span class="src-val">Xác định can nào có gốc, gốc đó <em>mạnh hay yếu</em>, gần hay xa</span></div> <div class="src-row r2"><span class="src-key">Bước 2</span><span class="src-val">Đánh giá <em>vai trò của từng can</em> trong hệ thống tương quan sinh khắc</span></div> <div class="src-row r3"><span class="src-key">Bước 3</span><span class="src-val"><em>Không thể</em> chỉ dựa vào một yếu tố đơn lẻ để kết luận tốt xấu</span></div> </div> ` } ]; const QUESTIONS = [ { text: 'Một thiên can trong tứ trụ (không phải tàng can) được gọi là <em>"có gốc"</em> khi nào?', opts: [ 'Khi nó có ít nhất một địa chi tàng can chứa thiên can cùng ngũ hành với nó', 'Khi nó đứng cùng trụ với một địa chi tàng can bất kỳ', 'Khi nó có quan hệ sinh với địa chi', 'Khi nó cách xa nhật chủ' ], correct: 0, explain: '<strong>Cùng ngũ hành — không phải tương sinh.</strong> Can có gốc khi có ít nhất một địa chi tàng can <em>cùng ngũ hành</em> với nó, bất kể cùng trụ hay khác trụ. Quan hệ sinh (như Thủy sinh Mộc) không được tính là gốc.' }, { text: 'Can <em>không có gốc</em> là can như thế nào?', opts: [ 'Có địa chi tàng can khắc nó', 'Không có bất kỳ địa chi nào có tàng can chứa thiên can cùng ngũ hành với nó', 'Chỉ có một địa chi tàng can sinh cho nó', 'Có địa chi tàng can nhưng khác ngũ hành' ], correct: 1, explain: '<strong>Không có chi nào tàng can cùng ngũ hành.</strong> Dù can đó đứng ở vị trí đẹp như trụ tháng hay trụ ngày, nếu không có chi nào tàng can cùng hành thì <em>thực lực bằng không</em>. Ví dụ 2 (can Tân) minh họa rõ điều này.' }, { text: 'Trạng thái trung gian giữa "có gốc" và "không có gốc" tồn tại hay không?', opts: [ 'Có, đó là khi có gốc nhưng yếu', 'Có, đó là khi có gốc từ xa', 'Có, đó là khi có nửa gốc', 'Đúng ra là không, nhưng có loại can có gốc cũng như không do gốc quá xa' ], correct: 3, explain: '<strong>Về định nghĩa: chỉ có hoặc không.</strong> Bài viết nêu rõ: "Không có trạng thái trung gian nào khác." Tuy nhiên trên thực tế, một can có gốc duy nhất ở vị trí <em>cách xa</em> (can năm ↔ chi giờ) thì dù có gốc về mặt kỹ thuật, tác dụng hầu như bằng không.' }, { text: '<strong>Bát tự:</strong> Năm Tân Dậu — tháng Tân Mão — ngày Giáp Ngọ — giờ Canh Ngọ.<br>Can Canh (Kim) ở trụ giờ được đánh giá như thế nào?', opts: [ 'Can Canh có gốc mạnh', 'Can Canh không có gốc', 'Can Canh không có gốc nhưng vẫn mạnh', 'Can Canh có gốc nhưng gốc quá xa — có cũng như không' ], correct: 3, explain: '<strong>Gốc xa — có cũng như không.</strong> Chi Dậu (trụ năm) tàng Tân (Kim) — cùng hành Kim với Canh, nên về kỹ thuật là có gốc. Nhưng can Canh ở trụ giờ, gốc ở chi năm cách xa 3 trụ → <em>ảnh hưởng hầu như không đáng kể</em> trong việc luận cục.' }, { text: 'Trường hợp nào sau đây được xem là <em>gốc có giá trị cao nhất</em>?', opts: [ 'Can năm có gốc ở chi tháng', 'Can tháng có gốc ở chi ngày', 'Can giờ có gốc ở chi năm', 'Một can có nhiều chi làm gốc, trong đó có gốc cùng trụ' ], correct: 3, explain: '<strong>Nhiều gốc, có gốc cùng trụ.</strong> Bài viết nêu: gốc cùng trụ là "mạnh nhất, ổn định nhất." Khi một can vừa có gốc cùng trụ vừa có thêm gốc ở các trụ bên cạnh, đó là <em>thực lực vững chắc nhất</em>. Các đáp án A, B, C chỉ là gốc trụ bên cạnh — yếu hơn.' }, { text: 'Một gốc được coi là <em>"có cũng như không"</em> khi nào?', opts: [ 'Khi gốc đó nằm ở vị trí cách xa (can năm có gốc duy nhất ở chi giờ hoặc ngược lại)', 'Khi gốc đó chỉ có một tàng can', 'Khi gốc đó bị khắc bởi can khác', 'Khi gốc đó ở trụ tháng' ], correct: 0, explain: '<strong>Can năm ↔ chi giờ (hoặc ngược lại).</strong> Đây là khoảng cách lớn nhất trong tứ trụ. Bài viết nêu rõ: "Ảnh hưởng hầu như không đáng kể trong việc luận cục bát tự." Gốc ở vị trí này không đủ khả năng hỗ trợ kịp thời.' }, { text: '<strong>Bát tự:</strong> Giáp Dần — Mão — Thìn (năm, tháng, ngày). Can Giáp được đánh giá như thế nào?', opts: [ 'Quá mạnh tới bất thường vì có ba chi làm gốc', 'Không có gốc', 'Có gốc nhưng gốc xa', 'Có gốc mạnh và ổn định ' ], correct: 3, explain: '<strong>Có gốc mạnh và ổn định, không phải quá mạnh.</strong> Chi Dần tàng Giáp (Mộc — bản khí, gốc chính), Mão và Thìn tàng Ất (Mộc — phụ khí). Ba chi đều Mộc nên có gốc. Cả ba chi đều trong tam hội mộc <em>và chỉ có 1 can mộc duy nhất</em> nên không phải quá mạnh.' }, { text: '<strong>Bát tự:</strong> Bính Tý — Tân Mão — Mậu Ngọ — Quý Hợi. Can Tân (Kim) ở trụ tháng có gốc không?', opts: [ 'Có gốc từ chi Tý', 'Có gốc từ chi Mão', 'Có gốc từ chi Ngọ', 'Không có gốc vì không chi nào tàng Kim (Tân, Canh)' ], correct: 3, explain: '<strong>Không có gốc.</strong> Kiểm tra lần lượt: Tý tàng Quý (Thủy), Mão tàng Ất (Mộc), Ngọ tàng Đinh·Kỷ (Hỏa·Thổ), Hợi tàng Nhâm·Giáp (Thủy·Mộc). <em>Không chi nào tàng Kim</em> → Tân hoàn toàn không có gốc dù đứng ở trụ tháng, vị trí đẹp.' }, { text: 'Khi luận bát tự, việc xác định can có gốc hay không giúp ích gì?', opts: [ 'Xác định chính xác giờ sinh', 'Biết được can đó là lực lượng mạnh hay yếu, ảnh hưởng hay ít ảnh hưởng đến cách cục', 'Biết được mức độ giàu nghèo', 'Xác định hướng nhà' ], correct: 1, explain: '<strong>Đánh giá thực lực trong cục.</strong> Can có gốc mạnh, ổn định → là lực lượng đáng kể, có khả năng tham gia vào hội đồng điều hành bát tự. Can không có gốc hoặc gốc quá xa → <em>chỉ là lực lượng yếu</em>, ít ảnh hưởng đến cục diện chính.' }, { text: 'Tư duy hệ thống trong bát tự so sánh "can có gốc" với hình ảnh nào?', opts: [ 'Như chiếc xe đạp', 'Như một cái bulong trong chiếc xe đạp — không nói lên điều gì một cách đơn lẻ', 'Như động cơ của ô tô', 'Như bánh xe chính' ], correct: 1, explain: '<strong>Cái bulong trong xe đạp.</strong> Đây là hình ảnh bài viết dùng để nhấn mạnh: "can có gốc hay không" là một yếu tố quan trọng nhưng <em>không thể kết luận tốt xấu một cách đơn lẻ</em>. Phải đặt nó trong toàn bộ hệ thống sinh khắc của tứ trụ mới có ý nghĩa.' } ]; let curPart = 0; let curQ = 0; let answers = []; let answered = false; function showView(id) { document.querySelectorAll('.view').forEach(v => v.classList.remove('active')); document.getElementById(id).classList.add('active'); window.scrollTo(0, 0); } function renderPart() { const p = PARTS[curPart]; document.getElementById('partSeal').textContent = ROMAN[curPart + 1]; document.getElementById('partLbl').textContent = 'Phần ' + ORDINAL[curPart + 1]; document.getElementById('partTitle').innerHTML = p.title; document.getElementById('partSubtitle').textContent = p.subtitle; document.getElementById('partBody').innerHTML = p.body; document.getElementById('partNumDisplay').textContent = curPart + 1; for (let i = 0; i < 3; i++) { const d = document.getElementById('dot' + i); d.className = 'dot' + (i < curPart ? ' done' : i === curPart ? ' current' : ''); } document.getElementById('prevBtn').disabled = curPart === 0; const isLast = curPart === PARTS.length - 1; document.getElementById('nextBtn').textContent = isLast ? '⟢ Hoàn tất ⟢' : 'Xem tiếp →'; document.getElementById('endSection').style.display = isLast ? 'block' : 'none'; } function nextPart() { if (curPart < PARTS.length - 1) { curPart++; renderPart(); document.querySelector('.part-card').scrollIntoView({ behavior: 'smooth', block: 'start' }); } else { document.querySelector('.cta').scrollIntoView({ behavior: 'smooth', block: 'start' }); } } function prevPart() { if (curPart > 0) { curPart--; renderPart(); document.querySelector('.part-card').scrollIntoView({ behavior: 'smooth', block: 'start' }); } } function startQuiz() { curQ = 0; answers = []; showView('view-quiz'); renderQuestion(); } function backToArticle() { showView('view-article'); } function renderQuestion() { answered = false; const q = QUESTIONS[curQ]; document.getElementById('progressFill').style.width = (curQ / QUESTIONS.length * 100) + '%'; document.getElementById('qNumDisplay').textContent = curQ + 1; document.getElementById('qLabel').textContent = 'Câu ' + (curQ + 1); document.getElementById('qText').innerHTML = q.text; const letters = ['A','B','C','D']; document.getElementById('qOptions').innerHTML = q.opts.map((opt, i) => `<button class="opt-btn" onclick="selectAnswer(${i})"><span class="opt-letter">${letters[i]}</span>${opt}</button>` ).join(''); const ex = document.getElementById('qExplain'); ex.className = 'explain'; ex.innerHTML = ''; const nb = document.getElementById('nextQBtn'); nb.className = 'next-q-btn'; nb.textContent = curQ === QUESTIONS.length - 1 ? '⟢ Xem kết quả ⟢' : 'Câu tiếp →'; } function selectAnswer(idx) { if (answered) return; answered = true; const q = QUESTIONS[curQ]; const ok = idx === q.correct; answers.push(ok); 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'); }); document.getElementById('progressFill').style.width = ((curQ + 1) / QUESTIONS.length * 100) + '%'; const ex = document.getElementById('qExplain'); ex.innerHTML = '<span class="verdict">' + (ok ? '✓ Chính xác' : '✕ Chưa đúng') + '</span><br>' + q.explain; ex.className = 'explain visible ' + (ok ? 'is-correct' : 'is-wrong'); document.getElementById('nextQBtn').className = 'next-q-btn visible'; } function nextQuestion() { if (curQ < QUESTIONS.length - 1) { curQ++; renderQuestion(); } else { showResult(); } } function showResult() { const score = answers.filter(Boolean).length; document.getElementById('finalScore').textContent = score; let title, msg; if (score === 10) { title = 'Toàn <em>thập</em>!'; msg = 'Xuất sắc! Bạn đã nắm vững cách xác định gốc, mức độ tác dụng của gốc và ứng dụng trong luận bát tự. Bước tiếp theo: luyện với lá số thực tế.'; } else if (score >= 8) { title = 'Xuất <em>sắc</em>'; msg = 'Nắm được phần lớn. Xem lại giải thích các câu sai — thường nằm ở phần phân biệt gốc xa với không có gốc, hoặc xác định tàng can Kim trong ví dụ 2.'; } else if (score >= 6) { title = '<em>Khá</em> tốt'; msg = 'Hiểu cơ bản rồi. Đọc lại Phần 2 (khoảng cách và mức độ gốc) và Phần 3 (ba ví dụ cụ thể) để làm chắc hơn.'; } else if (score >= 4) { title = 'Còn <em>chỗ trống</em>'; msg = 'Nền chưa vững. Đọc lại cả ba phần, nhớ kỹ: gốc chỉ tính cùng ngũ hành, và gốc cách xa (can năm ↔ chi giờ) có cũng như không.'; } else { title = '<em>Khởi đầu</em>'; msg = 'Bắt đầu từ Phần 1: ghi nhớ hai định nghĩa đơn giản (có gốc / không có gốc), sau đó xem kỹ ba ví dụ ở Phần 3 rồi làm lại.'; } document.getElementById('resultTitle').innerHTML = title; document.getElementById('resultMsg').innerHTML = msg; showView('view-result'); } function restartQuiz() { curQ = 0; answers = []; showView('view-quiz'); renderQuestion(); } renderPart(); </script> <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: 'Hai tình trạng<br><em>của một Thiên Can trong tứ trụ</em>', subtitle: 'Can thấu · Có gốc · Không có gốc', body: ` <p>Một thiên can xuất hiện trong bất kỳ trụ nào trong tứ trụ (năm, tháng, ngày, giờ) — lưu ý là 1 trong 4 can trên, <em>không phải tàng can</em> — thì còn được gọi là <strong>can thấu</strong>. Các can thấu chỉ có một trong hai tình trạng: <em>có gốc hoặc không có gốc.</em></p> <div class="src-table"> <div class="src-row r2"> <span class="src-key">Can có gốc</span> <span class="src-val">Có ít nhất một địa chi (cùng trụ hoặc khác trụ) có tàng can chứa thiên can <em>cùng ngũ hành</em> với nó</span> </div> <div class="src-row" style="background:rgba(239,106,106,0.08);border-left:3px solid var(--red)"> <span class="src-key" style="color:#f4a0a0">Can không có gốc</span> <span class="src-val">Không có bất kỳ địa chi nào có tàng can chứa thiên can cùng ngũ hành với nó</span> </div> </div> <div class="kp"><strong>Không có trạng thái trung gian nào khác.</strong></div> <h3 class="inline-sub">⟢ Ví dụ nhận diện gốc ⟢</h3> <div class="tc-table"> <div class="tc-header"><span>Can thấu</span><span>Ngũ hành</span><span>Tàng can tính là gốc</span></div> <div class="tc-row moc"><span class="tc-chi">Giáp</span><span class="tc-bk">Mộc</span><span class="tc-tang">Giáp, Ất</span></div> <div class="tc-row moc"><span class="tc-chi">Ất</span><span class="tc-bk">Mộc</span><span class="tc-tang">Giáp, Ất</span></div> <div class="tc-row hoa"><span class="tc-chi">Bính</span><span class="tc-bk">Hỏa</span><span class="tc-tang">Bính, Đinh</span></div> <div class="tc-row hoa"><span class="tc-chi">Đinh</span><span class="tc-bk">Hỏa</span><span class="tc-tang">Bính, Đinh</span></div> <div class="tc-row tho"><span class="tc-chi">Mậu</span><span class="tc-bk">Thổ</span><span class="tc-tang">Mậu, Kỷ</span></div> <div class="tc-row tho"><span class="tc-chi">Kỷ</span><span class="tc-bk">Thổ</span><span class="tc-tang">Mậu, Kỷ</span></div> <div class="tc-row kim"><span class="tc-chi">Canh</span><span class="tc-bk">Kim</span><span class="tc-tang">Canh, Tân</span></div> <div class="tc-row kim"><span class="tc-chi">Tân</span><span class="tc-bk">Kim</span><span class="tc-tang">Canh, Tân</span></div> <div class="tc-row thuy"><span class="tc-chi">Nhâm</span><span class="tc-bk">Thủy</span><span class="tc-tang">Nhâm, Quý</span></div> <div class="tc-row thuy"><span class="tc-chi">Quý</span><span class="tc-bk">Thủy</span><span class="tc-tang">Nhâm, Quý</span></div> </div> <div class="warn-box"> <span class="warn-label">⚠ Nhắc lại</span> <p>Gốc chỉ tính <strong>cùng ngũ hành</strong> — không tính tàng can có ngũ hành tương sinh. Ví dụ can Giáp (Mộc) <strong>không nhận</strong> gốc từ chi tàng Nhâm, Quý dù Thủy sinh Mộc.</p> </div> ` }, { title: 'Khoảng cách đến nhật chủ<br><em>và mức độ ảnh hưởng của gốc</em>', subtitle: 'Cùng trụ · Trụ bên cạnh · Cách xa', body: ` <p>Khoảng cách đến nhật chủ <em>không liên quan</em> đến việc can đó có gốc hay không, nhưng nó ảnh hưởng đến <strong>mức độ tác dụng của gốc đó</strong> trong thực tế vận hành của bát tự.</p> <div class="src-table"> <div class="src-row r1"> <span class="src-key">Cùng trụ</span> <span class="src-val">Can và chi nằm chung một cột → <em>Gốc mạnh nhất, ổn định nhất</em></span> </div> <div class="src-row r2"> <span class="src-key">Trụ bên cạnh</span> <span class="src-val">Ví dụ can năm có gốc ở chi tháng, hoặc can tháng có gốc ở chi ngày → <em>Gốc yếu hơn cùng trụ, nhưng vẫn có tác dụng rõ rệt</em></span> </div> <div class="src-row" style="background:rgba(239,106,106,0.08);border-left:3px solid var(--red)"> <span class="src-key" style="color:#f4a0a0">Cách xa</span> <span class="src-val">Can năm có gốc duy nhất ở chi giờ, hoặc can giờ có gốc duy nhất ở chi năm → <em>Gốc này có cũng như không</em>, ảnh hưởng hầu như không đáng kể trong việc luận cục bát tự</span> </div> </div> <div class="kp"><strong>Nguyên tắc:</strong> Một gốc chỉ thực sự có giá trị khi nó nằm ở vị trí có thể hỗ trợ hoặc tác động kịp thời đến hành trình vận hành của ngũ hành trong tứ trụ. <em>Gốc quá xa thì không khác gì không có.</em></div> ` }, { title: 'Ví dụ cụ thể<br><em>và ứng dụng trong luận bát tự</em>', subtitle: 'Ba ví dụ · Tư duy hệ thống · Hội đồng điều hành', body: ` <h3 class="inline-sub">⟢ Ví dụ 1 — Can Giáp có gốc (ổn định, không phải rất mạnh) ⟢</h3> <p><strong>Bát tự:</strong> Năm Giáp Dần, tháng Mão, ngày Thìn</p> <div class="ex-grid"> <div class="ex-row"><span class="ex-chi" style="font-size:13px;padding-top:4px">Can<br>Giáp</span> <span class="ex-desc"> Chi <em>Dần</em> (cùng trụ) tàng Giáp (Mộc) → gốc.<br> Chi <em>Mão</em> tàng Ất (Mộc) → gốc.<br> Chi <em>Thìn</em> tàng Ất (Mộc) → gốc.<br> → Giáp có gốc từ cả 3 chi, nhưng do can năm cách nhật chủ hơi xa, và gốc chủ yếu là phụ khí (Ất từ Mão, Thìn), nên chỉ coi là <strong>có gốc ổn định, không phải rất mạnh.</strong> </span> </div> </div> <h3 class="inline-sub">⟢ Ví dụ 2 — Can Tân không có gốc ⟢</h3> <p><strong>Bát tự:</strong> Năm Bính Tý, tháng Tân Mão, ngày Mậu Ngọ, giờ Quý Hợi</p> <div class="ex-grid"> <div class="ex-row"><span class="ex-chi" style="font-size:13px;padding-top:4px">Can<br>Tân</span> <span class="ex-desc"> Can Tân (Kim) ở trụ tháng. Kiểm tra tàng can các chi:<br> <em>Tý:</em> Quý (Thủy) · <em>Mão:</em> Ất (Mộc) · <em>Ngọ:</em> Đinh, Kỷ (Hỏa, Thổ) · <em>Hợi:</em> Nhâm, Giáp (Thủy, Mộc)<br> Không có chi nào tàng Kim (Tân, Canh) → <strong>Tân không có gốc.</strong><br> → Dù Tân đứng ở trụ tháng, vị trí đẹp, nhưng <em>không có gốc thì thực lực bằng không.</em> </span> </div> </div> <h3 class="inline-sub">⟢ Ví dụ 3 — Gốc xa, có cũng như không ⟢</h3> <p><strong>Bát tự:</strong> Năm Tân Dậu, tháng Tân Mão, ngày Giáp Ngọ, giờ Canh Ngọ</p> <div class="ex-grid"> <div class="ex-row"><span class="ex-chi" style="font-size:13px;padding-top:4px">Can<br>Canh</span> <span class="ex-desc"> Can Canh (Kim) ở trụ giờ. Chi Dậu (cùng trụ năm) tàng Tân (Kim) → về kỹ thuật là có gốc.<br> Nhưng can Canh ở trụ giờ — gốc ở chi năm <em>cách xa 3 trụ</em> → <strong>gốc này có cũng như không</strong> nếu không có thêm các gốc khác ở gần. </span> </div> </div> <h3 class="inline-sub">⟢ Ứng dụng trong luận bát tự ⟢</h3> <p>Bát tự truyền thống là <strong>tư duy hệ thống</strong>. Một yếu tố như "can có gốc hay không" cũng chỉ như <em>một cái bulong trong chiếc xe đạp</em> — không nói lên được điều gì một cách đơn lẻ.</p> <p>Tuy nhiên:</p> <div class="src-table"> <div class="src-row r2"> <span class="src-key" style="font-size:13.5px">Can có gốc mạnh</span> <span class="src-val">Là một lực lượng đáng kể, góp phần tham gia vào <em>hội đồng điều hành</em> của bát tự</span> </div> <div class="src-row r1"> <span class="src-key" style="font-size:13.5px">Hội đồng điều hành</span> <span class="src-val">Gồm các nhóm can chi <em>có thực lực</em>, có tiếng nói quyết định trong vận hành bát tự</span> </div> <div class="src-row" style="background:rgba(239,106,106,0.08);border-left:3px solid var(--red)"> <span class="src-key" style="color:#f4a0a0;font-size:13.5px">Can yếu</span> <span class="src-val">Không có gốc, hoặc gốc quá xa, hoặc gốc bị phá vỡ → <em>chỉ là lực lượng yếu</em>, ít ảnh hưởng đến cục diện chính</span> </div> </div> <p>Do đó, khi luận bát tự, cần:</p> <div class="src-table"> <div class="src-row r1"><span class="src-key">Bước 1</span><span class="src-val">Xác định can nào có gốc, gốc đó <em>mạnh hay yếu</em>, gần hay xa</span></div> <div class="src-row r2"><span class="src-key">Bước 2</span><span class="src-val">Đánh giá <em>vai trò của từng can</em> trong hệ thống tương quan sinh khắc</span></div> <div class="src-row r3"><span class="src-key">Bước 3</span><span class="src-val"><em>Không thể</em> chỉ dựa vào một yếu tố đơn lẻ để kết luận tốt xấu</span></div> </div> ` } ]; const QUESTIONS = [ { text: 'Một thiên can trong tứ trụ (không phải tàng can) được gọi là <em>"có gốc"</em> khi nào?', opts: [ 'Khi nó có ít nhất một địa chi tàng can chứa thiên can cùng ngũ hành với nó', 'Khi nó đứng cùng trụ với một địa chi tàng can bất kỳ', 'Khi nó có quan hệ sinh với địa chi', 'Khi nó cách xa nhật chủ' ], correct: 0, explain: '<strong>Cùng ngũ hành — không phải tương sinh.</strong> Can có gốc khi có ít nhất một địa chi tàng can <em>cùng ngũ hành</em> với nó, bất kể cùng trụ hay khác trụ. Quan hệ sinh (như Thủy sinh Mộc) không được tính là gốc.' }, { text: 'Can <em>không có gốc</em> là can như thế nào?', opts: [ 'Có địa chi tàng can khắc nó', 'Không có bất kỳ địa chi nào có tàng can chứa thiên can cùng ngũ hành với nó', 'Chỉ có một địa chi tàng can sinh cho nó', 'Có địa chi tàng can nhưng khác ngũ hành' ], correct: 1, explain: '<strong>Không có chi nào tàng can cùng ngũ hành.</strong> Dù can đó đứng ở vị trí đẹp như trụ tháng hay trụ ngày, nếu không có chi nào tàng can cùng hành thì <em>thực lực bằng không</em>. Ví dụ 2 (can Tân) minh họa rõ điều này.' }, { text: 'Trạng thái trung gian giữa "có gốc" và "không có gốc" tồn tại hay không?', opts: [ 'Có, đó là khi có gốc nhưng yếu', 'Có, đó là khi có gốc từ xa', 'Có, đó là khi có nửa gốc', 'Đúng ra là không, nhưng có loại can có gốc cũng như không do gốc quá xa' ], correct: 3, explain: '<strong>Về định nghĩa: chỉ có hoặc không.</strong> Bài viết nêu rõ: "Không có trạng thái trung gian nào khác." Tuy nhiên trên thực tế, một can có gốc duy nhất ở vị trí <em>cách xa</em> (can năm ↔ chi giờ) thì dù có gốc về mặt kỹ thuật, tác dụng hầu như bằng không.' }, { text: '<strong>Bát tự:</strong> Năm Tân Dậu — tháng Tân Mão — ngày Giáp Ngọ — giờ Canh Ngọ.<br>Can Canh (Kim) ở trụ giờ được đánh giá như thế nào?', opts: [ 'Can Canh có gốc mạnh', 'Can Canh không có gốc', 'Can Canh không có gốc nhưng vẫn mạnh', 'Can Canh có gốc nhưng gốc quá xa — có cũng như không' ], correct: 3, explain: '<strong>Gốc xa — có cũng như không.</strong> Chi Dậu (trụ năm) tàng Tân (Kim) — cùng hành Kim với Canh, nên về kỹ thuật là có gốc. Nhưng can Canh ở trụ giờ, gốc ở chi năm cách xa 3 trụ → <em>ảnh hưởng hầu như không đáng kể</em> trong việc luận cục.' }, { text: 'Trường hợp nào sau đây được xem là <em>gốc có giá trị cao nhất</em>?', opts: [ 'Can năm có gốc ở chi tháng', 'Can tháng có gốc ở chi ngày', 'Can giờ có gốc ở chi năm', 'Một can có nhiều chi làm gốc, trong đó có gốc cùng trụ' ], correct: 3, explain: '<strong>Nhiều gốc, có gốc cùng trụ.</strong> Bài viết nêu: gốc cùng trụ là "mạnh nhất, ổn định nhất." Khi một can vừa có gốc cùng trụ vừa có thêm gốc ở các trụ bên cạnh, đó là <em>thực lực vững chắc nhất</em>. Các đáp án A, B, C chỉ là gốc trụ bên cạnh — yếu hơn.' }, { text: 'Một gốc được coi là <em>"có cũng như không"</em> khi nào?', opts: [ 'Khi gốc đó nằm ở vị trí cách xa (can năm có gốc duy nhất ở chi giờ hoặc ngược lại)', 'Khi gốc đó chỉ có một tàng can', 'Khi gốc đó bị khắc bởi can khác', 'Khi gốc đó ở trụ tháng' ], correct: 0, explain: '<strong>Can năm ↔ chi giờ (hoặc ngược lại).</strong> Đây là khoảng cách lớn nhất trong tứ trụ. Bài viết nêu rõ: "Ảnh hưởng hầu như không đáng kể trong việc luận cục bát tự." Gốc ở vị trí này không đủ khả năng hỗ trợ kịp thời.' }, { text: '<strong>Bát tự:</strong> Giáp Dần — Mão — Thìn (năm, tháng, ngày). Can Giáp được đánh giá như thế nào?', opts: [ 'Có gốc ổn định, nhưng không phải rất mạnh do gốc chủ yếu là phụ khí và can năm cách xa nhật chủ', 'Không có gốc', 'Có gốc nhưng gốc xa', 'Rất mạnh vì có ba chi làm gốc' ], correct: 3, explain: '<strong>Rất mạnh vì có ba chi làm gốc.</strong> Chi Dần tàng Giáp (Mộc — bản khí, gốc chính), Mão và Thìn tàng Ất (Mộc — phụ khí). Ba chi đều Mộc nên có gốc. Thực ra ba chi đều năm trong tam hội mộc <em>tạo thành gốc mạnh </em> nhưng chưa phải quá mạnh.' }, { text: '<strong>Bát tự:</strong> Bính Tý — Tân Mão — Mậu Ngọ — Quý Hợi. Can Tân (Kim) ở trụ tháng có gốc không?', opts: [ 'Có gốc từ chi Tý', 'Có gốc từ chi Mão', 'Có gốc từ chi Ngọ', 'Không có gốc vì không chi nào tàng Kim (Tân, Canh)' ], correct: 3, explain: '<strong>Không có gốc.</strong> Kiểm tra lần lượt: Tý tàng Quý (Thủy), Mão tàng Ất (Mộc), Ngọ tàng Đinh·Kỷ (Hỏa·Thổ), Hợi tàng Nhâm·Giáp (Thủy·Mộc). <em>Không chi nào tàng Kim</em> → Tân hoàn toàn không có gốc dù đứng ở trụ tháng, vị trí đẹp.' }, { text: 'Khi luận bát tự, việc xác định can có gốc hay không giúp ích gì?', opts: [ 'Xác định chính xác giờ sinh', 'Biết được can đó là lực lượng mạnh hay yếu, ảnh hưởng hay ít ảnh hưởng đến cách cục', 'Biết được mức độ giàu nghèo', 'Xác định hướng nhà' ], correct: 1, explain: '<strong>Đánh giá thực lực trong cục.</strong> Can có gốc mạnh, ổn định → là lực lượng đáng kể, có khả năng tham gia vào hội đồng điều hành bát tự. Can không có gốc hoặc gốc quá xa → <em>chỉ là lực lượng yếu</em>, ít ảnh hưởng đến cục diện chính.' }, { text: 'Tư duy hệ thống trong bát tự so sánh "can có gốc" với hình ảnh nào?', opts: [ 'Như chiếc xe đạp', 'Như một cái bulong trong chiếc xe đạp — không nói lên điều gì một cách đơn lẻ', 'Như động cơ của ô tô', 'Như bánh xe chính' ], correct: 1, explain: '<strong>Cái bulong trong xe đạp.</strong> Đây là hình ảnh bài viết dùng để nhấn mạnh: "can có gốc hay không" là một yếu tố quan trọng nhưng <em>không thể kết luận tốt xấu một cách đơn lẻ</em>. Phải đặt nó trong toàn bộ hệ thống sinh khắc của tứ trụ mới có ý nghĩa.' } ]; let curPart = 0; let curQ = 0; let answers = []; let answered = false; function showView(id) { document.querySelectorAll('.view').forEach(v => v.classList.remove('active')); document.getElementById(id).classList.add('active'); window.scrollTo(0, 0); } function renderPart() { const p = PARTS[curPart]; document.getElementById('partSeal').textContent = ROMAN[curPart + 1]; document.getElementById('partLbl').textContent = 'Phần ' + ORDINAL[curPart + 1]; document.getElementById('partTitle').innerHTML = p.title; document.getElementById('partSubtitle').textContent = p.subtitle; document.getElementById('partBody').innerHTML = p.body; document.getElementById('partNumDisplay').textContent = curPart + 1; for (let i = 0; i < 3; i++) { const d = document.getElementById('dot' + i); d.className = 'dot' + (i < curPart ? ' done' : i === curPart ? ' current' : ''); } document.getElementById('prevBtn').disabled = curPart === 0; const isLast = curPart === PARTS.length - 1; document.getElementById('nextBtn').textContent = isLast ? '⟢ Hoàn tất ⟢' : 'Xem tiếp →'; document.getElementById('endSection').style.display = isLast ? 'block' : 'none'; } function nextPart() { if (curPart < PARTS.length - 1) { curPart++; renderPart(); document.querySelector('.part-card').scrollIntoView({ behavior: 'smooth', block: 'start' }); } else { document.querySelector('.cta').scrollIntoView({ behavior: 'smooth', block: 'start' }); } } function prevPart() { if (curPart > 0) { curPart--; renderPart(); document.querySelector('.part-card').scrollIntoView({ behavior: 'smooth', block: 'start' }); } } function startQuiz() { curQ = 0; answers = []; showView('view-quiz'); renderQuestion(); } function backToArticle() { showView('view-article'); } function renderQuestion() { answered = false; const q = QUESTIONS[curQ]; document.getElementById('progressFill').style.width = (curQ / QUESTIONS.length * 100) + '%'; document.getElementById('qNumDisplay').textContent = curQ + 1; document.getElementById('qLabel').textContent = 'Câu ' + (curQ + 1); document.getElementById('qText').innerHTML = q.text; const letters = ['A','B','C','D']; document.getElementById('qOptions').innerHTML = q.opts.map((opt, i) => `<button class="opt-btn" onclick="selectAnswer(${i})"><span class="opt-letter">${letters[i]}</span>${opt}</button>` ).join(''); const ex = document.getElementById('qExplain'); ex.className = 'explain'; ex.innerHTML = ''; const nb = document.getElementById('nextQBtn'); nb.className = 'next-q-btn'; nb.textContent = curQ === QUESTIONS.length - 1 ? '⟢ Xem kết quả ⟢' : 'Câu tiếp →'; } function selectAnswer(idx) { if (answered) return; answered = true; const q = QUESTIONS[curQ]; const ok = idx === q.correct; answers.push(ok); 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'); }); document.getElementById('progressFill').style.width = ((curQ + 1) / QUESTIONS.length * 100) + '%'; const ex = document.getElementById('qExplain'); ex.innerHTML = '<span class="verdict">' + (ok ? '✓ Chính xác' : '✕ Chưa đúng') + '</span><br>' + q.explain; ex.className = 'explain visible ' + (ok ? 'is-correct' : 'is-wrong'); document.getElementById('nextQBtn').className = 'next-q-btn visible'; } function nextQuestion() { if (curQ < QUESTIONS.length - 1) { curQ++; renderQuestion(); } else { showResult(); } } function showResult() { const score = answers.filter(Boolean).length; document.getElementById('finalScore').textContent = score; let title, msg; if (score === 10) { title = 'Toàn <em>thập</em>!'; msg = 'Xuất sắc! Bạn đã nắm vững cách xác định gốc, mức độ tác dụng của gốc và ứng dụng trong luận bát tự. Bước tiếp theo: luyện với lá số thực tế.'; } else if (score >= 8) { title = 'Xuất <em>sắc</em>'; msg = 'Nắm được phần lớn. Xem lại giải thích các câu sai — thường nằm ở phần phân biệt gốc xa với không có gốc, hoặc xác định tàng can Kim trong ví dụ 2.'; } else if (score >= 6) { title = '<em>Khá</em> tốt'; msg = 'Hiểu cơ bản rồi. Đọc lại Phần 2 (khoảng cách và mức độ gốc) và Phần 3 (ba ví dụ cụ thể) để làm chắc hơn.'; } else if (score >= 4) { title = 'Còn <em>chỗ trống</em>'; msg = 'Nền chưa vững. Đọc lại cả ba phần, nhớ kỹ: gốc chỉ tính cùng ngũ hành, và gốc cách xa (can năm ↔ chi giờ) có cũng như không.'; } else { title = '<em>Khởi đầu</em>'; msg = 'Bắt đầu từ Phần 1: ghi nhớ hai định nghĩa đơn giản (có gốc / không có gốc), sau đó xem kỹ ba ví dụ ở Phần 3 rồi làm lại.'; } document.getElementById('resultTitle').innerHTML = title; document.getElementById('resultMsg').innerHTML = msg; showView('view-result'); } function restartQuiz() { curQ = 0; answers = []; showView('view-quiz'); renderQuestion(); } renderPart(); </script> </body> </html>" style="width:100% !important;height:5000px !important;min-height:5000px !important;max-height:none !important;border:0 !important;display:block !important;" title="Can Có Gốc Và Can Không Có Gốc — Hoàng Trung"> </iframe> </div> <script> (function() { var ID = 'lt-cangoc-frame'; var H = 5000; function fix() { var f = document.getElementById(ID); if (!f) return; f.style.setProperty('height', H + 'px', 'important'); f.style.setProperty('min-height', H + 'px', 'important'); f.style.setProperty('max-height', 'none', 'important'); var p = f.parentElement; while (p && p !== document.body) { var cs = window.getComputedStyle(p); if (cs.overflow === 'hidden') p.style.setProperty('overflow', 'visible', 'important'); if (cs.maxHeight !== 'none' && parseInt(cs.maxHeight) < H) p.style.setProperty('max-height', 'none', 'important'); p = p.parentElement; } } window.addEventListener('message', function(e) { if (e && e.data && typeof e.data.tcH === 'number') { H = e.data.tcH + 60; fix(); } }); [0, 300, 800, 2000, 5000].forEach(function(t) { setTimeout(fix, t); }); setInterval(fix, 2000); })(); </script> <!-- End CAN CÓ GỐC VÀ CAN KHÔNG CÓ GỐC -->