:root{font-family:ui-rounded,'Trebuchet MS',system-ui,sans-serif;color:#452453;background:#251336}*{box-sizing:border-box}body{margin:0}button,input,select{font:inherit}button{cursor:pointer}button:focus-visible{outline:4px solid #ffd55e;outline-offset:3px}.shell{min-height:100vh;background:radial-gradient(ellipse at 60% 0%,#76509b 0%,#38234e 55%,#21132d 100%);padding:18px}.frame{max-width:1200px;margin:auto}.top{display:flex;justify-content:space-between;align-items:center;gap:15px;margin-bottom:18px}.wordmark{font-family:ui-rounded,'Trebuchet MS',system-ui,sans-serif;font-weight:900;line-height:.92;font-size:clamp(27px,3.5vw,45px);letter-spacing:-1.5px;color:#fff1c9;background:none;border:0;text-align:left;text-shadow:0 4px 0 #5b2b70,0 6px 12px #1d082b}.wordmark span{display:block;color:#ffbce4}.top nav{display:flex;gap:10px}.top nav button{border:2px solid #ffdfa4;border-radius:18px;padding:12px 18px;color:#5e3576;background:linear-gradient(#fff8e6,#f6d9a9);box-shadow:0 5px 0 #b77e7c;font-weight:800}.navicon{font-size:22px;vertical-align:middle;margin-right:5px}.home{background:linear-gradient(150deg,#744d91,#ac75bd 55%,#d3a1d7);border:4px solid #eac68b;border-radius:30px;box-shadow:0 18px 60px #140a2188;padding:24px;position:relative;overflow:hidden}.home:before{content:'';position:absolute;inset:0;background:radial-gradient(circle at 20% 25%,#ffe5a055,transparent 35%),radial-gradient(circle at 80% 0%,#f7b7e866,transparent 35%);pointer-events:none}.welcome,.adventures,.bottomline{position:relative}.welcome{display:flex;align-items:center;gap:25px;min-height:270px}.portrait{width:34%;max-width:350px;height:280px;overflow:hidden;border:5px solid #f4d8a2;border-radius:40% 40% 24px 24px;background:#dca8db;box-shadow:0 9px 20px #37184b80;flex-shrink:0}.portrait img{width:100%;height:100%;object-fit:cover;object-position:center 28%}.hello h1{font-family:Georgia,serif;color:#fff8e5;text-shadow:0 4px 0 #6d4282;font-size:clamp(31px,5vw,64px);line-height:1.08;margin:10px 0}.hello p{font-size:clamp(18px,2.3vw,26px);font-weight:800;color:#ffe5a4;margin:8px 0}.tiny{font-size:12px;letter-spacing:2px;font-weight:900;color:#ffdfad}.tilegrid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px}.adventure{background:#fff3d5;border:5px solid #f9dfac;border-radius:24px;padding:0;overflow:hidden;box-shadow:0 7px 0 #9b5d93,0 10px 18px #3b1b5077;transition:transform .12s;text-align:center;display:flex;flex-direction:column}.adventure:hover{transform:translateY(-4px)}.adventure img{width:100%;height:clamp(130px,17vw,205px);object-fit:cover;display:block;flex:1 0 auto}.adventure span{display:block;padding:10px 4px 13px;font-size:clamp(18px,2vw,26px);font-weight:900;color:#5c3275}.own{display:block;margin:25px auto 6px;padding:15px 26px;border-radius:30px;border:3px solid #ffdbff;background:linear-gradient(#dca8ff,#a15fd0);box-shadow:0 5px 0 #673385;color:#fff;font-size:20px;font-weight:900}.bottomline{display:flex;justify-content:space-between;align-items:center;gap:10px;margin-top:24px}.levelmarker{color:#fff4dd;font-weight:800}.levelmarker strong{display:inline-flex;justify-content:center;align-items:center;width:40px;height:40px;border-radius:50%;background:#fff0b7;color:#683f7b;margin-left:7px;font-size:22px}.continue,.bigbutton{background:#fff1bd;border:3px solid #fff8e5;border-radius:20px;color:#603579;font-weight:900;padding:14px 20px;box-shadow:0 5px 0 #a56e93}.reader{max-width:1030px;margin:auto}.booktop{display:flex;justify-content:space-between;align-items:center;margin:12px 0;color:#fff3dd;font-weight:900}.back{background:#fff3d8;border:2px solid #dfc394;border-radius:14px;padding:11px 17px;color:#603b71;font-weight:800}.storybook{display:grid;grid-template-columns:46% 54%;border:10px solid #b78177;border-radius:25px;overflow:hidden;box-shadow:0 20px 55px #150d2588;background:#fff8e7;min-height:550px}.storyillustration{background:#c8a2db}.storyillustration img{width:100%;height:100%;object-fit:cover}.storypaper{padding:clamp(24px,5vw,65px);display:flex;flex-direction:column;justify-content:center;background:radial-gradient(circle at 50% 20%,#fffdf2,#ffeed4)}.bookeyebrow{font-size:11px;letter-spacing:2px;color:#9b6594;font-weight:900}.storypaper h2{font-family:Georgia,serif;font-size:clamp(23px,3vw,38px);color:#6e3e78;margin:15px 0 25px}.storytext{font-family:Georgia,serif;font-size:clamp(27px,3vw,39px);line-height:1.55;color:#342641}.pagecontrols{display:flex;align-items:center;justify-content:space-between;margin:20px auto;max-width:600px}.pagecontrols button{background:#f7dfad;border:3px solid #fff4ce;border-radius:18px;padding:12px 22px;color:#673b79;font-size:24px;font-weight:900;min-width:80px}.pagecontrols button:disabled{opacity:.35}.dots{display:flex;gap:9px}.dots span{width:11px;height:11px;background:#b99cba;border-radius:50%}.dots span.active{background:#ffdd88;transform:scale(1.35)}.quiz,.celebrate{max-width:800px;margin:35px auto}.quizpaper,.celebration,.admin{background:#fff8e9;border:5px solid #e9c28b;border-radius:28px;padding:clamp(22px,5vw,45px);box-shadow:0 18px 50px #12081f99}.quiztop{display:flex;justify-content:space-between;color:#90669d;font-weight:900}.questionline{display:flex;gap:12px;align-items:center;justify-content:space-between}.questionline h1{font-family:Georgia,serif;font-size:clamp(27px,4vw,40px)}.speaker{min-width:65px;min-height:65px;border:3px solid #d2a8e8;border-radius:20px;background:#e7c7fa;color:#64328a;font-size:21px;font-weight:900}.answers{display:grid;gap:13px}.answerline{display:flex;gap:10px}.answer{flex:1;text-align:left;padding:18px;border:3px solid #ead6b6;border-radius:18px;background:#fff;color:#4b3157;font-size:clamp(19px,2.6vw,27px);font-weight:800}.answer:hover{background:#f9eaff}.smallspeaker{min-width:57px;min-height:58px}.celebration{text-align:center}.crown{font-size:90px;color:#e5a73e}.celebration h1{font-family:Georgia,serif;font-size:clamp(33px,5vw,52px)}.celebration p{font-size:23px}.score{font-size:28px;font-weight:900;color:#8452a4;margin:20px}.admin{max-width:880px;margin:25px auto}.admin h1{font-family:Georgia,serif;font-size:36px}.entry{padding:17px 0;border-bottom:1px solid #e1cfae;display:flex;align-items:center;gap:12px;flex-wrap:wrap}.entry b{flex:1;min-width:200px}.entry button,.backup button,.backup label{background:#e9d1f5;border:2px solid #bd91d4;border-radius:13px;padding:10px 14px;color:#5b3275;font-weight:800;cursor:pointer}.entry small{color:#7b6980}.note{font-size:15px;line-height:1.6;color:#705d75}.stats{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin:20px 0}.stats>div{background:#f1e1f7;padding:16px;border-radius:15px;text-align:center}.stats b{display:block;font-size:28px}.stats span{font-size:13px}.setting{display:flex;align-items:center;gap:15px;flex-wrap:wrap;font-weight:800}.setting select{padding:12px;border-radius:12px;border:2px solid #c9a4d5}.backup{display:flex;gap:12px;flex-wrap:wrap;margin:20px 0}@media(max-width:650px){.shell{padding:8px}.top{padding:10px}.top nav button{padding:9px}.navlabel{display:none}.navicon{margin:0}.home{padding:12px;border-radius:20px}.welcome{gap:10px;min-height:180px}.portrait{width:42%;height:190px;border-radius:70px 70px 15px 15px}.hello h1{font-size:clamp(23px,6vw,35px)}.hello p{font-size:15px}.tiny{font-size:9px}.tilegrid{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.adventure{border-width:3px;border-radius:17px}.adventure img{height:125px}.adventure span{font-size:18px;padding:8px 2px}.own{font-size:16px}.storybook{grid-template-columns:1fr;min-height:0}.storyillustration{height:300px}.storyillustration img{object-position:top center}.storypaper{min-height:280px;padding:25px}.storypaper h2{font-size:25px}.storytext{font-size:29px}.pagecontrols{padding:0 10px}.quiz,.celebrate{margin:10px auto}.questionline h1{font-size:27px}.speaker{min-width:55px;min-height:55px}.stats{gap:5px}.stats>div{padding:10px}.stats span{font-size:11px}}

/* Storybook homepage refresh: real controls, independent tile illustrations */
.shell{background:radial-gradient(circle at 75% 10%,#bda2e5 0%,#634082 40%,#2d1b48 100%)}
.home{background:linear-gradient(140deg,#795196,#b881c2);border:5px solid #f8d9a0}
.home:before{background:linear-gradient(90deg,#542c7a88,#ae75c355)}
.welcome{min-height:225px}.portrait{height:220px;width:26%;max-width:260px;border-radius:50% 50% 22px 22px}
.hello h1{font-family:ui-rounded,'Trebuchet MS',sans-serif;font-size:clamp(30px,5vw,62px);letter-spacing:-2px}
.adventure{border:5px solid #fff0c9;border-radius:25px;background:#fff0cb;box-shadow:0 8px 0 #92518b,0 12px 24px #32164070}
.adventure img{height:clamp(150px,19vw,240px);object-fit:cover;object-position:center}
.adventure span{background:#fff2d1;color:#59316c}
.levelmarker{font-size:15px}
@media(max-width:650px){.welcome{min-height:155px}.portrait{width:36%;height:155px}.hello h1{font-size:clamp(24px,6vw,38px)}.adventure img{height:145px}.home{background-position:center}}

/* Fixed reading-page layout: no vertical centering or shifting between pages. */
.storybook{align-items:stretch}
.storypaper{justify-content:flex-start;align-items:stretch;min-width:0;min-height:550px}
.storypaper .bookeyebrow{flex:none;min-height:16px}
.storypaper h2{flex:none;min-height:2.6em;margin:15px 0 25px;line-height:1.3}
.storytext{flex:none;white-space:pre-line;overflow-wrap:break-word}
@media(max-width:650px){.storypaper{min-height:350px}.storypaper h2{min-height:2.6em}}

/* v3: fixed top-aligned book typography, independent of text length. */
.storybook .storypaper {
  display:grid !important;
  grid-template-columns:minmax(0,1fr);
  grid-template-rows:16px 116px minmax(0,1fr);
  align-content:start !important;
  justify-content:stretch !important;
  align-items:start !important;
  padding:clamp(24px,5vw,65px) !important;
  min-height:550px;
}
.storybook .storypaper .bookeyebrow {grid-row:1;margin:0 !important;align-self:start}
.storybook .storypaper h2 {grid-row:2;margin:16px 0 0 !important;min-height:0 !important;align-self:start;line-height:1.2}
.storybook .storypaper .storytext {grid-row:3;margin:0 !important;align-self:start;line-height:1.55;white-space:pre-line}
@media(max-width:650px){
  .storybook .storypaper{grid-template-rows:16px 92px minmax(0,1fr);min-height:350px;padding:25px !important}
  .storybook .storypaper h2{margin-top:12px !important}
}

/* Quiz answer choices are text-only; audio is reserved for the question. */
.answerline .answer{width:100%;}

/* Reading journey and browseable books */
.bookgrid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px;margin:18px 0 30px}.bookcard{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:10px;min-height:165px;padding:20px 12px;background:linear-gradient(#fff7dc,#f5d8ed);border:3px solid #d8a7d9;border-radius:23px;color:#59346e;box-shadow:0 5px 0 #b58bb2;text-align:center}.bookcard strong{font-size:18px}.bookcard small{font-size:13px}.bookemoji{font-size:36px}.journeyhero{display:flex;align-items:center;gap:20px;background:#f1ddfa;border-radius:24px;padding:22px;margin:20px 0}.journeyhero strong{font-size:27px}.journeyhero p{margin:4px 0}.journeystar{font-size:60px}.readiness{background:#ffedba;border-radius:20px;padding:22px;font-weight:900;text-align:center;font-size:20px}.storypaper .storytext{overflow-y:auto;font-size:clamp(22px,2.5vw,34px)}@media(max-width:650px){.bookgrid{grid-template-columns:repeat(2,minmax(0,1fr))}.bookcard{min-height:145px}.storypaper .storytext{font-size:clamp(22px,5vw,29px)}}

/* Audio choices and visible reading milestones */
.answerline{align-items:stretch}.answerline .answer{min-width:0;flex:1}.answerline .smallspeaker{flex:0 0 60px;min-width:60px;min-height:62px;font-size:23px}.journeyprogress{height:17px;background:#ead9ec;border-radius:30px;overflow:hidden;margin:0 0 20px}.journeyprogress span{display:block;height:100%;background:linear-gradient(90deg,#b775df,#f2bb62);border-radius:30px;transition:width .2s}.bookfinished{background:linear-gradient(#fff5cb,#f7e7a4);border-color:#e4ba63}.nextjourney{display:block;margin:22px auto}.resultactions{display:flex;justify-content:center;flex-wrap:wrap;gap:15px;margin-top:20px}.result-home{display:inline-flex;align-items:center;justify-content:center;border:2px solid #ffdfa4;border-radius:18px;padding:14px 22px;color:#5e3576;background:linear-gradient(#fff8e6,#f6d9a9);box-shadow:0 5px 0 #b77e7c;font-size:26px}.celebrate{padding-bottom:150px}@media(max-width:650px){.answerline .smallspeaker{flex-basis:54px;min-width:54px}}
.syncstatus{font-size:12px;text-align:center;color:#65536c;padding:10px 16px;margin:0;min-height:36px}

/* Reader accounts, explorer editions, and page illustrations. */
.signin{max-width:920px;text-align:center}.signin h1{margin:12px 0 8px;font-size:clamp(30px,4.5vw,46px)}.signin-eyebrow{color:#9368a3;font-size:11px;letter-spacing:.14em;font-weight:900}.reader-picker{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px;margin:26px 0}.reader-pick{padding:16px 10px 18px;border:3px solid #e3d2b8;border-radius:23px;background:#fffdf6;color:#553962;cursor:pointer;transition:transform .15s,border-color .15s}.reader-pick:hover{transform:translateY(-3px)}.reader-pick.selected{border-color:#a57abd;box-shadow:0 0 0 4px #ba91d323}.reader-pick img{display:block;width:100%;height:155px;object-fit:contain;border-radius:18px;margin:0 auto 12px}.reader-pick strong{display:block;font-size:23px}.reader-pick small{display:block;margin-top:5px;color:#7a7382;font-size:12px}.loginform{max-width:380px;margin:25px auto}.loginform h2{font-family:Georgia,serif;font-size:24px}.loginform label{display:block;text-align:left;font-weight:800;font-size:14px;margin:15px 0}.loginform input{display:block;width:100%;box-sizing:border-box;font:inherit;font-size:18px;padding:14px 16px;margin-top:7px;border:2px solid #d9c8df;border-radius:12px;background:#fffcf6;color:#4b3157}.loginform input:focus{outline:3px solid #cbb2dd;outline-offset:2px}.loginform .bigbutton{width:100%}.form-message{min-height:1.5em;color:#835066;font-size:14px;line-height:1.5}.signin .back{display:block;margin:14px auto}.settingnote{margin:20px 0;padding:16px 18px;background:#f0e7f2;border-radius:14px;font-size:14px}.settingnote p{margin-bottom:0;color:#74647b}.master-global{border:2px solid #d8c5df;border-radius:20px;padding:20px;margin:22px 0;background:#f5edf8;display:flex;gap:18px;align-items:center;justify-content:space-between}.master-global h2{margin:0;font-size:22px}.master-global p{font-size:14px;line-height:1.6;color:#78647d}.toggle{display:flex;align-items:center;gap:10px;max-width:200px;font-weight:800;font-size:14px}.master input[type=checkbox]{width:24px;height:24px;accent-color:#8856a2;cursor:pointer;flex:none}.master-readers{display:grid;gap:15px}.master-reader{border:2px solid #e3d7bf;border-radius:20px;padding:20px;background:#fffcf5}.reader-summary{display:flex;gap:18px;align-items:center;margin-bottom:18px}.reader-summary img{width:65px;height:75px;object-fit:contain;border-radius:18px;background:#efe5ed}.reader-summary h2{margin:0;font-size:24px}.reader-summary p{color:#786b7e;font-size:13px}.master-reader .setting{justify-content:space-between;margin:12px 0;font-size:14px}.master-reader select{min-width:170px}.master .bigbutton{margin-top:10px}.page-scene{display:flex;align-items:stretch;justify-content:center;overflow:hidden;background:#e6e9d6}.storyillustration .page-art{display:block;width:100%;height:100%;min-height:440px;align-self:stretch;object-fit:cover}.storybook.text-only{grid-template-columns:minmax(0,1fr)}.storybook.text-only .storypaper{min-height:520px}.text-only .storytext{max-width:38ch}.storyillustration.page-scene{height:auto;min-height:550px}.page-scene .page-art{height:auto;max-height:none;min-height:100%}
button:focus-visible,select:focus-visible,a:focus-visible{outline:3px solid #e3aa55;outline-offset:4px}button:disabled{opacity:.6;cursor:wait}.preview-banner{position:sticky;top:0;z-index:100;background:#ecdcaa;color:#364c5d;text-align:center;font:700 12px/1.5 system-ui;padding:8px}
@media(max-width:650px){.reader-picker{gap:8px;margin:20px 0}.reader-pick{padding:10px 4px;border-radius:16px}.reader-pick img{height:100px}.reader-pick strong{font-size:18px}.reader-pick small{font-size:10px}.master-global{display:block}.toggle{max-width:none;margin-top:15px}.master-reader{padding:16px}.master-reader .setting{align-items:center}.master-reader select{min-width:0;width:53%;padding:10px}.storyillustration.page-scene{height:270px;min-height:0}.storyillustration .page-art{min-height:0;height:270px;width:100%}.storybook.text-only .storypaper{min-height:350px}.text-only .storytext{max-width:none}.top nav{gap:5px}}
@media(prefers-reduced-motion:reduce){.reader-pick{transition:none}}

.quizreview{margin:22px auto;text-align:left;max-width:600px;border-top:1px solid #dfceb3;padding-top:16px}.quizreview summary{font-weight:800;cursor:pointer;color:#77538b}.quizreview section{margin-top:18px;padding-bottom:14px;border-bottom:1px solid #e5d9c5}.quizreview h2{font-size:20px;margin-bottom:10px}.quizreview p{font-size:16px;line-height:1.6;margin:8px 0}

/* Match the original richly illustrated storybook world for every child. */
body[data-edition=explorer] .home{background:linear-gradient(140deg,#795196,#b881c2);border:5px solid #f8d9a0}
body[data-edition=explorer] .portrait img{object-fit:cover;object-position:center 28%}
.storyillustration.page-scene .page-art{display:block;object-fit:cover;width:100%;height:100%;min-height:550px}
.signin .reader-pick img{object-fit:cover;object-position:center 25%;height:175px;max-width:155px}
@media(max-width:650px){.storyillustration.page-scene .page-art{height:270px;min-height:270px}.signin .reader-pick img{height:115px;max-width:100px}}

body[data-reader=welcome] .shell{background:radial-gradient(ellipse at 60% 0%,#76509b,#38234e 60%,#21132d)}

/* A character-free opening screen with the shared storybook wordmark. */
.signin.entry-screen{max-width:700px;padding:clamp(24px,4vw,40px);margin:22px auto}
.entry-screen .entry-logo{margin:0 auto 6px;max-width:520px;line-height:1}
.entry-logo img{display:block;width:100%;height:auto;max-height:270px;object-fit:contain}
.entry-screen .loginform{margin:22px auto 16px}.entry-screen .loginform label{font-family:Georgia,serif;font-size:23px;text-align:center;color:#67447a}
.entry-screen .loginform input{text-align:center;font-family:ui-rounded,'Trebuchet MS',sans-serif;font-size:23px;padding:16px}
.entry-screen .note{text-align:center}.entry-screen .loginform .bigbutton{font-size:20px}.entry-screen #masterlogin{margin-top:22px}
@media(max-width:650px){.signin.entry-screen{margin:12px auto}.entry-logo img{max-height:200px}}

/* Alphabet adventure chooser, using the existing storybook artwork and palette. */
.leveladventure{max-width:1000px;padding:clamp(18px,4vw,36px)}
.levelwelcome{position:relative;isolation:isolate;overflow:hidden;display:flex;align-items:center;justify-content:space-between;min-height:250px;margin:22px 0 28px;padding:30px;border:4px solid #e7be7c;border-radius:25px;background:#66417d;color:#fff8e5;box-shadow:0 7px 0 #c7a1b1}
.levelworld{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:center 45%;z-index:-2}
.levelwelcome:after{content:'';position:absolute;inset:0;z-index:-1;background:linear-gradient(90deg,#362044f0 0%,#402950c9 40%,#36204416 80%)}
.levelwelcometext{max-width:70%;text-shadow:0 2px 5px #271130}.levelwelcometext .tiny{letter-spacing:1px;font-size:13px}.levelwelcome h1{font-size:clamp(35px,5vw,54px);line-height:1.05;margin:12px 0}.levelwelcome p{font-weight:800;font-size:19px;line-height:1.4;margin:10px 0 18px}.levelstars{display:inline-block;border:1px solid #edc284;border-radius:20px;padding:8px 13px;background:#39244bbd;font-size:14px;font-weight:800}
.levelmedal{flex-shrink:0;display:flex;flex-direction:column;align-items:center;justify-content:center;width:114px;height:124px;border:5px solid #fff1bd;border-radius:48% 48% 42% 42%;background:linear-gradient(#ffecad,#efb955);color:#613b65;box-shadow:0 6px 0 #a06c61,0 8px 20px #2a133c66;transform:rotate(5deg)}.levelmedal span{font-size:14px;font-weight:900}.levelmedal strong{font-size:54px;line-height:1.15;font-family:Georgia,serif}
.worldlevel{flex-shrink:0;display:inline-flex;align-items:center;gap:10px;padding:10px 20px;border:1px solid #fff2c1;border-radius:18px;background:linear-gradient(120deg,#fff3bf,#f4cc7a);color:#603775;box-shadow:0 6px 16px #28153b55,inset 0 1px #fff9db}.worldlevel small{font-size:10px;font-weight:900;letter-spacing:.12em}.worldlevel strong{font:700 44px/1 Georgia,serif}
@media(max-width:650px){.worldlevel{padding:6px 12px;gap:6px;border-radius:14px}.worldlevel small{font-size:8px}.worldlevel strong{font-size:24px}}@media(max-width:430px){.worldlevel{padding:5px 10px}.worldlevel strong{font-size:20px}}
.leveladventure h2{font-family:Georgia,serif;font-size:clamp(23px,3vw,29px);margin:22px 0 10px}.levelhint{font-size:17px;line-height:1.5;margin:0 0 20px;color:#75547f}.levelhint strong{display:inline-flex;align-items:center;justify-content:center;width:29px;height:29px;background:#f3dcfc;border-radius:50%}
.leveltrail{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:12px;margin:20px 0 30px}.levelstep{position:relative;min-width:0;min-height:78px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;border:3px solid #d9badf;border-radius:19px;background:linear-gradient(#fffcf4,#eedbf7);color:#65416f;box-shadow:0 4px 0 #c0a1c0;transition:transform .12s,background .12s}.levelstep:hover{transform:translateY(-3px)}.levelstep strong{font-family:Georgia,serif;font-size:29px;line-height:1}.levelstep span{font-size:11px;font-weight:900;min-height:14px}.levelstep.practicelevel{border-color:#dfac55;background:linear-gradient(#fff5c8,#f8df99)}.levelstep.selectedlevel{border-color:#73408c;box-shadow:0 4px 0 #73408c;background:linear-gradient(#c895df,#925cb1);color:#fff9e9;transform:translateY(-2px)}
.levelselection{scroll-margin-top:20px}.levelbook{display:flex;align-items:stretch;width:100%;padding:0;overflow:hidden;text-align:left;border:4px solid #e3bd81;border-radius:24px;background:linear-gradient(120deg,#fffdf3,#f4dff4);color:#59346e;box-shadow:0 7px 0 #b68caf;transition:transform .12s}.levelbook:hover{transform:translateY(-3px)}.levelbookart{position:relative;flex:0 0 38%;min-height:230px}.levelbookart img{display:block;width:100%;height:100%;object-fit:cover;position:absolute;inset:0}.coverletter{position:absolute;bottom:13px;left:13px;display:grid;place-items:center;width:48px;height:53px;border:3px solid #fff6d8;border-radius:14px;background:linear-gradient(#ffe8a0,#e7b85f);font:900 30px Georgia,serif;box-shadow:0 3px 8px #361b4e66}.levelbookinfo{padding:25px;display:flex;flex-direction:column;align-items:flex-start;justify-content:center;gap:12px;flex:1}.levelbookinfo>strong{font:900 clamp(25px,3.5vw,36px)/1.2 Georgia,serif}.levelbookinfo>span:not(.bookeyebrow):not(.readbookcta){font-size:15px;color:#725b7a}.readbookcta{display:inline-block;padding:12px 20px;background:linear-gradient(#fff0b5,#f2cf83);border:2px solid #fff8dc;border-radius:16px;box-shadow:0 4px 0 #ba8f95;color:#613b76;font-size:19px;font-weight:900;margin-top:4px}.levelparents{margin:28px 0 0;font-size:13px;color:#725d77;line-height:1.6}.levelparents summary{cursor:pointer;padding:12px 0;min-height:44px}.levelparents p{margin-top:0}
@media(max-width:650px){.levelwelcome{padding:20px 16px;min-height:225px;gap:10px}.levelwelcometext{max-width:68%}.levelwelcome p{font-size:16px}.levelwelcometext .tiny{font-size:11px}.levelmedal{width:83px;height:96px;border-width:4px}.levelmedal span{font-size:11px}.levelmedal strong{font-size:43px}.levelstars{font-size:12px;padding:7px 10px}.leveltrail{grid-template-columns:repeat(5,minmax(0,1fr));gap:10px}.levelstep{min-height:70px;border-radius:15px}.levelstep span{font-size:9px}.levelstep strong{font-size:27px}.levelbookart{flex-basis:33%;min-height:225px}.levelbookinfo{padding:20px 15px;gap:11px}.levelbookinfo .bookeyebrow{font-size:9px;letter-spacing:1px}.levelbookinfo>strong{font-size:25px}.readbookcta{font-size:17px;padding:11px 14px}}
@media(prefers-reduced-motion:reduce){.levelstep,.levelbook{transition:none}.levelstep:hover,.levelbook:hover{transform:none}}
/* Rewards keep the same cream, gold, and purple storybook surfaces. */
.bottomline{flex-wrap:wrap}.readingtimebar{display:flex;align-items:center;justify-content:center;flex-wrap:wrap;gap:12px;max-width:900px;margin:18px auto 0;color:#fff0cc;font-size:15px;font-weight:800}.readingtimebar .back{font-size:14px;padding:10px 13px}.readingtimebar [data-clock-label]{padding:6px}.rewards-page,.reward-manager{max-width:1000px}.reward-empty{padding:30px 15px;text-align:center;border-radius:24px;background:linear-gradient(#f4e2fb,#ffefd1);margin:24px 0}.reward-empty>div{font-size:65px}.reward-empty h2,.reward-heading h2{font-family:Georgia,serif;font-size:clamp(26px,4vw,35px);line-height:1.2;margin:12px 0}.reward-empty p{line-height:1.6;max-width:500px;margin:12px auto}.reward-quest{margin:25px 0}.reward-heading{display:flex;justify-content:space-between;gap:20px;align-items:center}.reward-heading p{line-height:1.6;color:#795a7e}.reward-sticker-count{flex-shrink:0;display:flex;flex-direction:column;align-items:center;justify-content:center;width:100px;height:110px;border:4px solid #f9dfa0;border-radius:40%;background:linear-gradient(#fff5c6,#edc472);box-shadow:0 5px 0 #b78f99;font-size:24px}.reward-sticker-count strong{font-size:27px}.reward-sticker-count span{font-size:12px;font-weight:900}.reward-prize{display:flex;gap:25px;align-items:center;padding:22px;margin:25px 0;border:3px solid #dec08f;border-radius:24px;background:linear-gradient(115deg,#fff5d6,#f0daf5);box-shadow:0 6px 0 #c7a1bd}.reward-prize h3{font:900 clamp(22px,3vw,30px)/1.25 Georgia,serif;margin:12px 0;overflow-wrap:anywhere}.reward-prize p{line-height:1.6;margin:0}.reward-picture{position:relative;display:grid;place-items:center;flex:0 0 200px;width:200px;height:200px;border-radius:20px;background:#fff9ed;border:3px solid #e5c79a;overflow:hidden}.reward-picture>span{font-size:70px}.reward-picture img{position:absolute;inset:0;width:100%;height:100%;object-fit:contain;background:#fff9ed;padding:8px}.reward-picture img[hidden]{display:none}.reward-picture-small{width:125px;height:125px;flex-basis:125px}.reward-picture-small>span{font-size:48px}.reward-week{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:10px;padding:0;list-style:none;margin:30px 0}.reward-day{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px;min-width:0;padding:13px 5px 8px;border:2px solid #e0c9e6;border-radius:20px;background:linear-gradient(#fffdf5,#f3e8f7);text-align:center}.reward-day>span{font-weight:900;font-size:15px}.reward-day time{font-size:11px;color:#795f7d}.reward-day>strong{font-size:12px;white-space:nowrap}.reward-day>small{font-size:11px;font-weight:900;min-height:15px}.reward-sticker{display:grid;place-items:center;min-height:58px;font-size:38px;color:#ba9fc2}.reward-day.sticker-earned{background:linear-gradient(#fff5c4,#ffe3a0);border-color:#dbac56;box-shadow:0 4px 0 #d9b87b}.reward-day.sticker-today{outline:3px solid #9358ad;outline-offset:3px}.reward-today{padding:20px;background:#f3e2fa;border-radius:20px;margin:25px 0}.reward-today>div:first-child{display:flex;justify-content:space-between;gap:12px;flex-wrap:wrap}.reward-today p{font-size:14px;line-height:1.5;margin:12px 0 0}.reward-meter{height:14px;overflow:hidden;background:#dfcbe8;border-radius:14px;margin-top:15px}.reward-meter>span{display:block;height:100%;background:linear-gradient(90deg,#a268c2,#e2af4d);border-radius:14px}.reward-shop-link{display:inline-block;margin:5px 10px 10px 0;text-decoration:none}.reward-tabs{display:flex;gap:12px;flex-wrap:wrap;margin:25px 0}.reward-tabs button{flex:1;min-height:52px;border:3px solid #dfbd91;border-radius:18px;background:linear-gradient(#fffae8,#f1d9e9);font-weight:900;color:#623d76;padding:10px 15px;box-shadow:0 4px 0 #c09cbb}.reward-tabs button[aria-pressed=true]{color:#fff8df;background:linear-gradient(#aa78c1,#744389);border-color:#f2d3a3}.reward-parent-section{border-top:2px solid #e5d1b2;padding-top:20px;margin-top:30px}.reward-parent-section h2{font:900 27px Georgia,serif}.reward-parent-section label{display:flex;flex-direction:column;gap:8px;font-weight:800;margin:18px 0;min-width:0}.reward-parent-section label>span{font-size:13px;font-weight:400}.reward-parent-section input:not([type=file]),.reward-parent-section select{width:100%;min-width:0;border:2px solid #ceb0d9;border-radius:14px;background:#fffef9;color:#543363;padding:13px;font-size:16px}.reward-plan-form{display:grid;grid-template-columns:2fr 1.2fr 1fr;gap:14px;align-items:end}.reward-plan-form .bigbutton{grid-column:1/-1;justify-self:start}.reward-plan-form label{margin:10px 0}.reward-upload{background:#f4e7fa;padding:16px;border:2px dashed #cda4da;border-radius:15px}.reward-upload input{font-size:14px;max-width:100%}.reward-parent-section #reward-draft-picture{margin:20px 0}.reward-shelf{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px}.reward-shelf article{min-width:0;padding:18px;border:2px solid #e1c697;border-radius:20px;background:#fff4db;display:flex;align-items:center;flex-direction:column;text-align:center;gap:12px}.reward-shelf h3{font-size:17px;line-height:1.4;overflow-wrap:anywhere;margin:0}.reward-shelf .back{font-size:13px}.reward-archive{border:0;background:none;text-decoration:underline;color:#7c6583;min-height:40px;font-size:13px}.reward-history{margin:25px 0;font-size:14px;line-height:1.6}.reward-history summary{cursor:pointer;font-weight:900;padding:12px 0}.reward-manager .form-message{line-height:1.5}.reward-manager>h1,.rewards-page>h1{overflow-wrap:anywhere}
@media(max-width:700px){.reward-week{grid-template-columns:repeat(4,minmax(0,1fr));gap:12px}.reward-plan-form{grid-template-columns:1fr 1fr}.reward-plan-form label:first-child{grid-column:1/-1}.reward-shelf{grid-template-columns:repeat(2,minmax(0,1fr))}.reward-prize{gap:16px;padding:16px}.reward-prize>.reward-picture{width:150px;height:150px;flex-basis:150px}}
@media(max-width:480px){.top{flex-wrap:wrap}.top nav{margin-left:auto;gap:6px}.reward-heading{gap:10px}.reward-sticker-count{width:77px;height:94px;border-width:3px;font-size:20px}.reward-sticker-count strong{font-size:24px}.reward-heading .bookeyebrow{font-size:10px;letter-spacing:1px}.reward-heading h2{font-size:26px}.reward-prize{flex-direction:column;align-items:center;text-align:center;padding:20px}.reward-prize>.reward-picture{width:180px;height:180px;flex-basis:auto}.reward-week{grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}.reward-shelf{grid-template-columns:1fr}.reward-plan-form{grid-template-columns:1fr}.reward-plan-form label,.reward-plan-form label:first-child{grid-column:1}.reward-tabs{gap:8px}.reward-tabs button{padding:9px;min-width:0}.readingtimebar{gap:8px}.readingtimebar [data-clock-label]{width:100%;text-align:center}}
.graduation{display:flex;align-items:center;justify-content:center;gap:20px;padding:24px;margin:24px 0;border:4px solid #edc16d;border-radius:26px;background:linear-gradient(130deg,#fff7cb,#ffe4a1 60%,#f7dced);box-shadow:0 6px 0 #c29aa6;text-align:left}.graduation>span{font-size:70px;flex-shrink:0}.graduation h2{font:900 clamp(27px,4vw,38px)/1.15 Georgia,serif;margin:0 0 10px;color:#63396e}.graduation p{font-size:17px;line-height:1.5;margin:0}.celebration .graduation{flex-direction:column;text-align:center}.milestone-section{margin:28px 0}.milestone-section h2{font:900 25px Georgia,serif}.milestone-trail{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:12px}.milestone-step{min-width:0;min-height:76px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:5px;border:3px solid #dfc5e4;border-radius:18px;background:linear-gradient(#fffdf3,#f3e5f8);color:#684174;box-shadow:0 4px 0 #c7abc8}.milestone-step strong{font:900 29px Georgia,serif}.milestone-step span{font-size:11px;font-weight:900;white-space:nowrap}.milestone-earned{border-color:#dfb155;background:linear-gradient(#fff5be,#f5d786)}.milestone-selected{outline:3px solid #8d57a6;outline-offset:2px}.home-milestone{position:relative;border:3px solid #f1d7a0;border-radius:20px;padding:16px 20px;background:linear-gradient(#fff4c5,#efce83);color:#623972;font-size:21px;font-weight:900;margin:10px 0 25px;box-shadow:0 5px 0 #986e9c}.home-milestone span{display:block;font-size:14px;line-height:1.5;margin-top:6px;font-weight:700}.reward-day-approvals{margin:24px 0;padding:20px;border:2px solid #dec196;border-radius:20px;background:#fff2d2}.reward-day-approvals h3{font-family:Georgia,serif;font-size:23px;margin:0 0 10px}.day-approval-row{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;padding:14px 0;border-top:1px solid #e1cda7;font-size:14px}.day-approval-row button{font-size:14px;min-height:46px}.day-approval-row button:disabled{opacity:.55;cursor:default}.parent-approval-hint{line-height:1.6;font-size:15px;background:#f1e0f8;padding:16px;border-radius:18px}.parent-sticker{color:#5e3972;white-space:normal}.reward-day>small.parent-sticker{font-size:10px;min-height:26px}.journeyhero small{font-size:13px;color:#78557f}
@media(max-width:650px){.milestone-trail{grid-template-columns:repeat(5,minmax(0,1fr));gap:10px}.milestone-step{min-height:70px}.milestone-step span{font-size:9px}.graduation{padding:20px 15px;gap:12px}.graduation>span{font-size:47px}.graduation h2{font-size:28px}.graduation p{font-size:15px}.home-milestone{font-size:19px}.reward-day-approvals{padding:16px}.day-approval-row{align-items:flex-start;flex-direction:column}}
@media(max-width:360px){.milestone-trail{grid-template-columns:repeat(4,minmax(0,1fr))}.graduation{flex-direction:column;text-align:center}}

/* Session restoration: rendered before JavaScript, without exposing cached account data. */
.session-shell{box-sizing:border-box;min-height:100svh;padding:clamp(20px,4vw,48px);background:radial-gradient(ellipse at 76% 0%,#b29ad6,#644180 55%,#2d1b48);color:#fff4ce}
.session-brand{max-width:1120px;margin:0 auto 28px;font:bold clamp(28px,4vw,42px)/1.2 Georgia,serif;letter-spacing:-.03em}
.session-card{box-sizing:border-box;max-width:1120px;margin:0 auto;background:#fff8e9;border:1px solid #ead7b9;border-radius:26px;padding:clamp(24px,4vw,46px);box-shadow:0 16px 40px #24133626}
.session-heading{display:flex;align-items:center;gap:24px;margin-bottom:30px}.session-lines{flex:1;display:grid;gap:15px}.session-shape{display:block;position:relative;overflow:hidden;background:#eae0ed;isolation:isolate}.session-shape:after{content:"";position:absolute;inset:0;background:linear-gradient(100deg,transparent 20%,#ffffffa6 50%,transparent 80%);transform:translateX(-100%);animation:session-shimmer 1.7s ease-in-out infinite}
.session-avatar{width:86px;height:86px;border-radius:26px;flex:none}.session-line{height:20px;border-radius:8px}.session-line-wide{width:min(72%,390px);height:30px}.session-line-short{width:min(48%,260px)}.session-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:20px}.session-tile{height:clamp(110px,16vw,175px);border-radius:18px}.session-caption{margin:26px 0 0;text-align:center;color:#776482;font:500 15px/1.5 system-ui,sans-serif}
@keyframes session-shimmer{100%{transform:translateX(100%)}}
@media(max-width:600px){.session-brand{margin-bottom:20px}.session-heading{gap:18px;margin-bottom:24px}.session-avatar{width:64px;height:64px;border-radius:20px}.session-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}.session-line-wide{width:90%;height:24px}.session-line-short{width:65%}.session-tile{height:118px}}
@media(prefers-reduced-motion:reduce){.session-shape:after{animation:none;transform:none;opacity:.25}}

/* Toddler / Pre-K notice above the story worlds. This lives in the base stylesheet
   because the storybook edition switches polish.css off entirely, and the notice has
   to stay readable in both editions. Cream on purple, matching the hero. */
.prek-notice{position:relative;margin:0 0 22px;padding:22px 24px;border:2px solid #f0d19a;border-radius:20px;background:#ffffff1f}
.prek-notice-tag{display:inline-flex;align-items:center;gap:7px;font-size:11px;letter-spacing:.09em;font-weight:800;color:#ffe0a3}
.prek-notice-tag .ui-icon{width:15px;height:15px}
.prek-notice h2{font-size:clamp(22px,3.4vw,30px);line-height:1.15;color:#fff9e7;margin:10px 0 12px;text-shadow:0 2px 0 #44214b44}
.prek-notice p{margin:0 0 10px;font-size:16px;line-height:1.7;color:#f3e6ff}
.prek-notice p:last-child{margin-bottom:0}
.prek-notice strong{color:#ffe0a3}
.prek-notice-hint{font-size:13px;color:#dcc8ea}

/* The Games navigation item carries a "soon" tag. */
.reader-nav-item.has-nav-tag{position:relative}
.nav-tag{position:absolute;top:2px;right:2px;padding:2px 6px;border-radius:999px;background:#ffc84b;color:#4d2d16;font-size:9px;font-weight:800;letter-spacing:.06em;line-height:1.4;text-transform:uppercase}
.text-navigation .reader-nav-item.has-nav-tag .nav-tag{position:static;margin-left:7px}

/* Story-world tiles in the storybook edition: the level sat on the same line as the
   world name and read as "RobotsLevel A". Give it its own line. */
.adventure>span strong{display:block}
.adventure>span small{display:block;margin-top:7px;font:700 13px/1.4 Arial,sans-serif;color:#6b4a7d}

/* Story artwork is composed with the characters near the top. */
.page-art,.adventure img{object-position:top}
@media(max-width:600px){.prek-notice{padding:18px;margin-bottom:18px}.nav-tag{top:0;right:0;font-size:8px;padding:1px 5px}}

/* First paint of the reading home after signing in. The skeleton sits over the real
   page rather than replacing it, so nothing reflows when it clears. */
.home{position:relative}
.home>*{transition:opacity .42s ease,transform .42s ease}
.home.is-loading>*:not(.home-skeleton){opacity:0;transform:translateY(12px)}
.home-skeleton{position:absolute;inset:0;padding:inherit;display:grid;gap:26px;align-content:start;opacity:1;transition:opacity .34s ease;pointer-events:none}
.home:not(.is-loading)>.home-skeleton{opacity:0}
.home-skeleton .session-shape{display:block;background:#ffffff1f;border-radius:14px}
.home-skeleton-hero{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,.8fr);gap:28px;align-items:center;min-height:clamp(220px,32vw,330px)}
.home-skeleton-copy{display:grid;gap:14px;align-content:center}
.home-skeleton-eyebrow{width:38%;height:12px}
.home-skeleton-title{width:76%;height:clamp(44px,7vw,92px)}
.home-skeleton-line{width:58%;height:16px}
.home-skeleton-badge{width:132px;height:44px;border-radius:999px}
.home-skeleton-art{width:100%;height:clamp(180px,26vw,280px);border-radius:28px}
.home-skeleton-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:24px}
.home-skeleton-tile{height:clamp(150px,18vw,230px);border-radius:22px}
@media(prefers-reduced-motion:reduce){.home>*,.home-skeleton{transition:none}.home.is-loading>*:not(.home-skeleton){transform:none}}
@media(max-width:740px){.home-skeleton-hero{grid-template-columns:minmax(0,1fr)}.home-skeleton-art{display:none}.home-skeleton-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:20px}}
@media(max-width:640px){.home-skeleton-grid{grid-template-columns:minmax(0,1fr);gap:22px}}

/* The pre-JavaScript placeholder now wears the same purple panel and shapes as the
   reading home, so a cold load shows one loading state that continues into the app
   rather than a cream card followed by a different skeleton. */
.session-card:has(.session-home-skeleton){background:linear-gradient(150deg,#744d91,#ac75bd 55%,#d3a1d7);border:4px solid #eac68b;border-radius:30px;padding:clamp(22px,3.5vw,44px)}
.session-home-skeleton{position:static;inset:auto;padding:0}
.session-card:has(.session-home-skeleton) .session-caption{color:#f3e6ff}

/* Stand in for the reader navigation bar before JavaScript runs, so the placeholder and
   the app's own header occupy the same space and the swap is not visible as a jump. */
.session-shell:has(.session-home-skeleton){padding-top:0}
.session-topbar{display:flex;align-items:center;justify-content:space-between;gap:clamp(16px,4vw,48px);flex-wrap:wrap;max-width:1120px;margin:0 auto 28px;padding:18px 0}
.session-topbar .session-brand{margin:0}
.session-navshapes{display:flex;gap:clamp(8px,1.4vw,18px)}
.session-navshape{width:clamp(64px,9vw,112px);height:clamp(56px,7vw,74px);border-radius:18px;background:#ffffff14;border:1px solid #ffffff1a}
@media(max-width:600px){.session-navshapes{display:none}}

/* Global settings panel. The old .master-global was a flex row built for one heading and
   one toggle; with several settings it collapsed into squeezed columns. Each setting is
   now its own row: copy on the left, control on the right, stacking on narrow screens.
   This lives in the base stylesheet so it holds in the storybook edition too. */
.master-global.global-settings{display:block;text-align:left}
.global-settings>h2{margin:0 0 6px}
.global-settings>.note{margin:0 0 18px}
.global-setting-list{display:grid;gap:4px}
.global-setting{display:flex;align-items:flex-start;justify-content:space-between;gap:20px;flex-wrap:wrap;padding:16px 0;border-top:1px solid #e6d8ec}
.global-setting:first-child{border-top:0;padding-top:4px}
.global-setting-copy{flex:1 1 300px;min-width:0}
.global-setting-copy h3{margin:0 0 4px;font:700 16px/1.3 Georgia,serif;color:#4d305d}
.global-setting-copy p{margin:0 0 4px;font-size:13px;line-height:1.6;color:#6b5278}
.global-setting-copy .note{margin:0;font-size:12px;line-height:1.6}
.global-setting-control{flex:0 0 auto;display:flex;align-items:center;gap:12px;max-width:100%}
.global-setting-control .toggle{margin:0}
.global-setting-control .setting input[type=number]{width:120px}
@media(max-width:700px){
 .global-setting{flex-direction:column;gap:12px}
 .global-setting-control{width:100%}
}
