
:root{--sky1:#7cc8f5;--sky2:#d9f1ff;--grass:#8fd16a;--grass2:#5fb24a;--ink:#1f2a44;--card:#fff;--ok:#1f9d55;--bad:#d64545;--gold:#f5b700;--r:18px;
--g:#2fb565;--y:#f2b705;--rd:#e5484d;}
*{box-sizing:border-box}
html,body{margin:0;padding:0}
body{font-family:"Rubik","Assistant","Noto Sans Hebrew","Arial Hebrew",Arial,system-ui,sans-serif;color:var(--ink);background:linear-gradient(var(--sky2),#f4fbef 60%);min-height:100vh;display:flex;flex-direction:column;-webkit-tap-highlight-color:transparent;font-size:17px;line-height:1.5}
button{font-family:inherit;font-size:inherit;color:inherit;cursor:pointer}
a{color:#1557b0}
:focus-visible{outline:3px solid #1557b0;outline-offset:2px}
.topbar{position:sticky;top:0;z-index:20;display:flex;align-items:center;justify-content:space-between;gap:8px;padding:8px 12px;background:rgba(255,255,255,.92);backdrop-filter:blur(6px);box-shadow:0 2px 10px rgba(0,0,0,.08)}
.brand{font-weight:800;font-size:20px;text-decoration:none;color:var(--ink);white-space:nowrap}
.tb-actions{display:flex;gap:8px;align-items:center;min-width:0}
.chip{border:2px solid #d5e3f0;background:#fff;border-radius:999px;padding:6px 12px;min-height:44px;font-weight:700;max-width:150px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.chip.round{width:46px;padding:0;font-size:22px}
.chip.off{opacity:.55}
main{flex:1;width:100%;max-width:1000px;margin:0 auto;padding:12px 12px 24px}
.foot{display:flex;align-items:center;justify-content:center;gap:10px;flex-wrap:wrap;padding:10px 12px 14px;background:#fff;border-top:3px solid #e8f2e0;font-weight:700;font-size:15px}
.foot img{width:44px;height:44px;object-fit:contain;border-radius:8px}
.foot-link{background:#eef6ff;border-radius:999px;padding:6px 12px;text-decoration:none;min-height:40px;display:inline-flex;align-items:center}
/* hero */
.hero{position:relative;border-radius:24px;overflow:hidden;background:linear-gradient(var(--sky1),var(--sky2));min-height:170px;box-shadow:0 6px 18px rgba(30,80,140,.15)}
.hero svg{display:block;width:100%;height:auto}
.hero .sign{position:absolute;top:12px;right:14px;left:14px;text-align:center}
.hero h1{margin:0;font-size:clamp(28px,8vw,46px);font-weight:900;color:#fff;text-shadow:0 3px 0 #2a6aa8,0 6px 14px rgba(0,0,0,.25);letter-spacing:.5px}
.hero p{margin:2px 0 0;color:#0e3a66;font-weight:700;background:rgba(255,255,255,.75);display:inline-block;padding:2px 12px;border-radius:999px;font-size:15px}
.hello{margin:14px 2px 6px;font-size:19px;font-weight:700}
/* village */
.village{position:relative;margin-top:10px;padding:18px 10px 22px;border-radius:24px;background:radial-gradient(circle at 20% 30%,#a6dd83 0 18%,transparent 19%),radial-gradient(circle at 80% 70%,#a6dd83 0 14%,transparent 15%),linear-gradient(var(--grass),var(--grass2));box-shadow:inset 0 -6px 0 rgba(0,0,0,.08)}
.village .path{position:absolute;inset:0;width:100%;height:100%;pointer-events:none}
.houses{position:relative;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px 12px}
.house{position:relative;display:flex;flex-direction:column;align-items:center;text-align:center;border:0;background:transparent;padding:0;min-height:150px}
.house .roof{width:0;height:0;border-left:62px solid transparent;border-right:62px solid transparent;border-bottom:38px solid var(--c,#e86b5a);filter:drop-shadow(0 -2px 0 rgba(0,0,0,.1))}
.house .body{width:118px;background:#fff8ec;border-radius:0 0 14px 14px;padding:6px 6px 10px;box-shadow:0 6px 0 rgba(0,0,0,.12)}
.house .em{font-size:38px;line-height:1.1;display:block}
.house .nm{font-weight:800;font-size:15.5px;line-height:1.2;display:block;margin-top:2px}
.house .tp{font-size:12.5px;color:#4a5670;display:block;line-height:1.25}
.house .stars{position:absolute;top:22px;left:50%;transform:translateX(-50%);font-size:11px;letter-spacing:1px;background:#fff;border-radius:999px;padding:0 6px;white-space:nowrap}
.house:hover .body,.house:focus-visible .body{transform:translateY(-3px)}
.house .body{transition:transform .15s}
.house.done::after{content:"🏅";position:absolute;top:30px;right:8px;font-size:24px}
/* passport */
.panel{background:#fff;border-radius:var(--r);padding:14px;margin-top:16px;box-shadow:0 4px 14px rgba(0,0,0,.07)}
.panel h2{margin:0 0 8px;font-size:20px}
.stamps{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px}
.stamp{aspect-ratio:1;border-radius:50%;border:3px dashed #c7cfdb;display:flex;flex-direction:column;align-items:center;justify-content:center;font-size:12px;text-align:center;color:#8a94a6;padding:4px;line-height:1.15}
.stamp b{font-size:24px;filter:grayscale(1);opacity:.45}
.stamp.got{border:3px solid var(--c,#e86b5a);color:var(--ink);background:#fffaf0;transform:rotate(-6deg);box-shadow:0 0 0 3px #fff inset}
.stamp.got b{filter:none;opacity:1}
.stamp .lv{font-size:10px;letter-spacing:1px}
.muted{color:#5b667a;font-size:15px}
/* game intro */
.card{background:#fff;border-radius:22px;padding:16px;box-shadow:0 6px 18px rgba(0,0,0,.08)}
.intro{text-align:center}
.intro .big{font-size:64px;line-height:1}
.intro h1{margin:6px 0 2px;font-size:28px}
.intro .topic{color:#4a5670;font-weight:700}
.instr{background:#f3f8ff;border-radius:14px;padding:10px 12px;margin:12px 0;text-align:right;font-size:16px}
.levels{display:grid;gap:10px;margin-top:8px}
.lvl{display:flex;align-items:center;gap:12px;width:100%;min-height:64px;border-radius:16px;border:0;padding:10px 14px;font-weight:800;font-size:19px;text-align:right;box-shadow:0 4px 0 rgba(0,0,0,.15);color:#13213a}
.lvl small{display:block;font-weight:500;font-size:14px}
.lvl .dot{font-size:28px}
.lvl .best{margin-inline-start:auto;font-size:14px;font-weight:700;background:rgba(255,255,255,.7);border-radius:999px;padding:2px 8px;white-space:nowrap}
.lvl.l1{background:#c9f1d8}.lvl.l2{background:#fdeeb5}.lvl.l3{background:#fcd3d3}
.lvl:active{transform:translateY(2px);box-shadow:0 2px 0 rgba(0,0,0,.15)}
.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;min-height:52px;padding:10px 18px;border-radius:14px;border:0;font-weight:800;font-size:18px;background:#1f6fd1;color:#fff;box-shadow:0 4px 0 #154f97;text-decoration:none}
.btn.sec{background:#eef3fa;color:#1f2a44;box-shadow:0 4px 0 #cdd8e6}
.btn.gold{background:var(--gold);color:#3b2a00;box-shadow:0 4px 0 #b88900}
.btn:active{transform:translateY(2px);box-shadow:none}
.row{display:flex;gap:10px;flex-wrap:wrap;justify-content:center;margin-top:14px}
/* play */
.hud{display:flex;align-items:center;gap:8px;margin-bottom:10px}
.hud .home{min-width:48px;min-height:48px;border-radius:14px;border:0;background:#fff;font-size:22px;box-shadow:0 3px 0 #d5dde8}
.hud .ttl{font-weight:800;font-size:16px;flex:1;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.hud .sc{font-weight:800;background:#fff;border-radius:999px;padding:4px 10px;white-space:nowrap}
.prog{height:10px;background:#e3eaf3;border-radius:999px;overflow:hidden;margin-bottom:12px}
.prog i{display:block;height:100%;background:linear-gradient(90deg,#3cc47c,#1f9d55);border-radius:999px;transition:width .3s}
.ask{font-weight:700;color:#3a4660;text-align:center;margin:2px 0 8px;font-size:16px}
.prompt{background:#fff;border-radius:20px;padding:18px 12px;text-align:center;font-size:clamp(26px,8vw,40px);font-weight:800;box-shadow:0 5px 0 #d9e2ee;margin-bottom:14px;word-break:break-word}
.prompt.sent{font-size:clamp(19px,5.4vw,26px);font-weight:700;line-height:1.6}
.prompt .gap{display:inline-block;min-width:70px;border-bottom:3px dashed #1f6fd1;margin:0 4px}
.prompt mark{background:#fff1a8;border-radius:6px;padding:0 4px}
.opts{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}
.opts.one{grid-template-columns:1fr}
.opt{min-height:64px;border-radius:16px;border:3px solid #d5e0ee;background:#fff;font-size:21px;font-weight:800;padding:8px;box-shadow:0 4px 0 #d5e0ee;line-height:1.3}
.opts.one .opt{font-size:18px;font-weight:700;text-align:right;padding:10px 14px}
.opt:active{transform:translateY(2px)}
.opt.ok{background:#d5f5e1;border-color:var(--ok);box-shadow:0 4px 0 #1b7f45}
.opt.bad{background:#fde0e0;border-color:var(--bad);box-shadow:0 4px 0 #a33}
.opt:disabled{cursor:default}
.timer{height:8px;background:#ffe3c2;border-radius:999px;overflow:hidden;margin:-4px 0 12px}
.timer i{display:block;height:100%;background:#ff8a1f;width:100%}
/* feedback */
.toast{position:fixed;left:50%;top:76px;transform:translate(-50%,-30px);opacity:0;background:var(--ok);color:#fff;font-weight:800;padding:10px 20px;border-radius:999px;z-index:50;transition:.25s;pointer-events:none;font-size:19px;max-width:92vw;text-align:center}
.toast.show{opacity:1;transform:translate(-50%,0)}
.sheet{position:fixed;inset:auto 0 0 0;z-index:60;transform:translateY(110%);transition:transform .25s;background:#fff;border-radius:22px 22px 0 0;box-shadow:0 -8px 30px rgba(0,0,0,.25);padding:16px 16px calc(16px + env(safe-area-inset-bottom));max-width:720px;margin:0 auto;visibility:hidden}
.sheet.show{transform:none;visibility:visible}
.sheet h3{margin:0 0 6px;color:var(--bad);font-size:22px}
.sheet .ans{font-size:20px;font-weight:800;margin:4px 0}
.sheet .ex{background:#fff6e5;border-radius:12px;padding:8px 12px;margin:8px 0 12px}
.sheet .btn{width:100%}
/* sort */
.sortcard{background:#fff;border-radius:20px;padding:20px 10px;text-align:center;font-size:clamp(28px,9vw,42px);font-weight:800;box-shadow:0 5px 0 #d9e2ee;margin:6px auto 14px;max-width:420px;transition:transform .35s,opacity .35s}
.sortcard.fly{opacity:0;transform:translateY(90px) scale(.6)}
.bins{display:grid;grid-template-columns:repeat(var(--n,3),minmax(0,1fr));gap:8px}
.bin{min-height:110px;border-radius:18px 18px 26px 26px;border:3px solid #b07a3a;background:repeating-linear-gradient(45deg,#e8b877 0 10px,#dda963 10px 20px);font-weight:900;font-size:19px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;padding:6px;color:#3d2508;box-shadow:0 5px 0 #8a5a24;line-height:1.2}
.bin .cnt{font-size:13px;background:#fff8;border-radius:999px;padding:0 8px}
.bin .bi{font-size:28px}
.bin.ok{outline:4px solid var(--ok)}.bin.bad{outline:4px solid var(--bad)}
/* memory */
.mem{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}
.mc{position:relative;aspect-ratio:1/1.05;border:0;padding:0;background:transparent;perspective:600px}
.mc .in{position:absolute;inset:0;transition:transform .35s;transform-style:preserve-3d}
.mc.up .in,.mc.done .in{transform:rotateY(180deg)}
.mc .f,.mc .b{position:absolute;inset:0;border-radius:14px;display:flex;align-items:center;justify-content:center;backface-visibility:hidden;-webkit-backface-visibility:hidden;padding:6px;text-align:center;font-weight:800;line-height:1.25;word-break:break-word}
.mc .f{background:linear-gradient(135deg,#7b61ff,#4b8bff);color:#fff;font-size:30px;box-shadow:0 4px 0 #3c49a8}
.mc .b{background:#fff;transform:rotateY(180deg);font-size:clamp(13px,3.9vw,19px);box-shadow:0 4px 0 #cfd8e6;border:3px solid #dfe7f2}
.mc .b.p{background:#f2f7ff}
.mc.done .b{border-color:var(--ok);background:#e3f8eb}
.mc.bad .b{border-color:var(--bad)}
/* balloons */
.sky{position:relative;height:min(56vh,440px);min-height:300px;border-radius:20px;overflow:hidden;background:linear-gradient(#bfe6ff,#eaf7ff 70%,#9fdc7c 70%,#7cc95a);touch-action:manipulation}
.bal{position:absolute;top:0;width:31%;border:0;background:transparent;padding:0;display:flex;flex-direction:column;align-items:center;will-change:transform}
.bal .bb{width:100%;min-height:76px;border-radius:50% 50% 46% 46%/56% 56% 44% 44%;display:flex;align-items:center;justify-content:center;font-weight:800;font-size:clamp(15px,4.6vw,22px);padding:8px 6px;color:#16213a;box-shadow:inset -8px -10px 0 rgba(0,0,0,.08),0 4px 8px rgba(0,0,0,.12);line-height:1.2}
.bal .str{width:2px;height:26px;background:#666}
.bal.ok .bb{outline:4px solid var(--ok)}.bal.bad .bb{outline:4px solid var(--bad)}
.bal.pop{transition:transform .2s,opacity .2s;opacity:0}
/* duel */
.duel{display:grid;gap:12px}
.say{position:relative;text-align:right;border-radius:20px;border:3px solid #d5e0ee;background:#fff;padding:14px 14px 14px 56px;font-size:19px;font-weight:700;box-shadow:0 4px 0 #d5e0ee;min-height:70px;line-height:1.5}
.say .who{position:absolute;left:10px;top:50%;transform:translateY(-50%);font-size:34px}
.say.ok{background:#d5f5e1;border-color:var(--ok)}.say.bad{background:#fde0e0;border-color:var(--bad)}
/* certificate */
.cert{position:relative;background:#fffdf5;border-radius:18px;padding:22px 16px;text-align:center;border:10px solid transparent;background-clip:padding-box;box-shadow:0 0 0 4px var(--gold),0 10px 30px rgba(0,0,0,.18);margin:8px 4px}
.cert::before{content:"";position:absolute;inset:6px;border:2px dashed #e0b84a;border-radius:10px;pointer-events:none}
.cert .medal{font-size:56px;line-height:1}
.cert h1{margin:4px 0;font-size:clamp(28px,8vw,40px);color:#b8860b;font-weight:900}
.cert .to{font-size:16px;color:#5b667a;margin-top:6px}
.cert .who{font-size:clamp(26px,8vw,38px);font-weight:900;color:#1f2a44;border-bottom:3px solid #f0d27a;display:inline-block;padding:0 16px;margin:2px 0 8px}
.cert .what{font-size:18px;font-weight:700}
.cert .meta{display:flex;justify-content:center;gap:10px;flex-wrap:wrap;margin-top:10px}
.cert .meta span{background:#fff3cf;border-radius:999px;padding:4px 12px;font-weight:700;font-size:15px}
.cert .sig{margin-top:12px;font-size:14px;color:#6b5a2a}
.confetti{position:fixed;inset:0;pointer-events:none;z-index:40;overflow:hidden}
.confetti i{position:absolute;top:-20px;width:10px;height:14px;border-radius:2px;animation:fall linear forwards}
@keyframes fall{to{transform:translateY(110vh) rotate(720deg)}}
.review{margin-top:14px;text-align:right}
.review li{margin-bottom:6px}
/* modal */
.modal{position:fixed;inset:0;background:rgba(15,30,60,.55);z-index:80;display:flex;align-items:center;justify-content:center;padding:16px}
.modal .card{width:100%;max-width:420px;text-align:center}
.modal input{width:100%;font-size:22px;padding:12px;border-radius:14px;border:3px solid #cfdcec;text-align:center;font-family:inherit;margin:10px 0}
/* teacher */
.tpage td,.tpage li,.tpage p{overflow-wrap:anywhere}
.tpage h1{margin:4px 0 10px}
.tpage h2{margin:18px 0 6px;font-size:21px}
.tpage table{width:100%;border-collapse:collapse;font-size:15px}
.tpage td,.tpage th{border:1px solid #dbe4ef;padding:8px;text-align:right;vertical-align:top}
.tpage th{background:#eef5ff}
.board{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:6px;margin-top:8px}
.board div{border-radius:12px;padding:8px 6px;font-size:13.5px;line-height:1.35;min-height:92px;font-weight:600}
.board .b1{background:#d9f5e3}.board .b2{background:#fdf0c2}.board .b3{background:#fcdcdc}
.board .must{background:#1f6fd1;color:#fff;border:3px solid #0d3f86}
.board b{display:block;font-size:14.5px;margin-bottom:2px}
@media (min-width:640px){
 .houses{grid-template-columns:repeat(4,minmax(0,1fr))}
 .stamps{grid-template-columns:repeat(8,minmax(0,1fr))}
 .levels{grid-template-columns:repeat(3,1fr)}
 .mem{grid-template-columns:repeat(4,minmax(0,1fr))}
 .mc{aspect-ratio:1.25/1}
 .mem{max-width:720px;margin:0 auto}
 .sky,.opts,.duel,.bins,.prompt,.sortcard{max-width:820px;margin-left:auto;margin-right:auto}
 .board div{font-size:15px}
 main{padding:18px}
}
@media (prefers-reduced-motion:reduce){*{transition:none!important;animation:none!important}}
