:root{--blue:#0668e8;--navy:#143b75;--yellow:#ffdf09;--orange:#ffad24;--purple:#6951d9;--pink:#ff7ea6;--mint:#42c9ae;--cream:#fff8d7;--ink:#223858;--muted:#687c97;--shadow:0 17px 44px rgba(39,80,138,.12);--r:25px}
*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;color:var(--ink);font-family:ui-rounded,"Arial Rounded MT Bold","Nunito",system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;background:radial-gradient(circle at 6% 12%,#fff3a1 0,transparent 23%),radial-gradient(circle at 90% 5%,#d0ecff 0,transparent 28%),linear-gradient(145deg,#fff8db,#fffdf4 60%,#e6f8ff);min-height:100vh}button,input,select{font:inherit}button{cursor:pointer}img{max-width:100%}button:focus-visible,input:focus-visible,select:focus-visible{outline:3px solid #c19bff;outline-offset:3px}.app{max-width:1120px;margin:auto;padding:0 23px}.sky-decoration{pointer-events:none;position:fixed;inset:0;z-index:-1;overflow:hidden}.star{position:absolute;opacity:.62;color:#f3ae05;font:700 60px system-ui;animation:twinkle 3s ease-in-out infinite}.s1{left:3%;top:19%}.s2{left:92%;top:27%;animation-delay:.7s;color:#a4caff}.s3{left:13%;top:82%;animation-delay:1.3s;color:#f6b8e2}.s4{left:81%;top:89%;animation-delay:.5s;color:#fdd33f}.s5{left:94%;top:68%;animation-delay:1.8s;color:#b3addb}@keyframes twinkle{50%{transform:translateY(-9px) scale(1.14);opacity:1}}
.topbar{display:flex;align-items:center;gap:12px;justify-content:space-between;padding:23px 0 18px}.brand{background:#fff;border:2px solid #e6edfc;border-radius:15px;padding:7px 13px;display:flex;align-items:center;box-shadow:0 6px 18px #1036710d}.brand img{width:155px;height:37px;object-fit:contain}.top-pill{color:#574a8d;background:#f4ecff;border:1px solid #dcd0ff;font-weight:900;border-radius:50px;padding:12px 18px;letter-spacing:.2px}.top-pill small{font-size:.7em;color:#9785b5;margin-left:8px}.top-help{color:#345a84;background:white;border:1px solid #e1eaff;border-radius:16px;font-weight:750;padding:10px 15px}.page-footer{margin:35px 0 23px;border-top:1px dashed #d5e1ec;padding-top:15px;color:#7890a8;font-size:12px;display:flex;justify-content:space-between;gap:15px;flex-wrap:wrap}
h1,h2,h3,p{margin-top:0}.landing-hero{display:grid;grid-template-columns:1.17fr .83fr;align-items:center;border:3px solid #fff;background:radial-gradient(circle at 84% 30%,#fff2a3,transparent 28%),linear-gradient(118deg,#e4f2ff 0%,#fffbda 74%);border-radius:39px;padding:35px 36px;min-height:355px;box-shadow:var(--shadow);position:relative;overflow:hidden}.hero-copy{position:relative;z-index:2}.kicker{display:inline-flex;gap:7px;align-items:center;background:#fff;border:1px solid #d5e7ff;color:var(--blue);padding:8px 13px;border-radius:50px;font-size:12px;font-weight:900;letter-spacing:.7px;text-transform:uppercase}.landing-hero h1{font-size:clamp(34px,5vw,58px);line-height:1.075;letter-spacing:-1.7px;color:#074fbd;margin:22px 0 16px;text-shadow:0 2px 0 #fff}.landing-hero h1 em{display:inline-block;font-style:normal;color:#f9a100}.hero-sub{font-size:16px;color:#4a6985;line-height:1.7;max-width:490px}.hero-toki{position:relative;display:flex;justify-content:center;align-items:flex-end;min-height:270px}.hero-toki:before{content:"";width:300px;height:300px;background:linear-gradient(135deg,#fffacd,#fff4a9);border-radius:50%;position:absolute;top:0;box-shadow:inset 0 0 0 12px #ffffffa0}.hero-toki img{height:285px;width:auto;object-fit:contain;position:relative;z-index:2;filter:drop-shadow(0 14px 6px #b57b1e25);animation:bob 3s ease-in-out infinite}.float-badge{position:absolute;z-index:3;right:5px;top:45px;background:white;border-radius:20px;padding:11px 17px;box-shadow:0 10px 25px #315b8a20;font-size:13px;font-weight:900;color:#7b54c2;transform:rotate(7deg)}.float-badge.two{right:auto;left:5%;top:auto;bottom:33px;transform:rotate(-9deg);color:#0e99a0}@keyframes bob{50%{transform:translateY(-11px)}}
.btn{border:0;border-radius:18px;padding:14px 23px;font-weight:950;display:inline-flex;align-items:center;justify-content:center;gap:8px;box-shadow:0 6px 0 #00000012;transition:transform .15s,box-shadow .15s;text-decoration:none}.btn:hover:not(:disabled){transform:translateY(-3px);box-shadow:0 9px 0 #0000000e}.btn:active:not(:disabled){transform:translateY(1px)}.btn:disabled{opacity:.45;cursor:not-allowed}.btn-primary{background:var(--blue);color:white}.btn-yellow{background:var(--yellow);color:#184983}.btn-ghost{background:white;color:var(--blue);border:1px solid #d1dff6;box-shadow:0 5px 0 #dceafc}.btn-purple{background:var(--purple);color:white}.btn-small{padding:10px 15px;border-radius:13px;font-size:13px}.action-row{display:flex;gap:12px;flex-wrap:wrap}.heading-row{display:flex;align-items:center;gap:12px;justify-content:space-between;margin:29px 2px 17px}.heading-row h2{margin:0;color:#114f9a;font-size:23px}.heading-row p{margin:0;color:#8095b1;font-size:13px}.worlds{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:15px}.world{position:relative;text-align:left;border:2px solid #fff;background:#fff;border-radius:25px;min-height:151px;padding:18px 18px 18px 20px;box-shadow:0 8px 26px #28578711;transition:transform .2s,box-shadow .2s}.world:hover{transform:translateY(-5px);box-shadow:0 14px 30px #28578722}.world:after{content:'↗';position:absolute;right:16px;bottom:14px;color:#8aa4c6;font-weight:900}.world .world-icon{display:inline-flex;align-items:center;justify-content:center;width:54px;height:54px;border-radius:17px;font-size:26px;background:var(--worldbg)}.world .world-label{display:block;font-size:15px;margin:12px 0 4px;font-weight:950;color:#204a7a}.world .world-count{display:block;font-size:12px;font-weight:700;color:#8a9aad}.world[data-theme="a"]{--worldbg:#e9e0ff}.world[data-theme="b"]{--worldbg:#d8f5ff}.world[data-theme="c"]{--worldbg:#fff1bd}.world[data-theme="d"]{--worldbg:#ffe6ed}.world[data-theme="e"]{--worldbg:#d8f7e8}.world[data-theme="f"]{--worldbg:#ffead8}
.lower-row{display:grid;grid-template-columns:1fr .9fr;gap:18px;margin-top:22px}.panel{background:white;border:2px solid #fff;border-radius:27px;box-shadow:var(--shadow);padding:21px}.panel h3{font-size:18px;color:#24578d;margin-bottom:12px}.field{display:flex;flex-direction:column;gap:7px;font-size:12px;font-weight:800;color:#536d91}.field input,.field select{border:2px solid #dfe9f7;border-radius:13px;padding:12px 14px;width:100%;background:#fbfdff;color:#214d78;outline:none}.field input:focus,.field select:focus{border-color:#7fbbff}.test-select{display:flex;gap:10px}.test-select select{flex:1}.referral{display:flex;align-items:center;gap:14px;background:linear-gradient(120deg,#fff9d9,#f0faff);border:1px dashed #d5dcf0;border-radius:19px;padding:14px}.referral img{height:116px;width:116px;object-fit:contain;background:white;border-radius:13px;padding:5px;flex-shrink:0}.referral b{display:block;color:#1563bb;font-size:14px}.referral p{margin:6px 0 10px;color:#69819c;font-size:12px;line-height:1.55}.parent-note{font-size:11px;color:#8a92a3;line-height:1.5;margin-top:10px}
.quiz-shell{max-width:850px;margin:5px auto}.quiz-bar{display:flex;gap:12px;align-items:center;justify-content:space-between;margin:14px 0 14px;font-weight:900;color:#6a7d99}.quiz-crumb{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.quiz-counter{font-variant-numeric:tabular-nums;background:white;border:1px solid #dce8f8;padding:9px 13px;border-radius:50px}.progress-track{background:#e9eff6;border:3px solid white;height:17px;overflow:hidden;border-radius:30px;box-shadow:inset 0 2px 5px #b3bdca40}.progress-fill{background:linear-gradient(90deg,#00c7af,#54d99a,#ffd21e);height:100%;border-radius:30px;transition:width .35s}.quiz-card{margin-top:18px;background:#fff;border:3px solid #fff;border-radius:30px;padding:26px;box-shadow:0 20px 65px #1b5a9a18;position:relative;overflow:hidden}.category-head{display:flex;justify-content:space-between;gap:13px;align-items:center}.cat-chip{background:#edf5ff;color:#1b68c1;border-radius:30px;padding:9px 13px;font-weight:900;font-size:12px}.quest-num{font-weight:900;color:#a2b1c2;font-size:13px}.prompt{font-size:clamp(22px,3.25vw,29px);line-height:1.45;color:#1a4d86;margin:23px 0 22px;white-space:pre-wrap;font-weight:900;letter-spacing:-.3px}.passage{margin:17px 0 10px;background:#f4faff;border:1px solid #cfe7fc;border-left:5px solid #ffd119;padding:17px 20px;border-radius:15px;white-space:pre-line;color:#2c5d85;line-height:1.8;font-size:15px}.options{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.option{border:2px solid #dbe9f6;border-radius:18px;background:#f9fcff;display:flex;text-align:left;align-items:center;gap:13px;min-height:66px;padding:11px 15px;color:#315779;font-size:17px;font-weight:850;transition:background .16s,border-color .16s,transform .16s}.option:hover:not(:disabled){transform:translateY(-2px);background:#f3f9ff}.option .letter{display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;background:white;border:1px solid #cbdff5;width:34px;height:34px;border-radius:11px;color:#478ad1;font-weight:950}.option.selected{border-color:var(--blue);background:#eaf4ff;box-shadow:0 0 0 2px #1672f019 inset}.option.correct{border-color:#1ecaa6;background:#e9fff3}.option.wrong{border-color:#f48f9d;background:#fff0f2}.option:disabled{cursor:default}.option .choice-pic{width:100%;max-height:88px;object-fit:contain;display:block;margin:5px auto}.option.picture-opt{display:block;text-align:center;min-height:150px}.option.picture-opt .letter{margin:0 auto 8px}.option.picture-opt .choice-word{font-size:13px}.listening-box{background:linear-gradient(125deg,#eef5ff,#f9eeff);border:2px dashed #cfdcfd;border-radius:18px;padding:17px;margin-bottom:17px;display:flex;align-items:center;justify-content:space-between;gap:12px}.speaker{font-size:35px;background:white;border-radius:15px;padding:11px}.listen-info{flex:1}.listen-info b{display:block;color:#355d9a}.listen-info small{display:block;color:#7992b0;margin-top:5px}.audio-btn{background:#096de7;color:white;border:0;border-radius:14px;padding:13px 18px;font-size:14px;font-weight:950}.audio-btn:hover{filter:brightness(1.08)}.text-answer{border:2px solid #d6e6fa;border-radius:15px;padding:16px 18px;width:100%;font-size:20px;outline:none}.text-answer:focus{border-color:var(--blue)}.word-tray{background:#f6f8fb;border:1px dashed #ccd9e7;border-radius:15px;display:flex;flex-wrap:wrap;gap:8px;padding:14px;margin:12px 0}.word-token{border:1px solid #cfddec;color:#285687;background:white;padding:10px 13px;border-radius:12px;font-size:17px;font-weight:900}.word-token:hover:not(:disabled){background:#e6f4ff}.word-token.used{opacity:.25}.word-built{min-height:62px;border-bottom:3px dashed #b4d6e7;display:flex;flex-wrap:wrap;gap:7px;align-items:center;padding:9px 3px}.word-built .word-token{background:#dff2ff}.quiz-controls{display:flex;flex-wrap:wrap;justify-content:space-between;gap:10px;margin-top:23px}.feedback{margin:18px 0 0;padding:17px 19px;border-radius:17px;line-height:1.65;border:2px solid #bfead9;background:#f0fff7;color:#205e4d}.feedback.bad{border-color:#ffd4ce;background:#fff7ee;color:#76513b}.feedback b{display:block;font-size:18px;margin-bottom:3px}.feedback small{color:#5c7d88;display:block;margin-top:6px}.feedback .source{color:#91a3b7;font-size:11px;margin-top:7px}
.result-head{text-align:center;background:linear-gradient(130deg,#fff3c2,#e8f6ff);border:3px solid white;border-radius:34px;padding:27px 18px;margin:18px 0 23px;box-shadow:var(--shadow)}.result-toki{height:134px;width:auto;object-fit:contain;display:block;margin:0 auto 4px}.result-title{font-size:31px;color:#1357a6;margin:5px 0}.score-big{font-size:clamp(48px,7vw,73px);font-weight:1000;color:#1068db;letter-spacing:-3px;line-height:1.1}.score-big small{font-size:20px;color:#6b93b4;letter-spacing:0}.result-caption{color:#5c809a;margin-top:11px}.stat-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:13px}.stat-card{background:white;border-radius:18px;border:1px solid #dfebfa;padding:19px 15px;text-align:center;box-shadow:0 8px 22px #0d52820b}.stat-card strong{font-size:27px;color:#0a67de;display:block}.stat-card span{color:#8291a4;font-size:12px;font-weight:800}.section-title{font-size:21px;color:#124e97;margin:30px 0 14px}.skill-list{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.skill-card{background:white;border:1px solid #e5edf8;border-radius:18px;padding:16px}.skill-card header{display:flex;align-items:center;justify-content:space-between;gap:7px;font-size:13px;font-weight:900}.skill-card header span{color:#1169d5}.small-track{height:9px;border-radius:50px;background:#e8eef6;overflow:hidden;margin:12px 0 7px}.small-track div{height:100%;background:linear-gradient(90deg,#71d5bf,#2dbf96);border-radius:50px}.skill-card p{font-size:11px;color:#8095a8;margin:0}.review-item{background:white;border:1px solid #e7edf6;border-radius:18px;padding:18px;margin:10px 0}.review-item summary{cursor:pointer;font-weight:900;color:#305a80;line-height:1.55}.review-item .review-body{margin-top:12px;color:#4c6683;font-size:14px;line-height:1.75}.ansbad{color:#db5970}.ansgood{color:#1d9d7c}.review-body .example{margin-top:7px;background:#f3f8ff;border-radius:10px;padding:9px 12px}.result-actions{display:flex;gap:11px;flex-wrap:wrap;justify-content:center;margin:27px auto}
.modal-overlay{position:fixed;z-index:50;inset:0;background:#12335e91;display:grid;place-items:center;padding:18px}.hidden{display:none!important}.modal-panel{width:min(95vw,580px);position:relative;border-radius:25px;background:white;padding:30px;box-shadow:0 30px 80px #142b5680;max-height:86vh;overflow:auto}.modal-panel h2{color:#165aa8}.modal-panel p,.modal-panel li{line-height:1.75;color:#637b93}.close{position:absolute;right:20px;top:16px;background:#f0f5fb;border:0;border-radius:50%;width:34px;height:34px;font-size:24px;color:#7691b3}.tiny{font-size:12px;color:#8b9cab}.report-lead{font-size:16px;color:#6b8498}.challenge-sticker{margin:16px auto;display:inline-flex;background:#eefaff;border:2px solid white;padding:8px 13px;border-radius:25px;color:#167ac0;font-size:13px;font-weight:950}.swoosh{position:relative}.swoosh:after{content:' ';position:absolute;height:6px;background:#ffe141;bottom:-8px;left:1%;right:6%;border-radius:70%}
@media(max-width:760px){.topbar{padding-top:13px}.brand img{width:118px;height:30px}.top-pill{font-size:11px;padding:9px 12px}.top-pill small{display:none}.top-help{padding:8px}.top-help span{display:none}.landing-hero{grid-template-columns:1fr;text-align:center;padding:28px 22px;min-height:0}.hero-copy{order:2}.hero-sub{margin:auto auto 20px}.hero-toki{order:1;min-height:170px}.hero-toki:before{width:187px;height:187px;top:0}.hero-toki img{height:181px}.float-badge{font-size:11px;top:20px;right:15%}.float-badge.two{left:12%;bottom:20px}.landing-hero h1{font-size:37px;margin:12px 0}.action-row{justify-content:center}.worlds{grid-template-columns:repeat(2,minmax(0,1fr))}.lower-row{grid-template-columns:1fr}.world{padding:13px 14px;min-height:144px}.quiz-card{padding:18px 14px}.quiz-shell{margin-top:0}.prompt{font-size:22px}.option{font-size:15px;gap:8px;padding:11px}.option .letter{width:28px;height:28px}.quiz-controls .btn{flex:1}.skill-list{grid-template-columns:1fr}}@media(max-width:420px){.app{padding:0 12px}.top-pill{display:none}.landing-hero{border-radius:23px}.world .world-label{font-size:13px}.referral img{width:93px;height:93px}.referral{padding:9px}.options{grid-template-columns:1fr}.options.has-pictures{grid-template-columns:repeat(2,minmax(0,1fr))}.stat-grid{gap:6px}.stat-card{padding:13px 3px}.stat-card strong{font-size:23px}.quiz-card{border-radius:23px}.feedback{padding:13px}.quiz-controls{gap:8px}.result-title{font-size:25px}}@media print{body{background:white}.topbar,.page-footer,.sky-decoration,.result-actions,#qrFileInput,.top-help{display:none!important}.app{max-width:none}.review-item{break-inside:avoid}.review-item .review-body{display:block!important}details.review-item{open:true}}
.vocab-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px}.vocab-card{background:white;border:1px solid #deebf6;border-radius:15px;padding:13px;min-width:0}.vocab-card b{color:#0964c9;font-size:17px;display:block}.vocab-card span{color:#3c5976;font-size:13px;display:block;margin:7px 0}.vocab-card small{font-size:10px;color:#91a5b8}.grammar-list{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.grammar-item{background:#fffef4;border:1px solid #f9e9ba;border-radius:15px;padding:17px}.grammar-item b{color:#8656bc}.grammar-item p{font-size:14px;color:#586f82;line-height:1.7;margin:9px 0 0}@media(max-width:760px){.vocab-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.grammar-list{grid-template-columns:1fr}}
