/* Giao diện trò chơi “Phản xạ” (phan-xa-core.js) – dùng ở Bài 2 (gom-phap.html) và Hành trình tái sinh (hanh-trinh/index.html).
   Dùng màu nền/chữ của trang đang mở (--bg, --card, --ink, --muted, --line, --navy); đúng/sai lấy --sohuu/--tam (lesson.css) hoặc --ok/--bad (coi-nguoi.css).
   Thêm vài màu riêng cho trò chơi (vàng nghệ, hoa sen, nén nhang) theo cùng cách sáng/tối của hai trang đó. */
:root{--rx-gold:#c9971c;--rx-medal:#f6ecd9;--rx-hero1:#fdf0d5;--rx-hero2:#f5d68e;--rx-lotus:#e0668a;--rx-stem:#c2410c;--rx-stick:#7a4a2c;--rx-hot:#c2410c;
  --rx-ok:var(--sohuu,var(--ok,#2e9a58));--rx-bad:var(--tam,var(--bad,#c0392b))}
@media (prefers-color-scheme: dark){:root:not([data-theme="light"]){--rx-gold:#e2b84a;--rx-hero1:#2b2418;--rx-hero2:#4d3b1a;--rx-stick:#a87650;--rx-hot:#f59e5b}}
:root[data-theme="dark"]{--rx-gold:#e2b84a;--rx-hero1:#2b2418;--rx-hero2:#4d3b1a;--rx-stick:#a87650;--rx-hot:#f59e5b}

.tabs{flex-wrap:wrap}
@media (max-width:420px){.tabs{gap:6px}.tabs button{padding:7px 12px}}

/* khung trò chơi ở trang Hành trình (thanh tab dính ở trên nên chừa chỗ khi cuộn tới) */
#htGame{max-width:980px;margin:0 auto;padding:14px 14px 30px}
#htGame .rx-box{scroll-margin-top:76px}

/* khung, nhãn mục, nút riêng của trò chơi (trang Hành trình không nạp quiz.css) */
.rx-box{background:var(--card);border:1px solid var(--line);border-radius:14px;padding:12px 14px}
.rx-sub{font-size:.8rem;color:var(--muted);margin:12px 0 6px;font-weight:700;text-transform:uppercase;letter-spacing:.03em}
.rx-btn{font:inherit;font-weight:700;padding:8px 16px;border-radius:10px;border:1.5px solid var(--navy);background:transparent;color:var(--navy);cursor:pointer;touch-action:manipulation}
.rx-btn.pri{background:var(--navy);color:var(--bg)}
.rx-go{font:inherit;font-weight:700;font-size:1.05rem;padding:11px 28px;margin-top:12px;border-radius:12px;border:0;background:var(--navy);color:var(--bg);cursor:pointer;touch-action:manipulation}
.rx-btn:focus-visible,.rx-go:focus-visible,.rx-opts button:focus-visible,.rx-seg button:focus-visible,.rx-chips button:focus-visible{outline:3px solid var(--rx-gold);outline-offset:2px}

/* chú tiểu và biểu tượng nhóm: khung tròn kiểu huy hiệu (ảnh GPT nền kem hòa vào khung) */
.rx-face{flex:0 0 auto;width:62px;height:62px;border-radius:50%;background:var(--rx-medal);overflow:hidden;box-shadow:0 0 0 2px var(--rx-gold),0 3px 10px #0002}
.rx-face svg,.rx-face img{width:100%;height:100%;display:block;object-fit:cover}
.rx-face.lg{width:96px;height:96px}
.rx-face.bounce{animation:rxBounce .5s}
.rx-face.shake{animation:rxShake .4s}
.rx-face.float{animation:rxFloat 3.2s ease-in-out infinite}
.rx-art{display:inline-flex;align-items:center;justify-content:center;flex:0 0 auto;width:48px;height:48px;border-radius:50%;overflow:hidden;background:color-mix(in srgb,var(--c) 16%,var(--rx-medal));box-shadow:0 0 0 2px var(--c)}
.rx-art img{width:100%;height:100%;object-fit:cover}
.rx-art b{font-size:.6rem;line-height:1.05;text-align:center;padding:2px;color:color-mix(in srgb,var(--c) 70%,#000)}

/* màn hình bắt đầu */
.rx-banner{display:block;width:100%;max-height:240px;object-fit:cover;border-radius:14px;margin-bottom:10px}
.rx-hero{position:relative;overflow:hidden;display:flex;align-items:center;gap:14px;padding:14px 16px;border-radius:16px;background:linear-gradient(135deg,var(--rx-hero1),var(--rx-hero2))}
.rx-hero-txt{position:relative;min-width:0}
.rx-hero h2{margin:0;color:var(--navy);font-size:1.45rem;text-wrap:balance}
.rx-hero p{margin:4px 0 0}
.rx-floats span{position:absolute;font-weight:800;color:var(--rx-gold);opacity:.4;font-variant-numeric:tabular-nums;animation:rxDrift 6s ease-in-out infinite}
.rx-floats span:nth-child(1){right:5%;top:8%;font-size:1.7rem}
.rx-floats span:nth-child(2){right:18%;bottom:6%;font-size:1.25rem;animation-delay:-1.5s}
.rx-floats span:nth-child(3){right:31%;top:6%;font-size:1rem;animation-delay:-3s}
.rx-floats span:nth-child(4){right:3%;bottom:8%;font-size:1.05rem;animation-delay:-4.2s}
.rx-floats span:nth-child(5){right:44%;bottom:5%;font-size:.95rem;animation-delay:-2.2s}
@media (max-width:420px){.rx-hero{padding:12px}.rx-hero h2{font-size:1.2rem}.rx-hero .rx-face.lg{width:80px;height:80px}.rx-floats span{opacity:.22}}
.rx-rules{list-style:none;margin:12px 0 6px;padding:0;display:grid;gap:5px;font-size:.93rem}
.rx-rules li{position:relative;padding-left:22px}
.rx-rules li::before{content:"";position:absolute;left:3px;top:.42em;width:11px;height:11px;border-radius:50% 0;background:var(--rx-lotus);transform:rotate(45deg)} /* cánh sen */
.rx-seg{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}
@media (max-width:640px){.rx-seg{grid-template-columns:1fr}}
.rx-seg button{font:inherit;text-align:left;padding:10px 12px;border-radius:12px;border:1.5px solid var(--line);background:var(--card);color:var(--ink);cursor:pointer;display:flex;flex-direction:column;gap:2px;touch-action:manipulation}
.rx-seg button small{color:var(--muted);font-size:.8rem}
.rx-seg button.on{border-color:var(--navy);box-shadow:0 0 0 2px var(--navy);background:color-mix(in srgb,var(--navy) 8%,var(--card))}
.rx-chips{display:flex;flex-wrap:wrap;gap:8px}
.rx-chips button{font:inherit;display:flex;flex-direction:column;align-items:flex-start;gap:1px;text-align:left;padding:7px 12px;border-radius:12px;border:1.5px solid var(--line);background:var(--card);color:var(--ink);cursor:pointer;touch-action:manipulation}
.rx-chips button small{color:var(--muted);font-size:.78rem}
.rx-chips button.on{border-color:var(--navy);box-shadow:0 0 0 2px var(--navy);background:color-mix(in srgb,var(--navy) 8%,var(--card))}
.rx-chips button.on b::before{content:"✓ "}
.rx-row{display:flex;flex-wrap:wrap;gap:8px 16px;align-items:center;margin:12px 0 8px}
.rx-row label{font-size:.95rem}
.rx-row select{font:inherit;padding:5px 8px;border-radius:8px;border:1.5px solid var(--line);background:var(--card);color:var(--ink);max-width:100%}
.rx-best{font-size:.92rem;color:var(--muted)}
.rx-tip{font-size:.8rem;color:var(--muted);margin:10px 0 0}
.rx-setup kbd,.rx-opts kbd{font:600 .72rem ui-monospace,Consolas,monospace;border:1px solid var(--line);border-bottom-width:2px;border-radius:5px;padding:0 5px;background:var(--card);color:var(--muted)}
@media (hover:none){.rx-tip,.rx-opts kbd{display:none}}

/* màn chơi */
.rx-game,.rx-over{position:relative}
body:has(#pR.on .rx-game) .backFloat,body:has(#htGame:not([hidden]) .rx-game) .backFloat{display:none!important} /* nút ← nổi (nut-quay-lai.js) che chú tiểu khi đang chơi */
.rx-fx{position:absolute;inset:0;width:100%;height:100%;pointer-events:none;z-index:6}
.rx-game{-webkit-user-select:none;user-select:none}
.rx-hud{display:flex;flex-wrap:wrap;align-items:center;gap:6px 14px;font-size:.95rem}
.rx-hud b{color:var(--navy);font-variant-numeric:tabular-nums}
.rx-lives{display:inline-flex;gap:2px}
.rx-lives.hit{animation:rxShake .4s}
.rx-lotus{width:25px;height:25px;fill:var(--rx-lotus);stroke:var(--rx-lotus)}
.rx-lotus.off{fill:none;stroke:var(--line);stroke-width:1.4}
.rx-combo{color:var(--rx-hot);font-weight:700}
.rx-combo b{color:inherit}
.rx-lv{color:var(--muted)}
.rx-tag{font-size:.8rem;font-weight:700;color:var(--navy);background:color-mix(in srgb,var(--navy) 12%,var(--card));border-radius:999px;padding:1px 10px}
.rx-tools{margin-left:auto;display:flex;gap:6px}
.rx-tools button{font:inherit;width:42px;height:38px;border-radius:10px;border:1.5px solid var(--line);background:var(--card);color:var(--ink);cursor:pointer;touch-action:manipulation}
@media (max-width:420px){.rx-hud{gap:4px 9px;font-size:.88rem}.rx-lotus{width:21px;height:21px}.rx-tools button{width:36px;height:34px}}

/* nén nhang làm đồng hồ: chân nhang đỏ, thân nhang ngắn dần, đầu nhang đỏ lửa và khói bay */
.rx-incense{position:relative;height:26px;margin:8px 0 0}
.rx-incense .stem{position:absolute;left:0;top:13px;width:8%;height:4px;border-radius:2px;background:var(--rx-stem)}
.rx-incense .track{position:absolute;left:8%;right:6px;top:12px;height:6px}
.rx-incense .stick{position:absolute;left:0;top:0;height:100%;width:100%;border-radius:0 3px 3px 0;background:var(--rx-stick)}
.rx-incense .ember{position:absolute;right:-5px;top:-2px;width:10px;height:10px;border-radius:50%;background:radial-gradient(circle,#fff3b0 0,#ff9f1c 45%,#e4421b 100%);box-shadow:0 0 8px 3px #ff8c1a88;animation:rxGlow .9s ease-in-out infinite alternate}
.rx-incense .smoke{position:absolute;right:-3px;top:-8px;width:7px;height:7px;border-radius:50%;background:var(--muted);opacity:0;animation:rxSmoke 2.2s ease-out infinite}
.rx-incense .smoke.s2{animation-delay:1.1s}
.rx-incense.low .ember{animation-duration:.3s;box-shadow:0 0 12px 5px #ff5a1a99}
.rx-incense.low .stick{background:color-mix(in srgb,var(--rx-stick) 65%,var(--rx-bad))}

.rx-stage{position:relative;min-height:400px}
.rx-host{display:flex;align-items:center;gap:12px;margin:4px 0 6px}
.rx-say{position:relative;min-width:0;padding:7px 12px;border-radius:14px;font-weight:600;background:color-mix(in srgb,var(--rx-gold) 12%,var(--card));border:1.5px solid color-mix(in srgb,var(--rx-gold) 50%,var(--line))}
.rx-say::before{content:"";position:absolute;left:-7px;top:50%;width:11px;height:11px;background:inherit;border-left:inherit;border-bottom:inherit;transform:translateY(-50%) rotate(45deg)}
.rx-say:empty{display:none}
.rx-say.pop{animation:rxIn .22s ease-out}
@media (min-width:700px){.rx-host .rx-face{width:76px;height:76px}}
.rx-ask{text-align:center;padding:2px 0 12px}
.rx-ask.pop{animation:rxIn .28s ease-out}
.rx-card{position:relative;display:inline-block;padding:0 30px}
.rx-card .rx-art{position:absolute;right:-12px;top:0;transform:scale(0) rotate(-30deg);transition:transform .3s cubic-bezier(.3,1.6,.5,1)}
.rx-card.show .rx-art{transform:scale(1) rotate(0)}
.rx-card.stamp .rx-num{animation:rxStamp .35s ease-out}
.rx-num{font-size:clamp(4rem,17vw,7rem);font-weight:800;line-height:1;color:var(--navy);font-variant-numeric:tabular-nums;text-shadow:0 4px 0 color-mix(in srgb,var(--rx-gold) 40%,transparent)}
.rx-namecard{display:flex;align-items:center;justify-content:center;gap:12px;padding:10px 0 2px}
.rx-name{min-width:0;font-size:clamp(1.3rem,5.5vw,2rem);font-weight:800;line-height:1.25;text-align:left;text-wrap:balance;color:color-mix(in srgb,var(--c) 80%,var(--ink))}
.rx-hint{color:var(--muted);font-size:.95rem;margin-top:4px}
.rx-photo{display:block;width:100%;max-width:560px;aspect-ratio:16/9;object-fit:cover;margin:0 auto;border-radius:14px;box-shadow:0 4px 14px #0003}
.rx-photo.sm{max-width:300px}
.rx-thumb{width:44px;height:44px;border-radius:10px;object-fit:cover;flex:0 0 auto}
.rx-unit{font-size:1.1rem;font-weight:700;color:var(--muted);margin-top:2px}
.rx-num.sm{font-size:clamp(3rem,13vw,5.2rem)}
.rx-after{text-align:center;font-size:.95rem}
.rx-after:not(:empty){margin:-4px 0 10px}
.rx-after.pop{animation:rxIn .25s ease-out}
.rx-opts{display:grid;gap:10px;grid-template-columns:1fr 1fr}
.rx-opts.nums{grid-template-columns:repeat(4,1fr)}
@media (max-width:560px){.rx-opts.names{grid-template-columns:1fr}.rx-opts.nums{grid-template-columns:1fr 1fr}}
.rx-opts button{font:inherit;display:flex;align-items:center;gap:10px;text-align:left;min-height:56px;padding:10px 14px;border-radius:12px;border:1.5px solid var(--line);border-left:6px solid var(--c,var(--line));background:var(--card);color:var(--ink);cursor:pointer;font-size:1rem;font-weight:600;touch-action:manipulation;transition:transform .08s}
.rx-opts.nums button{justify-content:center;font-size:1.6rem;font-weight:800;border-left-width:1.5px;font-variant-numeric:tabular-nums}
@media (hover:hover){.rx-opts button:hover:not(:disabled){border-color:var(--navy)}} /* điện thoại: không để viền “rê chuột” dính lại sau khi chạm */
.rx-opts button:active:not(:disabled){transform:scale(.97)}
.rx-opts button:disabled{cursor:default}
.rx-opts button.right{background:color-mix(in srgb,var(--rx-ok) 24%,var(--card));border-color:var(--rx-ok)}
.rx-opts button.wrong{background:color-mix(in srgb,var(--rx-bad) 22%,var(--card));border-color:var(--rx-bad);animation:rxShake .35s}
.rx-fb{margin-top:12px;padding:10px 12px;border-radius:10px;display:none}
.rx-fb.no{display:block;background:color-mix(in srgb,var(--rx-bad) 12%,var(--card))}
.rx-fb .row{display:flex;gap:8px;margin-top:10px;flex-wrap:wrap}
.rx-eqrow{display:flex;align-items:center;gap:10px;margin-top:6px}
.rx-eqrow .rx-art{width:40px;height:40px}
.rx-eq{font-size:1.1rem}
.rx-sum,.rx-same,.rx-you{font-size:.92rem;margin-top:4px}
.rx-same,.rx-you{color:var(--muted)}
.rx-pop{position:absolute;left:50%;top:70px;z-index:3;font-weight:800;font-size:1.5rem;color:var(--rx-ok);pointer-events:none;opacity:0;transform:translateX(-50%)}
.rx-pop.go{animation:rxUp .7s ease-out}
.rx-stage.hold .rx-ask,.rx-stage.hold .rx-opts{visibility:hidden}
.rx-cover{position:absolute;inset:0;z-index:4;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px;border:0;border-radius:12px;background:color-mix(in srgb,var(--card) 94%,transparent);color:var(--navy);font:inherit;font-size:1.5rem;cursor:pointer}
.rx-cover[hidden]{display:none}
.rx-cover small{font-size:.9rem;color:var(--muted)}
/* màn “Bạn đã sẵn sàng chưa?”: chú tiểu đứng bật lên, bong bóng lời rồi nút hiện sau */
.rx-ready{display:flex;flex-direction:column;align-items:center;gap:12px}
.rx-stand{display:block;width:170px;height:170px;border-radius:24px;overflow:hidden;background:var(--rx-medal);box-shadow:0 0 0 3px var(--rx-gold),0 6px 18px #0003;animation:rxRise .5s cubic-bezier(.3,1.5,.5,1)}
.rx-stand img,.rx-stand svg{display:block;width:100%;height:100%;object-fit:cover}
.rx-ready-say{position:relative;font-weight:800;font-size:1.15rem;color:var(--ink);padding:8px 16px;border-radius:14px;background:color-mix(in srgb,var(--rx-gold) 14%,var(--card));border:1.5px solid color-mix(in srgb,var(--rx-gold) 55%,var(--line));animation:rxIn .3s .35s ease-out both}
.rx-ready-say::before{content:"";position:absolute;left:50%;top:-7px;width:12px;height:12px;background:inherit;border-left:inherit;border-top:inherit;transform:translateX(-50%) rotate(45deg)}
.rx-ready .rx-go{display:inline-block;margin-top:0;animation:rxIn .3s .6s ease-out both}
/* đặc điểm để đoán (trò Hành trình): tên được che bằng ô trống */
.rx-clue{margin:4px auto 6px;max-width:640px;padding:10px 14px;border-left:4px solid var(--rx-gold);border-radius:10px;background:color-mix(in srgb,var(--rx-gold) 9%,var(--card));text-align:left;font-size:1rem;line-height:1.5}
.rx-blank{text-decoration:none;display:inline-block;min-width:2.6em;border-bottom:2px solid var(--navy);color:var(--navy);font-weight:800;text-align:center}

/* kết quả */
.rx-overtop{display:flex;align-items:center;gap:16px;flex-wrap:wrap}
.rx-over h2{margin:0;color:var(--navy)}
.rx-big{font-size:2.6rem;font-weight:800;line-height:1.1;color:var(--navy);font-variant-numeric:tabular-nums}
.rx-big small{font-size:1rem;color:var(--muted);font-weight:600}
.rx-title{font-weight:600;color:var(--rx-hot)}
.rx-title b{font-weight:800}
.rx-next{color:var(--muted);font-size:.9rem;margin:8px 0 2px}
.rx-stats{display:flex;flex-wrap:wrap;gap:6px 18px;margin:8px 0 4px}
.rx-miss{display:flex;flex-wrap:wrap;gap:6px}
.rx-miss button{font:inherit;font-size:.88rem;border:1.5px solid var(--c);border-radius:999px;padding:4px 12px;background:color-mix(in srgb,var(--c) 10%,var(--card));color:var(--ink);cursor:pointer}
.rx-miss small{color:var(--muted)}

@keyframes rxIn{from{transform:scale(.6);opacity:0}to{transform:scale(1);opacity:1}}
@keyframes rxShake{0%,100%{transform:translateX(0)}25%{transform:translateX(-6px)}75%{transform:translateX(6px)}}
@keyframes rxUp{0%{opacity:0;transform:translate(-50%,10px)}20%{opacity:1}100%{opacity:0;transform:translate(-50%,-40px)}}
@keyframes rxBounce{0%,100%{transform:translateY(0)}35%{transform:translateY(-10px) scale(1.06)}65%{transform:translateY(0) scale(.97)}}
@keyframes rxFloat{0%,100%{transform:translateY(0)}50%{transform:translateY(-6px)}}
@keyframes rxDrift{0%,100%{transform:translateY(0)}50%{transform:translateY(-10px)}}
@keyframes rxGlow{from{transform:scale(.85)}to{transform:scale(1.15)}}
@keyframes rxSmoke{0%{opacity:0;transform:translate(0,0) scale(.6)}20%{opacity:.35}100%{opacity:0;transform:translate(-6px,-24px) scale(1.9)}}
@keyframes rxRise{from{transform:translateY(40px) scale(.8);opacity:0}to{transform:none;opacity:1}}
@keyframes rxStamp{0%{transform:scale(1)}40%{transform:scale(1.18)}100%{transform:scale(1)}}
@media (prefers-reduced-motion:reduce){.rx-ask.pop,.rx-say.pop,.rx-opts button.wrong,.rx-lives.hit,.rx-pop.go,.rx-face,.rx-floats span,.rx-incense .ember,.rx-incense .smoke,.rx-card.stamp .rx-num,.rx-stand,.rx-ready-say,.rx-ready .rx-go{animation:none}}
