@font-face{font-family:DuetOnest;src:url(/fonts/duet-onest.ttf) format("truetype");font-weight:100 900;font-display:swap}.duet-public{--background:0 0% 100%;--foreground:194 39% 16%;--card:0 0% 100%;--card-foreground:194 39% 16%;--muted:174 45% 96%;--muted-foreground:195 12% 38%;--primary:182 88% 27%;--primary-foreground:0 0% 100%;--cta:3 60% 46%;--cta-foreground:0 0% 100%;--ring:182 88% 27%;--border:173 24% 87%;--accent:174 45% 96%;--radius:0.75rem;font-family:DuetOnest,Segoe UI,sans-serif;color:#19323a;background:white;line-height:1.6}.duet-public :where(h1,h2,h3){color:#19323a;letter-spacing:-.03em;overflow-wrap:anywhere;text-wrap:balance}.duet-public :where(a,button,input,select):focus-visible{outline:3px solid #087f83;outline-offset:3px}.duet-public :where(.text-blue-600,.text-blue-700,.text-blue-800,.text-blue-900){color:#066569}.duet-public :where(.bg-blue-50,.bg-slate-50){background:#eff9f8}.duet-public :where(.border-blue-200,.border-slate-200){border-color:#d6e6e6}.duet-public :where(.bg-blue-600,.bg-blue-700){background:#087f83}.duet-public :where(button,[role=button]){min-height:48px}.duet-public .duet-brand:before{content:"";display:block;width:44px;height:44px;flex-shrink:0;margin-right:8px;background:url(/brand/duet-mark.webp) 50%/contain no-repeat}.duet-public .duet-brand{color:#19323a;text-transform:lowercase}.duet-public :where(.text-slate-500,.text-slate-600){color:#566e76}.duet-public :where(.grid,.flex)>*{min-width:0}.duet-public :where(input,select){max-width:100%}@media(max-width:420px){.duet-public :where(button,a){overflow-wrap:anywhere}.duet-public .duet-brand{font-size:1rem}.duet-public .duet-brand:before{width:32px;height:32px}}.duet-brand-duet,.duet-public .duet-brand-original{display:none}.duet-public .duet-brand-duet{display:block}.duet-public .duet-brand-duet small{display:block;font-size:.65rem;font-weight:600;letter-spacing:0;color:#066569}.duet-public [data-slot=button],.public-header [data-slot=button]{white-space:normal;overflow-wrap:anywhere;max-width:100%;height:auto;min-height:44px;padding-top:.5rem;padding-bottom:.5rem;flex-shrink:1}.duet-public header>.container,.public-header>.container{flex-wrap:wrap;gap:.75rem}.public-header>.container>*{min-width:0;max-width:100%}.public-header .duet-brand{overflow-wrap:anywhere}.duet-public :where(.grid,.flex){min-width:0}body:has(.duet-public,.public-header) section[aria-labelledby=cookie-consent-title]>div:last-child{flex-wrap:wrap;min-width:0;max-width:100%}body:has(.duet-public,.public-header) section[aria-labelledby=cookie-consent-title] [data-slot=button]{white-space:normal;overflow-wrap:anywhere;max-width:100%;height:auto;min-height:44px;flex-shrink:1;padding-top:.5rem;padding-bottom:.5rem}.duet-public{overflow-wrap:anywhere}.duet-public fieldset{min-inline-size:0}.duet-public [data-slot=button],.public-header [data-slot=button]{min-width:44px;padding-inline:16px}.duet-public a.inline-flex.whitespace-nowrap{white-space:normal;max-width:100%;min-width:44px;padding-inline:16px;height:auto;min-height:44px;flex-shrink:1}.public-header nav,.public-header>.container>div{flex-wrap:wrap}.public-header nav a{overflow-wrap:anywhere}.public-header details:not([open]) nav{display:none}body:has(.public-header) main{min-width:0;overflow-wrap:anywhere}body:has(.public-header) main .grid>*{min-width:0}.duet-public .katex{display:inline-block;max-width:100%;overflow-x:auto;vertical-align:middle;padding-block:.15em}.duet-layout .catalog-group summary>.catalog-icon{flex:0 0 32px;width:32px;height:32px;color:var(--green);margin-right:14px}.duet-layout .catalog-group summary>span{flex:1;min-width:0}.duet-layout .subject-dialog{margin:auto;max-width:calc(100% - 20px)}.duet-layout .course-link>.catalog-icon{flex:0 0 24px;width:24px;height:24px;color:var(--green);margin-right:12px}.duet-layout .course-link>span:first-of-type{flex:1;min-width:0}.duet-layout .icon-accent{stroke:var(--secondary,#c33c33)}.duet-layout .promo-lesson{padding:24px 28px 28px}.duet-layout .promo-progress{display:flex;gap:16px;list-style:none;padding:0;margin:0 0 28px;color:var(--muted);font-size:13px}.duet-layout .promo-progress li{display:flex;gap:7px;align-items:center}.duet-layout .promo-progress span{display:inline-grid;place-items:center;border:1px solid var(--border);width:25px;height:25px;border-radius:50%;flex:0 0 25px}.duet-layout .promo-progress [aria-current]{color:var(--accent);font-weight:600}.duet-layout .promo-progress [aria-current] span{background:var(--accent);color:white;border-color:var(--accent)}.duet-layout .promo-lesson h3{font-size:28px;line-height:1.2;letter-spacing:-.7px;margin:0 0 16px}.duet-layout .promo-task{font-size:17px;line-height:1.55;margin:0 0 22px}.duet-layout .promo-model{display:block;width:100%;max-height:230px;overflow:visible;color:var(--accent);fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}.duet-layout .promo-model text{stroke:none;fill:var(--ink);font:15px Onest,sans-serif;text-anchor:middle}.duet-layout .promo-model .model-number{font-size:32px}.duet-layout .promo-model .model-caption{font-size:12px;fill:var(--muted)}.duet-layout .promo-model .model-fill{fill:var(--accent);stroke:var(--accent)}.duet-layout .promo-model .model-secondary{fill:var(--secondary);stroke:var(--secondary)}.duet-layout .promo-model .model-axis{stroke:var(--border)}.duet-layout .promo-model .mean-line{stroke:var(--secondary);stroke-dasharray:5 5}.duet-layout .promo-formula{font:25px/1.5 Georgia,serif;text-align:center;margin:16px 0}.duet-layout .promo-formula strong{color:var(--accent)}.duet-layout .model-legend{font-size:14px;text-align:center;color:var(--muted)}.duet-layout .fraction-sector{fill:var(--mint);stroke:var(--accent);stroke-width:1.5;cursor:pointer}.duet-layout .fraction-sector.selected{fill:var(--accent)}.duet-layout .fraction-sector:focus,.duet-layout .fraction-sector:focus-visible{outline:none}.duet-layout .fraction-sector:focus-visible{stroke:var(--ink,#19323a);stroke-width:4}.duet-layout .promo-lesson[data-solved=true] .fraction-sector{pointer-events:none}.duet-layout .promo-choices,.duet-layout .sector-controls{display:flex;flex-wrap:wrap;gap:10px;margin:20px 0}.duet-layout .promo-choices button,.duet-layout .sector-controls button{background:white;color:var(--ink);padding:11px 16px;min-height:44px;border:1px solid var(--border);border-radius:8px;font:15px/1.4 Onest,sans-serif;cursor:pointer}.duet-layout .promo-choices [aria-pressed=true],.duet-layout .sector-controls [aria-pressed=true]{border-color:var(--accent);color:var(--accent);background:var(--mint);box-shadow:inset 0 0 0 1px var(--accent)}.duet-layout .promo-feedback{font-size:16px;line-height:1.55;padding:16px 18px;border-radius:8px;background:var(--mint);margin:20px 0}.duet-layout .promo-feedback:empty{display:none}.duet-layout .promo-feedback.wrong{background:#fff1ef;color:#92302a}.duet-layout .promo-actions{display:flex;gap:18px;align-items:center;flex-wrap:wrap;margin-top:24px;border-top:1px solid var(--border);padding-top:22px}.duet-layout .promo-actions .button{font-size:16px}.duet-layout .promo-hint,.duet-layout .promo-utility{font:14px/1.5 Onest,sans-serif;color:var(--muted);background:transparent;border:0;padding:10px 0;min-height:44px;text-decoration:underline;text-underline-offset:4px;cursor:pointer}.duet-layout .promo-utility:disabled{opacity:.5;cursor:default}.duet-layout .promo-course{margin-top:16px}.duet-layout .python-console{background:var(--mint);border-radius:8px;padding:16px 20px;margin-top:12px}.duet-layout .python-console span{font-size:12px;color:var(--muted)}.duet-layout .python-console pre{font:17px/1.6 ui-monospace,monospace;min-height:70px;margin:10px 0 0;white-space:pre-wrap}.duet-layout .experiment-controls{display:flex;align-items:center;justify-content:center;flex-wrap:wrap;gap:24px}.duet-layout .experiment-controls output{min-width:65px;font-variant-numeric:tabular-nums;color:var(--muted);font-size:14px}.duet-layout .pendulum-string{stroke:var(--ink)}.duet-layout .logic-scroll{overflow-x:auto}.duet-layout .logic-table{border-collapse:collapse;width:100%;font-size:14px}.duet-layout .logic-table caption{text-align:left;color:var(--muted);margin-bottom:12px}.duet-layout .logic-table th{font-weight:500;padding:12px 6px}.duet-layout .logic-table td{border:1px solid var(--border);text-align:center;padding:0}.duet-layout .logic-table button{display:block;width:100%;min-height:48px;border:0;background:white;color:var(--muted);font:20px Onest,sans-serif;cursor:pointer}.duet-layout .logic-table [aria-pressed=true]{background:var(--mint);color:var(--accent);font-weight:600}.duet-layout .training-set{padding:16px 20px;background:var(--mint);border-radius:8px}.duet-layout .training-set p{font-size:16px;line-height:1.5;margin:6px 0}.duet-layout .training-set p:first-child{font-size:12px;color:var(--muted);margin-bottom:10px}.duet-layout .training-set strong{color:var(--accent);font-weight:500}.duet-layout .wire{stroke:var(--border);stroke-width:4}.duet-layout .wire.active{stroke:var(--accent)}.duet-layout .gate-shape{fill:var(--mint);stroke:var(--accent)}.duet-layout .bulb{fill:white;stroke:var(--muted)}.duet-layout .bulb.lit{fill:#fff1dc;stroke:var(--secondary)}.duet-layout .bulb.unknown{fill:white;stroke:var(--muted);stroke-dasharray:4 4}.duet-layout .promo-model .bulb.unknown text{font-size:22px;font-weight:700;fill:var(--muted)}.duet-layout .promo-lesson .gate-inputs{justify-content:center}.duet-layout .promo-lesson .gate-inputs label{min-height:44px;display:flex;align-items:center;gap:8px;cursor:pointer}.duet-layout .number-track{display:flex;gap:10px;align-items:center;flex-wrap:wrap;padding:24px 0;font-size:26px}.duet-layout .number-track span{min-width:52px;height:52px;display:grid;place-items:center;background:var(--mint);color:var(--accent);border-radius:50%}.duet-layout .number-track i{font-size:16px;font-style:normal;color:var(--muted)}.duet-layout .promo-workspace .function-graph{width:100%;display:block;overflow:hidden;max-height:300px}.duet-layout .promo-workspace .graph-grid{stroke:var(--border);stroke-width:1}.duet-layout .promo-workspace .graph-axis{stroke:var(--ink);stroke-width:1.4;fill:none}.duet-layout .promo-workspace .graph-labels{fill:var(--muted);font:14px Onest,sans-serif}.duet-layout .promo-workspace .graph-curve{stroke:var(--accent);stroke-width:3.4;fill:none}.duet-layout .promo-workspace .graph-guide{stroke:var(--secondary);stroke-width:1.1;stroke-dasharray:5 6;fill:none}.duet-layout .promo-workspace .graph-vertex{fill:var(--secondary)}.duet-layout .promo-model .target-line{stroke:var(--accent);stroke-width:2.5;stroke-dasharray:2 5}.duet-layout .promo-model .line-label{font-size:13px;text-anchor:start;fill:var(--accent)}.duet-layout .promo-model .line-label.mean{fill:var(--secondary)}.duet-layout .code-choices button{padding:10px 18px}.duet-layout .code-choices pre,.duet-layout .promo-choices pre{margin:0;font:15px/1.4 ui-monospace,monospace;text-align:left}.duet-layout .logic-table .mark-1{color:var(--secondary);font-weight:600}.duet-layout .logic-table .mark-2{background:var(--mint);color:var(--accent);font-weight:700}.duet-layout .ai-add{display:flex;flex-wrap:wrap;gap:10px;align-items:center;margin:16px 0 4px}.duet-layout .promo-chip{min-height:44px;padding:0 14px;border:1px solid var(--accent);border-radius:8px;background:white;color:var(--accent);font:600 15px/1.2 Onest,sans-serif;cursor:pointer}.duet-layout .promo-chip:disabled{opacity:.45;cursor:default}.duet-layout .number-answer{display:flex;flex-wrap:wrap;align-items:center;gap:10px;font-size:16px}.duet-layout .promo-input{width:110px;min-height:48px;padding:0 12px;border:1.5px solid var(--border);border-radius:8px;font:600 20px/1 Onest,sans-serif;text-align:center}.duet-layout .promo-input:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 4px rgba(8,127,131,.16)}.duet-layout .promo-lesson h3{font-size:26px}.duet-layout .promo-choices button.is-wrong{border-color:#d9a29e;background:#fff1ef;color:#92302a;text-decoration:line-through;text-decoration-thickness:1px;opacity:1;cursor:default}.duet-layout .promo-choices button.is-right{border-color:var(--accent);background:var(--mint);color:var(--accent);box-shadow:inset 0 0 0 2px var(--accent);font-weight:700;opacity:1}.duet-layout .promo-win{margin:20px 0 10px;padding:18px 20px;border-radius:12px;background:var(--mint);border-left:5px solid var(--accent);animation:promo-pop .45s cubic-bezier(.16,1,.3,1);outline:none}.duet-layout .promo-win.shown{border-left-color:var(--secondary);background:#fdf3f2}.duet-layout .promo-win b{display:block;font-size:20px;margin-bottom:6px}.duet-layout .promo-win p{margin:0;font-size:17px;line-height:1.55}@keyframes promo-pop{0%{opacity:0;transform:translateY(10px) scale(.98)}}.duet-layout .promo-next{font-size:14px;color:var(--muted);margin:6px 0 0}.duet-layout .promo-more{font:600 16px/1.4 Onest,sans-serif;color:var(--accent);background:none;border:0;min-height:44px;padding:0 4px;cursor:pointer}.duet-layout .promo-more:hover{text-decoration:underline;text-underline-offset:4px}.duet-layout .fraction-pair{display:flex;align-items:center;justify-content:center;gap:18px}.duet-layout .fraction-pair .fraction-model{width:42%;max-width:200px}.duet-layout .pair-eq{font-size:34px;color:var(--muted)}.duet-layout .pair-cap{text-align:center;font-size:22px;margin:10px 0 0}.duet-layout .pair-cap b{color:var(--accent)}.duet-layout .fraction-model.grow{animation:promo-grow .8s cubic-bezier(.16,1,.3,1) .15s both}@keyframes promo-grow{0%{opacity:0;transform:scale(.6) rotate(-30deg)}}.duet-layout .fraction-model{max-width:240px;margin:0 auto}.duet-layout .fraction-readout{text-align:center;color:var(--muted)}.duet-layout .promo-formula.big{font-size:34px}.duet-layout .slide-in{animation:promo-pop .6s cubic-bezier(.16,1,.3,1)}.duet-layout .promo-workspace .graph-star{fill:var(--amber,#e2a13b);stroke:#9a6a12;stroke-width:1.5}.duet-layout .logic-facts{margin:0;padding:14px 18px 14px 36px;background:var(--mint);border-radius:10px;display:grid;gap:6px;font-size:17px}.duet-layout .logic-reveal td{height:48px;font-size:22px;font-weight:700;transition:background .3s}.duet-layout .logic-reveal td.yes{background:var(--mint);color:var(--accent)}.duet-layout .logic-reveal td.no{color:var(--secondary)}.duet-layout .logic-why{min-height:1.6em;margin:10px 0 0;font-weight:600;color:var(--accent)}.duet-layout .ai-bars{display:grid;grid-template-columns:90px 1fr 48px;gap:8px 10px;align-items:center;margin:16px 0 6px;font-size:15px}.duet-layout .ai-bars i{height:14px;border-radius:99px;background:var(--accent);min-width:2px;transition:width .4s cubic-bezier(.16,1,.3,1)}.duet-layout .ai-bars b{font-variant-numeric:tabular-nums;text-align:right}.duet-layout .ai-answer{font-size:18px;padding:12px 16px;border-radius:10px;border:1.5px dashed var(--accent);margin:10px 0 0}.duet-layout .ai-answer strong{color:var(--accent)}.duet-layout .pendulum-count{text-align:center;font-weight:600;color:var(--accent);font-variant-numeric:tabular-nums}.duet-layout .bounce-path{fill:none;stroke:var(--accent);stroke-width:3;stroke-dasharray:1;stroke-dashoffset:1;animation:promo-draw 2.4s ease-out .2s forwards}@keyframes promo-draw{to{stroke-dashoffset:0}}.duet-layout .number-track .hot,.duet-layout .promo-model text.hot{fill:var(--secondary);color:var(--secondary);font-weight:700}.duet-layout .number-track span.hot{background:#fdf3f2;animation:promo-pop .5s both}@media (prefers-reduced-motion:reduce){.duet-layout .bounce-path{stroke-dashoffset:0;animation:none}}@media(max-width:540px){.duet-layout .promo-lesson{padding:20px 16px}.duet-layout .promo-progress{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:9px;font-size:11px;margin-bottom:24px}.duet-layout .promo-progress li{gap:6px;flex-direction:column;text-align:center;min-width:0}.duet-layout .promo-progress span{width:20px;height:20px;flex-basis:20px}.duet-layout .promo-lesson h3{font-size:25px}.duet-layout .promo-task{font-size:16px}.duet-layout .promo-actions{gap:8px 18px}.duet-layout .promo-actions .button{width:100%;text-align:center}.duet-layout .sector-controls button{padding:10px 12px}.duet-layout .number-track{gap:7px;font-size:22px}.duet-layout .number-track span{min-width:44px;height:44px}}.duet-layout .demo-model{fill:initial;stroke:none;max-height:260px}.duet-layout .demo-model .demo-dot{cursor:pointer;transition:r .15s ease}.duet-layout .demo-model .demo-dot:focus{outline:none}.duet-layout .demo-model .demo-dot:focus-visible{stroke:var(--ink,#19323a);stroke-width:3}.duet-layout .demo-row{display:flex;flex-wrap:wrap;gap:8px;justify-content:center;margin:12px 0 4px}.duet-layout .demo-btn{min-height:44px;padding:8px 16px;border-radius:10px;border:1.5px solid var(--line,#d6e6e6);background:#fff;color:var(--ink,#19323a);font:inherit;font-weight:650;cursor:pointer}.duet-layout .demo-btn:hover:not(:disabled){border-color:var(--accent,#087f83)}.duet-layout .demo-btn:disabled{opacity:.45;cursor:default}.duet-layout .demo-btn.is-on{border-color:var(--accent,#087f83);background:var(--mint,#eff9f8)}.duet-layout .demo-status{margin:8px 0 0;text-align:center;color:var(--muted,#566e76);font-size:15px}.duet-layout .demo-status .demo-btn{min-height:36px;padding:4px 12px;margin-left:6px;font-size:14px}.duet-layout .mix{display:flex;justify-content:center;gap:28px}.duet-layout .mix-swatch{margin:0;display:grid;justify-items:center;gap:6px;font-size:14px;color:var(--muted,#566e76)}.duet-layout .mix-swatch span{width:96px;height:96px;border-radius:50%;border:1.5px solid var(--line,#d6e6e6);transition:background .3s ease}.duet-layout .mix-cans{display:flex;justify-content:center;gap:28px;margin-top:14px}.duet-layout .mix-col{display:grid;justify-items:center;gap:4px}.duet-layout .mix-col .demo-row{margin:0}.duet-layout .mix-count{display:flex;align-items:center;gap:6px;font-variant-numeric:tabular-nums}.duet-layout .mix-count span{width:18px;height:22px;border-radius:3px 3px 5px 5px;border:1.5px solid var(--ink,#19323a)}.duet-layout .demo-code{margin:0;padding:12px 16px;background:#19323a;color:#e6f2f1;border-radius:10px;font:15px/1.6 ui-monospace,Menlo,monospace;overflow-x:auto}.duet-layout .demo-code span{display:block;padding:0 6px;border-radius:4px}.duet-layout .demo-code span.is-here{background:rgba(226,161,59,.35)}.duet-layout .demo-vars{display:flex;flex-wrap:wrap;gap:10px;margin-top:10px}.duet-layout .demo-vars div{display:grid;gap:2px;min-width:64px;padding:6px 12px;border:1.5px solid var(--line,#d6e6e6);border-radius:8px;font-size:13px;color:var(--muted,#566e76)}.duet-layout .demo-vars output{font:700 18px ui-monospace,Menlo,monospace;color:var(--ink,#19323a)}.duet-layout .demo-vars .demo-out{flex:1}.duet-layout .beliefs{display:grid;gap:6px}.duet-layout .belief p{margin:0;font-size:15px}.duet-layout .belief .sample-range{margin:0 0 6px}.duet-layout .sample-range{display:flex;align-items:center;gap:12px;flex-wrap:wrap;font-size:15px}.duet-layout .sample-range input{accent-color:var(--accent,#087f83);flex:1;min-width:100px;min-height:44px}.duet-layout .sample-range output{min-width:44px;font-variant-numeric:tabular-nums;font-weight:700}.duet-layout .demo-lamps{position:relative;display:flex;flex-wrap:nowrap;justify-content:center;gap:8px;margin-top:14px}.duet-layout .demo-lamps:before{content:"";position:absolute;left:10%;right:10%;top:27px;height:3px;background:var(--ink,#19323a);opacity:.35}.duet-layout .demo-lamp{position:relative;display:grid;justify-items:center;gap:6px;min-width:0;flex:1 1 0;max-width:96px;padding:10px 4px;border-radius:12px;border:1.5px solid var(--line,#d6e6e6);background:#fff;font:inherit;font-size:14px;cursor:pointer;color:var(--ink,#19323a)}.duet-layout .demo-lamp span{width:34px;height:34px;border-radius:50%;background:#e8eeee;border:2px solid var(--c);transition:background .2s,box-shadow .2s}.duet-layout .demo-lamp.is-on span{background:var(--c);box-shadow:0 0 18px var(--c)}.duet-layout .demo-corpus{display:grid;gap:2px;padding:10px 14px;background:var(--mint,#eff9f8);border-radius:10px;font-size:16px}.duet-layout .demo-corpus p{margin:0}.duet-layout .demo-corpus mark{background:rgba(226,161,59,.4);border-radius:3px;padding:0 2px}@media (max-width:420px){.duet-layout .mix-swatch span{width:72px;height:72px}.duet-layout .mix,.duet-layout .mix-cans{gap:16px}}@media (max-width:480px){.duet-layout .demo-lamp{font-size:12px}.duet-layout .demo-lamp span{width:28px;height:28px}.duet-layout .demo-lamps:before{top:24px}}