:root{font-family:Arial,Helvetica,sans-serif;color:#241f2a;background:#fffdfa;--green:#0f6a73;--dark:#083f48;--muted:#665f69;--line:#e4ded5;--cream:#fff7f2;--rose:#c55264}*{box-sizing:border-box}body{margin:0}button,input,select{font:inherit}button,select,summary{cursor:pointer}button{color:inherit}button:focus-visible,input:focus-visible,select:focus-visible,summary:focus-visible,a:focus-visible,#scene:focus-visible{outline:3px solid #b47a2c;outline-offset:4px}a{color:inherit}header{height:90px;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid var(--line);padding:0 clamp(20px,4vw,65px);background:#fffdfa}.brand{display:flex;align-items:center;gap:12px;text-decoration:none}.brand img{width:54px;height:54px;border-radius:9px;object-fit:cover}.brand strong{display:block;font:600 19px Georgia,serif}.brand small{display:block;font-size:11px;color:var(--muted);margin-top:5px}.demo-label{font-size:11px;letter-spacing:2px;color:var(--green);border:1px solid #c9d9d5;border-radius:30px;padding:11px 17px}.demo-label span{margin:0 8px}.site-link{font-size:12px;text-decoration:none;color:var(--muted)}main{max-width:1580px;margin:auto;padding:38px clamp(20px,4vw,65px) 18px}.intro{display:flex;justify-content:space-between;align-items:center;margin-bottom:28px}.eyebrow{font-size:10px;letter-spacing:1.8px;font-weight:600;color:var(--green);margin:0 0 9px}h1{font:400 clamp(30px,3vw,45px)/1.1 Georgia,serif;letter-spacing:-.8px;margin:0 0 12px}h2{font:400 24px Georgia,serif;margin:0}.intro p:not(.eyebrow){font-size:13px;color:var(--muted);margin:0}.intro-note{font-size:12px;line-height:1.8;text-align:right;color:var(--dark)}.intro-note small{color:var(--muted);font-size:10px}.live-dot{display:inline-block;width:6px;height:6px;border-radius:50%;background:#547766;margin-right:6px}.workspace{display:grid;grid-template-columns:minmax(0,1fr) 300px;gap:20px;align-items:stretch}.viewport{position:relative;min-width:0;border:1px solid var(--line);border-radius:12px;background:#efeee9;overflow:hidden;display:flex;flex-direction:column}.scene-top{position:absolute;top:23px;left:25px;right:22px;display:flex;justify-content:space-between;z-index:1;pointer-events:none}.scene-top button{pointer-events:auto}.scene-top h2{font-size:26px;color:#083f48}.scene-top .eyebrow{color:#6c7168;font-size:9px;margin-bottom:5px}.scene-sub{font-size:10px;color:#626d66;display:block;margin-top:6px}#scene{height:480px;min-height:300px;touch-action:none;overflow:hidden}#scene canvas{width:100%;height:100%;display:block}.icon-btn{border:1px solid #d2d4ca;background:#fffdfad9;border-radius:50%;width:33px;height:33px;font-size:19px}.view-tools{display:flex;justify-content:space-between;align-items:center;margin:-54px 20px 16px;z-index:1;position:relative;pointer-events:none}.view-switch,.zoom-tools{display:flex;gap:3px;background:#ffffffe8;border:1px solid #e2e2d8;padding:4px;border-radius:8px;pointer-events:auto}.view-switch button{border:0;background:none;border-radius:5px;padding:9px 12px;font-size:10px;color:#536257}.view-switch .selected{background:#e0eae4;color:var(--dark)}.zoom-tools{align-items:center;gap:4px}.zoom-tools button{width:29px;height:29px;border:0;background:none;font-size:19px}.zoom-tools span{font-size:10px;color:#536257;min-width:35px;text-align:center}.animation{display:flex;align-items:center;gap:12px;border-top:1px solid #d4d8cd;background:#fffdfac9;padding:14px 20px;z-index:1}.play{display:flex;align-items:center;justify-content:center;gap:9px;white-space:nowrap;border:0;border-radius:6px;background:var(--dark);color:#fff;padding:12px 16px;font-size:11px}.animation .icon-btn{width:29px;height:29px;font-size:17px;background:none}.progress{flex:1;min-width:0}.progress span{font-size:10px;color:#536257}.progress-track{height:3px;background:#dcded6;border-radius:3px;margin-top:8px;overflow:hidden}.progress-track i{display:block;background:#547766;width:100%;height:100%}.speed{font-size:9px;color:#536257;display:flex;align-items:center;gap:6px}.speed select{padding:6px 5px;border:1px solid #d7dbd1;border-radius:4px;background:#fffdfa;font-size:10px}.scene-caption{display:flex;justify-content:space-between;background:#fffdfa;color:#75786d;font-size:9px;padding:10px 20px;border-top:1px solid #e4e5dc}.settings{background:#fffdfa;border:1px solid var(--line);border-radius:12px;padding:22px}.settings-title{display:flex;align-items:center;gap:11px;margin-bottom:25px}.settings-title h2{font-size:22px}.settings-title .eyebrow{font-size:9px;margin-bottom:5px}.step-number{font:italic 16px Georgia,serif;border:1px solid #d7e0d9;border-radius:50%;display:grid;place-items:center;width:32px;height:32px;flex-shrink:0;color:var(--green)}fieldset{padding:0;border:0;margin:0 0 22px}legend{font-size:11px;font-weight:600;margin-bottom:11px}.swatches,.thread-swatches{display:flex;align-items:center;gap:9px}.swatch{width:30px;height:30px;border:3px solid #fffdfa;border-radius:50%;background:var(--swatch);outline:1px solid #ddd6c9}.swatch.active,.thread.active{outline:2px solid var(--dark);outline-offset:3px}.swatches span,.thread-swatches span{font-size:10px;margin-left:4px;color:#686e62}.thread{width:20px;height:20px;border:2px solid #fffdfa;border-radius:50%;outline:1px solid #ddd6c9}.control{margin-bottom:20px}.control label{display:flex;justify-content:space-between;font-size:11px;font-weight:600;margin-bottom:10px}.control output{font-weight:400;color:var(--green)}input[type=range]{width:100%;accent-color:var(--green);height:16px;cursor:pointer}.range-labels{display:flex;justify-content:space-between;color:#7a7c74;font-size:9px;margin-top:4px}.two-controls{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-bottom:16px}.two-controls label{font-size:10px;color:#565e55;display:flex;flex-direction:column;gap:7px}select{border:1px solid var(--line);border-radius:5px;padding:8px;background:#fffdfa;color:#3f5147;font-size:10px}.dimensions{margin:13px 0}.dimensions input{width:100%;border:1px solid var(--line);border-radius:4px;padding:8px;font-size:12px}details{border-top:1px solid var(--line);padding-top:12px;color:#62695e}summary{font-size:10px}details p{font-size:10px;line-height:1.6}.crop-label{font-size:10px;display:flex;align-items:center;gap:6px}input[type=checkbox]{accent-color:var(--green)}.repeat-summary{margin:17px 0;padding:12px;background:#eff3ed;border-radius:6px}.repeat-summary span,.repeat-summary small{display:block;font-size:10px;color:var(--dark)}.repeat-summary small{font-size:9px;color:#687564;margin-top:5px}.save-btn{display:flex;justify-content:space-between;width:100%;padding:11px 13px;border:1px solid #bacbc2;border-radius:6px;background:#fffdfa;color:var(--dark);font-size:11px}.save-note{font-size:9px;color:#8a8c81;text-align:center;margin:9px 0 0}.catalog{padding:28px 0 4px}.catalog-heading{display:flex;align-items:center;justify-content:space-between;gap:16px}.catalog-title{display:flex;align-items:center;gap:12px}.catalog-title h2{font-size:25px}.catalog-title .eyebrow{font-size:9px;margin-bottom:5px}.catalog-filter{display:flex;gap:9px}.search-label{display:flex;align-items:center;border:1px solid var(--line);border-radius:6px;padding:5px 10px;gap:8px}.search-label span{font-size:22px;color:#6d776a}.search-label input{width:175px;border:0;background:none;padding:4px;outline-offset:2px;font-size:11px}.catalog-note{font-size:10px;color:#7b7a70;margin:16px 0}.patterns{display:grid;grid-template-columns:repeat(8,minmax(0,1fr));gap:10px}.pattern{position:relative;display:flex;flex-direction:column;align-items:stretch;text-align:left;padding:0;border:1px solid var(--line);background:#fffdfa;border-radius:8px;overflow:hidden}.pattern:hover{border-color:#8da69a}.pattern.active{border:2px solid var(--green);box-shadow:0 3px 10px #083f480a}.pattern .thumb{height:88px;background:#f1efe5;display:grid;place-items:center;padding:9px}.pattern svg{width:100%;height:100%;overflow:visible}.pattern-info{padding:11px 9px}.pattern strong{font-size:11px;display:block;font-weight:500}.pattern small{display:block;font-size:9px;color:#8b897c;margin-top:5px}.pattern .check{position:absolute;top:7px;right:7px;border-radius:50%;background:var(--green);color:#fff;font-size:9px;width:16px;height:16px;display:grid;place-items:center}.pattern:not(.active) .check{display:none}.catalog-footer{display:flex;justify-content:space-between;font-size:9px;color:#8a8c7e;margin-top:14px}.disclaimer{font-size:10px;color:#7f8178;line-height:1.6;max-width:1010px;margin:26px auto 10px;text-align:center}footer{display:flex;justify-content:space-between;padding:20px clamp(20px,4vw,65px);border-top:1px solid var(--line);font-size:9px;color:#8a8b80}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.skip{position:absolute;left:10px;top:-80px;z-index:100;background:#fff;padding:12px}.skip:focus{top:10px}.render-notice{position:absolute;left:20px;right:20px;top:120px;border:1px solid #d9d0bc;background:#fff9e9eb;color:#695c41;padding:12px;border-radius:5px;font-size:11px;z-index:2}.noscript{position:fixed;bottom:0;padding:20px;background:#fff3d2;width:100%;z-index:5}#catalog-empty{padding:25px;color:var(--muted);font-size:13px}button:disabled{opacity:.55;cursor:default}@media(min-width:1600px){#scene{height:530px}}@media(max-width:1100px){.workspace{grid-template-columns:minmax(0,1fr) 265px}.settings{padding:18px}.patterns{grid-template-columns:repeat(4,1fr)}.pattern .thumb{height:80px}#scene{height:510px}.intro-note{display:none}.animation{gap:8px;padding:13px}.play{padding:11px 12px}.scene-caption{font-size:8px}.brand strong{font-size:16px}}@media(max-width:760px){header{height:74px;padding:0 18px}.brand img{width:42px;height:42px}.brand strong{font-size:15px}.brand small{font-size:9px}.site-link{display:none}.demo-label{font-size:8px;letter-spacing:1px;padding:7px 9px}.demo-label span{margin:0 3px}main{padding:25px 16px 10px}.intro{margin-bottom:22px}h1{font-size:33px;max-width:310px}.intro p:not(.eyebrow){font-size:11px;max-width:310px;line-height:1.7}.intro .eyebrow{font-size:8px}.workspace{grid-template-columns:1fr;gap:16px}#scene{height:430px}.scene-top{left:18px;top:18px}.scene-top h2{font-size:23px}.scene-sub{font-size:8px}.view-tools{margin:-50px 12px 14px}.view-switch button{padding:8px 9px;font-size:9px}.zoom-tools{gap:1px;padding:3px}.zoom-tools button{width:23px}.animation{padding:13px 12px;gap:7px}.play{padding:11px;font-size:10px}.speed{gap:3px}.progress span{font-size:9px}.scene-caption{padding:9px 12px}.scene-caption span:first-child{max-width:190px}.settings{display:grid;grid-template-columns:1fr 1fr;column-gap:20px;padding:20px}.settings-title{grid-column:1/-1;margin-bottom:20px}.settings fieldset{margin-bottom:20px}.control{margin-bottom:17px}.settings .two-controls,.settings details,.repeat-summary,.save-btn,.save-note{grid-column:1/-1}.settings .two-controls{margin-bottom:14px}.catalog{padding-top:28px}.catalog-heading{flex-wrap:wrap}.catalog-title h2{font-size:25px}.catalog-filter{width:100%}.search-label{flex:1;min-width:0}.search-label input{width:100%;min-width:0}.patterns{grid-template-columns:repeat(2,1fr);gap:10px}.pattern .thumb{height:94px}.pattern-info{padding:11px 12px}.pattern strong{font-size:12px}.pattern small{font-size:10px}.catalog-footer{gap:10px;line-height:1.5}.catalog-footer span:last-child{max-width:160px;text-align:right}.disclaimer{font-size:9px;margin:22px 0 12px}footer{font-size:8px;gap:20px;line-height:1.6;padding:15px 18px}footer span:last-child{text-align:right}}@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important;transition:none!important}}@media(max-width:380px){.brand small{display:none}.brand strong{max-width:150px;font-size:14px}.demo-label{font-size:7px}#scene{height:380px}.view-switch button{padding:8px 6px}.speed{font-size:8px}.animation .icon-btn{display:none}}.catalog-note,.catalog-footer,.save-note,.pattern small,.disclaimer,footer,.range-labels,.scene-caption{color:#656b60}.zoom-tools button{min-width:25px;min-height:29px}.pattern svg{overflow:hidden}.catalog-filter input::placeholder{color:#666e62}.settings legend,.control label{font-size:12px}.settings .two-controls label{font-size:11px}.viewport{align-self:start}.catalog-note{line-height:1.6}
