.sign-studio .look-preview{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;flex-direction:column;background:#e9edf3;z-index:30}.sign-studio .look-stage{position:relative;flex:1 1 auto;min-height:0;background-color:#fff;background-size:cover;background-position:center;overflow:hidden;display:flex;align-items:center;justify-content:center}.sign-studio .look-art-wrap{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:center;pointer-events:none}.sign-studio .look-2d-layer{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:center;transition:opacity .45s ease}.sign-studio .look-3d-canvas{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;opacity:0;transition:opacity .45s ease;pointer-events:auto}.sign-studio .look-3d-canvas.ready{opacity:1}.sign-studio .look-art,.sign-studio .art-svg{display:block;width:100%;height:100%}.sign-studio .art-svg svg{display:block;width:100%;height:100%;filter:drop-shadow(0 6px 10px rgba(0,0,0,.28))}.sign-studio .look-empty{color:#6b7280;font-size:14px;background:#ffffffb3;padding:10px 16px;border-radius:8px}.sign-studio .look-spinner{position:absolute;top:12px;right:12px;width:18px;height:18px;border:2px solid rgba(0,0,0,.15);border-top-color:#00000080;border-radius:50%;animation:sign-look-spin .7s linear infinite}@keyframes sign-look-spin{to{transform:rotate(360deg)}}.sign-studio .look-controls{flex:0 0 auto;display:flex;align-items:center;gap:16px;padding:12px 16px;background:#fff;border-top:1px solid #e2e6ec;flex-wrap:wrap}.sign-studio .look-materials{display:flex;gap:6px}.sign-studio .look-materials button{padding:6px 14px;border:1px solid #d1d5db;background:#f8fafc;border-radius:999px;font-size:13px;cursor:pointer;text-transform:capitalize}.sign-studio .look-materials button.active{background:#111827;color:#fff;border-color:#111827}.sign-studio .look-swatches{display:flex;gap:8px;flex-wrap:wrap;align-items:center}.sign-studio .look-swatch-label{font-size:11px;font-weight:600;letter-spacing:.04em;text-transform:uppercase;color:#8a93a3;min-width:52px}.sign-studio .look-swatch{width:26px;height:26px;border-radius:50%;border:2px solid #fff;box-shadow:0 0 0 1px #d1d5db;cursor:pointer;padding:0}.sign-studio .look-swatch.active{box-shadow:0 0 0 2px #111827}.sign-studio .look-scene{margin-left:auto;padding:7px 10px;border:1px solid #d1d5db;border-radius:8px;font-size:13px;background:#fff}*{box-sizing:border-box;margin:0;padding:0}:root{--side-bg: #14161b;--side-card: #1f232b;--side-card-hover: #262b35;--side-text: #e8eaf0;--side-muted: #8a91a0;--side-border: #2a2f3a;--bg: #f2f4f7;--surface: #ffffff;--border: #e4e8ee;--border-strong: #d4dae3;--text: #1d2433;--muted: #67707f;--faint: #98a1b0;--blue: #2f7cf6;--blue-strong: #1f66e0;--blue-soft: #e9f1fe;--green: #1fc05f;--green-strong: #17a850;--red: #e0455a;--radius: 10px;--radius-sm: 8px;--shadow-card: 0 1px 2px rgba(20, 26, 40, .06), 0 4px 16px rgba(20, 26, 40, .06);--shadow-float: 0 4px 20px rgba(20, 26, 40, .13)}html,body,#root{height:100%;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Inter,Roboto,sans-serif;background:var(--bg);color:var(--text)}button{font-family:inherit;cursor:pointer;border:none;background:none;color:inherit;font-size:13px}button:disabled{opacity:.45;cursor:not-allowed}input,select,textarea{font-family:inherit}input[type=checkbox]{accent-color:var(--blue)}input[type=range]{-webkit-appearance:none;-moz-appearance:none;appearance:none;height:26px;background:transparent;cursor:pointer;margin:0}input[type=range]::-webkit-slider-runnable-track{height:5px;border-radius:3px;background:var(--border-strong)}input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;width:18px;height:18px;border-radius:50%;background:var(--blue);border:3px solid #fff;box-shadow:0 1px 4px #141a2859;margin-top:-6.5px}input[type=range]:active::-webkit-slider-thumb{background:var(--blue-strong)}input[type=range]::-moz-range-track{height:5px;border-radius:3px;background:var(--border-strong)}input[type=range]::-moz-range-thumb{width:12px;height:12px;border-radius:50%;background:var(--blue);border:3px solid #fff;box-shadow:0 1px 4px #141a2859}.app{display:flex;flex-direction:column;height:100%;overflow:hidden}.app-main{flex:1;display:flex;min-height:0;overflow:hidden}.topnav{flex-shrink:0;height:46px;display:flex;align-items:stretch;justify-content:space-between;gap:8px;padding:0 12px;background:var(--side-bg);border-bottom:1px solid var(--side-border)}.topnav-tabs,.topnav-end{display:flex;align-items:center;gap:2px}.topnav-tab{display:inline-flex;align-items:center;gap:7px;height:32px;padding:0 12px;border-radius:8px;font-size:13px;font-weight:500;color:var(--side-muted);white-space:nowrap}.topnav-tab:hover:not(:disabled){background:var(--side-card);color:var(--side-text)}.topnav-tab.active{background:var(--side-card);color:#fff}.topnav-tab:disabled{opacity:.5;cursor:default}@media (max-width: 720px){.topnav-end .topnav-tab .label{display:none}}.workspace{flex:1;display:flex;flex-direction:column;min-width:0}.workspace-body{flex:1;display:flex;min-height:0}.side{width:292px;flex-shrink:0;background:var(--side-bg);color:var(--side-text);display:flex;flex-direction:column;transition:width .18s ease}.side.collapsed{width:64px}.side.collapsed .side-projects,.side.collapsed .side-footer .label,.side.collapsed .logo-text{display:none}.side-top{display:flex;align-items:center;justify-content:space-between;padding:18px 16px 14px}.logo{display:flex;align-items:center;gap:10px;min-width:0}.logo-mark{width:30px;height:30px;flex-shrink:0;color:#fff}.logo-text{line-height:1.1;white-space:nowrap}.logo-text b{display:block;font-size:14px;letter-spacing:.12em;font-weight:800}.logo-text span{font-size:8.5px;letter-spacing:.42em;color:var(--side-muted);font-weight:600}.side-collapse{color:var(--side-muted);font-size:16px;padding:4px 6px;border-radius:6px}.side-collapse:hover{background:var(--side-card);color:var(--side-text)}.side-projects{flex:1;overflow-y:auto;padding:4px 14px 14px;display:flex;flex-direction:column;gap:12px}.side-projects-head{display:flex;align-items:center;justify-content:space-between;padding:4px 2px}.side-projects-head h2{font-size:14px;font-weight:600;display:flex;align-items:center;gap:8px;color:var(--side-text)}.side-head-actions{display:flex;align-items:center;gap:4px}.side-add{width:26px;height:26px;border-radius:7px;border:1px solid var(--side-border);color:var(--side-muted);font-size:15px;line-height:1}.side-add:hover{color:#fff;border-color:var(--blue)}.project-card{position:relative;background:var(--side-card);border:2px solid transparent;border-radius:14px;padding:10px;cursor:pointer;text-align:left;width:100%}.project-card:hover{background:var(--side-card-hover)}.project-card.selected{border-color:var(--blue)}.project-card .check{position:absolute;top:-8px;right:-8px;width:22px;height:22px;border-radius:50%;background:var(--blue);color:#fff;font-size:12px;display:flex;align-items:center;justify-content:center;box-shadow:0 2px 6px #0006}.project-thumb{height:74px;border-radius:9px;background:#171a20;display:flex;align-items:center;justify-content:center;overflow:hidden;margin-bottom:9px}.project-thumb img{max-width:94%;max-height:88%;object-fit:contain;pointer-events:none}.project-thumb span{font-size:24px;font-weight:900;letter-spacing:.04em;text-transform:uppercase;color:transparent;-webkit-text-stroke:1.2px #cfd5e2;white-space:nowrap;padding:0 8px}.project-meta{display:flex;align-items:center;justify-content:space-between;gap:6px}.project-meta .name{font-size:13px;font-weight:600;color:var(--side-text);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.project-meta .date{display:block;font-size:11px;color:var(--side-muted);margin-top:2px}.project-menu-btn{color:var(--side-muted);font-size:16px;padding:2px 6px;border-radius:6px;flex-shrink:0}.project-menu-btn:hover{color:#fff;background:#ffffff14}.project-menu{position:absolute;right:8px;bottom:8px;transform:translateY(100%);background:#262b35;border:1px solid var(--side-border);border-radius:8px;box-shadow:var(--shadow-float);z-index:40;overflow:hidden}.project-menu button{display:block;width:100%;text-align:left;padding:8px 14px;font-size:12.5px;color:var(--side-text)}.project-menu button:hover{background:#ffffff12}.project-menu button.danger{color:#ff8a97}.side-empty{color:var(--side-muted);font-size:12.5px;padding:8px 2px}.side-footer{display:flex;gap:4px;padding:12px 14px;border-top:1px solid var(--side-border)}.side-footer button{display:flex;align-items:center;gap:8px;color:var(--side-muted);font-size:13px;padding:8px 10px;border-radius:8px;flex:1}.side-footer button:hover,.side-footer button.active{background:var(--side-card);color:var(--side-text)}.field label,.field-label{display:flex;justify-content:space-between;align-items:baseline;font-size:12.5px;color:var(--text);font-weight:500;margin-bottom:6px}.field-label .hint{font-size:11px;color:var(--faint);font-weight:400}.field input[type=text],.field input[type=number],.field select,.field textarea{width:100%;padding:9px 11px;border:1px solid var(--border-strong);border-radius:var(--radius-sm);background:var(--surface);color:var(--text);font-size:13px}.field textarea{resize:vertical;min-height:58px}.field input:focus,.field select:focus,.field textarea:focus{outline:none;border-color:var(--blue);box-shadow:0 0 0 3px #2f7cf626}.char-count{text-align:right;font-size:11px;color:var(--faint);margin-top:4px}.field-note{font-size:11px;color:var(--faint);line-height:1.45;margin-top:6px}.slider-reset{flex:0 0 auto;width:20px;height:20px;line-height:1;font-size:13px;padding:0;border:1px solid var(--border);border-radius:6px;color:var(--muted);background:var(--surface);cursor:pointer}.slider-reset:hover:not(:disabled){border-color:var(--blue);color:var(--blue-strong);background:var(--blue-soft)}.slider-reset:disabled{opacity:.3;cursor:default}.btn-primary{background:var(--blue);color:#fff;padding:9px 14px;border-radius:var(--radius-sm);font-weight:600}.btn-primary:hover{background:var(--blue-strong)}.btn-secondary{background:var(--bg);color:var(--text);border:1px solid var(--border-strong);padding:8px 12px;border-radius:var(--radius-sm);font-weight:500}.btn-secondary:hover{background:var(--border)}.btn-danger{background:var(--red);color:#fff;padding:8px 12px;border-radius:var(--radius-sm);font-weight:600}.btn-danger:hover{background:#c93a4e}.presets-page{overflow-y:auto;background:var(--bg)}.presets-head{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:18px 28px;border-bottom:1px solid var(--border);background:var(--surface)}.presets-head h1{font-size:18px;font-weight:700;color:var(--text)}.presets-body{padding:24px 28px;max-width:900px}.presets-intro{font-size:13px;color:var(--muted);margin-bottom:18px;line-height:1.5}.presets-empty,.presets-error{font-size:13.5px;color:var(--muted);padding:24px 0}.presets-error{color:#c93a4e}.presets-table{width:100%;border-collapse:collapse;font-size:13.5px}.presets-table th{text-align:left;font-weight:600;color:var(--muted);font-size:12px;text-transform:uppercase;letter-spacing:.03em;padding:8px 12px;border-bottom:1px solid var(--border)}.presets-table td{padding:12px;border-bottom:1px solid var(--border);color:var(--text);vertical-align:middle}.presets-table tr.is-hidden .col-name{color:var(--muted)}.presets-table .col-name{font-weight:600}.presets-table .col-slug code{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:12px;color:var(--muted);background:var(--bg);padding:2px 6px;border-radius:5px}.presets-table .col-actions{text-align:right;white-space:nowrap}.presets-table .col-actions button{vertical-align:middle}.presets-table .col-actions button+button{margin-left:8px}.btn-sm{display:inline-flex;align-items:center;gap:6px;padding:6px 10px;font-size:12.5px}.preset-badge{display:inline-block;font-size:11.5px;font-weight:600;padding:3px 9px;border-radius:20px}.preset-badge.published{background:#1fc05f26;color:#159a4b}.preset-badge.hidden{background:#78829629;color:var(--muted)}.btn-icon-trash{flex-shrink:0;display:inline-flex;align-items:center;justify-content:center;width:30px;height:30px;border-radius:7px;border:1px solid var(--border);background:transparent;color:#98a2b3;transition:background .12s,color .12s,border-color .12s}.btn-icon-trash svg{width:15px;height:15px}.btn-icon-trash:hover{background:#e94560;border-color:#e94560;color:#fff}.modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#0f142073;display:flex;align-items:center;justify-content:center;z-index:100}.modal{background:var(--surface);border-radius:16px;padding:24px;min-width:420px;max-width:90vw;max-height:80vh;overflow-y:auto;box-shadow:var(--shadow-float)}.modal h2{margin-bottom:16px;font-size:17px;color:var(--text)}.modal-actions{display:flex;gap:8px;justify-content:flex-end;margin-top:16px}.palette-section-title{font-size:13px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--muted);margin:30px 0 4px;padding-bottom:6px;border-bottom:1px solid var(--border)}.palette-material__subtitle{font-size:12px;font-weight:400;color:var(--muted)}.palette-thickness{display:inline-flex;align-items:center;gap:4px;font-size:12px;color:var(--muted)}.palette-thickness input{width:56px;padding:4px 6px;border:1px solid var(--border);border-radius:5px;background:var(--bg);color:var(--text);font-size:13px}.palette-material{margin:20px 0 28px}.palette-material__head{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:8px}.palette-material__head h2{font-size:15px;font-weight:600;margin:0;display:flex;align-items:center;gap:8px}.palette-material__head code{font-family:ui-monospace,Menlo,monospace;font-size:11px;color:var(--muted);background:var(--bg);padding:1px 6px;border-radius:5px}.palette-material__actions{display:flex;gap:8px;align-items:center}.palette-colors td{vertical-align:middle}.palette-colors input[type=color]{width:34px;height:24px;border:1px solid var(--border);border-radius:5px;background:none;padding:0;cursor:pointer}.palette-price{display:inline-flex;align-items:center;gap:2px;color:var(--muted)}.palette-price__input{width:64px;padding:4px 6px;border:1px solid var(--border);border-radius:5px;background:var(--bg);color:var(--text);font-size:13px}.palette-texture{display:flex;align-items:center;gap:8px}.palette-texture__thumb{width:34px;height:24px;object-fit:cover;border-radius:5px;border:1px solid var(--border)}.palette-texture__none{color:var(--muted);width:34px;text-align:center}.palette-texture__upload{cursor:pointer}.palette-add-material{display:flex;gap:8px;margin-top:16px}.palette-add-material input{flex:0 0 260px;padding:7px 10px;border:1px solid var(--border);border-radius:6px;background:var(--bg);color:var(--text)}.offerings-row td{background:var(--bg);padding:0 12px 12px}.offerings{padding:14px 4px}.offerings__intro{color:var(--muted);font-size:13px;margin:0 0 12px}.offerings__material{margin-bottom:14px}.offerings__mathead{display:inline-flex;align-items:center;gap:8px;margin-bottom:6px}.offerings__hint{font-size:11.5px;color:var(--muted);font-weight:400}.offerings__material--backer{border-top:1px dashed var(--border);padding-top:12px;margin-top:14px}.offerings__colors{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:6px 18px}.offerings__color{display:flex;align-items:center;justify-content:space-between;gap:10px}.offerings__color.is-off{opacity:.5}.offerings__color label{display:inline-flex;align-items:center;gap:8px}.offerings__swatch{width:16px;height:16px;border-radius:4px;border:1px solid var(--border);display:inline-block}.offerings__price{display:inline-flex;align-items:center;gap:2px;color:var(--muted)}.offerings__price input{width:58px;padding:3px 6px;border:1px solid var(--border);border-radius:5px;background:var(--card, #fff);color:var(--text);font-size:12.5px}.offerings__foot{display:flex;gap:8px;justify-content:flex-end;margin-top:12px}.palette-texture__thumb--set{display:inline-flex;align-items:center;justify-content:center;font-size:9px;color:#ffffffd9;text-transform:uppercase;letter-spacing:.05em}.login-gate{position:fixed;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:center;background:var(--bg, #0f0f11);color:var(--text, #e8e8ea)}.login-checking{color:var(--muted)}.login-card{width:min(360px,90vw);display:flex;flex-direction:column;gap:12px;padding:32px;border:1px solid var(--border);border-radius:14px;background:var(--card, #1a1a1d)}.login-card h1{font-size:20px;font-weight:700;letter-spacing:.02em;margin:0}.login-card h1 span{color:var(--muted);font-weight:400}.login-sub{color:var(--muted);font-size:13px;margin:0 0 4px}.login-card input{padding:10px 12px;border:1px solid var(--border);border-radius:8px;background:var(--bg);color:var(--text);font-size:14px}.login-card input.is-error{border-color:#d9534f}.login-error{color:#e57373;font-size:13px;margin:0}.offerings__product{display:flex;gap:16px;flex-wrap:wrap;margin-bottom:16px}.offerings__field{display:flex;flex-direction:column;gap:4px;font-size:12.5px;color:var(--muted)}.offerings__field--wide{flex:1 1 320px}.offerings__field select,.offerings__field textarea{padding:7px 10px;border:1px solid var(--border);border-radius:6px;background:var(--card, #fff);color:var(--text);font-size:13px;font-family:inherit}.offerings__field textarea{resize:vertical}.tile-studio-page .presets-head h1{letter-spacing:.2px}.ts-body{padding:18px 24px 28px}.ts-approx-note{margin:0 0 16px;padding:10px 14px;font-size:12.5px;line-height:1.5;color:#92400e;background:#fffbeb;border:1px solid #fde68a;border-radius:var(--radius-sm)}.ts-approx-note strong{font-weight:600}.ts-columns{display:flex;gap:18px;align-items:flex-start;max-width:1280px}.ts-panel{width:320px;flex:0 0 320px;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow-card);padding:14px 16px;display:flex;flex-direction:column;gap:14px}.ts-source{display:flex;align-items:center;gap:10px}.ts-source-thumb{width:52px;height:52px;flex:0 0 52px;border:1px solid var(--border);border-radius:var(--radius-sm);background:#fff;color:var(--text);display:flex;align-items:center;justify-content:center;padding:6px}.ts-source-thumb svg{width:100%;height:100%}.ts-source-meta{display:flex;flex-direction:column;min-width:0}.ts-source-meta b{font-size:13px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ts-source-meta span{font-size:11px;color:var(--muted)}.ts-group{border-top:1px solid var(--border);padding-top:12px;display:flex;flex-direction:column;gap:6px}.ts-group-title{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.6px;color:var(--muted)}.ts-strategies{display:flex;flex-direction:column;gap:6px}.ts-strategy{text-align:left;padding:7px 10px;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface);font-size:12.5px;color:var(--text)}.ts-strategy:hover:not(:disabled){border-color:var(--border-strong);background:var(--blue-soft)}.ts-strategy.selected{border-color:var(--blue);background:var(--blue-soft);color:var(--blue-strong);font-weight:600}.ts-warn{font-size:12px;color:#9a6b15;background:#fdf4e3;border:1px solid #f3e2bb;border-radius:var(--radius-sm);padding:6px 9px}.ts-main{flex:1;min-width:0;display:flex;flex-direction:column;gap:14px}.ts-preview{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow-card);padding:14px 16px}.ts-preview.computing .ts-pane-art{opacity:.55;transition:opacity .15s ease .1s}.ts-preview-empty{min-height:220px;display:flex;align-items:center;justify-content:center}.ts-hint{color:var(--muted);font-size:13px}.ts-preview-panes{display:flex;gap:16px;flex-wrap:wrap}.ts-pane{flex:1 1 380px;min-width:300px;max-width:620px}.ts-pane figcaption{font-size:12px;color:var(--muted);margin-bottom:6px;display:flex;align-items:center;justify-content:space-between;gap:8px}.ts-ms{color:var(--faint)}.ts-pane-tools{display:inline-flex;gap:4px}.ts-pane-tools button{font-size:11px;padding:2px 7px;border:1px solid var(--border);border-radius:6px;color:var(--muted)}.ts-pane-tools button.active{border-color:var(--blue);color:var(--blue-strong);background:var(--blue-soft)}.ts-grid-range{width:96px;accent-color:var(--blue);cursor:pointer;vertical-align:middle}.ts-pane-art{border:1px solid var(--border);border-radius:var(--radius-sm);background:repeating-conic-gradient(#fafbfc,#fafbfc 25%,#f1f3f6 0%,#f1f3f6 50%) 0 0 / 16px 16px;aspect-ratio:1;display:flex;color:#14161b}.ts-pane-art svg{width:100%;height:100%;display:block}.ts-floater{fill:var(--red);animation:ts-floater-pulse 1.2s ease-in-out infinite alternate}@keyframes ts-floater-pulse{0%{opacity:.55}to{opacity:1}}.ts-seams line{stroke:#2f7cf680;stroke-width:.15;stroke-dasharray:.8 .8}.ts-status{display:flex;flex-wrap:wrap;gap:6px;margin-top:12px}.ts-badge{font-size:11.5px;padding:3px 9px;border-radius:999px;border:1px solid var(--border);color:var(--muted);background:var(--bg)}.ts-badge.ok{color:var(--green-strong);border-color:#bfe9cf;background:#edfaf2}.ts-badge.bad{color:var(--red);border-color:#f2c4cc;background:#fdeef1}.ts-badge.warn{color:#9a6b15;border-color:#f3e2bb;background:#fdf4e3}.ts-badge.soft{color:var(--faint)}.ts-export{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow-card);padding:12px 16px;display:flex;align-items:center;flex-wrap:wrap;gap:10px}.ts-export-name{display:flex;align-items:center;gap:8px;font-size:12.5px;color:var(--muted);flex:1 1 220px}.ts-export-name input{flex:1;min-width:140px;padding:7px 10px;border:1px solid var(--border);border-radius:var(--radius-sm);font-size:13px;color:var(--text);background:var(--surface)}.ts-export .btn-primary.risky{background:#b98a1d}.ts-import{max-width:720px}.ts-dropzone{border:2px dashed var(--border-strong);border-radius:var(--radius);background:var(--surface);padding:44px 20px;text-align:center;cursor:pointer;transition:border-color .15s,background .15s}.ts-dropzone:hover,.ts-dropzone.drag{border-color:var(--blue);background:var(--blue-soft)}.ts-dropzone.busy{opacity:.6;pointer-events:none}.ts-dropzone-inner{display:flex;flex-direction:column;gap:6px;align-items:center}.ts-dropzone-icon{font-size:34px;color:var(--blue);line-height:1}.ts-dropzone-hint{font-size:12px;color:var(--muted)}.ts-stroke-rescue{margin-top:14px;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:14px 16px;display:flex;align-items:center;gap:12px;flex-wrap:wrap;font-size:13px}.ts-stroke-rescue label{display:flex;align-items:center;gap:6px;color:var(--muted)}.ts-stroke-rescue input{width:64px;padding:5px 8px;border:1px solid var(--border);border-radius:var(--radius-sm)}@media (max-width: 980px){.ts-columns{flex-direction:column}.ts-panel{width:100%;flex:none}}.ts-deskew{max-width:900px}.ts-deskew-panes{display:flex;gap:22px;flex-wrap:wrap;align-items:flex-start}.ts-deskew-caption{font-size:12px;color:var(--muted);margin-bottom:6px;display:flex;align-items:center;justify-content:space-between;gap:8px;min-height:22px}.ts-deskew-stage{position:relative;border:1px solid var(--border);border-radius:var(--radius-sm);overflow:hidden;background:#fff;touch-action:none;cursor:crosshair}.ts-deskew-stage.erasing{cursor:cell}.ts-deskew-stage canvas{display:block}.ts-quad{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%}.ts-quad polygon{fill:#2f7cf614;stroke:var(--blue);stroke-width:1.5;stroke-dasharray:5 4}.ts-quad-handle{fill:#fff;stroke:var(--blue);stroke-width:2.5;cursor:grab}.ts-quad text{font-size:10px;fill:var(--blue-strong);font-weight:700;paint-order:stroke;stroke:#fff;stroke-width:3}.ts-brush-row{display:flex;align-items:center;gap:8px;margin-top:8px;font-size:12px;color:var(--muted)}.ts-deskew-rect{border:1px solid var(--border);border-radius:var(--radius-sm);overflow:hidden;background:#fff;position:relative}.ts-deskew-rect canvas{position:absolute;top:0;left:0}.ts-deskew-controls{margin-top:12px;display:flex;flex-direction:column;gap:8px;width:300px}.ts-range-row{display:grid;grid-template-columns:74px 1fr 42px;align-items:center;gap:8px;font-size:12px;color:var(--muted)}.ts-range-row span{text-align:right;color:var(--text);font-variant-numeric:tabular-nums}.ts-check-row{display:flex;align-items:center;gap:8px;font-size:12px;color:var(--muted)}.ts-deskew-actions{margin-top:18px;display:flex;gap:10px}.ts-identify{max-width:980px}.ts-identify-head{display:flex;gap:18px;align-items:flex-start;margin-bottom:16px}.ts-identify-thumb{width:140px;height:140px;object-fit:contain;background:#fff;border:1px solid var(--border);border-radius:var(--radius-sm);flex:0 0 140px}.ts-identify-lead{display:flex;flex-direction:column;gap:10px;font-size:13px;color:var(--muted)}.ts-identify-actions{display:flex;gap:8px;flex-wrap:wrap}.ts-verdict{display:flex;align-items:center;gap:8px;color:var(--text)}.ts-verdict-keywords{color:var(--faint);font-size:12px}.ts-candidate-search{display:flex;gap:8px;margin:6px 0 14px}.ts-candidate-search input{flex:1;max-width:420px;padding:7px 10px;border:1px solid var(--border);border-radius:var(--radius-sm);font-size:13px}.ts-candidate-group{margin-bottom:18px}.ts-candidate-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(104px,1fr));gap:10px;margin-top:8px}.ts-candidate{display:flex;flex-direction:column;gap:4px;padding:8px;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface);text-align:center}.ts-candidate:hover:not(:disabled){border-color:var(--blue);background:var(--blue-soft)}.ts-candidate.busy{opacity:.5}.ts-candidate-art{height:72px;display:flex;align-items:center;justify-content:center;background:#fff;border-radius:6px;overflow:hidden}.ts-candidate-art img{max-width:100%;max-height:100%;width:56px;height:56px;object-fit:contain}.ts-candidate-label{font-size:11px;color:var(--text);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ts-candidate-license{font-size:10px;color:var(--faint);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ts-library-wrap{max-width:720px;padding-top:4px}.ts-editable{margin-top:20px;border-top:1px solid var(--border);padding-top:16px}.ts-editable-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(160px,1fr));gap:10px;margin-top:10px}.ts-editable-item{display:flex;align-items:center;gap:10px;padding:8px;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface);text-align:left;cursor:pointer}.ts-editable-item:hover{border-color:var(--blue);background:var(--blue-soft)}.ts-editable-thumb{width:44px;height:44px;flex:0 0 44px;border:1px solid var(--border);border-radius:8px;overflow:hidden;background:#fff}.ts-editable-thumb img{width:100%;height:100%;object-fit:contain}.ts-editable-name{flex:1;min-width:0;font-size:12.5px;color:var(--text);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ts-editable-pencil{flex:0 0 auto;color:var(--muted);display:inline-flex}.ts-editable-item:hover .ts-editable-pencil{color:var(--blue-strong)}.ts-editing-tag{font-size:12px;color:var(--blue-strong);background:var(--blue-soft);border:1px solid #cfe0fd;border-radius:999px;padding:3px 10px;white-space:nowrap}.ts-shape-select{width:100%;padding:7px 10px;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface);font-size:13px;color:var(--text)}.slider-row{display:flex;align-items:center;gap:8px}.slider-row .bound{font-size:10.5px;color:var(--faint);white-space:nowrap;font-variant-numeric:tabular-nums}.slider-row input[type=range]{flex:1;min-width:0;height:18px}.value-box{display:flex;align-items:center;gap:4px;border:1px solid var(--border-strong);border-radius:7px;padding:4px 7px;flex-shrink:0}.value-box input{width:38px;border:none;font-size:12px;text-align:right;color:var(--text);font-variant-numeric:tabular-nums;-moz-appearance:textfield;background:transparent}.value-box input::-webkit-outer-spin-button,.value-box input::-webkit-inner-spin-button{-webkit-appearance:none}.value-box input:focus{outline:none}.value-box .unit{font-size:11px;color:var(--faint)}.lazy-thumb{position:relative;display:flex;align-items:center;justify-content:center;width:100%;height:100%;overflow:hidden}.lazy-thumb:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;z-index:0;background:linear-gradient(100deg,#eceff3 30%,#f6f8fa,#eceff3 70%);background-size:200% 100%;animation:lazy-shimmer 1.2s ease-in-out infinite}.lazy-thumb.is-loaded:before{content:none}.lazy-thumb img{position:relative;z-index:1;opacity:0;transition:opacity .28s ease}.lazy-thumb.is-loaded img{opacity:1}@keyframes lazy-shimmer{0%{background-position:200% 0}to{background-position:-200% 0}}.ts-builtin-picker{margin-top:18px}.ts-builtin-title{font-size:14px;font-weight:600;color:var(--text);margin:0 0 4px}.ts-builtin-types{display:grid;grid-template-columns:repeat(auto-fill,minmax(84px,1fr));gap:8px;margin:12px 0}.ts-builtin-type{display:flex;flex-direction:column;align-items:center;gap:6px;padding:8px 6px;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface);color:var(--text);font-size:12px;cursor:pointer}.ts-builtin-type:hover{border-color:var(--border-strong);background:var(--blue-soft)}.ts-builtin-type.selected{border-color:var(--blue);background:var(--blue-soft);color:var(--blue-strong);font-weight:600}.ts-builtin-swatch-canvas{width:56px;height:56px;border-radius:4px;border:1px solid var(--border);background:#fff}.ts-builtin-controls{max-width:340px;margin:8px 0 14px}.ts-builtin-open{margin-top:4px}.sign-studio,.sign-studio *{box-sizing:border-box;margin:0;padding:0}.sign-studio{--side-bg: #14161b;--side-card: #1f232b;--side-card-hover: #262b35;--side-text: #e8eaf0;--side-muted: #8a91a0;--side-border: #2a2f3a;--bg: #f2f4f7;--surface: #ffffff;--border: #e4e8ee;--border-strong: #d4dae3;--text: #1d2433;--muted: #67707f;--faint: #98a1b0;--blue: #2f7cf6;--blue-strong: #1f66e0;--blue-soft: #e9f1fe;--green: #1fc05f;--green-strong: #17a850;--red: #e0455a;--radius: 10px;--radius-sm: 8px;--shadow-card: 0 1px 2px rgba(20, 26, 40, .06), 0 4px 16px rgba(20, 26, 40, .06);--shadow-float: 0 4px 20px rgba(20, 26, 40, .13)}.sign-studio{height:100%;width:100%;display:flex;flex-direction:column;min-height:0;position:relative;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Inter,Roboto,sans-serif;background:var(--bg);color:var(--text)}.sign-studio button{font-family:inherit;cursor:pointer;border:none;background:none;color:inherit;font-size:13px}.sign-studio button:disabled{opacity:.45;cursor:not-allowed}.sign-studio input,.sign-studio select,.sign-studio textarea{font-family:inherit}.sign-studio input[type=checkbox]{accent-color:var(--blue)}.sign-studio input[type=range]{-webkit-appearance:none;-moz-appearance:none;appearance:none;height:26px;background:transparent;cursor:pointer;margin:0}.sign-studio input[type=range]::-webkit-slider-runnable-track{height:5px;border-radius:3px;background:var(--border-strong)}.sign-studio input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;width:18px;height:18px;border-radius:50%;background:var(--blue);border:3px solid #fff;box-shadow:0 1px 4px #141a2859;margin-top:-6.5px}.sign-studio input[type=range]:active::-webkit-slider-thumb{background:var(--blue-strong)}.sign-studio input[type=range]::-moz-range-track{height:5px;border-radius:3px;background:var(--border-strong)}.sign-studio input[type=range]::-moz-range-thumb{width:12px;height:12px;border-radius:50%;background:var(--blue);border:3px solid #fff;box-shadow:0 1px 4px #141a2859}.sign-studio .workspace{flex:1;display:flex;flex-direction:column;min-width:0}.sign-studio .workspace-body{flex:1;display:flex;min-height:0;position:relative}.sign-studio .workspace-body--panel-collapsed .panel,.sign-studio .workspace-body--panel-collapsed .panel-resizer{display:none}.sign-studio .panel-collapse-btn{position:absolute;top:6px;right:8px;z-index:5;width:24px;height:24px;display:flex;align-items:center;justify-content:center;border:1px solid var(--border, #e2e6ec);background:#fff;border-radius:6px;color:#667085;cursor:pointer;font-size:14px;line-height:1}.sign-studio .panel-collapse-btn:hover{background:#f2f4f7;color:#1d2939}.sign-studio .panel-expand-tab{position:absolute;top:12px;right:0;z-index:31;display:flex;align-items:center;justify-content:center;width:22px;height:40px;border:1px solid var(--border, #e2e6ec);border-right:none;background:#fff;border-radius:8px 0 0 8px;box-shadow:-1px 1px 3px #10182814;color:#475467;cursor:pointer;font-size:14px}.sign-studio .panel-expand-tab:hover{background:#f2f4f7;color:#1d2939}.sign-studio .topbar{height:58px;flex-shrink:0;background:var(--surface);border-bottom:1px solid var(--border);display:flex;align-items:center;padding:0 14px;gap:8px}.sign-studio .topbar-group{display:flex;align-items:center;gap:4px}.sign-studio .topbar-spacer{flex:1}.sign-studio .tool-btn{display:flex;flex-direction:column;align-items:center;gap:2px;padding:6px 10px;border-radius:var(--radius-sm);color:var(--muted);font-size:10.5px;min-width:52px}.sign-studio .tool-btn svg{width:18px;height:18px}.sign-studio .tool-btn:hover{background:var(--bg);color:var(--text)}.sign-studio .tool-btn.active{background:var(--blue-soft);color:var(--blue);box-shadow:inset 0 0 0 1px #2f7cf659}.sign-studio .topbar-divider{width:1px;height:30px;background:var(--border);margin:0 8px}.sign-studio .topbar-title{display:flex;flex-direction:column;align-items:center;min-width:0}.sign-studio .topbar-title .title-row{display:flex;align-items:center;gap:6px}.sign-studio .topbar-title input,.sign-studio .topbar-title .title-text{font-size:15px;font-weight:600;color:var(--text);border:none;background:transparent;text-align:center;max-width:260px;padding:2px 4px;border-radius:6px}.sign-studio .topbar-title input:focus{outline:none;background:var(--blue-soft)}.sign-studio .title-edit{color:var(--faint);padding:2px}.sign-studio .title-edit:hover{color:var(--blue)}.sign-studio .title-edit svg{width:13px;height:13px;display:block}.sign-studio .save-status{font-size:11px;color:var(--faint)}.sign-studio .save-status.saving{color:var(--blue)}.sign-studio .save-status.error{color:var(--red);font-weight:600}.sign-studio .canvas-area{flex:1;position:relative;background:var(--bg);overflow:hidden;min-width:0}.sign-studio .canvas-empty{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:center;padding:24px;pointer-events:none;-webkit-user-select:none;user-select:none}.sign-studio .canvas-empty-inner{text-align:center;max-width:320px}.sign-studio .canvas-empty-title{font-size:15px;font-weight:600;color:#667085;margin-bottom:5px}.sign-studio .canvas-empty-hint{font-size:13px;line-height:1.45;color:#98a2b3}.sign-studio .canvas-host{position:relative;width:100%;height:100%}.sign-studio .canvas-wrapper{width:100%;height:100%;line-height:0;overflow:hidden}.sign-studio .canvas-wrapper canvas{display:block}.sign-studio .canvas-placeholder{height:100%;display:flex;align-items:center;justify-content:center;color:var(--faint);font-size:14px}.sign-studio .ruler-top,.sign-studio .ruler-left,.sign-studio .ruler-corner{position:absolute;z-index:8;background:var(--surface);pointer-events:none}.sign-studio .ruler-top{top:0;left:24px;right:0;height:24px;border-bottom:1px solid var(--border)}.sign-studio .ruler-left{top:24px;left:0;bottom:0;width:24px;border-right:1px solid var(--border)}.sign-studio .ruler-corner{top:0;left:0;width:24px;height:24px;border-right:1px solid var(--border);border-bottom:1px solid var(--border);color:var(--faint);font-size:9px;display:flex;align-items:center;justify-content:center}.sign-studio .zoom-toolbar{position:absolute;bottom:18px;right:18px;display:flex;align-items:center;gap:10px;z-index:13;-webkit-user-select:none;user-select:none}.sign-studio .zoom-pill,.sign-studio .zoom-square{display:flex;align-items:center;background:var(--surface);border:1px solid var(--border);border-radius:12px;box-shadow:var(--shadow-card);overflow:hidden}.sign-studio .zoom-pill button,.sign-studio .zoom-pill .zoom-pct,.sign-studio .zoom-square button{padding:9px 13px;font-size:14px;color:var(--text);font-variant-numeric:tabular-nums}.sign-studio .zoom-pill .zoom-pct{font-size:12.5px;min-width:58px;text-align:center;border-left:1px solid var(--border);border-right:1px solid var(--border)}.sign-studio .zoom-pill button:hover,.sign-studio .zoom-square button:hover{background:var(--bg)}.sign-studio .zoom-square button svg{width:16px;height:16px;display:block}.sign-studio .panel{width:400px;flex-shrink:0;background:var(--surface);border-left:1px solid var(--border);display:flex;flex-direction:column;overflow:hidden}.sign-studio .panel-scroll{flex:1;min-height:0;overflow-y:auto;overflow-x:hidden}.sign-studio .export-footer{flex-shrink:0;padding:12px 16px;border-top:1px solid var(--border);background:var(--surface)}.sign-studio .panel-resizer{width:6px;margin-right:-6px;flex-shrink:0;cursor:col-resize;z-index:12;touch-action:none}.sign-studio .panel-resizer:hover,.sign-studio .panel-resizer:active{background:#2f7cf659}.sign-studio .panel-section{border-bottom:1px solid var(--border);padding:0 16px}.sign-studio .panel-section>header{display:flex;align-items:center;justify-content:space-between;padding:13px 0;cursor:pointer;-webkit-user-select:none;user-select:none}.sign-studio .panel-section>header h3{font-size:11.5px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--text);display:flex;align-items:center;gap:6px}.sign-studio .info-dot{color:var(--faint);font-size:12px;font-weight:400;cursor:help}.sign-studio .panel-section>header .chevron{color:var(--faint);font-size:12px;transition:transform .15s}.sign-studio .panel-section.open>header .chevron{transform:rotate(180deg)}.sign-studio .panel-section>header .section-header-right{display:flex;align-items:center;gap:8px}.sign-studio .section-action{display:inline-flex}.sign-studio .section-upload-btn{display:inline-flex;align-items:center;justify-content:center;width:26px;height:22px;padding:0;border:1px solid var(--border-strong);border-radius:6px;background:transparent;color:var(--muted);cursor:pointer;transition:border-color .15s,color .15s}.sign-studio .section-upload-btn:hover{border-color:#2f6bff;color:#2f6bff}.sign-studio .section-upload-btn svg{width:15px;height:15px;display:block}.sign-studio .shape-tile-art{display:flex;align-items:center;justify-content:center;color:var(--text)}.sign-studio .section-body{padding:2px 0 16px;display:flex;flex-direction:column;gap:12px}.sign-studio .field label,.sign-studio .field-label{display:flex;justify-content:space-between;align-items:baseline;font-size:12.5px;color:var(--text);font-weight:500;margin-bottom:6px}.sign-studio .field-label .hint{font-size:11px;color:var(--faint);font-weight:400}.sign-studio .field input[type=text],.sign-studio .field input[type=number],.sign-studio .field select,.sign-studio .field textarea{width:100%;padding:9px 11px;border:1px solid var(--border-strong);border-radius:var(--radius-sm);background:var(--surface);color:var(--text);font-size:13px}.sign-studio .field textarea{resize:vertical;min-height:58px}.sign-studio .field input:focus,.sign-studio .field select:focus,.sign-studio .field textarea:focus{outline:none;border-color:var(--blue);box-shadow:0 0 0 3px #2f7cf626}.sign-studio .char-count{text-align:right;font-size:11px;color:var(--faint);margin-top:4px}.sign-studio .field-note{font-size:11px;color:var(--faint);line-height:1.45;margin-top:6px}.sign-studio .slider-row{display:flex;align-items:center;gap:8px}.sign-studio .slider-row .bound{font-size:10.5px;color:var(--faint);white-space:nowrap;font-variant-numeric:tabular-nums}.sign-studio .slider-row input[type=range]{flex:1;min-width:0;height:18px}.sign-studio .slider-reset{flex:0 0 auto;width:20px;height:20px;line-height:1;font-size:13px;padding:0;border:1px solid var(--border);border-radius:6px;color:var(--muted);background:var(--surface);cursor:pointer}.sign-studio .slider-reset:hover:not(:disabled){border-color:var(--blue);color:var(--blue-strong);background:var(--blue-soft)}.sign-studio .slider-reset:disabled{opacity:.3;cursor:default}.sign-studio .value-box{display:flex;align-items:center;gap:4px;border:1px solid var(--border-strong);border-radius:7px;padding:4px 7px;flex-shrink:0}.sign-studio .value-box input{width:38px;border:none;font-size:12px;text-align:right;color:var(--text);font-variant-numeric:tabular-nums;-moz-appearance:textfield;background:transparent}.sign-studio .value-box input::-webkit-outer-spin-button,.sign-studio .value-box input::-webkit-inner-spin-button{-webkit-appearance:none}.sign-studio .value-box input:focus{outline:none}.sign-studio .value-box .unit{font-size:11px;color:var(--faint)}.sign-studio .segmented{display:flex;background:var(--bg);border:1px solid var(--border);border-radius:var(--radius-sm);padding:3px;gap:3px}.sign-studio .segmented button{flex:1;padding:7px 6px;border-radius:6px;font-size:12px;font-weight:600;color:var(--muted)}.sign-studio .segmented button:hover{color:var(--text)}.sign-studio .segmented button.active{background:var(--blue);color:#fff;box-shadow:0 1px 3px #1f66e066}.sign-studio .style-options{display:flex;gap:8px}.sign-studio .style-options button{flex:1;display:flex;align-items:center;justify-content:center;gap:8px;padding:9px 8px;border:1px solid var(--border-strong);border-radius:var(--radius-sm);font-size:12.5px;font-weight:600;color:var(--muted)}.sign-studio .style-options button.active{background:var(--blue);border-color:var(--blue);color:#fff}.sign-studio .style-line{width:34px;height:0;border-top:2.5px solid currentColor}.sign-studio .style-line.dashed{border-top-style:dashed}.sign-studio .swatch-strip{display:block}.sign-studio .swatch-scroll{display:flex;flex-wrap:wrap;gap:8px;padding:2px;max-height:176px;overflow-y:auto;overflow-x:hidden}.sign-studio .swatch{width:52px;height:52px;flex-shrink:0;border:2px solid var(--border);border-radius:9px;overflow:hidden;background:#fff;padding:0;position:relative;cursor:pointer}.sign-studio .swatch:hover{border-color:var(--border-strong)}.sign-studio .swatch.selected{border-color:var(--blue);box-shadow:0 0 0 3px #2f7cf62e}.sign-studio .swatch-disabled{opacity:.5;cursor:default}.sign-studio .swatch-shape{display:flex;align-items:center;justify-content:center;color:#2b3038}.sign-studio .swatch-shape:hover{color:#2f6bff;border-color:#2f6bff}.sign-studio .swatch-fav{position:absolute;right:2px;bottom:2px;z-index:2;width:18px;height:18px;padding:0;border:none;border-radius:5px;background:#00000080;color:#fff;font-size:12px;line-height:1;display:flex;align-items:center;justify-content:center;cursor:pointer;opacity:0;transition:opacity .1s ease,color .1s ease,background .1s ease;box-shadow:0 1px 3px #141c2d59}.sign-studio .swatch:hover .swatch-fav{opacity:1}.sign-studio .swatch-fav:hover{color:#f5a623;background:#0000009e}.sign-studio .swatch-fav.active{opacity:1;color:#f5a623}.sign-studio .swatch-edit{position:absolute;left:2px;bottom:2px;z-index:2;width:18px;height:18px;padding:0;border:none;border-radius:5px;background:#00000080;color:#fff;display:flex;align-items:center;justify-content:center;cursor:pointer;opacity:0;transition:opacity .1s ease,color .1s ease,background .1s ease;box-shadow:0 1px 3px #141c2d59}.sign-studio .swatch-edit svg{width:12px;height:12px}.sign-studio .swatch:hover .swatch-edit{opacity:1}.sign-studio .swatch-edit:hover{color:#7fb0ff;background:#0000009e}.sign-studio .pattern-grid-scroll{max-height:240px;overflow-y:auto}.sign-studio .swatch canvas,.sign-studio .swatch img{width:100%;height:100%;object-fit:cover;display:block}.sign-studio .pattern-controls{display:flex;gap:14px;align-items:stretch}.sign-studio .pattern-controls .col-dial{flex-shrink:0;display:flex;flex-direction:column;gap:4px}.sign-studio .pattern-controls .col{flex:1;min-width:0;display:flex;flex-direction:column;gap:4px}.sign-studio .pattern-controls .col .pattern-preview{flex:none;width:100%}.sign-studio .pattern-preview.pattern-preview-scroll{overflow-y:auto;overflow-x:hidden}.sign-studio .angle-dial{position:relative;width:108px;height:108px;margin:2px auto 0;-webkit-user-select:none;user-select:none;touch-action:none}.sign-studio .angle-dial svg{display:block}.sign-studio .pattern-preview{width:100%;height:46px;border:1px solid var(--border);border-radius:var(--radius-sm);overflow:hidden;background:#fff}.sign-studio .pattern-preview canvas{width:100%;height:100%;display:block}.sign-studio .upload-buttons{display:flex;gap:10px}.sign-studio .upload-buttons button{flex:1;display:flex;align-items:center;justify-content:center;gap:8px;padding:12px 8px;border:1.5px solid var(--blue);border-radius:var(--radius);color:var(--blue);font-weight:600;font-size:13px;background:var(--surface)}.sign-studio .upload-buttons button:hover{background:var(--blue-soft)}.sign-studio .upload-buttons svg{width:17px;height:17px}.sign-studio .btn-primary{background:var(--blue);color:#fff;padding:9px 14px;border-radius:var(--radius-sm);font-weight:600}.sign-studio .btn-primary:hover{background:var(--blue-strong)}.sign-studio .btn-secondary{background:var(--bg);color:var(--text);border:1px solid var(--border-strong);padding:8px 12px;border-radius:var(--radius-sm);font-weight:500}.sign-studio .btn-secondary:hover{background:var(--border)}.sign-studio .btn-danger{background:var(--red);color:#fff;padding:8px 12px;border-radius:var(--radius-sm);font-weight:600}.sign-studio .btn-danger:hover{background:#c93a4e}.sign-studio .btn-export{width:100%;display:flex;align-items:center;justify-content:center;gap:9px;background:var(--green);color:#fff;font-size:14.5px;font-weight:700;padding:13px;border-radius:var(--radius);box-shadow:0 3px 10px #1fc05f59}.sign-studio .btn-export:hover{background:var(--green-strong)}.sign-studio .btn-export svg{width:17px;height:17px}.sign-studio .btn-save-preset{width:100%;display:flex;align-items:center;justify-content:center;gap:8px;margin-top:8px;background:var(--surface);color:var(--text);border:1px solid var(--border);font-size:13.5px;font-weight:600;padding:10px;border-radius:var(--radius)}.sign-studio .btn-save-preset:hover:not(:disabled){background:var(--bg);border-color:var(--muted)}.sign-studio .btn-save-preset:disabled{opacity:.55;cursor:default}.sign-studio .link-btn{background:none;border:none;padding:0;color:var(--green-strong, #159a4b);font-size:12px;font-weight:600;cursor:pointer}.sign-studio .link-btn:hover{text-decoration:underline}.sign-studio .font-dd{position:relative}.sign-studio .font-dd-btn{width:100%;display:flex;align-items:center;justify-content:space-between;gap:8px;padding:10px 12px;border:1px solid var(--border);border-radius:var(--radius-sm);background:#fff;font-size:14px;text-align:left}.sign-studio .font-dd-btn:disabled{opacity:.55}.sign-studio .font-dd-current{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:16px}.sign-studio .font-dd-chevron{color:#667085;flex-shrink:0}.sign-studio .font-dd-list{position:absolute;z-index:40;top:calc(100% + 4px);left:0;right:0;max-height:340px;overflow-y:auto;background:#fff;border:1px solid var(--border);border-radius:var(--radius-sm);box-shadow:0 10px 28px #1018282e;padding:4px}.sign-studio .font-dd-item{display:block;width:100%;text-align:left;padding:7px 9px;border-radius:7px}.sign-studio .font-dd-item:hover{background:#f1f5fb}.sign-studio .font-dd-item.selected{background:#e8f0fe}.sign-studio .font-dd-name{display:block;font-size:11px;color:#667085}.sign-studio .font-dd-name em{font-style:normal;color:#98a2b3}.sign-studio .font-dd-sample{display:block;font-size:21px;line-height:1.25;color:var(--ink, #1d2433);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.sign-studio .font-row-info{min-width:0;display:flex;flex-direction:column;gap:2px}.sign-studio .font-row-name{font-size:12px}.sign-studio .item-row .font-row-sample,.sign-studio .font-row-sample{font-size:25px;line-height:1.25;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.sign-studio .btn-icon-trash{flex-shrink:0;display:inline-flex;align-items:center;justify-content:center;width:30px;height:30px;border-radius:7px;border:1px solid var(--border);background:transparent;color:#98a2b3;transition:background .12s,color .12s,border-color .12s}.sign-studio .btn-icon-trash svg{width:15px;height:15px}.sign-studio .btn-icon-trash:hover{background:#e94560;border-color:#e94560;color:#fff}.sign-studio .pattern-tile-delete{align-self:flex-end}.sign-studio .pattern-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:12px;max-height:380px;overflow-y:auto;padding:2px}.sign-studio .pattern-tile{border:1px solid var(--border);border-radius:var(--radius-sm);padding:10px;display:flex;flex-direction:column;gap:8px}.sign-studio .pattern-tile-art{height:96px;display:flex;align-items:center;justify-content:center;background:#fafbfd;border-radius:7px;overflow:hidden}.sign-studio .pattern-tile-art img{max-width:88%;max-height:88%;object-fit:contain}.sign-studio .pattern-tile-meta{display:flex;flex-direction:column;min-width:0}.sign-studio .pattern-tile-name{font-size:12px;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.sign-studio .pattern-tile-dims{font-size:11px;color:#98a2b3}.sign-studio .pattern-manager-head{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:8px}.sign-studio .pattern-manager-actions{display:flex;gap:6px}.sign-studio .btn-mini{font-size:11px;font-weight:600;padding:5px 10px;border-radius:7px;border:1px solid var(--border);background:transparent;color:#475467;cursor:pointer;transition:background .12s,border-color .12s,color .12s}.sign-studio .btn-mini:hover:not(:disabled){border-color:#2f6bff;color:#2f6bff}.sign-studio .btn-mini:disabled{opacity:.5;cursor:default}.sign-studio .pattern-tile-actions{display:flex;justify-content:flex-end;gap:6px;margin-top:auto}.sign-studio .btn-icon-export:hover{background:#2f6bff;border-color:#2f6bff;color:#fff}.sign-studio .btn-icon-edit:hover:not(:disabled){background:#12b76a;border-color:#12b76a;color:#fff}.sign-studio .btn-icon-edit:disabled{opacity:.45;cursor:default}.sign-studio .density-warning{display:flex;align-items:flex-start;gap:8px;margin:10px 0;padding:9px 11px;border-radius:var(--radius-sm);background:#fdf3e7;border:1px solid #f0d5b0;color:#8a5a1d;font-size:12px;line-height:1.45}.sign-studio .density-warning button{flex-shrink:0;color:#8a5a1d;font-size:12px;line-height:1;padding:2px}.sign-studio .export-status{padding:10px 12px;border-radius:var(--radius-sm);font-size:12.5px;line-height:1.45}.sign-studio .export-status.success{background:#e9f9ef;color:#14743c;border:1px solid #bfe9cf}.sign-studio .export-status.error{background:#fdecee;color:#a02535;border:1px solid #f5c6cd}.sign-studio .export-status a{color:var(--blue);font-weight:600}.sign-studio .warning{color:#b45309;font-size:12px;margin-top:4px}.sign-studio .modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#0f142073;display:flex;align-items:center;justify-content:center;z-index:100}.sign-studio .modal{background:var(--surface);border-radius:16px;padding:24px;min-width:420px;max-width:90vw;max-height:80vh;overflow-y:auto;box-shadow:var(--shadow-float)}.sign-studio .modal h2{margin-bottom:16px;font-size:17px;color:var(--text)}.sign-studio .modal-actions{display:flex;gap:8px;justify-content:flex-end;margin-top:16px}.sign-studio .item-list{display:flex;flex-direction:column;gap:8px}.sign-studio .item-row{display:flex;align-items:center;justify-content:space-between;padding:9px 12px;background:var(--bg);border:1px solid var(--border);border-radius:var(--radius-sm)}.sign-studio .item-row span{font-size:13px;color:var(--text)}.sign-studio .field-cols{display:flex;gap:10px}.sign-studio .field-cols .field{flex:1;min-width:0}.sign-studio .lazy-thumb{position:relative;display:flex;align-items:center;justify-content:center;width:100%;height:100%;overflow:hidden}.sign-studio .lazy-thumb:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;z-index:0;background:linear-gradient(100deg,#eceff3 30%,#f6f8fa,#eceff3 70%);background-size:200% 100%;animation:sign-lazy-shimmer 1.2s ease-in-out infinite}.sign-studio .lazy-thumb.is-loaded:before{content:none}.sign-studio .lazy-thumb img{position:relative;z-index:1;opacity:0;transition:opacity .28s ease}.sign-studio .lazy-thumb.is-loaded img{opacity:1}@keyframes sign-lazy-shimmer{0%{background-position:200% 0}to{background-position:-200% 0}}.sign-studio .font-dd-sample{transition:opacity .25s ease}.sign-studio .font-dd-sample:not(.is-loaded){opacity:.4}.sign-studio .font-dd-sample.is-loaded{opacity:1}.sign-customizer{display:flex;flex-direction:column;gap:14px;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,system-ui,sans-serif}.sign-customizer,.sign-customizer *{box-sizing:border-box}.sign-customizer .sc-stage{position:relative;min-height:220px;display:flex;align-items:center;justify-content:center;background:#fff;border:1px solid #e3e6ea;border-radius:10px;padding:18px}.sign-customizer .sc-art{width:100%;max-width:640px}.sign-customizer .sc-art svg{width:100%;height:auto;display:block}.sign-customizer .sc-empty{color:#8a93a3;font-size:14px}.sign-customizer .sc-error{color:#b3372b;font-size:14px;padding:12px}.sign-customizer .sc-dims{position:absolute;right:10px;bottom:8px;font-size:11px;color:#8a93a3;font-variant-numeric:tabular-nums}.sign-customizer .sc-spinner{position:absolute;top:10px;right:10px;width:14px;height:14px;border:2px solid #d6dbe2;border-top-color:#5b6b82;border-radius:50%;animation:sign-sc-spin .8s linear infinite}@keyframes sign-sc-spin{to{transform:rotate(360deg)}}.sign-customizer .sc-controls{display:flex;flex-direction:column;gap:12px}.sign-customizer .sc-field{display:flex;flex-direction:column;gap:6px}.sign-customizer .sc-label{font-size:12px;font-weight:600;letter-spacing:.02em;color:#4a5261;text-transform:uppercase}.sign-customizer .sc-field input{border:1px solid #cfd5dd;border-radius:8px;padding:10px 12px;font-size:16px;font-family:inherit}.sign-customizer .sc-field input:focus{outline:2px solid #2f6bff33;border-color:#2f6bff}.sign-customizer .sc-materials{display:flex;gap:8px;flex-wrap:wrap}.sign-customizer .sc-materials button{border:1px solid #cfd5dd;background:#fff;border-radius:999px;padding:6px 14px;font-size:13px;cursor:pointer;font-family:inherit}.sign-customizer .sc-materials button.active{background:#1c2430;color:#fff;border-color:#1c2430}.sign-customizer .sc-swatches{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.sign-customizer .sc-swatch-label{font-size:11px;color:#6b7480;text-transform:uppercase;letter-spacing:.04em}.sign-customizer .sc-swatch{width:26px;height:26px;border-radius:50%;border:2px solid #fff;box-shadow:0 0 0 1px #cfd5dd;cursor:pointer;padding:0}.sign-customizer .sc-swatch.active{box-shadow:0 0 0 2px #2f6bff}.sign-studio .swatch-fill .lazy-thumb img{object-fit:cover}.sign-studio .swatch-none{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;font-size:10px;line-height:1}.sign-studio .fill-head{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:6px}.sign-studio .fill-current{font-size:11px;color:#6b7480;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.sign-studio .fill-tile-art{padding:0}.sign-studio .fill-tile-art .lazy-thumb{width:100%;height:100%}.sign-studio .fill-tile-art img{width:100%;height:100%;max-width:100%;max-height:100%;object-fit:cover}.sign-studio .fill-tile-name-input{font:inherit;font-size:12px;font-weight:600;width:100%;padding:2px 4px;border:1px solid var(--blue);border-radius:4px}.sign-studio .fill-tile-shop{display:flex;align-items:center;gap:6px;margin-top:4px;font-size:11px;color:#475467;cursor:pointer}.sign-studio .fill-tile-shop input{margin:0}.sign-studio .fill-tile-families{display:flex;align-items:center;flex-wrap:wrap;gap:4px 10px;margin-top:3px;padding-left:18px;font-size:11px;color:#667085}.sign-studio .fill-tile-families-label{color:#98a2b3}.sign-studio .fill-tile-family{display:inline-flex;align-items:center;gap:4px;cursor:pointer}.sign-studio .fill-tile-family input{margin:0}.sign-studio .bridge-help{font-size:12px;color:var(--muted);margin:0 0 10px;line-height:1.4}.sign-studio .bridge-actions{display:flex;gap:6px;margin-bottom:8px}.sign-studio .bridge-btn{flex:1;padding:7px 6px;border:1px solid var(--border);border-radius:6px;background:#fff;font-size:12px;font-weight:600;color:var(--text);cursor:pointer}.sign-studio .bridge-btn:hover:not(:disabled){border-color:var(--blue);color:var(--blue)}.sign-studio .bridge-btn:disabled{opacity:.5;cursor:default}.sign-studio .bridge-error{font-size:12px;color:var(--red);margin:2px 0 8px}.sign-studio .bridge-empty{font-size:12px;color:var(--muted);margin:2px 0}.sign-studio .bridge-list{list-style:none;margin:8px 0 0;padding:0;display:flex;flex-direction:column;gap:6px}.sign-studio .bridge-row{border:1px solid var(--border);border-radius:8px;padding:8px 10px}.sign-studio .bridge-row.is-disabled{opacity:.55}.sign-studio .bridge-row-head{display:flex;align-items:center;justify-content:space-between}.sign-studio .bridge-toggle{display:flex;align-items:center;gap:7px;font-size:12px;font-weight:600;color:var(--text);cursor:pointer}.sign-studio .bridge-label{text-transform:capitalize}.sign-studio .bridge-remove{border:none;background:none;color:var(--muted);font-size:18px;line-height:1;cursor:pointer;padding:0 2px}.sign-studio .bridge-remove:hover{color:var(--red)}.sign-studio .bridge-thickness{display:flex;align-items:center;gap:8px;margin-top:6px;font-size:11px;color:var(--muted)}.sign-studio .bridge-thickness input[type=range]{flex:1}.sign-studio .bridge-thickness-val{font-variant-numeric:tabular-nums;min-width:52px;text-align:right}.sign-studio .layers-panel{position:absolute;bottom:18px;right:18px;z-index:12;width:270px;max-height:calc(100% - 96px);display:flex;flex-direction:column;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow-float);overflow:hidden;-webkit-user-select:none;user-select:none;font-size:12px}.sign-studio .layers-panel--collapsed{width:auto}.sign-studio .layers-toggle{display:flex;align-items:center;gap:7px;width:100%;padding:9px 12px;font-weight:600;color:var(--text);background:var(--surface)}.sign-studio .layers-chevron{color:var(--muted);font-size:11px}.sign-studio .layers-count{margin-left:auto;color:var(--muted);font-weight:500;background:var(--bg);border-radius:10px;padding:0 8px}.sign-studio .layers-list{overflow-y:auto;border-top:1px solid var(--border);padding:4px;display:flex;flex-direction:column;gap:2px}.sign-studio .layer-row{border-radius:var(--radius-sm);padding:1px}.sign-studio .layer-row.is-selected{background:var(--blue-soft)}.sign-studio .layer-main{display:flex;align-items:center;gap:6px;padding:3px 4px}.sign-studio .layer-check{flex:0 0 auto}.sign-studio .layer-name{display:flex;align-items:center;gap:6px;flex:1 1 auto;min-width:0;text-align:left;padding:2px;color:var(--text);border-radius:6px}.sign-studio .layer-name:hover{background:var(--bg)}.sign-studio .layer-kind{flex:0 0 auto;width:16px;height:16px;display:grid;place-items:center;font-size:10px;color:var(--muted);border:1px solid var(--border-strong);border-radius:4px}.sign-studio .layer-label{flex:1 1 auto;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;text-transform:capitalize}.sign-studio .layer-grouptag{flex:0 0 auto;font-size:10px;padding:1px 6px;border-radius:8px;font-weight:600}.sign-studio .layer-actions{display:flex;align-items:center;gap:0;flex:0 0 auto}.sign-studio .layer-icon{width:21px;height:21px;display:grid;place-items:center;color:var(--faint);border-radius:5px;font-size:10px}.sign-studio .layer-icon:hover:not(:disabled){background:var(--bg);color:var(--text)}.sign-studio .layer-icon.is-on{color:var(--blue)}.sign-studio .layer-icon.layer-del:hover:not(:disabled){color:var(--red)}.sign-studio .layer-sub{padding:0 6px 5px 30px}.sign-studio .role-seg{display:inline-flex;border:1px solid var(--border-strong);border-radius:6px;overflow:hidden}.sign-studio .role-btn{padding:2px 9px;font-size:11px;color:var(--muted);background:var(--surface);border-right:1px solid var(--border-strong)}.sign-studio .role-btn:last-child{border-right:none}.sign-studio .role-btn.is-active{background:var(--blue);color:#fff}.sign-studio .layer-bridges{display:flex;align-items:center;gap:10px;font-size:11px;color:var(--muted);margin-top:4px}.sign-studio .bridge-auto{display:flex;align-items:center;gap:5px}.sign-studio .bridge-scale{display:flex;align-items:center;gap:6px;flex:1 1 auto}.sign-studio .bridge-scale input[type=range]{flex:1 1 auto;height:20px}.sign-studio .bridge-scale-val{flex:0 0 auto;width:26px;text-align:right}.sign-studio .layers-foot{border-top:1px solid var(--border);padding:8px;display:flex;flex-direction:column;gap:8px}.sign-studio .layers-group-btn{align-self:flex-start;padding:5px 12px;border-radius:7px;background:var(--blue);color:#fff;font-weight:600}.sign-studio .layers-group-btn:disabled{background:var(--border-strong);color:var(--faint)}.sign-studio .layers-groups{display:flex;flex-wrap:wrap;gap:6px}.sign-studio .group-chip{display:inline-flex;align-items:center;gap:5px;border:1px solid var(--border-strong);border-radius:8px;padding:2px 4px 2px 8px;background:var(--surface)}.sign-studio .group-chip-name{border:none;background:transparent;font-size:11px;color:var(--text);font-weight:600;padding:0}.sign-studio .group-chip-name:focus{outline:1px solid var(--blue);border-radius:3px}.sign-studio .group-chip-n{font-size:10px;color:var(--muted);background:var(--bg);border-radius:8px;padding:0 5px}.sign-studio .group-chip-x{width:16px;height:16px;display:grid;place-items:center;color:var(--faint);font-size:9px;border-radius:4px}.sign-studio .group-chip-x:hover{color:var(--red)}.sign-studio .zoom-toolbar.zoom-toolbar--left{left:18px;right:auto}
