:root{--ground:#fff7ea;--card:#ffffff;--ink:#1f2153;--muted:#5a5c80;--line:#eadfc8;--primary:#3b33b5;--primary-soft:#edebff;--orange:#ff9a3c;--orange-soft:#ffe3cc;--orange-ink:#a1460a;--teal:#0b7a75;--teal-soft:#ddf3f1;--teal-ink:#07524e;--gold:#ffc23d;--night:#1f2153;--night-muted:#c9cbf2}*{box-sizing:border-box}html{-webkit-tap-highlight-color:transparent}[role=button],a,button{touch-action:manipulation;-webkit-user-select:none;-moz-user-select:none;user-select:none}body,html{margin:0}body{background:var(--ground);color:var(--ink);font-family:Noto Sans TC,system-ui,sans-serif;-webkit-font-smoothing:antialiased}a{color:var(--primary)}button{font-family:inherit}.num{font-family:Fredoka,Noto Sans TC,sans-serif}ruby{ruby-position:over;ruby-align:center}ruby rt{font-size:.5em;font-weight:500;letter-spacing:0}.zy-on{line-height:2.1}.wrap{max-width:1200px;margin:0 auto;padding:0 20px}.card{background:var(--card);border-radius:24px;padding:22px;box-shadow:0 4px 0 var(--line)}.row{flex-wrap:wrap;gap:16px}.row,.stack{display:flex}.stack{flex-direction:column;gap:12px}.muted{color:var(--muted)}.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:48px;padding:12px 24px;border-radius:999px;border:0;font-size:17px;font-weight:900;text-decoration:none;cursor:pointer;background:var(--primary);color:#fff}.btn:disabled{opacity:.5;cursor:default}.btn:active:not(:disabled){transform:translateY(2px) scale(.98)}.btn-orange{background:var(--orange);color:var(--ink);box-shadow:0 5px 0 #c76a16}.btn-soft{background:var(--primary-soft);color:var(--primary)}.btn-teal{background:var(--teal);color:#fff}.btn-ghost{background:transparent;color:#fff;border:2px solid #8c8fe0}.btn-sm{min-height:44px;padding:8px 16px;font-size:15px}.pill{display:inline-flex;align-items:center;gap:6px;padding:8px 14px;background:#fff;box-shadow:0 2px 0 var(--line)}.pill,.tag{border-radius:999px;font-weight:700}.tag{display:inline-block;padding:4px 10px;font-size:13px;background:var(--primary-soft);color:var(--primary)}.bar{height:12px;background:#f1eadb;overflow:hidden}.bar,.bar>span{border-radius:999px}.bar>span{display:block;height:100%;background:var(--teal)}.field{font:inherit;font-size:16px;padding:10px 12px;border-radius:12px;border:1.5px solid #cfcbe0;min-height:46px;width:100%;color:var(--ink);background:#fff}label.lbl{font-size:14px;display:block;margin-bottom:6px}.err,label.lbl{font-weight:700}.err{color:var(--orange-ink)}@keyframes float{0%,to{transform:translateY(0)}50%{transform:translateY(-10px)}}@keyframes drift{0%{background-position:0 0}to{background-position:-96px 0}}@keyframes ringspin{0%{transform:rotateX(74deg) rotate(0)}to{transform:rotateX(74deg) rotate(1turn)}}@keyframes sway{0%,to{transform:rotateX(-24deg) rotateY(-28deg)}50%{transform:rotateX(-24deg) rotateY(28deg)}}@keyframes bob{0%,to{transform:translateY(0)}50%{transform:translateY(-6px)}}@keyframes pop{0%{transform:scale(.6);opacity:0}70%{transform:scale(1.06);opacity:1}to{transform:scale(1)}}@keyframes coin{0%{transform:rotateY(0)}to{transform:rotateY(1turn)}}@keyframes shake{0%,to{transform:translateX(0)}25%{transform:translateX(-6px)}75%{transform:translateX(6px)}}.pop{animation:pop .45s ease-out both}.shake{animation:shake .3s ease-in-out 2}.float{animation:float 3s ease-in-out infinite}.planet-wrap{position:relative;width:110px;height:110px;margin:0 auto;animation:float 4s ease-in-out infinite}.planet{position:absolute;inset:7px;border-radius:50%;overflow:hidden;box-shadow:inset -16px -12px 0 rgba(20,20,60,.22),0 14px 22px rgba(31,33,83,.18)}.planet .surface{position:absolute;inset:0;background-image:repeating-linear-gradient(90deg,rgba(255,255,255,.22) 0 14px,transparent 14px 32px);background-size:96px 100%;animation:drift 5s linear infinite}.planet .shine{left:20%;top:16%;width:26%;height:20%;background:rgba(255,255,255,.55)}.planet .shine,.ring{position:absolute;border-radius:50%}.ring{left:-14px;right:-14px;top:38px;height:34px;border:5px solid rgba(31,33,83,.35);animation:ringspin 9s linear infinite}.locked .planet{filter:grayscale(1);opacity:.5}.stage{perspective:900px;min-height:220px;align-items:center;padding:20px 0}.scene,.stage{display:flex;justify-content:center}.scene{animation:sway 7s ease-in-out infinite;flex-wrap:wrap;gap:26px;max-width:640px}.scene,.tray{transform-style:preserve-3d}.tray{display:grid;grid-gap:7px;gap:7px;padding:12px;border-radius:14px;background:rgba(59,51,181,.1);border:3px solid rgba(59,51,181,.35)}.cube{position:relative;width:26px;height:26px;transform-style:preserve-3d;animation:bob 2.6s ease-in-out infinite}.cube .f{position:absolute;inset:0;border-radius:4px;border:2px solid rgba(31,33,83,.25)}.cube .f1{background:var(--c1,#ff9a3c);transform:translateZ(13px)}.cube .f2{background:var(--c2,#e2802a);transform:rotateY(180deg) translateZ(13px)}.cube .f3{transform:rotateY(90deg) translateZ(13px)}.cube .f3,.cube .f4{background:var(--c3,#f28b30)}.cube .f4{transform:rotateY(-90deg) translateZ(13px)}.cube .f5{background:var(--c4,#ffb870);transform:rotateX(90deg) translateZ(13px)}.cube .f6{background:var(--c2,#c76a16);transform:rotateX(-90deg) translateZ(13px)}.cube.blue{--c1:#5b8def;--c2:#3d6fd1;--c3:#4b7ee0;--c4:#8fb2f5}.cube.teal{--c1:#3fb8af;--c2:#2a978f;--c3:#35a89f;--c4:#7fd6cf}.cube.purple{--c1:#b57be0;--c2:#9258c2;--c3:#a46ad1;--c4:#d2aef0}.column{font-family:Fredoka,sans-serif;font-size:44px;font-weight:700;line-height:1.15;text-align:right;display:inline-block;padding:8px 24px 4px;letter-spacing:6px}.column .line{border-top:4px solid var(--ink);margin-top:6px;height:50px}.keypad{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));grid-gap:10px;gap:10px;max-width:360px}.key{min-height:60px;border-radius:18px;border:3px solid #d9cff5;background:#fff;font-family:Fredoka,sans-serif;font-size:28px;font-weight:700;color:var(--ink);cursor:pointer;box-shadow:0 4px 0 #d9cff5}.key:active{transform:translateY(2px);box-shadow:0 2px 0 #d9cff5}.choice{font-family:Fredoka,Noto Sans TC,sans-serif;font-size:32px;font-weight:700;min-height:84px;border-radius:22px;border:3px solid #d9cff5;background:#fff;color:var(--ink);cursor:pointer;box-shadow:0 5px 0 #d9cff5}@media (hover:hover){.choice:hover:not(:disabled){border-color:var(--primary);box-shadow:0 5px 0 var(--primary)}}.choice:active:not(:disabled){transform:translateY(3px);box-shadow:0 2px 0 var(--primary);border-color:var(--primary)}.coin{width:90px;height:90px;border-radius:50%;background:var(--gold);border:6px solid #d89a10;display:flex;align-items:center;justify-content:center;font-family:Fredoka,sans-serif;font-weight:700;font-size:32px;color:#7a5200;animation:coin 4s linear infinite}@media (prefers-reduced-motion:reduce){*,:after,:before{animation:none!important}}nav.kid a{padding:10px 16px;border-radius:999px;text-decoration:none;font-weight:700;color:var(--ink)}nav.kid a[aria-current=page]{background:var(--primary);color:#fff}.kidhead{justify-content:space-between;gap:14px;padding-top:16px;padding-bottom:16px}.kh-brand,.kidhead{display:flex;align-items:center}.kh-brand{gap:10px;text-decoration:none;color:var(--ink);min-width:0}.kh-brand b{display:block;font-size:24px;font-weight:900;letter-spacing:1px;line-height:1.2;white-space:nowrap}.kh-brand small{display:none;align-items:center;gap:4px;font-size:13px;font-weight:700;color:var(--muted)}.kh-nav{display:flex;gap:4px}nav.kid.kh-nav a{display:inline-flex;align-items:center;gap:6px}.kh-ico{font-size:18px;line-height:1}.kh-tools{display:flex;align-items:center;gap:10px;flex:none}@media (max-width:899px){.kidhead{display:grid;grid-template-columns:1fr auto;grid-row-gap:12px;row-gap:12px;grid-column-gap:8px;column-gap:8px;padding-top:12px;padding-bottom:6px}.kh-brand{gap:8px}.kh-brand b{font-size:20px}.kh-brand small{display:flex}.kh-tools{gap:8px;grid-column:2;grid-row:1}.kh-desk{display:none!important}nav.kid.kh-nav{grid-column:1/-1;display:grid;grid-template-columns:repeat(4,1fr);grid-gap:4px;gap:4px;padding:5px;background:#fff;border-radius:20px;box-shadow:0 3px 0 var(--line)}nav.kid.kh-nav a{flex-direction:column;justify-content:center;gap:3px;padding:8px 2px;border-radius:15px;font-size:14px;white-space:nowrap;text-align:center}.kh-ico{font-size:22px}}