@import "https://fonts.googleapis.com/css2?family=DM+Sans:wght@400;500;600;700&family=Fraunces:opsz,wght@9..144,600;9..144,700&display=swap";:root{color:#17362e;font-synthesis:none;--forest:#173f35;--green:#2f6c57;--mint:#b8d9c8;--cream:#f4f1e8;--amber:#e5a63c;--ink:#17362e;--line:#d7d6ca;background:#f4f1e8;font-family:DM Sans,system-ui,sans-serif}*{box-sizing:border-box}body{min-width:320px;min-height:100vh;margin:0}button,input{font:inherit}button{cursor:pointer}button:focus-visible,input:focus-visible,[tabindex]:focus-visible{outline-offset:3px;outline:3px solid #e5a63c}h1,h2,h3,p{margin-top:0}h1,h2{font-family:Fraunces,Georgia,serif}.eyebrow{text-transform:uppercase;letter-spacing:.16em;color:#a26518;margin-bottom:.7rem;font-size:.74rem;font-weight:700}.button{border:0;border-radius:10px;padding:.85rem 1.2rem;font-weight:700}.button.primary{background:var(--forest);color:#fff;box-shadow:0 5px #0c2b24}.button.primary:hover{transform:translateY(-1px)}.welcome{background:#f7f4eb;grid-template-columns:minmax(0,1.1fr) minmax(360px,.9fr);min-height:100vh;display:grid}.welcome-panel{flex-direction:column;justify-content:center;padding:clamp(2rem,7vw,7rem);display:flex;position:relative}.welcome-panel>img{object-fit:contain;object-position:left center;width:112px;height:72px;margin-bottom:3rem}.welcome h1{letter-spacing:-.05em;margin-bottom:1.5rem;font-size:clamp(3rem,6vw,6.2rem);line-height:.95}.welcome h1 em{color:#b36d22;font-style:italic}.welcome-copy{color:#51655f;max-width:640px;font-size:1.13rem;line-height:1.7}.welcome form{max-width:680px;margin-top:2.5rem}.welcome label{margin-bottom:.6rem;font-weight:700;display:block}.name-row{gap:.7rem;display:flex}.name-row input{background:#fff;border:1px solid #bdc3ba;border-radius:10px;flex:1;min-width:0;padding:1rem 1.1rem;font-size:1.05rem}.field-help,.field-error{margin:.7rem 0;font-size:.84rem}.field-help{color:#6a7772}.field-error{color:#a3302c;font-weight:700}.welcome-art{background:var(--forest);min-height:100vh;position:relative;overflow:hidden}.welcome-art:before{content:"";background:radial-gradient(circle at 25% 20%,#3c8066,#0000 35%),linear-gradient(145deg,#0000 35%,#ffffff0a 35% 37%,#0000 37% 64%,#ffffff0a 64% 66%,#0000 66%);position:absolute;inset:0}.orbit{border:1px solid #ffffff26;border-radius:50%;position:absolute}.o1{width:620px;height:620px;top:10%;left:-10%}.o2{width:390px;height:390px;top:25%;left:10%}.hero-node{color:var(--forest);background:#f4f1e8;border-radius:50%;place-items:center;font-weight:800;display:grid;position:absolute;box-shadow:0 12px 40px #09241e80}.hero-node.root{background:#e5a63c;width:118px;height:118px;top:18%;left:42%}.hero-node.n1,.hero-node.n2{width:82px;height:82px;top:48%}.hero-node.n1{left:19%}.hero-node.n2{right:16%}.hero-node.n3,.hero-node.n4{width:58px;height:58px;top:72%}.hero-node.n3{left:9%}.hero-node.n4{left:38%}.welcome-art:after{content:"Explore • Connect • Grow";color:#dcebe3;letter-spacing:.18em;text-transform:uppercase;font-size:.75rem;position:absolute;bottom:3rem;left:3rem}.topbar{border-bottom:1px solid var(--line);z-index:20;background:#faf8f2;align-items:center;height:82px;padding:0 3.5vw;display:flex;position:sticky;top:0}.brand{color:inherit;text-align:left;background:0 0;border:0;align-items:center;gap:.8rem;display:flex}.brand img{object-fit:contain;width:58px;height:46px}.brand span,.student-chip div{flex-direction:column;display:flex}.brand strong{font-family:Fraunces,serif;font-size:1.1rem}.brand small,.student-chip small{text-transform:uppercase;letter-spacing:.12em;color:#77827d;font-size:.68rem}.topbar nav{gap:.35rem;margin:auto;display:flex}.topbar nav button{color:#65736e;background:0 0;border:0;border-radius:8px;padding:.65rem 1rem;font-weight:600}.topbar nav button.active{color:var(--forest);background:#e5ece5}.nav-count{background:var(--forest);color:#fff;border-radius:10px;margin-left:.3rem;padding:.14rem .4rem;font-size:.7rem}.student-chip{align-items:center;gap:.6rem;display:flex}.student-chip>span{background:#ead8ad;border-radius:50%;place-items:center;width:38px;height:38px;font-weight:800;display:grid}.student-chip strong{font-size:.83rem}.page{width:min(1180px,92vw);margin:0 auto;padding:4rem 0 6rem}.dashboard-head{justify-content:space-between;align-items:end;gap:3rem;margin-bottom:3rem;display:flex}.dashboard-head h1,.report h1,.prose>h1{margin-bottom:1rem;font-size:clamp(2.5rem,5vw,4.7rem);line-height:1}.dashboard-head>div>p:last-child{color:#64736d}.mini-progress{min-width:230px}.mini-progress strong{font-family:Fraunces,serif;font-size:2.6rem}.mini-progress strong span{color:#7b8882;font-size:1.3rem}.mini-progress small{display:block}.mini-progress>div,.activity-meter>div{background:#dfe2d9;border-radius:6px;height:7px;margin-top:.8rem;overflow:hidden}.mini-progress i,.activity-meter i{background:var(--amber);border-radius:6px;height:100%;display:block}.activity-grid{grid-template-columns:repeat(3,1fr);gap:1.1rem;display:grid}.activity-card{text-align:left;border:1px solid var(--line);min-height:290px;color:inherit;background:#faf9f4;border-radius:15px;flex-direction:column;padding:1.45rem;transition:all .2s;display:flex}.activity-card:hover{border-color:#9eaf9f;transform:translateY(-4px);box-shadow:0 15px 35px #1b3e2c15}.card-top{justify-content:space-between;align-items:center;display:flex}.activity-number{color:#a26620;font-family:Fraunces,serif;font-weight:700}.status{white-space:nowrap;border-radius:20px;padding:.35rem .6rem;font-size:.72rem;font-weight:700}.status.not-started{color:#66716c;background:#ecece5}.status.in-progress{color:#895d14;background:#fff0cc}.status.completed{color:#236342;background:#d9ecdf}.activity-card h2{margin:2rem 0 .25rem;font-size:1.45rem}.activity-card h3{color:#a26518;margin:0 0 .8rem;font-size:.86rem}.activity-card p{color:#66736e;font-size:.9rem;line-height:1.55}.open-label{margin-top:auto;font-size:.85rem;font-weight:700}.back-link{color:var(--green);background:0 0;border:0;margin-bottom:1rem;padding:.5rem 0;font-weight:700}.activity-shell{border:1px solid var(--line);background:#fbfaf5;border-radius:18px;padding:clamp(1.2rem,3vw,2.5rem);box-shadow:0 15px 45px #234b3810}.activity-heading{max-width:780px}.activity-heading h1{margin-bottom:.8rem;font-size:clamp(2rem,4vw,3.6rem)}.activity-heading>p:last-child{color:#60716b;line-height:1.6}.activity-meter{border-top:1px solid var(--line);margin-top:2rem;padding-top:1rem}.activity-meter>span{text-transform:uppercase;letter-spacing:.12em;font-size:.75rem}.activity-meter>strong{float:right}.activity-meter p{color:#276944;margin:1rem 0 0;font-weight:700}.choice-grid{grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:.7rem;margin:1.5rem 0;display:grid}.choice{text-align:left;color:var(--ink);background:#fff;border:1px solid #c9cec6;border-radius:10px;padding:.9rem;font-weight:600}.choice:hover:not(:disabled),.choice.selected{border-color:var(--green);background:#e7f1eb}.choice.selected{box-shadow:inset 0 0 0 2px var(--green)}.feedback{border-radius:10px;gap:.8rem;margin:1rem 0;padding:1rem;line-height:1.45;display:flex}.feedback strong{white-space:nowrap}.feedback.correct{background:#dff0e5;border-left:5px solid #2d7650}.feedback.incorrect{background:#fff1d6;border-left:5px solid #bd7819}.tree-wrap{background:#f4f6ef;border:1px solid #dce2d8;border-radius:14px;width:100%;margin:1rem 0;overflow:auto}.tree-svg{width:100%;min-width:620px;height:auto;display:block}.edges line{stroke:#9cad9f;stroke-width:4px}.tree-node circle{fill:#fff;stroke:#2e6654;stroke-width:3px}.tree-node text{fill:#17362e;font-weight:800}.tree-node[role=button]{cursor:pointer}.tree-node[role=button]:hover circle,.tree-node.active circle{fill:#f5ca77;stroke:#9d5e13;stroke-width:5px}.tree-node.visited circle{fill:#b9ddc9}.tree-node.faded{opacity:.2}.tree-hint{fill:#6a7772;font-size:15px}.report-head{justify-content:space-between;align-items:center;display:flex}.print-brand{display:none}.score-hero{background:var(--forest);color:#fff;border-radius:16px;grid-template-columns:1fr 1fr auto;align-items:center;gap:2rem;margin:2rem 0;padding:2rem;display:grid}.score-hero>div:not(.score-ring){flex-direction:column;gap:.4rem;display:flex}.score-hero span{text-transform:uppercase;letter-spacing:.14em;color:#b8d9c8;font-size:.75rem}.score-ring{text-align:center;background:conic-gradient(var(--amber) var(--score),#fff2 0);border-radius:50%;place-content:center;width:125px;height:125px;display:grid;position:relative}.score-ring:after{content:"";background:var(--forest);border-radius:50%;position:absolute;inset:9px}.score-ring span,.score-ring small{z-index:1;position:relative}.score-ring span{color:#fff;font-family:Fraunces,serif;font-size:1.7rem}.progress-list{border:1px solid var(--line);border-radius:14px;overflow:hidden}.progress-row{border-bottom:1px solid var(--line);background:#fbfaf5;grid-template-columns:45px 1fr auto;align-items:center;gap:1rem;padding:1rem 1.3rem;display:grid}.progress-row:last-child{border:0}.progress-row div{flex-direction:column;display:flex}.progress-row small{color:#718079}.print-guidance{text-align:center;color:#5d6c66;margin:1.4rem}.prose{max-width:850px}.prose section{border-top:1px solid var(--line);padding:1.5rem 0}.prose h2{font-size:1.6rem}.prose p{color:#52645d;line-height:1.7}.welcome-panel>img{width:224px;height:144px;margin-bottom:2rem}.topbar{height:118px}.brand img{width:116px;height:92px}.activity-toolbar{justify-content:space-between;align-items:center;margin-bottom:1rem;display:flex}.activity-toolbar .back-link{margin-bottom:0}.reset-button{color:#754b0e;box-shadow:none;background:#fff8e8;border:1px solid #d5ad64}.reset-button:hover{background:#ffefc8}.tree-wrap-fit{overflow:hidden}.tree-wrap-fit .tree-svg{width:100%;min-width:0;max-height:430px}.shape-progress{margin:1rem 0;font-size:1.05rem}.shape-activity-layout{grid-template-columns:minmax(0,1fr) 220px;align-items:start;gap:1.25rem;display:grid}.shape-problem-card{min-width:0;min-height:0}.shape-definitions-frame{background:#edf3ed;border:1px solid #c8d2c9;border-radius:14px;padding:1.1rem;position:sticky;top:138px}.shape-definitions-frame h2{margin-bottom:1rem;font-size:1.35rem}.shape-definition-buttons{gap:.65rem;display:grid}.shape-definition-button{width:100%;color:var(--forest);box-shadow:none;text-align:left;background:#fff;border:1px solid #8fa99b}.shape-definition-button:hover{background:#dcebe2}.shape-definition-backdrop{z-index:100;background:#0b241dcc;place-items:center;padding:1.2rem;display:grid;position:fixed;inset:0}.shape-definition-dialog{background:#fffdf7;border-radius:16px;width:min(560px,100%);padding:2rem;box-shadow:0 24px 80px #0006}.shape-definition-dialog h2{font-size:2rem}.shape-definition-dialog p{color:#435a52;font-size:1.05rem;line-height:1.7}.shape-definition-dialog .button{min-width:110px;margin-top:.5rem}@media (width<=900px){.welcome{grid-template-columns:1fr}.welcome-art{display:none}.activity-grid{grid-template-columns:repeat(2,1fr)}.student-chip div{display:none}.topbar{padding:0 2vw}.brand small{display:none}.score-hero{grid-template-columns:1fr 1fr}.score-ring{grid-column:1/-1}.shape-activity-layout{grid-template-columns:1fr}.shape-definitions-frame{order:-1;position:static}.shape-definition-buttons{grid-template-columns:repeat(3,1fr)}}@media (width<=620px){.name-row,.dashboard-head,.report-head{flex-direction:column;align-items:stretch}.welcome-panel{padding:2rem 1.2rem}.welcome-panel>img{margin-bottom:2rem}.topbar{flex-wrap:wrap;height:auto;padding:.6rem 3vw}.topbar nav{order:3;justify-content:center;width:100%}.activity-grid{grid-template-columns:1fr}.activity-card{min-height:240px}.page{padding-top:2rem}.score-hero{grid-template-columns:1fr}.progress-row{grid-template-columns:35px 1fr}.progress-row .status{grid-column:2}.choice-grid,.shape-definition-buttons{grid-template-columns:1fr}}@media print{body{background:#fff}.topbar,.print-button,.back-link,.print-guidance{display:none!important}.page{width:100%;padding:0}.print-brand{border-bottom:2px solid #173f35;align-items:center;gap:1rem;padding-bottom:1rem;display:flex}.print-brand img{object-fit:contain;width:70px;height:50px}.report-head{margin-top:1rem}.report-head h1{font-size:2rem}.score-hero{color:#17362e;background:#fff;border:1px solid #777;padding:1rem}.score-hero span{color:#555}.score-ring{background:#eee;border:3px solid #173f35;width:95px;height:95px}.score-ring:after{background:#fff}.score-ring span{color:#17362e}.progress-row{break-inside:avoid;background:#fff;padding:.55rem 1rem}.status{border:1px solid #777}.report{font-size:10pt}@page{margin:.55in}}.bst-code-lab{color:var(--ink)}.bst-code-header{justify-content:space-between;align-items:flex-start;gap:2rem;margin-bottom:1.2rem;display:flex}.bst-code-header h1{margin-bottom:.55rem;font-size:clamp(2rem,4vw,3.5rem)}.bst-code-header>div:first-child>p:last-child{color:#60716b;max-width:720px;line-height:1.55}.bst-code-progress{background:#fff;border:1px solid #d1d7cd;border-radius:12px;flex-direction:column;flex:none;gap:.1rem;padding:.7rem 1rem;display:flex}.bst-code-progress span{color:#6a7772;font-size:.75rem}.bst-code-progress.complete{color:#21613e;background:#e3f3e8;border-color:#75b18e}.bst-code-tabs{grid-template-columns:1fr 1fr;gap:.7rem;margin:1rem 0;display:grid}.bst-code-tabs button{color:var(--ink);text-align:left;background:#fff;border:1px solid #cfd5cc;border-radius:10px;grid-template-columns:auto 1fr auto;align-items:center;gap:.65rem;padding:.85rem 1rem;font-weight:700;display:grid}.bst-code-tabs button>span{background:#e7ebe4;border-radius:50%;place-items:center;width:27px;height:27px;display:grid}.bst-code-tabs button small{color:#718079;font-weight:600}.bst-code-tabs button.active{border-color:var(--green);box-shadow:inset 0 0 0 2px var(--green);background:#eff6f1}.bst-code-instructions{border:1px solid #d8c691;border-left:5px solid var(--amber);background:#fff9e8;border-radius:10px;margin-bottom:1rem;padding:1rem 1.15rem}.bst-code-instructions h2{margin-bottom:.4rem;font-size:1.25rem}.bst-code-instructions p{margin:.25rem 0;line-height:1.5}.bst-code-instructions code{font-weight:800}.bst-code-workspace{grid-template-columns:minmax(0,1.35fr) minmax(290px,.65fr);align-items:start;gap:1rem;display:grid}.bst-code-panel,.bst-test-panel{background:#fff;border:1px solid #d4d9d1;border-radius:14px;overflow:hidden;box-shadow:0 14px 34px #17362e12}.bst-code-toolbar,.bst-code-actions,.bst-test-panel>h2{justify-content:space-between;align-items:center;gap:.75rem;padding:.75rem 1rem;display:flex}.bst-code-toolbar{color:#eef1ff;background:#202537;font-size:.85rem;font-weight:700}.bst-code-toolbar>span{align-items:center;gap:.55rem;display:flex}.bst-code-toolbar i{background:#a7f655;border-radius:50%;width:.65rem;height:.65rem;box-shadow:0 0 0 4px #a7f65522}.bst-code-toolbar button{color:#eef1ff;background:0 0;border:0;font-weight:700}.bst-code-fixed,.bst-code-editor{color:#e8edff;tab-size:4;background:#111522;border:0;border-radius:0;width:100%;margin:0;font:13px/1.55 ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;display:block}.bst-code-fixed{color:#929db9;white-space:pre-wrap;padding:.9rem 1rem .25rem}.bst-code-fixed code{font:inherit}.bst-code-fixed-bottom{padding:.25rem 1rem .9rem}.bst-code-editor{resize:vertical;background:#182031;border-left:4px solid #e5a63c;outline:none;min-height:260px;padding:.75rem 1rem}.bst-code-editor:focus{box-shadow:inset 0 0 0 2px #e5a63c}.bst-code-help{color:#66736e;border-top:1px solid #dce1d9;margin:0;padding:.7rem 1rem;font-size:.78rem;line-height:1.45}.bst-code-actions{border-top:1px solid #dce1d9}.bst-code-actions>span{color:#75817c;font-size:.8rem}.bst-test-panel{min-height:350px}.bst-test-panel>h2{border-bottom:1px solid #e1e5df;justify-content:flex-start;margin:0;font:700 1rem DM Sans,sans-serif}.bst-test-panel>h2 span{font-family:monospace}.bst-test-empty{text-align:center;color:#77837e;justify-items:center;gap:.6rem;padding:4rem 2rem;display:grid}.bst-test-empty>span{font:700 2rem monospace}.bst-console-message{background:#e9f2f6;border-left:5px solid #49758b;border-radius:9px;flex-direction:column;gap:.2rem;margin:1rem;padding:.85rem;display:flex}.bst-console-message.error{background:#fff0ed;border-color:#a73d3a}.bst-console-message.success{background:#dff0e5;border-color:#2d7650}.bst-console-message span{font-size:.82rem;line-height:1.4}.bst-errors,.bst-test-results{margin:0;padding:.1rem 1rem 1rem;list-style:none}.bst-errors li{color:#90312f;background:#fff0ed;border-radius:7px;margin:.5rem 0;padding:.7rem;font:12px/1.45 ui-monospace,monospace}.bst-test-results li{border-bottom:1px solid #e8ebe6;gap:.65rem;padding:.75rem 0;display:flex}.bst-test-results li:last-child{border:0}.bst-test-results li>span{flex:none;font-weight:800}.bst-test-results li.passed>span{color:#24704a}.bst-test-results li.failed>span{color:#b0493e}.bst-test-results strong,.bst-test-results small{display:block}.bst-test-results small{color:#68756f;margin-top:.2rem;line-height:1.35}.sr-only{clip:rect(0,0,0,0)!important;white-space:nowrap!important;border:0!important;width:1px!important;height:1px!important;margin:-1px!important;padding:0!important;position:absolute!important;overflow:hidden!important}@media (width<=900px){.bst-code-workspace{grid-template-columns:1fr}.bst-code-header{flex-direction:column;gap:.7rem}.bst-code-progress{align-self:stretch}.bst-code-editor{min-height:230px}}@media (width<=620px){.bst-code-tabs{grid-template-columns:1fr}.bst-code-tabs button{grid-template-columns:auto 1fr}.bst-code-tabs button small{grid-column:2}.bst-code-actions{flex-direction:column;align-items:flex-start}.bst-code-fixed,.bst-code-editor{font-size:12px}.bst-test-panel{min-height:280px}}
