@font-face{font-family:Manrope;font-style:normal;font-weight:200 800;font-display:swap;src:url(/fonts/manrope-latin.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Manrope;font-style:normal;font-weight:200 800;font-display:swap;src:url(/fonts/manrope-latin-ext.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:OpenDyslexic;font-style:normal;font-weight:400;font-display:swap;src:url(/fonts/opendyslexic-regular.woff2)format("woff2")}@font-face{font-family:OpenDyslexic;font-style:normal;font-weight:700;font-display:swap;src:url(/fonts/opendyslexic-bold.woff2)format("woff2")}@font-face{font-family:OpenDyslexic;font-style:italic;font-weight:400;font-display:swap;src:url(/fonts/opendyslexic-italic.woff2)format("woff2")}:root{--font-body:"Manrope", system-ui, -apple-system, "Segoe UI", Roboto, "Noto Sans", "PingFang SC", "Microsoft YaHei", sans-serif;--ink:#1b2430;--muted:#5b6673;--line:#d6dbe1;--paper:#f4f6fa;--card:#fff;--brand:#0e1b2e;--brand-2:#16294a;--brand-3:#1f3a66;--brand-ink:#fff;--spark:#5ec8f2;--spark-dark:#1a9fd6;--meadow:#2a7f5a;--meadow-ink:#1f6446;--meadow-light:#e2f4ea;--ember:#f06a2f;--ember-dark:#d2521c;--ember-ink:#b0431a;--ember-glow:#f06a2f59;--blossom:var(--spark);--blossom-centre:var(--spark);--accent:#1d5fd1;--accent-ink:#fff;--focus:#ffb703;--radius:12px;--shadow:0 1px 2px #0e1b2e0f, 0 6px 18px #0e1b2e12;--shadow-lift:0 2px 4px #0e1b2e14, 0 14px 32px #0e1b2e1f;font-family:var(--font-body);color:var(--ink);background:var(--paper);font-size:16px;line-height:1.5}:root[data-font=dyslexic]{--font-body:"OpenDyslexic", "Manrope", system-ui, sans-serif;font-size:15px}:root[data-font=dyslexic] h1,:root[data-font=dyslexic] h2,:root[data-font=dyslexic] h3{letter-spacing:0}:root[data-spacing=wide]{letter-spacing:.04em;word-spacing:.12em;line-height:1.75}:root[data-spacing=wide] p,:root[data-spacing=wide] li{margin-block:.6em}:root[data-overlay] body:after{content:"";z-index:2147483647;pointer-events:none;background:var(--overlay-tint,transparent);mix-blend-mode:multiply;position:fixed;inset:0}:root[data-overlay=cream]{--overlay-tint:#fff4dc}:root[data-overlay=yellow]{--overlay-tint:#fff3a8}:root[data-overlay=peach]{--overlay-tint:#ffdcc4}:root[data-overlay=pink]{--overlay-tint:#ffd6e5}:root[data-overlay=green]{--overlay-tint:#d5f2dc}:root[data-overlay=blue]{--overlay-tint:#d2e6ff}:root[data-overlay=grey]{--overlay-tint:#dcdfe4}.reading-settings{display:inline-flex;position:relative}.reading-toggle{font:inherit;letter-spacing:-.02em;border:1px solid var(--line);background:var(--card);color:var(--ink);cursor:pointer;border-radius:999px;padding:.25rem .55rem;font-size:.9rem;font-weight:700;line-height:1.2}.reading-settings.on-dark .reading-toggle{color:#fff;background:0 0;border-color:#ffffff59}.reading-toggle.active{border-color:var(--spark);box-shadow:inset 0 0 0 1px var(--spark)}.reading-toggle:focus-visible{outline:3px solid var(--focus);outline-offset:2px}.reading-panel{z-index:50;border-radius:var(--radius);background:var(--card);width:min(20rem,100vw - 2rem);color:var(--ink);border:1px solid var(--line);box-shadow:var(--shadow-lift);text-align:left;letter-spacing:normal;word-spacing:normal;padding:.9rem 1rem .7rem;font-size:.95rem;position:absolute;top:calc(100% + .5rem);right:0}.reading-title{margin:0 0 .6rem;font-weight:700}.reading-option{cursor:pointer;grid-template-columns:auto 1fr;align-items:start;gap:.6rem;margin:0 0 .6rem;display:grid}.reading-option input{width:1.05rem;height:1.05rem;margin-top:.25rem}.reading-option small{color:var(--muted);font-size:.8rem;display:block}.reading-overlay{border:0;margin:.2rem 0 0;padding:0}.reading-overlay legend{margin-bottom:.4rem;padding:0;font-weight:600}.reading-swatches{grid-template-columns:repeat(4,1fr);gap:.35rem;display:grid}.reading-swatch{cursor:pointer;border:1px solid #0000;border-radius:8px;justify-items:center;gap:.2rem;padding:.3rem .2rem;font-size:.75rem;display:grid;position:relative}.reading-swatch:has(input:checked){border-color:var(--accent);background:#eef4fb}.reading-swatch:has(input:focus-visible){outline:3px solid var(--focus)}.reading-swatch input{opacity:0;width:1px;height:1px;position:absolute}.swatch-colour{border:1px solid var(--line);background:#fff;border-radius:50%;width:1.6rem;height:1.6rem}.swatch-cream .swatch-colour{background:#fff4dc}.swatch-yellow .swatch-colour{background:#fff3a8}.swatch-peach .swatch-colour{background:#ffdcc4}.swatch-pink .swatch-colour{background:#ffd6e5}.swatch-green .swatch-colour{background:#d5f2dc}.swatch-blue .swatch-colour{background:#d2e6ff}.swatch-grey .swatch-colour{background:#dcdfe4}.reading-note{color:var(--muted);margin:.6rem 0 0;font-size:.78rem}h1,h2,h3{letter-spacing:-.01em;line-height:1.2}a{color:var(--accent)}*{box-sizing:border-box}body{margin:0}.app{flex-direction:column;height:100vh;display:flex}.app-header{background:var(--brand);color:var(--brand-ink);align-items:center;gap:1rem;padding:.4rem 1rem;display:flex}.app-header h1{margin:0;font-size:1.1rem}.app-brand{color:inherit;align-items:center;gap:.45rem;font-weight:700;text-decoration:none;display:inline-flex}.app-header .status{color:#fffc}.app-header .exercise-name{color:#ffffffeb;font-weight:600}.app-header .header-link,.app-header .user-menu,.app-header .user-menu .link{color:var(--brand-ink);opacity:.9;text-decoration:none}.app-header .header-link:hover,.app-header .user-menu .link:hover{opacity:1;text-decoration:underline}.status{color:var(--muted);margin:0}.version{font-size:.85rem}.toolbar{border-bottom:1px solid var(--line);background:#fff;flex-wrap:wrap;align-items:center;gap:.75rem;padding:.5rem 1rem;display:flex}.toolbar label{align-items:center;gap:.5rem;display:inline-flex}.toolbar .hint{color:var(--muted);margin-left:auto;font-size:.9rem}.font-size{align-items:center;gap:.25rem;display:inline-flex}button,select{font:inherit;border:1px solid var(--line);color:var(--ink);cursor:pointer;background:#fff;border-radius:6px;padding:.4rem .9rem}button.primary{background:var(--ember);border-color:var(--ember);color:var(--accent-ink);font-weight:600}button:disabled{opacity:.5;cursor:not-allowed}button:focus-visible,select:focus-visible,.editor .cm-editor.cm-focused,.console:focus-within{outline:3px solid var(--focus);outline-offset:2px}.panes{flex:1;grid-template-rows:3fr 2fr;min-height:0;display:grid}.top{grid-template-columns:1fr;min-height:0;display:grid}.top.with-turtle{grid-template-columns:1fr 1fr}.top .pane+.pane{border-top:none;border-left:1px solid var(--line)}.turtle-canvas{flex:1;width:100%;height:100%;min-height:0;display:block}.pane{flex-direction:column;min-width:0;min-height:0;display:flex}.pane[hidden]{display:none}.pane+.pane{border-top:1px solid var(--line)}.pane-title{color:var(--muted);border-bottom:1px solid var(--line);background:#e9edf2;padding:.2rem .75rem;font-size:.85rem}.editor,.editor .cm-editor{height:100%;min-height:0}.editor .cm-editor{background:#fff}.console{background:#fff;height:100%;min-height:0;padding:.25rem}.header-link{color:var(--accent);margin-left:auto}.gallery{min-height:100vh}.gallery-intro{color:var(--muted);max-width:70rem;margin:0;padding:.75rem 1rem}.gallery-grid{gap:1rem;padding:0 1rem 2rem;display:grid}.gallery-item{border:1px solid var(--line);background:#fff;border-radius:8px;padding:.75rem 1rem 1rem}.gallery-item.running{outline:3px solid var(--focus)}.gallery-item h2{margin:0 0 .5rem;font-size:1.05rem}.gallery-pair{grid-template-columns:1fr 1fr;gap:1rem;display:grid}.gallery-pair figure{margin:0}.gallery-pair figcaption{color:var(--muted);margin-top:.25rem;font-size:.85rem}.gallery-canvas,.gallery-pair img{aspect-ratio:4/3;border:1px solid var(--line);object-fit:contain;background:#fff;width:100%;display:block}.gallery-output{background:var(--paper);border:1px solid var(--line);white-space:pre-wrap;padding:.5rem;font-size:.85rem}.gallery-item pre{font-size:.85rem;overflow-x:auto}@media (width<=900px){.gallery-pair{grid-template-columns:1fr}}.workspace{flex:1;grid-template-columns:1fr;min-height:0;display:grid}.with-instructions .workspace{grid-template-columns:minmax(18rem,1fr) minmax(0,2fr)}.instructions-pane{border-right:1px solid var(--line);overflow:hidden}.instructions{background:#fff;flex:1;min-height:0;padding:0 1rem 2rem;overflow-y:auto}.exercise-name{color:var(--muted)}.header-links{gap:1rem;margin-left:auto;display:flex}.header-links .header-link{margin-left:0}.save-state{color:var(--muted);font-size:.9rem}.pane.bottom{overflow:hidden}.tabs{gap:.25rem;padding:0 .5rem;display:flex}.tab{color:var(--muted);background:0 0;border:none;border-radius:6px 6px 0 0;padding:.25rem .75rem;font-size:.9rem}.tab.active{color:var(--ink);background:#fff;font-weight:600}.tab-badge{background:var(--accent);color:#fff;border-radius:999px;margin-left:.4rem;padding:0 .4rem;font-size:.75rem;font-weight:600;display:inline-block}.tab-badge.warn{background:#b45309}.console[hidden],.checks-host[hidden]{display:none}.checks-host{background:#fff;flex:1;min-height:0;overflow-y:auto}.checks{gap:1rem;padding:.5rem 1rem 1.5rem;display:grid}.checks h2{margin:.5rem 0 .25rem;font-size:1rem}.checks h3{color:var(--muted);margin:.5rem 0 .25rem;font-size:.85rem}.muted{color:var(--muted)}.result-summary{font-weight:600}.result-summary.all-passed{color:#15803d}.test-results{gap:.4rem;margin:0;padding:0;list-style:none;display:grid}.test-result{border:1px solid var(--line);border-left-width:4px;border-radius:6px;padding:.35rem .75rem}.test-result.verdict-passed{border-left-color:#15803d}.test-result:not(.verdict-passed){border-left-color:#c0392b}.test-result summary{cursor:pointer}.verdict-icon{width:1.2rem;font-weight:700;display:inline-block}.verdict-passed .verdict-icon{color:#15803d}.test-result:not(.verdict-passed) .verdict-icon{color:#c0392b}.test-result kbd{border:1px solid var(--line);background:var(--paper);border-radius:4px;margin-right:.3rem;padding:0 .35rem;font-family:Menlo,Consolas,monospace;display:inline-block}.compare{grid-template-columns:1fr 1fr;gap:.75rem;display:grid}.checks pre{background:var(--paper);border:1px solid var(--line);white-space:pre-wrap;border-radius:4px;margin:0;padding:.5rem;font-size:.9rem}.checks pre.stderr{color:#c0392b}.pls-warnings{margin:0;padding-left:1.25rem}button.link{color:var(--accent);cursor:pointer;background:0 0;border:none;padding:0;text-decoration:underline}.page{padding:0 0 3rem}.page-body,.page-title-inner,.page>.page-message{max-width:66rem;margin:0 auto;padding:0 1.25rem}.page-body{padding-top:1.25rem}.site-header{background:var(--brand);color:var(--brand-ink);margin-bottom:0}.site-bar{flex-wrap:wrap;align-items:center;gap:1.25rem;max-width:66rem;margin:0 auto;padding:.55rem 1.25rem;display:flex}.site-brand{color:inherit;letter-spacing:-.01em;align-items:center;gap:.5rem;font-size:1.1rem;font-weight:700;text-decoration:none;display:inline-flex}.site-nav{flex-wrap:wrap;gap:.15rem;display:flex}.site-nav-link{color:#ffffffd9;border-radius:6px;padding:.3rem .65rem;font-size:.95rem;text-decoration:none}.site-nav-link:hover,.site-nav-link.active{color:#fff;background:#ffffff1f}.site-nav-link.active{font-weight:600}.site-user{align-items:center;gap:.75rem;margin-left:auto;font-size:.95rem;display:inline-flex}.site-user-name{color:#ffffffd9}.site-signout{color:#fff;background:0 0;border-color:#ffffff59;padding:.25rem .7rem}.site-signin{color:var(--brand);background:#fff;border-radius:6px;padding:.3rem .8rem;font-weight:600;text-decoration:none}.page-title-block{background:var(--brand-2);padding:1.5rem 0}.page-title-block h1{margin:.1rem 0 .35rem;font-size:2rem}.page-title-block .breadcrumbs,.page-title-block .breadcrumbs a{color:#ffffffbf}.page-title-block .page-subtitle{color:#ffffffd9;max-width:52rem}.page-title-block .notice{color:var(--ink)}.eyebrow{text-transform:uppercase;letter-spacing:.08em;color:#ffffffb3;margin:0;font-size:.75rem;font-weight:600}.title-row{flex-wrap:wrap;justify-content:space-between;align-items:flex-end;gap:1rem;display:flex}.course-progress{margin-top:.75rem}.course-progress-bar,.course-progress-text{max-width:28rem}.course-progress-bar{background:#fff3;border-radius:999px;height:.6rem;overflow:hidden}.course-progress-bar span{background:var(--ember);border-radius:999px;height:100%;display:block}.course-progress-text{color:#ffffffd9;margin:.35rem 0 0;font-size:.9rem}.page-subtitle{color:var(--muted);margin:0 0 .75rem}.page-message{color:var(--muted);padding:1rem}.breadcrumbs{color:var(--muted);font-size:.9rem}.button{border:1px solid var(--line);color:var(--ink);background:#fff;border-radius:6px;padding:.5rem 1rem;text-decoration:none;display:inline-block}.button.primary{background:var(--ember);border-color:var(--ember);color:var(--accent-ink);font-weight:600}button.primary:hover:not(:disabled){background:var(--ember-dark);border-color:var(--ember-dark)}.level{margin-bottom:2.25rem}.level h2{flex-wrap:wrap;align-items:center;gap:.6rem;margin-bottom:.25rem;display:flex}.level-number{background:var(--brand);color:#fff;border-radius:8px;place-items:center;width:2rem;height:2rem;font-size:1rem;display:inline-grid}.level-name:first-letter{text-transform:uppercase}.level-progress{color:#15803d;background:#dcfce7;border-radius:999px;margin-left:auto;padding:.15rem .6rem;font-size:.85rem;font-weight:500}.level-description{color:var(--muted)}.exercise-list{gap:.4rem;margin:0;padding:0;list-style:none;display:grid}.exercise-row{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);grid-template-columns:1fr auto auto;align-items:center;gap:.75rem;padding:.6rem .9rem;transition:transform 80ms;display:grid}.exercise-row:hover{transform:translateY(-1px)}.exercise-link{color:inherit;grid-template-columns:2rem 1fr;column-gap:.5rem;text-decoration:none;display:grid}.exercise-link:hover .exercise-title{text-decoration:underline}.exercise-number{color:var(--muted);grid-row:1/span 2;font-weight:600}.exercise-title{font-weight:600}.exercise-summary{color:var(--muted);font-size:.9rem}.exercise-kind{color:#b45309;white-space:nowrap;font-size:.9rem}.badge{white-space:nowrap;border-radius:999px;padding:.15rem .5rem;font-size:.8rem}.badge-passed{color:#15803d;background:#dcfce7}.pager{border-top:1px solid var(--line);justify-content:space-between;gap:1rem;margin-top:2rem;padding-top:1rem;display:flex}.resources{margin-top:1.5rem}.flowcharts{grid-template-columns:repeat(auto-fill,minmax(16rem,1fr));gap:1rem;display:grid}.flowcharts figure{margin:0}.flowcharts img{border:1px solid var(--line);background:#fff;width:100%}.flowcharts figcaption{color:var(--muted);font-size:.85rem}.exercise-content{line-height:1.55}.exercise-content h1{border-top:1px solid var(--line);margin:1.5rem 0 .5rem;padding-top:.75rem;font-size:1.4rem}.exercise-content h2{margin:1.25rem 0 .5rem;font-size:1.15rem}.exercise-content h4,.exercise-content h5{margin:1rem 0 .25rem;font-size:1rem}.exercise-content .exercise-intro{grid-template-columns:1fr auto;align-items:start;gap:1rem;display:grid}.exercise-content .exercise-icon{grid-area:1/2/span 3;width:7rem}.exercise-content .exercise-icon-emoji{text-align:center;grid-area:1/2/span 3;width:7rem;font-size:4.5rem;line-height:1}.flowcharts img,.flowcharts svg{border:1px solid var(--line);border-radius:var(--radius);background:#fff;max-width:100%}.exercise-content .exercise-intro p:first-of-type{font-size:1.05rem;font-weight:600}.exercise-content .video{aspect-ratio:16/9;max-width:40rem;margin:.75rem 0}.exercise-content .video iframe{border:0;border-radius:6px;width:100%;height:100%}.exercise-content .video-link{margin:.5rem 0}.exercise-content details{border:1px solid var(--line);background:#fff;border-radius:6px;margin:.4rem 0;padding:.4rem .75rem}.exercise-content summary{cursor:pointer}.exercise-content .knowledge-organiser>summary code{font-weight:600}.exercise-content .question{background:#eef4fb;border-radius:6px;grid-template-columns:3rem 1fr;align-items:start;gap:.75rem;margin:.75rem 0;padding:.5rem .75rem;display:grid}.exercise-content .question-icon{width:3rem}.exercise-content .question p{margin:.25rem 0}.exercise-content .illustration{margin:.75rem 0}.exercise-content .illustration img{border:1px solid var(--line);background:#fff;max-width:100%}.exercise-content .exercise-figure{margin:.75rem 0 1rem}.exercise-content .exercise-figure img{border:1px solid var(--line);background:#fff;border-radius:6px;max-width:min(100%,360px);height:auto;display:block}.exercise-content .exercise-figure figcaption{color:var(--muted);margin-top:.35rem;font-size:.9em}.exercise-content .marks{float:right;color:#b45309;font-size:.9rem;font-weight:400}.exercise-content pre{border:1px solid var(--line);background:#f4f6f8;border-radius:6px;padding:.5rem .75rem;font-size:.9rem;overflow-x:auto}.exercise-content code{font-family:Menlo,Consolas,DejaVu Sans Mono,monospace;font-size:.92em}.exercise-content kbd{border:1px solid var(--line);background:#f4f6f8;border-radius:4px;padding:0 .3rem;font-family:Menlo,Consolas,DejaVu Sans Mono,monospace}.exercise-content table{border-collapse:collapse;margin:.5rem 0}.exercise-content td,.exercise-content th{border:1px solid var(--line);text-align:left;padding:.25rem .5rem}.exercise-content blockquote{border-left:4px solid var(--line);color:var(--muted);margin:.5rem 0;padding:.25rem .75rem}.data-files h2{font-size:1.1rem}.data-files pre{border:1px solid var(--line);white-space:pre;background:#f4f6f8;border-radius:6px;padding:.5rem;font-size:.85rem;overflow-x:auto}@media (width<=900px){.with-instructions .workspace{grid-template-rows:minmax(0,1fr) minmax(0,2fr);grid-template-columns:1fr}.instructions-pane{border-right:none;border-bottom:1px solid var(--line)}.compare{grid-template-columns:1fr}}.exercise-content>hr{display:none}.exercise-content .exercise-intro+hr+h1,.exercise-content .exercise-intro+h1{border-top:none;padding-top:0}.assessment-point{background:#fff8ec;border:1px solid #f3d9b1;border-radius:8px;padding:.75rem 1rem 1rem}.assessment-point h2{color:#92400e}.user-menu{align-items:center;gap:.75rem;display:inline-flex}.user-name{font-weight:600}.notice{color:#92400e;background:#fff8ec;border:1px solid #f3d9b1;border-radius:6px;margin:.5rem 0 0;padding:.5rem .75rem}.error{color:#c0392b}.sign-in .button{font-size:1.05rem}.dev-login,.password-form{border:1px dashed var(--line);background:#fff;border-radius:8px;gap:.75rem;max-width:28rem;margin-top:1.5rem;padding:1rem;display:grid}.dev-login h2,.password-form h2{margin:0;font-size:1.1rem}.dev-login input[type=text],.dev-login input:not([type]),.inline-form input{font:inherit;border:1px solid var(--line);border-radius:6px;padding:.4rem .6rem}.dev-login label,.password-form label,.inline-form label{gap:.25rem;display:grid}.dev-login fieldset{border:1px solid var(--line);border-radius:6px;flex-wrap:wrap;gap:1rem;display:flex}.dev-login .checkbox{align-items:center;gap:.35rem;display:inline-flex}.inline-form{flex-wrap:wrap;align-items:end;gap:.5rem;margin:1rem 0;display:flex}.class-list{padding-left:1.25rem}.class-list li{margin:.4rem 0}table.students{border-collapse:collapse;background:#fff;width:100%}table.students th,table.students td{text-align:left;border-bottom:1px solid var(--line);padding:.4rem .6rem}.student-code pre{border:1px solid var(--line);background:#fff;border-radius:6px;padding:.75rem;overflow-x:auto}.badge-todo{color:#374151;background:#e5e7eb}.exercise-row.kind-assignment{border-left:4px solid #92400e}.assignments{margin:1.5rem 0}.assignments table.students td:first-child{max-width:24rem}.set-form{border:1px solid var(--line);background:#fff;border-radius:8px;grid-template-columns:repeat(auto-fit,minmax(14rem,1fr));align-items:end;gap:.75rem;margin:1rem 0;padding:.75rem;display:grid}.set-form label{gap:.25rem;display:grid}.set-form input,.set-form select{font:inherit;border:1px solid var(--line);border-radius:6px;padding:.4rem .6rem}.author{max-width:80rem}.author-form{gap:1rem;display:grid}.author-row{flex-wrap:wrap;align-items:end;gap:.75rem 1rem;display:flex}.author-row.two{grid-template-columns:1fr 1fr;align-items:start;display:grid}.author-form label:not(.checkbox),.author-form .label{gap:.25rem;font-size:.9rem;font-weight:600;display:grid}.author-form input:not([type=checkbox]),.author-form select,.author-form textarea{font:inherit;border:1px solid var(--line);background:#fff;border-radius:6px;padding:.4rem .6rem;font-weight:400}.author-form textarea{box-sizing:border-box;width:100%;font-family:Menlo,Consolas,DejaVu Sans Mono,monospace;font-size:.9rem}.author-form .checkbox{align-items:center;gap:.4rem;font-weight:400;display:inline-flex}.author-editor{border:1px solid var(--line);background:#fff;border-radius:6px;height:18rem;overflow:hidden}.author-editor .editor,.author-editor .cm-editor{height:100%}.preview{border:1px solid var(--line);background:#fff;border-radius:6px;min-height:10rem;padding:.5rem 1rem}.author-section{border-top:1px solid var(--line);padding-top:.75rem}.author-section h2{margin:0 0 .25rem;font-size:1.1rem}.test-editor,.data-file{border:1px solid var(--line);background:#fafbfc;border-radius:8px;gap:.5rem;margin:.5rem 0;padding:.75rem;display:grid}.data-file-head{justify-content:space-between;display:flex}.test-report{margin:.5rem 0;padding-left:1.25rem}@media (width<=900px){.author-row.two{grid-template-columns:1fr}}.welcome{justify-content:center;align-items:center;min-height:100vh;display:flex}.welcome-body{text-align:center;max-width:28rem;padding:2rem 1.5rem}.welcome-body h1{margin:0 0 .5rem;font-size:2.25rem}.welcome-lead{margin:0 0 1.5rem;font-size:1.2rem}.welcome .button{padding:.7rem 1.4rem;font-size:1.05rem}.progress{margin:1rem 0 1.5rem}.progress-tabs{flex-wrap:wrap;margin-bottom:.5rem;padding:0}.progress-tabs .tab{border:1px solid var(--line);background:#fff;border-radius:6px}.progress-tabs .tab.active{background:var(--accent);color:var(--accent-ink);border-color:var(--accent)}.progress-scroll{overflow-x:auto}table.progress-grid{border-collapse:collapse;background:#fff;font-size:.9rem}table.progress-grid th,table.progress-grid td{border:1px solid var(--line);text-align:center;vertical-align:bottom;padding:.3rem .4rem}table.progress-grid th.progress-name,table.progress-grid td.progress-name{text-align:left;white-space:nowrap;min-width:10rem}table.progress-grid tfoot th.progress-name{color:var(--muted);font-weight:400}.progress-exercise{width:4.6rem;max-width:4.6rem;font-weight:400}.progress-number{font-weight:600;display:block}.progress-title{color:var(--muted);text-overflow:ellipsis;white-space:nowrap;font-size:.7rem;display:block;overflow:hidden}.progress-cell{min-width:2.6rem;font-weight:600}.progress-cell a{color:inherit;padding:.2rem 0;text-decoration:none;display:block}.progress-cell.passed{color:#15803d;background:#dcfce7}.progress-cell.partial{color:#92400e;background:#fef3c7}.progress-cell.started{color:var(--muted);background:#eef1f5}.progress-total{white-space:nowrap;color:var(--muted);font-weight:400}.progress-key{font-size:.85rem}.progress-key .progress-cell{border:1px solid var(--line);padding:0 .4rem;display:inline-block}.visually-hidden{clip:rect(0 0 0 0);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.help-panel{box-sizing:border-box;height:100%;padding:.75rem 1rem;overflow:auto}.help-form label{gap:.25rem;max-width:40rem;margin:.5rem 0;display:grid}.help-form textarea{font:inherit;border:1px solid var(--line);border-radius:6px;padding:.4rem .6rem}.help-status{border-left:4px solid var(--accent);margin-bottom:.75rem;padding:.25rem .75rem}.help-replies ul{padding-left:1.2rem}.help-replies li{margin:.3rem 0}.live{margin:1rem 0 1.5rem}.help-queue{gap:.35rem;margin:0 0 .75rem;padding:0;list-style:none;display:grid}.help-queue li{background:#fffbeb;border-left:4px solid #b45309;border-radius:0 6px 6px 0;padding:.4rem .6rem}.help-queue li.seen{border-left-color:var(--line);background:#f8fafc}.help-queue .help-message{margin-top:.15rem;font-style:italic;display:block}.live-table tr.idle td{color:var(--muted)}.signal{color:#991b1b;white-space:nowrap;background:#fee2e2;border-radius:999px;margin:.1rem .3rem .1rem 0;padding:.1rem .5rem;font-size:.8rem;display:inline-block}.signal.help{color:#92400e;background:#fef3c7;text-decoration:none}.small{font-size:.85rem}.help-message-large{font-size:1.1rem;font-style:italic}.help-detail{grid-template-columns:minmax(0,3fr) minmax(0,2fr);align-items:start;gap:1rem;display:grid}@media (width<=800px){.help-detail{grid-template-columns:1fr}}.code-lines{border:1px solid var(--line);background:#fff;border-radius:6px;margin:0;padding:.5rem 0 .5rem 3.5rem;font-family:Menlo,Consolas,DejaVu Sans Mono,monospace;font-size:.9rem;overflow-x:auto}.code-lines li{white-space:pre;cursor:pointer;padding:0 .5rem}.code-lines li::marker{color:var(--muted)}.code-lines li:hover{background:#f1f5f9}.code-lines li.chosen{background:#fef3c7}.shell-output{border:1px solid var(--line);white-space:pre-wrap;background:#fff;border-radius:6px;max-height:24rem;padding:.5rem .75rem;font-size:.85rem;overflow:auto}.reply-form{max-width:48rem;margin-top:1rem}.reply-form label{gap:.25rem;display:grid}.reply-form textarea{font:inherit;border:1px solid var(--line);border-radius:6px;padding:.4rem .6rem}.reply-actions{flex-wrap:wrap;gap:.5rem;margin-top:.5rem;display:flex}.notice{background:#ecfdf5;border-left:4px solid #15803d;border-radius:0 6px 6px 0;padding:.4rem .75rem}.team-picker select{font:inherit;border:1px solid var(--line);border-radius:6px;min-width:16rem;padding:.4rem .6rem}.feedback-toolbar{flex-wrap:wrap;align-items:center;gap:.75rem;margin:.75rem 0;display:flex}.feedback-list{gap:.75rem;margin:0;padding:0;list-style:none;display:grid}.feedback-row{border:1px solid var(--line);background:#fff;border-left-width:4px;border-radius:6px;padding:.6rem .8rem}.feedback-row.draft{border-left-color:#b45309}.feedback-row.approved{border-left-color:#15803d}.feedback-row textarea{box-sizing:border-box;width:100%;font:inherit;border:1px solid var(--line);border-radius:6px;margin:.5rem 0 .25rem;padding:.4rem .6rem}.teacher-note{margin:.25rem 0;font-size:.9rem}.feedback-actions{flex-wrap:wrap;align-items:center;gap:.5rem;margin-top:.4rem;display:flex}.feedback-cards,.flag-list{gap:.75rem;margin:0;padding:0;list-style:none;display:grid}.feedback-card,.flag-list li{border:1px solid var(--line);background:#fff;border-radius:6px;padding:.6rem .9rem}.flag-list li.escalated{border-color:#991b1b}.feedback-card-title{margin:0 0 .3rem}.feedback-text{white-space:pre-wrap;margin:.3rem 0}blockquote.feedback-text{border-left:3px solid var(--line);color:var(--muted);padding-left:.75rem}.flag-form{flex-wrap:wrap;align-items:end;gap:.75rem;margin-top:.5rem;display:flex}.flag-form label{gap:.25rem;font-size:.9rem;display:grid}.flag-form select,.flag-form input{font:inherit;border:1px solid var(--line);border-radius:6px;padding:.35rem .5rem}.hints{margin-top:1rem}.hint-actions{flex-wrap:wrap;align-items:center;gap:.75rem;display:flex}.hint-message{border-left:4px solid var(--line);padding:.3rem .75rem}.hint-list{padding-left:1.2rem}.hint-item{margin:.5rem 0}.hint-item p{margin:.2rem 0}.flag-inline select{font:inherit;padding:.25rem .4rem}.reply-actions input{font:inherit;border:1px solid var(--line);border-radius:6px;min-width:18rem;padding:.35rem .5rem}.cell-hints{vertical-align:super;margin-left:.15rem;font-size:.65rem}.exercise-content .video{aspect-ratio:16/9;border-radius:var(--radius);background:#000;max-width:52rem;margin:.75rem 0 1.25rem;position:relative;overflow:hidden}.exercise-content .video iframe{border:0;width:100%;height:100%;position:absolute;inset:0}.welcome{background:radial-gradient(60rem 30rem at 80% -10%, #d9531e2e, transparent 60%), var(--brand);min-height:100vh;color:var(--brand-ink);justify-content:center;align-items:center;display:flex}.welcome-mark{color:var(--ember);margin-bottom:.5rem}.welcome-body h1{color:#fff}.welcome-lead{color:#ffffffd9}.welcome .muted{color:#ffffffb3}.welcome .page-message{color:#ffffffd9}.welcome .dev-login,.welcome .password-form{text-align:left;color:var(--ink);border-radius:var(--radius);background:#fff;margin-top:1.5rem;padding:1rem}.welcome .dev-login h2{margin-top:0}.welcome .dev-login .muted,.welcome .password-form .muted{color:var(--muted)}.welcome a,.welcome .button{color:#fff}.students,table.progress-grid,.live-table{border-radius:var(--radius);box-shadow:var(--shadow);overflow:hidden}.wordmark{align-items:center;gap:.45rem;font-weight:700;display:inline-flex}.button.ghost{color:#fff;background:0 0;border-color:#ffffff80}.button.ghost:hover{border-color:#fff}.hero{background:radial-gradient(50rem 24rem at 85% -20%, #f4a8b838, transparent 60%), radial-gradient(40rem 20rem at 10% 110%, #2f7d5b59, transparent 60%), linear-gradient(180deg, var(--brand) 0%, var(--brand-2) 100%);color:var(--brand-ink);position:relative;overflow:hidden}.hero-inner{text-align:center;max-width:66rem;margin:0 auto;padding:4rem 1.25rem 7rem}.hero-mark{color:#fff;margin-bottom:.75rem}.hero h1{letter-spacing:-.02em;max-width:22ch;margin:.25rem auto 1rem;font-size:clamp(2rem,5vw,3.2rem);font-weight:800}.hero .eyebrow{color:var(--blossom)}.hero-lead{color:#ffffffe0;max-width:44rem;margin:0 auto 1.75rem;font-size:1.15rem}.hero-actions{flex-wrap:wrap;justify-content:center;gap:.75rem;display:flex}.hero-note{color:#ffffffa6;margin-top:1.25rem;font-size:.9rem}.hero-field{width:100%;height:6rem;display:block;position:absolute;bottom:-1px;left:0;right:0}.hero-field path{fill:var(--paper)}.features-inner,.how-inner{max-width:66rem;margin:0 auto;padding:1rem 1.25rem 2rem}.feature-grid{grid-template-columns:repeat(auto-fit,minmax(14rem,1fr));gap:1rem;margin:-3.5rem 0 0;padding:0;list-style:none;display:grid;position:relative}.feature{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);padding:1.1rem 1.2rem 1.2rem}.feature h3{margin:.5rem 0 .35rem;font-size:1.05rem}.feature p{color:var(--muted);margin:0;font-size:.95rem}.feature-icon{background:var(--meadow-light);width:2.4rem;height:2.4rem;color:var(--meadow);border-radius:10px;place-items:center;font-size:1.1rem;font-weight:700;display:inline-grid}.how{border-top:1px solid var(--line);border-bottom:1px solid var(--line);background:#fff;margin-top:1rem}.how h2{margin:1.25rem 0 .75rem}.steps{counter-reset:step;grid-template-columns:repeat(auto-fit,minmax(14rem,1fr));gap:1rem 1.5rem;margin:0 0 1rem;padding-left:1.25rem;display:grid}.steps li{color:var(--muted)}.steps li strong{color:var(--ink)}.steps li::marker{color:var(--ember);font-weight:700}.site-footer{border-top:1px solid var(--line);background:#fff;margin-top:3rem}.site-footer-inner{flex-wrap:wrap;align-items:center;gap:1.5rem;max-width:66rem;margin:0 auto;padding:1.5rem 1.25rem;display:flex}.site-footer nav{gap:1rem;display:flex}.site-footer nav a{color:var(--muted);text-decoration:none}.site-footer nav a:hover{color:var(--ink);text-decoration:underline}.site-footer p{margin:0 0 0 auto}.about-body{grid-template-columns:12rem minmax(0,1fr);gap:2rem;display:grid}@media (width<=800px){.about-body{grid-template-columns:1fr}}.about-nav{flex-direction:column;align-self:start;gap:.35rem;font-size:.95rem;display:flex;position:sticky;top:1rem}.about-nav a{color:var(--muted);border-left:3px solid #0000;padding:.2rem .5rem;text-decoration:none}.about-nav a:hover{border-left-color:var(--ember);color:var(--ink)}.about-content{min-width:0}.about section{max-width:44rem;margin-bottom:2.25rem;scroll-margin-top:1rem}.about section h2{margin-bottom:.5rem}.about section h2:before{content:"";background:var(--blossom);border-radius:2px;width:2.5rem;height:4px;margin-bottom:.6rem;display:block}.about ul{padding-left:1.2rem}.about li{margin-bottom:.5rem}.level-number{background:var(--meadow)}.badge-passed,.level-progress{background:var(--meadow-light);color:#1f6b4a}.course-progress-bar span{background:linear-gradient(90deg, var(--ember), var(--blossom))}.welcome{background:radial-gradient(50rem 24rem at 85% -20%, #f4a8b838, transparent 60%), radial-gradient(40rem 20rem at 10% 110%, #2f7d5b59, transparent 60%), linear-gradient(180deg, var(--brand) 0%, var(--brand-2) 100%)}.welcome-mark{color:#fff}.course-switch{background:#ffffff1a;border-radius:8px;gap:.25rem;margin-bottom:.75rem;padding:.2rem;display:inline-flex}.course-tab{color:#ffffffd9;border-radius:6px;padding:.3rem .8rem;font-size:.95rem;text-decoration:none}.course-tab.active{color:var(--brand);background:#fff;font-weight:600}.course-select{margin-left:.5rem;padding:.2rem .4rem;font-size:.9rem;font-weight:400}.course-visibility .checkbox{margin-right:.9rem}.site-header{background:linear-gradient(180deg, var(--brand) 0%, #0c1727 100%);z-index:2;position:relative;box-shadow:inset 0 1px #ffffff0f,0 2px 12px #00000040}.site-bar .site-brand .anvil-mark{filter:drop-shadow(0 1px 2px #0006)}.site-nav-link{transition:background .15s,color .15s}.site-nav-link.active{color:#fff;background:#5ec8f229;box-shadow:inset 0 0 0 1px #5ec8f259}.site-signin{background:linear-gradient(#fff,#e9eef6);box-shadow:0 1px 2px #00000040}.page-title-block{background:radial-gradient(60rem 18rem at 100% 0%, #5ec8f224, transparent 55%), linear-gradient(135deg, var(--brand-2) 0%, var(--brand-3) 100%);position:relative;box-shadow:inset 0 1px #ffffff0f}.page-title-block:after{content:"";background:linear-gradient(90deg, var(--ember), var(--spark));opacity:.9;height:3px;position:absolute;bottom:0;left:0;right:0}.eyebrow{color:var(--spark)}button.primary,.button.primary{background:linear-gradient(180deg, var(--ember) 0%, var(--ember-dark) 100%);border-color:var(--ember-dark);box-shadow:inset 0 1px 0 #ffffff40, 0 2px 6px var(--ember-glow);transition:transform .12s,box-shadow .12s,filter .12s}button.primary:hover:not(:disabled),.button.primary:hover{background:linear-gradient(180deg, #f5763f 0%, var(--ember-dark) 100%);box-shadow:inset 0 1px 0 #ffffff40, 0 6px 16px var(--ember-glow);transform:translateY(-1px)}button.primary:active:not(:disabled),.button.primary:active{transform:translateY(0);box-shadow:inset 0 2px 4px #0003}button:where(:not(.primary):not(.link):not(.tab):not(.site-signout):not(.reading-toggle)),.button:not(.primary):not(.ghost){background:linear-gradient(#fff 0%,#f1f4f8 100%);transition:transform .12s,box-shadow .12s;box-shadow:0 1px 2px #0e1b2e14}button:where(:not(.primary):not(.link):not(.tab)):where(:hover:not(:disabled)){transform:translateY(-1px);box-shadow:0 3px 8px #0e1b2e1f}.exercise-row,.feature,.feedback-row,.feedback-card,.flag-list li,.help-queue li{box-shadow:var(--shadow);border:1px solid #0e1b2e14;transition:transform .15s,box-shadow .15s}.exercise-row:hover,.feature:hover{box-shadow:var(--shadow-lift);transform:translateY(-2px)}.exercise-row.kind-learn{border-left:4px solid var(--spark-dark)}.exercise-row.kind-assessment{border-left:4px solid var(--ember)}.level-number{background:linear-gradient(135deg, var(--brand-2), var(--brand-3));box-shadow:0 2px 6px #0e1b2e40}.course-progress-bar{background:#ffffff2e;box-shadow:inset 0 1px 2px #00000040}.course-progress-bar span{background:linear-gradient(90deg, var(--ember), var(--spark));box-shadow:0 0 10px #5ec8f280}.course-tab.active{background:linear-gradient(#fff,#e9eef6);box-shadow:0 1px 3px #0000004d}.badge{border:1px solid #0e1b2e14}.badge-passed,.level-progress{color:#1e6b47;background:linear-gradient(#e8f7ee,#d4eedd)}.badge-progress{color:#8a5a0a;background:linear-gradient(#fff4dc,#fde9bd)}table.students,table.progress-grid,.live-table{border:1px solid #0e1b2e14}table.students thead th,.live-table thead th{background:linear-gradient(#f7f9fc,#eef2f7)}table.students tbody tr:nth-child(2n) td{background:#fafbfd}.progress-tabs .tab.active{background:linear-gradient(180deg, var(--brand-2), var(--brand-3));border-color:var(--brand-3);box-shadow:0 2px 6px #0e1b2e40}.hero,.welcome{background:radial-gradient(48rem 24rem at 82% -10%, #5ec8f238, transparent 60%), radial-gradient(36rem 20rem at 8% 110%, #f06a2f38, transparent 60%), repeating-linear-gradient(135deg, #ffffff06 0 2px, transparent 2px 14px), linear-gradient(180deg, var(--brand) 0%, var(--brand-2) 100%)}.hero-mark,.welcome-mark{color:#fff;filter:drop-shadow(0 6px 18px #5ec8f259)}.hero h1{text-shadow:0 2px 12px #00000059}.feature-icon{color:var(--spark-dark);background:linear-gradient(135deg,#e3f5fd,#cfeefb);box-shadow:inset 0 1px #fff,0 1px 2px #0e1b2e14}.how{background:linear-gradient(#fff,#f7f9fc)}.steps li::marker{color:var(--ember-dark)}.site-footer{background:linear-gradient(#fff,#f4f6fa)}.about section h2:before{background:linear-gradient(90deg, var(--ember), var(--spark));width:3rem}.about-nav a:hover{border-left-color:var(--spark-dark)}.notice{border-left-color:var(--spark-dark);background:#eaf7fd}.app-header{background:linear-gradient(180deg, var(--brand) 0%, #0c1727 100%);z-index:2;position:relative;box-shadow:0 2px 10px #00000040}.toolbar{background:linear-gradient(#fff,#f7f9fc)}.pane-title{background:linear-gradient(#f7f9fc,#eef2f7)}.guest-badge{color:#fff;letter-spacing:.04em;text-transform:uppercase;background:#5ec8f233;border-radius:999px;margin-left:.4rem;padding:.05rem .45rem;font-size:.7rem;font-weight:600;display:inline-block}.guest-form{text-align:left;max-width:22rem;color:var(--ink);border-radius:var(--radius);box-shadow:var(--shadow-lift);background:#fff;gap:.75rem;margin:1rem auto .5rem;padding:1rem;display:grid}.guest-form label{gap:.25rem;display:grid}.guest-form input{font:inherit;border:1px solid var(--line);border-radius:6px;padding:.5rem .6rem}.guest-link code{-webkit-user-select:all;user-select:all;word-break:break-all}tr.idle td{color:var(--muted)}.exercise-row.assignment-set{display:block}.assignment-head{grid-template-columns:2rem 1fr auto;align-items:center;column-gap:.5rem;display:grid}.assignment-head .exercise-number{grid-row:1/span 2}.assignment-head .exercise-summary{grid-column:2}.assignment-head .mark-badge{white-space:nowrap;grid-area:1/3/span 2}.assignment-exercises{gap:.3rem;margin:.5rem 0 0 2.5rem;padding:0;list-style:none;display:grid}.assignment-exercises li{background:color-mix(in srgb, var(--card) 70%, var(--line) 30%);border-radius:6px;grid-template-columns:1fr auto auto;align-items:center;gap:.75rem;padding:.3rem .6rem;display:grid}.assignment-exercises .exercise-link{display:block}.picked-exercises{grid-column:1/-1;gap:.2rem;margin:0;padding-left:1.25rem;display:grid}.set-form>p{grid-column:1/-1;margin:0}.mark-line{flex-wrap:wrap;align-items:center;gap:.5rem;margin:.35rem 0 .5rem;display:flex}.mark-edit{flex-wrap:wrap;align-items:end;gap:.5rem;display:inline-flex}.mark-edit label{gap:.15rem;font-size:.85rem;display:grid}.mark-edit input{font:inherit;border:1px solid var(--line);border-radius:6px;max-width:14rem;padding:.3rem .5rem}.mark-edit input[type=number]{width:5rem}.evidence-exercise{display:inline}.level-progress.level-complete{background:linear-gradient(180deg, var(--spark,#5ec8f2), #3aa7d6);color:#072033}.code-history{margin-top:1rem}.history-controls{flex-wrap:wrap;align-items:end;gap:.5rem;margin:.5rem 0;display:flex}.history-controls label{gap:.2rem;font-size:.9rem;display:grid}.history-controls select{font:inherit;border:1px solid var(--line);border-radius:6px;max-width:100%;padding:.35rem .5rem}pre.diff{font-size:.85rem;line-height:1.45}pre.diff span{margin:0 -.4rem;padding:0 .4rem;display:block}.diff-added{color:#14532d;background:#e3f6ea}.diff-removed{color:#7f1d1d;background:#fde8e8;-webkit-text-decoration:line-through #7f1d1d66;text-decoration:line-through #7f1d1d66}.hint-log ol{gap:.5rem;padding-left:1.25rem;display:grid}.course-cards{grid-template-columns:repeat(auto-fill,minmax(20rem,1fr));gap:1.25rem;margin:0;padding:0;list-style:none;display:grid}.course-card{background:var(--card);border:1px solid var(--line);border-radius:10px;flex-direction:column;gap:.5rem;padding:1.25rem 1.5rem 1.5rem;display:flex}.course-card h2{margin:0;font-size:1.35rem}.course-card h2 a{color:inherit;text-decoration:none}.course-card h2 a:hover,.course-card h2 a:focus-visible{text-decoration:underline}.course-card p{margin:0}.course-card .course-progress{margin-top:.25rem}.course-card .course-progress-bar{background:var(--paper);border:1px solid var(--line)}.course-card .course-progress-text{color:var(--muted)}.course-card .button{align-self:flex-start;margin-top:auto}.breadcrumbs.on-brand,.breadcrumbs.on-brand a{color:#fffc}.exercise-content .good-practice{border-left:4px solid var(--meadow);background:var(--meadow-light);border-radius:0 6px 6px 0;margin:.75rem 0;padding:.5rem .75rem;font-size:.95rem}.exercise-content .hints{border:1px solid var(--line);background:#fffaf3;border-radius:10px;margin-top:1.5rem;padding:1rem 1.25rem}.exercise-content .hints h2{margin:0 0 .25rem;font-size:1.15rem}.exercise-content .hints>p{color:var(--muted);margin:0 0 .75rem;font-size:.9rem}.exercise-content details.hint{background:#fff;border-color:#f2d9b8}.exercise-content details.hint>summary{color:var(--ember-dark);font-weight:600}.exercise-content details.hint[open]>summary{margin-bottom:.35rem}.exercise-content details.hint p{margin:.25rem 0}.exercise-content .worked-steps{border-collapse:collapse;margin:.5rem 0 1rem}.exercise-content .worked-steps th,.exercise-content .worked-steps td{border:1px solid var(--line);text-align:left;padding:.25rem .75rem}.confetti{pointer-events:none;z-index:60;width:100%;height:100%;position:fixed;inset:0}.celebration{z-index:61;background:var(--card);max-width:min(32rem,100vw - 2rem);color:var(--ink);border:1px solid var(--line);border-radius:12px;align-items:center;gap:.9rem;padding:1rem 1.25rem;animation:.32s cubic-bezier(.2,.9,.3,1.2) celebration-in;display:flex;position:fixed;top:18%;left:50%;transform:translate(-50%);box-shadow:0 12px 32px #0e1b2e40}.celebration-icon{font-size:2rem;line-height:1}.celebration strong{font-size:1.05rem}.celebration-actions{align-items:center;gap:.75rem;margin-top:.5rem;display:flex}@keyframes celebration-in{0%{opacity:0;transform:translate(-50%,-12px)scale(.96)}to{opacity:1;transform:translate(-50%)scale(1)}}@media (prefers-reduced-motion:reduce){.celebration{animation:none}}.class-section{margin:1.25rem 0 2rem}.class-section h3{margin:0 0 .5rem}.class-settings{border:1px solid var(--line);background:var(--card);border-radius:8px;margin-top:2rem;padding:.75rem 1rem}.class-settings>summary{cursor:pointer;font-weight:600}.class-settings h4{margin:1rem 0 .25rem}.exercise-content .question>:not(.question-icon){grid-column:2}.up-next{border:1px solid var(--line);border-left:5px solid var(--ember);background:var(--card);border-radius:10px;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:1rem;margin:0 0 1.5rem;padding:1rem 1.25rem;display:flex}.up-next .eyebrow{color:#b0451a}.up-next h2{margin:.15rem 0 .1rem;font-size:1.25rem}.up-next p{margin:0}.level-nav{flex-wrap:wrap;gap:.4rem;margin:0 0 1.75rem;display:flex}.level-nav-chip{border:1px solid var(--line);background:var(--card);color:var(--ink);border-radius:999px;align-items:center;gap:.4rem;padding:.3rem .65rem .3rem .35rem;font-size:.85rem;text-decoration:none;display:inline-flex}.level-nav-chip:hover,.level-nav-chip:focus-visible{border-color:var(--accent)}.level-nav-number{background:var(--brand-3);color:#fff;border-radius:999px;place-items:center;width:1.5rem;height:1.5rem;font-size:.8rem;font-weight:700;display:inline-grid}.level-nav-started .level-nav-number{background:var(--ember)}.level-nav-done .level-nav-number{background:var(--meadow)}.level-anchor{scroll-margin-top:1rem}@media (width<=720px){.level-nav-title{display:none}}.how-it-works{border:1px solid var(--line);background:var(--card);border-radius:10px;margin:0 0 1.25rem;padding:.75rem 1.25rem}.how-it-works>summary{cursor:pointer;font-weight:600}.how-it-works ol{margin:.5rem 0 .25rem;padding-left:1.25rem}.how-it-works li{margin:.35rem 0}.reading-select{grid-template-columns:1fr;gap:.35rem}.reading-select select{font:inherit;width:100%;padding:.3rem .5rem}.tab{border:1px solid #0000;border-bottom:none;margin-top:.15rem}.tab.tab-shell{color:#334155;background:#e3e8ef}.tab.tab-checks{background:var(--meadow-light);color:var(--meadow-ink)}.tab.tab-help{color:#8a3a05;background:#fdf0dc}.tab.active{font-weight:700;box-shadow:inset 0 -3px}.tab.tab-shell.active{background:#f1f4f8}.tab.tab-checks.active{background:#ecf8f1}.tab.tab-help.active{background:#fff6e8}.tab:hover:not(.active){filter:brightness(.96)}.tab:focus-visible{outline:3px solid var(--focus);outline-offset:-3px}.toolbar button.check{background:linear-gradient(180deg, #f1faf5 0%, var(--meadow-light) 100%);border-color:var(--meadow);color:var(--meadow-ink);font-weight:600}.toolbar button.check:hover:not(:disabled){background:linear-gradient(#e2f4ea 0%,#d3ecdd 100%)}.exercise-content li.criterion{list-style:decimal}.exercise-content .criterion-label{cursor:pointer;border-radius:6px;grid-template-columns:auto 1fr;align-items:start;gap:.5rem;margin:0 -.3rem;padding:.1rem .3rem;display:grid}.exercise-content .criterion-label:hover{background:var(--paper)}.exercise-content .criterion-tick{width:1.1rem;height:1.1rem;accent-color:var(--meadow);cursor:pointer;margin:.2rem 0 0}.exercise-content .criterion-label:has(:checked){background:var(--meadow-light)}.exercise-content .criterion-label:has(:checked)>span{color:var(--meadow-ink)}.exercise-content .criterion-label:has(:checked)>span:after{content:" ✓";font-weight:700}.exercise-content .criterion-tick:focus-visible{outline:3px solid var(--focus);outline-offset:2px}.help-panel .hints{margin-top:0}.help-panel .hints h2,.help-panel .teacher-help h2{margin:.25rem 0 .5rem;font-size:1.05rem}.help-panel .teacher-help{border-top:1px solid var(--line);margin-top:1.25rem;padding-top:1rem}.result-summary button.link{font-weight:600}.app-header .header-link-back{opacity:1;border:1px solid #ffffff59;border-radius:999px;padding:.25rem .7rem}.app-header .header-link-back:hover{background:#ffffff1f;text-decoration:none}.celebration{padding-right:2.5rem}.celebration-close{box-shadow:none;color:var(--muted);background:0 0;border:none;padding:.1rem .4rem;font-size:1.3rem;line-height:1;position:absolute;top:.35rem;right:.5rem}.celebration-close:hover{color:var(--ink)}.celebration-actions{flex-wrap:wrap}.class-cards{grid-template-columns:repeat(auto-fill,minmax(15rem,1fr));gap:1rem;margin:0 0 1.5rem;padding:0;list-style:none;display:grid}.class-card{background:var(--card);border:1px solid var(--line);border-top:4px solid var(--brand-3);border-radius:var(--radius);box-shadow:var(--shadow);flex-direction:column;gap:.25rem;padding:1rem 1.1rem .9rem;transition:transform .12s,box-shadow .12s;display:flex;position:relative}.class-card:hover{box-shadow:var(--shadow-lift);transform:translateY(-2px)}.class-card p{margin:0}.class-card-name{color:var(--brand);font-size:1.25rem;font-weight:700;text-decoration:none}.class-card-name:after{content:"";border-radius:var(--radius);position:absolute;inset:0}.class-card-name:hover{text-decoration:underline}.class-card-count strong{color:var(--ink);margin-right:.15rem;font-size:1.6rem}.class-card-team{color:#0f5f80;background:#5ec8f233;border-radius:999px;margin-top:.15rem;padding:0 .5rem;display:inline-block}.class-card-links{z-index:1;border-top:1px solid var(--line);gap:.75rem;padding-top:.6rem;font-size:.9rem;display:flex;position:relative;margin-top:.4rem!important}.class-card-links a{color:var(--accent);text-decoration:none}.class-card-links a:hover{text-decoration:underline}.set-form .exercise-picker{border:1px solid var(--line);background:var(--card);border-radius:8px;grid-column:1/-1;margin:0;padding:.5rem .75rem .25rem}.exercise-picker legend{padding:0 .3rem;font-weight:600}.picker-level{border-top:1px solid var(--line);padding:.3rem 0}.picker-level:first-of-type{border-top:none}.picker-level>summary{cursor:pointer;align-items:center;gap:.4rem;list-style:none;display:flex}.picker-level>summary:before{content:"▸";color:var(--muted);width:.9rem}.picker-level[open]>summary:before{content:"▾"}.picker-level>summary .checkbox{margin:0;display:inline-flex}.picker-list{columns:2;column-gap:1.5rem;margin:0;padding:.25rem 0 .25rem 1.8rem;list-style:none}.picker-list li{break-inside:avoid;padding:.1rem 0}.picker-list .checkbox{align-items:start;gap:.4rem;margin:0;font-size:.95rem;display:inline-flex}@media (width<=40rem){.picker-list{columns:1}}.progress-cell.passed.overridden a,.progress-key .progress-cell.passed.overridden{outline-offset:-2px;outline:2px dashed #15803d;position:relative}.progress-cell.passed.overridden a:after{content:"T";font-size:.6rem;font-weight:700;line-height:1;position:absolute;top:0;right:2px}.checks .output-diff{color:#7c2d12;background:#fde68a;border-radius:3px;padding:0 .1rem;font-weight:700}.checks .output-line{display:block}.set-form label.checkbox{align-items:center;gap:.4rem;display:flex}.assignment-kind{letter-spacing:.04em;vertical-align:middle;color:#143f8f;background:#e6efff;border-radius:4px;padding:0 .45rem;font-size:.72rem;font-weight:700;display:inline-block}.assignment-kind.kind-homework{color:#8a3a05;background:#fdf0dc}.web-app .panes{grid-template-rows:3fr 1.4fr}.web-top{grid-template-columns:1fr 1fr;min-height:0;display:grid}.web-top .pane{flex-direction:column;min-height:0;display:flex}.file-tabs{gap:.15rem}.file-tabs .tab{color:#334155;background:#e3e8ef;font-family:Menlo,Consolas,DejaVu Sans Mono,monospace;font-size:.82rem}.file-tabs .tab.active{color:var(--ink);background:#fff}.preview-title{align-items:center;gap:.75rem;display:flex}.preview-title select{font:inherit;border:1px solid var(--line);border-radius:4px;padding:.05rem .3rem;font-size:.82rem}.preview-phone{align-items:center;gap:.3rem;margin-left:auto;font-size:.82rem;display:inline-flex}.preview-host{background:#d9dee5;flex:1;justify-content:center;min-height:0;display:flex}.preview-frame{background:#fff;border:none;width:100%;height:100%}.preview-host.phone .preview-frame{width:400px;max-width:100%;box-shadow:0 0 0 1px var(--line)}@media (width<=60rem){.web-top{grid-template-rows:1fr 1fr;grid-template-columns:1fr}.web-top .pane+.pane{border-left:none;border-top:1px solid var(--line)}}.exercise-content .ai-help{background:#f3f9ff;border:1px solid #cfe3f7;border-radius:10px;margin-top:1.5rem;padding:1rem 1.25rem}.exercise-content .ai-help h2{margin:0 0 .35rem;font-size:1.15rem}.exercise-content .ai-help p{margin:.35rem 0}.exercise-content .ai-help ul{margin:.25rem 0 .5rem}.exercise-content .ai-help q{font-style:italic}.copy-button{vertical-align:middle;margin-left:.5rem;padding:.15rem .6rem;font-size:.85rem;font-weight:500}.draft-hint{background:#f3f9ff;border:1px solid #cfe3f7;border-radius:10px;margin:1.25rem 0 .75rem;padding:.9rem 1.1rem}.draft-hint h3{margin:0 0 .25rem}.draft-controls{flex-wrap:wrap;align-items:flex-end;gap:.75rem;margin:.5rem 0;display:flex}.draft-controls label{flex-direction:column;gap:.25rem;font-size:.9rem;display:flex}.draft-text{border-left:4px solid var(--ember,#d9541e);background:#fff;border-radius:0 8px 8px 0;margin:.75rem 0 0;padding:.75rem 1rem}.draft-text p{margin:.25rem 0}.farm-main{flex:1;grid-template-rows:minmax(0,1fr) 170px;grid-template-columns:minmax(240px,300px) minmax(0,1fr) minmax(0,1.1fr);gap:0;min-height:0;display:grid}.farm-main .farm-brief{border-right:1px solid var(--line);background:#fff;grid-row:1/3;padding:.75rem 1rem 1.5rem;font-size:.95rem;overflow:auto}.farm-brief h2{margin:.25rem 0;font-size:1.15rem}.farm-brief h3{margin:1rem 0 .35rem;font-size:1rem}.farm-goals{margin:0;padding:0;list-style:none}.farm-goals li{padding:.2rem 0}.farm-goals li.met{color:#166534;font-weight:600}.farm-finished{color:#065f46;background:#ecfdf5;border-radius:6px;margin:.5rem 0 0;padding:.4rem .6rem;font-weight:600}.farm-commands{margin:0}.farm-commands div{margin:0 0 .5rem}.farm-commands dt code{font-size:.9rem}.farm-commands dd{color:var(--muted);margin:.1rem 0 0;font-size:.88rem}.farm-nav{justify-content:space-between;margin-top:1rem;display:flex}.farm-main .farm-editor{border-right:1px solid var(--line);grid-area:1/2}.farm-main .farm-world{background:#eaf3e4;grid-area:1/3}.farm-hud{align-items:center;gap:.75rem;display:flex}.farm-chip{border:1px solid var(--line);color:var(--ink);background:#fff;border-radius:999px;padding:.05rem .5rem}.farm-canvas{flex:1;width:100%;height:100%;min-height:0;display:block}.farm-main .farm-shell{border-top:1px solid var(--line);grid-area:2/2/auto/4}@media (width<=1000px){.farm-main{grid-template-rows:auto minmax(240px,1fr) 160px;grid-template-columns:minmax(0,1fr) minmax(0,1fr)}.farm-main .farm-brief{border-right:0;border-bottom:1px solid var(--line);grid-area:1/1/auto/3;max-height:30vh}.farm-main .farm-editor{grid-area:2/1}.farm-main .farm-world{grid-area:2/2}.farm-main .farm-shell{grid-area:3/1/auto/3}}.exercise-content .criteria-note{color:#334155;background:#f3f9ff;border-left:4px solid #cfe3f7;border-radius:0 6px 6px 0;margin:.25rem 0 .75rem;padding:.45rem .75rem;font-size:.92rem}.help-solution{border:1px solid var(--line);background:#fffaf3;border-radius:8px;margin:1rem 0;padding:.5rem .9rem}.help-solution>summary{cursor:pointer;font-weight:600}.help-solution pre{color:#f8fafc;background:#1f2937;border-radius:6px;max-height:420px;padding:.75rem;font-size:.9rem;overflow:auto}.parsons{background:#f8fafc;flex:1;grid-template-columns:minmax(0,1fr) minmax(0,1.3fr);gap:0;min-height:0;display:grid;overflow:auto}.parsons h3{color:var(--muted);text-transform:uppercase;letter-spacing:.04em;margin:0 0 .5rem;font-size:.9rem}.parsons-tray,.parsons-program{min-width:0;padding:.75rem;overflow:auto}.parsons-tray{border-right:1px solid var(--line)}.parsons ul,.parsons ol{margin:0;padding:0;list-style:none}.parsons-block,.parsons-line{cursor:grab;background:#fff;border:1px solid #cbd5e1;border-radius:8px;justify-content:space-between;align-items:center;gap:.5rem;margin:0 0 .4rem;padding:.35rem .6rem;display:flex;box-shadow:0 1px 2px #0000000d}.parsons-block:active,.parsons-line:active{cursor:grabbing}.parsons-line{background:#f3f9ff;border-color:#a7c4e5;position:relative}.parsons-line.drop-before:before,.parsons-end.drop-before:before{content:"";background:var(--ember);border-radius:2px;height:3px;position:absolute;top:-.3rem;left:0;right:0}.parsons-end{height:1.5rem;position:relative}.parsons code{white-space:pre;text-overflow:ellipsis;font-family:JetBrains Mono,Consolas,monospace;overflow:hidden}.parsons-actions{flex-shrink:0;gap:.15rem;display:inline-flex}.parsons-action{padding:.1rem .45rem;font-size:.8rem;line-height:1.4}.review-badge{color:#92400e;vertical-align:middle;background:#fef3c7;border-radius:999px;margin-left:.5rem;padding:.1rem .5rem;font-size:.75rem;font-weight:600;display:inline-block}.teacher-resources{border:1px solid var(--line);background:#fff;border-radius:10px;margin:0 0 1.5rem;padding:.75rem 1rem}.teacher-resources h2{margin:0 0 .35rem;font-size:1.05rem}.teacher-resources ul{margin:0;padding-left:1.2rem}.lesson-launcher{border:1px solid var(--line);border-left:5px solid var(--meadow);background:var(--card);border-radius:8px;flex-wrap:wrap;align-items:center;gap:.75rem;margin:.5rem 0 1rem;padding:.6rem .9rem;display:flex}.lesson-launcher-text{flex:12rem;font-weight:600}.lesson-launcher button.button{font:inherit;cursor:pointer}.lesson-body{max-width:68rem}.lesson-layout{grid-template-columns:minmax(12rem,16rem) minmax(0,1fr);align-items:start;gap:1.5rem;display:grid}@media (width<=48rem){.lesson-layout{grid-template-columns:1fr}.lesson-steps{order:2}}.lesson-steps ol{flex-direction:column;gap:.2rem;margin:0;padding:0;list-style:none;display:flex}.lesson-step-link{width:100%;color:var(--muted);font:inherit;text-align:left;cursor:pointer;background:0 0;border:1px solid #0000;border-radius:6px;align-items:center;gap:.5rem;padding:.4rem .6rem;font-size:.92rem;display:flex}.lesson-step-link:hover{background:var(--card);border-color:var(--line)}.lesson-step-link.seen{color:var(--ink)}.lesson-step-link.current{background:var(--card);border-color:var(--ember);color:var(--ink);font-weight:600}.lesson-step-icon{text-align:center;flex:0 0 1.4rem;font-size:.85rem}.lesson-step-title{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.lesson-card{border:1px solid var(--line);background:var(--card);border-radius:12px;padding:1.5rem 1.75rem;font-size:1.08rem;line-height:1.6}.lesson-card:focus{outline:none}.lesson-card:focus-visible{outline:3px solid var(--focus);outline-offset:2px}.teacher-resources>summary{cursor:pointer;font-weight:600}.lesson-card h2{margin:0 0 .75rem;font-size:1.6rem}.lesson-card h3{margin:1.25rem 0 .4rem;font-size:1.1rem}.lesson-card .eyebrow{margin:0 0 .25rem}.lesson-card code{background:var(--paper);border-radius:4px;padding:.05rem .3rem;font-size:.95em}.lesson-text{margin:0 0 .9rem}.lesson-list{margin:0;padding-left:1.4rem}.lesson-list li{margin-bottom:.35rem}.lesson-keywords{grid-template-columns:max-content 1fr;gap:.35rem 1rem;margin:0;display:grid}.lesson-keywords>div{display:contents}.lesson-keywords dt,.lesson-keywords dd{margin:0}.lesson-code{margin:1rem 0}.lesson-code pre{color:#f7f9fc;background:#1f2937;border-radius:8px;margin:0;padding:.9rem 1.1rem;font-size:1rem;line-height:1.5;overflow-x:auto}.lesson-code pre code{color:inherit;background:0 0;padding:0}.lesson-code figcaption{color:var(--muted);margin-top:.4rem;font-size:.95rem}.lesson-actions{flex-wrap:wrap;gap:.6rem;margin:1.25rem 0 .5rem;display:flex}.lesson-actions .button,.lesson-nav .button{font:inherit;cursor:pointer}.lesson-nav{border-top:1px solid var(--line);justify-content:space-between;align-items:center;gap:1rem;margin-top:1.75rem;padding-top:1rem;display:flex}.lesson-nav .button:disabled{opacity:.5;cursor:default}.lesson-footnote{margin-top:1.25rem}.quiz{padding-left:1.4rem}.quiz li{margin-bottom:1rem}.quiz fieldset{border:1px solid var(--line);border-radius:8px;margin:0;padding:.6rem .9rem}.quiz fieldset.right{border-color:var(--meadow);background:var(--meadow-light)}.quiz fieldset.wrong{border-color:var(--ember);background:#fff4ec}.quiz legend{padding:0 .3rem;font-weight:600}.quiz label{padding:.2rem 0;display:block}.quiz label.quiz-answer{color:var(--meadow-ink);font-weight:600}.quiz-verdict{margin:.4rem 0 0;font-weight:600}.quiz-score{font-weight:600}.lesson-check{padding-left:1.4rem}.lesson-check li{margin-bottom:.9rem}.lesson-check li p{margin:0 0 .3rem}.lesson-check details{color:var(--muted)}.lesson-check summary{cursor:pointer;color:var(--accent)}.progress-lesson.passed{color:var(--meadow-ink);font-weight:600}.microbit-pane{background:#eef1f6;overflow:auto}.mb{flex-direction:column;gap:.75rem;min-height:0;padding:.75rem;display:flex}.mb-board{aspect-ratio:5/4;box-sizing:border-box;background:#1f2937;border-radius:18px;grid-template-rows:auto 1fr auto;grid-template-columns:1fr auto 1fr;place-items:center;width:100%;max-width:340px;margin:0 auto;padding:6% 6% 0;transition:box-shadow .2s;display:grid;position:relative;box-shadow:inset 0 0 0 3px #0f172a,0 6px 18px #00000040}.mb-board.mb-panic{box-shadow:inset 0 0 0 3px #b91c1c,0 6px 18px #b91c1c66}.mb-logo{color:#d4a017;cursor:pointer;touch-action:none;background:#111827;border:2px solid #d4a017;border-radius:999px;grid-area:1/2;width:2.2rem;height:1.5rem;font-size:.9rem}.mb-logo:active,.mb-button:active{filter:brightness(1.2);transform:translateY(1px)}.mb-display{aspect-ratio:1;grid-area:2/2;grid-template-columns:repeat(5,1fr);gap:9%;width:46%;min-width:110px;padding:4%;display:grid}.mb-led{aspect-ratio:1/1.6;background:#ef4444;border-radius:2px;transition:opacity 50ms linear;display:block;box-shadow:0 0 6px 1px #ef4444e6}.mb-led:not([data-on]){box-shadow:none;background:#b91c1c}.mb-button{color:#f9fafb;width:2.4rem;height:2.4rem;font:inherit;cursor:pointer;touch-action:none;-webkit-user-select:none;user-select:none;background:#374151;border:3px solid #9ca3af;border-radius:50%;grid-row:2;font-weight:700}.mb-button-a{grid-column:1}.mb-button-b{grid-column:3}.mb-button:focus-visible,.mb-logo:focus-visible{outline:3px solid var(--focus);outline-offset:2px}.mb-pins{color:#1f2937;box-sizing:border-box;background:linear-gradient(#d4a017,#b8860b);border-radius:0 0 14px 14px;grid-area:3/1/auto/4;justify-content:space-between;width:100%;margin-top:4%;padding:.35rem .5rem .3rem;font-size:.75rem;font-weight:700;display:flex}.mb-speaker{color:#fbbf24;font-size:.85rem;position:absolute;top:8%;right:6%}.mb-panel{flex-direction:column;gap:.6rem;font-size:.9rem;display:flex}.mb-panel-row{flex-wrap:wrap;align-items:center;gap:.35rem;display:flex}.mb-act{border:1px solid var(--line);color:var(--ink);font:inherit;cursor:pointer;background:#fff;border-radius:999px;padding:.25rem .6rem;font-size:.85rem}.mb-act.active{background:var(--brand);border-color:var(--brand);color:#fff}.mb-act:disabled{opacity:.5;cursor:default}.mb-sound-toggle{margin-left:auto;font-size:.85rem}.mb-sliders{grid-template-columns:repeat(auto-fit,minmax(9rem,1fr));gap:.4rem .8rem;display:grid}.mb-sliders label{flex-direction:column;gap:.15rem;font-size:.85rem;display:flex}.mb-sliders input[type=range]{width:100%}.mb-radio{grid-template-columns:1fr auto;align-items:end;gap:.35rem .5rem;display:grid}.mb-radio label{flex-direction:column;gap:.15rem;font-size:.85rem;display:flex}.mb-radio input{font:inherit;border:1px solid var(--line);border-radius:6px;padding:.3rem .5rem}.mb-radio button{font:inherit;padding:.3rem .8rem}.mb-radio-log{grid-column:1/3;max-height:6rem;margin:0;padding:0;font-size:.85rem;list-style:none;overflow:auto}.mb-radio-log li.sent{color:var(--ember-ink)}.mb-radio-log li.received{color:var(--meadow-ink)}.mb-log{border-collapse:collapse;font-size:.8rem}.mb-log caption{text-align:left;padding-bottom:.2rem;font-weight:600}.mb-log th,.mb-log td{border:1px solid var(--line);background:#fff;padding:.1rem .5rem}.course-card{position:relative}.course-icon{background:var(--paper);border:1px solid var(--line);border-radius:12px;justify-content:center;align-items:center;width:3.25rem;height:3.25rem;margin-bottom:.25rem;font-size:1.9rem;line-height:1;display:inline-flex}.course-icon-inline{font-size:.9em}.toolbar button.send-device{color:#5b21b6;border-color:#7c3aed}.device-dialog{border:1px solid var(--line);width:min(40rem,100vw - 2rem);max-height:calc(100vh - 2rem);color:var(--ink);background:var(--card);border-radius:12px;padding:1.25rem 1.5rem;overflow:auto;box-shadow:0 12px 40px #00000040}.device-dialog::backdrop{background:#0e1b2e73}.device-dialog h2{margin:0 0 .5rem;font-size:1.3rem}.device-dialog h3{margin:0 0 .35rem;font-size:1rem}.device-options{grid-template-columns:repeat(auto-fit,minmax(14rem,1fr));gap:1rem;margin:1rem 0;display:grid}.device-options section{border:1px solid var(--line);background:var(--paper);border-radius:10px;flex-direction:column;gap:.4rem;padding:.85rem 1rem;display:flex}.device-options button{font:inherit;border:1px solid var(--line);cursor:pointer;background:#fff;border-radius:6px;align-self:flex-start;margin-top:auto;padding:.4rem .9rem}.device-options button.primary{background:var(--ember);border-color:var(--ember);color:var(--accent-ink);font-weight:600}.device-options button:disabled{opacity:.55;cursor:default}.device-status{flex-wrap:wrap;align-items:center;gap:.75rem;min-height:1.5rem;margin:.25rem 0;display:flex}.device-status progress{width:12rem}.device-ok{color:var(--meadow-ink);font-weight:600}.device-error{color:#b91c1c}.device-serial pre{color:#f7f9fc;white-space:pre-wrap;background:#1f2937;border-radius:8px;max-height:10rem;margin:0;padding:.6rem .8rem;font-size:.85rem;overflow:auto}.device-close{text-align:right;margin:1rem 0 0}.device-close button{font:inherit;padding:.4rem .9rem}.tier-badge{vertical-align:middle;border:1px solid #0000;border-radius:999px;padding:.05rem .5rem;font-size:.78rem;font-weight:600;display:inline-block}.tier-everyone{color:#1e5a2a;background:#e6f4ea;border-color:#bfe0c8}.tier-most{color:#1d3f75;background:#e8f0fb;border-color:#c3d6f2}.tier-stretch{color:#7a3f0a;background:#fdf1e3;border-color:#f4d3ad}.lesson-ladder{flex-wrap:wrap;gap:.5rem 1.25rem;margin:0 0 .75rem;padding:0;list-style:none;display:flex}.role-badge{vertical-align:middle;color:#3b4657;background:#eef1f6;border-radius:999px;margin-left:.6rem;padding:.05rem .55rem;font-size:.8rem;font-weight:600;display:inline-block}.role-checkpoint,.role-final{color:#7a3f0a;background:#fdf1e3}.role-extra{color:#1d3f75;background:#e8f0fb}.level-nav-role{opacity:.85;font-size:.7rem;font-weight:600;display:block}.unit-routes{border:1px solid var(--line,#d9dee7);background:#fff;border-radius:10px;margin:0 0 1rem;padding:.75rem 1rem}.unit-routes summary{cursor:pointer;font-weight:600}.unit-routes-table{border-collapse:collapse;margin-top:.5rem}.unit-routes-table th,.unit-routes-table td{text-align:left;border-bottom:1px solid #eef1f6;padding:.3rem 1rem .3rem 0}.unit-routes-table th[scope=row]{white-space:nowrap;font-weight:600}.lesson-card .eyebrow{color:#1d6fa5}.password-sign-in{text-align:left;max-width:28rem;margin:1.5rem auto 0}.password-sign-in summary{cursor:pointer;color:var(--ink);font-weight:600}.welcome .password-sign-in summary{color:#fff}.password-form input[type=email],.password-form input[type=password]{font:inherit;border:1px solid var(--line);border-radius:6px;padding:.4rem .6rem}.guest-form .checkbox{align-items:center;gap:.4rem;display:inline-flex}.google-sign-in{justify-items:center;gap:.35rem;display:grid}.welcome .google-sign-in .muted{color:#cfd8e3}.course-grants{border:1px solid var(--line);background:#fff;border-radius:10px;margin:1rem 0 1.5rem;padding:1rem}.course-grants fieldset{border:0;gap:.4rem;margin:.5rem 0;padding:0;display:grid}.course-grants .checkbox{align-items:center;gap:.5rem;display:flex}.course-grants .review-badge{margin-left:.4rem}
