:root{--plum:#6044a6;--dark:#30234b;--lav:#ebe5fb;--mint:#dcf7ed;--mintdark:#168363;--peach:#fff0d6;--pink:#ffe4ef;--paper:#fffefd;--line:#ddd8ed;--shadow:0 14px 40px rgba(49,38,92,.1)}
*{box-sizing:border-box}html{height:100%;-webkit-tap-highlight-color:transparent}body{margin:0;background:radial-gradient(circle at 15% 7%,#fff2d9 0,transparent 31%),radial-gradient(circle at 90% 80%,#e5f4ff 0,transparent 30%),#f8f5ff;font:500 17px/1.4 system-ui,-apple-system,"Segoe UI",sans-serif;color:var(--dark)}button,input,select{font:inherit}button{cursor:pointer}button:disabled{opacity:.45;cursor:not-allowed}button:focus-visible,input:focus-visible,select:focus-visible{outline:4px solid #00a7b5;outline-offset:2px}button:active:not(:disabled){transform:scale(.985)}[hidden]{display:none!important}
#shell{min-height:100dvh;display:flex;flex-direction:column}.header{display:grid;grid-template-columns:minmax(0,1fr);align-items:center;padding:10px clamp(12px,2.3vw,28px);background:linear-gradient(180deg,rgba(255,255,255,.95),rgba(255,255,255,.88));border-bottom:2px solid #eee7fd;gap:14px;position:relative;z-index:10;overflow:hidden}.banner-wrap{position:relative;min-width:0}.brand-banner{position:relative;z-index:2;display:block;border:0;background:none;padding:0;width:100%;max-width:none}.brand-banner img{display:block;width:100%;height:auto;max-height:240px;object-fit:cover;border-radius:26px;filter:drop-shadow(0 12px 22px rgba(73,57,121,.10))}.banner-fall{position:absolute;inset:-8px 0 -8px 0;overflow:hidden;pointer-events:none;border-radius:28px;z-index:3}.float-item{position:absolute;top:-20%;font-weight:900;opacity:.38;animation-name:fallDrift;animation-timing-function:linear;animation-iteration-count:infinite;user-select:none;text-shadow:0 2px 0 rgba(255,255,255,.28)}.i1{left:3%;font-size:24px;color:#7a54bf;animation-duration:17s;animation-delay:-2s}.i2{left:11%;font-size:21px;color:#28a79b;animation-duration:14s;animation-delay:-9s}.i3{left:18%;font-size:18px;color:#9d8ac9;animation-duration:19s;animation-delay:-5s}.i4{left:28%;font-size:25px;color:#28a79b;animation-duration:16s;animation-delay:-11s}.i5{left:37%;font-size:19px;color:#7a54bf;animation-duration:15s;animation-delay:-4s}.i6{left:47%;font-size:17px;color:#a3d8d0;animation-duration:18s;animation-delay:-13s}.i7{left:57%;font-size:26px;color:#7a54bf;animation-duration:14.5s;animation-delay:-7s}.i8{left:66%;font-size:18px;color:#28a79b;animation-duration:17.5s;animation-delay:-1s}.i9{left:74%;font-size:17px;color:#9d8ac9;animation-duration:13.5s;animation-delay:-8s}.i10{left:82%;font-size:23px;color:#28a79b;animation-duration:16.5s;animation-delay:-6s}.i11{left:90%;font-size:20px;color:#7a54bf;animation-duration:15.5s;animation-delay:-10s}.i12{left:95%;font-size:17px;color:#a3d8d0;animation-duration:18.5s;animation-delay:-3s}.header-right{display:flex;align-items:center;gap:10px;justify-self:end;align-self:start;position:absolute;top:18px;right:clamp(12px,2.3vw,28px);z-index:5}.who{font-size:14px;font-weight:800;color:#766a96}.icon-button,.quiet-button{background:#f1ecfc;border:2px solid transparent;border-radius:15px;min-height:47px;padding:8px 14px;color:var(--plum);font-weight:800}.icon-button{font-size:23px}.quiet-button{font-size:15px}main{flex:1;width:min(1180px,100%);margin:0 auto;padding:22px clamp(16px,4vw,42px) 30px}footer{width:100%;margin-top:auto;text-align:center;color:#fff;font-size:16px;padding:20px 18px;background:radial-gradient(circle at 15% 0,#8d69d9 0,transparent 30%),radial-gradient(circle at 85% 20%,#4fbab1 0,transparent 28%),linear-gradient(180deg,#7451c6 0%,#5c3ea8 100%);position:relative;overflow:hidden}footer:before,footer:after{content:"";position:absolute;left:-5%;right:-5%;height:58px;border-radius:50%;background:rgba(255,255,255,.08)}footer:before{bottom:-34px}footer:after{bottom:-50px;background:rgba(34,18,76,.18)}footer strong{position:relative;z-index:1;color:#fff;font-size:16px;letter-spacing:.2px}@keyframes fallDrift{0%{transform:translateY(-18%) translateX(0) rotate(0deg)}25%{transform:translateY(25%) translateX(10px) rotate(8deg)}50%{transform:translateY(55%) translateX(-8px) rotate(-6deg)}75%{transform:translateY(82%) translateX(12px) rotate(7deg)}100%{transform:translateY(125%) translateX(-4px) rotate(-8deg)}}h1,h2,h3,p{margin:0}h1{font-size:clamp(28px,4.5vw,49px);line-height:1.08;letter-spacing:-.035em}h2{font-size:clamp(22px,2.7vw,32px);line-height:1.1}h3{font-size:20px}.sub{color:#817699;font-size:clamp(15px,1.8vw,18px);margin-top:9px}.tiny{color:#958aac;font-size:13px}.center{text-align:center}.hero{margin-bottom:23px}.hero.center{max-width:850px;margin-inline:auto;margin-bottom:22px}.page-inner{max-width:920px;margin:auto}.panel{background:rgba(255,255,255,.94);border:2px solid #ece7fa;border-radius:28px;box-shadow:var(--shadow);padding:clamp(20px,3vw,32px)}.login{max-width:675px;margin:0 auto}.login-card{padding:clamp(22px,4vw,42px);display:grid;gap:18px}.field{display:grid;gap:8px;text-align:left}.field label{font-weight:900;font-size:17px}.field select,.field input{border-radius:15px;border:2px solid #ddd4f3;background:#fff;width:100%;padding:15px 18px;min-height:58px;color:var(--dark)}.field select:disabled,.field input:disabled{background:#f7f5fc}.controls-row{display:flex;gap:12px;align-items:center;flex-wrap:wrap}.primary,.secondary,.soft{border:0;border-radius:18px;min-height:60px;padding:14px 22px;font-weight:900;box-shadow:0 4px 0 rgba(0,0,0,.06);font-size:18px}.primary{background:var(--plum);color:#fff}.secondary{background:#2c9f94;color:#fff}.soft{background:#efebfb;color:var(--plum)}.full{width:100%}.outline{border:2px solid var(--line);border-radius:14px;background:#fff;padding:12px 16px;color:#60547d;font-weight:800}.link-button{border:0;background:transparent;color:var(--plum);font-weight:800;text-decoration:underline;padding:8px}.login-foot{display:flex;align-items:center;justify-content:center;gap:15px;padding-top:8px}.stack{display:grid;gap:16px}.card-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px}.game-card{border:3px solid transparent;border-radius:26px;background:white;padding:25px 23px;min-height:185px;display:flex;align-items:center;gap:20px;text-align:left;color:var(--dark);box-shadow:var(--shadow);transition:transform .16s}.game-card:hover{transform:translateY(-2px)}.game-card:nth-child(4n+1){background:#fff5dc}.game-card:nth-child(4n+2){background:#e7f7f1}.game-card:nth-child(4n+3){background:#efe8ff}.game-card:nth-child(4n+4){background:#ffe9f1}.game-symbol{font-size:clamp(50px,6vw,77px);min-width:100px;text-align:center}.game-card h3{font-size:clamp(21px,2.9vw,29px)}.game-card p{margin-top:8px;color:#726887;font-size:16px}.pill{display:inline-block;border-radius:100px;background:#f2edf9;color:var(--plum);padding:6px 12px;font-weight:800;font-size:13px}.home-top{display:flex;align-items:center;justify-content:space-between;gap:18px;margin-bottom:24px}.home-emoji{font-size:90px}.options{display:flex;flex-wrap:wrap;gap:8px}.options button{border:2px solid #ddd5ef;background:#fff;color:#645188;border-radius:14px;padding:9px 16px;font-weight:800}.options button.selected{background:var(--plum);color:#fff;border-color:var(--plum)}.game-top{display:flex;gap:16px;justify-content:space-between;align-items:center;margin-bottom:18px}.progress-track{height:14px;background:#e6e0f4;border-radius:100px;overflow:hidden;max-width:100%;margin-top:8px}.progress-fill{height:100%;background:#31a58f;border-radius:100px}.prompt-card{background:#fff;border:3px solid #e8e2f8;border-radius:25px;padding:18px;display:grid;gap:9px;text-align:center;box-shadow:var(--shadow)}.prompt-head{display:flex;justify-content:center;align-items:center;gap:16px}.prompt-main{font-size:clamp(22px,3vw,34px);font-weight:900;line-height:1.2}.replay{border:0;border-radius:16px;color:var(--plum);background:#f1edfc;min-width:70px;min-height:65px;font-size:30px}.answer-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;margin:18px auto;max-width:950px}.answer-grid.cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.answer-grid.cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.answer{background:white;border:4px solid #e0d9f2;border-radius:25px;min-height:clamp(135px,22vh,245px);padding:16px 10px;color:var(--dark);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:10px;box-shadow:0 7px 0 #e9e3f5}.answer:hover{border-color:#b4a3e3}.answer:disabled{opacity:1}.answer.right{border-color:#3cba91;background:#e1fff1}.answer.wrong{border-color:#f19b9b;background:#fff0f0}.tile-main{font-weight:900;font-size:clamp(49px,8vw,93px);line-height:1;text-shadow:0 2px 0 #ffffff20}.tile-label{font-size:17px;font-weight:900}.color-disc{border-radius:50%;width:clamp(70px,11vw,120px);height:clamp(70px,11vw,120px);border:5px solid #00000013;box-shadow:0 5px 12px #00000014}.shape-svg{width:clamp(78px,11vw,135px);height:clamp(78px,11vw,135px)}.feedback{text-align:center;font-size:clamp(19px,2.4vw,28px);font-weight:900;min-height:32px;color:#39957d}.stat-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:11px}.stat{border-radius:20px;background:#f3f0fc;padding:18px;text-align:center}.stat b{display:block;font-size:32px}.stat span{font-size:13px;color:#75698a}.bar{height:12px;border-radius:22px;background:#ece7fa;overflow:hidden}.bar>span{display:block;height:100%;background:#27a689;border-radius:22px}.skill-row{display:grid;grid-template-columns:120px 1fr 70px;gap:12px;align-items:center;margin:15px 0}.history-list{display:grid;gap:10px;max-height:350px;overflow:auto}.history-item{border:2px solid #f1edfa;border-radius:14px;padding:12px 14px;display:flex;justify-content:space-between;gap:12px;align-items:center}.two-col{display:grid;grid-template-columns:1.1fr .9fr;gap:17px}.teacher-toolbar{display:flex;align-items:center;justify-content:space-between;gap:14px;flex-wrap:wrap;margin-bottom:16px}.roster{display:grid;gap:10px}.roster-entry{border-radius:14px;padding:12px;background:#f8f6ff;display:flex;gap:9px;align-items:center;justify-content:space-between}.muted{opacity:.7}.note{background:#fff9e6;border:2px solid #fae9b6;border-radius:15px;padding:14px;font-size:14px;color:#65552e}.badge-demo{font-size:13px;font-weight:900;letter-spacing:1.2px;color:#8a6a25;background:#fff2ca;padding:7px 12px;border-radius:100px}.overlay{position:fixed;inset:0;background:#251c3a80;z-index:100;display:grid;place-items:center;padding:20px}.sound-panel{background:#fff;max-width:530px;width:100%;border-radius:26px;padding:25px;box-shadow:var(--shadow);display:grid;gap:14px}.panel-head{display:flex;align-items:center;justify-content:space-between;gap:10px}.sound-row{display:grid;gap:9px;border-bottom:1px solid #eeeaf7;padding:7px 0 14px}.sound-row label{display:flex;align-items:center;gap:10px;justify-content:space-between;font-weight:800}.sound-row input[type=range]{width:100%;accent-color:var(--plum)}input[type=checkbox]{accent-color:var(--plum);width:22px;height:22px}.fine{font-size:13px;color:#7b7193;line-height:1.5}.spaced{margin:16px 0}.action-row{display:flex;flex-wrap:wrap;gap:12px;margin-top:18px}.empty{color:#716784;font-size:15px;margin:20px 0}.topline{display:flex;align-items:center;gap:14px;justify-content:space-between}.admin-row{display:flex;gap:8px;align-items:end;flex-wrap:wrap}.admin-row .field{flex:1;min-width:150px}.divider{height:2px;background:#f1eefa;margin:19px 0}.emoji-title{font-size:44px;margin-bottom:8px}
@media(max-width:720px){.header{padding:8px 13px}.who{display:none}.brand{font-size:20px}.brand small{letter-spacing:1px;font-size:8px}.header-right{gap:4px}.icon-button,.quiet-button{min-height:44px;padding:7px 10px}main{padding:18px 13px}.panel{border-radius:21px}.card-grid{gap:12px}.game-card{padding:18px;min-height:140px;gap:10px;display:block;text-align:center}.game-symbol{min-width:0;font-size:52px}.game-card p{font-size:13px}.answer-grid.cols-4{grid-template-columns:repeat(2,1fr)}.answer-grid.cols-3{grid-template-columns:repeat(2,1fr)}.answer{min-height:125px}.two-col{grid-template-columns:1fr}.home-emoji{display:none}.skill-row{grid-template-columns:85px 1fr 54px;font-size:14px}.stat-grid{gap:6px}.stat{padding:12px 4px}.stat b{font-size:25px}}
@media(max-height:690px) and (min-width:700px){main{padding-top:12px}.hero{margin-bottom:13px}.game-card{min-height:135px;padding:17px}.answer{min-height:clamp(110px,28vh,180px)}.prompt-card{padding:12px}.answer-grid{margin:11px auto}.home-top{margin-bottom:13px}}

@media (max-width:900px){.header{grid-template-columns:1fr}.header-right{justify-self:start;align-self:center}.brand-banner{max-width:100%}}
@media (prefers-reduced-motion:reduce){.float-item{animation:none;opacity:.18}}


/* V0.2.5 landing refresh */
.landing-page{max-width:1220px;margin:0 auto;display:grid;gap:22px}.landing-intro{text-align:center;padding-top:6px}.landing-intro h1{font-size:clamp(28px,4vw,46px);margin-bottom:8px}.landing-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:18px}.choice-card{background:rgba(255,255,255,.94);border:2px solid #ebe6f8;border-radius:28px;box-shadow:var(--shadow);padding:24px 22px;display:grid;gap:12px;text-align:center;align-content:start}.choice-card.kids{background:linear-gradient(180deg,#fff 0%,#faf6ff 100%)}.choice-card.teacher{background:linear-gradient(180deg,#f6ffff 0%,#edfdf9 100%)}.choice-card.classplay{background:linear-gradient(180deg,#f6fbff 0%,#edf5ff 100%)}.choice-icon{width:92px;height:92px;border-radius:50%;display:grid;place-items:center;font-size:46px;margin:0 auto 4px;background:#efe6ff;box-shadow:inset 0 0 0 10px rgba(255,255,255,.5)}.teacher .choice-icon{background:#dcfaf4}.classplay .choice-icon{background:#dfebff}.choice-card h3{font-size:clamp(24px,2.6vw,36px);margin:2px 0}.choice-card p{margin:0;color:#655a80;font-size:17px;line-height:1.45;min-height:74px}.choice-card .primary,.choice-card .secondary{margin-top:auto}.student-panel{max-width:780px;margin:0 auto}.student-panel .login-card{gap:16px}.student-panel .field label{font-size:18px}.student-panel .primary{font-size:20px}.class-summary{display:grid;gap:12px}.recent-class-list{display:grid;gap:9px}.recent-class-item{display:flex;justify-content:space-between;gap:12px;align-items:center;border:2px solid #f0eaf8;background:#fcfbff;border-radius:15px;padding:10px 12px}.recent-class-item .tiny{display:block}.mini-note{font-size:14px;color:#7b7193}.teacher-side-grid{display:grid;gap:17px}.header.login-mode .brand-banner img{max-height:315px}.header.login-mode{padding-top:12px;padding-bottom:12px}.header.login-mode .banner-wrap{width:100%}.landing-admin{text-align:center;padding-top:4px}.landing-admin .link-button{font-size:15px}@media(max-width:980px){.landing-grid{grid-template-columns:1fr}.header-right{position:static;justify-self:start}.header.login-mode .brand-banner img{max-height:none}}@media(max-width:720px){.landing-page{gap:16px}.choice-card p{min-height:0;font-size:15px}.choice-icon{width:78px;height:78px;font-size:38px}.student-panel .login-card{padding:18px}}
