@font-face{font-family:"Instrument Serif";src:url(/fonts/instrument-serif-regular.ttf) format("truetype");font-style:normal;font-weight:400;font-display:swap}@font-face{font-family:"Instrument Serif";src:url(/fonts/instrument-serif-italic.ttf) format("truetype");font-style:italic;font-weight:400;font-display:swap}@font-face{font-family:DM Sans;src:url(/fonts/dm-sans-regular.ttf) format("truetype");font-style:normal;font-weight:400;font-display:swap}@font-face{font-family:DM Sans;src:url(/fonts/dm-sans-medium.ttf) format("truetype");font-style:normal;font-weight:500;font-display:swap}@font-face{font-family:DM Sans;src:url(/fonts/dm-sans-semibold.ttf) format("truetype");font-style:normal;font-weight:600;font-display:swap}:root{color-scheme:light;--paper: #f7f5ef;--ink: #343a30;--muted: #646a5d;--moss: #43583c;--moss-dark: #30422b;--sage: #e9e9dd;--line: #dcded1;--coral: #c76c58;--tail: #916d37;--caught: #2a9ab0;--surface: #fbfaf6;--serif: "Instrument Serif", "Palatino Linotype", "Book Antiqua", Georgia, serif;--sans: "DM Sans", "Segoe UI", Arial, sans-serif;--ease: cubic-bezier(.4, 0, .2, 1);--ease-out: cubic-bezier(0, 0, .2, 1);--ease-in: cubic-bezier(.4, 0, 1, 1);--dur-quick: .18s;--dur-standard: .32s;--dur-slow: .4s;--stagger: 24ms;--lift: 6px;--hover-lift: -1px;--press: .97;font-family:var(--sans);font-size:16px;font-synthesis:none;font-weight:400;line-height:1.5;color:var(--ink);background:var(--paper);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}*{box-sizing:border-box}html{scroll-padding-top:20px}body{margin:0;min-width:280px;background:var(--paper) url(/paper-grain.svg) repeat}button,input,select{font:inherit}button,select{-webkit-tap-highlight-color:transparent}button{color:inherit;cursor:pointer}button,a,input,select,summary{touch-action:manipulation}button,select{transition:background-color var(--dur-quick) var(--ease),border-color var(--dur-quick) var(--ease),color var(--dur-quick) var(--ease),box-shadow var(--dur-quick) var(--ease),opacity var(--dur-quick) var(--ease),transform var(--dur-standard) var(--ease-out)}button:disabled{cursor:not-allowed;opacity:.4}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible,summary:focus-visible{outline:3px solid var(--moss);outline-offset:4px}button:disabled:hover{box-shadow:none}@media(hover:hover){:is(.play-button,.primary-button,.icon-button,.replay-button,.loop-button,.trace-button):hover:not(:disabled,:active){transform:translateY(var(--hover-lift))}}button:active:not(:disabled){transform:scale(var(--press));transition-duration:90ms}.lesson-step,.action-item{--press: .99;transition-duration:var(--dur-standard)}a{color:var(--moss-dark);text-underline-offset:4px}svg{flex-shrink:0}button svg{width:20px;height:20px}h1,h2,h3,p{margin:0}[hidden]{display:none!important}.sr-only,.scene-availability{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{position:fixed;z-index:100;top:12px;left:16px;padding:12px 20px;color:#fff;background:var(--moss-dark);border-radius:8px;transform:translateY(-150%)}.skip-link:focus{transform:translateY(0)}.app-shell{width:min(100%,1576px);margin-inline:auto;padding:0 48px}.site-header{min-height:80px;display:flex;align-items:center;justify-content:space-between;gap:24px;border-bottom:1px solid var(--line)}.brand{display:inline-flex;align-items:center;gap:11px;color:var(--ink);text-decoration:none;white-space:nowrap}.brand-mark{width:34px;height:40px;color:var(--moss)}.brand-name{font-family:var(--serif);font-size:29px;letter-spacing:-.6px;line-height:1}.header-right{display:flex;align-items:center;gap:30px}.header-note{font-family:var(--serif);font-style:italic;font-size:19px;color:var(--muted)}.text-button{min-height:44px;padding:8px 2px;border:0;border-radius:2px;background:transparent;color:var(--moss);font-size:13px;font-weight:500;text-decoration-line:underline;text-decoration-color:#adb49d;text-decoration-thickness:1px;text-underline-offset:5px}.text-button:hover{color:var(--moss-dark);text-decoration-color:currentColor}.lesson-heading{display:flex;align-items:center;justify-content:space-between;gap:30px;padding:26px 0 24px}.heading-copy{min-width:0}.eyebrow,.panel-eyebrow,.scene-kicker,.scene-note-label,.counter-label,.footer-statement{font-size:10px;font-weight:600;line-height:1.5;letter-spacing:1.7px;text-transform:uppercase}.eyebrow{color:var(--moss)}h1{margin-top:7px;font-family:var(--serif);font-size:clamp(54px,5.3vw,80px);font-weight:400;line-height:.99;letter-spacing:-1.7px}h1 br{display:none}.intro{margin-top:15px;color:var(--muted);font-size:14px;line-height:1.5}.heading-aside{flex-shrink:0;padding:13px 0 13px 20px;border-left:1px solid var(--line);font-size:12px;color:var(--muted);line-height:1.8}.lesson-nav{position:relative;--step-inset: 17px;display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:0;margin-bottom:20px;border-top:1px solid var(--line);border-bottom:1px solid var(--line)}.lesson-step{position:relative;display:grid;grid-template-columns:28px minmax(0,1fr);align-items:center;column-gap:10px;min-height:66px;padding:11px 17px;text-align:left;border:0;background:transparent;color:var(--muted)}.lesson-step+.lesson-step:before{content:"";position:absolute;left:0;top:20px;bottom:20px;width:1px;background:var(--line)}.step-number{grid-row:1 / 3;font-size:12px;font-weight:500;font-variant-numeric:tabular-nums}.step-label{font-size:13px;line-height:1.4;font-weight:500}.step-status{color:var(--muted);font-size:10px;line-height:1.5}.lesson-step[aria-current=step]{color:var(--moss-dark);background:#edeee4}.step-number,.step-label{transition:color var(--dur-standard) var(--ease)}.step-indicator{position:absolute;left:0;bottom:-1px;width:1px;height:2px;background:var(--moss);transform:scaleX(0);transform-origin:0 0;pointer-events:none;transition:transform var(--dur-slow) var(--ease)}.step-indicator[data-snap]{transition:none}.lesson-step[aria-current=step] .step-number,.lesson-step.is-complete .step-number{color:var(--moss)}.lesson-step:hover{background:#eeeee5;color:var(--moss-dark)}.lesson-step:focus-visible{outline-offset:-4px;z-index:1}.studio{display:grid;grid-template-columns:minmax(0,1fr) 340px;align-items:stretch;overflow:hidden;border:1px solid #d6dacb;border-radius:18px;background:var(--surface);box-shadow:0 9px 26px -21px #4d5c3b45}.demonstration{display:flex;flex-direction:column;min-width:0}.viewport{position:relative;isolation:isolate;flex:1;min-height:420px;overflow:hidden;background:var(--sage)}.viewport:before{content:"";position:absolute;z-index:-1;inset:0;background:url(/paper-grain.svg) repeat;pointer-events:none}.scene-host{position:absolute;inset:0;overflow:hidden}.scene-host canvas{display:block;width:100%;height:100%;touch-action:none;outline:none}.scene-host canvas:focus-visible{outline:3px solid var(--moss);outline-offset:-4px}.scene-top{position:absolute;z-index:2;top:18px;left:22px;right:18px;display:flex;align-items:center;justify-content:space-between;gap:12px;pointer-events:none}.scene-kicker{display:flex;align-items:center;gap:8px;color:#5b6451;font-size:9px;letter-spacing:1.35px}.scene-kicker:before{content:"";width:5px;height:5px;flex-shrink:0;border-radius:50%;background:var(--moss)}.scene-kicker .status-dot,.scene-kicker>.dot{display:none}.view-switch{display:flex;gap:2px;padding:3px;border:1px solid #cdd1c1;border-radius:9px;background:#f7f5efb8;pointer-events:auto}.view-switch button{min-width:48px;min-height:44px;padding:6px 10px;border:0;border-radius:6px;background:transparent;font-size:11px;font-weight:500;color:#59634e}.view-switch button[aria-pressed=true]{background:var(--paper);color:var(--moss-dark);box-shadow:0 1px 4px #36422c12}.view-switch button:hover{background:#fbfaf4}.view-switch button:focus-visible{outline-offset:1px}.scene-tools{position:absolute;z-index:2;top:82px;right:18px;display:flex;flex-direction:column;gap:6px;pointer-events:none}.icon-button{display:inline-flex;flex-shrink:0;align-items:center;justify-content:center;width:44px;height:44px;padding:0;border:1px solid var(--line);border-radius:8px;color:var(--moss);background:transparent}.icon-button:hover:not(:disabled){background:#e9ecdf;border-color:#bfc7b4}.scene-tools .icon-button{background:#f7f5efd9;border-color:#d0d5c5;pointer-events:auto;width:44px;height:44px}.scene-tools .icon-button:hover{background:#fbfaf6}.scene-note{position:absolute;z-index:2;left:22px;bottom:62px;max-width:min(290px,calc(100% - 100px));pointer-events:none}.scene-note-label{display:block;margin-bottom:4px;color:#5b6451;font-size:9px;letter-spacing:1.1px}.scene-note-text{display:block;color:var(--ink);font-family:var(--serif);font-size:26px;line-height:1.1}.scene-bottom{position:absolute;z-index:2;left:22px;right:22px;bottom:18px;display:flex;align-items:center;justify-content:space-between;gap:16px;pointer-events:none}.yarn-key{display:flex;flex-wrap:wrap;gap:14px}.yarn-key-item{display:inline-flex;align-items:center;gap:7px;font-size:10px;font-weight:500;color:#525a49;padding:2px 7px;margin-left:-7px;border-radius:999px;background:#f7f5efb8}.yarn-dot,.tail-dot{width:7px;height:7px;display:inline-block;flex-shrink:0;border-radius:50%;background:var(--coral)}.tail-dot{background:var(--tail)}.caught-dot{width:7px;height:7px;display:inline-block;flex-shrink:0;border-radius:50%;background:var(--caught)}.yarn-key-item[hidden]{display:none}.gesture-hint{display:inline-flex;align-items:center;gap:6px;font-size:10px;color:#5c6651;white-space:nowrap}.gesture-hint svg{width:14px;height:14px}.object-label{position:absolute;z-index:1;display:inline-flex;align-items:center;gap:6px;padding:5px 8px;border:1px solid #f7f5efb8;border-radius:5px;background:#f7f5efdf;color:#4b5344;font-size:10px;font-weight:500;line-height:1.3;white-space:nowrap;pointer-events:none;-webkit-user-select:none;user-select:none}.label-dot{display:inline-block;width:5px;height:5px;flex-shrink:0;border-radius:50%;background:var(--coral)}.tail-label,.object-label[data-kind=tail]{color:#775629}.tail-label .label-dot,.object-label[data-kind=tail] .label-dot{background:var(--tail)}.scene-loading{position:absolute;inset:0;display:grid;place-items:center;font-size:14px;color:var(--moss)}.scene-fallback{position:absolute;inset:64px 60px 112px 28px;margin:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:10px}.scene-fallback svg{display:block;width:100%;max-height:100%;min-height:0;flex:1}.scene-fallback figcaption{max-width:360px;font-size:11px;line-height:1.5;text-align:center;color:#56614c}.transport{flex-shrink:0;padding:14px 22px 16px;border-top:1px solid #d6dacb;background:#f9f8f2}.transport-main{display:flex;flex-wrap:wrap;align-items:center;gap:8px;min-width:0}.transport-main>.icon-button{border:0;width:40px;min-width:44px}.play-button,.primary-button{display:inline-flex;align-items:center;justify-content:center;gap:10px;min-height:46px;padding:10px 18px;border:1px solid var(--moss);border-radius:7px;background:var(--moss);color:#fffdf5;font-size:12px;font-weight:500;line-height:1.4;text-decoration:none}.play-button{min-width:158px}.play-button svg{width:16px;height:16px}.play-button:hover:not(:disabled),.primary-button:hover:not(:disabled){border-color:var(--moss-dark);background:var(--moss-dark);box-shadow:0 7px 14px -9px #30422b99}.play-button:active:not(:disabled),.primary-button:active:not(:disabled){box-shadow:inset 0 2px 5px #14200f40}.replay-button,.loop-button,.trace-button{display:inline-flex;align-items:center;justify-content:center;gap:6px;min-height:44px;padding:8px;border:1px solid transparent;border-radius:6px;font-size:11px;font-weight:500;color:var(--muted);background:transparent;white-space:nowrap}.replay-button svg,.loop-button svg,.trace-button svg{width:16px;height:16px}.replay-button:hover,.loop-button:hover,.trace-button:hover{background:#eeefe5;color:var(--moss)}.loop-button[aria-pressed=true],.trace-button[aria-pressed=true]{background:#e6ebde;border-color:#ccd5bd;color:var(--moss-dark)}.transport-spacer{flex:1;min-width:0}.speed-control{display:flex;align-items:center;gap:5px;color:var(--muted);font-size:10px;white-space:nowrap}.speed-control select{min-width:56px;height:44px;padding:5px 4px;border:0;border-radius:6px;color:var(--ink);background:transparent;font-size:12px;cursor:pointer}.speed-control select:hover{background:#eeefe5}.timeline-row{display:flex;align-items:center;gap:14px;margin-top:9px}.time-label{min-width:28px;font-size:10px;font-variant-numeric:tabular-nums;color:var(--muted);white-space:nowrap}.time-label:last-child{text-align:right}.timeline{-webkit-appearance:none;appearance:none;flex:1;width:100%;min-width:0;height:44px;margin:0;padding:0;background:transparent;cursor:pointer;accent-color:var(--moss)}.timeline::-webkit-slider-runnable-track{height:3px;border-radius:4px;background:linear-gradient(to right,var(--moss) calc(6.5px + (100% - 13px) * var(--progress, 0)),#d4d9c9 0)}.timeline::-webkit-slider-thumb{-webkit-appearance:none;appearance:none;width:13px;height:13px;margin-top:-5px;border:3px solid var(--moss);border-radius:50%;background:#f9f8f2;box-shadow:0 0 0 4px #f9f8f2;transition:transform var(--dur-quick) var(--ease-out),background-color var(--dur-quick) var(--ease)}.timeline::-moz-range-track{height:3px;border-radius:4px;background:#d4d9c9}.timeline::-moz-range-progress{height:3px;border-radius:4px;background:var(--moss)}.timeline::-moz-range-thumb{width:8px;height:8px;border:3px solid var(--moss);border-radius:50%;background:#f9f8f2;box-shadow:0 0 0 4px #f9f8f2;transition:transform var(--dur-quick) var(--ease-out),background-color var(--dur-quick) var(--ease)}.timeline:hover::-webkit-slider-thumb{background:var(--moss);transform:scale(1.12)}.timeline:active::-webkit-slider-thumb{background:var(--moss);transform:scale(1.22)}.timeline:hover::-moz-range-thumb{background:var(--moss);transform:scale(1.12)}.timeline:active::-moz-range-thumb{background:var(--moss);transform:scale(1.22)}.timeline:focus-visible{border-radius:4px;outline-offset:2px}.lesson-panel{display:flex;flex-direction:column;min-width:0;padding:26px 26px 23px;border-left:1px solid #d6dacb}.panel-eyebrow{font-size:9px;letter-spacing:1.3px;color:var(--moss)}.lesson-panel h2{margin-top:8px;font-family:var(--serif);font-size:38px;font-weight:400;line-height:1.05;letter-spacing:-.4px}.panel-description{margin-top:12px;font-size:13px;line-height:1.65;color:var(--muted)}.action-list{display:flex;flex-direction:column;gap:4px;margin:19px -10px 0}.action-item{display:flex;align-items:flex-start;gap:12px;width:100%;min-height:66px;padding:11px 10px;border:1px solid transparent;border-radius:8px;background:transparent;text-align:left}.action-number{display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;width:24px;height:24px;margin-top:1px;border:1px solid #d6dacb;border-radius:50%;color:#686f60;font-size:10px;font-weight:500;transition:background-color var(--dur-standard) var(--ease),border-color var(--dur-standard) var(--ease),color var(--dur-standard) var(--ease),transform var(--dur-standard) var(--ease)}.action-copy{display:flex;flex-direction:column;gap:4px;min-width:0}.action-copy strong{font-size:13px;line-height:1.5;font-weight:500;transition:color var(--dur-standard) var(--ease)}.action-copy>span{color:var(--muted);font-size:12px;line-height:1.5}.action-item[aria-current=step]{background:#eef0e6;border-color:#e4e7d8}.action-item[aria-current=step] .action-number{background:var(--moss);border-color:var(--moss);color:#fffdf5;transform:scale(1.06)}.action-item[aria-current=step] .action-copy strong{color:var(--moss-dark)}.action-item:hover{border-color:#d6ddc9;background:#f0f2e9}.teaching-tip{display:flex;align-items:flex-start;gap:10px;margin-top:17px;padding-top:15px;border-top:1px solid var(--line)}.tip-icon{display:flex;margin-top:2px;color:var(--moss)}.tip-icon svg{width:17px;height:17px}.teaching-tip strong{display:block;font-size:12px;font-weight:500}.teaching-tip p{margin-top:3px;color:var(--muted);font-size:12px;line-height:1.55}.panel-bottom{display:flex;flex-direction:column;gap:9px;padding-top:20px;margin-top:auto}.readiness-note{color:var(--muted);font-size:10px;line-height:1.5;text-align:center}.next-stage{width:100%;justify-content:space-between}.next-stage svg{width:17px;height:17px}.practice-counter{margin-top:18px;padding-top:18px;border-top:1px solid var(--line)}.counter-label{color:var(--moss);font-size:9px;letter-spacing:1.2px}.counter-display{display:block;margin-top:2px;font-family:var(--serif);font-size:52px;line-height:1.2;font-variant-numeric:tabular-nums}.counter-display small,.counter-display .counter-total{font-family:var(--sans);font-size:12px;font-weight:400;color:var(--muted)}.stitch-dots{display:flex;gap:7px;margin:6px 0 15px}.stitch-dots span{width:12px;height:12px;border:1px solid #b8c2aa;border-radius:50%;background:transparent;transition:background-color var(--dur-standard) var(--ease),border-color var(--dur-standard) var(--ease)}.stitch-dots .is-filled{background:var(--moss);border-color:var(--moss)}.counter-actions{display:flex;align-items:center;gap:7px;flex-wrap:wrap}.counter-actions .primary-button{flex:1;padding-inline:12px}.counter-actions .icon-button{width:46px;height:46px}.counter-reset{margin-left:2px;font-size:11px}.counter-note{margin-top:8px;font-size:10px;line-height:1.6;color:var(--muted)}.completion-note{margin-top:12px;padding:11px 12px;background:#e9eddf;border-radius:6px;font-size:12px;line-height:1.6;color:var(--moss-dark)}.studio-footer{display:flex;align-items:center;justify-content:space-between;gap:20px;min-height:61px}.reassurance{display:inline-flex;align-items:center;gap:8px;color:var(--muted);font-size:11px}.reassurance svg{width:15px;height:15px;color:var(--moss)}.footer-links{display:flex;align-items:center;gap:24px}.footer-links .text-button{font-size:11px}.page-footer{display:flex;justify-content:space-between;align-items:center;gap:20px;padding:18px 0 24px;border-top:1px solid var(--line);color:var(--muted)}.footer-statement{font-size:9px;letter-spacing:1.4px}.footer-lesson{display:flex;align-items:center;gap:16px;font-size:10px}.footer-lesson span:last-child{font-size:9px;letter-spacing:1px}.help-dialog{width:min(620px,calc(100% - 40px));max-height:calc(100dvh - 48px);margin:auto;padding:30px;border:1px solid #dadfce;border-radius:15px;background:var(--paper) url(/paper-grain.svg) repeat;color:var(--ink);box-shadow:0 24px 90px #24311d38;overscroll-behavior:contain;opacity:0;transform:translateY(var(--lift));transition:opacity var(--dur-quick) var(--ease-in),transform var(--dur-quick) var(--ease-in),overlay var(--dur-quick) allow-discrete,display var(--dur-quick) allow-discrete}.help-dialog[open]{opacity:1;transform:none;transition-duration:var(--dur-slow);transition-timing-function:var(--ease-out)}.help-dialog::backdrop{background-color:#25302000;-webkit-backdrop-filter:blur(0);backdrop-filter:blur(0);transition:background-color var(--dur-quick, .18s) var(--ease-in, ease-in),backdrop-filter var(--dur-quick, .18s) var(--ease-in, ease-in),overlay var(--dur-quick, .18s) allow-discrete,display var(--dur-quick, .18s) allow-discrete}.help-dialog[open]::backdrop{background-color:#25302069;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);transition-duration:var(--dur-slow, .4s);transition-timing-function:var(--ease-out, ease-out)}@starting-style{.help-dialog[open]{opacity:0;transform:translateY(var(--lift))}.help-dialog[open]::backdrop{background-color:#25302000;-webkit-backdrop-filter:blur(0);backdrop-filter:blur(0)}}.dialog-heading{position:relative;padding-right:50px}.dialog-heading h2{margin-top:8px;font-family:var(--serif);font-size:43px;font-weight:400;line-height:1.1;letter-spacing:-.5px}.dialog-close{position:absolute;top:-8px;right:-7px;border:0}.dialog-body{margin-top:20px;font-size:14px;line-height:1.7}.dialog-body p+p{margin-top:12px}.dialog-intro{color:var(--muted)}.dialog-body h3{margin:21px 0 8px;font-size:14px;font-weight:600}.dialog-body ul,.dialog-body ol{padding-left:23px}.dialog-body li+li{margin-top:8px}.supply-list{display:grid;gap:0;margin:20px 0;padding:0!important;list-style:none;border-block:1px solid var(--line)}.supply-list li{padding:13px 0;margin:0!important}.supply-list li+li{border-top:1px solid var(--line)}.supply-list strong{display:block;color:var(--moss-dark);font-size:13px;font-weight:500}.supply-list span,.supply-list p{color:var(--muted);font-size:12px}.handedness-control{display:flex;gap:6px;margin:17px 0 8px;flex-wrap:wrap}.handedness-control button{min-height:44px;flex:1;padding:10px 14px;border:1px solid #cdd3c2;border-radius:7px;background:transparent;color:var(--moss);font-size:12px;font-weight:500}.handedness-control button[aria-pressed=true]{background:var(--moss);border-color:var(--moss);color:#fff}.handedness-control button:hover:not([aria-pressed=true]){background:#e9eddf}.handedness-note{font-size:11px;color:var(--muted)}.hand-diagram-wrap{margin:18px 0;padding:15px;border-radius:10px;background:var(--sage)}.hand-diagram{display:block;width:100%;height:auto;max-height:280px}.hand-diagram text{font-family:var(--sans)}.diagram-caption{margin-top:9px;font-size:11px;line-height:1.6;color:#535e49}.help-sections{margin:20px 0;border-top:1px solid var(--line)}.help-sections details{border-bottom:1px solid var(--line)}.help-sections summary{min-height:50px;padding:13px 8px 13px 0;color:var(--moss-dark);font-size:13px;font-weight:500;cursor:pointer}.help-sections details>p,.help-sections details>div{padding:0 0 16px;color:var(--muted);font-size:13px}.help-sections summary::marker{color:var(--moss)}.help-sections summary:hover{color:var(--moss)}.reference-links{display:flex;flex-wrap:wrap;gap:7px 16px;margin-top:8px;font-size:11px}.reference-note,.keyboard-hint{margin-top:18px;font-size:11px;color:var(--muted)}.keyboard-hint kbd{padding:2px 5px;border:1px solid var(--line);border-radius:3px;font-family:var(--sans);background:#fbfaf5;font-size:10px}.help-dialog>.primary-button{margin-top:22px}.dialog-actions{display:flex;justify-content:flex-end;align-items:center;gap:10px;margin-top:24px;flex-wrap:wrap}@keyframes fade-rise{0%{opacity:0;transform:translate3d(0,var(--lift),0)}}@keyframes icon-pop{0%{opacity:0;transform:scale(.6)}}@keyframes digit-roll{0%{opacity:0;transform:translate3d(0,var(--roll, .4em),0)}}@keyframes dot-settle{0%{transform:scale(.7)}55%{transform:scale(1.04)}to{transform:scale(1)}}[data-enter]{animation:fade-rise var(--dur-standard) var(--ease-out) backwards}#scene-note[data-enter]{animation-delay:40ms}.play-label[data-enter]{--lift: 0px}#play-icon[data-enter]{animation:icon-pop var(--dur-quick) var(--ease-out) backwards}#count{display:inline-block}#count[data-enter]{animation-name:digit-roll}#count[data-enter=down]{--roll: -.4em}.stitch-dots span[data-enter]{animation:dot-settle var(--dur-slow) var(--ease)}.completion-note[data-enter]{animation-duration:var(--dur-slow)}.lesson-panel[data-swap] :is(.panel-eyebrow,#stage-title,.panel-description,.action-item,.teaching-tip,.practice-counter,.panel-bottom){animation:fade-rise var(--dur-standard) var(--ease-out) calc(var(--i, 0) * var(--stagger)) backwards}.lesson-panel .panel-description{--i: 1}.lesson-panel .action-item:nth-child(1){--i: 2}.lesson-panel .action-item:nth-child(2){--i: 3}.lesson-panel .action-item:nth-child(3){--i: 4}.lesson-panel :is(.teaching-tip,.practice-counter,.panel-bottom){--i: 5}@media(min-width:1500px){.viewport{min-height:470px}.studio{grid-template-columns:minmax(0,1fr) 360px}.lesson-panel{padding:30px}.lesson-panel h2{font-size:41px}.panel-description,.action-copy strong{font-size:13px}.action-copy>span{font-size:12px}}@media(max-width:1180px){.app-shell{padding-inline:24px}.site-header{min-height:60px}.lesson-heading{padding-block:16px;gap:20px}h1{font-size:58px;letter-spacing:-1.3px}.heading-aside{font-size:11px;padding-left:16px}.intro{margin-top:8px;font-size:13px}.lesson-nav{margin-bottom:16px}.lesson-step{min-height:60px;column-gap:6px;padding-inline:12px;grid-template-columns:22px minmax(0,1fr)}.lesson-nav{--step-inset: 12px}.studio{grid-template-columns:minmax(0,1fr) 320px}.lesson-panel{padding:23px}.viewport{min-height:400px}.transport{padding-inline:16px}.transport-main{gap:4px;flex-wrap:wrap}.transport-spacer{flex-basis:0}.play-button{min-width:145px;padding-inline:14px}.replay-button{padding-inline:5px}.speed-control>span{display:none}.gesture-hint{font-size:9px}.scene-bottom{gap:10px}}@media(min-width:901px)and (max-width:1080px){h1{font-size:55px}.heading-aside{display:none}.scene-note-text{font-size:24px}.gesture-hint{display:none}}@media(min-width:901px)and (max-width:1300px){.transport-spacer{flex-basis:100%;height:0}.transport-main{row-gap:0}.speed-control{margin-left:auto}.speed-control>span{display:inline}.timeline-row{margin-top:3px}}@media(max-width:900px){.header-right{gap:20px}.header-note{font-size:17px}.lesson-heading{align-items:flex-end;padding-block:26px}h1{font-size:69px}h1 br{display:block}.heading-aside{padding-bottom:3px}.lesson-nav{margin-bottom:18px}.lesson-step{grid-template-columns:1fr;gap:3px;min-height:77px;padding:10px 12px}.step-number{grid-row:auto;font-size:10px}.step-label{font-size:12px}.step-status{font-size:9px}.studio{grid-template-columns:minmax(0,1fr)}.viewport{min-height:450px}.transport-main{flex-wrap:wrap;gap:4px 8px}.transport-spacer{flex-basis:100%;height:0}.speed-control>span{display:inline}.speed-control{margin-left:auto}.transport{padding:15px 22px 17px}.lesson-panel{display:grid;grid-template-columns:minmax(0,1.1fr) minmax(0,1fr);column-gap:34px;padding:26px;border-left:0;border-top:1px solid #d6dacb;align-items:start}.panel-eyebrow,.lesson-panel h2,.panel-description{grid-column:1}.lesson-panel h2{margin-top:8px}.panel-description{margin-bottom:12px}.action-list{grid-column:2;grid-row:1 / 5;margin-top:-8px}.teaching-tip{grid-column:1;margin-top:6px}.panel-bottom{grid-column:2;padding-top:14px;width:100%}.practice-counter{grid-column:1;grid-row:5 / 7;margin-top:18px}.lesson-panel:has(.practice-counter:not([hidden])) .panel-bottom{grid-row:5;align-self:end}.reassurance{font-size:10px}.footer-links{gap:18px}}@media(max-width:600px){.app-shell{padding-inline:16px}.site-header{min-height:62px;gap:12px}.brand{gap:7px}.brand-mark{width:27px;height:34px}.brand-name{font-size:25px}.header-note{display:none}.header-right{gap:0}.header-right .text-button{font-size:11px;white-space:nowrap}.lesson-heading{padding:20px 0 18px}h1{margin-top:10px;font-size:clamp(51px,13.4vw,71px);line-height:.97;letter-spacing:-1.3px}.eyebrow{font-size:9px;letter-spacing:1.45px}.intro{max-width:310px;margin-top:13px;font-size:12px;line-height:1.6}.heading-aside{display:none}.lesson-nav{display:flex;gap:0;overflow-x:auto;overscroll-behavior-x:contain;scrollbar-width:thin;scrollbar-color:#b8c1ac transparent;margin-bottom:14px}.lesson-step{flex:0 0 132px;min-height:65px;padding:10px 12px}.step-status{display:none}.step-number{font-size:10px}.step-label{font-size:12px}.lesson-step+.lesson-step:before{top:17px;bottom:17px}.studio{border-radius:13px}.viewport{flex:none;height:370px;min-height:370px}.scene-top{top:13px;left:15px;right:12px;gap:6px}.scene-kicker{font-size:8px;letter-spacing:.9px;gap:5px}.view-switch{padding:2px;gap:0;border-radius:7px}.view-switch button{min-width:44px;min-height:44px;padding:5px 8px;font-size:11px}.scene-tools{top:75px;right:12px;gap:5px}.scene-tools .icon-button{width:44px;height:44px;border-radius:7px}.scene-tools .icon-button svg{width:18px;height:18px}.scene-note{left:16px;bottom:53px;max-width:calc(100% - 76px)}.scene-note-label{font-size:8px;letter-spacing:.9px}.scene-note-text{font-size:24px}.scene-bottom{left:16px;right:16px;bottom:16px}.yarn-key{gap:14px}.yarn-key-item{font-size:9px;gap:5px}.gesture-hint{display:none}.object-label{padding:4px 6px;font-size:10px;gap:4px}.scene-fallback{inset:64px 53px 105px 18px}.scene-fallback figcaption{font-size:10px}.transport{padding:12px 12px 10px}.transport-main{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:3px 4px}.transport-main>.icon-button{width:100%;grid-row:1}.transport-main>.icon-button:first-child{grid-column:1}.play-button+.icon-button{grid-column:6}.play-button{grid-column:2 / 6;grid-row:1;min-width:0;padding-inline:10px;font-size:12px;min-height:44px;gap:7px}.replay-button{grid-column:1 / 4;grid-row:2;justify-content:flex-start;margin:0;font-size:11px;padding-inline:6px}.transport-spacer{display:none}.speed-control{grid-column:4 / 7;grid-row:2;justify-self:end;margin:0;font-size:11px}.speed-control>span{display:inline}.speed-control select{font-size:11px;min-width:55px}.trace-button,.loop-button{grid-row:3;margin:0;font-size:11px;padding-inline:6px}.trace-button{grid-column:1 / 4}.loop-button{grid-column:4 / 7}.timeline-row{margin-top:1px;gap:10px}.timeline{height:44px}.time-label{font-size:9px}.lesson-panel{display:flex;padding:24px 22px}.panel-eyebrow{font-size:9px}.lesson-panel h2{font-size:39px}.panel-description{font-size:13px;margin-bottom:0}.action-list{margin-top:17px;margin-inline:-9px}.action-item{padding:12px 9px;min-height:73px}.action-number{width:26px;height:26px;font-size:11px}.action-copy strong{font-size:13px}.action-copy>span{font-size:12px}.teaching-tip{margin-top:16px;padding-top:16px}.teaching-tip strong,.teaching-tip p{font-size:12px}.panel-bottom{padding-top:23px;gap:10px}.readiness-note{font-size:11px}.next-stage{min-height:48px;font-size:13px}.practice-counter{width:100%;margin-top:20px}.counter-label{font-size:10px}.counter-note{font-size:11px}.counter-actions .primary-button{font-size:12px}.stitch-dots{gap:8px}.stitch-dots span{width:14px;height:14px}.studio-footer{flex-direction:column;align-items:flex-start;gap:3px;padding:17px 2px 11px}.reassurance{font-size:11px}.footer-links{gap:18px;flex-wrap:wrap}.footer-links .text-button{font-size:10px}.page-footer{align-items:flex-start;padding-top:17px;padding-bottom:25px}.footer-statement{max-width:190px;font-size:8px;line-height:1.8;letter-spacing:1px}.footer-lesson{flex-direction:column;align-items:flex-end;gap:4px;font-size:9px;white-space:nowrap}.footer-lesson span:last-child{font-size:8px}.help-dialog{width:calc(100% - 24px);padding:25px 21px;max-height:calc(100dvh - 24px);border-radius:12px}.dialog-heading h2{font-size:37px}.dialog-close{right:-9px}.dialog-body{font-size:13px;margin-top:17px}.hand-diagram-wrap{margin-inline:-8px;padding:12px 8px}.dialog-actions .primary-button{flex:1}.help-dialog>.primary-button{width:100%}}@media(max-width:359px){.app-shell{padding-inline:12px}.brand-name{font-size:23px}.brand-mark{width:24px}.header-right .text-button{font-size:10px}h1{font-size:48px}.intro{font-size:12px;max-width:270px}.viewport{height:350px;min-height:350px}.scene-kicker{max-width:104px;flex-wrap:wrap;line-height:1.6}.view-switch button{min-width:44px;padding-inline:6px}.transport{padding-inline:10px}.transport-main{gap:3px 2px}.play-button{min-width:0;gap:5px;padding-inline:6px;font-size:11px}.lesson-panel{padding-inline:18px}.studio-footer{padding-inline:0}.footer-links{gap:10px}.footer-links .text-button{font-size:9px}}@media(min-width:901px)and (max-height:900px){.site-header{min-height:48px}.lesson-heading{padding-block:6px}h1{margin-top:5px;font-size:clamp(48px,4.5vw,54px)}.intro{display:none}.lesson-nav{margin-bottom:10px}.lesson-step{min-height:52px;padding-block:6px}.studio{height:clamp(572px,calc(100vh - 214px),590px);height:clamp(572px,calc(100svh - 214px),590px);grid-template-rows:minmax(0,1fr)}.demonstration{min-height:0}.viewport{min-height:400px}.lesson-panel{min-height:0;padding-block:18px 0;overflow-y:auto;overscroll-behavior-y:contain;scrollbar-gutter:stable;scrollbar-width:thin;scrollbar-color:#94a383 #efefe6}.lesson-panel>*{flex-shrink:0}.action-list{margin-top:14px}.action-item{min-height:60px}.teaching-tip{margin-top:12px;padding-top:12px}.panel-bottom{position:sticky;top:auto;bottom:0;z-index:2;margin-top:auto;padding:12px 0 18px;background:var(--surface);border-top:1px solid var(--line)}}@media(min-width:901px)and (max-height:800px){.lesson-heading{padding-block:4px}h1{font-size:46px}.heading-aside{display:none}.lesson-step{min-height:48px}}@media(max-width:900px)and (max-height:520px){.site-header{min-height:48px}.lesson-heading{padding-block:12px 10px}h1{margin-top:6px;font-size:clamp(32px,4.8vw,40px);line-height:.96;letter-spacing:-.8px}.intro,.heading-aside{display:none}.lesson-nav{margin-bottom:10px}.lesson-step{min-height:52px;padding-block:6px}.lesson-step .step-status{display:none}}@media(prefers-reduced-motion:reduce){:root{--lift: 0px;--hover-lift: 0px;--press: 1}*,*:before,*:after,::backdrop{scroll-behavior:auto!important;transition:none!important;animation:none!important}}@media(forced-colors:active){.lesson-step[aria-current=step],.action-item[aria-current=step],.view-switch button[aria-pressed=true],.loop-button[aria-pressed=true],.handedness-control button[aria-pressed=true]{outline:2px solid Highlight;outline-offset:-3px}.step-indicator{background:Highlight;forced-color-adjust:none}.trace-button[aria-pressed=true]{outline:2px solid Highlight;outline-offset:-3px}.stitch-dots .is-filled{background:Highlight;forced-color-adjust:none}.timeline::-webkit-slider-thumb{border-color:Highlight}.viewport:before{display:none}}.text-button{display:inline-flex;align-items:center;justify-content:center;gap:5px}.text-button svg{width:13px;height:13px}.scene-kicker>span[aria-hidden=true]{display:none}.counter-display>span:last-child{font-family:var(--sans);font-size:12px;color:var(--muted)}.viewport{background:radial-gradient(70% 80% at 36% 38%,#f4f4ea,#ebecde 46%,#dfe2d1)}.viewport:after{content:"";position:absolute;inset:0;z-index:0;pointer-events:none;box-shadow:inset 0 0 0 1px #fff6,inset 0 -70px 90px -60px #43583c30,inset 0 0 70px #43583c12}.scene-top,.scene-tools,.scene-note,.scene-bottom,.object-label{z-index:2}.timeline::-webkit-slider-runnable-track{height:4px;background:linear-gradient(to right,transparent calc(33.333% - 2px),#f9f8f2 calc(33.333% - 2px),#f9f8f2 calc(33.333% + 2px),transparent calc(33.333% + 2px),transparent calc(66.666% - 2px),#f9f8f2 calc(66.666% - 2px),#f9f8f2 calc(66.666% + 2px),transparent calc(66.666% + 2px)),linear-gradient(to right,var(--moss) calc(6.5px + (100% - 13px) * var(--progress, 0)),#d4d9c9 0)}.timeline::-webkit-slider-thumb{margin-top:-4.5px;box-shadow:0 0 0 4px #f9f8f2,0 2px 8px #43583c40}.lesson-step.is-complete .step-label{color:var(--moss-dark)}.lesson-step.is-complete .step-number:after{content:"✓";margin-left:5px;font-size:10px;color:var(--moss)}.play-button{box-shadow:0 8px 18px -10px #30422b99}@media(hover:hover){.play-button:hover:not(:disabled,:active){box-shadow:0 12px 22px -10px #30422bb3}}@media(prefers-reduced-motion:no-preference){@keyframes arrive{0%{opacity:0;transform:translate3d(0,14px,0)}}@keyframes scene-settle{0%{opacity:0;transform:scale(.965)}}.site-header,.lesson-heading,.lesson-nav,.studio,.studio-footer{animation:arrive .7s var(--ease-out) both}.lesson-heading{animation-delay:90ms}.lesson-nav{animation-delay:.18s}.studio{animation-delay:.27s;animation-duration:.85s}.studio-footer{animation-delay:.38s}.scene-host[data-swap] canvas{animation:scene-settle .65s var(--ease-out) both}}
