:root{--bg: #f7f5f1;--panel: #ffffff;--ink: #1c1b1a;--muted: #6a665f;--line: #d6d2cb;--accent: #3e63dd;--accent-soft: #e3eafd;--danger: #c8392f}*{box-sizing:border-box}html,body,#root{margin:0;height:100%;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,system-ui,sans-serif;font-size:14px;color:var(--ink);background:var(--bg)}button{font:inherit;color:inherit;background:var(--panel);border:1px solid var(--line);border-radius:6px;padding:6px 12px;cursor:pointer;transition:background 80ms ease,border-color 80ms ease}button:hover{background:var(--accent-soft);border-color:var(--accent)}button.primary{background:var(--accent);color:#fff;border-color:var(--accent)}button.primary:hover{background:#2f54cd}button.subtle{background:transparent;border-color:transparent;padding:4px 8px}button:disabled{opacity:.4;cursor:not-allowed}input,select{font:inherit;color:inherit;background:var(--panel);border:1px solid var(--line);border-radius:6px;padding:4px 8px}.app{display:grid;grid-template-columns:1fr 320px;grid-template-rows:56px 1fr;grid-template-areas:"toolbar toolbar" "canvas inspector";height:100vh;overflow:hidden}.toolbar{grid-area:toolbar;display:flex;align-items:center;gap:8px;padding:0 14px;background:var(--panel);border-bottom:1px solid var(--line);flex-wrap:nowrap}.toolbar h1{font-size:15px;margin:0;font-weight:600;letter-spacing:.2px}.brand{display:inline-flex;align-items:center;gap:8px;margin-right:4px}.polyquilt-logo{display:block;flex-shrink:0}.polyquilt-logo .logo-wedge{transform-origin:295px 541px;transition:transform .24s ease}.brand:hover .polyquilt-logo .logo-wedge-2{transform:rotate(-3deg)}.brand:hover .polyquilt-logo .logo-wedge-3{transform:rotate(-6deg)}.brand:hover .polyquilt-logo .logo-wedge-4{transform:rotate(3deg)}.brand:hover .polyquilt-logo .logo-wedge-5{transform:rotate(6deg)}.toolbar .spacer{flex:1}.toolbar-divider{width:1px;height:22px;background:var(--line);margin:0 2px}.icon-btn{display:inline-flex;align-items:center;gap:6px;padding:6px 10px}.icon-btn.ghost{border-color:transparent;background:transparent;padding:6px;color:var(--muted)}.icon-btn.ghost:hover{background:var(--accent-soft);color:var(--accent)}.btn-content{display:inline-flex;align-items:center;gap:6px}.popover-root{position:relative;display:inline-flex}.popover-trigger{display:inline-flex;align-items:center;gap:6px;padding:6px 10px;color:inherit;background:var(--panel);border:1px solid var(--line);border-radius:6px;cursor:pointer;font:inherit;white-space:nowrap}.popover-trigger:hover{background:var(--accent-soft);border-color:var(--accent)}.popover-trigger.open{background:var(--accent-soft);border-color:var(--accent);color:var(--accent)}.popover-trigger:disabled{opacity:.4;cursor:not-allowed;background:var(--panel);border-color:var(--line);color:inherit}.popover-label{display:inline-flex;align-items:center;gap:6px}.popover-panel{position:absolute;top:calc(100% + 6px);background:var(--panel);border:1px solid var(--line);border-radius:12px;box-shadow:0 6px 24px #00000014;padding:18px 20px;min-width:280px;z-index:10;max-height:calc(100vh - 80px);overflow-y:auto;scrollbar-gutter:stable}.popover-panel::-webkit-scrollbar{width:10px}.popover-panel::-webkit-scrollbar-track{background:transparent}.popover-panel::-webkit-scrollbar-thumb{background:var(--line);border-radius:5px;border:2px solid var(--panel);background-clip:padding-box}.popover-panel::-webkit-scrollbar-thumb:hover{background:var(--muted);background-clip:padding-box;border:2px solid var(--panel)}.popover-panel.align-left{left:0}.popover-panel.align-right{right:0}.popover-content{display:flex;flex-direction:column;gap:16px}.popover-content .hint{font-size:11.5px;line-height:1.45;color:var(--muted);margin:2px 0 0}.popover-heading{font-weight:600;font-size:11px;letter-spacing:.08em;text-transform:uppercase;color:var(--muted);margin-bottom:-4px}.popover-content.menu{padding:4px;gap:2px;min-width:280px}.popover-content .field{gap:8px}.popover-content .field>label{font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.06em;color:var(--muted);line-height:1.2}.popover-content .field-label-row{display:flex!important;justify-content:space-between;align-items:baseline}.popover-content .field-value{color:var(--ink);font-weight:500;font-variant-numeric:tabular-nums;font-size:12px;letter-spacing:0;text-transform:none}.popover-content .checkbox-row{display:inline-flex;align-items:center;gap:6px;cursor:pointer;font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.06em;color:var(--muted);-webkit-user-select:none;user-select:none}.popover-content .checkbox-row input[type=checkbox]{width:14px;height:14px;accent-color:var(--accent);cursor:pointer}.popover-content label.toggle-row{display:flex;align-items:center;gap:8px;cursor:pointer;font-size:13px;font-weight:500;color:var(--ink);text-transform:none;letter-spacing:0;-webkit-user-select:none;user-select:none}.popover-content label.toggle-row input[type=checkbox]{width:16px;height:16px;accent-color:var(--accent);cursor:pointer}.popover-content input[type=range]{-webkit-appearance:none;-moz-appearance:none;appearance:none;width:100%;background:transparent;height:18px;margin:0;cursor:pointer}.popover-content input[type=range]:disabled{opacity:.4;cursor:not-allowed}.popover-content input[type=range]::-webkit-slider-runnable-track{height:4px;background:var(--line);border-radius:2px}.popover-content input[type=range]::-moz-range-track{height:4px;background:var(--line);border-radius:2px}.popover-content input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;width:16px;height:16px;background:#fff;border:2px solid var(--accent);border-radius:50%;margin-top:-6px;box-shadow:0 1px 3px #00000026;transition:transform 80ms ease,box-shadow 80ms ease}.popover-content input[type=range]::-moz-range-thumb{width:16px;height:16px;background:#fff;border:2px solid var(--accent);border-radius:50%;box-shadow:0 1px 3px #00000026;transition:transform 80ms ease,box-shadow 80ms ease}.popover-content input[type=range]:hover::-webkit-slider-thumb{transform:scale(1.1);box-shadow:0 2px 6px #3e63dd59}.popover-content input[type=range]:hover::-moz-range-thumb{transform:scale(1.1);box-shadow:0 2px 6px #3e63dd59}.popover-content input[type=number],.popover-content input[type=text]{height:32px;border-radius:8px;font-size:13px;padding:6px 10px;transition:border-color 80ms ease,box-shadow 80ms ease}.popover-content input[type=number]:focus,.popover-content input[type=text]:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}.project-list{display:flex;flex-direction:column;gap:2px;background:var(--bg);border-radius:8px;padding:4px;max-height:280px;overflow-y:auto}.project-row{display:flex;align-items:stretch;gap:2px;border-radius:6px}.project-row:hover{background:#00000008}.project-row.active{background:var(--accent-soft)}.project-row-open{flex:1;display:flex;align-items:baseline;justify-content:space-between;gap:8px;padding:8px 10px;background:transparent;border:none;border-radius:6px;cursor:pointer;text-align:left;font:inherit;color:inherit;min-width:0}.project-row.active .project-row-open{color:var(--accent);font-weight:500}.project-row-open .project-name{font-size:13px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0}.project-row-open .project-meta{font-size:11px;color:var(--muted);font-variant-numeric:tabular-nums;flex-shrink:0}.project-row-action{display:inline-flex;align-items:center;justify-content:center;width:28px;height:auto;padding:0;background:transparent;border:none;border-radius:6px;color:var(--muted);cursor:pointer;opacity:0;transition:opacity 80ms ease,background 80ms ease,color 80ms ease}.project-row:hover .project-row-action{opacity:1}.project-row-action:hover{background:#0000000f;color:var(--ink)}.project-row-action.danger:hover{background:#c8392f1a;color:var(--danger)}.popover-content button:not(.primary):not(.subtle):not(.segmented>*):not(.info-tip-trigger):not(.menu-item){border-radius:8px;height:32px;font-size:12px;background:var(--bg);border-color:transparent;font-weight:500}.popover-content button:not(.primary):not(.subtle):not(.segmented>*):not(.info-tip-trigger):not(.menu-item):hover{background:var(--accent-soft);color:var(--accent);border-color:transparent}.menu-item{display:flex;align-items:flex-start;gap:12px;padding:10px 12px;border:none;background:transparent;border-radius:8px;width:100%;text-align:left;cursor:pointer;color:inherit;font:inherit}.menu-item:hover{background:var(--accent-soft)}.menu-item span{display:flex;flex-direction:column;gap:2px;min-width:0;flex:1}.menu-item strong{font-weight:600;font-size:13px;line-height:1.2}.menu-item em{font-style:normal;font-size:11.5px;color:var(--muted);line-height:1.35}.menu-item svg{margin-top:3px;flex-shrink:0;color:var(--muted)}.canvas-wrap{grid-area:canvas;position:relative;overflow:hidden;background:radial-gradient(circle at 1px 1px,var(--line) 1px,transparent 0) 0 0 / 16px 16px;display:flex;align-items:center;justify-content:center;padding:24px}.loading-overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:#f7f5f1b3;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);display:flex;align-items:center;justify-content:center;z-index:5;pointer-events:all}.loading-card{background:var(--panel);border:1px solid var(--line);border-radius:10px;padding:20px 28px;min-width:240px;box-shadow:0 8px 24px #00000014;display:flex;flex-direction:column;align-items:center;gap:12px}.spinner{width:28px;height:28px;border-radius:50%;border:3px solid var(--accent-soft);border-top-color:var(--accent);animation:spin .85s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.btn-busy{display:inline-flex;align-items:center;gap:6px}.btn-spinner{width:12px;height:12px;border-radius:50%;border:2px solid rgba(255,255,255,.45);border-top-color:#fff;animation:spin .7s linear infinite;display:inline-block}button.primary:disabled{opacity:.85;cursor:progress}.loading-label{font-size:13px;color:var(--ink);text-align:center;min-height:18px}.loading-bar{width:100%;height:4px;background:var(--accent-soft);border-radius:2px;overflow:hidden}.loading-bar-fill{width:40%;height:100%;background:var(--accent);border-radius:2px;animation:loading-march 1.1s ease-in-out infinite}@keyframes loading-march{0%{transform:translate(-100%)}to{transform:translate(250%)}}.auto-slice-btn{position:relative;padding:9px 18px;font-size:14px;font-weight:600;letter-spacing:.01em;border-radius:10px;background:linear-gradient(180deg,#4d72e5 0%,var(--accent) 55%,#344fbc 100%);border:none;color:#fff;box-shadow:0 1px #ffffff2e inset,0 6px 16px -2px #3e63dd6b,0 2px 4px -1px #3e63dd59,0 1px 1px #0000000f;transition:transform .12s cubic-bezier(.2,.8,.2,1),box-shadow .2s ease,filter .12s ease;cursor:pointer}.auto-slice-btn:hover:not(:disabled){transform:translateY(-1px);filter:brightness(1.04);box-shadow:0 1px #fff3 inset,0 10px 22px -4px #3e63dd80,0 4px 8px -2px #3e63dd5c,0 1px 1px #0000000f}.auto-slice-btn:active:not(:disabled){transform:translateY(1px);filter:brightness(.96);box-shadow:0 1px #ffffff1f inset,0 2px 6px -1px #3e63dd59,0 1px 2px #00000014;transition-duration:60ms}.auto-slice-btn:focus-visible{outline:none;box-shadow:0 1px #ffffff2e inset,0 0 0 3px #3e63dd59,0 6px 16px -2px #3e63dd6b}.auto-slice-btn:disabled{cursor:not-allowed;filter:grayscale(.4) brightness(.95);box-shadow:0 1px 2px #0000000f;transform:none}.auto-slice-btn .btn-content{gap:8px}.auto-slice-btn .btn-content svg{width:14px;height:14px}.auto-slice-btn.dirty{animation:auto-slice-pulse 1.8s ease-in-out infinite}.auto-slice-btn.dirty:after{content:"";position:absolute;top:-4px;right:-4px;width:10px;height:10px;border-radius:50%;background:#ff7a3d;border:2px solid var(--panel);box-shadow:0 0 0 1px #00000014;pointer-events:none}@keyframes auto-slice-pulse{0%,to{box-shadow:0 1px #ffffff2e inset,0 6px 16px -2px #3e63dd6b,0 2px 4px -1px #3e63dd59,0 0 #3e63dd8c}50%{box-shadow:0 1px #ffffff2e inset,0 6px 16px -2px #3e63dd6b,0 2px 4px -1px #3e63dd59,0 0 0 8px #3e63dd00}}.canvas-wrap .empty{border:2px dashed var(--line);background:var(--panel);padding:40px 48px;border-radius:14px;text-align:center;color:var(--muted);max-width:460px;display:flex;flex-direction:column;align-items:center;gap:0}.canvas-wrap .empty.over{border-color:var(--accent);background:var(--accent-soft);color:var(--accent)}.canvas-wrap .empty .empty-title{display:block;font-size:16px;margin-bottom:4px;color:var(--ink)}.canvas-wrap .empty .empty-sub{font-size:13px}.canvas-wrap .empty .empty-divider{display:flex;align-items:center;gap:10px;width:100%;margin:22px 0 14px;font-size:11px;text-transform:uppercase;letter-spacing:.08em;color:var(--muted)}.canvas-wrap .empty .empty-divider:before,.canvas-wrap .empty .empty-divider:after{content:"";flex:1;height:1px;background:var(--line)}.canvas-wrap .empty .empty-samples{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;width:100%}.canvas-wrap .empty .sample-chip{display:flex;flex-direction:column;align-items:center;gap:8px;padding:14px 10px;background:var(--bg);border:1px solid var(--line);border-radius:10px;cursor:pointer;color:var(--ink);font-size:13px;font-weight:500;transition:background 80ms ease,border-color 80ms ease,transform 80ms ease}.canvas-wrap .empty .sample-chip:hover{background:var(--accent-soft);border-color:var(--accent);color:var(--accent);transform:translateY(-1px)}.canvas-wrap .empty .sample-chip:active{transform:translateY(0)}.canvas-wrap .empty .sample-thumb{width:64px;height:64px;object-fit:contain;display:block}.canvas-wrap .empty.over .sample-chip{opacity:.4;pointer-events:none}@media (max-width: 520px){.canvas-wrap .empty{padding:28px 24px;max-width:100%}.canvas-wrap .empty .empty-samples{grid-template-columns:repeat(3,1fr);gap:6px}.canvas-wrap .empty .sample-chip{padding:10px 6px;font-size:12px}.canvas-wrap .empty .sample-thumb{width:48px;height:48px}}.inspector{grid-area:inspector;background:var(--panel);border-left:1px solid var(--line);overflow:auto;padding:16px;display:flex;flex-direction:column;gap:16px}.section-list{display:flex;flex-direction:column;gap:4px;max-height:320px;overflow:auto;border:1px solid var(--line);border-radius:6px;padding:4px}.section-row{display:flex;align-items:center;gap:8px;padding:4px 6px;border-radius:4px;cursor:pointer}.section-row:hover,.section-row.active{background:var(--accent-soft)}.section-row .num{width:24px;text-align:right;color:var(--muted);font-variant-numeric:tabular-nums}.section-row .swatch{width:16px;height:16px;border-radius:3px;border:1px solid var(--line);flex-shrink:0}.section-row .label{flex:1}.section-row input[type=text]{width:100%;font-size:12px;padding:2px 4px}.field{display:flex;flex-direction:column;gap:4px;min-width:0}.field label{font-size:12px;color:var(--muted)}.field>input,.field>select{min-width:0;width:100%}.row{display:flex;gap:8px;align-items:center}.row>.field{flex:1 1 0;min-width:0}.canvas-stage{position:absolute;top:24px;right:24px;bottom:24px;left:24px;display:flex}.canvas-svg{background:#fff;box-shadow:0 1px 4px #00000014;display:block;width:100%;height:100%;touch-action:none}.canvas-svg.pan-ready{cursor:grab}.canvas-svg.panning{cursor:grabbing}.zoom-controls{position:absolute;right:16px;bottom:16px;display:flex;gap:4px;background:var(--panel);border:1px solid var(--line);border-radius:8px;padding:4px;box-shadow:0 2px 8px #0000000f;z-index:10;-webkit-user-select:none;user-select:none}.zoom-controls button{min-width:28px;height:28px;font-size:13px;line-height:1;font-variant-numeric:tabular-nums}.zoom-controls .zoom-fit{min-width:52px}.zoom-controls .tool-toggle{display:flex;gap:2px;padding-right:6px;margin-right:2px;border-right:1px solid var(--line)}.zoom-controls .tool-btn{display:inline-flex;align-items:center;justify-content:center;color:var(--muted)}.zoom-controls .tool-btn.active{background:var(--accent-soft);color:var(--accent)}.canvas-svg .cut-line,.canvas-svg .leaf-poly,.canvas-svg .design-stroke,.canvas-svg .block-frame,.canvas-svg .handle,.canvas-svg .rot-tether,.canvas-svg .design-bbox,.canvas-svg .add-cut-target,.canvas-svg .add-cut-preview,.canvas-svg .add-cut-anchor,.canvas-svg .add-cut-hover,.canvas-svg .section-number{vector-effect:non-scaling-stroke}.canvas-svg.mode-add-cut{cursor:crosshair}.add-cut-target{fill:#3e63dd14;stroke:var(--accent);stroke-width:1.5;stroke-dasharray:4 3}.add-cut-anchor{fill:var(--accent);stroke:#fff;stroke-width:2}.add-cut-hover{fill:#fff;stroke:var(--accent);stroke-width:2}.add-cut-preview{stroke:var(--accent);stroke-width:2;stroke-dasharray:5 4}.mode-banner{position:absolute;top:12px;left:50%;transform:translate(-50%);background:var(--panel);border:1px solid var(--accent);border-radius:8px;box-shadow:0 4px 12px #00000014;padding:8px 12px;display:flex;align-items:center;gap:12px;font-size:13px;z-index:20}.cut-line{stroke:#1c1b1a;stroke-width:1;fill:none;pointer-events:none}.cut-line.selected{stroke:var(--accent);stroke-width:2}.leaf-poly{stroke:var(--ink);stroke-width:1;cursor:pointer}.leaf-poly:hover{stroke-width:1.4}.leaf-poly.active{stroke:var(--accent);stroke-width:2}.design-stroke{fill:none;stroke:#3e63dd73;stroke-width:1.2;pointer-events:none}.block-frame{fill:#fff;stroke:var(--ink);stroke-width:1.5}.handle{fill:#fff;stroke:var(--accent);stroke-width:1.6}.handle:hover{fill:var(--accent-soft)}.rot-handle{stroke-width:1.8}.rot-tether{stroke:var(--accent);stroke-width:1;stroke-dasharray:2 2;pointer-events:none}.design-bbox{fill:transparent;stroke:var(--accent);stroke-width:1;stroke-dasharray:4 3;pointer-events:all}.design-bbox:hover{stroke-width:1.6}.section-number{fill:var(--ink);text-anchor:middle;dominant-baseline:middle;pointer-events:none;font-weight:600;paint-order:stroke;stroke:#ffffffe6;stroke-width:3;stroke-linejoin:round}details{border:1px solid var(--line);border-radius:6px;padding:8px 10px}details summary{cursor:pointer;font-weight:500}details>*+*{margin-top:8px}.banner{display:flex;align-items:center;gap:8px;font-size:12px;background:var(--accent-soft);color:var(--accent);border-radius:4px;padding:4px 6px}.context-menu{position:fixed;z-index:100;background:var(--panel);border:1px solid var(--line);border-radius:8px;box-shadow:0 8px 24px #0000001f;padding:4px;min-width:200px;max-width:280px;-webkit-user-select:none;user-select:none}.context-menu-header{font-size:11px;color:var(--muted);padding:6px 10px 4px;border-bottom:1px solid var(--line);margin-bottom:4px}.context-menu-item{display:flex;flex-direction:column;align-items:flex-start;width:100%;background:transparent;border:none;border-radius:4px;padding:6px 10px;text-align:left;cursor:pointer;color:var(--ink);font:inherit}.context-menu-item:hover:not(:disabled){background:var(--accent-soft)}.context-menu-item:disabled{color:var(--muted);cursor:not-allowed;opacity:.5}.context-menu-item.danger:hover:not(:disabled){background:#c8392f1a;color:var(--danger)}.context-menu-label{font-size:13px;line-height:1.2}.context-menu-description{font-size:11px;color:var(--muted);margin-top:2px;line-height:1.3}.segmented{display:inline-flex;background:var(--bg);border:none;border-radius:999px;padding:3px;width:100%;gap:0}.segmented>button{flex:1 1 0;min-width:0;padding:6px 10px;font-size:12px;font-weight:500;border:none;border-radius:999px;background:transparent;cursor:pointer;color:var(--muted);transition:background .12s ease,color .12s ease}.segmented>button:hover{color:var(--ink);background:transparent}.segmented>button.selected{background:var(--ink);color:#fff}.segmented>button.selected:hover{background:var(--ink);color:#fff}.color-field{display:flex;align-items:center;gap:6px;min-width:0}.color-field .hex-input{flex:1 1 0;min-width:0;width:100%;font-size:11px;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;padding:4px 6px}.color-swatch{position:relative;display:inline-block;width:26px;height:26px;border:1px solid var(--line);border-radius:6px;cursor:pointer;overflow:hidden;flex-shrink:0;background-clip:padding-box}.color-swatch:hover{border-color:var(--accent)}.color-swatch input[type=color]{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;opacity:0;cursor:pointer;border:none;padding:0;background:none}.inspector{padding:4px 4px 24px;gap:0;background:var(--panel)}.inspector>details{border:none;border-radius:0;padding:16px;margin:0;border-bottom:1px solid var(--line)}.inspector>details:last-of-type{border-bottom:none}.inspector>details>*+*{margin-top:10px}.inspector>details>summary{list-style:none;display:flex;align-items:center;justify-content:space-between;font-weight:600;font-size:11px;letter-spacing:.08em;text-transform:uppercase;color:var(--muted);padding:0;-webkit-user-select:none;user-select:none;outline:none}.inspector>details>summary:focus-visible{color:var(--accent)}.inspector>details>summary::-webkit-details-marker{display:none}.inspector>details>summary:after{content:"";display:block;width:7px;height:7px;border-right:1.5px solid currentColor;border-bottom:1.5px solid currentColor;transform:rotate(-45deg) translate(-1px,1px);transition:transform .18s ease;opacity:.7}.inspector>details[open]>summary:after{transform:rotate(45deg) translate(-2px,-2px)}.inspector .stat-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px}.inspector .stat{display:flex;flex-direction:column;gap:2px;background:var(--bg);border-radius:8px;padding:10px 12px}.inspector .stat-value{font-size:18px;font-weight:600;letter-spacing:-.01em;color:var(--ink);font-variant-numeric:tabular-nums}.inspector .stat-label{font-size:11px;color:var(--muted);text-transform:uppercase;letter-spacing:.04em}.info-tip{display:inline-flex;align-items:center;margin-left:6px}.info-tip-trigger{width:16px;height:16px;aspect-ratio:1;flex:none;border-radius:50%;border:1px solid var(--line);background:transparent;color:var(--muted);font-size:10px;font-weight:700;cursor:help;padding:0;display:inline-flex;align-items:center;justify-content:center;line-height:1;font-family:inherit;font-variant-numeric:normal;letter-spacing:0;text-transform:none;text-indent:0;transition:background 80ms ease,border-color 80ms ease,color 80ms ease}.info-tip-trigger>*{display:block}.info-tip-trigger:hover,.info-tip-trigger:focus-visible{outline:none;border-color:var(--accent);color:var(--accent);background:var(--accent-soft)}.info-tip-bubble{z-index:1000;background:var(--ink);color:#fff;font-size:11.5px;line-height:1.45;padding:8px 10px;border-radius:6px;text-align:left;letter-spacing:0;text-transform:none;font-weight:400;pointer-events:none;box-shadow:0 4px 14px #0000002e;animation:info-tip-fade .1s ease-out}@keyframes info-tip-fade{0%{opacity:0;transform:translateY(-3px)}to{opacity:1;transform:translateY(0)}}.inspector .outline-fit-row{display:flex;align-items:center;gap:8px;padding:8px 12px;border-radius:8px;font-size:12px;line-height:1.3;cursor:help}.inspector .outline-fit-row .dot{width:8px;height:8px;border-radius:50%;flex-shrink:0}.inspector .outline-fit-row.clean{background:#eaf5ee;color:#2c6a3c}.inspector .outline-fit-row.clean .dot{background:#2c8a4d}.inspector .outline-fit-row.crossing{background:#fdf0ec;color:#8a3a1f}.inspector .outline-fit-row.crossing .dot{background:#c4632a}.inspector .field{gap:6px}.inspector .field>label{font-size:12px;color:var(--muted);font-weight:500;line-height:1.2}.inspector .field-label-row{display:flex!important;justify-content:space-between;align-items:baseline}.inspector .field-value{color:var(--ink);font-weight:500;font-variant-numeric:tabular-nums}.inspector input[type=text],.inspector input[type=number]{height:32px;border-radius:8px;font-size:13px;padding:6px 10px;transition:border-color 80ms ease,box-shadow 80ms ease}.inspector input[type=text]:focus,.inspector input[type=number]:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}.inspector input[type=range]{-webkit-appearance:none;-moz-appearance:none;appearance:none;width:100%;background:transparent;height:18px;margin:0;cursor:pointer}.inspector input[type=range]:disabled{opacity:.4;cursor:not-allowed}.inspector input[type=range]::-webkit-slider-runnable-track{height:4px;background:var(--line);border-radius:2px}.inspector input[type=range]::-moz-range-track{height:4px;background:var(--line);border-radius:2px}.inspector input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;width:16px;height:16px;background:#fff;border:2px solid var(--accent);border-radius:50%;margin-top:-6px;box-shadow:0 1px 3px #00000026;transition:transform 80ms ease,box-shadow 80ms ease}.inspector input[type=range]::-moz-range-thumb{width:16px;height:16px;background:#fff;border:2px solid var(--accent);border-radius:50%;box-shadow:0 1px 3px #00000026;transition:transform 80ms ease,box-shadow 80ms ease}.inspector input[type=range]:hover::-webkit-slider-thumb,.inspector input[type=range]:focus::-webkit-slider-thumb{transform:scale(1.1);box-shadow:0 2px 6px #3e63dd59}.inspector input[type=range]:hover::-moz-range-thumb,.inspector input[type=range]:focus::-moz-range-thumb{transform:scale(1.1);box-shadow:0 2px 6px #3e63dd59}.inspector .banner{background:var(--accent-soft);color:var(--accent);border-radius:8px;padding:8px 12px;font-size:12px;font-weight:500}.inspector .banner button.subtle{color:var(--accent);font-weight:600;font-size:12px;padding:2px 6px;border-radius:4px}.inspector .banner button.subtle:hover{background:#3e63dd1f}.inspector .hint{font-size:11.5px;line-height:1.45;color:var(--muted);margin:4px 0 0}.inspector .auto-applied-banner{margin:0 0 10px;padding:8px 10px;border-radius:8px;background:#3aa86b24;border:1px solid rgba(58,168,107,.32);color:#1f5a3a;font-size:12px;line-height:1.45}.inspector .auto-applied-banner strong{font-weight:600}.inspector button.primary{height:36px;border-radius:8px;font-weight:600;font-size:13px;box-shadow:0 1px 2px #3e63dd33;width:100%}.inspector .row button.primary{width:auto;flex:1}.inspector button.subtle{color:var(--muted);font-size:12px;font-weight:500;padding:4px 8px;border-radius:6px}.inspector button.subtle:hover{color:var(--accent);background:var(--accent-soft);border-color:transparent}.inspector button:not(.primary):not(.subtle):not(.palette-swatch){border-radius:8px;height:34px;font-size:13px;background:var(--bg);border-color:transparent;font-weight:500}.inspector button:not(.primary):not(.subtle):not(.palette-swatch):hover{background:var(--accent-soft);color:var(--accent)}.inspector .section-list{border:none;background:var(--bg);border-radius:8px;padding:4px;max-height:280px}.inspector .section-row{padding:6px 8px;gap:10px;border-radius:6px;font-size:13px;transition:background 80ms ease}.inspector .section-row .num{width:22px;font-size:11px;font-weight:500;color:var(--muted)}.inspector .section-row .swatch{width:14px;height:14px;border-radius:4px;box-shadow:inset 0 0 0 1px #00000014;border:none}.inspector .section-row .meta{color:var(--muted);font-size:11px;margin-left:4px}.inspector .section-row.active{background:var(--accent-soft);color:var(--accent);font-weight:500}.inspector .section-row.active .num{color:var(--accent)}.inspector .color-field{gap:8px}.inspector .color-field .hex-input{height:32px;border-radius:8px;font-size:12px}.inspector .palette{display:flex;flex-wrap:wrap;gap:6px;align-items:center}.inspector .palette-swatch{width:24px;height:24px;padding:0;border-radius:6px;border:1px solid var(--line);cursor:pointer;background-clip:padding-box;transition:transform 80ms ease,border-color 80ms ease,box-shadow 80ms ease;position:relative}.inspector .palette-swatch:hover{transform:scale(1.08);border-color:var(--accent)}.inspector .palette-swatch.selected{border-color:var(--accent);box-shadow:0 0 0 2px #fff inset,0 0 0 3px var(--accent)}.inspector .palette-custom{background:conic-gradient(from 180deg,#ff5757,#ffbd57,#57ff8b,#57c5ff,#b557ff,#ff57c5,#ff5757);display:inline-block;overflow:hidden}.inspector .palette-custom input[type=color]{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;opacity:0;cursor:pointer;border:none;padding:0;background:none}.inspector .palette-clear{margin-left:auto}.inspector label.row{cursor:pointer;font-size:13px;font-weight:500;-webkit-user-select:none;user-select:none;padding:4px 0}.inspector input[type=checkbox]{width:16px;height:16px;accent-color:var(--accent);cursor:pointer}.inspector-backdrop,.inspector-trigger,.inspector-close{display:none}@media (max-width: 720px){.app{grid-template-columns:1fr;grid-template-rows:auto 1fr;grid-template-areas:"toolbar" "canvas"}.toolbar{flex-wrap:wrap;padding:6px 8px;gap:6px;min-height:56px;height:auto}.toolbar h1,.toolbar-divider{display:none}.toolbar .spacer{flex-basis:100%;height:0}.toolbar .icon-btn>span,.toolbar .popover-trigger .popover-label>span:not(:has(svg)){display:none}.toolbar .icon-btn{padding:8px}.toolbar .popover-trigger{padding:6px 8px}.toolbar .auto-slice-btn{padding:8px 14px;font-size:13px}.toolbar .auto-slice-btn .btn-content{gap:6px}.inspector-trigger{display:inline-flex}.inspector{position:fixed;top:0;right:0;bottom:0;width:min(360px,90vw);z-index:50;transform:translate(100%);transition:transform .22s cubic-bezier(.2,.8,.2,1);box-shadow:-8px 0 24px #0000001f;overflow-y:auto}.app.inspector-open .inspector{transform:translate(0)}.inspector-backdrop{display:block;position:fixed;top:0;right:0;bottom:0;left:0;background:#00000052;z-index:40;opacity:0;visibility:hidden;transition:opacity .22s ease,visibility .22s ease}.app.inspector-open .inspector-backdrop{opacity:1;visibility:visible}.inspector-close{display:flex;align-items:center;justify-content:center;position:absolute;top:8px;right:8px;width:32px;height:32px;border-radius:50%;background:transparent;border:1px solid transparent;color:var(--muted);font-size:22px;line-height:1;cursor:pointer;z-index:1}.inspector-close:hover{background:var(--bg);color:var(--ink)}.canvas-wrap{padding:12px}.canvas-stage{top:12px;right:12px;bottom:12px;left:12px}.zoom-controls{right:10px;bottom:10px;padding:3px}.popover-panel{position:fixed;top:auto;left:12px!important;right:12px!important;bottom:12px;max-width:none;min-width:0;width:auto;padding:14px 16px;max-height:75vh}.popover-content.menu{min-width:0}}@media (min-width: 721px) and (max-width: 960px){.app{grid-template-columns:1fr 280px}}
