:root{--ink:#172e3b;--muted:#526570;--teal:#126c70;--teal-light:#edf6f5;--amber:#ac6512;--line:#dce4e8;--paper:#fff;--back:#f5f7f8;--radius:12px;color-scheme:light;font:16px/1.65 system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;color:var(--ink);background:var(--back)}
*{box-sizing:border-box}body{margin:0}button,input,textarea,select{font:inherit}button{cursor:pointer;min-height:44px;border:1px solid #bdced3;border-radius:8px;background:white;color:var(--ink);padding:8px 14px;line-height:1.35}button:hover:not(:disabled){background:var(--teal-light);border-color:var(--teal)}button:disabled{cursor:default;opacity:.5}button.primary{background:var(--teal);color:white;border-color:var(--teal)}button.primary:hover{background:#0f565a}button.quiet{border-color:transparent;background:transparent;color:var(--muted)}:focus-visible{outline:3px solid #b96600;outline-offset:3px}[hidden]{display:none!important}a{color:var(--teal)}p{margin:0 0 1em}h1,h2,h3,h4{line-height:1.3;margin:0 0 .7em}h1{font-size:1.85rem;margin:0}h2{font-size:1.8rem}h3{font-size:1.15rem}h4{font-size:1rem}code{font:15px/1.6 ui-monospace,SFMono-Regular,Consolas,monospace;overflow-wrap:anywhere}small,.small{font-size:.86rem;color:var(--muted)}.small{margin:.5em 0}.sr-only,.skip-link:not(:focus){position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.skip-link:focus{position:absolute;background:white;padding:12px;z-index:20}.course-header{max-width:1480px;margin:auto;padding:25px 32px 18px;display:flex;align-items:center;justify-content:space-between;gap:20px}.brand{display:flex;align-items:center;gap:14px}.brand img{object-fit:contain;width:72px;height:48px}.eyebrow{font-size:.8rem;letter-spacing:.04em;color:var(--muted);margin:0 0 .4em}.header-actions{display:flex;gap:8px}#path-toggle{display:none}.course-progress{max-width:1480px;margin:auto;padding:0 32px 22px}.course-progress label{display:flex;justify-content:space-between;gap:10px;font-size:.87rem}.course-progress label span{color:var(--teal);font-weight:600}progress{appearance:none;border:0;display:block;width:100%;height:6px;overflow:hidden;border-radius:6px;margin:8px 0;background:var(--line)}progress::-webkit-progress-bar{background:var(--line)}progress::-webkit-progress-value{background:var(--teal)}progress::-moz-progress-bar{background:var(--teal)}.course-progress p{font-size:.8rem;color:var(--muted);margin:0}.course-layout{display:grid;grid-template-columns:270px minmax(0,1fr);gap:28px;max-width:1480px;margin:auto;padding:0 32px 36px}aside{align-self:start;min-width:0}.path-intro h2{font-size:1rem;margin-bottom:8px}.path-intro p{font-size:.8rem;color:var(--muted)}#path-nav h3{font-size:.85rem;margin:25px 0 12px}.nav-group{margin:0 0 8px;border-bottom:1px solid var(--line);padding:0 0 8px}.nav-group summary{font-weight:600;font-size:.84rem;cursor:pointer;padding:10px 0}.nav-group button{width:100%;display:grid;grid-template-columns:24px 1fr 24px;text-align:left;gap:7px;font-size:.82rem;border:0;min-height:52px;padding:9px 8px;background:transparent;margin:3px 0;align-items:center}.nav-group button[aria-current]{background:#dcefed;color:#095d61;font-weight:650}.nav-number,.nav-status{font-size:.73rem;color:var(--muted)}.completed .nav-status{color:var(--teal);font-weight:700}.path-bottom{margin-top:22px;color:var(--muted);font-size:.77rem}.path-bottom button{width:100%;font-size:.8rem;margin:3px 0}.path-bottom p{margin:10px 0}main{min-width:0;background:var(--paper);border:1px solid var(--line);border-radius:var(--radius);padding:30px 36px;outline:none}.lesson-header h2{margin:.4em 0}.learning-goal{color:var(--muted);font-size:.97rem}.story{background:#fff8ec;border-left:3px solid #d7943d;border-radius:0 10px 10px 0;padding:20px 22px;display:flex;align-items:center;gap:22px;margin:24px 0 30px}.story p{font-size:.96rem;margin-bottom:0}.story h3{font-size:.82rem;color:#865013;text-transform:uppercase;letter-spacing:.06em}.story img{width:190px;height:145px;object-fit:contain;flex:none}.theory>p{max-width:80ch;margin-bottom:1.15em}.worked-example{background:var(--teal-light);padding:18px 22px;border-radius:10px;margin:22px 0 30px}.worked-example h4{color:#13585b}.worked-example ol{margin:0;padding-left:22px}.worked-example li{padding:4px 0}.lab-section{border:1px solid #c9dedf;border-radius:12px;padding:22px;background:#fcfefe;margin:28px 0}.section-title{border-bottom:1px solid var(--line);padding-bottom:12px;margin-bottom:18px}.section-title h3{margin-bottom:4px}.section-title span{font-size:.8rem;color:var(--muted)}.lab-controls{display:flex;flex-wrap:wrap;gap:16px}.lab-field{display:block;flex:1 1 160px;min-width:0;margin:0 0 16px}.lab-field>span{display:block;font-size:.85rem;font-weight:600;margin-bottom:5px}.lab-field input:not([type=range]),.lab-field textarea,.lab-field select,.answer-input{width:100%;min-width:0;padding:9px 11px;border:1px solid #b7c7ce;border-radius:7px;background:white;color:var(--ink)}.lab-field textarea{resize:vertical;min-height:75px}.lab-field input[type=range]{width:100%;accent-color:var(--teal);min-height:44px}.lab-output{background:#f0f5f6;padding:14px 16px;border-radius:8px;margin:12px 0;min-width:0}.lab-output:empty{display:none}.lab-output.error{background:#fff2ed;color:#9b3520}.data-row{display:grid;grid-template-columns:minmax(100px,33%) minmax(0,1fr);gap:12px;padding:10px 0;align-items:start;border-bottom:1px solid #dce7e8;min-width:0}.data-row:last-child{border:0}.data-row>span{font-size:.85rem;color:var(--muted);overflow-wrap:anywhere}.data-row small{display:block}.data-row code{min-width:0}.alphabet-strip{display:flex;overflow-x:auto;max-width:100%;padding:8px 0 12px;gap:2px}.alphabet-strip>span{display:flex;flex:none;flex-direction:column;align-items:center;border:1px solid var(--line);background:white;min-width:34px;padding:6px}.alphabet-strip i{font-style:normal;color:var(--muted);line-height:1.2}.alphabet-strip small{font-size:.68rem;white-space:nowrap}.square-wrap{max-width:100%;overflow-x:auto}.poly-square{border-collapse:separate;border-spacing:3px;width:min(100%,370px);margin:auto}.poly-square caption{font-size:.8rem;padding:5px;text-align:center}.poly-square th{font-size:.8rem}.poly-square td{text-align:center}.poly-square button{width:100%;padding:5px;min-width:42px;min-height:48px;font-weight:600}.poly-square button small{display:block;font-size:.65rem;font-weight:400}.frequency-bars{display:grid;grid-template-columns:1fr 1fr;gap:3px 22px;margin:16px 0}.freq-row{display:grid;grid-template-columns:18px 1fr 85px;align-items:center;gap:8px;font-size:.78rem}.freq-track{height:10px;background:#e5eded;border-radius:3px}.freq-track i{display:block;height:100%;background:#29888a;border-radius:3px}.bits-table{overflow-x:auto;max-width:100%;padding-bottom:8px}.bits-table table{border-spacing:2px}.bits-table caption{text-align:left;color:var(--muted);font-size:.8rem}.bits-table th{padding:5px 10px 5px 0;font-size:.8rem;text-align:left}.bits-table td button{padding:6px;min-width:32px;font-family:monospace}.bits-table tr:last-child td button{background:#d5edeb;opacity:1;color:var(--teal);font-weight:700}.brute-list{max-height:450px;overflow:auto;border:1px solid var(--line);padding:8px 14px;border-radius:8px}.brute-list .data-row{grid-template-columns:100px minmax(0,1fr)}.participants{display:grid;grid-template-columns:1fr 80px 1fr;gap:10px;align-items:center}.participants section{padding:15px;background:white;border:1px solid var(--line);border-radius:8px;min-width:0}.participants h4{color:var(--teal)}.participants p{font-size:.86rem;margin-bottom:8px}.participants strong{font-size:.86rem}.exchange{text-align:center;color:var(--teal);font-size:.8rem}.exchange small{display:block;font-size:.67rem}.concept-cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:12px}.concept-cards article{background:var(--teal-light);padding:18px;border-radius:8px}.concept-cards p{font-size:.9rem;margin:0}.step-diagram{list-style:none;padding:0;counter-reset:station;margin:0}.step-diagram li{padding:12px 14px;border-left:3px solid #cbdadb;color:var(--muted)}.step-diagram li.active{background:#e0f0ef;border-color:var(--teal);color:var(--ink)}.step-diagram li.done{border-color:#71a7a7}.step-diagram p{font-size:.9rem;margin:8px 0 0}.actions{display:flex;align-items:center;flex-wrap:wrap;gap:8px;margin:14px 0}.actions button{font-size:.87rem}.candidate-match{background:#d9eee7;padding-left:8px}.puzzles>h3{font-size:1.3rem}.question{border:1px solid var(--line);padding:22px;border-radius:10px;margin:20px 0}.question.solved{border-color:#81b1a6}.question-top{display:flex;gap:10px;align-items:center;justify-content:space-between;margin-bottom:12px}.question-top h3{margin:0;font-size:1rem}.question-status{font-size:.75rem;color:var(--muted)}.solved .question-status{color:#276951}.question-prompt{margin-bottom:18px;overflow-wrap:anywhere}.question fieldset{border:0;padding:0;margin:0}.choice{display:flex;gap:10px;align-items:flex-start;padding:10px 12px;border:1px solid var(--line);border-radius:7px;margin:8px 0;line-height:1.5;font-size:.93rem;cursor:pointer}.choice:has(input:checked){background:var(--teal-light);border-color:#77b0ae}.choice input{flex:none;width:18px;height:18px;margin:3px 0 0;accent-color:var(--teal)}.answer-label{display:block;font-size:.82rem;color:var(--muted);margin-bottom:5px}.answer-input{max-width:600px}.hints p{background:#fff8e9;border-left:3px solid #c58c2b;padding:10px 12px;font-size:.88rem;margin:8px 0}.feedback{font-size:.91rem;margin:12px 0 0;min-height:0}.feedback:empty{display:none}.feedback.correct{color:#226648}.feedback.incorrect{color:#953b24}.solution-note{font-size:.9rem;border-top:1px solid var(--line);padding-top:12px;margin-top:16px}.solution-note summary{cursor:pointer}.solution-note p{margin:10px 0}.solution-note strong{overflow-wrap:anywhere}.order-list{list-style:none;padding:0;counter-reset:order}.order-list li{counter-increment:order;display:flex;gap:12px;justify-content:space-between;align-items:center;border:1px solid var(--line);border-radius:7px;padding:8px 10px;margin:8px 0;font-size:.88rem}.order-list li>span:before{content:counter(order) '. ';font-weight:600;color:var(--teal)}.order-list li>div{display:flex;gap:4px;flex:none}.order-list button{padding:6px 10px}.lesson-bottom{display:flex;justify-content:space-between;align-items:center;gap:16px;border-top:1px solid var(--line);padding-top:22px;margin-top:30px}.lesson-bottom p{font-size:.77rem;color:var(--muted);text-align:center;margin:0}.lesson-bottom button{font-size:.86rem}.final-summary{background:var(--teal-light);padding:22px;margin-top:24px;border-radius:10px}.course-footer{max-width:1480px;padding:0 32px 32px;margin:auto;color:var(--muted);font-size:.81rem}.course-footer details{border-top:1px solid var(--line);padding-top:16px}.course-footer summary{cursor:pointer;padding:8px 0}.course-footer p{max-width:100ch;margin-top:10px}.storage-warning{background:#fff0cc;padding:15px 24px;max-width:1480px;margin:10px auto;font-size:.9rem}dialog{max-width:550px;width:calc(100% - 32px);padding:28px;border:1px solid var(--line);border-radius:14px;color:var(--ink)}dialog::backdrop{background:#172e3b88}dialog h2{font-size:1.3rem}dialog p{font-size:.95rem}
@media(min-width:1700px){.course-header,.course-progress,.course-layout,.course-footer{max-width:1600px}.course-layout{grid-template-columns:290px minmax(0,1fr);gap:40px}main{padding:38px 52px}}
@media(max-width:1050px){.course-layout{grid-template-columns:225px minmax(0,1fr);gap:18px;padding:0 20px 24px}.course-header{padding:20px}.course-progress{padding:0 20px 20px}main{padding:24px}.story img{width:140px;height:120px}.frequency-bars{grid-template-columns:1fr}.participants{grid-template-columns:1fr 60px 1fr}}
@media(max-width:780px){#path-toggle{display:inline-block}.course-layout{display:block;padding:0 14px 24px}.course-header{padding:18px 14px;align-items:flex-start}.course-progress{padding:0 14px 20px}.header-actions{flex-direction:column;gap:6px}.header-actions button{font-size:.78rem;min-height:40px;padding:7px 10px}.brand{gap:8px}.brand img{width:52px;height:42px}.brand .eyebrow{font-size:.7rem;max-width:200px}h1{font-size:1.45rem}#path{display:none;padding:18px;background:white;border:1px solid var(--line);border-radius:10px;margin-bottom:18px}.path-open #path{display:block}.nav-group button{min-height:48px;font-size:.9rem}main{padding:22px;border-radius:10px}.lesson-header h2{font-size:1.45rem}.story{padding:16px;gap:12px}.story img{width:110px;height:100px}.course-footer{padding:0 14px 24px}.lab-section{padding:16px}.question{padding:18px}.lesson-bottom{flex-wrap:wrap}.lesson-bottom p{order:3;width:100%}}
@media(max-width:480px){main{padding:19px 16px}.story{display:block}.story img{display:block;width:160px;height:108px;margin:12px auto 0}.lab-controls{gap:0}.lab-field{flex-basis:100%}.data-row{grid-template-columns:1fr;gap:3px}.participants{grid-template-columns:1fr}.exchange{padding:2px}.participants section{padding:14px}.frequency-bars{gap:5px}.concept-cards{grid-template-columns:1fr}.question{padding:16px}.question .actions button{flex:1 1 130px}.question .actions .quiet{flex-basis:100%}.lab-section{padding:14px}.lesson-bottom{gap:10px}.lesson-bottom button{flex:1 1 120px}.order-list li{align-items:flex-start}.order-list button{min-height:44px;min-width:38px}.worked-example{padding:16px}.course-progress label{font-size:.8rem}.course-header{gap:8px}.brand img{width:44px}.brand .eyebrow{max-width:155px}.header-actions #fullscreen{display:none}}
@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important}}
.lab-output{overflow-wrap:anywhere}
@media(max-width:360px){.course-header{flex-wrap:wrap}.brand{width:100%;min-width:0}.brand .eyebrow{max-width:none}.header-actions{flex-direction:row;margin-left:auto}.header-actions #fullscreen{display:inline-block}}
@media print{body{background:white}.course-header,.course-progress,#path,.header-actions,.course-footer,.lesson-bottom,.question .actions{display:none}.course-layout{display:block;padding:0}main{border:0;padding:0}.lab-section,.question{break-inside:avoid}dialog{display:none}}
