<!-- ======================================================== --> <!-- TỨ TRỤ — BÁT TỰ — LỊCH TIẾT KHÍ + Trắc nghiệm 10 câu --> <!-- WordPress safe iframe (JNews compatible) --> <!-- Paste into Custom HTML block in Gutenberg --> <!-- ======================================================== --> <style> .lt-wrap-lt-tutru-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-tutru-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-tutru-frame"> <iframe id="lt-tutru-frame" height="7000" 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>Tứ Trụ — Bát Tự — Lịch Tiết Khí</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 { 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); } } /* Avatar pin */ .avatar-pin { position: fixed; top: 16px; right: 16px; width: 100px; height: 100px; z-index: 50; pointer-events: none; animation: pinFloat 6s ease-in-out infinite; } @keyframes pinFloat { 0%, 100% { transform: translateY(0); } 50% { transform: translateY(-3px); } } .avatar-pin .avatar-img { position: absolute; inset: 8px; border-radius: 50%; background-image: url("data:image/jpeg;base64,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"); background-size: cover; background-position: center; border: 2px solid var(--gold); box-shadow: 0 0 0 2px var(--bg), 0 0 14px rgba(212,175,55,0.6), 0 4px 16px rgba(0,0,0,0.6); animation: avatarBreathe 3s ease-in-out infinite; z-index: 2; } @keyframes avatarBreathe { 0%, 100% { box-shadow: 0 0 0 2px var(--bg), 0 0 14px rgba(212,175,55,0.6), 0 4px 16px rgba(0,0,0,0.6); } 50% { box-shadow: 0 0 0 2px var(--bg), 0 0 22px rgba(212,175,55,0.85), 0 4px 16px rgba(0,0,0,0.6); } } .avatar-pin .avatar-ring { position: absolute; inset: 0; border-radius: 50%; border: 1px dashed rgba(212,175,55,0.6); animation: rotate 18s linear infinite; pointer-events: none; } .avatar-pin .avatar-ring.r2 { inset: -5px; border: 1px solid rgba(212,175,55,0.22); animation: rotate 30s linear infinite reverse; } .app { 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 50px; } .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: 20px; 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; } /* PART HEADERS */ .part-header { text-align: center; margin: 80px 0 36px; } .part-header .seal { display: inline-flex; align-items: center; justify-content: center; width: 56px; height: 56px; 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: 22px; box-shadow: 0 0 0 2px var(--bg), 0 0 20px rgba(158,27,63,0.4), inset 0 0 12px rgba(0,0,0,0.4); margin-bottom: 14px; position: relative; } .part-header .seal::before { content: ''; position: absolute; inset: -8px; border-radius: 50%; border: 1px dashed var(--gold-soft); animation: rotate 40s linear infinite; } .part-header .part-label { 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-header h2 { font-family: 'Cormorant Garamond', serif; font-weight: 600; font-size: 24px; line-height: 1.2; color: var(--ink); } .part-header h2 em { color: var(--gold-bright); font-style: italic; } .part-header .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 */ .part-body { font-size: 15px; line-height: 1.75; color: var(--ink-soft); } .part-body p { margin-bottom: 14px; } .part-body p strong { color: var(--ink); font-weight: 600; } .part-body p em, .part-body em { color: var(--gold-bright); font-style: italic; } .part-body .hl { color: var(--gold-bright); font-weight: 500; font-style: italic; } .subhead { font-family: 'Cormorant Garamond', serif; font-style: italic; font-size: 13px; letter-spacing: 3px; text-transform: uppercase; color: var(--gold); font-weight: 600; margin: 26px 0 12px; padding-bottom: 6px; border-bottom: 1px solid rgba(212,175,55,0.2); } /* TỨ TRỤ TABLE */ .tutru-table { margin: 20px 0; background: linear-gradient(155deg, rgba(28,21,40,0.85), rgba(21,16,31,0.6)); border: 1px solid rgba(212,175,55,0.3); border-radius: 4px; padding: 16px 12px; } .tutru-headers { display: grid; grid-template-columns: 60px repeat(4, 1fr); gap: 6px; margin-bottom: 8px; } .tutru-headers > div { text-align: center; font-family: 'Cormorant Garamond', serif; font-style: italic; font-size: 11px; letter-spacing: 1.5px; text-transform: uppercase; color: var(--gold); padding: 6px 2px; } .tutru-headers > div:first-child { color: transparent; } .tutru-row { display: grid; grid-template-columns: 60px repeat(4, 1fr); gap: 6px; margin-bottom: 6px; } .tutru-row > div:first-child { display: flex; align-items: center; justify-content: center; font-family: 'Cormorant Garamond', serif; font-weight: 700; font-style: italic; font-size: 14px; color: var(--gold); letter-spacing: 1px; } .tutru-cell { aspect-ratio: 1; display: flex; align-items: center; justify-content: center; background: rgba(15,11,22,0.7); border: 1px solid rgba(212,175,55,0.3); border-radius: 3px; font-family: 'Cormorant Garamond', serif; font-weight: 700; font-style: italic; font-size: 18px; color: var(--gold-bright); } .tutru-cell.empty { color: var(--ink-dim); font-size: 14px; font-style: normal; } .tutru-cell.numbered { background: linear-gradient(145deg, rgba(212,175,55,0.15), rgba(212,175,55,0.05)); border-color: var(--gold); font-size: 22px; } .tutru-row.chi .tutru-cell { background: rgba(15,11,22,0.5); color: var(--ink-soft); } .tutru-row.chi .tutru-cell.numbered { color: var(--gold-bright); background: linear-gradient(145deg, rgba(126,191,224,0.12), rgba(15,11,22,0.6)); border-color: var(--blue); } .tutru-caption { text-align: center; margin-top: 12px; font-family: 'Cormorant Garamond', serif; font-style: italic; font-size: 13px; color: var(--gold); letter-spacing: 2px; } /* Keypoint */ .keypoint { display: block; margin: 18px 0; padding: 16px 18px; border-left: 3px solid var(--gold); background: rgba(212,175,55,0.07); font-family: 'Cormorant Garamond', serif; font-style: italic; font-size: 16px; line-height: 1.55; color: var(--ink); border-radius: 0 2px 2px 0; } .keypoint strong { color: var(--gold-bright); font-style: normal; font-family: 'Be Vietnam Pro', sans-serif; font-weight: 700; font-size: 14.5px; } .keypoint em { color: var(--gold-bright); font-weight: 600; font-style: italic; } /* Compare box - âm lịch vs tiết khí */ .compare-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; margin: 18px 0; } .compare-card { padding: 16px 14px; border-radius: 4px; border: 1px solid; background: linear-gradient(155deg, rgba(28,21,40,0.7), rgba(21,16,31,0.5)); } .compare-card.am { border-color: rgba(134,191,224,0.4); } .compare-card.tk { border-color: rgba(245,208,97,0.5); background: linear-gradient(155deg, rgba(212,175,55,0.08), rgba(21,16,31,0.5)); } .compare-card .c-label { display: block; font-family: 'Cormorant Garamond', serif; font-style: italic; font-weight: 700; font-size: 11px; letter-spacing: 2px; text-transform: uppercase; margin-bottom: 8px; } .compare-card.am .c-label { color: var(--blue); } .compare-card.tk .c-label { color: var(--gold-bright); } .compare-card .c-name { font-family: 'Cormorant Garamond', serif; font-weight: 700; font-size: 17px; color: var(--ink); margin-bottom: 8px; } .compare-card.am .c-name { color: #b8d8f0; } .compare-card.tk .c-name { color: var(--gold-bright); } .compare-card ul { list-style: none; padding: 0; margin: 0; } .compare-card ul li { font-size: 13px; line-height: 1.5; color: var(--ink-soft); padding: 4px 0 4px 14px; position: relative; } .compare-card ul li::before { content: '·'; position: absolute; left: 4px; color: var(--gold); font-weight: 700; } /* Example boxes (1950, 1990) */ .date-example { margin: 18px 0; padding: 18px 16px; background: linear-gradient(155deg, rgba(15,11,22,0.7), rgba(11,8,18,0.5)); border: 1px dashed rgba(212,175,55,0.3); border-radius: 4px; } .date-example .d-label { display: block; font-family: 'Cormorant Garamond', serif; font-style: italic; font-size: 11px; letter-spacing: 3px; text-transform: uppercase; color: var(--gold); margin-bottom: 12px; } .date-example .d-date { text-align: center; font-family: 'Cormorant Garamond', serif; font-weight: 700; font-style: italic; font-size: 26px; color: var(--gold-bright); letter-spacing: 1px; margin-bottom: 14px; text-shadow: 0 0 10px rgba(245,208,97,0.2); } .date-example .d-rows { display: flex; flex-direction: column; gap: 8px; } .date-example .d-row { display: flex; align-items: flex-start; gap: 10px; padding: 10px 12px; background: rgba(28,21,40,0.5); border-left: 2px solid; border-radius: 3px; } .date-example .d-row.am { border-left-color: var(--blue); } .date-example .d-row.tk { border-left-color: var(--gold); background: rgba(212,175,55,0.06); } .date-example .d-row .badge { flex-shrink: 0; font-family: 'Cormorant Garamond', serif; font-style: italic; font-weight: 700; font-size: 11px; letter-spacing: 1px; text-transform: uppercase; padding: 3px 8px; border-radius: 2px; border: 1px solid; white-space: nowrap; margin-top: 1px; } .date-example .d-row.am .badge { color: var(--blue); border-color: rgba(134,191,224,0.5); background: rgba(134,191,224,0.1); } .date-example .d-row.tk .badge { color: var(--gold); border-color: rgba(212,175,55,0.5); background: rgba(212,175,55,0.1); } .date-example .d-row .text { flex: 1; font-family: 'Cormorant Garamond', serif; font-style: italic; font-size: 14.5px; line-height: 1.5; color: var(--ink); } .date-example .d-row .text strong { font-style: normal; font-family: 'Be Vietnam Pro', sans-serif; font-weight: 700; color: var(--gold-bright); } /* Tiết khí list */ .tk-list { list-style: none; margin: 14px 0; padding: 0; } .tk-list li { padding: 10px 12px; display: flex; align-items: center; gap: 12px; background: linear-gradient(155deg, rgba(28,21,40,0.6), rgba(21,16,31,0.4)); border: 1px solid rgba(212,175,55,0.18); border-radius: 3px; margin-bottom: 6px; } .tk-list .tk-month { flex-shrink: 0; font-family: 'Cormorant Garamond', serif; font-weight: 700; font-style: italic; font-size: 16px; color: var(--gold-bright); width: 80px; } .tk-list .tk-arrow { color: var(--gold); font-size: 14px; } .tk-list .tk-name { flex: 1; font-family: 'Cormorant Garamond', serif; font-style: italic; font-size: 15px; color: var(--ink); } /* Closing/conclusion */ .closing { margin: 90px 0 30px; 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.6; 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: 40px 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 VIEW */ .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 VIEW */ .result-hero { text-align: center; padding: 30px 0 20px; } .result-circle { width: 160px; height: 160px; margin: 0 auto 24px; border-radius: 50%; background: radial-gradient(circle at 50% 40%, rgba(212,175,55,0.25), transparent 60%), linear-gradient(145deg, var(--bg-3), var(--bg-2)); border: 2px solid var(--gold); display: flex; flex-direction: column; align-items: center; justify-content: center; position: relative; box-shadow: 0 0 0 6px rgba(212,175,55,0.05), 0 0 40px rgba(212,175,55,0.2), inset 0 0 30px rgba(212,175,55,0.1); animation: correctPop 0.6s ease; } .result-circle::before { content: ''; position: absolute; inset: -12px; border-radius: 50%; border: 1px dashed var(--gold-soft); animation: rotate 60s linear infinite; } .result-score { font-family: 'Cormorant Garamond', serif; font-weight: 700; font-size: 56px; line-height: 1; color: var(--gold-bright); text-shadow: 0 0 20px rgba(245,208,97,0.4); } .result-total { font-family: 'Cormorant Garamond', serif; font-style: italic; font-size: 14px; color: var(--ink-dim); margin-top: 4px; letter-spacing: 2px; } .result-label { font-family: 'Cormorant Garamond', serif; font-style: italic; font-size: 12px; letter-spacing: 4px; text-transform: uppercase; color: var(--gold); margin-bottom: 10px; display: block; } .result-title { font-family: 'Cormorant Garamond', serif; font-weight: 600; font-size: 26px; line-height: 1.2; color: var(--ink); margin-bottom: 8px; } .result-title em { font-style: italic; color: var(--gold-bright); } .result-msg { font-family: 'Cormorant Garamond', serif; font-style: italic; font-size: 16px; line-height: 1.55; color: var(--ink-soft); max-width: 380px; margin: 14px auto 0; } .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: 24px; } .hero-chinese { font-size: 44px; letter-spacing: 5px; } .part-header h2 { font-size: 22px; } .part-body { font-size: 14.5px; } .q-card { padding: 22px 18px; } .q-card h2 { font-size: 17px; } .opt-btn { font-size: 14.5px; padding: 12px 12px 12px 44px; } .avatar-pin { width: 88px; height: 88px; top: 12px; right: 12px; } .result-circle { width: 140px; height: 140px; } .result-score { font-size: 48px; } .result-title { font-size: 22px; } .tutru-headers, .tutru-row { grid-template-columns: 50px repeat(4, 1fr); gap: 4px; } .tutru-cell { font-size: 16px; } .tutru-cell.numbered { font-size: 18px; } .compare-grid { grid-template-columns: 1fr; } .date-example .d-date { font-size: 22px; } } @media (max-width: 340px) { .avatar-pin { width: 76px; height: 76px; } .opt-btn { padding: 10px 10px 10px 40px; font-size: 14px; } .tutru-headers, .tutru-row { grid-template-columns: 42px repeat(4, 1fr); gap: 3px; } .tutru-cell { font-size: 14px; } } </style> </head> <body> <div class="bg-gradient"></div> <div class="stars"></div> <div class="avatar-pin"> <div class="avatar-ring r2"></div> <div class="avatar-ring"></div> <div class="avatar-img"></div> </div> <div class="app"> <!-- ============= ARTICLE VIEW ============= --> <div class="view active" id="view-article"> <section class="hero"> <span class="hero-tag">Bát Tự Tử Bình</span> <div class="hero-chinese">四柱八字</div> <h1>Tứ Trụ — <em>Bát Tự</em><br>Lịch Tiết Khí</h1> <div class="hero-rule"></div> <p class="hero-intro"> Hai khái niệm <em>nền tảng</em> của môn Tử Bình — tưởng đơn giản nhưng <em>người mới học rất hay nhầm lẫn</em>, đặc biệt về loại lịch được sử dụng. </p> <div class="hero-author">Hoàng Trung</div> </section> <!-- =============== PHẦN I — TỨ TRỤ =============== --> <header class="part-header"> <div class="seal">I</div> <span class="part-label">Phần thứ nhất</span> <h2>Tứ Trụ <em>là gì</em>?</h2> <span class="part-subtitle">Bốn cột đo thời gian</span> </header> <div class="part-body"> <p>Tứ trụ là <strong>bốn cột đo thời gian</strong>, gồm <em>năm — tháng — ngày — giờ</em>. Mỗi trụ gồm <strong>một can ở trên</strong> và <strong>một chi ở dưới</strong>.</p> <div class="tutru-table"> <div class="tutru-headers"> <div></div> <div>Trụ 1</div> <div>Trụ 2</div> <div>Trụ 3</div> <div>Trụ 4</div> </div> <div class="tutru-headers"> <div></div> <div>Năm</div> <div>Tháng</div> <div>Ngày</div> <div>Giờ</div> </div> <div class="tutru-row can"> <div>Can</div> <div class="tutru-cell">干</div> <div class="tutru-cell">干</div> <div class="tutru-cell">干</div> <div class="tutru-cell">干</div> </div> <div class="tutru-row chi"> <div>Chi</div> <div class="tutru-cell">支</div> <div class="tutru-cell">支</div> <div class="tutru-cell">支</div> <div class="tutru-cell">支</div> </div> <div class="tutru-caption">⟢ Bốn trụ — Tám chữ ⟢</div> </div> </div> <!-- =============== PHẦN II — BÁT TỰ =============== --> <header class="part-header"> <div class="seal">II</div> <span class="part-label">Phần thứ hai</span> <h2>Bát Tự <em>là gì</em>?</h2> <span class="part-subtitle">Tám chữ trong bốn trụ</span> </header> <div class="part-body"> <p>Bát tự là <strong>tám chữ nằm trong bốn trụ đó</strong> — <em>4 can + 4 chi</em>.</p> <p>Nói bát tự là đang nói về <em>chi tiết các can và các chi trong một trụ</em> — như ta đã biết một trụ được thể hiện bằng 2 chữ: 1 can + 1 chi. Trong 4 trụ ta có <strong>8 chữ</strong>, gồm 4 chữ can, 4 chữ chi.</p> <div class="tutru-table"> <div class="tutru-headers"> <div></div> <div>Trụ 1</div> <div>Trụ 2</div> <div>Trụ 3</div> <div>Trụ 4</div> </div> <div class="tutru-headers"> <div></div> <div>Năm</div> <div>Tháng</div> <div>Ngày</div> <div>Giờ</div> </div> <div class="tutru-row can"> <div>Can</div> <div class="tutru-cell numbered">1</div> <div class="tutru-cell numbered">3</div> <div class="tutru-cell numbered">5</div> <div class="tutru-cell numbered">7</div> </div> <div class="tutru-row chi"> <div>Chi</div> <div class="tutru-cell numbered">2</div> <div class="tutru-cell numbered">4</div> <div class="tutru-cell numbered">6</div> <div class="tutru-cell numbered">8</div> </div> <div class="tutru-caption">⟢ Tám chữ — đánh số thứ tự ⟢</div> </div> <p>Tám chữ cụ thể mang thông tin về <em>ngũ hành, âm dương, can chi</em> của thời điểm nào đó. Trong môn bát tự Tử Bình, nhắc đến bát tự thì hiểu là <strong>bát tự tại thời điểm sinh</strong> của một người nào đó.</p> <div class="keypoint"> <strong>Lưu ý quan trọng:</strong> <em>Tứ trụ và bát tự là hai tên của một thứ</em> — theo mức tổng quan và chi tiết khác nhau. Trong thực tế, hai tên được dùng <em>hoán đổi cho nhau</em>. </div> </div> <!-- =============== PHẦN III — LỊCH TIẾT KHÍ =============== --> <header class="part-header"> <div class="seal">III</div> <span class="part-label">Phần thứ ba</span> <h2>Lịch trong <em>Bát Tự</em></h2> <span class="part-subtitle">Không phải âm lịch — là lịch tiết khí</span> </header> <div class="part-body"> <p>Đây là điều <em>gây khó khăn cho người mới học</em>, vì mọi người quen rằng phương đông chỉ có một loại lịch duy nhất là âm lịch. Thực tế <strong>âm lịch chỉ là cách gọi của một trong nhiều loại lịch</strong>.</p> <div class="keypoint"> Bát tự <strong>không dùng âm lịch</strong> — dù nhiều người nhầm tưởng vậy vì thấy can chi trông giống âm lịch. Nhưng thực chất, <em>âm lịch tính ngày theo số</em> (từ ngày 1 đến ngày 29 hoặc 30), còn <em>lịch trong bát tự tính theo can chi</em>, không dùng số. </div> <h3 class="subhead">⟢ So sánh hai loại lịch</h3> <div class="compare-grid"> <div class="compare-card am"> <span class="c-label">Người mới hay nhầm</span> <div class="c-name">Âm lịch</div> <ul> <li>Tính ngày theo số (1–30)</li> <li>Có tháng nhuận</li> <li>Bắt đầu năm từ mùng một Tết</li> <li>Dựa trên chu kỳ Mặt Trăng</li> </ul> </div> <div class="compare-card tk"> <span class="c-label">Bát tự dùng lịch này</span> <div class="c-name">Lịch tiết khí</div> <ul> <li>Tính theo can chi, không số</li> <li>Không nhuận tháng / ngày</li> <li>Bắt đầu năm từ Lập Xuân</li> <li>Dựa trên vị trí thực của Mặt Trời</li> </ul> </div> </div> <p>Bát tự dùng <strong>lịch tiết khí</strong> — một loại <em>dương lịch</em>, tính theo vị trí thực của Mặt Trời trên vòng hoàng đạo. Lịch này <em>không có tháng nhuận, không có ngày nhuận</em>. <span class="hl">Mỗi năm bắt đầu từ tiết Lập Xuân</span>, không phải mùng một Tết âm lịch.</p> <h3 class="subhead">⟢ Hệ quả thực tế</h3> <p>Hai người sinh <strong>cùng ngày âm lịch</strong> nhưng khác tháng hoặc khác năm tiết khí thì <em>bát tự sẽ khác nhau</em>. Và ngược lại, có những người sinh vào mùng một Tết nhưng về mặt bát tự <strong>vẫn thuộc năm cũ</strong> — vì Lập Xuân chưa đến.</p> <div class="keypoint"> <strong>Ví dụ để nhớ:</strong> Nếu bạn sinh ngày <em>3 tháng 2 dương lịch</em>, mà Lập Xuân năm đó rơi vào ngày <em>4 tháng 2</em> — thì bát tự của bạn <strong>vẫn thuộc năm trước</strong>, dù Tết âm lịch đã qua từ lâu. </div> <h3 class="subhead">⟢ Ranh giới các tháng</h3> <p>Ranh giới của mỗi tháng trong bát tự cũng vậy — <strong>không phải mùng một âm lịch</strong>, mà là <em>ngày bắt đầu của từng tiết khí</em>:</p> <ul class="tk-list"> <li> <span class="tk-month">Tháng Dần</span> <span class="tk-arrow">←</span> <span class="tk-name">Lập Xuân</span> </li> <li> <span class="tk-month">Tháng Mão</span> <span class="tk-arrow">←</span> <span class="tk-name">Kinh Trập</span> </li> <li> <span class="tk-month">Tháng Thìn</span> <span class="tk-arrow">←</span> <span class="tk-name">Thanh Minh</span> </li> </ul> <p>... và cứ thế cho đến hết năm.</p> <h3 class="subhead">⟢ Hai ví dụ minh họa</h3> <p>Tôi thường nhận được câu hỏi: <em>tại sao một số lá số sinh khoảng cuối tháng 1 đầu tháng 2 một số năm thì lại khác năm âm lịch?</em> Điều này là bình thường bởi <strong>hai loại lịch có phương pháp tính toán khác nhau</strong>.</p> <div class="date-example"> <span class="d-label">Ví dụ 1</span> <div class="d-date">5 / 2 / 1950</div> <div class="d-rows"> <div class="d-row am"> <span class="badge">Âm lịch</span> <span class="text">Là ngày <strong>19/12 năm Kỷ Sửu</strong></span> </div> <div class="d-row tk"> <span class="badge">Tiết khí</span> <span class="text">Đã chuyển sang <strong>năm Canh Dần</strong></span> </div> </div> <p style="margin-top: 14px; font-family: 'Cormorant Garamond', serif; font-style: italic; font-size: 14px; line-height: 1.5; color: var(--ink-soft);"> Bởi vì thường ngày 4/2 hàng năm đã bắt đầu tiết Lập Xuân, vì thế ngày 5/2 đã bước sang tiết khí mới và tính là <em>năm can chi mới</em>, trong khi năm âm lịch vẫn là Kỷ Sửu. </p> </div> <div class="date-example"> <span class="d-label">Ví dụ 2</span> <div class="d-date">3 / 2 / 1990</div> <div class="d-rows"> <div class="d-row am"> <span class="badge">Âm lịch</span> <span class="text">Là ngày <strong>mùng 8 Tết Canh Ngọ</strong></span> </div> <div class="d-row tk"> <span class="badge">Tiết khí</span> <span class="text">Vẫn là ngày cuối <strong>năm Kỷ Tỵ</strong></span> </div> </div> <p style="margin-top: 14px; font-family: 'Cormorant Garamond', serif; font-style: italic; font-size: 14px; line-height: 1.5; color: var(--ink-soft);"> Tuy nhiên do <em>chưa bước sang Lập Xuân</em>, nên vẫn tính là ngày cuối năm Kỷ Tỵ theo lịch tiết khí. </p> </div> </div> <!-- =============== KẾT LUẬN =============== --> <section class="closing"> <div class="closing-label">⟢ Đúc kết ⟢</div> <p class="closing-text"> <em>Tứ trụ</em> và <em>bát tự</em> là hai tên của một thứ.<br> Lịch trong bát tự là <em>lịch tiết khí</em> — không phải âm lịch.<br> Năm bắt đầu từ <em>Lập Xuân</em>, tháng bắt đầu từ <em>tiết khí mới</em>. </p> <div class="closing-mark">⟢ ◈ ⟢</div> </section> <!-- =============== CTA — TRẮC NGHIỆM =============== --> <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 trắc nghiệm để củng cố nền tảng. 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> <!-- ============= QUIZ VIEW ============= --> <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> <!-- ============= RESULT VIEW ============= --> <div class="view" id="view-result"> <section class="result-hero"> <div class="result-circle"> <div class="result-score"><span id="finalScore">0</span></div> <div class="result-total">/ 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 QUESTIONS = [ { text: 'Tứ trụ là <em>bốn cột đo thời gian</em> gồm những thành phần nào?', options: [ 'Năm – tháng – tuần – giờ', 'Năm – tháng – ngày – giờ', 'Năm – mùa – ngày – giờ', 'Năm – tháng – ngày – khắc' ], correct: 1, explain: '<strong>Năm – tháng – ngày – giờ</strong>. Đây là bốn cột đo thời gian — mỗi cột (mỗi <em>trụ</em>) gồm một can ở trên và một chi ở dưới.' }, { text: 'Bát tự là tám chữ nằm trong bốn trụ, bao gồm:', options: [ '4 thiên can và 4 thiên chi', '4 can và 4 chi', '4 thiên chi và 4 địa chi', '8 can (mỗi trụ 2 can)' ], correct: 1, explain: '<strong>4 can và 4 chi</strong>. Trong 4 trụ ta có <em>8 chữ</em>, gồm 4 chữ can (ở trên) và 4 chữ chi (ở dưới). Đó là cách hiểu trực tiếp theo văn bản — đơn giản và chính xác.' }, { text: 'Theo văn bản, bát tự trong môn <em>Tử Bình</em> thường được hiểu là:', options: [ 'Bát tự tại thời điểm sinh của một người', 'Bát tự tại thời điểm qua đời', 'Bát tự của một năm bất kỳ', 'Bát tự của ngày lễ hội' ], correct: 0, explain: '<strong>Bát tự tại thời điểm sinh</strong>. Tám chữ mang thông tin về ngũ hành, âm dương, can chi của một thời điểm — và trong Tử Bình, mặc định đó là <em>thời điểm sinh của một người</em>.' }, { text: 'Tác giả cho biết tứ trụ và bát tự có mối quan hệ như thế nào?', options: [ 'Là hai khái niệm hoàn toàn khác nhau', 'Bát tự là một phần nhỏ của tứ trụ', 'Là hai tên của một thứ — ở mức tổng quan và chi tiết khác nhau, dùng hoán đổi cho nhau', 'Tứ trụ dùng cho năm, bát tự dùng cho tháng' ], correct: 2, explain: '<strong>Hai tên của một thứ</strong>. Tứ trụ là cách gọi <em>tổng quan</em> (4 cột thời gian), bát tự là cách gọi <em>chi tiết</em> (8 chữ trong 4 cột). Trong thực tế hai tên được dùng <em>hoán đổi cho nhau</em>.' }, { text: 'Bát tự sử dụng <em>loại lịch</em> nào?', options: [ 'Âm lịch', 'Âm dương lịch', 'Lịch tiết khí — một loại dương lịch tính theo vị trí Mặt Trời', 'Lịch Gregory (dương lịch phương Tây)' ], correct: 2, explain: '<strong>Lịch tiết khí</strong> — một loại <em>dương lịch</em>, tính theo vị trí thực của Mặt Trời trên vòng hoàng đạo. Đây là điểm rất hay bị nhầm: nhiều người thấy can chi nên tưởng là âm lịch, nhưng thực ra là dương lịch.' }, { text: 'Điều nào sau đây <em>đúng</em> theo văn bản về lịch dùng trong bát tự?', options: [ 'Có tháng nhuận và ngày nhuận', 'Mỗi năm bắt đầu từ mùng một Tết âm lịch', 'Mỗi năm bắt đầu từ tiết Lập Xuân, không có tháng nhuận, không có ngày nhuận', 'Ngày được tính theo số 1 đến 30 như âm lịch' ], correct: 2, explain: '<strong>Bắt đầu từ Lập Xuân, không nhuận.</strong> Lịch tiết khí dựa trên vị trí thực của Mặt Trời nên không cần tháng/ngày nhuận để cân bằng. Năm bắt đầu khi mặt trời đến vị trí của tiết Lập Xuân — không phải mùng một Tết âm lịch.' }, { text: 'Nếu sinh ngày <em>3 tháng 2 dương lịch</em>, mà Lập Xuân năm đó rơi vào <em>ngày 4 tháng 2</em>, thì bát tự thuộc năm nào?', options: [ 'Năm cũ (năm trước)', 'Năm mới (năm sau)', 'Cả hai năm', 'Không xác định được' ], correct: 0, explain: '<strong>Năm cũ.</strong> Vì Lập Xuân chưa đến — mà năm bát tự bắt đầu từ Lập Xuân, nên ngày 3/2 vẫn thuộc <em>năm trước</em>, dù Tết âm lịch đã qua từ lâu.' }, { text: 'Ranh giới của <em>mỗi tháng</em> trong bát tự được xác định dựa trên:', options: [ 'Ngày mùng một âm lịch', 'Ngày bắt đầu của từng tiết khí', 'Ngày 1 tháng dương lịch', 'Ngày trăng tròn' ], correct: 1, explain: '<strong>Ngày bắt đầu của từng tiết khí.</strong> Tháng Dần bắt đầu từ <em>Lập Xuân</em>, tháng Mão từ <em>Kinh Trập</em>, tháng Thìn từ <em>Thanh Minh</em> — và cứ thế cho đến hết năm.' }, { text: 'Ví dụ ngày <em>5/2/1950</em> theo âm lịch là 19/12 năm Kỷ Sửu, nhưng theo lịch tiết khí đã sang năm Canh Dần vì:', options: [ 'Âm lịch tính sai', 'Ngày 4/2 hàng năm là Lập Xuân, nên 5/2 đã sang tiết khí mới', 'Năm Canh Dần bắt đầu sớm hơn âm lịch 1 tháng', 'Tháng 12 âm lịch luôn thuộc năm sau theo tiết khí' ], correct: 1, explain: '<strong>Vì 4/2 là Lập Xuân.</strong> Thường ngày 4/2 hàng năm đã bắt đầu tiết Lập Xuân — nên 5/2 đã bước sang <em>tiết khí mới</em> và tính là năm can chi mới (Canh Dần), trong khi năm âm lịch vẫn là Kỷ Sửu.' }, { text: 'Ngày <em>3/2/1990</em> là mùng 8 Tết Canh Ngọ theo âm lịch, nhưng theo lịch tiết khí vẫn tính là ngày cuối năm Kỷ Tỵ vì:', options: [ 'Âm lịch bị chậm hơn một tháng', 'Chưa bước sang Lập Xuân', 'Tết âm lịch năm đó rơi vào tháng 1 dương lịch', 'Ngày đó là ngày nhuận' ], correct: 1, explain: '<strong>Chưa bước sang Lập Xuân.</strong> Đây là ví dụ ngược với câu trên: dù <em>Tết âm lịch đã qua từ lâu</em> (mùng 8 Tết), nhưng vì chưa đến Lập Xuân nên lịch tiết khí vẫn ghi nhận là năm Kỷ Tỵ.' } ]; let currentQ = 0; let answers = []; let answered = false; 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']; const optsContainer = document.getElementById('qOptions'); optsContainer.innerHTML = q.options.map((opt, i) => ` <button class="opt-btn" data-idx="${i}" onclick="selectAnswer(${i})"> <span class="opt-letter">${letters[i]}</span> ${opt} </button> `).join(''); const explain = document.getElementById('qExplain'); explain.classList.remove('visible', 'is-correct', 'is-wrong'); explain.innerHTML = ''; document.getElementById('nextBtn').classList.remove('visible'); const nextBtn = document.getElementById('nextBtn'); if (currentQ === QUESTIONS.length - 1) { nextBtn.textContent = '⟢ Xem kết quả ⟢'; } else { nextBtn.textContent = 'Câu tiếp →'; } } function selectAnswer(idx) { if (answered) return; answered = true; const q = QUESTIONS[currentQ]; const isCorrect = idx === q.correct; answers.push({ correct: isCorrect }); const buttons = document.querySelectorAll('.opt-btn'); buttons.forEach((btn, i) => { btn.disabled = true; if (i === q.correct) { btn.classList.add('correct'); } else if (i === idx) { btn.classList.add('wrong'); } else { btn.classList.add('dimmed'); } }); const explain = document.getElementById('qExplain'); const verdictText = isCorrect ? '✓ Chính xác' : '✕ Chưa đúng'; explain.innerHTML = `<span class="verdict">${verdictText}</span><br>${q.explain}`; explain.classList.add('visible'); explain.classList.add(isCorrect ? 'is-correct' : 'is-wrong'); document.getElementById('nextBtn').classList.add('visible'); const total = QUESTIONS.length; document.getElementById('progressFill').style.width = ((currentQ + 1) / total * 100) + '%'; } function nextQuestion() { if (currentQ < QUESTIONS.length - 1) { currentQ++; renderQuestion(); scrollToTop(); } else { showResult(); } } function showResult() { 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 nền tảng tứ trụ – bát tự và đặc biệt là loại lịch trong bát tự — sẵn sàng học tiếp các phần sâu hơn.'; } else if (totalCorrect >= 8) { title = 'Xuất <em>sắc</em>'; msg = 'Bạn đã hiểu đúng phần lớn nền tảng. Vài câu sai chỉ là chi tiết nhỏ — xem lại giải thích để hoàn thiện.'; } else if (totalCorrect >= 6) { title = '<em>Khá</em> tốt'; msg = 'Bạn đã có khái niệm cơ bản. Nên đọc lại phần III (lịch tiết khí) — vì đây là nguồn gốc của hầu hết các nhầm lẫn.'; } 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ài một lần nữa, đặc biệt chú ý phần lịch tiết khí khác âm lịch như thế nào.'; } else { title = '<em>Khởi đầu</em>'; msg = 'Đây mới là bước đầu — không sao cả. Hãy đọc kỹ lại bài, đặc biệt là sự khác biệt giữa âm lịch và lịch tiết khí, 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); } } </script> <script> (function(){ function getH() { var app = document.querySelector('.app'); if (app) { var rect = app.getBoundingClientRect(); var appTop = rect.top + (window.pageYOffset || document.documentElement.scrollTop); return Math.ceil(appTop + app.scrollHeight + 40); } return Math.max( document.body.scrollHeight, document.body.offsetHeight, document.documentElement.scrollHeight, document.documentElement.offsetHeight ); } function postH(){ try { if (window.parent && window.parent !== window) { var activeView = document.querySelector('.view.active'); var viewId = activeView ? activeView.id : ''; window.parent.postMessage({ ltTutruHeight: getH(), viewId: viewId }, '*'); } } catch(e){} } function init() { postH(); [50, 200, 500, 1000, 2000, 3500, 5000, 8000, 12000].forEach(function(t){ setTimeout(postH, t); }); if (typeof ResizeObserver !== 'undefined') { try { var ro = new ResizeObserver(postH); var app = document.querySelector('.app'); if (app) ro.observe(app); ro.observe(document.body); } catch(e){} } if (typeof MutationObserver !== 'undefined') { try { new MutationObserver(postH).observe(document.body, { childList: true, subtree: true, attributes: true }); } catch(e){} } setInterval(postH, 800); window.addEventListener('resize', postH); window.addEventListener('load', postH); if (document.fonts && document.fonts.ready) document.fonts.ready.then(postH); var origStartQuiz = window.startQuiz; var origBackToArticle = window.backToArticle; var origSelectAnswer = window.selectAnswer; var origNextQuestion = window.nextQuestion; var origRestartQuiz = window.restartQuiz; if (origStartQuiz) { window.startQuiz = function() { origStartQuiz(); [50, 200, 500, 1000].forEach(function(t){ setTimeout(postH, t); }); }; } if (origBackToArticle) { window.backToArticle = function() { origBackToArticle(); [50, 200, 500, 1000].forEach(function(t){ setTimeout(postH, t); }); }; } if (origSelectAnswer) { window.selectAnswer = function(i) { origSelectAnswer(i); [50, 200, 500, 1000].forEach(function(t){ setTimeout(postH, t); }); }; } if (origNextQuestion) { window.nextQuestion = function() { origNextQuestion(); [50, 200, 500, 1000].forEach(function(t){ setTimeout(postH, t); }); }; } if (origRestartQuiz) { window.restartQuiz = function() { origRestartQuiz(); [50, 200, 500, 1000].forEach(function(t){ setTimeout(postH, t); }); }; } } if (document.readyState === 'loading') document.addEventListener('DOMContentLoaded', init); else init(); })(); </script> </body> </html> " style="width: 100% !important; height: 7000px !important; min-height: 7000px !important; max-height: none !important; border: 0 !important; display: block !important; background: transparent !important; margin: 0 !important; padding: 0 !important;" title="Tứ Trụ Bát Tự - Hoàng Trung"> </iframe> </div> <script> (function() { var IFRAME_ID = 'lt-tutru-frame'; var INITIAL_H = 7000; var currentH = INITIAL_H; var heightsByView = {}; var currentViewId = 'view-article'; 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.ltTutruHeight === 'number') { setH(e.data.ltTutruHeight, 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 TỨ TRỤ BÁT TỰ -->