.showcase-dialog[open]{grid-template-rows:auto minmax(0,1fr) auto auto}.showcase-dialog.wide{width:min(860px, calc(100vw - 2 * var(--s4)))}.showcase-dialog.wide[open]{grid-template-rows:auto minmax(0,1fr) auto}.showcase-body{gap:var(--s3);padding:var(--s4) var(--s5);align-content:start;display:grid;overflow:auto}.showcase-body>p{margin:0}.showcase-field{gap:var(--s1);font-size:var(--t14);display:grid}.showcase-field.inline{align-items:center;gap:var(--s2);display:flex}.showcase-field input[type=text],.showcase-field input[type=number]{padding:var(--s2) var(--s3);border:1px solid var(--line);border-radius:var(--r1);background:var(--panel);color:var(--text);font:inherit}.showcase-field input[type=number]{width:72px}.showcase-row{align-items:center;gap:var(--s3);flex-wrap:wrap;display:flex}.showcase-ai{gap:var(--s2);display:grid}.showcase-cost{gap:var(--s2);padding:var(--s3);border-radius:var(--r1);background:var(--accent-soft);animation:enter var(--enter);display:grid}.showcase-cost p{margin:0}.showcase-confirm{align-items:flex-start;gap:var(--s2);font-size:var(--t14);display:flex}.showcase-grid{gap:var(--s3);grid-template-columns:repeat(auto-fill,minmax(168px,1fr));margin:0;padding:0;list-style:none;display:grid}.showcase-card{gap:var(--s1);padding:var(--s2);border:1px solid var(--line);border-radius:var(--r2);background:var(--panel);animation:enter var(--enter);align-content:start;display:grid}.showcase-card[data-state=failed]{opacity:.8}.showcase-thumb{aspect-ratio:3/4;border-radius:var(--r1);background:var(--line);place-items:center;display:grid;overflow:hidden}.showcase-thumb img{object-fit:contain;background:#fff;width:100%;height:100%}.showcase-line{font-size:var(--t14)}.showcase-card .note{font-size:var(--t12)}@media (width<=760px){.showcase-dialog.wide,.showcase-dialog{width:calc(100vw - 2 * var(--s2))}.showcase-body{padding:var(--s3) var(--s4)}.showcase-grid{grid-template-columns:repeat(auto-fill,minmax(140px,1fr))}}.colorways{gap:var(--s3);padding-bottom:var(--s3);border-bottom:1px solid var(--line);display:grid}.colorways .cw-head{justify-content:space-between;align-items:center;gap:var(--s2);display:flex}.colorways h3{font-size:var(--t14);margin:0}.cw-editing{padding:var(--s2) var(--s3);border-radius:var(--r1);background:var(--accent-soft);margin:0}.cw-grid{gap:var(--s2);grid-template-columns:repeat(auto-fill,minmax(88px,1fr));margin:0;padding:0;list-style:none;display:grid}.cw-card{gap:var(--s1);width:100%;padding:var(--s1);border:1px solid var(--line-strong);border-radius:var(--r1);background:var(--panel);cursor:pointer;text-align:center;transition:background var(--fast), border-color var(--fast);display:grid}.cw-card:hover{border-color:var(--accent)}.cw-grid li.on .cw-card{border-color:var(--accent);background:var(--accent-soft);border-width:2px}.cw-thumb{aspect-ratio:3/4;border-radius:var(--r1);background:var(--surface);display:block;position:relative;overflow:hidden}.cw-thumb img{object-fit:contain;width:100%;height:100%;display:block}.cw-swatches{background:repeating-linear-gradient(135deg, var(--surface) 0 8px, var(--panel-raised) 8px 16px);position:absolute;inset:0}.cw-dots{left:var(--s1);bottom:var(--s1);gap:var(--s1);display:flex;position:absolute}.cw-dots i{border:1px solid var(--line-strong);border-radius:999px;width:12px;height:12px}.cw-name{font-size:var(--t12);overflow-wrap:anywhere}.cw-row{align-items:center;gap:var(--s2);flex-wrap:wrap;display:flex}.cw-input{flex:8em;min-width:0}.cw-render summary{cursor:pointer;font-size:var(--t14);padding:var(--s1) 0}.cw-render>*+*{margin-top:var(--s2)}@media (prefers-reduced-motion:reduce){.cw-card{transition-duration:.01ms}}.review{gap:var(--s5);display:grid}.rv-section{gap:var(--s3);padding-bottom:var(--s4);border-bottom:1px solid var(--line);display:grid}.rv-section h3{font-size:var(--t14);margin:0}.rv-head{justify-content:space-between;align-items:baseline;gap:var(--s2);display:flex}.rv-form{gap:var(--s2);display:grid}.rv-form textarea,.rv-form input{box-sizing:border-box;width:100%}.rv-label{font-size:var(--t12);color:var(--muted);display:block}.rv-row{gap:var(--s2);flex-wrap:wrap;display:flex}.rv-warn{gap:var(--s2);padding:var(--s3);border-radius:var(--r1);background:var(--fail-soft);display:grid}.rv-hint,.rv-size{margin:0}.rv-check{align-items:center;gap:var(--s2);font-size:var(--t12);display:flex}.rv-list,.rv-versions,.rv-changes{gap:var(--s2);margin:0;padding:0;list-style:none;display:grid}.rv-comment,.rv-version{gap:var(--s1);padding:var(--s2);border:1px solid var(--line);border-radius:var(--r1);background:var(--panel);transition:border-color var(--fast), background var(--fast);display:grid}.rv-version{grid-template-columns:64px 1fr;align-items:start}.rv-version .rv-actions{grid-column:1/-1}.rv-comment.focused{border-color:var(--accent);background:var(--accent-soft)}.rv-comment.resolved .rv-text{color:var(--muted);text-decoration:line-through}.rv-main{gap:var(--s2);color:inherit;font:inherit;text-align:left;cursor:pointer;background:0 0;border:0;align-items:flex-start;padding:0;display:flex}.rv-pin{min-width:24px;height:24px;padding:0 var(--s1);box-sizing:border-box;border-radius:var(--round);color:#fff;font-size:var(--t12);text-align:center;background:#d97706;flex:none;font-weight:700;line-height:24px}.rv-comment.resolved .rv-pin{background:var(--muted)}.rv-body{gap:2px;min-width:0;display:grid}.rv-text{overflow-wrap:anywhere}.rv-meta,.rv-note{font-size:var(--t12);overflow-wrap:anywhere}.rv-actions{gap:var(--s3);font-size:var(--t12);flex-wrap:wrap;display:flex}.rv-actions .danger{color:var(--fail)}.rv-thumb{border-radius:var(--r1);background:var(--surface);width:64px;height:auto}.rv-thumb.none{border:1px dashed var(--line-strong);min-height:64px;display:block}.rv-thumb.big{width:100%;min-height:120px;font-size:var(--t12);color:var(--muted);place-items:center;display:grid}.rv-pick{gap:var(--s2);grid-template-columns:1fr 1fr;display:grid}.rv-pick select{width:100%}.rv-side{gap:var(--s2);grid-template-columns:1fr 1fr;display:grid}.rv-side figure{gap:var(--s1);text-align:center;font-size:var(--t12);margin:0;display:grid}.rv-side img{border-radius:var(--r1);background:var(--surface);width:100%;height:auto}.rv-overlay{border:1px solid var(--line);border-radius:var(--r1);background:var(--surface);width:100%;max-height:260px}.rv-overlay path{fill:none;stroke-width:1.5px}.rv-overlay .a{stroke:#8b909a;stroke-dasharray:4 3}.rv-overlay .b{stroke:var(--accent);stroke-width:2px}.rv-count{margin:0;font-weight:600}.rv-changes{gap:var(--s1);font-size:var(--t14)}.rv-change{padding-left:var(--s3);border-left:3px solid var(--line-strong)}.rv-change.piece-added{border-left-color:var(--pass)}.rv-change.piece-removed{border-left-color:var(--fail)}.rv-same{color:var(--pass);margin:0}.comment-2d{cursor:pointer}.comment-2d circle{fill:#d97706;stroke:#fff;stroke-width:1.5px;transition:fill var(--fast)}.comment-2d text{fill:#fff;font-weight:700}.comment-2d.resolved circle{fill:#6b7280}.comment-2d.focused circle{fill:#2563eb}@media (prefers-reduced-motion:reduce){.rv-comment,.comment-2d circle{transition-duration:.01ms}}.digitizer{gap:var(--s3);padding-top:var(--s3);border-top:1px solid var(--line);display:grid}.digitizer h3,.digitize h4{font-size:var(--t14);margin:0}.digitize{gap:var(--s3);display:grid}.digitize-head{justify-content:space-between;align-items:center;gap:var(--s2);display:flex}.digitize-body{gap:var(--s3);animation:.25s cubic-bezier(.16,1,.3,1) digitize-in;display:grid}@keyframes digitize-in{0%{opacity:0;transform:translateY(var(--s1))}}@media (prefers-reduced-motion:reduce){.digitize-body{animation-duration:.01ms}}.digitize .steps{gap:var(--s1);flex-wrap:wrap;margin:0;padding:0;list-style:none;display:flex}.digitize .step{padding:var(--s1) var(--s2);border:1px solid var(--line);border-radius:var(--r1);background:var(--panel);color:var(--text);font:inherit;font-size:var(--t12);cursor:pointer;transition:background-color .15s ease-out}.digitize .step.on{background:var(--accent-soft);border-color:var(--accent)}.digitize .step:disabled{color:var(--dis);cursor:not-allowed}.repeat-preview{aspect-ratio:1;border:1px solid var(--line);border-radius:var(--r1);background-repeat:repeat;background-size:33.3333% 33.3333%;width:100%;max-width:240px}.repeat-preview.small{max-width:96px}.swatch-colour{width:var(--s4);height:var(--s4);border:1px solid var(--line-strong);border-radius:var(--r1)}.digitize .check{gap:var(--s2);align-items:flex-start;display:flex}.digitize .result,.digitize .behaves{padding:var(--s2) var(--s3);border-radius:var(--r1);background:var(--surface);margin:0}.digitize .values{gap:var(--s1) var(--s3);grid-template-columns:auto 1fr;margin:0;display:grid}.digitize .values dt{color:var(--muted)}.digitize .values dd{margin:0}.digitize .ai-hint{padding:var(--s2) var(--s3);border-radius:var(--r1);background:var(--accent-soft)}.digitize .ai-hint p{margin:0}.digitize .diagram{gap:var(--s2);display:grid}.digitize .diagram svg{border:1px solid var(--line);border-radius:var(--r1);background:var(--panel);width:100%;max-width:320px}.digitize .diagram ol{padding-left:var(--s4);margin:0}.d-table{fill:var(--panel-raised);stroke:var(--line-strong)}.d-strip{fill:none;stroke:var(--accent);stroke-width:3px}.d-strip-box{fill:var(--accent-fill);stroke:var(--accent)}.d-line{stroke:var(--fail);stroke-dasharray:5 4}.d-dim{stroke:var(--muted)}.d-label{fill:var(--muted);font-size:var(--t12)}.cutlist,.sewing{gap:var(--s3);flex-direction:column;display:flex}.cutlist-group h4{margin:0 0 var(--s2);font-size:var(--t14)}.cutlist-rows,.sewing-steps{gap:var(--s2);flex-direction:column;margin:0;padding:0;list-style:none;display:flex}.cutlist-row{border:1px solid var(--line-strong);border-radius:var(--round);padding:var(--s2) var(--s3);background:var(--panel);gap:var(--s1);flex-direction:column;display:flex}.cutlist-head{justify-content:space-between;gap:var(--s2);flex-wrap:wrap;display:flex}.cutlist-qty{font-variant-numeric:tabular-nums}.cutlist-meta,.cutlist-notes{font-size:var(--t12);color:var(--muted)}.cutlist-notes{font-style:italic}.sewing-phase{font-size:var(--t12);text-transform:uppercase;letter-spacing:.04em;margin:var(--s2) 0 var(--s1);color:var(--muted)}.sewing-step{gap:var(--s2);flex-direction:column;display:flex}.sewing-pick{font:inherit;text-align:left;gap:var(--s3);width:100%;padding:var(--s2) var(--s3);border:1px solid var(--line-strong);border-radius:var(--round);background:var(--panel);color:var(--text);cursor:pointer;align-items:flex-start;transition:background-color .15s ease-out,border-color .15s ease-out;display:flex}.sewing-pick:hover{background:var(--panel-raised)}.sewing-step.on .sewing-pick{background:var(--accent-soft);border-color:var(--accent)}.sewing-pick:focus-visible{outline:2px solid var(--focus);outline-offset:2px}.sewing-number{text-align:center;font-variant-numeric:tabular-nums;flex:none;min-width:24px;font-weight:600}.sewing-body{gap:var(--s1);flex-direction:column;min-width:0;display:flex}.sewing-text{font-size:var(--t14)}.sewing-note{font-size:var(--t12)}.sewing-detail{gap:var(--s2);padding:0 var(--s3) var(--s2) var(--s4);flex-direction:column;display:flex}.sewing-facts{gap:var(--s1) var(--s3);font-size:var(--t12);grid-template-columns:max-content 1fr;margin:0;display:grid}.sewing-facts dt{color:var(--muted)}.sewing-facts dd{margin:0}.sewing-explained{padding:var(--s2) var(--s3);border-left:3px solid var(--accent);background:var(--panel-raised);font-size:var(--t14);margin:0}.sewing-confirm,.sewing-empty{border:1px dashed var(--line-strong);border-radius:var(--round);padding:var(--s3);gap:var(--s2);flex-direction:column;display:flex}.sewing-confirm p,.sewing-empty p{margin:0}@media (prefers-reduced-motion:reduce){.sewing-pick{transition-duration:.01ms}}.produce-panel{gap:var(--s3);flex-direction:column;display:flex}.produce-tools{gap:var(--s1);flex-wrap:wrap;display:flex}.produce-tool{font:inherit;font-size:var(--t12);padding:var(--s1) var(--s3);border:1px solid var(--line-strong);border-radius:var(--round);background:var(--panel);color:var(--text);cursor:pointer;transition:background-color .15s ease-out,border-color .15s ease-out}.produce-tool:hover{background:var(--panel-raised)}.produce-tool.on{background:var(--accent-soft);border-color:var(--accent)}.produce-tool:focus-visible{outline:2px solid var(--focus);outline-offset:2px}.produce-body{gap:var(--s3);flex-direction:column;display:flex}.produce-pair{gap:var(--s2) var(--s3);grid-template-columns:1fr 1fr;align-items:end;display:grid}.produce-num-row{align-items:center;gap:var(--s2);display:flex}.produce-num-row input{width:100%;min-width:0}.produce-widths{gap:var(--s2);flex-wrap:wrap;display:flex}.produce-edge{gap:var(--s2);padding-top:var(--s2);border-top:1px solid var(--line);flex-direction:column;display:flex}.produce-table{border-collapse:collapse;width:100%;font-size:var(--t12)}.produce-table th,.produce-table td{text-align:left;padding:var(--s1) var(--s2);border-bottom:1px solid var(--line)}.produce-table tr[data-active=true]{background:var(--accent-soft)}.produce-preview{border:1px solid var(--line);border-radius:var(--r1);background:var(--panel);touch-action:none;width:100%;height:auto;max-height:420px}.preview-sheet{fill:var(--panel)}.preview-piece{fill:var(--accent-soft);stroke:var(--text);stroke-width:1px}.preview-tile rect{fill:none;stroke:var(--accent);stroke-width:1.5px;stroke-dasharray:8 6}.preview-tile text{fill:var(--accent);opacity:.55;font-weight:600}.preview-tile.blank rect{stroke:var(--line-strong);opacity:.6}.marker-cloth{fill:var(--surface);stroke:var(--muted);stroke-width:1px}.marker-piece{cursor:grab}.marker-piece path:first-child{fill:var(--accent-soft);stroke:var(--text);stroke-width:1px;transition:fill .15s ease-out}.marker-piece.bad path:first-child{fill:var(--fail-soft);stroke:var(--fail);stroke-width:2px}.marker-grain{fill:none;stroke:var(--muted);stroke-width:1px}.marker-piece text{fill:var(--text);pointer-events:none;-webkit-user-select:none;user-select:none}.produce-stats{font-size:var(--t14);margin:0}.produce-warnings{padding-left:var(--s4);margin:0}.produce-result{gap:var(--s2);flex-direction:column;display:flex}.allowance-line{stroke:var(--accent);opacity:.8}@media (prefers-reduced-motion:reduce){.produce-tool,.marker-piece path:first-child{transition-duration:.01ms}}.tp-dialog{width:min(960px, calc(100vw - 2 * var(--s4)))}.tp-dialog[open]{grid-template-rows:auto 1fr}.tp-body{gap:var(--s3);padding:var(--s3) var(--s5) var(--s5);min-width:0;display:grid}.tp-tabs{gap:var(--s2);flex-wrap:wrap;display:flex}.tp-tabs .button[aria-selected=true]{background:var(--accent-soft);border-color:var(--accent)}.tp-problem{padding:var(--s2) var(--s3);border-radius:var(--r1);background:var(--fail-soft);color:var(--fail);margin:0}.tp-empty,.tp-note{color:var(--muted);font-size:var(--t12);margin:0}.tp-grid{gap:var(--s3);grid-template-columns:repeat(auto-fill,minmax(220px,1fr));display:grid}.tp-field{gap:var(--s1);font-size:var(--t12);color:var(--muted);display:grid}.tp-field input,.tp-table input,.tp-add input,.tp-add select,.tp-note-box textarea{font:inherit;font-size:var(--t14);color:var(--text);background:var(--panel);border:1px solid var(--line-strong);border-radius:var(--r1);padding:var(--s1) var(--s2);min-width:0}.tp-scroll{overflow-x:auto}.tp-table{border-collapse:collapse;width:100%;font-size:var(--t12)}.tp-table th,.tp-table td{padding:var(--s1) var(--s2);border-bottom:1px solid var(--line);text-align:left;vertical-align:top}.tp-table caption{text-align:left;padding:var(--s2) 0;font-weight:600}.tp-table .n{text-align:right;font-variant-numeric:tabular-nums}.tp-table td small{color:var(--muted);display:block}.tp-table input{text-align:right;width:84px}.tp-table tr.total td{background:var(--surface);font-weight:600}.tp-add{align-items:center;gap:var(--s2);flex-wrap:wrap;display:flex}.tp-add strong{font-size:var(--t14);flex-basis:100%}.tp-add input[aria-label=Name]{flex:180px}.tp-add input[type=number]{width:96px}.tp-check{align-items:center;gap:var(--s2);font-size:var(--t12);color:var(--muted);display:flex}.tp-actions{gap:var(--s2);flex-wrap:wrap;display:flex}.tp-notes{gap:var(--s2);padding-left:var(--s5);margin:0 0 var(--s3);display:grid}.tp-notes li{gap:var(--s2);align-items:flex-start;display:flex}.tp-note-box{gap:var(--s1);flex:1;display:grid}.tp-note-box small{color:var(--accent)}.tp-note-box textarea{resize:vertical;width:100%}.tp-frame{border:1px solid var(--line);border-radius:var(--r1);background:#fff;width:100%;height:min(62dvh,640px)}.fitfix{top:var(--s3);left:var(--s3);z-index:1;gap:var(--s2);max-width:min(320px, calc(100% - 2 * var(--s3) - 160px));padding:var(--s2) var(--s3);border:1px solid var(--line);border-radius:var(--r2);background:var(--panel);box-shadow:var(--shadow-raised);font-size:var(--t12);animation:enter var(--enter);display:grid;position:absolute}.fitfix-head{justify-content:space-between;align-items:center;gap:var(--s3);display:flex}.fitfix-toggle{align-items:center;gap:var(--s2);color:var(--text);font:inherit;cursor:pointer;background:0 0;border:0;padding:0;display:inline-flex}.fitfix-list,.fitfix-outcome ul{gap:var(--s1);padding-left:var(--s4);margin:0;display:grid}.fitfix-list li[data-kind=tight]{color:var(--fail)}.fitfix small,.fitfix .note{color:var(--muted)}.fitfix-outcome{gap:var(--s1);padding:var(--s2);border-radius:var(--r1);background:var(--pass-soft);display:grid}.fitfix-outcome[data-remaining]:not([data-remaining="0"]){background:var(--accent-soft)}@media (width<=720px){.fitfix{max-width:calc(100% - 2 * var(--s3));top:calc(var(--s2) + 44px)}}.pen3d-panel{top:var(--s3);left:var(--s3);z-index:3;gap:var(--s3);width:min(300px, calc(100% - 2 * var(--s3)));max-height:calc(100% - 2 * var(--s3));padding:var(--s3);background:var(--panel);border:1px solid var(--line);border-radius:var(--r2);box-shadow:var(--shadow-overlaid);font-size:var(--t14);animation:enter var(--enter);display:grid;position:absolute;overflow:auto}.pen3d-head{align-items:center;gap:var(--s2);display:flex}.pen3d-count{color:var(--muted);font-size:var(--t12);flex:1}.pen3d-more{gap:var(--s3);animation:enter var(--enter);display:grid}.pen3d-row{align-items:center;gap:var(--s2);flex-wrap:wrap;display:flex}.pen3d-row>span{flex:1}.pen3d-shape{gap:var(--s2);padding:var(--s3);border:1px solid var(--line);border-radius:var(--r1);margin:0;display:grid}.pen3d-shape legend{padding:0 var(--s1);font-size:var(--t12);color:var(--muted)}.pen3d-shape select,.pen3d-number input{font:inherit;padding:var(--s1) var(--s2);border:1px solid var(--line-strong);border-radius:var(--r1);background:var(--panel)}.pen3d-number{align-items:center;gap:var(--s2);font-size:var(--t14);display:flex}.pen3d-number input{width:64px}.pen3d-lines ul,.pen3d-regions,.pen3d-report{gap:var(--s1);margin:0;padding:0;list-style:none;display:grid}.pen3d-lines summary{cursor:pointer;font-size:var(--t12);color:var(--muted)}.pen3d-lines li{justify-content:space-between;align-items:center;gap:var(--s2);font-size:var(--t12);display:flex}.pen3d-lines>.button{margin-top:var(--s2)}.pen3d-regions li{padding:var(--s1) var(--s2);border-radius:var(--r1);transition:background var(--fast), border-color var(--fast);border:1px solid #0000}.pen3d-regions li.hover{background:var(--accent-soft)}.pen3d-regions li.on{border-color:var(--accent);background:var(--accent-soft)}.pen3d-regions small{color:var(--muted);font-size:var(--t12)}.pen3d-problem{display:block;color:var(--fail)!important}.pen3d-empty{gap:var(--s2);color:var(--muted);justify-items:start;display:grid}.pen3d-busy{border-radius:var(--round);background:linear-gradient(90deg, var(--skeleton) 0%, var(--accent-fill) 50%, var(--skeleton) 100%);background-size:200% 100%;height:4px;animation:.4s cubic-bezier(.4,0,.2,1) infinite pen3d-sweep}@keyframes pen3d-sweep{0%{background-position:100% 0}to{background-position:-100% 0}}@media (prefers-reduced-motion:reduce){.pen3d-busy{animation:none}}.pen3d-report li{padding:var(--s2);border-radius:var(--r1);font-size:var(--t12);animation:enter var(--enter)}.pen3d-report li.made{background:var(--pass-soft)}.pen3d-report li.refused{background:var(--fail-soft)}@media (width<=760px){.pen3d-panel{top:auto;bottom:var(--s2);left:var(--s2);width:calc(100% - 2 * var(--s2));max-height:55%;padding:var(--s3)}}.pen3d-panel:not(.open){width:min(250px, calc(100% - 2 * var(--s3)))}:root{--bg:#fff;--surface:#f6f7f9;--panel:#fff;--panel-raised:#f2f3f6;--line:#e2e4e9;--line-strong:#c9cdd4;--text:#1c1d21;--muted:#5b6270;--accent:#835d17;--accent-fill:#d8b072;--accent-fill-hover:#cfa462;--accent-soft:#f6ecd9;--accent-text:#1c1d21;--pass:#17743a;--pass-soft:#e5f3ea;--fail:#b42318;--fail-soft:#fdecea;--focus:#835d17;--dis:#868d99;--seam-free:#7b8291;--grid:#eceef2;--stage-light:#fbfbfc;--stage-mid:#eef0f3;--stage-dark:#e3e6eb;--skeleton:#eceef2;--skeleton-shine:#f6f7f9;--s1:4px;--s2:8px;--s3:12px;--s4:16px;--s5:24px;--s6:32px;--s7:48px;--s8:64px;--r1:6px;--r2:10px;--r3:16px;--round:999px;--t12:12px;--t14:14px;--t16:16px;--t20:20px;--t24:24px;--shadow-raised:0 1px 2px #1018280f, 0 1px 3px #10182814;--shadow-overlaid:0 12px 32px #10182829;--fast:.15s ease-out;--enter:.25s cubic-bezier(.16, 1, .3, 1);--leave:.25s ease-in;--large:.4s cubic-bezier(.4, 0, .2, 1)}@media (prefers-reduced-motion:reduce){*,:before,:after{transition-duration:.01ms!important;animation-duration:.01ms!important}.skeleton .shape,.ai-skeleton span,.render-shimmer{animation:none!important}}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{background:var(--bg);color:var(--text);font:400 var(--t14) / 1.5 Inter, system-ui, sans-serif}button,select,input{font:inherit;color:inherit}:focus-visible{outline:2px solid var(--focus);outline-offset:2px}.app{grid-template-rows:auto 1fr;height:100%;display:grid}.topbar{align-items:center;gap:var(--s3);padding:var(--s3) var(--s5);border-bottom:1px solid var(--line);background:var(--panel);display:flex}.topbar h1{font-size:var(--t16);letter-spacing:.01em;margin:0;font-weight:600}.spacer{flex:1}.toggle{align-items:center;gap:var(--s2);cursor:pointer;display:flex}.toggle input{accent-color:var(--accent)}.button{border:1px solid var(--line-strong);background:var(--panel);border-radius:var(--r1);padding:var(--s2) var(--s4);cursor:pointer;transition:background var(--fast), border-color var(--fast), transform var(--fast)}.button:hover:not(:disabled){border-color:var(--accent);background:var(--accent-soft)}.button:active:not(:disabled){transform:translateY(1px)}.button:disabled{color:var(--muted);background:var(--panel-raised);border-color:var(--line);cursor:default}.button.primary{background:var(--accent-fill);border-color:var(--accent-fill);color:var(--accent-text);font-weight:600}.button.primary:hover:not(:disabled){background:var(--accent-fill-hover)}.button.small{padding:var(--s1) var(--s3);font-size:var(--t12)}.icon-button{width:var(--s6);height:var(--s6);border-radius:var(--r1);cursor:pointer;color:var(--text);transition:background var(--fast), border-color var(--fast);background:0 0;border:1px solid #0000;place-items:center;display:inline-grid}.icon-button:hover:not(:disabled){background:var(--panel-raised);border-color:var(--line)}.icon-button:disabled{color:var(--dis);cursor:default}.workspace{--pattern-col:minmax(320px, 1fr);--inspector-w:304px;--rail-w:56px;grid-template-columns:minmax(420px, 2fr) var(--pattern-col) var(--inspector-w);gap:var(--s3);padding:var(--s3);background:var(--surface);min-height:0;display:grid;position:relative}.workspace[data-pattern=hidden]{--pattern-col:var(--rail-w)}.workspace[data-inspector=hidden]{--inspector-w:0px;column-gap:var(--s3)}.workspace[data-inspector=hidden] .inspector{display:none}.workspace[data-inspector=hidden]{grid-template-columns:minmax(420px, 2fr) var(--pattern-col)}.workspace[data-pattern=hidden][data-inspector=hidden]{grid-template-columns:minmax(0, 1fr) var(--rail-w)}.workspace[data-pattern=hidden][data-inspector=shown]{grid-template-columns:minmax(0, 1fr) var(--rail-w) var(--inspector-w)}.workspace[data-pattern=hidden] .editor{grid-template-columns:var(--rail-w) 0}.workspace[data-pattern=hidden] .canvas-col{border:none;position:static;overflow:visible}.workspace[data-pattern=hidden] .canvas-head,.workspace[data-pattern=hidden] .canvas-wrap{display:none}.workspace[data-pattern=hidden] .statusbar,.workspace[data-pattern=hidden] .problems{left:calc(var(--s3) * 2);z-index:15;max-width:min(560px,50vw - 160px);box-shadow:var(--shadow-overlaid);border-radius:var(--r1);position:fixed}.workspace[data-pattern=hidden] .statusbar{top:calc(64px + var(--s4));height:auto;min-height:var(--s6);padding:var(--s1) var(--s3);background:var(--panel);border:1px solid var(--line)}.workspace[data-pattern=hidden] .problems{top:calc(64px + var(--s4) + var(--s6) + var(--s2));margin:0}.workspace[data-pattern=hidden] .export-menu.from-rail{top:calc(64px + var(--s4));right:calc(var(--inspector-w) + var(--rail-w) + var(--s3) * 3);position:fixed}.sheet-tabs{display:none}.stage{gap:var(--s3);grid-template-rows:1fr auto;min-height:0;display:grid}.viewport{border-radius:var(--r2);border:1px solid var(--line);background:radial-gradient(ellipse at 50% 30%, var(--stage-light) 0%, var(--stage-mid) 60%, var(--stage-dark) 100%);min-height:320px;position:relative;overflow:hidden}.viewport canvas{width:100%;height:100%;display:block}.skeleton{place-items:center;display:grid;position:absolute;inset:0}.skeleton .shape{width:calc(2 * var(--s8));height:calc(5 * var(--s8));border-radius:var(--round);background:linear-gradient(90deg, var(--skeleton) 0%, var(--skeleton-shine) 50%, var(--skeleton) 100%);background-size:200% 100%;animation:.4s cubic-bezier(.4,0,.2,1) infinite alternate shimmer}@keyframes shimmer{to{background-position:-100% 0}}@keyframes enter{0%{opacity:0;transform:translateY(var(--s2))}}.error-box{padding:var(--s6);place-content:center;gap:var(--s3);text-align:center;background:color-mix(in srgb, var(--bg) 88%, transparent);animation:enter var(--enter);display:grid;position:absolute;inset:0}.error-box strong{color:var(--fail);font-size:var(--t16)}.verdict{align-items:center;gap:var(--s3);padding:var(--s3) var(--s4);border:1px solid var(--line);border-radius:var(--r2);background:var(--panel);box-shadow:var(--shadow-raised);transition:background var(--fast), border-color var(--fast);grid-template-columns:auto 1fr auto auto;display:grid;position:relative}.verdict.pass{background:var(--pass-soft);border-color:color-mix(in srgb, var(--pass) 30%, transparent)}.verdict.fail{background:var(--fail-soft);border-color:color-mix(in srgb, var(--fail) 30%, transparent)}.verdict-progress{border-radius:var(--r2) var(--r2) 0 0;height:3px;position:absolute;top:0;left:0;right:0;overflow:hidden}.verdict-progress>div{background:var(--accent-fill);height:100%;transition:width var(--fast)}.verdict-icon{border-radius:var(--round);place-items:center;width:28px;height:28px;display:grid}.verdict.pass .verdict-icon{color:var(--pass);background:var(--panel)}.verdict.fail .verdict-icon{color:var(--fail);background:var(--panel)}.verdict-text{min-width:0;display:grid}.verdict.pass strong{color:var(--pass)}.verdict.fail strong{color:var(--fail)}.status-text{font-size:var(--t12);color:var(--muted);font-variant-numeric:tabular-nums}.dots{gap:var(--s1);display:flex}.dot{border-radius:var(--round);background:var(--line-strong);width:10px;height:10px;transition:background var(--fast)}.dot.pass{background:var(--pass)}.dot.fail{background:var(--fail)}.popover{right:0;bottom:calc(100% + var(--s2));width:min(420px, calc(100vw - 2 * var(--s4)));gap:var(--s2);padding:var(--s3);background:var(--panel);border:1px solid var(--line);border-radius:var(--r2);box-shadow:var(--shadow-overlaid);z-index:10;animation:enter var(--enter);display:grid;position:absolute}.popover[hidden]{display:none}.check{gap:var(--s3);padding:var(--s2) var(--s3);background:var(--panel-raised);border-radius:var(--r1);grid-template-columns:auto 1fr auto;align-items:center;display:grid}.check .label small{color:var(--muted);font-size:var(--t12);display:block}.check .value{font-variant-numeric:tabular-nums}.chip{font-size:var(--t12);padding:0 var(--s2);border-radius:var(--round);font-weight:600}.chip.pass{background:var(--pass-soft);color:var(--pass)}.chip.fail{background:var(--fail-soft);color:var(--fail)}.chip.wait{background:var(--panel);color:var(--muted)}.legend{align-items:center;gap:var(--s2);font-size:var(--t12);color:var(--muted);display:flex}.legend .bar{height:var(--s2);border-radius:var(--round);background:linear-gradient(90deg,#cfd3d8,#f2d16b 25%,#f0954a 50%,#e05656 100%);flex:1}.editor{grid-template-columns:var(--rail-w) 1fr;background:var(--panel);border:1px solid var(--line);border-radius:var(--r2);min-height:0;box-shadow:var(--shadow-raised);display:grid;position:relative}.rail{gap:var(--s2);padding:var(--s2);border-right:1px solid var(--line);background:var(--panel);border-radius:var(--r2) 0 0 var(--r2);flex-direction:column;min-height:0;display:flex;overflow-y:auto}.rail-group{gap:var(--s1);padding-bottom:var(--s2);border-bottom:1px solid var(--line);display:grid}.rail-group:last-child{border-bottom:none}.rail-label{display:none}.rail-caption{letter-spacing:.06em;text-transform:uppercase;color:var(--muted);text-align:center;font-size:10px}.rail-button{border-radius:var(--r1);width:40px;height:40px;color:var(--text);cursor:pointer;transition:background var(--fast), border-color var(--fast), color var(--fast);background:0 0;border:1px solid #0000;place-items:center;display:grid;position:relative}.rail-button:hover{background:var(--panel-raised);border-color:var(--line)}.rail-button.on{background:var(--accent-soft);border-color:var(--accent);color:var(--accent)}.rail-button[aria-disabled=true]{color:var(--dis);cursor:help}.rail-button:after{content:attr(data-tooltip);left:calc(100% + var(--s2));white-space:nowrap;padding:var(--s1) var(--s2);border-radius:var(--r1);background:var(--text);color:var(--bg);font-size:var(--t12);pointer-events:none;opacity:0;transition:opacity var(--fast);z-index:20;position:absolute;top:50%;transform:translateY(-50%)}.rail-button:hover:after,.rail-button:focus-visible:after{opacity:1}.canvas-col{border-radius:0 var(--r2) var(--r2) 0;flex-direction:column;min-width:0;min-height:0;display:flex;position:relative;overflow:hidden;container-type:inline-size}.canvas-head{align-items:center;gap:var(--s1);padding:var(--s2) var(--s3);border-bottom:1px solid var(--line);display:flex}@container (width<=330px){.canvas-head .export-trigger .export-label{display:none}.canvas-head .export-trigger{padding-left:var(--s2);padding-right:var(--s2)}}.export-anchor{margin-left:var(--s1);position:relative}.export-trigger{align-items:center;gap:var(--s1);display:inline-flex}.export-trigger svg{width:var(--s4);height:var(--s4)}.export-menu{top:calc(100% + var(--s1));z-index:20;width:min(280px, calc(100vw - 2 * var(--s4)));gap:var(--s1);padding:var(--s2);background:var(--panel);border:1px solid var(--line);border-radius:var(--r2);box-shadow:var(--shadow-overlaid);animation:enter var(--enter);display:grid;position:absolute;right:0}.menu-anchor{position:relative}.export-menu.from-top{left:0;right:auto}.export-menu.from-rail{top:var(--s2);right:var(--s2)}.export-item{padding:var(--s2) var(--s3);text-align:left;border-radius:var(--r1);cursor:pointer;transition:background var(--fast);background:0 0;border:none;gap:0;display:grid}.export-item:hover,.export-item:focus-visible{background:var(--panel-raised)}.export-item small{color:var(--muted);font-size:var(--t12)}.export-item[aria-disabled=true]{cursor:default}.export-item[aria-disabled=true] .export-label{color:var(--muted)}.mode-badge{font-size:var(--t12);padding:2px var(--s2);border-radius:var(--round);background:var(--panel-raised);color:var(--text);font-weight:600}.mode-badge.sew,.mode-badge.pull,.mode-badge.pin{background:var(--accent-soft);color:var(--accent)}.trim-list{gap:var(--s2);margin:0;padding:0;list-style:none;display:grid}.trim-card{gap:var(--s2);padding:var(--s3);border-radius:var(--r1);background:var(--panel-raised);animation:enter var(--enter);display:grid}.trim-head{justify-content:space-between;align-items:center;gap:var(--s2);font-size:var(--t14);display:flex}.color-field input[type=color]{width:var(--s7);height:var(--s6);border:1px solid var(--line-strong);border-radius:var(--r1);background:var(--panel);padding:0}.trim-button-2d{stroke:#fff;pointer-events:none}.trim-elastic-2d{fill:none;stroke:#6a52c7;stroke-linejoin:round;pointer-events:none}.trim-interfacing-2d{fill:url(#interfacing-hatch);stroke:none;pointer-events:none}.trim-zip-2d{fill:none;stroke:#1f2a44;pointer-events:none}.trim-slider-2d{fill:#b8b2a3;stroke:#1f2a44;pointer-events:none}.pin-list{gap:var(--s1);margin:0;padding:0;list-style:none;display:grid}.pin-list li{align-items:center;gap:var(--s2);font-size:var(--t12);animation:enter var(--enter);display:flex}.pin-list li span{flex:1}.empty-inline{gap:var(--s2);justify-items:start;display:grid}.pin-2d{fill:#c0392b;stroke:#fff;pointer-events:none}.problems{gap:var(--s1);margin:var(--s2) var(--s3) 0;padding:var(--s2) var(--s3);border-radius:var(--r1);background:var(--fail-soft);color:var(--fail);font-size:var(--t12);animation:enter var(--enter);display:grid}.canvas-wrap{flex:1;min-height:320px;position:relative}.canvas-wrap.sew .pattern-canvas,.canvas-wrap.pen .pattern-canvas{cursor:crosshair}.pen-fill{fill:color-mix(in srgb, var(--accent-fill) 22%, transparent);transition:fill var(--fast)}.pen-fill.bad{fill:color-mix(in srgb, var(--fail) 14%, transparent)}.pen-line{fill:none;stroke:var(--accent);stroke-linecap:round}.pen-open{fill:none;stroke:var(--accent)}.pen-point{fill:var(--panel);stroke:var(--accent);transition:fill var(--fast)}.pen-point.start.ready{fill:var(--accent-fill)}.pen-snap{fill:none;stroke:var(--accent)}.pen-cursor{fill:var(--accent)}.pen-readout{fill:var(--text);stroke:var(--panel);paint-order:stroke;font-variant-numeric:tabular-nums}.pen-readout.bad{fill:var(--fail)}.typed-points{gap:var(--s2);padding:var(--s2) var(--s3);border-bottom:1px solid var(--line);font-size:var(--t12);display:grid}.typed-points .link-button{justify-self:start}.typed-points-body{gap:var(--s2);max-width:480px;animation:enter var(--enter);display:grid}.statusbar{padding:0 var(--s3);border-top:1px solid var(--line);font-size:var(--t12);color:var(--muted);height:var(--s6);align-items:center;gap:var(--s2);flex:none;display:flex}.statusbar [role=status]{white-space:nowrap;text-overflow:ellipsis;min-width:0;overflow:hidden}.pattern-canvas{touch-action:none;cursor:grab;-webkit-user-select:none;user-select:none;width:100%;height:100%;position:absolute;inset:0}.grid-line{stroke:var(--grid)}.piece-fill{fill:#1c1d2108;cursor:move;transition:fill var(--fast)}.piece-fill.selected{fill:color-mix(in srgb, var(--accent-fill) 22%, transparent)}g[data-drop]>.piece-fill{fill:color-mix(in srgb, var(--accent-fill) 40%, transparent);stroke:var(--accent)}.edge{fill:none;stroke:var(--seam-free);stroke-linecap:round;pointer-events:none}.edge.active{stroke:var(--accent)}.edge-hit{fill:none;stroke:#0000;cursor:pointer}.handle{fill:var(--panel);stroke:var(--text);cursor:pointer}.handle.selected{fill:var(--accent-fill);stroke:var(--accent)}.handle-hit{fill:#0000;cursor:pointer}.notch{stroke:var(--text)}.piece-label{fill:var(--muted);pointer-events:none}.empty{place-content:center;gap:var(--s3);text-align:center;justify-items:center;display:grid;position:absolute;inset:0}.action-row{gap:var(--s2);flex-wrap:wrap;display:flex}.resize-handle{z-index:6;touch-action:none;background:0 0;padding:0;position:absolute}.resize-handle:after{content:"";border-radius:var(--round);transition:background var(--fast);background:0 0;position:absolute}.resize-handle:hover:after,.resize-handle:focus-visible:after,.resize-handle.dragging:after{background:var(--accent-fill)}.resize-handle.dragging:after{background:var(--accent)}.resize-handle:focus-visible{outline:none}.resize-handle.col{width:var(--s3);cursor:col-resize;top:0;bottom:0}.resize-handle.col:after{top:var(--s3);bottom:var(--s3);width:2px;left:calc(50% - 1px)}.editor>.resize-handle.col{left:calc(var(--s3) * -1)}.resize-handle.inspector-edge{top:var(--s3);bottom:var(--s3);right:calc(var(--s3) + var(--inspector-w))}.resize-handle.row{height:var(--s2);cursor:row-resize;display:none;top:0;left:0;right:0}.resize-handle.row:after{left:var(--s5);right:var(--s5);height:2px;top:2px}body.resizing{cursor:col-resize;-webkit-user-select:none;user-select:none}@media (width<=760px){.resize-handle{display:none!important}}.inspector{background:var(--panel);border:1px solid var(--line);border-radius:var(--r2);min-height:0;box-shadow:var(--shadow-raised);flex-direction:column;display:flex;position:relative;overflow:hidden}.tabs-wrap{position:relative}.tabs-wrap:before,.tabs-wrap:after{content:"";width:var(--s5,24px);pointer-events:none;opacity:0;transition:opacity var(--fast);z-index:1;position:absolute;top:0;bottom:0}.tabs-wrap:before{background:linear-gradient(to right, var(--panel), transparent);left:0}.tabs-wrap:after{background:linear-gradient(to left, var(--panel), transparent);right:0}.tabs-wrap[data-more-left=true]:before,.tabs-wrap[data-more-right=true]:after{opacity:1}.tabs{border-bottom:1px solid var(--line);scrollbar-width:none;display:flex;overflow-x:auto}.tab{padding:var(--s3) var(--s2);color:var(--muted);cursor:pointer;transition:color var(--fast), border-color var(--fast);background:0 0;border:none;border-bottom:2px solid #0000;flex:1;font-weight:500}.tabs .tab{padding-left:var(--s1);padding-right:var(--s1);white-space:nowrap;flex:auto}.tab.on{color:var(--text);border-bottom-color:var(--accent)}.tab-panel{padding:var(--s4);animation:enter var(--enter);flex:1;overflow:auto}.properties,.template,.body-panel,.empty-state{gap:var(--s3);grid-template-columns:minmax(0,1fr);align-content:start;display:grid}.properties h3{font-size:var(--t16);margin:0;font-weight:600}.tips{padding-left:var(--s4);color:var(--muted);margin:0}.field{gap:var(--s1);grid-template-columns:minmax(0,1fr);display:grid}.field-head{font-size:var(--t12);color:var(--muted);justify-content:space-between;display:flex}.field-head output{color:var(--text);font-variant-numeric:tabular-nums}input.text,select{background:var(--panel);border:1px solid var(--line-strong);border-radius:var(--r1);max-width:100%;padding:var(--s2) var(--s3)}input[type=range]{width:100%;accent-color:var(--accent)}.seam-info{font-size:var(--t12);color:var(--muted);padding:var(--s2) var(--s3);background:var(--panel-raised);border-radius:var(--r1)}.seam-info.warn{color:var(--fail);background:var(--fail-soft)}.group{gap:var(--s3);min-width:0;padding:var(--s3);border:1px solid var(--line);border-radius:var(--r1);grid-template-columns:minmax(0,1fr);margin:0;display:grid}.group legend{padding:0 var(--s1);font-size:var(--t12);color:var(--text);font-weight:600}.stepper-field{gap:var(--s1);display:grid}.stepper{grid-template-columns:var(--s6) 1fr var(--s6);gap:var(--s2);align-items:center;display:grid}.button.step{height:var(--s6);font-size:var(--t16);padding:0;line-height:1}.body-panel{grid-template-columns:minmax(0,1fr)}.body-panel select,.body-panel input.text{width:100%;min-width:0}.body-panel .field-head{gap:var(--s2)}.body-panel .field-head>span{text-align:right}.body-panel .button.primary[aria-disabled=true]{color:var(--muted);background:var(--panel-raised);border-color:var(--line);font-weight:500}.field-error{font-size:var(--t12);color:var(--fail);animation:enter var(--enter)}input.text[aria-invalid=true]{border-color:var(--fail);background:var(--fail-soft)}.body-measured{gap:var(--s1) var(--s3);padding:var(--s2) var(--s3);border-radius:var(--r1);background:var(--panel-raised);font-size:var(--t12);color:var(--muted);animation:enter var(--enter);grid-template-columns:1fr 1fr;margin:0;display:grid}.body-measured dt{color:var(--text);grid-column:1/-1;font-weight:600}.body-measured dd{justify-content:space-between;margin:0;display:flex}.body-measured output{color:var(--text);font-variant-numeric:tabular-nums}.topbar .link-button.status-text{-webkit-text-decoration-color:var(--line-strong);text-decoration-color:var(--line-strong);transition:color var(--fast)}.topbar .link-button.status-text:hover{color:var(--text)}.pattern-error{gap:var(--s1);padding:var(--s2) var(--s3);border-radius:var(--r1);background:var(--fail-soft);animation:enter var(--enter);display:grid}.pattern-error strong{color:var(--fail)}.swatches{gap:var(--s2);display:grid}.swatch{gap:var(--s3);text-align:left;padding:var(--s2) var(--s3);border:1px solid var(--line);border-radius:var(--r2);background:var(--panel);cursor:pointer;transition:border-color var(--fast), background var(--fast);grid-template-columns:40px 1fr;align-items:center;display:grid}.swatch small{color:var(--muted);font-size:var(--t12);display:block}.swatch-grid{row-gap:var(--s2);column-gap:var(--s2);grid-template-columns:1fr;display:grid}.swatch-grid.with-apply{grid-template-columns:1fr auto}.swatch-grid>.swatches,.swatch-apply-list{grid-row:1/-1;grid-template-rows:subgrid;gap:inherit;display:grid}.swatch-apply-list{grid-column:2;margin:0;padding:0;list-style:none}.swatch-apply-list li{align-items:center;display:flex}.swatch[draggable=true]:active{cursor:grabbing}.place-button.on{border-color:var(--accent);background:var(--accent-soft)}.place-note{animation:enter var(--enter)}.cloth-tip{z-index:2;pointer-events:none;padding:var(--s1) var(--s2);border-radius:var(--r1);border:1px solid var(--line);background:var(--panel);box-shadow:var(--shadow-raised);font-size:var(--t12);white-space:nowrap;opacity:0;transition:opacity var(--fast);position:absolute;top:0;left:0}.cloth-tip.on{opacity:1}.swatch.on{border-color:var(--accent);background:var(--accent-soft)}.library{gap:var(--s3);display:grid}.library-groups{gap:var(--s1);flex-wrap:wrap;display:flex}.library-grid{gap:var(--s4);display:grid}.library-group h4{margin:0 0 var(--s2);font-size:var(--t12);color:var(--muted);text-transform:uppercase;letter-spacing:.04em;font-weight:600}.library-cells{gap:var(--s2);grid-template-columns:repeat(auto-fill,minmax(128px,1fr));display:grid}.lib-swatch{align-content:start;gap:var(--s1);min-width:0;padding:var(--s2);text-align:left;border:1px solid var(--line);border-radius:var(--r2);background:var(--panel);color:var(--text);font-size:var(--t12);cursor:pointer;transition:border-color var(--fast), background var(--fast);animation:enter var(--enter);display:grid}.lib-swatch:hover{border-color:var(--line-strong)}.lib-swatch.on{border-color:var(--accent);background:var(--accent-soft)}.lib-swatch[draggable=true]:active{cursor:grabbing}.lib-swatch strong{font-size:var(--t12);overflow-wrap:anywhere}.lib-swatch small{color:var(--muted);font-size:var(--t12)}.lib-chip{object-fit:cover;border-radius:var(--r1);border:1px solid var(--line);width:100%;height:48px}.colour-chooser{gap:var(--s2);display:grid}.colour-row{align-items:center;gap:var(--s1);flex-wrap:wrap;display:flex}.colour{border:1px solid var(--line-strong);border-radius:var(--round);cursor:pointer;width:24px;height:24px;transition:box-shadow var(--fast), transform var(--fast);padding:0}.colour:hover{transform:scale(1.1)}.colour.on{box-shadow:0 0 0 2px var(--panel), 0 0 0 4px var(--accent)}.colour-dot{border-radius:var(--round);border:1px solid var(--line-strong);vertical-align:-1px;width:12px;height:12px;display:inline-block}.colour-pick:focus-within{outline:2px solid var(--focus);outline-offset:2px}@media (pointer:coarse){.colour{width:32px;height:32px}}.chip-swatch{border-radius:var(--r1);border:1px solid var(--line);image-rendering:auto;flex:none;width:40px;height:40px}.own-fabrics{gap:var(--s2);margin-top:var(--s4);display:grid}.own-fabrics h3{font-size:var(--t14);margin:0}.own-row{gap:var(--s1);display:grid}.own-actions{justify-content:flex-end;gap:var(--s1);display:flex}.fabric-editor .editor-head,.fabric-editor .field-row{gap:var(--s3);align-items:flex-end;display:flex}.fabric-editor .grow{flex:1}.chip-swatch.large{width:64px;height:64px}.fabric-editor input[type=color]{border:1px solid var(--line-strong);border-radius:var(--r1);background:var(--panel);width:64px;height:40px;padding:0}.piece-surface{opacity:.9;transition:opacity var(--fast)}.piece-surface.selected{opacity:.7}.file-button{cursor:pointer;justify-content:center;position:relative}.file-button:focus-within{outline:2px solid var(--accent);outline-offset:2px}.check-field{align-items:center;gap:var(--s2);font-size:var(--t14);display:flex}.check-field input{width:20px;height:20px;accent-color:var(--accent)}.note{font-size:var(--t12);color:var(--muted);margin:0}.toast{left:var(--s5);bottom:calc(var(--s8) + var(--s6) + var(--s3));max-width:min(360px, calc(100vw - 2 * var(--s5)));background:var(--panel);border:1px solid var(--line);border-left:var(--s1) solid var(--pass);border-radius:var(--r1);padding:var(--s2) var(--s4);box-shadow:var(--shadow-overlaid);animation:enter var(--enter);z-index:30;position:fixed}@media (width<=900px){.toast{top:calc(64px + var(--s4));bottom:auto}}@media (width<=760px){.toast{top:auto;left:auto;right:var(--s4);bottom:var(--s4)}}.toast.leaving{opacity:0;transition:opacity var(--leave)}.ai-card{gap:var(--s3);padding:var(--s3);border:1px solid var(--line);border-radius:var(--r2);background:var(--panel-raised);transition:border-color var(--fast), background var(--fast);display:grid}.ai-card.over{border-color:var(--accent);background:var(--accent-soft)}.ai-card h3{font-size:var(--t14);margin:0;font-weight:600}.ai-drop{gap:var(--s2);text-align:center;padding:var(--s4);border:1px dashed var(--line-strong);border-radius:var(--r1);background:var(--panel);justify-items:center;display:grid}.ai-picture{grid-template-columns:var(--s8) minmax(0, 1fr) auto;gap:var(--s3);animation:enter var(--enter);align-items:center;display:grid}.ai-picture img{width:var(--s8);height:var(--s8);object-fit:cover;border-radius:var(--r1);border:1px solid var(--line);background:var(--panel)}.ai-picture-name{white-space:nowrap;text-overflow:ellipsis;font-size:var(--t12);overflow:hidden}.segmented{gap:var(--s1);grid-template-columns:1fr 1fr;display:grid}.button.seg.on{border-color:var(--accent);background:var(--accent-soft);color:var(--accent);font-weight:600}.ai-working{gap:var(--s2);animation:enter var(--enter);display:grid}.ai-skeleton{gap:var(--s2);display:grid}.ai-skeleton span{height:var(--s3);border-radius:var(--round);background:linear-gradient(90deg, var(--line) 0%, var(--panel) 50%, var(--line) 100%);background-size:200% 100%;animation:.4s cubic-bezier(.4,0,.2,1) infinite alternate shimmer}.ai-skeleton span:last-child{width:60%}.ai-result{gap:var(--s2);padding:var(--s2) var(--s3);border-radius:var(--r1);background:var(--pass-soft);animation:enter var(--enter);display:grid}.ai-result strong{color:var(--pass)}.ai-result p{margin:0}.features{gap:var(--s1);margin:var(--s1) 0 0;flex-wrap:wrap;padding:0;list-style:none;display:flex}.features li{padding:0 var(--s2);border-radius:var(--round);border:1px solid var(--line-strong);background:var(--panel);font-size:var(--t12);animation:enter var(--enter)}textarea.text{width:100%;min-height:calc(2 * var(--s7));resize:vertical;font:inherit;font-size:var(--t14);color:var(--text);background:var(--panel);border:1px solid var(--line-strong);border-radius:var(--r1);padding:var(--s2) var(--s3);transition:border-color var(--fast)}.self-check{gap:var(--s2);padding-top:var(--s3);border-top:1px solid var(--line);display:grid}.check-step{font-size:var(--t14)}.check-rounds{gap:var(--s2);margin:0;padding:0;list-style:none;display:grid}.check-rounds>li{gap:var(--s1);animation:enter var(--enter);display:grid}.assistant-plan{gap:var(--s2);padding:var(--s3);border:1px solid var(--line);border-radius:var(--r1);background:var(--panel);animation:enter var(--enter);display:grid}.assistant-plan p{margin:0}.assistant-steps{gap:var(--s2);margin:0;padding:0;list-style:none;display:grid}.assistant-steps li{grid-template-columns:var(--s5) minmax(0, 1fr);gap:var(--s2);font-size:var(--t14);animation:enter var(--enter);align-items:start;display:grid}.step-mark{width:var(--s5);height:var(--s5);border-radius:var(--round);border:1px solid var(--line-strong);font-size:var(--t12);color:var(--muted);transition:background var(--fast), color var(--fast), border-color var(--fast);place-items:center;font-weight:600;display:grid}.assistant-steps li[data-status=applied] .step-mark{background:var(--pass-soft);border-color:var(--pass);color:var(--pass)}.assistant-steps li[data-status=skipped] .step-mark{background:var(--fail-soft);border-color:var(--fail);color:var(--fail)}.step-why{display:block}.assistant-dropped ul{margin:var(--s1) 0 0;padding-left:var(--s4);font-size:var(--t12);color:var(--muted)}.assistant-outcome{gap:var(--s2);padding-top:var(--s2);border-top:1px solid var(--line);animation:enter var(--enter);display:grid}.verdict-line{padding:var(--s2) var(--s3);border-radius:var(--r1);font-size:var(--t14);animation:enter var(--enter)}.verdict-line.pass{background:var(--pass-soft);color:var(--pass)}.verdict-line.fail{background:var(--fail-soft);color:var(--fail)}.check-result{gap:var(--s2);padding:var(--s2) var(--s3);border-radius:var(--r1);background:var(--pass-soft);animation:enter var(--enter);display:grid}.check-result>strong{color:var(--pass)}.differences{gap:var(--s1);margin:var(--s1) 0 0;padding-left:var(--s4);font-size:var(--t12);display:grid}.differences li{animation:enter var(--enter)}.ai-print{gap:var(--s2);padding:var(--s3);border:1px solid var(--line);border-radius:var(--r2);background:var(--panel-raised);display:grid}.link-button.sample-open{white-space:normal;text-align:left;justify-self:start;padding:0}.ai-sample{gap:var(--s2);padding-top:var(--s3);border-top:1px solid var(--line);animation:enter var(--enter);display:grid}.ai-skeleton.portrait span{width:var(--s7);height:var(--s8);border-radius:var(--r1)}.segmented.n3{grid-template-columns:1fr 1fr 1fr}.tryon-dialog{width:min(880px, calc(100vw - 2 * var(--s4)));max-height:calc(100dvh - 2 * var(--s4));border:1px solid var(--line);border-radius:var(--r3);background:var(--panel);color:var(--text);box-shadow:var(--shadow-overlaid);padding:0;overflow:auto}.tryon-dialog[open]{animation:enter var(--enter)}.tryon-dialog::backdrop{animation:fade-in var(--enter);background:#10182866}@keyframes fade-in{0%{opacity:0}}.tryon-head{justify-content:space-between;align-items:center;gap:var(--s3);padding:var(--s3) var(--s4);border-bottom:1px solid var(--line);display:flex}.tryon-head h2{font-size:var(--t16);margin:0;font-weight:600}.tryon-head .icon-button{font-size:var(--t20)}.tryon-body{gap:var(--s5);padding:var(--s4);grid-template-columns:minmax(0,1fr) minmax(0,1fr);display:grid}.tryon-options{gap:var(--s3);align-content:start;display:grid}.tryon-options>.note,.tryon-stage .note{margin:0;padding:0}.tryon-client{gap:var(--s2);padding:var(--s3);border:1px solid var(--line);border-radius:var(--r2);background:var(--panel-raised);animation:enter var(--enter);display:grid}.check-field.consent{align-items:flex-start}.tryon-stage{align-content:start;display:grid}.tryon-frame{aspect-ratio:2/3;border-radius:var(--r2);border:1px solid var(--line);background:var(--surface);width:100%}img.tryon-frame{object-fit:cover;animation:enter var(--enter);display:block}.empty-frame,.skeleton-frame{place-content:center;justify-items:center;gap:var(--s3);padding:var(--s5);text-align:center;display:grid}.skeleton-frame{background:linear-gradient(90deg, var(--surface) 0%, var(--panel) 50%, var(--surface) 100%);background-size:200% 100%;animation:.4s cubic-bezier(.4,0,.2,1) infinite alternate shimmer}.tryon-result{gap:var(--s2);margin:0;display:grid}@media (width<=760px){.tryon-body{grid-template-columns:minmax(0,1fr)}.tryon-frame{max-height:60dvh;margin:0 auto}}@media (prefers-reduced-motion:reduce){.skeleton-frame{animation:none!important}}@media (width<=1180px){.tabs .tab{font-size:var(--t12)}.workspace{--inspector-w:260px;--pattern-col:minmax(280px, 1fr);grid-template-columns:minmax(0, 1.5fr) var(--pattern-col) var(--inspector-w)}}@media (width>=761px) and (width<=900px){.workspace,.workspace[data-inspector=hidden]{grid-template-columns:minmax(0, 1.5fr) var(--pattern-col)}.workspace[data-pattern=hidden],.workspace[data-pattern=hidden][data-inspector=shown],.workspace[data-pattern=hidden][data-inspector=hidden]{grid-template-columns:minmax(0, 1fr) var(--rail-w)}.inspector{height:var(--inspector-h,auto);max-height:var(--inspector-h,420px);grid-column:1/-1}.resize-handle.inspector-edge{display:none}.inspector>.resize-handle.row{display:block}.rail{min-height:0;overflow-y:auto}}.workspace[data-pattern=hidden][data-inspector=hidden] .rail-button:after{left:auto;right:calc(100% + var(--s2))}@media (width>=761px) and (height<=860px){.rail-caption{display:none}}@media (width>=761px) and (height<=940px){.rail-group{padding-bottom:var(--s1)}.rail-caption{line-height:12px}.rail{gap:var(--s1)}.rail-button{width:36px;height:36px}}@media (width>=761px) and (height<=800px){.rail-button{width:32px;height:32px}}@media (width>=761px){.workspace[data-pattern=hidden] .rail{scrollbar-width:thin;min-height:0;overflow-y:auto}}@media (width>=761px) and (height<=720px){.rail{min-height:0;overflow-y:auto}}.short,.phone-only{display:none}.visually-hidden{clip:rect(0 0 0 0);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.link-button{white-space:nowrap;padding:0 var(--s1);color:var(--muted);font-size:var(--t12);cursor:pointer;background:0 0;border:none;flex:none;text-decoration:underline}.rail.quiet .rail-button:after{opacity:0!important}@media (width<=760px){.app{height:100dvh;overflow:hidden}.topbar{gap:var(--s2);padding:var(--s1) var(--s2)}.topbar h1{font-size:var(--t14)}.long,.hide-narrow{display:none}.short{display:inline}.rail-group.desktop-only{display:none}.workspace[data-pattern=hidden],.workspace[data-inspector=hidden],.workspace[data-pattern=hidden][data-inspector=hidden],.workspace[data-pattern=hidden][data-inspector=shown]{grid-template-columns:minmax(0,1fr)}.workspace[data-inspector=hidden] .inspector{display:flex}.workspace[data-pattern=hidden] .canvas-col{position:relative;overflow:hidden}.workspace[data-pattern=hidden] .canvas-head{display:none}.workspace[data-pattern=hidden] .canvas-wrap{display:block}.workspace[data-pattern=hidden] .statusbar,.workspace[data-pattern=hidden] .problems,.workspace[data-pattern=hidden] .export-menu.from-rail{max-width:none;box-shadow:none;position:static}.workspace[data-pattern=hidden] .editor{grid-template-columns:minmax(0,1fr)}.rail-group.phone-only{display:flex}.canvas-head{display:none}.link-button{min-height:44px}.statusbar{height:64px}.statusbar [role=status]{white-space:normal;line-height:var(--s4);-webkit-line-clamp:3;-webkit-box-orient:vertical;display:-webkit-box}.topbar .button,.toggle{min-height:44px;padding-left:var(--s2);padding-right:var(--s2)}.workspace{padding:var(--s2);gap:var(--s2);grid-template-rows:auto auto minmax(0,1fr);grid-template-columns:minmax(0,1fr);overflow:hidden}.stage{gap:var(--s2);grid-template-rows:28dvh auto}.viewport{min-height:0}.verdict{padding:var(--s1) var(--s3);grid-template-columns:auto 1fr auto}.verdict .dots{display:none}.verdict .button.small{min-height:44px}.sheet-tabs{background:var(--panel);border:1px solid var(--line);border-radius:var(--r2);grid-template-columns:repeat(6,minmax(0,1fr));display:grid;overflow:hidden}.sheet-tabs .tab{min-height:44px;padding:0 var(--s1);font-size:var(--t12);white-space:nowrap}.app[data-sheet=pattern] .inspector,.app[data-sheet=inspector] .editor{display:none}.editor,.inspector{grid-row:3;min-height:0}.inspector{max-height:none}.inspector .tabs-wrap{display:none}.editor{grid-template-rows:auto minmax(0,1fr);grid-template-columns:minmax(0,1fr)}.rail{padding:var(--s1);border-right:none;border-bottom:1px solid var(--line);border-radius:var(--r2) var(--r2) 0 0;flex-flow:wrap;gap:0}.rail-group{border-bottom:none;flex-wrap:wrap;gap:0;padding-bottom:0;display:flex}.rail-caption{display:none}.rail-button{width:44px;height:44px}.rail-button:after{display:none}.canvas-col{border-radius:0 0 var(--r2) var(--r2)}.canvas-head{padding:0 var(--s2)}.icon-button,.button.step{width:44px;height:44px}.stepper{grid-template-columns:44px 1fr 44px}input[type=range]{height:44px}.canvas-wrap{flex:1;min-height:0}.tab-panel input.text,.tab-panel select,.tab-panel .button,.tab-panel .check-field,.swatch,.export-item{min-height:44px}.toast{display:none}}.view-switch{top:var(--s3);right:var(--s3);z-index:3;position:absolute}.view-trigger{box-shadow:var(--shadow-raised)}.view-trigger.on{border-color:var(--accent);background:var(--accent-soft)}.view-pop{top:calc(100% + var(--s1));gap:var(--s2);min-width:264px;padding:var(--s3);border:1px solid var(--line);border-radius:var(--r2);background:var(--panel);box-shadow:var(--shadow-overlaid);animation:enter var(--enter);display:grid;position:absolute;right:0}.view-pop[hidden]{display:none}.view-row{gap:var(--s1);display:grid}.view-head{font-size:var(--t12);color:var(--muted)}.view-radios{gap:var(--s1);padding:var(--s1);border:1px solid var(--line);border-radius:var(--r2);display:flex}.view-radios .button{padding:var(--s1) var(--s3);border-color:#0000;flex:1}.view-item{justify-content:space-between;align-items:center;gap:var(--s3);padding:var(--s2);border-radius:var(--r1);color:var(--text);font:inherit;text-align:left;cursor:pointer;transition:background var(--fast);background:0 0;border:none;display:flex}.view-item:hover{background:var(--panel-raised)}.view-item[aria-pressed=true]{color:var(--accent);font-weight:600}.workspace[data-pattern=hidden] .view-switch{top:auto;bottom:var(--s3)}.fit-legend{left:var(--s3);bottom:var(--s3);z-index:1;gap:var(--s1);padding:var(--s2) var(--s3);border:1px solid var(--line);border-radius:var(--r2);background:var(--panel);box-shadow:var(--shadow-raised);font-size:var(--t12);pointer-events:none;animation:enter var(--enter);display:grid;position:absolute}.fit-legend ul{gap:var(--s1) var(--s2);grid-template-columns:auto auto 1fr auto;align-items:center;margin:0;padding:0;list-style:none;display:grid}.fit-legend li{display:contents}.fit-legend .swatch-dot{width:var(--s3);height:var(--s3);border-radius:var(--round);box-shadow:inset 0 0 0 1px #10182833}.fit-legend .name{font-weight:600}.fit-legend .range,.fit-legend small{color:var(--muted)}.fit-legend .share{font-variant-numeric:tabular-nums;text-align:right}.fit-readout{gap:var(--s1);padding:var(--s2) var(--s3);background:var(--panel-raised);border-radius:var(--r1);display:grid}.fit-readout small{color:var(--muted);font-size:var(--t12);display:block}.fit-readout dl{gap:var(--s1) var(--s3);grid-template-columns:auto 1fr;margin:0;display:grid}.fit-readout dt{font-weight:600}.fit-readout dd{margin:0}@media (width<=760px){.view-switch,.workspace[data-pattern=hidden] .view-switch{top:var(--s2);bottom:auto;right:var(--s2)}.view-switch .button{min-height:44px;padding:0 var(--s2)}.view-pop .view-item{min-height:44px}.fit-legend{left:var(--s2);right:var(--s2);bottom:var(--s2);padding:var(--s1) var(--s2)}.fit-legend ul{justify-content:space-between;gap:var(--s1) var(--s2);flex-wrap:wrap;display:flex}.fit-legend li{align-items:center;gap:var(--s1);display:flex}.fit-legend .range,.fit-legend .share,.fit-legend>strong{display:none}}.import-dialog{width:min(640px, calc(100vw - 2 * var(--s4)))}.import-body{gap:var(--s3);padding:var(--s4);display:grid}.import-body>.note{margin:0}.import-file{overflow-wrap:anywhere}.import-message{gap:var(--s2);padding:var(--s3);border-radius:var(--r2);background:var(--fail-soft);color:var(--fail);font-size:var(--t14);animation:enter var(--enter);display:grid}.import-message .button{color:var(--text)}.import-units{gap:var(--s3);grid-template-columns:minmax(120px,160px) 1fr;align-items:end;display:grid}.import-units .note{margin:0}.import-guess{padding:var(--s2) var(--s3);border-radius:var(--r1);background:var(--accent-soft);color:var(--text)}.import-list{gap:var(--s1);border:1px solid var(--line);border-radius:var(--r2);max-height:min(48vh,420px);margin:0;padding:0;list-style:none;display:grid;overflow:auto}.import-list.measuring{opacity:.5}.import-list{transition:opacity var(--fast)}.import-list li{padding:var(--s2) var(--s3);border-bottom:1px solid var(--line);animation:enter var(--enter)}.import-list li:last-child{border-bottom:none}.import-list li.refused{background:var(--surface)}.import-list .check-field{align-items:center}.import-thumb{width:var(--s7);height:var(--s7);border-radius:var(--r1);background:var(--surface);flex:none}.import-thumb path{fill:color-mix(in srgb, var(--accent-fill) 30%, transparent);stroke:var(--accent);stroke-width:1.5px}.import-piece{gap:var(--s1);min-width:0;display:grid}.import-piece .note{margin:0;padding:0}@media (width<=760px){.import-units{grid-template-columns:1fr}}.render-dialog{width:min(640px, calc(100vw - 2 * var(--s4)));max-height:calc(100dvh - 2 * var(--s4));border:1px solid var(--line);border-radius:var(--r3);background:var(--panel);color:var(--text);box-shadow:var(--shadow-overlaid);padding:0;overflow:auto}.render-dialog[open]{animation:enter var(--enter);grid-template-rows:auto 1fr auto auto;display:grid}.render-dialog::backdrop{animation:fade var(--enter);background:#10182852}@keyframes fade{0%{opacity:0}}.render-head{padding:var(--s3) var(--s3) 0 var(--s5);justify-content:space-between;align-items:center;display:flex}.render-head h2{font-size:var(--t16);margin:0}.render-body{gap:var(--s5);padding:var(--s4) var(--s5);grid-template-columns:200px minmax(0,1fr);align-items:start;display:grid}.render-preview{aspect-ratio:3/4;border-radius:var(--r2);border:1px solid var(--line);background:var(--surface);position:relative;overflow:hidden}.render-preview.video{aspect-ratio:4/5}.render-preview.clear{background:repeating-conic-gradient(var(--grid) 0% 25%, var(--panel) 0% 50%) 0 0 / var(--s4) var(--s4)}.render-preview canvas,.render-preview img,.render-preview video{object-fit:contain;width:100%;height:100%;animation:enter var(--enter);display:block}.render-shimmer{background:linear-gradient(90deg, transparent 0%, color-mix(in srgb, var(--skeleton-shine) 70%, transparent) 50%, transparent 100%);background-size:200% 100%;animation:.4s cubic-bezier(.4,0,.2,1) infinite alternate shimmer;position:absolute;inset:0}.render-form{gap:var(--s3);display:grid}.render-choice{gap:var(--s1);border:none;margin:0;padding:0;display:grid}.render-choice legend{margin-bottom:var(--s1);font-size:var(--t12);color:var(--muted);padding:0;font-weight:600}.render-options{gap:var(--s1);flex-wrap:wrap;align-items:stretch;display:flex}.render-option{padding:var(--s1) var(--s3);min-height:var(--s6);border:1px solid var(--line-strong);border-radius:var(--r1);background:var(--panel);cursor:pointer;transition:background var(--fast), border-color var(--fast), color var(--fast);align-content:center;display:grid;position:relative}.render-option:hover{border-color:var(--accent)}.render-option.on{border-color:var(--accent);background:var(--accent-soft);color:var(--accent);font-weight:600}.render-option small{font-size:var(--t12);color:var(--muted);font-weight:400}.render-option input{opacity:0;cursor:inherit;margin:0;position:absolute;inset:0}.render-option:has(input:focus-visible){outline:2px solid var(--focus);outline-offset:2px}.render-option:has(input:disabled){color:var(--dis);border-color:var(--line);background:var(--panel-raised);cursor:default}.render-colour{width:var(--s7);min-height:var(--s6);border:1px solid var(--line-strong);border-radius:var(--r1);background:var(--panel);cursor:pointer;padding:2px}.render-status{gap:var(--s2);padding:0 var(--s5);min-height:var(--s6);align-content:center;display:grid}.render-status .note{color:var(--muted)}.render-progress{gap:var(--s1);animation:enter var(--enter);display:grid}.render-bar{height:var(--s1);border-radius:var(--round);background:var(--line);overflow:hidden}.render-bar>div{background:var(--accent-fill);height:100%;transition:width var(--fast)}.render-done{padding:var(--s2) var(--s3);border-radius:var(--r1);background:var(--pass-soft);animation:enter var(--enter);gap:0;display:grid}.render-done strong{color:var(--pass)}.render-foot{justify-content:flex-end;gap:var(--s2);padding:var(--s4) var(--s5) var(--s5);display:flex}@media (width<=760px){.render-dialog{width:calc(100vw - 2 * var(--s2));max-height:calc(100dvh - 2 * var(--s2))}.render-head{padding:var(--s2) var(--s2) 0 var(--s4)}.render-body{gap:var(--s3);padding:var(--s3) var(--s4);grid-template-columns:minmax(0,1fr)}.render-preview{justify-self:center;width:auto;height:24dvh}.render-status{padding:0 var(--s4)}.render-option,.render-colour,.render-foot .button,.render-head .icon-button{min-height:44px}.render-head .icon-button{width:44px}.render-foot{padding:var(--s3) var(--s4) var(--s4)}.render-foot .button{flex:1}}.photo-slots{gap:var(--s3);display:grid}.photo-slot{gap:var(--s2);display:grid}.photo-consent{align-items:flex-start}.photo-consent input{flex:none;margin:0}.photo-estimate .button.primary[aria-disabled=true]{color:var(--muted);background:var(--panel-raised);border-color:var(--line);cursor:not-allowed;transition:color var(--fast), background var(--fast), border-color var(--fast);font-weight:500}.look-panel{gap:var(--s3);display:grid}.look-panel h3{font-size:var(--t14);margin:0}.segmented.look-three{grid-template-columns:repeat(3,1fr)}.look-swatches{gap:var(--s2);grid-template-columns:repeat(auto-fill,minmax(96px,1fr));display:grid}.look-swatch{align-items:center;gap:var(--s2);padding:var(--s1) var(--s2);border:1px solid var(--line);border-radius:var(--r1);background:var(--panel);color:var(--text);font-size:var(--t12);text-align:left;cursor:pointer;transition:border-color var(--fast), background var(--fast);display:flex}.gizmo{z-index:3;gap:var(--s1);padding:var(--s1);border:1px solid var(--line);border-radius:var(--r2);background:var(--panel);box-shadow:var(--shadow-raised);animation:enter var(--enter);touch-action:none;display:grid;position:absolute;top:0;left:0}.gizmo-handle{align-items:center;gap:var(--s1);min-height:32px;padding:0 var(--s2);border-radius:var(--r1);background:var(--accent-soft);color:var(--text);font-size:var(--t12);font-variant-numeric:tabular-nums;cursor:grab;-webkit-user-select:none;user-select:none;transition:background var(--fast);display:flex}.gizmo-handle:hover,.gizmo-handle:active{background:var(--accent-fill)}.gizmo-handle:active{cursor:grabbing}.gizmo-handle:focus-visible,.gizmo-flip:focus-visible{outline:2px solid var(--focus);outline-offset:2px}.gizmo-handle svg{fill:currentColor;flex:none;width:16px;height:16px}.gizmo-flip{min-height:32px;padding:0 var(--s2);border:1px solid var(--line);border-radius:var(--r1);background:var(--panel);color:var(--text);font:inherit;font-size:var(--t12);cursor:pointer;transition:background var(--fast)}.look-swatch:hover{border-color:var(--line-strong)}.look-swatch[aria-pressed=true]{border-color:var(--accent);background:var(--accent-soft);font-weight:600}.look-dot{width:var(--s4);height:var(--s4);border-radius:var(--round);flex:none;box-shadow:inset 0 0 0 1px #0003}.look-picker{align-items:center;gap:var(--s2);font-size:var(--t12);color:var(--muted);display:flex}.look-consent{align-items:flex-start}.look-consent input{flex:none;margin:0}.face-choice .button[aria-disabled=true]{color:var(--muted);background:var(--panel-raised);border-color:var(--line);cursor:not-allowed;transition:color var(--fast), background var(--fast), border-color var(--fast)}.face-align{gap:var(--s3);animation:enter var(--enter);display:grid}.face-preview,.face-skeleton{aspect-ratio:1;border-radius:var(--r2);width:100%;max-width:240px;position:relative;overflow:hidden}.face-preview canvas,.face-preview svg{width:100%;height:100%;position:absolute;inset:0}.face-preview canvas{background:var(--surface)}.face-guide{fill:none;stroke:#fff;stroke-width:2px;vector-effect:non-scaling-stroke;filter:drop-shadow(0 0 1px #000c)}.face-guide.eye{stroke:var(--accent-fill)}.face-skeleton{background:linear-gradient(90deg, var(--line) 0%, var(--panel) 50%, var(--line) 100%);background-size:200% 100%;animation:.4s cubic-bezier(.4,0,.2,1) infinite alternate shimmer}.face-thumb{align-items:center;gap:var(--s3);padding:var(--s2) var(--s3);border-radius:var(--r1);background:var(--pass-soft);animation:enter var(--enter);display:flex}.face-thumb img{width:var(--s8);height:var(--s8);object-fit:cover;border-radius:var(--r2);border:1px solid var(--line)}.face-thumb-text{gap:var(--s2);font-size:var(--t14);justify-items:start;display:grid}@media (prefers-reduced-motion:reduce){.face-skeleton{animation:none!important}}.gizmo-flip:hover{background:var(--panel-raised)}.measure-panel{gap:var(--s3);font-size:var(--t14);animation:enter var(--enter);display:grid}.measure-head{justify-content:space-between;align-items:center;display:flex}.measure-panel .note{color:var(--muted);font-size:var(--t12);margin:0}.measure-kind{gap:var(--s1);display:flex}.measure-choice{align-items:center;gap:var(--s1);padding:var(--s1) var(--s2);border:1px solid var(--line);border-radius:var(--round);font-size:var(--t12);cursor:pointer;transition:background var(--fast), border-color var(--fast);display:inline-flex}.measure-choice.on{background:var(--accent-soft);border-color:var(--accent)}.measure-choice input{margin:0}.measure-girth{align-items:center;gap:var(--s1);flex-wrap:wrap;display:flex}.measure-height input{width:72px}.measure-error{padding:var(--s1) var(--s2);border-radius:var(--r1);background:var(--fail-soft);color:var(--fail);font-size:var(--t12);margin:0}.measure-busy{gap:var(--s1);color:var(--muted);font-size:var(--t12);display:grid}.measure-busy .bar{border-radius:var(--r1);background:linear-gradient(90deg, var(--skeleton) 0%, var(--skeleton-shine) 50%, var(--skeleton) 100%);background-size:200% 100%;height:12px;animation:1.2s linear infinite shimmer}.measure-empty{justify-content:space-between;align-items:center;gap:var(--s2);color:var(--muted);font-size:var(--t12);display:flex}.measure-list{gap:var(--s1);padding-left:var(--s4);font-variant-numeric:tabular-nums;margin:0;display:grid}.measure-list li{animation:enter var(--enter)}@media (prefers-reduced-motion:reduce){.measure-busy .bar{animation:none!important}}.body-form{gap:var(--s3);display:grid}.measure-input{gap:var(--s2);grid-template-columns:minmax(0,1fr) auto;align-items:center;display:grid}.measure-unit{color:var(--muted);font-size:var(--t12)}.measure-guess,.measure-guess-all{gap:var(--s2);padding:var(--s1) var(--s2);border-radius:var(--r1);background:var(--accent-soft);color:var(--accent);font-size:var(--t12);animation:enter var(--enter);flex-wrap:wrap;align-items:center;display:flex}.client-actions{gap:var(--s2);flex-wrap:wrap;display:flex}.button.danger{color:var(--fail);border-color:var(--fail)}.button.danger:hover:not(:disabled){background:var(--fail-soft);border-color:var(--fail)}.body-panel details.group>summary{cursor:pointer;color:var(--text);transition:color var(--fast);font-weight:600}.body-panel details.group>summary:hover{color:var(--accent)}.body-panel details.group[open]>summary~*{animation:enter var(--enter)}@media (width<=760px){.gizmo-handle,.gizmo-flip{min-height:44px}}.grading-panel{gap:var(--s3);min-width:0;display:grid}.grade-sizes{gap:var(--s2);display:grid}.grade-pick{align-items:flex-start;gap:var(--s2);font-size:var(--t14);display:flex}.grade-pick small,.grade-name small{color:var(--muted);font-size:var(--t12)}.grade-method{gap:var(--s2);font-size:var(--t14);display:grid}.grade-method label{gap:var(--s2);align-items:flex-start;display:flex}.grade-list{gap:var(--s1);margin:0;padding:0;list-style:none;display:grid}.grade-row{align-items:center;gap:var(--s2);padding:var(--s1) var(--s2);border-radius:var(--r1);font-size:var(--t14);grid-template-columns:auto minmax(0,1fr) auto;display:grid}.grade-row[data-active=true]{background:var(--accent-soft)}.grade-show{align-items:center;gap:var(--s2);display:flex}.grade-swatch{border-radius:var(--round);border:1px solid var(--line-strong);width:14px;height:14px}.grade-name{min-width:0}.grade-badge{font-size:var(--t12);color:var(--accent);font-weight:600}.grade-pair{gap:var(--s2);grid-template-columns:repeat(2,minmax(0,1fr));display:grid}.grade-add{gap:var(--s2);display:grid}.grade-table-wrap{overflow-x:auto}.grade-table{border-collapse:collapse;width:100%;font-size:var(--t12);font-variant-numeric:tabular-nums}.grade-table th,.grade-table td{padding:var(--s1) var(--s2);border-bottom:1px solid var(--line);text-align:right;white-space:nowrap}.grade-table th[scope=row],.grade-table thead th:first-child{text-align:left;font-weight:600}.grade-table [data-base=true]{background:var(--accent-soft)}.grade-table .grade-ease th,.grade-table .grade-ease td{color:var(--muted);font-weight:400}input.grade-tol{width:5em;padding:var(--s1) var(--s2)}.garment-list{gap:var(--s2);margin:0;padding:0;list-style:none;display:grid}.garment-row{align-items:center;gap:var(--s1);border:1px solid var(--line);border-radius:var(--r1);padding:var(--s1);animation:enter var(--enter);grid-template-columns:1fr auto auto auto;transition:border-color .15s ease-out,background-color .15s ease-out;display:grid}.garment-row.on{border-color:var(--accent);background:var(--accent-soft)}.garment-name{text-align:left;padding:var(--s1) var(--s2);cursor:pointer;min-height:44px;color:inherit;font:inherit;background:0 0;border:0;gap:2px;display:grid}.garment-name small{color:var(--muted);font-size:var(--t12)}.add-garments{flex-wrap:wrap}.garment-frame{fill:none;stroke:var(--muted);stroke-dasharray:6 4;opacity:.6}.garment-label{fill:var(--muted);font-weight:600}.fold-line{stroke:var(--muted);opacity:.8}kbd{padding:0 var(--s1);border:1px solid var(--line);border-radius:var(--r1);background:var(--panel-raised);color:var(--muted);font:inherit;font-size:var(--t12)}.button.quiet{color:var(--muted);background:0 0;border-color:#0000}.button.quiet:hover:not(:disabled){color:var(--text);border-color:var(--line-strong);background:var(--panel-raised)}.search-button{align-items:center;gap:var(--s2);display:inline-flex}.drape-split{display:flex}.drape-split>.button:first-child{border-radius:var(--r1) 0 0 var(--r1)}.drape-split>.drape-caret{padding-left:var(--s2);padding-right:var(--s2);border-left-color:var(--line);border-radius:0 var(--r1) var(--r1) 0}@media (width>=761px){.workspace[data-pattern=hidden] .view-pop{top:auto;bottom:calc(100% + var(--s1))}}.tool-chip{padding:2px var(--s2);border-radius:var(--round);background:var(--panel-raised);color:var(--text);white-space:nowrap;flex:none;font-weight:600}.tool-chip.active{background:var(--accent-soft);color:var(--accent)}.tool-chip.active:after{content:" · Esc leaves";font-weight:400}@media (width>=761px){.statusbar{height:calc(var(--s8) + var(--s4));padding:var(--s1) var(--s3);grid-template-columns:auto 1fr auto;align-items:center;display:grid}.statusbar .spacer{display:none}.statusbar .link-button{grid-area:1/3}.statusbar [role=status]{white-space:normal;line-height:var(--s4);-webkit-line-clamp:3;-webkit-box-orient:vertical;grid-area:2/1/auto/-1;display:-webkit-box}.workspace[data-pattern=hidden] .statusbar{height:auto}}@media (width>=761px) and (height>=1250px){.workspace{--rail-w:84px}.rail-button{align-content:center;gap:0;width:100%;height:56px}.rail-label{white-space:nowrap;text-overflow:ellipsis;max-width:100%;font-size:var(--t12);color:var(--muted);line-height:16px;display:block;overflow:hidden}.rail-button.on .rail-label{color:var(--accent)}}.workspace[data-focus=on][data-pattern=hidden][data-inspector=hidden]{grid-template-columns:minmax(0,1fr)}.workspace[data-focus=on] .editor{top:50%;left:var(--s5);z-index:6;width:56px;max-height:calc(100% - var(--s7));box-shadow:var(--shadow-overlaid);animation:enter var(--enter);grid-template-columns:56px;position:absolute;transform:translateY(-50%)}.rail.dock{border-radius:var(--r2);scrollbar-width:thin;border-right:none;min-height:0;overflow-y:auto}.rail.dock .rail-caption,.rail.dock .rail-label{display:none}.workspace[data-focus=on][data-pattern=hidden][data-inspector=hidden] .rail-button:after{left:calc(100% + var(--s2));right:auto}.workspace[data-focus=on][data-pattern=hidden] .export-menu.from-rail{left:calc(var(--s5) + 56px + var(--s2));right:auto}@media (width<=760px){.workspace[data-focus=on]{grid-template-rows:minmax(0,1fr)}.workspace[data-focus=on] .stage{grid-template-rows:minmax(0,1fr) auto}.workspace[data-focus=on] .sheet-tabs,.workspace[data-focus=on][data-inspector=hidden] .inspector,.workspace[data-focus=on] .editor{display:none}}.fold{gap:var(--s2);border-top:1px solid var(--line);padding-top:var(--s2);display:grid}.fold>summary{justify-content:space-between;align-items:center;gap:var(--s2);min-height:var(--s6);cursor:pointer;font-weight:600;list-style:none;display:flex}.fold>summary::-webkit-details-marker{display:none}.fold>summary:after{content:"▾";color:var(--muted);transition:transform var(--fast)}.fold:not([open])>summary:after{transform:rotate(-90deg)}.fold-body{gap:var(--s3);grid-template-columns:minmax(0,1fr);display:grid}.palette-backdrop{z-index:50;padding:12vh var(--s4) var(--s4);background:#10182866;justify-content:center;align-items:flex-start;display:flex;position:fixed;inset:0}.palette{border:1px solid var(--line);border-radius:var(--r3);background:var(--panel);width:min(560px,100%);max-height:min(70vh,520px);box-shadow:var(--shadow-overlaid);animation:enter var(--enter);grid-template-rows:auto auto minmax(0,1fr) auto;display:grid;overflow:hidden}.palette-input{padding:var(--s4);border:none;border-bottom:1px solid var(--line);color:var(--text);font:inherit;font-size:var(--t16);background:0 0}.palette-input:focus-visible{outline-offset:-2px}.palette-note{padding:var(--s2) var(--s4) 0;font-size:var(--t12);color:var(--muted)}.palette-list{padding:var(--s2);margin:0;list-style:none;overflow-y:auto}.palette-item{align-items:center;column-gap:var(--s3);padding:var(--s2) var(--s3);border-radius:var(--r1);cursor:pointer;transition:background var(--fast);grid-template-columns:minmax(0,1fr) auto auto;display:grid}.palette-item.on{background:var(--accent-soft)}.palette-item.off .palette-title{color:var(--muted)}.palette-title{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.palette-group{font-size:var(--t12);color:var(--muted)}.palette-item small{color:var(--muted);font-size:var(--t12);grid-column:1/-1}.palette-item small.why{color:var(--fail)}.palette-foot{gap:var(--s3);padding:var(--s2) var(--s4);border-top:1px solid var(--line);font-size:var(--t12);color:var(--muted);display:flex}@media (width<=760px){.palette-backdrop{padding-top:var(--s4)}.palette-item{min-height:44px}.palette-foot,.search-button,.tool-chip:not(.active){display:none}.tool-chip.active:after{content:none}}@media (width<=760px) and (pointer:coarse){.statusbar .link-button{display:none}}.workspace[data-focus=on][data-pattern=hidden] .statusbar,.workspace[data-focus=on][data-pattern=hidden] .problems{left:calc(var(--s5) + 56px + var(--s3))}
