:root{--giay:#f3e7c9;--giay-sang:#fbf3dd;--muc:#2a1d14;--son:#a8322a;--hoe:#e2a72e;--cham:#2c4a7a}
*{box-sizing:border-box}
html,body{margin:0;height:100%;overflow:hidden;overscroll-behavior:none}
body{height:100vh;height:100dvh;display:grid;grid-template-rows:auto minmax(0,1fr) auto;color:var(--muc);
  font-family:'Patrick Hand',system-ui,sans-serif;font-size:17px;line-height:1.3;background:var(--giay);
  background-image:radial-gradient(rgba(255,255,255,.6) 1px,transparent 1.5px),radial-gradient(rgba(150,110,50,.10) 1px,transparent 1.6px);
  background-size:7px 7px,11px 11px;background-position:0 0,3px 5px}
button{font:inherit;color:inherit}
[hidden]{display:none!important}
.tren{display:flex;align-items:center;gap:10px;padding:8px 12px 6px;min-width:0}
.an-son{flex:none;width:44px;height:44px;background:var(--son);color:#fbeed0;border-radius:6px;display:grid;place-items:center;
  font-family:Lobster,cursive;font-size:11px;line-height:1.05;text-align:center;transform:rotate(-5deg);
  box-shadow:inset 0 0 0 2.5px #fbeed0,inset 0 0 0 4px var(--son),2px 2px 0 rgba(42,29,20,.25)}
.ten-trang{min-width:0}
h1{font-family:Lobster,cursive;font-weight:400;color:var(--son);font-size:32px;margin:0;line-height:1}
/* "Trực tiếp": cho người xem biết lều là bé thật — kèm độ tươi của dữ liệu */
.truc-tiep{display:block;max-width:100%;border:0;background:none;padding:0;margin-top:3px;font-size:15px;text-align:left;cursor:pointer;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.truc-tiep b{color:var(--son);font-weight:400}
.truc-tiep .cham{display:inline-block;width:9px;height:9px;border-radius:50%;background:#d63b3b;margin-right:6px;vertical-align:1px;animation:nhip 1.6s infinite}
.truc-tiep.cu .cham{background:#9a8f80;animation:none}
.truc-tiep.cu b{color:#7a6f60}
@keyframes nhip{0%{box-shadow:0 0 0 0 rgba(214,59,59,.55)}70%{box-shadow:0 0 0 7px rgba(214,59,59,0)}100%{box-shadow:0 0 0 0 rgba(214,59,59,0)}}
.cap-nhat{opacity:.65;font-size:13px}
.chi-dt{display:none}
.chao{position:fixed;inset:0;z-index:30;display:grid;place-items:center;padding:14px;background:rgba(42,29,20,.45)}
.chao .hop{width:min(470px,100%);max-height:calc(100dvh - 28px);overflow:auto;background:var(--giay-sang);border:3px solid var(--muc);border-radius:16px;padding:16px 20px 18px;box-shadow:5px 6px 0 rgba(42,29,20,.3)}
.chao h2{font-family:Lobster,cursive;color:var(--son);font-weight:400;font-size:30px;margin:0;line-height:1.1}
.chao .y{display:flex;gap:10px;margin:9px 0;font-size:17px;line-height:1.3}
.chao .y>span:first-child{flex:none;font-size:22px;line-height:1.1}
.chao .nut-hang{display:flex;gap:8px;margin-top:14px;flex-wrap:wrap}
.chao .nut-hang>*{flex:1;text-align:center;font-size:18px;padding:8px 10px}
.bang-that{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin:6px 0 10px}
.bang-that h3{font-size:17px;font-weight:400;margin:0 0 4px;color:var(--son)}
.bang-that ul{margin:0;padding-left:18px;font-size:15px}
.bang-that li{margin:2px 0}
.tam-nghi{position:absolute;inset:0;z-index:4;display:grid;place-items:center;padding:16px;background:rgba(42,29,20,.35)}
.tam-nghi .hop-nghi{max-width:340px;text-align:center;background:var(--giay-sang);border:3px solid var(--muc);border-radius:14px;padding:16px 20px;font-size:17px;box-shadow:4px 4px 0 rgba(42,29,20,.3)}
.tam-nghi b{display:block;font-family:Lobster,cursive;font-weight:400;color:var(--son);font-size:26px;margin:4px 0}
.tam-nghi .bieu-tuong{font-size:34px}
.tam .phu{font-size:14px;opacity:.7;margin:-4px 0 8px}
.dong-ho{margin-left:auto;flex:none;display:flex;align-items:center;gap:8px;background:var(--giay-sang);border:2px solid var(--muc);border-radius:10px;padding:3px 10px 3px 5px;box-shadow:2px 2px 0 rgba(42,29,20,.2)}
.dong-ho .gio{font-size:20px;color:var(--son);line-height:1.05;white-space:nowrap}
.dong-ho .ngay{font-size:13px;opacity:.8;white-space:nowrap}
.san{position:relative;margin:0 10px;border:6px solid var(--muc);border-radius:10px;overflow:hidden;background:#d8c48a;min-height:0;box-shadow:3px 4px 0 rgba(42,29,20,.22)}
.san::after{content:"";position:absolute;inset:3px;border:2px solid var(--son);border-radius:4px;pointer-events:none}
#canh{position:absolute;inset:0;width:100%;height:100%;display:block;touch-action:none;user-select:none;-webkit-user-select:none;cursor:grab;transition:opacity .2s}
#canh.dang-keo{cursor:grabbing}
#canh.doi{opacity:0}
.noi{position:absolute;z-index:2;background:var(--giay-sang);border:2px solid var(--muc);border-radius:999px;box-shadow:2px 2px 0 rgba(42,29,20,.2)}
.chip-dem{top:10px;left:10px;padding:3px 12px;font-size:16px;max-width:calc(100% - 70px);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.chip-dem b,.chip-vi b{color:var(--cham);font-weight:400;font-size:19px}
.thanh-vi{position:absolute;z-index:2;top:10px;left:10px;right:62px;display:flex;flex-wrap:wrap;gap:6px;align-items:center;pointer-events:none}
.thanh-vi>*{pointer-events:auto}
.chip-vi{position:static;padding:3px 12px;font-size:16px;white-space:nowrap}
.dieu-khien{position:absolute;z-index:2;top:10px;right:10px;display:flex;flex-direction:column;gap:6px}
.nut{background:var(--giay-sang);border:2px solid var(--muc);border-radius:9px;padding:5px 12px;cursor:pointer;box-shadow:0 3px 0 var(--muc);font-size:16px;white-space:nowrap}
.nut:active{transform:translateY(2px);box-shadow:0 1px 0 var(--muc)}
.dieu-khien .nut{width:40px;height:40px;padding:0;font-size:20px;line-height:1}
.goi-y{bottom:12px;left:50%;transform:translateX(-50%);padding:4px 14px;font-size:15px;white-space:nowrap;transition:opacity .8s;pointer-events:none;max-width:calc(100% - 20px);overflow:hidden;text-overflow:ellipsis}
.goi-y.tat{opacity:0}
.loa{top:56px;left:50%;transform:translate(-50%,-8px);padding:5px 16px;font-size:19px;white-space:nowrap;opacity:0;transition:opacity .35s,transform .35s;pointer-events:none;max-width:calc(100% - 20px);overflow:hidden;text-overflow:ellipsis}
.loa.hien{opacity:1;transform:translate(-50%,0)}
.the-leu{position:absolute;z-index:3;left:10px;bottom:10px;width:min(330px,calc(100% - 20px));background:var(--giay-sang);border:2.5px solid var(--muc);border-radius:12px;padding:10px 14px 12px;display:none;box-shadow:3px 3px 0 rgba(42,29,20,.25)}
.the-leu.hien{display:block}
.the-leu .ten{font-size:23px;color:var(--son);line-height:1.1;padding-right:26px}
.the-leu .hoc-vi{display:flex;align-items:center;gap:8px;margin-top:4px}
.the-leu .dong-x{position:absolute;top:4px;right:6px;border:0;background:none;font-size:26px;cursor:pointer;line-height:1}
.the-leu .tg b{color:var(--cham);font-weight:400;font-size:19px}
.co-vu{display:grid;grid-template-columns:repeat(4,1fr);gap:6px;margin-top:8px}
.co-vu button{background:#fff8e6;border:2px solid var(--muc);border-radius:10px;padding:4px 2px 3px;cursor:pointer;font-size:14px;line-height:1.1;box-shadow:0 2px 0 var(--muc)}
.co-vu button span{display:block;font-size:22px}
.co-vu button:active{transform:translateY(2px);box-shadow:none}
.ghi-chu{font-size:14px;opacity:.65}
.duoi{display:flex;align-items:center;gap:8px;padding:8px 10px;padding-bottom:max(8px,env(safe-area-inset-bottom));min-width:0}
.bang-tin{flex:1;min-width:0;text-align:left;font-size:17px;background:var(--giay-sang);border:2px solid var(--muc);border-radius:10px;padding:6px 12px;cursor:pointer;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.nut-son{background:var(--son);color:#fff4dc;text-decoration:none;font-size:18px}
.tam{position:fixed;z-index:20;right:12px;bottom:64px;width:min(380px,calc(100vw - 24px));max-height:min(68vh,560px);overflow:auto;background:var(--giay-sang);
  border:2.5px solid var(--muc);border-radius:14px;padding:12px 16px 14px;box-shadow:4px 4px 0 rgba(42,29,20,.25);display:none}
.tam.mo{display:block}
.tam h2{font-family:Lobster,cursive;font-weight:400;color:var(--son);font-size:24px;margin:0 30px 8px 0}
.tam .dong-x{position:absolute;top:6px;right:8px;border:0;background:none;font-size:28px;cursor:pointer;line-height:1}
form.tim{display:flex;gap:8px}
form.tim input{flex:1;min-width:0;font:inherit;font-size:19px;padding:6px 10px;border:2px solid var(--muc);border-radius:9px;background:#fff}
.ket-qua-tim{min-height:22px;margin:8px 0 4px;font-size:16px}
.ket-qua-tim a{color:var(--son)}
ul.su-kien{list-style:none;margin:0;padding:0}
ul.su-kien li{padding:6px 2px;border-bottom:1.5px dashed #cdb582;font-size:17px}
ul.su-kien li .luc{font-size:13px;opacity:.55;white-space:nowrap}
ul.su-kien li.he-thong{font-style:italic;opacity:.8}
.thang{display:grid;grid-template-columns:repeat(4,1fr);gap:4px 2px;text-align:center;font-size:14px;line-height:1.1}
.thang svg{display:block;margin:0 auto}
@media (max-width:700px){
  .chu-dai,.dong-ho .ngay,.cap-nhat,.chi-pc{display:none}
  .chi-dt{display:inline}.truc-tiep{font-size:13px}
  .bang-that{grid-template-columns:1fr}
  h1{font-size:26px}.an-son{width:36px;height:36px;font-size:9px}
  .tam{left:8px;right:8px;width:auto;bottom:60px}
  .bang-tin{font-size:15px}.chip-dem,.chip-vi{font-size:14px}.chip-dem b,.chip-vi b{font-size:16px}
  .loa{top:94px;font-size:16px}.nut{padding:5px 10px}
  .co-vu button{font-size:13px}
}
@media (max-height:520px){
  .tren{padding:3px 10px}.an-son,.cap-nhat{display:none}h1{font-size:22px}
  .duoi{padding-top:4px;padding-bottom:max(4px,env(safe-area-inset-bottom))}
  .tam{bottom:52px;max-height:calc(100vh - 70px)}
}
/* ---------- hoạt cảnh trong tranh ---------- */
.moc{transform-box:fill-box;transform-origin:50% 100%;animation:dung .8s cubic-bezier(.3,1.6,.5,1)}
@keyframes dung{from{transform:scale(.15,0)}to{transform:none}}
.cuon-leu{transform-box:fill-box;transform-origin:50% 100%;animation:cuon .5s ease-in forwards}
@keyframes cuon{to{transform:scale(.25,0);opacity:.3}}
.nhay{transform-box:fill-box;transform-origin:50% 100%}
.giat .nhay{animation:nhay .6s ease-out}
@keyframes nhay{0%,100%{transform:translateY(0)}25%{transform:translateY(-10px)}}
.nhay.vuon{animation:vuon 1s ease-in-out}
@keyframes vuon{30%{transform:scaleY(1.1) translateY(-5px)}60%{transform:scaleY(.95)}}
.nhay.chao{animation:chao .5s ease-in-out 3}
@keyframes chao{50%{transform:rotate(-6deg) translateY(-4px)}}
.dau{transform-box:fill-box;transform-origin:50% 100%}
.dau.hoc{animation:gat 3.2s ease-in-out infinite}
.dau.an{animation:gat 1.5s ease-in-out infinite}
.dau.ngu{animation:ngu 4.5s ease-in-out infinite}
@keyframes gat{0%,100%{transform:rotate(-5deg)}50%{transform:rotate(5deg)}}
@keyframes ngu{0%,100%{transform:rotate(9deg)}50%{transform:rotate(15deg)}}
.zzz{font:14px 'Patrick Hand',sans-serif;fill:#2c4a7a;animation:zz 3s linear infinite}
@keyframes zz{0%{opacity:0;transform:translate(0,0)}30%{opacity:1}100%{opacity:0;transform:translate(9px,-16px)}}
.lua{transform-box:fill-box;transform-origin:50% 100%;animation:lua .8s ease-in-out infinite alternate}
@keyframes lua{from{transform:scale(.8,.85)}to{transform:scale(1.1,1.15)}}
.den{animation:chap 1.7s ease-in-out infinite alternate}
@keyframes chap{from{opacity:.7}to{opacity:1}}
.hao-quang{transform-box:fill-box;transform-origin:center;animation:hq 2.6s ease-in-out infinite}
@keyframes hq{50%{transform:scale(1.18);opacity:.65}}
.co-bay{transform-box:fill-box;transform-origin:0% 50%;animation:vay 1.3s ease-in-out infinite alternate}
@keyframes vay{from{transform:skewY(-8deg) scaleX(.88)}to{transform:skewY(6deg) scaleX(1)}}
.leu,.bang-ten,.co-vi,#coc,#choi-canh{cursor:pointer}
.bang-ten rect{transition:fill .2s}
.bang-ten:hover rect{fill:#fff1bf}
.bang-ten.chon rect{fill:#f6d26b;stroke:#a8322a;stroke-width:2.5}
.ten-be{font:15px 'Patrick Hand',sans-serif;fill:#2a1d14}
.xa #nhan .bang-ten:not(.chon){display:none}
.vong-sang{transform-box:fill-box;transform-origin:center;animation:vong 1.5s ease-out infinite}
@keyframes vong{from{transform:scale(.35);opacity:1}to{transform:scale(1.5);opacity:0}}
.may{animation:troi-may 140s ease-in-out infinite alternate}
@keyframes troi-may{to{transform:translateX(180px)}}
.dieu{transform-box:fill-box;transform-origin:50% 100%;animation:dieu 3s ease-in-out infinite alternate}
@keyframes dieu{from{transform:rotate(-9deg)}to{transform:rotate(8deg) translateY(-8px)}}
.vo-canh{transform-box:fill-box;transform-origin:center;animation:vo .2s ease-in-out infinite alternate}
@keyframes vo{to{transform:scaleY(-.5)}}
.khoi{transform-box:fill-box;transform-origin:center;animation:khoi 3.6s ease-out infinite}
@keyframes khoi{0%{transform:translateY(0) scale(.5);opacity:0}20%{opacity:.75}100%{transform:translateY(-50px) scale(1.7);opacity:0}}
.dom{animation:dom 3.4s ease-in-out infinite alternate}
@keyframes dom{0%{transform:translate(0,0);opacity:.15}50%{opacity:1}100%{transform:translate(16px,-12px);opacity:.25}}
.di-bo{transform-box:fill-box;transform-origin:50% 100%;animation:di .3s ease-in-out infinite alternate}
@keyframes di{from{transform:translateY(0) rotate(-3deg)}to{transform:translateY(-3px) rotate(3deg)}}
.chan-a,.chan-b{transform-box:fill-box;transform-origin:50% 0%;animation:chan .3s ease-in-out infinite alternate}
.chan-b{animation-direction:alternate-reverse}
@keyframes chan{from{transform:rotate(-22deg)}to{transform:rotate(22deg)}}
.bong{transform-box:fill-box;transform-origin:50% 100%;animation:bong 2.8s ease-out forwards}
@keyframes bong{0%{transform:scale(0);opacity:0}10%{transform:scale(1.12);opacity:1}18%{transform:scale(1)}82%{opacity:1}100%{opacity:0;transform:translateY(-10px)}}
.loi{font:15px 'Patrick Hand',sans-serif;fill:#2a1d14}
.trong{transform-box:fill-box;transform-origin:center}
.giat .trong{animation:rung .15s linear 4}
@keyframes rung{50%{transform:translateX(2px) rotate(4deg)}}
.chu-vi{font:21px 'Patrick Hand',sans-serif;fill:#fff5dc}
.chu-bang{font:15px 'Patrick Hand',sans-serif;fill:#f6e2a8}
.chu-dem-vi{font:15px 'Patrick Hand',sans-serif;fill:#2a1d14}
.chu-day{font:16px 'Patrick Hand',sans-serif;fill:#fff5dc}
.chu-cong-vi{font:30px 'Patrick Hand',sans-serif;fill:#fff5dc}
/* mỗi bé một kiểu học */
.but{transform-box:fill-box;transform-origin:0% 100%;animation:but .5s ease-in-out infinite alternate}
@keyframes but{from{transform:translate(-5px,1px) rotate(-8deg)}to{transform:translate(4px,-1px) rotate(6deg)}}
.hat{animation:hat .7s steps(2) infinite alternate}
@keyframes hat{to{transform:translateX(6px)}}
.gay{animation:hat .35s steps(2) infinite alternate}
.quat-tay{transform-box:fill-box;transform-origin:0% 100%;animation:quat .45s ease-in-out infinite alternate}
@keyframes quat{from{transform:rotate(-18deg)}to{transform:rotate(14deg)}}
.gai{animation:gai .18s linear infinite alternate}
@keyframes gai{to{transform:translate(1px,-3px)}}
.dau.nghi{animation:nghi 5s ease-in-out infinite}
@keyframes nghi{0%,100%{transform:rotate(4deg)}50%{transform:rotate(11deg)}}
.lac{transform-box:fill-box;transform-origin:50% 100%;animation:lac 1.6s ease-in-out infinite}
@keyframes lac{0%,100%{transform:rotate(-6deg)}50%{transform:rotate(6deg)}}
.mieng{transform-box:fill-box;transform-origin:center;animation:mieng .3s infinite alternate}
@keyframes mieng{to{transform:scaleY(.3)}}
/* giờ nghỉ: sĩ tử ra khỏi lều làm việc khác */
.cau{animation:cau 1s ease-in-out infinite}
@keyframes cau{0%,100%{transform:translateY(0)}50%{transform:translateY(-60px)}}
.nhun{transform-box:fill-box;transform-origin:50% 100%;animation:nhun 1s ease-in-out infinite}
@keyframes nhun{0%,25%,100%{transform:none}8%{transform:rotate(-9deg) translateY(-3px)}}
.dao{transform-box:fill-box;transform-origin:50% 100%;animation:dao 9s linear infinite}
@keyframes dao{0%{transform:translateX(-30px)}48%{transform:translateX(60px)}50%{transform:translateX(60px) scaleX(-1)}98%{transform:translateX(-30px) scaleX(-1)}100%{transform:translateX(-30px)}}
.tap{transform-box:fill-box;transform-origin:50% 100%;animation:tap .9s ease-in-out infinite}
@keyframes tap{0%,100%{transform:none}30%{transform:scaleY(.9)}60%{transform:translateY(-10px)}}
.tay-tap{transform-box:fill-box;transform-origin:50% 100%;animation:taytap .9s ease-in-out infinite}
@keyframes taytap{0%,100%{transform:scaleY(1)}50%{transform:scaleY(-.6)}}
.nhun-day{transform-box:fill-box;transform-origin:50% 100%;animation:nhunday .6s ease-in-out infinite}
@keyframes nhunday{0%,100%{transform:none}50%{transform:translateY(-9px)}}
.day{transform-box:fill-box;transform-origin:center;animation:day .6s linear infinite}
@keyframes day{0%,100%{transform:scaleY(1)}50%{transform:scaleY(-1)}}
@media (prefers-reduced-motion:reduce){*{animation:none!important}}
