:root{--cream:#FAF2E2;--ink:#17201E;--berry:#C42A5B;--green:#A9CC1E;--paper:#fffaf0;--muted:#64706c;--line:#d9d0c0;--bronze:#a96737;--silver:#777f82;--gold:#b77c05;--platinum:#126f69;font-family:"Avenir Next",Avenir,Helvetica,Arial,sans-serif;color:var(--ink);background:var(--cream)}*{box-sizing:border-box}body{margin:0;min-height:100vh;background:var(--cream);font-size:16px;line-height:1.5;overflow-x:hidden}.skip{position:absolute;left:-999px}.skip:focus{left:1rem;top:1rem;background:#fff;padding:.75rem;z-index:20}.topbar{height:72px;border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;padding:0 clamp(1rem,4vw,4rem);position:sticky;top:0;background:rgba(250,242,226,.96);z-index:10}.brand{display:flex;gap:.7rem;align-items:center;border:0;background:transparent;font:700 1rem inherit;color:var(--ink);cursor:pointer}.brand-mark{display:grid;place-items:center;width:38px;height:38px;background:var(--ink);color:var(--cream);border-radius:50%;font-size:.78rem;letter-spacing:.08em}.student-chip{border:1px solid var(--ink);border-radius:2rem;padding:.4rem .85rem;font-weight:700;font-size:.85rem}.welcome{max-width:1120px;margin:auto;padding:clamp(3rem,10vh,7rem) clamp(1rem,5vw,3rem)}.eyebrow,.mini-label{text-transform:uppercase;letter-spacing:.16em;font-size:.72rem;font-weight:800;color:var(--berry)}h1,h2,h3,p{margin-top:0}h1{font-size:clamp(2.8rem,8vw,6.6rem);line-height:.93;letter-spacing:-.055em;margin:.55rem 0 1.5rem;max-width:900px}h1 em{font-style:normal;color:var(--berry)}.lead{font-size:clamp(1.05rem,2vw,1.35rem);max-width:630px;color:#3e4946}.name-card{margin-top:3rem;background:var(--ink);color:var(--cream);padding:clamp(1.25rem,4vw,2.2rem);border-radius:1rem;max-width:760px;box-shadow:7px 7px 0 var(--green)}.name-card label{font-size:1.2rem;font-weight:800}.privacy-note{color:#d8dfdc;font-size:.88rem;margin:.3rem 0 1.2rem}.name-row{display:flex;gap:.75rem}.name-row input{min-width:0;flex:1;border:2px solid transparent;border-radius:.5rem;padding:.9rem 1rem;font:inherit;background:#fff;color:var(--ink)}.name-row input:focus{outline:3px solid var(--green);outline-offset:2px}.primary{border:0;border-radius:.5rem;padding:.9rem 1.2rem;background:var(--berry);color:white;font:800 .92rem inherit;cursor:pointer}.primary:hover{background:#a91e4c}.primary:disabled{opacity:.55;cursor:wait}.form-error{color:#ffb5ca;font-size:.85rem;margin:.8rem 0 0;min-height:1.2rem}.promise-grid{display:grid;grid-template-columns:repeat(3,1fr);max-width:760px;margin-top:3rem;border-top:1px solid var(--line);border-bottom:1px solid var(--line)}.promise-grid span{padding:1.3rem .5rem;color:var(--muted);font-size:.8rem}.promise-grid b{display:block;color:var(--ink);font-size:1.8rem}.dashboard,.exercise-view{max-width:1180px;margin:auto;padding:3rem clamp(1rem,4vw,3rem) 6rem}.dashboard-head{display:flex;align-items:end;justify-content:space-between}.dashboard-head h1{font-size:clamp(2.3rem,6vw,4.7rem);margin-bottom:0}.progress-ring{width:82px;height:82px;border-radius:50%;border:8px solid var(--green);display:flex;align-items:baseline;justify-content:center;padding-top:20px}.progress-ring strong{font-size:1.5rem}.progress-ring span{font-size:.75rem}.trophy-shelf{margin:2.5rem 0;display:flex;justify-content:space-between;align-items:center;padding:1.3rem 1.5rem;border:1px solid var(--line);background:var(--paper)}.trophy-shelf h2{margin:0}.trophy-summary{display:flex;gap:.5rem;flex-wrap:wrap;justify-content:flex-end}.trophy-pill{border:1px solid var(--line);padding:.45rem .65rem;border-radius:2rem;font-size:.78rem;font-weight:700;background:white}.exercise-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:1rem}.exercise-card{position:relative;border:1px solid var(--line);background:var(--paper);padding:1.5rem;text-align:left;color:inherit;cursor:pointer;min-height:220px;display:flex;flex-direction:column;transition:transform .15s,box-shadow .15s}.exercise-card:hover{transform:translate(-3px,-3px);box-shadow:5px 5px 0 var(--ink)}.exercise-card .num{font-weight:800;color:var(--berry);font-size:.78rem}.exercise-card h2{font-size:1.55rem;line-height:1.1;margin:.8rem 0}.exercise-card p{color:var(--muted);font-size:.9rem}.card-foot{display:flex;justify-content:space-between;align-items:center;margin-top:auto;font-size:.78rem;font-weight:800}.earned{padding:.25rem .55rem;border-radius:1rem;background:var(--ink);color:white}.back{background:none;border:0;padding:.5rem 0;color:var(--berry);font-weight:800;cursor:pointer}.exercise-hero{padding:2rem 0;border-bottom:2px solid var(--ink)}.exercise-hero h1{font-size:clamp(2.3rem,6vw,5rem);margin:.7rem 0}.exercise-hero p{max-width:720px;color:var(--muted);font-size:1.1rem}.question{border-bottom:1px solid var(--line);padding:2.1rem 0}.qhead{display:grid;grid-template-columns:48px 1fr;gap:1rem}.qnumber{display:grid;place-items:center;width:42px;height:42px;border-radius:50%;background:var(--ink);color:white;font-weight:800}.question h3{font-size:1.12rem;line-height:1.4;margin:.35rem 0 1.2rem}.options{display:grid;grid-template-columns:repeat(2,1fr);gap:.6rem;margin-left:64px}.option{display:flex;align-items:flex-start;gap:.65rem;border:1px solid var(--line);border-radius:.55rem;background:var(--paper);padding:.85rem;cursor:pointer}.option:hover{border-color:var(--ink)}.option:has(input:checked){border:2px solid var(--berry);padding:calc(.85rem - 1px);background:#fff2f6}.option input{accent-color:var(--berry);margin-top:.25rem}.number-input{margin-left:64px;display:flex;align-items:center;gap:.6rem}.number-input input{width:160px;padding:.8rem;border:1px solid var(--line);font:inherit;background:white;border-radius:.4rem}.matching{margin-left:64px;display:grid;gap:.7rem}.match-row{display:grid;grid-template-columns:1fr 1fr;gap:.8rem;align-items:center}.match-row label{font-weight:700}.match-row select{padding:.75rem;border:1px solid var(--line);background:white;border-radius:.4rem;font:inherit}.submit-dock{position:sticky;bottom:0;z-index:8;background:var(--ink);color:white;padding:1rem 1.2rem;display:flex;justify-content:space-between;align-items:center;margin:2rem 0}.submit-dock span{font-size:.8rem;color:#cbd1cf}.results{border:2px solid var(--ink);padding:clamp(1.2rem,4vw,2rem);background:var(--paper);box-shadow:7px 7px 0 var(--green);margin:3rem 0}.result-head{display:flex;justify-content:space-between;gap:1rem;align-items:center}.score-big{font-size:clamp(3rem,7vw,5rem);font-weight:900;letter-spacing:-.06em}.trophy-large{text-align:center}.trophy-icon{display:grid;place-items:center;margin:auto;width:72px;height:72px;border:4px solid currentColor;transform:rotate(45deg);background:white}.trophy-icon span{transform:rotate(-45deg);font-weight:900}.correction{margin-top:1rem;padding:1rem;border-left:5px solid var(--berry);background:white}.correction.correct{border-color:var(--green)}.correction b{display:block}.correction p{margin:.3rem 0 0;color:var(--muted);font-size:.9rem}.leaderboard{margin-top:4rem}.section-title{display:flex;justify-content:space-between;align-items:end;border-bottom:2px solid var(--ink);padding-bottom:1rem}.section-title h2{margin:.2rem 0 0}.no-speed{font-size:.72rem;color:var(--muted)}.leaderboard ol{list-style:none;padding:0;margin:0}.leaderboard li{display:grid;grid-template-columns:42px 1fr auto auto;gap:1rem;align-items:center;border-bottom:1px solid var(--line);padding:1rem .25rem}.rank{font-weight:900;color:var(--berry)}.leaderboard .empty{display:block;color:var(--muted)}footer{border-top:1px solid var(--line);padding:1.3rem clamp(1rem,4vw,4rem);display:flex;justify-content:space-between;font-size:.75rem;color:var(--muted)}@media(max-width:700px){.topbar{height:62px}.brand span:last-child{display:none}.welcome{padding-top:3rem}.name-row{flex-direction:column}.promise-grid span{text-align:center}.exercise-grid{grid-template-columns:1fr}.trophy-shelf{align-items:flex-start;gap:1rem;flex-direction:column}.trophy-summary{justify-content:flex-start}.options,.matching,.number-input{margin-left:0;grid-template-columns:1fr}.qhead{grid-template-columns:40px 1fr;gap:.7rem}.match-row{grid-template-columns:1fr}.submit-dock{margin-left:-1rem;margin-right:-1rem}.submit-dock span{display:none}.result-head{align-items:flex-start}.leaderboard li{grid-template-columns:30px 1fr auto}.leaderboard li time{display:none}.no-speed{display:none}footer{flex-direction:column;gap:.3rem}}

.brand-mark svg{display:block;width:30px;height:30px}

/* Exercise illustration system */
.exercise-card{overflow:hidden;min-width:0}
.exercise-card-art{aspect-ratio:16/9;margin:-1.5rem -1.5rem 1.25rem;overflow:hidden;background:var(--cream);border-bottom:1px solid var(--line)}
.exercise-card-art img{display:block;width:100%;height:100%;object-fit:cover}
.exercise-hero{display:grid;grid-template-columns:minmax(0,1fr) minmax(280px,42%);gap:clamp(1.5rem,4vw,4rem);align-items:center;overflow:hidden}
.exercise-hero-copy{min-width:0}
.exercise-hero-image{display:block;width:100%;max-width:680px;aspect-ratio:16/9;object-fit:cover;border-radius:1rem;box-shadow:7px 7px 0 var(--green)}
@media(max-width:700px){.exercise-card-art{margin:-1.5rem -1.5rem 1.1rem}.exercise-hero{grid-template-columns:minmax(0,1fr);gap:1.25rem;padding-top:1rem}.exercise-hero-image{order:-1;width:calc(100% - 7px);max-width:none;border-radius:.75rem}.exercise-hero h1{font-size:clamp(2.25rem,12vw,3.6rem);overflow-wrap:anywhere}}
@media(min-width:701px) and (max-height:750px){.welcome{padding-top:1.5rem;padding-bottom:2rem}.welcome h1{font-size:clamp(3rem,7vw,5rem);margin-bottom:1rem}.name-card{margin-top:1.5rem}}

/* Profile, avatars and global leaderboard */
.topbar{gap:1rem}.site-home{display:inline-flex;align-items:center;min-height:40px;padding:.45rem .8rem;border:1px solid var(--ink);border-radius:2rem;color:var(--ink);font-weight:800;text-decoration:none;white-space:nowrap}.site-home:hover,.site-home:focus-visible{background:var(--ink);color:var(--cream)}.student-chip{display:flex;align-items:center;gap:.55rem;background:transparent;color:var(--ink);cursor:pointer}.student-chip img{width:32px;height:32px;border-radius:50%;border:2px solid var(--ink)}.student-chip .edit-hint{font-size:.72rem;color:var(--muted);font-weight:700;margin-left:.15rem}.avatar-picker{border:0;padding:0;margin:1.35rem 0 0}.avatar-picker legend{font-weight:800;margin-bottom:.7rem}.avatar-grid{display:grid;grid-template-columns:repeat(10,minmax(42px,1fr));gap:.5rem}.avatar-choice{position:relative;cursor:pointer}.avatar-choice input{position:absolute;opacity:0;pointer-events:none}.avatar-choice img{display:block;width:100%;aspect-ratio:1;border-radius:50%;border:3px solid transparent;background:var(--cream);transition:transform .15s,border-color .15s}.avatar-choice:hover img{transform:translateY(-2px)}.avatar-choice input:checked+img{border-color:var(--green);outline:2px solid var(--cream);outline-offset:2px}.avatar-choice input:focus-visible+img{outline:3px solid var(--green);outline-offset:2px}.personal-stats{display:flex;align-items:center;gap:1.25rem}.personal-stats>div:last-child{display:grid;gap:.15rem;min-width:110px}.personal-stats b{font-size:1.25rem}.general-board{margin-top:clamp(2rem,5vw,4rem)}.board-rule{color:var(--muted);margin:-.25rem 0 1rem}.board-avatar{width:38px;height:38px;border-radius:50%;border:2px solid var(--line);flex:0 0 auto}.leaderboard li{gap:.75rem;grid-template-columns:42px 38px minmax(0,1fr) auto;align-items:center}.leaderboard li b{margin-right:0}.general-board li{grid-template-columns:42px 38px minmax(0,1fr) auto auto}.board-completed{color:var(--muted);font-size:.85rem}.board-score{min-width:65px;text-align:right;color:var(--berry)}.profile-dialog{width:min(680px,calc(100% - 2rem));border:0;border-radius:1rem;padding:0;background:var(--paper);color:var(--ink);box-shadow:0 24px 80px rgba(23,32,30,.35)}.profile-dialog::backdrop{background:rgba(23,32,30,.72)}.profile-dialog form{padding:clamp(1.25rem,5vw,2.25rem)}.dialog-head{display:flex;justify-content:space-between;gap:1rem;align-items:flex-start}.dialog-head h2{font-size:clamp(1.75rem,5vw,2.5rem);margin:.2rem 0 1.2rem}.icon-button{border:1px solid var(--line);background:transparent;border-radius:50%;width:42px;height:42px;font-size:1.7rem;line-height:1;cursor:pointer}.profile-dialog>form>label{display:block;font-weight:800;margin-bottom:.4rem}.profile-dialog input[type=text]{width:100%;border:2px solid var(--line);border-radius:.65rem;padding:.85rem;font:inherit;background:#fff}.profile-dialog .avatar-choice input:checked+img{outline-color:var(--paper)}.profile-dialog .primary{margin-top:1rem;width:100%}
@media(max-width:760px){.topbar{height:auto;min-height:68px;padding:.6rem .75rem;gap:.5rem;flex-wrap:wrap}.brand{order:1}.site-home{order:0}.student-chip{order:2;margin-left:auto}.brand>span:last-child{display:none}.student-chip .edit-hint{display:none}.avatar-grid{grid-template-columns:repeat(5,1fr)}.personal-stats{width:100%;justify-content:space-between}.dashboard-head{align-items:flex-start;flex-wrap:wrap}.leaderboard li{grid-template-columns:auto auto 1fr auto}.board-completed{display:none}.name-row{flex-direction:column}.name-row .primary{width:100%}}

/* Chapter catalog and keyboard flow */
[hidden]{display:none!important}
.chapter-list{display:grid;gap:2.75rem}
.chapter-group{min-width:0;scroll-margin-top:5rem}
.chapter-title{font-size:clamp(1.45rem,3vw,2rem);line-height:1.2;margin:0;padding-top:.7rem;border-top:2px solid var(--ink)}
.chapter-count{color:var(--muted);font-size:.88rem;font-weight:700;margin:.3rem 0 1rem}
.exercise-card h3{font-size:1.55rem;line-height:1.1;margin:.8rem 0}
.exercise-card:focus-visible,.back:focus-visible,.brand:focus-visible,.student-chip:focus-visible,.primary:focus-visible,.icon-button:focus-visible{outline:3px solid var(--berry);outline-offset:3px}
.option:focus-within{outline:3px solid var(--berry);outline-offset:2px}
.match-row select:focus-visible,.number-input input:focus-visible{outline:3px solid var(--berry);outline-offset:2px}
.quiz-error{color:#a91e4c;font-weight:700;min-height:1.5rem}
.results:focus{outline:3px solid var(--berry);outline-offset:5px}
.board-score{white-space:nowrap}
@media(max-width:700px){.card-foot{flex-wrap:wrap;gap:.4rem}.general-board li{grid-template-columns:30px 38px minmax(0,1fr) auto;gap:.4rem}.general-board .board-completed{display:block;grid-column:3 / 5;grid-row:2}.board-score{font-size:.82rem}.submit-dock{gap:.5rem}.submit-dock .primary{max-width:60%}}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{scroll-behavior:auto!important;transition:none!important}}
