:root{--ink:#244e41;--green:#28684e;--cream:#fff9e9;--gold:#f6ce72;--line:#406e55}*{box-sizing:border-box}[hidden]{display:none!important}body{margin:0;color:var(--ink);font:400 20px/1.5 Fredoka,system-ui,sans-serif;background:#f1f4de;background-image:radial-gradient(#43644d12 1px,transparent 1px);background-size:18px 18px;min-height:100vh}a{color:inherit}button,a,summary{touch-action:manipulation;-webkit-tap-highlight-color:transparent}button{font:500 18px Fredoka,system-ui,sans-serif;color:var(--ink);background:#fffef7;border:2px solid var(--line);border-radius:16px;padding:12px 20px;min-width:44px;min-height:48px;cursor:pointer;box-shadow:0 3px 0 #294f3d24}button:hover,a.week-card:hover{filter:brightness(1.025)}button:active{box-shadow:none}button[aria-pressed=true]{background:var(--gold)}button:disabled{cursor:default}a:focus-visible,button:focus-visible,summary:focus-visible{outline:4px solid #946bba;outline-offset:4px}.topbar{max-width:1140px;margin:auto;padding:18px 24px;display:flex;align-items:center;gap:12px}.topbar a{padding:10px 16px;min-height:48px;display:flex;align-items:center;text-decoration:none;border:2px solid #ced8c2;border-radius:16px;background:#fffdf1;font-size:16px}.topbar button{margin-left:auto;font-size:16px}main{max-width:1120px;margin:auto;padding:0 24px 48px}.masthead{display:flex;align-items:center;justify-content:space-between;gap:28px;padding:22px 6px 30px}.eyebrow{font-size:13px;font-weight:600;letter-spacing:.12em;text-transform:uppercase;margin:0 0 8px}h1,h2,h3{font-family:'Baloo 2',Fredoka,system-ui,sans-serif}h1{font-size:clamp(38px,4.8vw,66px);line-height:1.02;letter-spacing:-.03em;margin:0}h1 span{color:#9b542c}.masthead p:last-child{max-width:640px;margin:14px 0 0;font-size:23px}.pip{width:160px;height:160px;object-fit:contain;filter:drop-shadow(0 7px 0 #315d4019)}.week-cards{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:26px}.week-card{display:block;text-decoration:none;border:3px solid var(--ink);border-radius:26px;background:var(--cream);overflow:hidden;box-shadow:5px 7px 0 #b9cab0}.week-card>img{width:100%;height:220px;display:block;object-fit:cover;border-bottom:3px solid var(--ink)}.week-card>div{padding:23px 25px 25px}.week-card h2{font-size:32px;line-height:1.1;margin:5px 0 10px}.week-card p:not(.eyebrow){font-size:19px;margin:0 0 18px}.necklace{background:#fbefdb}.play{display:inline-flex;min-height:48px;align-items:center;background:var(--green);color:white;padding:9px 17px;border-radius:13px;font-size:18px;font-weight:500}.mark{font-size:15px;display:block;margin-top:8px;min-height:0}.mark:empty{display:none}.week-note{font-size:16px;text-align:center;margin:27px 0 18px}.grownups{background:#fffcf1;border:2px solid #b8c4ae;border-radius:18px;padding:12px 22px;font-size:17px}.grownups summary{min-height:48px;display:flex;align-items:center;cursor:pointer;font-weight:600}.grownups blockquote{margin:18px 0;padding:8px 18px;border-left:4px solid #ae7544;background:#f5eddc}#adventure{background:#fff9e9;border:3px solid var(--ink);border-radius:26px;padding:25px 30px;box-shadow:6px 7px 0 #b9cab0;scroll-margin-top:16px}.adventure-head{display:flex;justify-content:space-between;gap:10px;margin-bottom:24px}#adventure-title{font-size:37px;line-height:1.1;margin:5px 0 12px}#adventure-title:focus{outline:none}.instruction{font-size:24px;max-width:830px;margin:0 0 22px}.book-shelf{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:16px}.book-choice{display:flex;flex-direction:column;text-align:left;align-items:flex-start;gap:6px;padding:15px;background:#f4ecd7}.book-choice img{height:115px;width:100%;object-fit:contain}.book-choice strong{font-size:22px}.book-choice small{font-size:15px}.book-choice[data-visited=true]{background:#e1edd4}.reader{display:grid;grid-template-columns:140px minmax(0,1fr);gap:25px;padding:25px;background:white;border:2px solid #d8d4b8;border-radius:20px;animation:page-in .35s ease-out}.reader>img{width:140px;height:145px;object-fit:contain}.reader h3{font-size:30px;line-height:1.1;margin:0 0 12px}.passage{white-space:pre-line;font-size:24px;line-height:1.6;margin:0}.genre-clue{margin-top:18px;background:#e4efd7;padding:16px 20px;border-radius:16px;font-size:21px}.genre-clue p{margin:5px 0}.actions{display:flex;flex-wrap:wrap;gap:12px;margin-top:15px}.primary{background:var(--green);color:white;border-color:var(--green)}#feedback{min-height:28px;font-size:18px;margin:16px 0 0}.response-stage{display:grid;grid-template-columns:160px minmax(0,1fr);align-items:center;gap:25px;background:white;border:2px solid #d8d4b8;border-radius:20px;padding:25px}.response-stage img{width:160px;height:160px;object-fit:contain}.response-stage h3{font-size:29px;line-height:1.2;margin:0 0 10px}.response-stage p{font-size:24px;margin:8px 0}.step-dots{display:flex;gap:10px;margin-bottom:18px}.step-dot{display:inline-grid;place-items:center;width:44px;height:44px;border:2px solid var(--line);border-radius:50%;background:#fffdf1;font-size:18px}.step-dot.done{background:#badcaa}.step-dot.current{background:var(--gold)}.practice-book{font-size:16px;margin:14px 0}.practice-book summary{min-height:48px;display:flex;align-items:center;cursor:pointer;font-weight:500}.practice-book p{white-space:pre-line;font-size:20px;max-width:800px}.necklace-display{border-bottom:4px solid #92744c;border-radius:0 0 45% 45%;min-height:100px;padding:12px 20px 22px;display:flex;align-items:center;justify-content:center;flex-wrap:wrap;gap:12px}.bead{width:42px;height:42px;display:inline-block;border:3px solid #375344;border-radius:50%;box-shadow:inset 6px 5px 0 #ffffff66,0 4px 0 #244e4122;background:var(--gold);animation:thread-in .55s ease-out}.bead:nth-child(3n+2){background:#9fcdb7}.bead:nth-child(3n){background:#c6ade0}.bead.empty{background:transparent;border-style:dashed;box-shadow:none;animation:none}.color-options{display:flex;gap:12px;flex-wrap:wrap}.color-options button{min-width:98px}.bead-count{font-size:19px;text-align:center}.reward-art{width:130px;height:130px;object-fit:contain;display:block;margin:15px auto}.finish-copy{text-align:center;font-size:24px}button.undone{font-size:16px}.helper{font-size:16px;color:#466556}.response-options{display:flex;gap:12px;flex-wrap:wrap}@keyframes page-in{from{opacity:.4;transform:translateY(9px)}to{opacity:1;transform:translateY(0)}}@keyframes thread-in{from{opacity:0;transform:translateY(-35px) rotate(-25deg)}to{opacity:1;transform:translateY(0) rotate(0)}}@media(max-width:700px){body{font-size:18px}.topbar{padding:12px;gap:7px}.topbar a,.topbar button{padding:10px;font-size:14px;min-height:46px}main{padding:0 12px 28px}.masthead{padding:18px 3px 24px;gap:8px;align-items:flex-start}.masthead .eyebrow{max-width:230px;font-size:11px}.masthead p:last-child{font-size:18px}.pip{width:76px;height:95px;flex-shrink:0;margin-top:24px}h1{font-size:37px}.week-cards{grid-template-columns:minmax(0,1fr);gap:22px}.week-card>img{height:190px}.week-card>div{padding:20px}.week-card h2{font-size:29px}.week-card p:not(.eyebrow){font-size:18px}.grownups{padding:10px 15px;font-size:16px}.grownups summary{font-size:16px}#adventure{padding:16px 14px}.adventure-head{margin-bottom:20px}.adventure-head button{padding:10px 12px;font-size:15px}#adventure-title{font-size:31px}.instruction{font-size:20px}.book-shelf{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.book-choice{padding:11px}.book-choice img{height:85px}.book-choice strong{font-size:19px}.book-choice small{font-size:14px}.reader{display:block;padding:17px}.reader>img{width:80px;height:80px;float:right;margin:0 0 8px 10px}.reader h3{font-size:27px}.passage{font-size:21px;line-height:1.6}.genre-clue{font-size:19px;padding:13px}.response-stage{display:block;padding:18px}.response-stage img{width:75px;height:75px;float:right;margin-left:8px}.response-stage p{font-size:21px}.response-stage h3{font-size:25px}.actions>button{flex:1 1 auto}.week-note{font-size:15px}.necklace-display{gap:9px;padding:12px 8px 22px}.bead{width:35px;height:35px}.finish-copy{font-size:21px}}@media(prefers-reduced-motion:reduce){*,*::before,*::after{animation:none!important;scroll-behavior:auto!important}}
.pip{border-radius:22px}a.week-card>img{height:auto;aspect-ratio:1.6}

/* The story drawings have their own space beside the words, then stack on phones. */
.book-preview{display:block;width:100%;aspect-ratio:1.6;border:1px solid #a5b5a0;border-radius:10px;overflow:hidden;margin-bottom:5px}
.book-preview canvas,.story-drawing canvas{display:block;width:100%;height:auto;aspect-ratio:1.6}
.reader{grid-template-columns:minmax(0,.95fr) minmax(0,1.05fr);align-items:start;gap:25px;padding:22px}
.story-drawing{min-width:0;margin:0;background:#f5f1df;border:1px solid #c5ceb6;border-radius:15px;overflow:hidden}
.story-drawing figcaption{font-size:17px;line-height:1.45;padding:13px 15px 4px}
.drawing-controls{display:flex;flex-wrap:wrap;gap:8px;padding:12px}
.drawing-controls button{font-size:15px;min-height:46px;padding:9px 12px;flex:1 1 auto;box-shadow:none;border-color:#7c9580;border-radius:12px}
.drawing-replay{background:#e1ebd4}
.reader-copy{min-width:0}
@media(min-width:701px) and (max-width:1100px){.reader{grid-template-columns:minmax(0,.85fr) minmax(0,1.15fr);gap:20px;padding:18px}.passage{font-size:22px}.story-drawing figcaption{font-size:16px}}
@media(max-width:700px){.reader{display:flex;flex-direction:column;padding:12px;gap:21px}.story-drawing{width:100%}.story-drawing figcaption{font-size:16px;padding:11px 12px 2px}.drawing-controls{padding:10px}.drawing-controls button{font-size:14px;padding:8px 10px}.book-choice{padding:9px}.book-preview{border-radius:8px}.reader-copy{padding:0 4px 4px}}

/* Movie card: The Wedding at Cana (2026-09-23) */.movie-card{margin-top:26px;display:grid;grid-template-columns:minmax(0,.8fr) minmax(0,1.4fr);gap:24px;align-items:center;border:3px solid var(--ink);border-radius:26px;background:#f7ecd4;padding:22px;box-shadow:5px 7px 0 #b9cab0}.movie-card h2{font-size:32px;line-height:1.1;margin:5px 0 10px}.movie-card p{font-size:19px;margin:0 0 12px}.movie-card .movie-ref{font-size:15px;color:#6b4a2a;margin:0}.movie-card video{width:100%;height:auto;aspect-ratio:16/9;display:block;border-radius:16px;border:3px solid #8f2330;background:#231812}@media(max-width:700px){.movie-card{grid-template-columns:minmax(0,1fr);padding:16px;gap:14px}.movie-card h2{font-size:29px}.movie-card p{font-size:18px}}
/* Genre check (2026-09-28). The choices sit in a tray pinned to the bottom of the screen
   while she reads, so no answer is ever below the fold; once solved it rejoins the page. */
.reader{position:relative}
.genre-check{position:sticky;bottom:0;z-index:5;margin-top:14px;padding:10px 12px 12px;background:#fff9e9;border:2px solid var(--line);border-radius:18px;box-shadow:0 -6px 18px #294f3d1f}
.genre-check.solved{position:static;box-shadow:none}
.genre-check h3{margin:0 0 4px;font:700 19px/1.2 'Baloo 2',Fredoka,system-ui,sans-serif}
.genre-note{margin:0 0 6px;min-height:0;font-size:16px;line-height:1.35}
.genre-note:empty{display:none}
.genre-picks{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px}
.genre-pick{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;min-width:0;min-height:52px;padding:6px 8px;line-height:1.1;text-align:center}
.genre-pick strong{font-weight:700;font-size:16px}
.genre-rule{font-size:12px;color:#4d6b5c}
.genre-check.faded .genre-rule{display:none}
/* The note replaces the question after a miss, so the pinned tray stays short enough to fit. */
.genre-check.noted h3{display:none}
.genre-pick[data-state=tried]{opacity:.55;animation:genre-nope .42s ease-in-out}
.genre-pick[data-state=right]{background:#d6f0c9;border-color:var(--green);outline:4px solid #7fcf9a;outline-offset:2px;opacity:1}
.genre-pick.hint{outline:4px dashed var(--gold);outline-offset:2px}
.genre-pick:active{outline:4px solid var(--gold);outline-offset:2px}
.passage mark.proof{background:linear-gradient(transparent 55%,#f6ce72 55%) no-repeat;background-size:100% 100%;color:inherit;border-radius:3px;animation:proof-in .6s ease-out both}
.genre-stamp{position:absolute;top:10px;right:12px;margin:0;padding:6px 14px;border:3px solid #b8452f;border-radius:12px;color:#b8452f;background:#fffef7ee;font:800 20px/1.1 'Baloo 2',Fredoka,system-ui,sans-serif;transform:rotate(-8deg);animation:stamp-in .45s cubic-bezier(.2,1.6,.4,1) both;pointer-events:none}
@keyframes genre-nope{0%,100%{translate:0}25%{translate:-6px}75%{translate:6px}}
@keyframes proof-in{from{background-size:0 100%}to{background-size:100% 100%}}
@keyframes stamp-in{from{opacity:0;transform:rotate(-8deg) translateY(-18px)}to{opacity:1;transform:rotate(-8deg)}}
@media (max-width:640px){.genre-picks{grid-template-columns:repeat(2,minmax(0,1fr))}.genre-check h3{font-size:17px}.genre-stamp{font-size:16px;top:6px;right:6px}}
@media (max-height:500px){.genre-check{padding:6px 10px 8px}.genre-pick{min-height:46px}}
@media (prefers-reduced-motion:reduce){.passage mark.proof{background-size:100% 100%}}
/* 2026-09-28: a way forward to this week's work (games/chloe-week3). */
.this-week{display:flex;align-items:center;gap:12px;min-height:56px;margin:0 0 18px;padding:10px 16px;border:2px solid var(--line);border-radius:18px;background:var(--gold);color:var(--ink);text-decoration:none;font:700 19px/1.2 'Baloo 2',Fredoka,system-ui,sans-serif;box-shadow:0 3px 0 #294f3d33}
.this-week>span:first-child{font-size:26px}
.this-week small{display:block;font:500 14px/1.3 Fredoka,system-ui,sans-serif}
.this-week .go{margin-left:auto;font-size:24px}
.this-week:active{box-shadow:none;outline:4px solid var(--green);outline-offset:2px}
/* Round 2 (critic D10-D12): the tray is one slim bar (its question is in the instruction line), the
   stamp repeats inside the ingredients, and a missed read comes back as a button above the shelf. */
.genre-check h3{display:none}
.genre-check{padding:6px 8px 8px}
.genre-pick{min-height:48px;padding:4px 6px}
.genre-clue .genre-stamp.in-clue{position:static;display:inline-block;margin:0 0 6px;font-size:18px;animation:none}
.comeback{display:block;width:100%;margin:0 0 14px}
/* while a tiny read is open, its two buttons share one short row so the story starts higher */
#actions.compact{display:flex;flex-wrap:wrap;gap:8px}
#actions.compact button{flex:1 1 40%;min-width:0;font-size:15px;padding:8px 10px;line-height:1.2}
