@import "https://fonts.googleapis.com/css2?family=Fraunces:opsz,wght@9..144,600;9..144,700&family=Nunito:wght@500;700;800&display=swap";:root{--paper:#f3eee3;--ink:#1e2a24;--muted:#5d675e;--line:#d8cfbf;--card:#fffdf7;--g2:#c24a1c;--g2-deep:#8a2f10;--g2-soft:#f4d2bf;--g5:#1a5c49;--g5-deep:#0e3b2e;--g5-soft:#cfe4da;--g6:#1d3557;--g6-deep:#0f2744;--g6-soft:#d5e0ee;--type:#5b3a8c;--type-deep:#3d2462;--type-soft:#e8dff3;--islam:#8a6a24;--islam-deep:#5c4714;--islam-soft:#f3ead0;--stories:#c45c6a;--stories-deep:#8a3140;--stories-soft:#f8dfe3;--know:#1a7a7a;--know-deep:#0f4f4f;--know-soft:#d5efef;--python:#306998;--python-deep:#1f4a6e;--python-soft:#d6e8f5;--good:#2c7a4a;--warn:#9a4a1f;--focus:#1d4e89;--shadow:0 18px 40px #28201214;--radius:22px}*{box-sizing:border-box}html,body,#root{min-height:100%}body{color:var(--ink);background:radial-gradient(1200px 500px at 10% -10%, #c24a1c17, transparent 50%), radial-gradient(900px 420px at 100% 0%, #1a5c491a, transparent 46%), var(--paper);margin:0;font-family:Nunito,Segoe UI,sans-serif;font-size:1.05rem;line-height:1.55}h1,h2,h3{letter-spacing:-.02em;margin:0 0 .45em;font-family:Fraunces,Georgia,serif;line-height:1.15}p{margin:0 0 .8em}a{color:inherit}button,input{font:inherit}.app{max-width:1120px;margin:0 auto;padding:1.25rem 1.2rem 3rem}.skip{background:var(--card);padding:.6rem 1rem;position:absolute;top:0;left:-999px}.skip:focus{z-index:10;left:1rem}.top{justify-content:space-between;align-items:center;gap:1rem;margin-bottom:1rem;display:flex}.brand{align-items:center;gap:.75rem;text-decoration:none;display:flex}.brand strong{font-size:1.15rem;display:block}.brand em{color:var(--muted);font-size:.82rem;font-style:normal;display:block}.brand-mark{background:var(--ink);width:48px;height:48px;color:var(--paper);letter-spacing:.04em;border-radius:16px;place-items:center;font-weight:800;display:grid}.top-nav{border:1px solid var(--line);background:#fffdf7b3;border-radius:18px;flex-wrap:wrap;justify-content:flex-end;gap:.25rem;padding:.3rem;display:flex}.top-nav a{text-align:center;border-radius:999px;min-width:2.1rem;padding:.4rem .65rem;font-size:.88rem;font-weight:800;text-decoration:none}.top-nav a.is-on,.tone-g2 .top-nav a.is-on{background:var(--g2);color:#fff}.tone-g5 .top-nav a.is-on{background:var(--g5);color:#fff}.tone-g6 .top-nav a.is-on{background:var(--g6);color:#fff}.tone-type .top-nav a.is-on{background:var(--type);color:#fff}.tone-islam .top-nav a.is-on{background:var(--islam);color:#fff}.tone-stories .top-nav a.is-on{background:var(--stories);color:#fff}.tone-know .top-nav a.is-on{background:var(--know);color:#fff}.tone-python .top-nav a.is-on{background:var(--python);color:#fff}.crumbs{color:var(--muted);flex-wrap:wrap;gap:.4rem;margin-bottom:1.2rem;font-size:.92rem;display:flex}.crumbs a{color:var(--ink);font-weight:700}.hero-panel{max-width:40rem;padding:.4rem 0 1.4rem}.eyebrow,.kicker{text-transform:uppercase;letter-spacing:.12em;color:var(--muted);margin-bottom:.4rem;font-size:.72rem;font-weight:800}.lede{color:var(--muted);max-width:40rem;font-size:1.15rem}.meta{color:var(--muted);font-size:.92rem}.grade-band{margin:0 0 1.6rem}.band-title{color:var(--muted);margin-bottom:.7rem;font-size:1.05rem}.grade-grid,.subject-grid{grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:1rem;display:grid}.grade-card,.subject-card,.lesson-row,.learn,.ask,.result,.callout{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow)}.grade-card,.subject-card{min-height:14.5rem;padding:1.3rem 1.3rem 1.15rem;text-decoration:none;display:block;position:relative;overflow:hidden}.grade-card:after{content:"";pointer-events:none;background:radial-gradient(circle at 30% 30%,#ffffffb3,#0000 60%);height:160px;position:absolute;inset:auto -20% -40% 40%}.band-primary{background:linear-gradient(#fffdf7,#f8e3d4)}.band-elem{background:linear-gradient(#fffdf7,#dcefe7)}.band-middle{background:linear-gradient(#fffdf7,#d7e2f0)}.band-type{background:linear-gradient(#fffdf7,#e8dff3)}.band-islam{background:linear-gradient(#fffdf7,#f3ead0)}.band-stories{background:linear-gradient(#fffdf7,#f8dfe3)}.band-know{background:linear-gradient(#fffdf7,#d5efef)}.band-python{background:linear-gradient(#fffdf7,#d6e8f5)}.grade-kicker{color:var(--muted);font-size:.8rem;font-weight:800}.go{margin-top:.6rem;font-weight:800;display:inline-block}.band-primary .go{color:var(--g2-deep)}.band-elem .go{color:var(--g5-deep)}.band-middle .go{color:var(--g6-deep)}.band-type .go{color:var(--type-deep)}.band-islam .go{color:var(--islam-deep)}.band-stories .go{color:var(--stories-deep)}.band-know .go{color:var(--know-deep)}.band-python .go{color:var(--python-deep)}.icon-badge{background:var(--g5-soft);border-radius:14px;place-items:center;width:44px;height:44px;margin-bottom:.7rem;font-family:Fraunces,serif;font-weight:700;display:grid}.tone-g2 .icon-badge{background:var(--g2-soft)}.tone-g6 .icon-badge{background:var(--g6-soft)}.tone-type .icon-badge{background:var(--type-soft)}.tone-islam .icon-badge{background:var(--islam-soft)}.tone-stories .icon-badge{background:var(--stories-soft)}.tone-know .icon-badge{background:var(--know-soft)}.tone-python .icon-badge{background:var(--python-soft)}.how{border:1px dashed var(--line);border-radius:var(--radius);background:#fffdf78c;margin-top:2rem;padding:1.2rem 1.3rem}.how ol{margin:0;padding-left:1.2rem}.how li{margin:.45rem 0}.page-head{margin-bottom:1rem}.stack{gap:1rem;display:grid}.lesson-list{gap:.9rem;margin:0;padding:0;list-style:none;display:grid}.lesson-row{gap:.9rem;padding:1.1rem 1.15rem;display:grid}.lesson-row h2{font-size:1.35rem}.lesson-row h2 a{text-decoration:none}.lesson-actions{flex-wrap:wrap;align-items:center;gap:.5rem;display:flex}.outcome{color:var(--muted);border-left:3px solid var(--line);padding-left:.7rem;font-size:.92rem}.btn,.choice{background:var(--ink);color:#fff;cursor:pointer;border:0;border-radius:999px;justify-content:center;align-items:center;min-height:44px;padding:.7rem 1.1rem;font-weight:800;text-decoration:none;display:inline-flex}.btn.ghost,.choice{color:var(--ink);border:1px solid var(--line);background:#fff}.tone-g2 .btn:not(.ghost){background:var(--g2)}.tone-g5 .btn:not(.ghost){background:var(--g5)}.tone-g6 .btn:not(.ghost){background:var(--g6)}.tone-type .btn:not(.ghost){background:var(--type)}.tone-islam .btn:not(.ghost){background:var(--islam)}.tone-stories .btn:not(.ghost){background:var(--stories)}.tone-know .btn:not(.ghost){background:var(--know)}.tone-python .btn:not(.ghost){background:var(--python)}.toolbar{flex-wrap:wrap;gap:.5rem;margin-top:1rem;display:flex}.learn,.ask,.result{padding:1.35rem 1.3rem 1.4rem}.hook{font-size:1.18rem}.points{padding-left:1.15rem}.points li{margin:.45rem 0}.callout{box-shadow:none;margin:.9rem 0;padding:.95rem 1rem}.callout.try{background:#f7f1e4}.code-block{color:#e8f1f8;background:#1b2833;border-radius:14px;margin:.7rem 0 0;padding:.95rem 1.05rem;font-family:ui-monospace,Cascadia Code,Consolas,monospace;font-size:.92rem;line-height:1.55;overflow-x:auto}.code-block code{font:inherit}.choice.is-code{font-family:ui-monospace,Cascadia Code,Consolas,monospace;font-size:.95rem}.choices{gap:.55rem;display:grid}.choice{text-align:left;border-radius:16px;justify-content:flex-start}.choice.is-right{border-color:var(--good);background:#e5f5ea}.choice.is-wrong{border-color:var(--warn);background:#fde8e3}.choice:disabled{cursor:default}.short-form label{gap:.3rem;font-weight:700;display:grid}.short-form input{border:1px solid var(--line);background:#fff;border-radius:14px;min-height:48px;padding:.75rem .9rem}.short-form{gap:.7rem;max-width:26rem;display:grid}.feedback{border-radius:16px;margin-top:1rem;padding:.9rem 1rem}.feedback.is-good{background:#e5f5ea}.feedback.is-try{background:#fff3d8}.meter,.progress-thin{background:#1e2a2414;border-radius:999px;height:10px;margin:.7rem 0 .4rem;overflow:hidden}.meter span,.progress-thin span{background:var(--g5);height:100%;display:block}.tone-g2 .meter span,.tone-g2 .progress-thin span,.band-primary .meter span{background:var(--g2)}.tone-g6 .meter span,.tone-g6 .progress-thin span,.band-middle .meter span{background:var(--g6)}.tone-type .meter span,.tone-type .progress-thin span,.band-type .meter span{background:var(--type)}.tone-islam .meter span,.tone-islam .progress-thin span,.band-islam .meter span{background:var(--islam)}.tone-stories .meter span,.tone-stories .progress-thin span,.band-stories .meter span{background:var(--stories)}.tone-know .meter span,.tone-know .progress-thin span,.band-know .meter span{background:var(--know)}.tone-python .meter span,.tone-python .progress-thin span,.band-python .meter span{background:var(--python)}.progress-thin{height:8px}.stars{letter-spacing:.12em;font-size:1.15rem}.star{color:#d7d0c4}.star.is-on{color:#d39a1a}.who-bar{border:1px solid var(--line);background:#fffdf7bf;border-radius:16px;justify-content:space-between;align-items:center;gap:.8rem;margin:0 0 1rem;padding:.55rem .85rem;display:flex}.who-bar p{color:var(--muted);margin:0}.who-bar .btn{min-height:36px;padding:.25rem .8rem}.login-wrap{place-items:start center;padding:1.5rem 0 3rem;display:grid}.login-card{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);width:min(28rem,100%);box-shadow:var(--shadow);padding:1.5rem 1.4rem 1.6rem}.login-form{gap:.85rem;display:grid}.login-form label{gap:.3rem;font-weight:700;display:grid}.login-form input{border:1px solid var(--line);background:#fff;border-radius:14px;min-height:48px;padding:.75rem .9rem;font-weight:500}.admin-courses{gap:.35rem;margin:.8rem 0 0;padding:0;font-size:.92rem;list-style:none;display:grid}.admin-courses li{color:var(--muted);justify-content:space-between;gap:.8rem;display:flex}.foot{color:var(--muted);border-top:1px solid var(--line);margin-top:2.4rem;padding-top:1rem;font-size:.88rem}.worksheet,.pack-cover,.answer-key{border:1px solid var(--line);background:#fff;border-radius:12px;margin:1rem 0;padding:1.3rem}.sheet-items{padding-left:0;list-style:none}.sheet-items li{break-inside:avoid;margin:0 0 1.2rem}.write-line{border-bottom:1px solid #cfc6b6;height:1.4rem;margin-top:.35rem}.name-line{margin-top:1.5rem;font-weight:700}.key-block li{gap:.2rem;margin-bottom:.6rem;display:grid}.listen-bar{flex-wrap:wrap;align-items:center;gap:.65rem;margin:.4rem 0 1rem;display:flex}.listen-btn.is-on{background:var(--ink);color:#fff;border-color:var(--ink)}.listen-hint{color:var(--muted);font-size:.88rem}.read-aloud{border:1px solid var(--line);background:#f7f1e4;border-radius:18px;margin:1rem 0;padding:1rem 1.05rem .85rem}.islam-hadith{background:var(--islam-soft);border-color:#e0d2a8}.passage{max-width:40rem;font-size:1.15rem;line-height:1.7}.story-reader .story-progress{color:var(--muted);margin:.15rem 0 .55rem;font-weight:700}.story-dots{flex-wrap:wrap;gap:.35rem;margin:0 0 .7rem;padding:0;list-style:none;display:flex}.story-dots button{border:1px solid var(--line);cursor:pointer;background:#fff;border-radius:99px;width:.72rem;height:.72rem;padding:0}.story-dots button.is-on{background:var(--ink);border-color:var(--ink)}.story-para{min-height:6.5rem;margin:.2rem 0 .85rem}.story-nav{flex-wrap:wrap;gap:.55rem;margin:.2rem 0 .7rem;display:flex}.story-nav .btn:disabled{opacity:.45;cursor:not-allowed}.story-shelf{grid-template-columns:repeat(auto-fill,minmax(168px,1fr));gap:.85rem;display:grid}.story-cover{background:var(--card);border:1px solid var(--line);box-shadow:var(--shadow);border-radius:18px;gap:.45rem;min-height:12.5rem;padding:.55rem .55rem .7rem;text-decoration:none;transition:transform .25s,box-shadow .25s;display:grid}.story-cover:hover,.story-cover:focus-visible{transform:translateY(-4px)rotate(-.6deg);box-shadow:0 22px 36px #2820121f}.story-cover strong{font-family:Fraunces,Georgia,serif;font-size:1rem;line-height:1.2}.story-cover em{color:var(--muted);font-size:.8rem;font-style:normal;font-weight:700}.story-cover.is-read{outline:2px solid var(--stories-soft)}.story-cover .scene-stage{border-radius:12px;height:108px;min-height:108px}.storybook-spread{align-items:stretch;gap:1rem;transition:transform .22s,opacity .22s;display:grid}.storybook-spread.is-turning{opacity:.35;transform:rotateY(8deg)scale(.98)}.storybook-panel{border:1px solid var(--line);background:#fffdf9;border-radius:18px;padding:1rem 1.05rem .85rem}.story-lesson h2{font-size:1.15rem}.scene-stage{border:1px solid var(--line);perspective:980px;background:#1b2430;border-radius:18px;min-height:220px;position:relative;overflow:hidden}.scene-stage-inner{transform-style:preserve-3d;animation:11s ease-in-out infinite scene-tilt;position:absolute;inset:-8%}.scene-art{object-fit:cover;filter:saturate(1.08)contrast(1.04);width:100%;height:100%;animation:16s ease-in-out infinite scene-drift;display:block;transform:scale(1.16)}.scene-glow{pointer-events:none;background:linear-gradient(115deg,#0000 30%,#ffffff38 48%,#0000 62%);animation:7s ease-in-out infinite scene-shine;position:absolute;inset:-20%}.scene-spark{pointer-events:none;background:#ffecaae6;border-radius:50%;width:10px;height:10px;animation:3.6s ease-in-out infinite scene-spark;position:absolute;box-shadow:0 0 12px #ffdc78e6}.scene-spark-a{top:18%;left:16%}.scene-spark-b{width:7px;height:7px;animation-delay:-1.2s;top:28%;right:18%}.scene-spark-c{width:6px;height:6px;animation-delay:-2.1s;bottom:24%;left:42%}@keyframes scene-tilt{0%,to{transform:rotateY(-7deg)rotateX(3deg)translateZ(0)}50%{transform:rotateY(7deg)rotateX(-2deg)translateZ(12px)}}@keyframes scene-drift{0%,to{transform:scale(1.16)translate(-2.4%,-1.2%)}50%{transform:scale(1.24)translate(2.6%,1.4%)}}@keyframes scene-shine{0%,to{opacity:.15;transform:translate(-18%)rotate(8deg)}50%{opacity:.45;transform:translate(18%)rotate(8deg)}}@keyframes scene-spark{0%,to{opacity:.15;transform:translateY(0)scale(.7)}50%{opacity:1;transform:translateY(-10px)scale(1.15)}}@media (width>=800px){.storybook-spread{grid-template-columns:minmax(220px,.9fr) 1.2fr}.scene-stage{min-height:300px}.know-explorer{grid-template-columns:minmax(220px,.9fr) 1.2fr}.know-scene .scene-stage{min-height:300px}}.know-chips{flex-wrap:wrap;gap:.4rem;display:flex}.know-chip{border:1px solid var(--line);cursor:pointer;background:#fff;border-radius:999px;min-height:40px;padding:.45rem .8rem;font-size:.85rem;font-weight:800}.know-chip.is-on{background:var(--know);color:#fff;border-color:var(--know)}.know-explorer{align-items:stretch;gap:1rem;transition:transform .18s,opacity .18s;display:grid}.know-explorer.is-turning{opacity:.4;transform:rotateY(8deg)scale(.98)}.know-scene{border-radius:18px;position:relative;overflow:hidden}.know-scene .scene-stage{border:0;min-height:200px}.know-flip-inner{display:grid}.know-face{border:1px solid var(--line);background:#fffdf9;border-radius:18px;grid-area:1/1;padding:1rem 1.05rem .85rem;transition:opacity .4s,transform .4s}.know-front{align-content:start;gap:.55rem;display:grid}.know-back{opacity:0;pointer-events:none;transform:rotateY(10deg)scale(.97)}.know-flip.is-flipped .know-front{opacity:0;pointer-events:none;transform:rotateY(-10deg)scale(.97)}.know-flip.is-flipped .know-back{opacity:1;pointer-events:auto;transform:none}.know-prompt{color:var(--muted);font-weight:700}.know-nav{margin-top:.2rem}.kbook-featured{grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:1rem;margin:0 0 1.1rem;display:grid}.kbook-cover-card{border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);background:linear-gradient(#fffdf7,#f8e3d4);gap:.35rem;min-height:16rem;padding:.7rem .75rem 1rem;text-decoration:none;display:grid}.kbook-cover-card h2{font-size:1.45rem}.kbook-cover-art{background:#1b2430;border-radius:16px;height:168px;display:block;overflow:hidden}.kbook-cover-art img{object-fit:cover;width:100%;height:100%}.kbook-grid{grid-template-columns:repeat(auto-fill,minmax(128px,1fr));gap:.75rem;display:grid}.kbook-tile{background:var(--card);border:1px solid var(--line);box-shadow:var(--shadow);text-align:center;border-radius:18px;gap:.28rem;padding:.45rem .45rem .65rem;text-decoration:none;transition:transform .22s;display:grid}.kbook-tile:hover,.kbook-tile:focus-visible{transform:translateY(-3px)}.kbook-thumb{background:#1b2430;border-radius:12px;height:96px;display:block;overflow:hidden}.kbook-thumb img{object-fit:cover;width:100%;height:100%}.kbook-tile strong{font-family:Fraunces,Georgia,serif;font-size:1.45rem;line-height:1}.kbook-tile em{color:var(--muted);font-size:.78rem;font-style:normal;font-weight:700}.kbook-tile.is-seen{outline:2px solid var(--g2-soft)}.kbook-spread{align-items:stretch;gap:1rem;transition:transform .22s,opacity .22s;display:grid}.kbook-page.is-turning .kbook-spread{opacity:.35;transform:rotateY(8deg)scale(.98)}.kbook-art-wrap{gap:.35rem;display:grid}.kbook-tap{color:var(--muted);margin:0;font-size:.88rem;font-weight:800}.kbook-art{cursor:pointer;background:0 0;border:0;border-radius:18px;width:100%;padding:0;display:block}.kbook-art .scene-stage{min-height:260px}.kbook-panel{border:1px solid var(--line);background:#fffdf9;border-radius:18px;padding:1rem 1.05rem .85rem}.kbook-letter{color:var(--g2);margin:0 0 .15rem;font-family:Fraunces,Georgia,serif;font-size:clamp(4.5rem,12vw,7.5rem);line-height:.85}.kbook-sound{color:var(--g2-deep);font-size:1.15rem;font-weight:800}.learn-k{font-size:1.18rem}.learn-k h1{font-size:clamp(2rem,5vw,2.7rem)}.learn-k .points{font-size:1.2rem}.learn-k .scene-stage{min-height:240px;margin-bottom:1rem}@media (width>=800px){.kbook-spread{grid-template-columns:minmax(240px,1fr) 1.1fr}.kbook-art .scene-stage{min-height:340px}.learn-k .scene-stage{min-height:300px}}@media (prefers-reduced-motion:reduce){.scene-stage-inner,.scene-art,.scene-glow,.scene-spark{animation:none}.kbook-page.is-turning .kbook-spread,.kbook-tile{opacity:1;transition:none;transform:none}}.level-title{align-items:baseline;gap:.7rem;margin:.4rem 0 .7rem;font-size:1.25rem;display:flex}.level-title span{color:var(--muted);letter-spacing:.04em;text-transform:uppercase;font-family:Nunito,sans-serif;font-size:.85rem;font-weight:700}.kb{border:1px solid var(--line);background:#f7f1e4;border-radius:18px;margin:1rem 0 .4rem;padding:.85rem .7rem .55rem}.kb-row{justify-content:center;gap:.28rem;margin:.28rem 0;display:flex}.kb-row-1{padding-left:.9rem}.kb-row-2{padding-left:1.8rem}.kb-key{border:1px solid var(--line);text-transform:uppercase;background:#fff;border-radius:8px;justify-content:center;align-items:center;min-width:1.85rem;height:2.05rem;padding:0 .28rem;font-size:.82rem;font-weight:800;display:inline-flex;position:relative}.kb-key.is-dim{opacity:.38}.kb-key.is-active{background:var(--type-soft);box-shadow:0 0 0 3px var(--type)}.kb-space{text-transform:none;flex:1;min-width:5.5rem;max-width:16rem}.kb-shift{text-transform:none;min-width:3.6rem;font-size:.68rem}.kb-bump{background:var(--ink);border-radius:99px;width:4px;height:4px;position:absolute;bottom:4px}.finger-lp{border-bottom:3px solid #c45c26}.finger-lr{border-bottom:3px solid #d39a1a}.finger-lm{border-bottom:3px solid #2c7a4a}.finger-li{border-bottom:3px solid #1d4e89}.finger-ri{border-bottom:3px solid #5b3a8c}.finger-rm{border-bottom:3px solid #1a5c49}.finger-rr{border-bottom:3px solid #9a4a1f}.finger-rp{border-bottom:3px solid #1d3557}.finger-th{border-bottom:3px solid #5d675e}.kb-hint{text-align:center;color:var(--muted);margin:.55rem 0 .15rem;font-size:.9rem}.type-stats{color:var(--muted);font-weight:800}.type-target{letter-spacing:.03em;border:1px solid var(--line);word-break:break-word;background:#fff;border-radius:16px;padding:.85rem .95rem;font-family:ui-monospace,Consolas,monospace;font-size:1.45rem;line-height:1.85}.type-target .is-ok{color:var(--good)}.type-target .is-bad{color:var(--warn);background:#fde8e3}.type-target .is-now{border-bottom:3px solid var(--type);background:var(--type-soft)}.type-target .is-wait{color:var(--muted)}.type-field{gap:.3rem;margin:.9rem 0;font-weight:700;display:grid}.type-field input{border:1px solid var(--line);background:#fff;border-radius:14px;min-height:52px;padding:.8rem .95rem;font-family:ui-monospace,Consolas,monospace;font-size:1.15rem}.type-drill.is-miss .type-field input{border-color:var(--warn);background:#fff6f3}@media (width>=800px){.lesson-row{grid-template-columns:1fr auto;align-items:center}}@media (width<=640px){body{font-size:1rem}.top{flex-direction:column;align-items:flex-start}h1{font-size:1.7rem}}@media print{body{background:#fff}.no-print,.top,.crumbs,.foot,.skip{display:none!important}.app{max-width:none;padding:0}.worksheet,.pack-cover,.answer-key{box-shadow:none;break-after:page;border:0;border-radius:0}}
