@font-face{font-family:Manrope Variable;font-style:normal;font-display:swap;font-weight:200 800;src:url(data:font/woff2;base64,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) format("woff2-variations");unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Manrope Variable;font-style:normal;font-display:swap;font-weight:200 800;src:url(/assets/manrope-cyrillic-wght-normal-Dvxsihut.woff2) format("woff2-variations");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:Manrope Variable;font-style:normal;font-display:swap;font-weight:200 800;src:url(/assets/manrope-greek-wght-normal-DL7QRZyv.woff2) format("woff2-variations");unicode-range:U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF}@font-face{font-family:Manrope Variable;font-style:normal;font-display:swap;font-weight:200 800;src:url(/assets/manrope-vietnamese-wght-normal-usUDDRr7.woff2) format("woff2-variations");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Manrope Variable;font-style:normal;font-display:swap;font-weight:200 800;src:url(/assets/manrope-latin-ext-wght-normal-Ch3YOpNY.woff2) format("woff2-variations");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Manrope Variable;font-style:normal;font-display:swap;font-weight:200 800;src:url(/assets/manrope-latin-wght-normal-DHIcAJRg.woff2) format("woff2-variations");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/ibm-plex-mono-cyrillic-ext-500-normal-BqneJy0T.woff2) format("woff2"),url(/assets/ibm-plex-mono-cyrillic-ext-500-normal-BIfNGwUT.woff) format("woff");unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/ibm-plex-mono-cyrillic-500-normal-Bq9vWWag.woff2) format("woff2"),url(/assets/ibm-plex-mono-cyrillic-500-normal-Ael50iVv.woff) format("woff");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/ibm-plex-mono-vietnamese-500-normal-DZ4AoWbu.woff2) format("woff2"),url(/assets/ibm-plex-mono-vietnamese-500-normal-C8zxqsMH.woff) format("woff");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/ibm-plex-mono-latin-ext-500-normal-CAhNIIs5.woff2) format("woff2"),url(/assets/ibm-plex-mono-latin-ext-500-normal-CZ70TYgx.woff) format("woff");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/ibm-plex-mono-latin-500-normal-DSY6xOcd.woff2) format("woff2"),url(/assets/ibm-plex-mono-latin-500-normal-CB9ihrfo.woff) format("woff");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}:root{font-family:Manrope Variable,Segoe UI,sans-serif;color:#17212d;background:#e9ebef;font-synthesis:none;text-rendering:optimizeLegibility;--ink: #17212d;--muted: #566170;--faint: #66717f;--line: #d8dce3;--surface: #ffffff;--panel: #f6f7f9;--canvas: #eef0f3;--accent: #3e52cf;--accent-strong: #2f43ba;--accent-soft: #e9ecff;--thread-gold: #d7952f;--danger: #bb3443;--radius: 14px;color-scheme:light}*{box-sizing:border-box}html,body,#root{min-width:320px;min-height:100%;margin:0}body{min-height:100vh;overflow:hidden}button,input{font:inherit}button{color:inherit}button:focus-visible,input:focus-visible,.artwork-canvas:focus-visible{outline:3px solid rgba(62,82,207,.28);outline-offset:2px}button:not(:disabled){cursor:pointer}button:disabled{cursor:not-allowed;opacity:.48}::selection{color:#fff;background:var(--accent)}::-webkit-scrollbar{width:10px;height:10px}::-webkit-scrollbar-thumb{border:3px solid transparent;border-radius:10px;background:#b8bfca;background-clip:padding-box}.app-shell{min-height:100vh;background:var(--canvas)}.topbar{position:relative;z-index:5;display:flex;min-height:64px;align-items:center;justify-content:space-between;gap:24px;padding:10px 18px;border-bottom:1px solid #cfd4dc;background:#fafafbf5;box-shadow:0 7px 22px #1b23320f}.brand-lockup{display:flex;min-width:max-content;align-items:center;gap:10px;font-weight:760;letter-spacing:-.02em}.brand-lockup small{margin-left:2px;color:var(--muted);font-size:.7rem;font-weight:650;letter-spacing:.04em;text-transform:uppercase}.brand-mark{display:grid;width:36px;height:36px;place-items:center;border-radius:11px;color:#fff;background:var(--ink)}.topbar-actions{display:flex;align-items:center;gap:9px}.privacy-note{display:flex;align-items:center;gap:6px;margin-right:6px;color:#5d6878;font-size:.72rem;font-weight:650}.button{display:inline-flex;min-height:43px;align-items:center;justify-content:center;gap:9px;padding:0 17px;border:0;border-radius:12px;font-size:.82rem;font-weight:750;transition:transform .18s cubic-bezier(.16,1,.3,1),background .18s ease,box-shadow .18s ease}.button:not(:disabled):active{transform:translateY(1px)}.button.primary{color:#fff;background:var(--accent);box-shadow:0 7px 18px #3e52cf33}.button.primary:not(:disabled):hover{background:var(--accent-strong);box-shadow:0 9px 22px #3e52cf42}.button.secondary{color:#2a3442;background:#e9ebef}.button.secondary:not(:disabled):hover{background:#dde1e8}.button.compact{min-height:38px;padding:0 13px;border-radius:10px;font-size:.76rem}.button.full{width:100%}.empty-workbench{min-height:calc(100vh - 64px);padding:clamp(30px,6vh,72px) clamp(20px,5vw,80px) 32px;overflow:auto}.upload-stage{display:grid;width:min(1120px,100%);min-height:560px;grid-template-columns:minmax(360px,1.05fr) minmax(340px,.95fr);align-items:center;gap:clamp(30px,6vw,88px);margin:0 auto;padding:clamp(34px,5vw,70px);border:1px dashed #bbc1cc;border-radius:22px;background:#f8f9fa;box-shadow:0 26px 80px #1f27341a;transition:border-color .18s ease,background .18s ease,transform .18s cubic-bezier(.16,1,.3,1)}.upload-stage.is-dragging{border-color:var(--accent);background:#f1f3ff;transform:scale(1.006)}.empty-visual{position:relative;display:grid;min-height:390px;place-items:center;overflow:hidden;border-radius:18px;background:linear-gradient(rgba(64,75,92,.075) 1px,transparent 1px),linear-gradient(90deg,rgba(64,75,92,.075) 1px,transparent 1px),#e9ecf0;background-size:28px 28px}.hoop-ring{position:relative;display:grid;width:min(310px,72%);aspect-ratio:1;place-items:center;border:18px solid #d5d9e0;border-radius:50%;background:#fbfaf6;box-shadow:inset 0 0 0 2px #b9c0cb,0 16px 34px #282f3b21}.hoop-ring:before,.hoop-ring:after{position:absolute;content:"";background:#d9dde4}.hoop-ring:before{width:1px;height:100%}.hoop-ring:after{width:100%;height:1px}.sample-thread-shape{position:relative;z-index:1;width:122px;height:122px;border:15px solid var(--accent);border-radius:32% 68% 54% 46%/48% 40% 60% 52%;transform:rotate(-14deg);box-shadow:inset 0 0 0 2px #ffffffa6}.sample-thread-shape:after{position:absolute;width:38px;height:38px;right:-35px;bottom:-24px;border-radius:50%;content:"";background:#dd6c43}.needle-line{position:absolute;top:18px;left:50%;width:2px;height:116px;background:linear-gradient(#222c39 0 48%,transparent 48% 57%,#222c39 57% 100%);transform:translate(-50%)}.needle-line span{position:absolute;width:8px;height:18px;left:-3px;bottom:27px;border:2px solid #222c39;border-radius:50%}.upload-copy h1{max-width:13ch;margin:0 0 24px;font-size:clamp(2.2rem,4.5vw,4.5rem);font-weight:730;letter-spacing:-.04em;line-height:.98}.upload-copy>p{max-width:53ch;margin:0;color:#5b6676;font-size:1rem;line-height:1.7}.upload-actions{display:flex;flex-wrap:wrap;gap:10px;margin:30px 0 15px}.upload-copy .file-note{color:#626c79;font-size:.72rem;line-height:1.4}.processing-note{display:flex;align-items:center;gap:7px;min-height:24px;margin:0 0 5px!important;color:var(--accent)!important;font-size:.72rem!important;font-weight:720;line-height:1.3!important}.workflow-guide{display:grid;width:min(1040px,100%);grid-template-columns:repeat(3,1fr);margin:28px auto 0;border-top:1px solid #d1d5dc}.workflow-guide>div{display:grid;grid-template-columns:26px auto;gap:3px 10px;padding:22px 24px;border-right:1px solid #d1d5dc}.workflow-guide>div:last-child{border-right:0}.workflow-guide svg{grid-row:1 / span 2;color:var(--accent)}.workflow-guide strong{font-size:.78rem}.workflow-guide span{color:var(--muted);font-size:.72rem}.workbench{display:grid;height:calc(100vh - 64px);grid-template-columns:270px minmax(480px,1fr) 286px;overflow:hidden}.panel{position:relative;z-index:2;min-width:0;overflow:hidden;background:var(--surface)}.setup-panel{display:flex;flex-direction:column;border-right:1px solid var(--line)}.region-panel{display:flex;flex-direction:column;border-left:1px solid var(--line)}.panel-heading{display:flex;min-height:67px;align-items:center;justify-content:space-between;gap:12px;padding:13px 16px;border-bottom:1px solid #e2e5ea}.panel-heading>div{display:flex;min-width:0;align-items:center;gap:9px}.panel-heading h2{margin:0;font-size:.86rem;font-weight:790;letter-spacing:-.015em}.step-marker{display:grid;width:24px;height:24px;place-items:center;border-radius:8px;color:#fff;background:var(--ink);font-family:IBM Plex Mono,monospace;font-size:.67rem}.icon-button{display:grid;width:32px;height:32px;place-items:center;border:0;border-radius:9px;color:var(--muted);background:transparent}.icon-button:hover{color:var(--ink);background:#eceef2}.control-section{display:grid;gap:2px;padding:13px 16px;border-bottom:1px solid #e3e6eb}.number-field{display:flex;min-height:46px;align-items:center;justify-content:space-between;gap:12px;font-size:.74rem;font-weight:650}.number-control{display:flex;height:34px;align-items:center;overflow:hidden;border:1px solid #d7dbe2;border-radius:9px;background:#f8f9fa}.number-control input{width:64px;height:100%;padding:0 7px;border:0;outline:0;color:var(--ink);background:transparent;font-family:IBM Plex Mono,monospace;font-size:.72rem;font-variant-numeric:tabular-nums}.number-control small{display:grid;min-width:35px;height:100%;place-items:center;border-left:1px solid #d7dbe2;color:#596473;font-family:IBM Plex Mono,monospace;font-size:.62rem}.detection-controls{gap:9px;padding-top:17px;padding-bottom:17px;background:#f8f9fb}.section-label,.range-field>span{display:flex;align-items:center;justify-content:space-between}.section-label span,.range-field b{font-size:.72rem;font-weight:780}.section-label small{color:#646f7d;font-size:.6rem}.range-field{display:grid;gap:10px;padding:6px 0}.range-field output{min-width:24px;color:var(--accent);font-family:IBM Plex Mono,monospace;font-size:.72rem;font-weight:700;text-align:right}.range-field input{width:100%;height:3px;accent-color:var(--accent)}.detection-controls .button{min-height:38px;font-size:.72rem}.advanced-toggle{display:flex;min-height:45px;align-items:center;justify-content:space-between;padding:0 16px;border:0;border-bottom:1px solid #e3e6eb;color:#4f5a69;background:#fff;font-size:.71rem;font-weight:730}.advanced-toggle svg{transition:transform .18s ease}.advanced-toggle .rotate{transform:rotate(180deg)}.advanced-controls{background:#fafafb}.setup-footer{margin-top:auto;padding:15px 16px 17px;border-top:1px solid #e1e4e9;background:#fff}.digitize-button{min-height:46px}.setup-footer p{margin:11px 3px 0;color:#5d6876;font-size:.63rem;line-height:1.5;text-align:center}.canvas-stage{position:relative;display:grid;min-width:0;grid-template-rows:52px minmax(0,1fr) 66px;overflow:hidden;background:var(--canvas)}.canvas-toolbar{position:relative;z-index:2;display:flex;align-items:center;justify-content:space-between;gap:16px;padding:7px 14px;border-bottom:1px solid #d7dbe2;background:#f6f7f9eb}.file-identity{display:flex;min-width:0;align-items:center;gap:8px;font-size:.72rem;font-weight:720}.file-identity span{max-width:200px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.file-identity small{color:#5f6a78;font-family:IBM Plex Mono,monospace;font-size:.59rem}.view-controls{display:flex;align-items:center;gap:4px}.tool-toggle{display:inline-flex;min-height:32px;align-items:center;gap:6px;padding:0 9px;border:0;border-radius:8px;color:#596473;background:transparent;font-size:.67rem;font-weight:720}.tool-toggle.is-active{color:var(--ink);background:#fff;box-shadow:0 4px 12px #1e263314}.hoop-bed{position:relative;display:grid;min-height:0;place-items:center;overflow:hidden;padding:42px 52px;background:linear-gradient(rgba(77,87,103,.065) 1px,transparent 1px),linear-gradient(90deg,rgba(77,87,103,.065) 1px,transparent 1px),#eceef1;background-size:24px 24px}.hoop-bed:before,.hoop-bed:after{position:absolute;z-index:0;content:"";background:#525d6d29}.hoop-bed:before{width:1px;height:100%}.hoop-bed:after{width:100%;height:1px}.canvas-mat{position:relative;z-index:1;display:grid;width:min(74vh,82%);max-height:92%;place-items:center;padding:18px;border-radius:18px;background:#d8dce2;box-shadow:0 18px 42px #242b3724,inset 0 0 0 1px #c5cad2}.artwork-canvas{display:block;max-width:100%;max-height:calc(100vh - 260px);border-radius:9px;background:#fff;box-shadow:0 6px 18px #252b361f;image-rendering:auto;touch-action:none;cursor:crosshair}.artwork-canvas.is-panning{cursor:grabbing}.axis-label{position:absolute;z-index:2;color:#5c6674;font-family:IBM Plex Mono,monospace;font-size:.59rem;font-variant-numeric:tabular-nums}.axis-top{top:17px;left:50%;transform:translate(-50%)}.axis-side{top:50%;left:14px;transform:translateY(-50%) rotate(-90deg)}.canvas-hint{position:absolute;z-index:2;right:16px;bottom:15px;display:inline-flex;align-items:center;gap:7px;padding:8px 10px;border-radius:9px;color:#566171;background:#ffffffeb;box-shadow:0 6px 18px #1c232f14;font-size:.65rem;font-weight:650}.zoom-controls{position:absolute;z-index:3;top:14px;right:14px;display:inline-flex;align-items:center;gap:2px;padding:3px;border-radius:10px;background:#fffffff0;box-shadow:0 6px 18px #1c232f1a,inset 0 0 0 1px #e3e6eb}.zoom-controls button{display:grid;min-width:28px;height:28px;place-items:center;padding:0;border:0;border-radius:7px;color:#4f5a69;background:transparent}.zoom-controls button:hover{color:var(--ink);background:#edeff3}.zoom-controls .zoom-level{min-width:52px;color:var(--ink);font-family:IBM Plex Mono,monospace;font-size:.63rem;font-weight:700;font-variant-numeric:tabular-nums}.status-rail{position:relative;z-index:2;display:grid;grid-template-columns:repeat(4,minmax(68px,108px)) minmax(160px,1fr);align-items:center;border-top:1px solid #d2d6de;background:#f8f9fa}.status-rail>div{display:grid;gap:3px;align-self:stretch;align-content:center;padding:0 13px;border-right:1px solid #dfe2e7}.status-rail span{color:#5f6977;font-size:.57rem;font-weight:720;letter-spacing:.04em;text-transform:uppercase}.status-rail strong{font-family:IBM Plex Mono,monospace;font-size:.84rem;font-variant-numeric:tabular-nums}.status-rail strong small{color:#596473;font-size:.63rem}.status-rail p{min-width:0;margin:0;padding:0 16px;overflow:hidden;color:#55606f;font-size:.66rem;line-height:1.35;text-overflow:ellipsis}.region-heading{padding-right:12px}.selection-count{color:var(--accent);font-family:IBM Plex Mono,monospace;font-size:.61rem;font-weight:650}.selection-actions{display:grid;min-height:43px;grid-template-columns:auto 1fr auto;align-items:center;gap:9px;padding:0 14px;border-bottom:1px solid #e3e6ea}.selection-actions button{padding:0;border:0;color:var(--accent);background:transparent;font-size:.65rem;font-weight:730}.selection-actions span{height:1px;background:#e0e3e8}.region-list{flex:1;min-height:0;overflow:auto;padding:7px}.region-row{display:grid;width:100%;min-height:58px;grid-template-columns:20px 24px 1fr auto;align-items:center;gap:9px;padding:6px 8px;border:0;border-bottom:1px solid #eceef1;border-radius:9px;background:transparent;text-align:left}.region-row:hover{background:#f1f3f7}.region-row.is-selected{background:#f0f2ff}.region-check{display:grid;width:18px;height:18px;place-items:center;border:1px solid #c8ced7;border-radius:5px;color:#fff;background:#fff}.region-row.is-selected .region-check{border-color:var(--accent);background:var(--accent)}.thread-swatch{width:23px;height:23px;border-radius:50%;box-shadow:inset 0 0 0 1px #12192324,0 2px 5px #141a241f}.region-name{display:grid;min-width:0;gap:3px}.region-name strong{font-size:.69rem}.region-name small{overflow:hidden;color:#5d6876;font-family:IBM Plex Mono,monospace;font-size:.55rem;text-overflow:ellipsis;white-space:nowrap}.region-share{color:#5e6977;font-family:IBM Plex Mono,monospace;font-size:.57rem}.legend{display:flex;min-height:52px;align-items:center;justify-content:space-around;gap:12px;padding:0 12px;border-top:1px solid #dfe2e7;color:#596473;background:#fafafb;font-size:.6rem}.legend>div{display:flex;align-items:center;gap:7px}.line-sample{width:21px;height:2px;border-radius:2px}.line-sample.stitch{background:var(--accent)}.line-sample.jump{background:repeating-linear-gradient(90deg,var(--danger) 0 4px,transparent 4px 7px)}.error-toast{position:fixed;z-index:20;right:18px;bottom:18px;display:flex;width:min(420px,calc(100vw - 36px));align-items:center;justify-content:space-between;gap:18px;padding:14px 16px;border-radius:12px;color:#fff;background:#9f2f3b;box-shadow:0 14px 34px #55151d4d;font-size:.76rem}.error-toast button{border:0;color:#fff;background:transparent;font-size:1.2rem}.spin{animation:spin .9s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}@media(max-width:1180px){.workbench{grid-template-columns:245px minmax(400px,1fr) 250px}.privacy-note,.file-identity small{display:none}}@media(max-width:860px){body{overflow:auto}.topbar{position:sticky;top:0}.brand-lockup small{display:none}.empty-workbench{min-height:calc(100vh - 64px);padding:20px 14px 32px}.upload-stage{min-height:auto;grid-template-columns:1fr;gap:30px;padding:24px}.empty-visual{min-height:280px}.hoop-ring{width:220px;border-width:14px}.sample-thread-shape{width:94px;height:94px}.upload-copy h1{max-width:15ch;font-size:clamp(2.2rem,11vw,3.4rem)}.workflow-guide{grid-template-columns:1fr}.workflow-guide>div{border-right:0;border-bottom:1px solid #d1d5dc}.workbench{height:auto;grid-template-columns:1fr;overflow:visible}.canvas-stage{grid-row:1;min-height:560px;grid-template-rows:52px 440px auto}.setup-panel,.region-panel{border:0;border-top:1px solid var(--line)}.setup-panel{grid-row:2}.region-panel{grid-row:3;min-height:440px}.setup-footer{margin-top:0}.hoop-bed{padding:36px 32px}.canvas-mat{width:min(76vw,420px)}.artwork-canvas{max-height:350px}.status-rail{grid-template-columns:repeat(4,1fr);min-height:94px}.status-rail>div{min-height:58px}.status-rail p{grid-column:1 / -1;padding:8px 13px;border-top:1px solid #dfe2e7}}@media(max-width:520px){.topbar{min-height:58px;padding:9px 10px}.brand-lockup{gap:8px;font-size:.81rem}.brand-mark{width:34px;height:34px}.topbar-actions .button{min-width:44px;min-height:44px;padding:0 10px;font-size:0}.topbar-actions .button svg{width:18px;height:18px}.upload-stage{border-radius:17px}.upload-actions{display:grid}.canvas-toolbar{padding-inline:10px}.file-identity span{max-width:115px}.tool-toggle{min-height:44px;padding-inline:7px;font-size:.61rem}.canvas-stage{min-height:500px;grid-template-rows:52px 370px auto}.hoop-bed{padding:32px 24px}.canvas-mat{width:min(84vw,360px);padding:12px}.artwork-canvas{max-height:292px}.canvas-hint{right:8px;bottom:8px}.status-rail span{font-size:.5rem}.status-rail strong{font-size:.72rem}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{scroll-behavior:auto!important;animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}
