:root{--bg-deep: #060810;--bg-panel: #0A0D18;--bg-card: #111525;--border: #1A1F30;--border-light: #242840;--text-primary: #D8DCE8;--text-secondary:#6A7090;--text-muted: #323650;--accent-sky: #7BAFD4;--accent-earth: #4A6741;--accent-horizon:#8A9E8C;--radius: 5px}.app{display:flex;flex-direction:column;height:100vh;background:var(--bg-deep);color:var(--text-primary)}.app-header{display:flex;align-items:center;justify-content:space-between;height:48px;padding:0 20px;border-bottom:1px solid var(--border);background:var(--bg-panel);flex-shrink:0}.header-left{display:flex;align-items:center;gap:10px}.header-right{display:flex;align-items:center;gap:14px}.header-glyph{font-size:16px;color:var(--accent-sky)}.header-title{font-size:15px;font-weight:600;letter-spacing:.02em}.header-divider{color:var(--border-light)}.header-sub{font-size:12px;color:var(--text-secondary);letter-spacing:.03em}.header-dim{font-size:11px;color:var(--text-muted);font-family:monospace}.header-zone{font-size:10px;font-weight:600;padding:2px 8px;border-radius:10px}.sky-tag{background:#7bafd424;color:var(--accent-sky)}.earth-tag{background:#4a674133;color:#7aaa60}.app-body{display:flex;flex:1;overflow:hidden;min-height:0}.control-panel{width:280px;flex-shrink:0;border-right:1px solid var(--border);background:var(--bg-panel);overflow-y:auto;overflow-x:hidden;display:flex;flex-direction:column;scrollbar-width:thin;scrollbar-color:var(--border-light) transparent}.control-panel::-webkit-scrollbar{width:4px}.control-panel::-webkit-scrollbar-thumb{background:var(--border-light);border-radius:2px}.panel-section{padding:16px;border-bottom:1px solid var(--border)}.panel-section:last-child{border-bottom:none}.section-title{font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.14em;color:var(--text-muted);margin-bottom:12px}.section-spacer{height:10px}.dim-row{display:flex;align-items:center;gap:8px;margin-bottom:10px}.dim-x{color:var(--text-muted);font-size:13px}.dim-field{display:flex;flex-direction:column;gap:4px;flex:1}.dim-label{font-size:10px;color:var(--text-secondary);letter-spacing:.08em;text-transform:uppercase}.dim-input-wrap{display:flex;align-items:center;gap:4px}.dim-input{width:100%;padding:5px 8px;background:var(--bg-card);border:1px solid var(--border-light);border-radius:var(--radius);color:var(--text-primary);font-size:13px;font-family:monospace;outline:none}.dim-input:focus{border-color:var(--text-secondary)}.dim-unit{font-size:12px;color:var(--text-secondary)}.derived-pill{font-size:10px;color:var(--text-muted);font-family:monospace;padding:4px 8px;background:var(--bg-card);border-radius:3px;margin-top:4px}.slider-row{margin-bottom:10px}.slider-row--disabled{opacity:.4;pointer-events:none}.slider-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:4px}.slider-label{font-size:11px;color:var(--text-secondary)}.slider-value{font-size:11px;font-family:monospace;color:var(--text-primary)}.slider-hint{font-size:10px;color:var(--text-muted);margin-top:2px}input[type=range]{width:100%;height:3px;-webkit-appearance:none;-moz-appearance:none;appearance:none;outline:none;cursor:pointer;border-radius:2px;background:var(--border-light)}input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;-moz-appearance:none;appearance:none;width:12px;height:12px;border-radius:50%;background:var(--thumb-color, var(--text-primary));border:2px solid var(--bg-deep)}input[type=range]::-moz-range-thumb{width:12px;height:12px;border-radius:50%;background:var(--thumb-color, var(--text-primary));border:2px solid var(--bg-deep)}.toggle-row{display:flex;align-items:center;justify-content:space-between;padding:4px 0}.toggle-text{display:flex;flex-direction:column;gap:2px}.toggle-label{font-size:11px;color:var(--text-secondary)}.toggle-hint{font-size:10px;color:var(--text-muted);max-width:190px}.toggle-btn{width:34px;height:18px;border-radius:9px;border:none;cursor:pointer;position:relative;transition:background .2s;flex-shrink:0}.toggle-on{background:var(--accent-sky)}.toggle-off{background:var(--text-muted)}.toggle-thumb{position:absolute;top:2px;width:14px;height:14px;border-radius:50%;background:#fff;transition:left .2s}.toggle-on .toggle-thumb{left:18px}.toggle-off .toggle-thumb{left:2px}.panel-section--drag-over{background:#4880e20f;outline:1.5px solid rgba(72,128,226,.45);outline-offset:-2px;border-radius:var(--radius)}.sg-block{padding:12px;margin-bottom:8px;background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius);transition:border-color .15s,background .15s}.sg-block:last-child{margin-bottom:0}.sg-block--drag-over{border-color:var(--accent-sky);background:#4880e214}.sg-header{display:flex;align-items:center;gap:6px;margin-bottom:6px;flex-wrap:wrap}.sg-dot{width:10px;height:10px;border-radius:50%;flex-shrink:0}.sg-name,.sg-label{font-size:12px;font-weight:600;flex:1}.sg-badge,.sg-count{font-size:10px;color:var(--text-muted);font-family:monospace}.sg-header-actions{display:flex;gap:4px}.sg-action-btn{font-size:9.5px;padding:2px 8px;background:none;border:1px solid var(--border-light);color:var(--text-muted);border-radius:4px;cursor:pointer;transition:all .12s}.sg-action-btn:hover{border-color:#c05050;color:#c05050}.sg-density-summary{font-size:9.5px;font-family:monospace;color:var(--text-muted);margin-bottom:8px;display:flex;gap:5px;flex-wrap:wrap}.sg-density-high{color:var(--accent-sky)}.sg-density-low{color:var(--text-secondary)}.sg-density-sep{color:var(--border-light)}.sg-density-note{color:var(--text-muted);font-style:italic}.sg-drop{border:1.5px dashed var(--border-light);border-radius:5px;padding:10px;cursor:pointer;transition:border-color .15s,background .15s;margin-bottom:10px;min-height:48px;display:flex;align-items:flex-start}.sg-drop--empty{align-items:center;justify-content:center;text-align:center}.sg-drop:hover{border-color:var(--accent-sky)}.sg-drop--active{border-color:var(--accent-sky);border-style:solid;background:#4880e212}.sg-drop-hint{font-size:11px;color:var(--text-muted);line-height:1.7}.sg-drop-hint strong{color:var(--accent-sky)}.sg-drop-sub{display:block;font-size:10px;color:var(--text-muted)}.sg-dropzone{border:1.5px dashed var(--border-light);border-radius:4px;padding:10px;text-align:center;cursor:pointer;font-size:10px;color:var(--text-muted);transition:all .15s;margin-bottom:8px}.sg-dropzone:hover,.sg-dropzone.drag-over{border-color:var(--accent-sky);color:var(--text-secondary)}.sg-chips{display:flex;flex-wrap:wrap;gap:4px;width:100%}.sg-chip{display:flex;align-items:center;gap:3px;padding:2px 6px 2px 4px;background:var(--bg-deep);border:1px solid var(--border-light);border-radius:10px;font-size:9.5px;color:var(--text-secondary);font-family:monospace}.sg-chip--high{border-color:#7bafd459}.sg-chip--low{border-color:var(--border-light)}.sg-chip--add{color:var(--text-muted);border-style:dashed}.sg-chip--drop-target{color:var(--accent-sky);border-color:var(--accent-sky);border-style:dashed}.sg-chip-density{font-size:8px;flex-shrink:0}.sg-chip--high .sg-chip-density{color:var(--accent-sky)}.sg-chip--low .sg-chip-density{color:var(--text-muted)}.sg-chip-dot{width:6px;height:6px;border-radius:50%;flex-shrink:0}.sg-chip-x{background:none;border:none;color:var(--text-muted);cursor:pointer;padding:0 0 0 2px;font-size:11px;line-height:1}.sg-chip-x:hover{color:var(--text-primary)}.sg-remove{background:none;border:none;color:var(--text-muted);cursor:pointer;padding:0 0 0 3px;font-size:11px;line-height:1}.sg-remove:hover{color:var(--text-primary)}.sg-scale-row{display:flex;align-items:center;gap:8px;margin-top:8px;font-size:10px;color:var(--text-muted)}.sg-scale-row input[type=number]{width:52px;padding:3px 5px;background:var(--bg-deep);border:1px solid var(--border-light);border-radius:3px;color:var(--text-primary);font-size:10px;outline:none}.zone-bar{height:24px;border-radius:4px;overflow:hidden;display:flex;margin-bottom:10px;border:1px solid var(--border-light)}.zone-sky{background:#bdd5ea}.zone-horizon{background:#9bb5a0}.zone-earth{background:#4a6741}.zone-labels{display:flex;justify-content:space-between;font-size:9px;color:var(--text-muted);margin-bottom:8px}.stats-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:6px}.stat-card{padding:8px 6px;background:var(--bg-card);border-radius:4px;border:1px solid var(--border);display:flex;flex-direction:column;gap:2px}.stat-label{font-size:9px;color:var(--text-muted);text-transform:uppercase;letter-spacing:.08em}.stat-val{font-size:18px;font-weight:700;font-family:monospace;color:var(--text-primary)}.stat-pct{font-size:9px;color:var(--text-muted);font-family:monospace}.preset-seed-row{display:flex;align-items:center;gap:8px;margin-bottom:10px}.preset-seed-label{font-size:11px;color:var(--text-secondary)}.preset-seed-input{flex:1;padding:5px 8px;background:var(--bg-card);border:1px solid var(--border-light);border-radius:var(--radius);color:var(--text-primary);font-size:12px;font-family:monospace;outline:none}.preset-seed-input:focus{border-color:var(--text-secondary)}.preset-seed-regen{padding:5px 9px;background:var(--bg-card);border:1px solid var(--border-light);border-radius:var(--radius);color:var(--text-secondary);cursor:pointer;font-size:13px}.preset-seed-regen:hover{border-color:var(--accent-sky);color:var(--accent-sky)}.palette-active-badge{margin-left:8px;font-size:9.5px;font-family:monospace;background:#7bafd42e;color:var(--accent-sky);border:1px solid var(--accent-sky);border-radius:4px;padding:1px 6px;font-weight:400;vertical-align:middle}.palette-swatches{display:flex;flex-wrap:wrap;gap:3px;margin-bottom:10px;max-height:96px;overflow-y:auto;padding:4px;background:var(--bg-card);border:1px solid var(--border-light);border-radius:5px}.palette-swatch{position:relative;width:16px;height:16px;border-radius:2px;flex-shrink:0;border:1px solid rgba(255,255,255,.08);cursor:pointer;padding:0;background-clip:padding-box;display:flex;align-items:center;justify-content:center;transition:transform .1s,border-color .1s}.palette-swatch:hover{transform:scale(1.25);border-color:#ffffff8c}.palette-swatch-x{display:none;font-size:7px;color:#fffffff2;font-weight:700;line-height:1;pointer-events:none;text-shadow:0 0 3px rgba(0,0,0,.95)}.palette-swatch:hover .palette-swatch-x{display:block}.palette-textarea{width:100%;box-sizing:border-box;background:var(--bg-card);color:var(--text-primary);border:1px solid var(--border-light);border-radius:5px;padding:8px 10px;font-size:10.5px;font-family:monospace;line-height:1.6;resize:vertical;outline:none;transition:border-color .15s}.palette-textarea:focus{border-color:var(--accent-sky)}.palette-textarea::placeholder{color:var(--text-muted)}.palette-clear-btn{margin-top:5px;margin-bottom:4px;background:none;border:1px solid var(--border-light);color:var(--text-muted);border-radius:4px;font-size:10px;padding:3px 9px;cursor:pointer;transition:all .12s}.palette-clear-btn:hover{border-color:#c05050;color:#c05050}.palette-apply-row{display:flex;align-items:center;justify-content:flex-end;gap:6px;margin-top:5px}.palette-apply-btn{font-size:10px;padding:4px 12px;font-weight:500;letter-spacing:.02em;background:#7bafd41f;color:var(--accent-sky);border:1px solid var(--accent-sky);border-radius:4px;cursor:pointer;transition:all .15s;white-space:nowrap}.palette-apply-btn:hover{background:#7bafd447}.palette-apply-btn--success{background:#50c87826!important;color:#5dc87a!important;border-color:#5dc87a!important}.palette-view-toggle{display:flex;gap:0;margin-bottom:6px}.palette-view-btn{flex:1;font-size:10px;padding:3px 0;background:var(--bg-card);color:var(--text-muted);border:1px solid var(--border-light);cursor:pointer;transition:all .12s}.palette-view-btn:first-child{border-radius:4px 0 0 4px}.palette-view-btn:last-child{border-radius:0 4px 4px 0;border-left:none}.palette-view-btn--on{color:var(--accent-sky);border-color:var(--accent-sky);background:#7bafd41a}.palette-hex-list{display:flex;flex-wrap:wrap;gap:3px;margin-bottom:10px;max-height:96px;overflow-y:auto;padding:4px;background:var(--bg-card);border:1px solid var(--border-light);border-radius:5px}.palette-hex-code{font-size:9.5px;font-family:monospace;color:var(--text-primary);padding:1px 5px;cursor:pointer;border-radius:2px;transition:background .1s}.palette-hex-code:hover{background:#ffffff0f}.palette-quant-row{display:flex;align-items:center;gap:6px;margin-top:10px}.palette-quant-label{font-size:10px;color:var(--text-muted);white-space:nowrap;flex-shrink:0}.palette-quant-slider{flex:1;height:3px;-webkit-appearance:none;-moz-appearance:none;appearance:none;background:var(--border-light);border-radius:2px;outline:none;cursor:pointer;min-width:0}.palette-quant-slider::-webkit-slider-thumb{-webkit-appearance:none;-moz-appearance:none;appearance:none;width:10px;height:10px;border-radius:50%;background:var(--accent-sky);cursor:pointer}.palette-quant-val{font-size:10px;font-family:monospace;color:var(--accent-sky);min-width:22px;text-align:right;flex-shrink:0}.palette-quant-btn{flex:1;padding:5px 0;font-size:11px;font-family:monospace;background:#7bafd41a;color:var(--accent-sky);border:1px solid var(--accent-sky);border-radius:5px;cursor:pointer;transition:all .15s;text-align:center}.palette-quant-btn:hover:not(.palette-quant-btn--disabled){background:#7bafd438}.palette-quant-btn--disabled{opacity:.35;cursor:not-allowed;border-color:var(--border-light);color:var(--text-muted);background:none}.palette-no-photo{font-size:9.5px;color:var(--text-muted);font-family:monospace;margin-top:5px}.bgp-wrap{display:flex;flex-direction:column;gap:8px}.bgp-swatches{display:flex;flex-wrap:wrap;gap:4px;padding:6px;background:var(--bg-card);border:1px solid var(--border-light);border-radius:5px;max-height:110px;overflow-y:auto}.bgp-swatch{position:relative;width:22px;height:22px;border-radius:3px;border:1px solid rgba(255,255,255,.12);cursor:pointer;flex-shrink:0;transition:transform .1s,border-color .1s;display:flex;align-items:center;justify-content:center;background-clip:padding-box}.bgp-swatch:hover{transform:scale(1.15);border-color:#ffffff80}.bgp-swatch-x{display:none;font-size:8px;color:#ffffffe6;font-weight:700;line-height:1;text-shadow:0 0 3px rgba(0,0,0,.9);pointer-events:none}.bgp-swatch:hover .bgp-swatch-x{display:block}.bgp-empty{font-size:10px;color:var(--text-muted);font-family:monospace;padding:10px 12px;background:var(--bg-card);border:1px dashed var(--border-light);border-radius:5px;text-align:center;line-height:1.5}.bgp-add-row{display:flex;gap:6px;align-items:center}.bgp-hex-input{flex:1;background:var(--bg-card);color:var(--text-primary);border:1px solid var(--border-light);border-radius:4px;padding:5px 8px;font-size:11px;font-family:monospace;outline:none;transition:border-color .15s}.bgp-hex-input:focus{border-color:var(--accent-sky)}.bgp-hex-input::placeholder{color:var(--text-muted)}.bgp-add-btn{padding:5px 10px;font-size:11px;font-family:monospace;background:#7bafd41a;color:var(--accent-sky);border:1px solid rgba(123,175,212,.35);border-radius:4px;cursor:pointer;white-space:nowrap;transition:all .12s}.bgp-add-btn:hover:not(:disabled){background:#7bafd438}.bgp-add-btn:disabled{opacity:.3;cursor:not-allowed}.bgp-actions{display:flex;flex-direction:column;gap:5px}.bgp-action-btn{width:100%;padding:6px 10px;font-size:11px;font-family:monospace;text-align:center;border-radius:4px;cursor:pointer;transition:all .13s;background:#7bafd414;color:var(--accent-sky);border:1px solid rgba(123,175,212,.3)}.bgp-action-btn:hover:not(:disabled):not(.bgp-action-btn--disabled){background:#7bafd433}.bgp-action-btn--secondary{background:var(--bg-card);color:var(--text-muted);border-color:var(--border-light)}.bgp-action-btn--secondary:hover{border-color:var(--accent-sky);color:var(--accent-sky);background:#7bafd414}.bgp-action-btn--danger{background:#b43c3c14;color:#b06060;border-color:#b43c3c4d}.bgp-action-btn--danger:hover{background:#b43c3c2e;border-color:#c06060;color:#d07070}.bgp-action-btn--disabled,.bgp-action-btn:disabled{opacity:.3;cursor:not-allowed}.bgp-bulk-panel{display:flex;flex-direction:column;gap:6px}.bgp-bulk-textarea{width:100%;box-sizing:border-box;background:var(--bg-card);color:var(--text-primary);border:1px solid var(--border-light);border-radius:5px;padding:8px 10px;font-size:10.5px;font-family:monospace;line-height:1.6;resize:vertical;outline:none;transition:border-color .15s}.bgp-bulk-textarea:focus{border-color:var(--accent-sky)}.bgp-bulk-textarea::placeholder{color:var(--text-muted)}.bgp-snap-note{font-size:9.5px;color:var(--accent-sky);font-family:monospace;background:#7bafd414;border:1px solid rgba(123,175,212,.2);border-radius:4px;padding:4px 10px;text-align:center;letter-spacing:.02em}.preset-btn{display:flex;align-items:center;justify-content:center;width:100%;padding:8px;margin-bottom:6px;border-radius:var(--radius);border:1px solid var(--border-light);font-size:11px;cursor:pointer;transition:all .15s}.preset-copy{background:#7bafd414;color:var(--accent-sky);border-color:#7bafd44d}.preset-copy:hover{background:#7bafd429}.preset-copy--copied{background:#4a8c6f24;color:#5baa8a;border-color:#5baa8a}.preset-copy--error{background:#b43c3c1a;color:#b05050;border-color:#b05050}.preset-load-wrap{margin-bottom:0}.preset-load-toggle{background:var(--bg-card);border:1px dashed var(--border-light);color:var(--text-muted)}.preset-load-toggle:hover{border-color:var(--text-secondary);color:var(--text-primary)}.preset-load-panel{margin-top:8px;display:flex;flex-direction:column;gap:6px}.preset-textarea{width:100%;padding:8px;resize:vertical;background:var(--bg-deep);border:1px solid var(--border-light);border-radius:var(--radius);color:var(--text-primary);font-size:10.5px;font-family:monospace;line-height:1.5;outline:none}.preset-textarea:focus{border-color:var(--text-secondary)}.preset-textarea::placeholder{color:var(--text-muted)}.preset-apply{background:var(--bg-card);border:1px solid var(--border-light);color:var(--text-secondary)}.preset-apply:not(:disabled):hover{border-color:var(--text-secondary);color:var(--text-primary)}.preset-apply:disabled{opacity:.35;cursor:not-allowed}.preset-apply--ok{background:#4a8c6f1f;border-color:#4a8c6f;color:#4a8c6f}.preset-apply--error{background:#b43c3c1a;border-color:#b05050;color:#b05050}.panel-footer{display:flex;flex-direction:column;gap:8px}.regen-btn{padding:9px;background:var(--bg-card);border:1px solid var(--border-light);border-radius:var(--radius);color:var(--text-secondary);cursor:pointer;font-size:12px}.regen-btn:hover{border-color:var(--accent-sky);color:var(--accent-sky)}.export-btn-panel{padding:9px;background:#7bafd41a;border:1px solid rgba(123,175,212,.35);border-radius:var(--radius);color:var(--accent-sky);cursor:pointer;font-size:12px;font-weight:600}.export-btn-panel:hover{background:#7bafd42e}.clear-project-btn{padding:9px;background:transparent;border:1px solid rgba(180,60,60,.28);border-radius:var(--radius);color:#c86464a6;cursor:pointer;font-size:11px;letter-spacing:.03em;margin-top:4px}.clear-project-btn:hover{background:#b43c3c14;border-color:#c850508c;color:#c06060}.tzm-info{font-size:11px;color:var(--text-muted);line-height:1.45;margin-bottom:10px;padding:6px 8px;background:#4880e212;border-radius:var(--radius);border-left:2px solid rgba(72,128,226,.3)}.tzm-pending{font-size:11px;color:#c88a3a;font-weight:600;margin:8px 0 4px;letter-spacing:.2px}.tzm-apply-btn{width:100%;padding:9px 12px;margin-top:6px;background:#4880e22e;border:1px solid rgba(72,128,226,.5);border-radius:var(--radius);color:var(--accent-sky);cursor:pointer;font-size:12px;font-weight:600;letter-spacing:.4px;transition:background .15s}.tzm-apply-btn:hover{background:#4880e24d}.tzm-apply-btn:active{background:#4880e266}.tzm-active-note{font-size:10px;color:var(--text-muted);margin-top:5px;text-align:center;letter-spacing:.2px}.lf-wrap{display:flex;flex-direction:column;gap:8px}.lf-pick-btn{padding:9px 12px;background:#4880e21a;border:1px dashed rgba(72,128,226,.45);border-radius:var(--radius);color:var(--accent-sky);cursor:pointer;font-size:12px;text-align:center}.lf-pick-btn:hover{background:#4880e22e;border-style:solid}.lf-hint{font-size:10px;color:var(--text-muted);line-height:1.6}.lf-hint code{font-family:monospace;background:#ffffff0f;padding:1px 4px;border-radius:3px;font-size:10px}.lf-header{display:flex;align-items:center;gap:6px;background:var(--bg-card);border:1px solid var(--border-subtle);border-radius:var(--radius);padding:6px 8px}.lf-icon{font-size:13px;flex-shrink:0}.lf-name{flex:1;font-size:11px;font-family:monospace;color:var(--text-primary);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.lf-disconnect{background:none;border:none;color:var(--text-muted);cursor:pointer;font-size:11px;padding:0 2px;flex-shrink:0}.lf-disconnect:hover{color:#c06060}.lf-counts{display:flex;flex-wrap:wrap;gap:5px;align-items:center}.lf-count{font-size:10px;font-family:monospace;padding:2px 6px;border-radius:10px;border:1px solid transparent}.lf-heavy{background:#1e307459;border-color:#1e307499;color:#8ba3e8}.lf-medium{background:#4880e233;border-color:#4880e273;color:#82b0f0}.lf-whisper{background:#b5dff41f;border-color:#b5dff44d;color:#b5dff4}.lf-total{color:var(--text-muted);font-size:10px}.lf-unrouted{background:#b4822826;border-color:#b4822866;color:#c09050;cursor:help}.lf-rescan-btn{padding:7px 10px;background:var(--bg-card);border:1px solid var(--border-light);border-radius:var(--radius);color:var(--text-secondary);cursor:pointer;font-size:11px}.lf-rescan-btn:hover:not(:disabled){border-color:var(--accent-sky);color:var(--accent-sky)}.lf-rescan-btn:disabled{opacity:.5;cursor:default}.lf-rescan-btn--reconnect{border-color:#b4822880;color:#c09050}.lf-rescan-btn--reconnect:hover{background:#b482281a}.lf-error{font-size:10px;color:#c06060;padding:5px 7px;background:#b43c3c14;border-radius:var(--radius);border:1px solid rgba(180,60,60,.2)}.preset-wh-row{display:flex;align-items:flex-end;gap:6px;margin-bottom:10px}.preset-wh-field{display:flex;flex-direction:column;gap:4px;flex:1}.preset-wh-label{font-size:10px;color:var(--text-secondary);text-transform:uppercase;letter-spacing:.08em}.preset-wh-input{width:100%;padding:7px 8px;background:var(--bg-card);border:1px solid var(--border-light);border-radius:var(--radius);color:var(--text-primary);font-size:14px;font-family:monospace;outline:none;text-align:center}.preset-wh-input:focus{border-color:var(--accent-sky)}.preset-wh-input::placeholder{color:var(--text-muted);font-size:11px}.preset-wh-unit{font-size:12px;color:var(--text-secondary);padding-bottom:8px}.preset-wh-sep{font-size:16px;color:var(--text-muted);padding-bottom:8px;flex-shrink:0}.preset-wh-clear{padding:6px 8px;margin-bottom:0;flex-shrink:0;background:none;border:1px solid var(--border-light);border-radius:var(--radius);color:var(--text-muted);cursor:pointer;font-size:11px;transition:all .15s;align-self:flex-end;height:34px}.preset-wh-clear:hover{border-color:#b05050;color:#b05050}.preset-span-hint{font-size:10px;line-height:1.45;margin-bottom:12px;padding:6px 8px;border-radius:3px;display:flex;gap:6px;align-items:flex-start}.preset-span-hint--columns{background:#7bafd412;color:var(--accent-sky);border:1px solid rgba(123,175,212,.2)}.preset-span-hint--rows{background:#8a9e8c12;color:var(--accent-horizon);border:1px solid rgba(138,158,140,.2)}.preset-span-hint--grid{background:#ffffff0a;color:var(--text-secondary);border:1px solid var(--border-light)}.preset-span-hint--full{background:#ffffff05;color:var(--text-muted);border:1px solid var(--border)}.preset-span-icon{flex-shrink:0;opacity:.7}.subdivide-row{display:flex;align-items:center;justify-content:space-between;padding:8px 0;border-top:1px solid var(--border);margin-top:6px;margin-bottom:8px}.subdivide-info{display:flex;flex-direction:column;gap:2px}.subdivide-label{font-size:11px;color:var(--text-secondary)}.subdivide-desc{font-size:10px;color:var(--text-muted)}.subdivide-toggle{padding:4px 10px;font-size:11px;font-weight:600;font-family:monospace;border-radius:10px;cursor:pointer;transition:all .15s;flex-shrink:0;background:var(--bg-card);border:1px solid var(--border-light);color:var(--text-muted)}.subdivide-toggle:not(:disabled):hover{border-color:var(--text-secondary)}.subdivide-toggle--on{background:#7bafd424;border-color:var(--accent-sky);color:var(--accent-sky)}.subdivide-toggle:disabled{opacity:.35;cursor:not-allowed}.orient-toggle{display:flex;gap:4px;margin-bottom:2px}.orient-btn{flex:1;padding:6px 4px;font-size:10px;font-family:monospace;background:var(--bg-card);border:1px solid var(--border-light);border-radius:var(--radius);color:var(--text-secondary);cursor:pointer;transition:all .15s;white-space:nowrap;text-align:center}.orient-btn:hover{border-color:var(--text-secondary);color:var(--text-primary)}.orient-btn--on{background:#7bafd424;border-color:var(--accent-sky);color:var(--accent-sky);font-weight:600}.mixed-note{font-size:10px;color:var(--text-muted);line-height:1.5;padding:6px 8px;background:#7bafd40d;border-left:2px solid rgba(123,175,212,.3);border-radius:0 3px 3px 0;margin-bottom:10px}.photo-drop{border:1.5px dashed var(--border-light);border-radius:var(--radius);padding:18px 12px;text-align:center;cursor:pointer;transition:all .15s;margin-bottom:4px}.photo-drop:hover,.photo-drop.drag-over{border-color:var(--accent-sky);background:#7bafd40d}.photo-drop-icon{font-size:18px;color:var(--text-muted);margin-bottom:6px}.photo-drop-label{font-size:11px;color:var(--text-secondary);margin-bottom:3px}.photo-drop-sub{font-size:10px;color:var(--text-muted)}.photo-thumb{width:100%;height:80px;object-fit:cover;border-radius:4px;display:block;margin-bottom:6px;border:1px solid var(--border-light)}.photo-meta{display:flex;justify-content:space-between;align-items:center;margin-bottom:6px}.photo-filename{font-size:10px;color:var(--text-muted);font-family:monospace;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:170px}.photo-clear{padding:2px 8px;font-size:10px;flex-shrink:0;background:none;border:1px solid var(--border-light);border-radius:3px;color:var(--text-muted);cursor:pointer;transition:all .15s}.photo-clear:hover{border-color:#b05050;color:#b05050}.photo-status{font-size:9.5px;color:var(--accent-sky);padding:5px 8px;background:#7bafd414;border-radius:3px;border:1px solid rgba(123,175,212,.2);line-height:1.4}.photo-active-tag{background:#7bafd424;color:var(--accent-sky)}.photo-density-note{font-size:10px;color:var(--text-muted);line-height:1.5;padding:6px 8px;background:#7bafd40f;border-left:2px solid var(--accent-sky);border-radius:0 3px 3px 0;margin-bottom:10px}.section-title-sub{font-weight:400;text-transform:none;letter-spacing:.02em;font-size:9px;color:var(--text-secondary)}.field-label-row{display:flex;justify-content:space-between;align-items:center;margin-bottom:6px}.col-width-chips{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:12px}.col-width-chip{padding:4px 12px;background:var(--bg-card);border:1px solid var(--border-light);border-radius:10px;font-size:11px;color:var(--text-secondary);font-family:monospace;cursor:pointer;transition:all .15s;line-height:1.4}.col-width-chip:hover{border-color:var(--text-secondary);color:var(--text-primary)}.col-width-chip--on{background:#7bafd424;border-color:var(--accent-sky);color:var(--accent-sky)}.shelf-row{margin-bottom:12px}.shelf-row-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:7px}.shelf-label{font-size:11px;color:var(--text-secondary)}.shelf-count-pill{font-size:9.5px;font-family:monospace;padding:2px 7px;background:var(--bg-card);border:1px solid var(--border-light);border-radius:10px;color:var(--text-muted)}.shelf-opts{display:flex;gap:6px;margin-bottom:5px}.shelf-btn{flex:1;padding:7px 0;font-size:12px;font-family:monospace;background:var(--bg-card);border:1px solid var(--border-light);border-radius:var(--radius);color:var(--text-secondary);cursor:pointer;transition:all .15s;text-align:center}.shelf-btn:hover{border-color:var(--text-secondary);color:var(--text-primary)}.shelf-btn--on{background:#7bafd424;border-color:var(--accent-sky);color:var(--accent-sky);font-weight:600}.shelf-mode-hint{font-size:10px;color:var(--text-muted);font-family:monospace;margin-top:2px}.dir-toggle-row{margin-bottom:14px}.dir-toggle-label{font-size:10px;color:var(--text-muted);text-transform:uppercase;letter-spacing:.08em;margin-bottom:6px;display:block}.dir-toggle{display:flex;gap:6px}.dir-btn{flex:1;padding:6px 0;font-size:11px;font-family:monospace;background:var(--bg-card);border:1px solid var(--border-light);color:var(--text-secondary);border-radius:5px;cursor:pointer;transition:all .15s;text-align:center}.dir-btn:hover{border-color:var(--text-secondary);color:var(--text-primary)}.dir-btn--on{background:#7bafd424;border-color:var(--accent-sky);color:var(--accent-sky);font-weight:600}.dir-hint{font-size:9.5px;color:var(--text-muted);font-family:monospace;margin-top:5px}.strategy-select{width:100%;padding:6px 24px 6px 8px;font-size:11px;font-family:monospace;background:var(--bg-card);color:var(--text-primary);border:1px solid var(--border-light);border-radius:5px;cursor:pointer;-webkit-appearance:none;-moz-appearance:none;appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='6'%3E%3Cpath d='M0 0l5 6 5-6z' fill='%236b7a8d'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 8px center;transition:border-color .15s}.strategy-select:hover{border-color:var(--text-secondary)}.strategy-select:focus{outline:none;border-color:var(--accent-sky)}.shelf-mix-row{display:flex;align-items:center;gap:6px;margin-top:8px}.shelf-mix-label{font-size:10px;color:var(--text-muted);font-family:monospace;flex-shrink:0}.col-widths-section{margin-bottom:12px}.col-widths-label{font-size:11px;color:var(--text-secondary);display:block;margin-bottom:7px}.col-chips{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:6px}.col-chip{padding:5px 10px;font-size:11px;font-family:monospace;background:var(--bg-card);border:1px solid var(--border-light);border-radius:10px;color:var(--text-secondary);cursor:pointer;transition:all .15s;line-height:1.3}.col-chip:hover{border-color:var(--text-secondary);color:var(--text-primary)}.col-chip--on{background:#7bafd424;border-color:var(--accent-sky);color:var(--accent-sky)}.col-widths-hint{font-size:10px;color:var(--text-muted);font-family:monospace}.canvas-outer{flex:1;min-width:0;background:#0e1118;position:relative;overflow:hidden;-webkit-user-select:none;user-select:none}.canvas-main{position:absolute;top:0;left:0;display:block;transform-origin:0 0}.navigator{position:absolute;bottom:16px;left:16px;background:#060810e0;border:1px solid var(--border-light);border-radius:6px;padding:5px;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);z-index:10;box-shadow:0 4px 16px #00000080;pointer-events:auto}.navigator-canvas{display:block;border-radius:3px;cursor:crosshair;border:1px solid var(--border);max-width:220px}.nav-zoom-bar{display:flex;align-items:center;gap:2px;margin-top:5px;padding:0 2px}.nav-zoom-btn{flex:1;background:none;border:none;color:var(--text-secondary);cursor:pointer;font-size:13px;line-height:1;padding:3px 0;border-radius:4px;transition:background .12s,color .12s;text-align:center}.nav-zoom-btn:hover{background:#7bafd41f;color:var(--accent-sky)}.nav-zoom-fit{font-size:13px;flex:1.4}.nav-zoom-sep{width:1px;height:14px;background:var(--border-light);flex-shrink:0;margin:0 1px}.nav-loupe-btn{font-size:14px}.nav-loupe-active{color:var(--accent-sky)!important;background:#7bafd41f!important}.loupe-ring{position:absolute;pointer-events:none;border-radius:50%;overflow:hidden;border:2px solid rgba(123,175,212,.55);box-shadow:0 0 0 1px #000000b3,0 6px 32px #000000d9,inset 0 0 0 1px #ffffff0f;z-index:50;cursor:none;left:-9999px;top:-9999px}.loupe-canvas{display:block;width:100%;height:100%;image-rendering:crisp-edges}.loupe-badge{position:absolute;bottom:18px;left:50%;transform:translate(-50%);font-size:9px;font-family:monospace;letter-spacing:.04em;color:#7bafd4b3;white-space:nowrap;pointer-events:none;text-shadow:0 1px 3px rgba(0,0,0,.8)}.canvas-hint{position:absolute;bottom:16px;right:16px;font-size:9.5px;color:var(--text-muted);font-family:monospace;line-height:1.7;background:#060810b8;border:1px solid var(--border);padding:5px 8px;border-radius:5px;pointer-events:none;z-index:20}.vd-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1000;background:#060810c7;display:flex;align-items:center;justify-content:center;padding:24px;animation:vd-fade-in .15s ease}@keyframes vd-fade-in{0%{opacity:0}to{opacity:1}}.vd-modal{width:100%;max-width:540px;max-height:calc(100vh - 48px);background:var(--bg-panel);border:1px solid var(--border-light);border-radius:8px;display:flex;flex-direction:column;overflow:hidden;box-shadow:0 24px 64px #0009;animation:vd-slide-up .18s cubic-bezier(.22,1,.36,1)}@keyframes vd-slide-up{0%{transform:translateY(14px);opacity:0}to{transform:translateY(0);opacity:1}}.vd-header{display:flex;align-items:center;gap:12px;padding:18px 20px 14px;border-bottom:1px solid var(--border);flex-shrink:0}.vd-icon{font-size:22px;line-height:1}.vd-title-block{flex:1;min-width:0}.vd-title{margin:0;font-size:15px;font-weight:700;color:var(--text-primary);letter-spacing:.02em}.vd-subtitle{margin:2px 0 0;font-size:11px;color:var(--text-secondary)}.vd-close{flex-shrink:0;width:28px;height:28px;background:transparent;border:1px solid var(--border-light);border-radius:var(--radius);color:var(--text-secondary);cursor:pointer;font-size:13px;display:flex;align-items:center;justify-content:center;transition:background .12s,color .12s}.vd-close:hover{background:var(--bg-card);color:var(--text-primary)}.vd-body{flex:1;overflow-y:auto;padding:0;scrollbar-width:thin;scrollbar-color:var(--border-light) transparent}.vd-body::-webkit-scrollbar{width:4px}.vd-body::-webkit-scrollbar-thumb{background:var(--border-light);border-radius:2px}.vd-section{padding:14px 20px;border-bottom:1px solid var(--border)}.vd-section:last-child{border-bottom:none}.vd-section-head{display:flex;align-items:center;gap:8px;margin-bottom:10px}.vd-badge{font-size:15px;line-height:1}.vd-section-title{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.12em;color:var(--text-secondary);display:flex;align-items:center;gap:6px}.vd-count{font-style:normal;background:var(--bg-card);border:1px solid var(--border-light);border-radius:10px;padding:0 7px;font-size:11px;color:var(--text-primary);font-family:monospace}.vd-tier-groups{display:flex;flex-direction:column;gap:8px}.vd-tier-group{display:flex;align-items:flex-start;gap:8px}.vd-tier-dot{width:8px;height:8px;border-radius:50%;flex-shrink:0;margin-top:3px}.vd-tier-label{font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.1em;color:var(--text-muted);width:46px;flex-shrink:0;padding-top:1px}.vd-name-list{display:flex;flex-wrap:wrap;gap:4px}.vd-chip{font-size:10px;font-family:monospace;padding:2px 7px;border-radius:3px}.vd-chip--ok{background:#48b4641f;border:1px solid rgba(72,180,100,.28);color:#7ad490}.vd-file-list{display:flex;flex-direction:column;gap:4px}.vd-file-row{display:flex;align-items:baseline;gap:8px;padding:5px 8px;border-radius:4px;font-size:11px}.vd-file-row--reject{background:#dc3c3c14;border:1px solid rgba(220,60,60,.22)}.vd-file-row--warn{background:#dca53214;border:1px solid rgba(220,165,50,.22)}.vd-file-name{font-family:monospace;color:var(--text-primary);flex-shrink:0}.vd-file-reason{color:var(--text-secondary);font-size:10px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.vd-tier-pill{font-size:9px;font-weight:700;text-transform:uppercase;letter-spacing:.1em;padding:1px 5px;border-radius:3px;border:1px solid;flex-shrink:0}.vd-dirty-note{margin:0 0 8px;font-size:11px;color:var(--text-secondary);line-height:1.5}.vd-empty{margin:0;font-size:11px;color:var(--text-muted)}.vd-empty--good{color:#48b46499}.vd-footer{padding:14px 20px;border-top:1px solid var(--border);display:flex;align-items:center;gap:12px;flex-shrink:0}.vd-footer-note{margin:0;flex:1;font-size:10px;color:var(--text-muted);line-height:1.5}.vd-dismiss-btn{flex-shrink:0;padding:7px 18px;background:var(--bg-card);border:1px solid var(--border-light);border-radius:var(--radius);color:var(--text-primary);font-size:12px;font-weight:600;cursor:pointer;transition:background .12s,border-color .12s}.vd-dismiss-btn:hover{background:var(--border-light);border-color:var(--text-muted)}.sg-contrast{margin:0 0 10px;padding:8px 10px;background:var(--bg-deep);border:1px solid var(--border);border-radius:var(--radius)}.sg-contrast-header{display:flex;align-items:center;gap:6px;margin-bottom:6px}.sg-contrast-label{font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.1em;color:var(--text-muted);flex:1}.sg-contrast-swatch{width:14px;height:14px;border-radius:3px;border:1px solid rgba(255,255,255,.12);flex-shrink:0;transition:background .1s}.sg-contrast-hex{font-size:10px;font-family:monospace;color:var(--text-secondary);letter-spacing:.04em}.sg-contrast-slider{width:100%;height:3px;-webkit-appearance:none;-moz-appearance:none;appearance:none;outline:none;cursor:pointer;border-radius:2px;display:block;background:linear-gradient(to right,#e0f2f7,#0a192f)!important}.sg-contrast-slider::-webkit-slider-thumb{-webkit-appearance:none;-moz-appearance:none;appearance:none;width:13px;height:13px;border-radius:50%;background:var(--thumb-color, #7bafd4);border:2px solid var(--bg-deep);box-shadow:0 0 0 1.5px #ffffff2e;transition:transform .1s}.sg-contrast-slider::-webkit-slider-thumb:hover{transform:scale(1.2)}.sg-contrast-slider::-moz-range-thumb{width:13px;height:13px;border-radius:50%;background:var(--thumb-color, #7bafd4);border:2px solid var(--bg-deep);box-shadow:0 0 0 1.5px #ffffff2e}.sg-contrast-hints{display:flex;justify-content:space-between;margin-top:4px;font-size:9px;color:var(--text-muted);letter-spacing:.04em}.cd-row{margin-bottom:2px}.cd-scale{display:flex;align-items:center;gap:6px;margin-top:5px;margin-bottom:8px}.cd-scale-low,.cd-scale-high{font-size:9px;font-weight:700;letter-spacing:.06em;color:var(--text-muted);white-space:nowrap;flex-shrink:0}.cd-scale-bar{flex:1;height:3px;background:var(--border);border-radius:2px;overflow:hidden}.cd-scale-fill{height:100%;border-radius:2px;background:linear-gradient(to right,var(--accent-sky),var(--text-primary));transition:width .1s}.gc-section{padding-bottom:4px}.gc-buttons{display:flex;gap:8px}.gc-apply-btn{flex:1;display:inline-flex;align-items:center;justify-content:center;gap:0;padding:9px 14px;border:none;border-radius:6px;cursor:pointer;font-size:11px;font-weight:700;letter-spacing:.07em;text-transform:uppercase;background:#1f6b3a;color:#d4f5e2;transition:background .15s,box-shadow .15s,transform .08s;white-space:nowrap}.gc-apply-btn:hover:not(:disabled){background:#26823f;box-shadow:0 0 0 2px #1f6b3a66}.gc-apply-btn:active:not(:disabled){transform:scale(.97)}.gc-apply-btn:disabled{opacity:.5;cursor:not-allowed}button.gc-apply-btn.gc-apply-btn--pending{background-color:#c88a3a!important;color:#1a1612;box-shadow:0 0 0 2px #c88a3ab3,0 0 14px #c88a3a4d;animation:gc-pulse 1.8s ease-in-out infinite}button.gc-apply-btn.gc-apply-btn--pending:hover:not(:disabled){background-color:#d69b4a!important;box-shadow:0 0 0 2px #d69b4a99}@keyframes gc-pulse{0%,to{box-shadow:0 0 0 2px #c88a3aa6,0 0 8px #c88a3a40}50%{box-shadow:0 0 0 3px #c88a3af2,0 0 20px #c88a3a8c}}.gc-clear-btn{padding:9px 13px;border:1px solid var(--border);border-radius:6px;cursor:pointer;font-size:11px;font-weight:600;letter-spacing:.05em;background:transparent;color:var(--text-muted);transition:background .12s,color .12s,border-color .12s;white-space:nowrap}.gc-clear-btn:hover:not(:disabled){background:#ffffff0d;color:var(--text-secondary);border-color:var(--text-muted)}.gc-clear-btn:disabled{opacity:.38;cursor:not-allowed}.gc-pending-hint{margin-top:8px;font-size:9.5px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:#4ec975}.gc-lock-btn{width:36px;flex-shrink:0;display:inline-flex;align-items:center;justify-content:center;padding:9px 0;border:1px solid var(--border-light);border-radius:6px;background:var(--bg-card);color:var(--text-muted);cursor:pointer;font-size:13px;line-height:1;transition:all .15s}.gc-lock-btn:hover{border-color:var(--accent-sky);color:var(--accent-sky)}.gc-lock-btn--on{background:#7bafd424;border-color:var(--accent-sky);color:var(--accent-sky)}.gc-mosaic-btn{flex-shrink:0;display:inline-flex;align-items:center;justify-content:center;padding:9px 10px;border:1px solid var(--border-light);border-radius:6px;background:var(--bg-card);color:var(--text-muted);cursor:pointer;font-size:11px;font-family:monospace;letter-spacing:.04em;transition:all .15s;white-space:nowrap}.gc-mosaic-btn:hover{border-color:#9ca9bf;color:#9ca9bf}.gc-mosaic-btn--on{background:#9ca9bf24;border-color:#9ca9bf;color:#9ca9bf;font-weight:700}.cd-flow-header{font-size:9px;font-weight:700;text-transform:uppercase;letter-spacing:.14em;color:var(--text-muted);margin:10px 0 8px;padding-top:10px;border-top:1px solid var(--border)}.cd-flow-note{font-size:9.5px;color:#c88a3acc;font-family:monospace;margin-top:4px;margin-bottom:6px}.weaver-row{display:flex;gap:6px;margin-top:2px}.weaver-btn{flex:1;padding:8px 0;text-align:center;font-size:11px;font-family:monospace;cursor:pointer;border-radius:var(--radius);transition:all .15s;display:flex;align-items:center;justify-content:center;gap:4px}.weaver-btn--save{background:#7bafd414;color:var(--accent-sky);border:1px solid rgba(123,175,212,.3)}.weaver-btn--save:hover{background:#7bafd42e}.weaver-btn--open{background:var(--bg-card);color:var(--text-secondary);border:1px solid var(--border-light)}.weaver-btn--open:hover{border-color:var(--accent-sky);color:var(--accent-sky)}.gc-spinner{display:inline-block;width:10px;height:10px;border:2px solid rgba(212,245,226,.3);border-top-color:#d4f5e2;border-radius:50%;animation:gc-spin .65s linear infinite;margin-right:7px;vertical-align:middle;flex-shrink:0}.gc-spinner--lg{width:24px;height:24px;border-width:3px;margin-right:0}@keyframes gc-spin{to{transform:rotate(360deg)}}.mural-wrap{position:relative;flex:1;display:flex;min-width:0;overflow:hidden}.mural-processing-overlay{position:absolute;top:0;right:0;bottom:0;left:0;z-index:30;background:#080c1699;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;pointer-events:none;animation:gc-fade-in .12s ease}.mural-processing-overlay>span:last-child{font-size:11px;font-weight:700;letter-spacing:.12em;text-transform:uppercase;color:#d4f5e2;opacity:.9}@keyframes gc-fade-in{0%{opacity:0}to{opacity:1}}.tp-wrap{margin-top:8px;display:flex;flex-direction:column;gap:5px;padding-top:8px;border-top:1px solid var(--border)}.tp-swatches{display:flex;flex-wrap:wrap;gap:3px;padding:5px;background:var(--bg-deep);border:1px solid var(--border);border-radius:4px;max-height:68px;overflow-y:auto}.tp-swatch{position:relative;width:20px;height:20px;border-radius:3px;border:1px solid rgba(255,255,255,.12);cursor:pointer;flex-shrink:0;display:flex;align-items:center;justify-content:center;background-clip:padding-box;transition:transform .1s,border-color .1s}.tp-swatch:hover{transform:scale(1.15);border-color:#ffffff80}.tp-swatch-x{display:none;font-size:8px;color:#ffffffe6;font-weight:700;line-height:1;text-shadow:0 0 3px rgba(0,0,0,.9);pointer-events:none}.tp-swatch:hover .tp-swatch-x{display:block}.tp-empty{font-size:9.5px;color:var(--text-muted);font-family:monospace;padding:5px 8px;background:var(--bg-deep);border:1px dashed var(--border);border-radius:4px;text-align:center}.tp-controls{display:flex;gap:4px;align-items:center}.tp-hex-input{flex:1;min-width:0;background:var(--bg-deep);color:var(--text-primary);border:1px solid var(--border);border-radius:3px;padding:4px 6px;font-size:10px;font-family:monospace;outline:none;transition:border-color .15s}.tp-hex-input:focus{border-color:var(--accent-sky)}.tp-hex-input::placeholder{color:var(--text-muted)}.tp-btn{padding:4px 7px;font-size:10px;font-family:monospace;background:var(--bg-deep);border:1px solid var(--border);border-radius:3px;cursor:pointer;flex-shrink:0;color:var(--text-muted);transition:all .12s;white-space:nowrap}.tp-btn:hover:not(:disabled){border-color:var(--accent-sky);color:var(--accent-sky)}.tp-btn:disabled{opacity:.3;cursor:not-allowed}.tp-btn--add{color:var(--accent-sky);border-color:#7bafd459;background:#7bafd414}.tp-btn--add:hover:not(:disabled){background:#7bafd433}.tp-btn--sync{color:var(--text-secondary)}.tp-btn--clear{color:#b45050b3;border-color:#b4505040}.tp-btn--clear:hover:not(:disabled){color:#c06060;border-color:#c8505080;background:#b43c3c14}.she-wrap{display:flex;flex-direction:column;gap:10px}.she-preset-row{display:flex;align-items:center;gap:8px}.she-preset-select{flex:1;min-width:0;background:var(--bg-deep);color:var(--text-primary);border:1px solid var(--border);border-radius:3px;padding:5px 8px;font-size:11px;outline:none;cursor:pointer;transition:border-color .15s}.she-preset-select:focus{border-color:var(--accent-sky)}.she-preset-desc{font-size:10px;color:var(--text-secondary);line-height:1.4;padding:2px 0 4px}.she-field{display:flex;flex-direction:column;gap:5px;margin-top:4px}.she-label{font-size:10px;font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:var(--text-secondary);flex-shrink:0}.she-chips{display:flex;flex-wrap:wrap;gap:4px;align-items:center;min-height:24px}.she-chip{display:inline-flex;align-items:center;gap:3px;padding:3px 7px;font-size:10px;font-family:monospace;border-radius:3px;border:1px solid var(--border);cursor:pointer;-webkit-user-select:none;user-select:none;transition:all .12s;white-space:nowrap}.she-chip--active{background:#7bafd426;border-color:#7bafd466;color:var(--accent-sky)}.she-chip--active:hover{background:#c850501f;border-color:#c8505059;color:#c08080}.she-chip-x{font-size:9px;opacity:.7}.she-chip--add{background:transparent;border-color:var(--border);color:var(--text-muted)}.she-chip--add:hover{border-color:#7bafd466;color:var(--accent-sky);background:#7bafd414}.she-quick-row{display:flex;flex-wrap:wrap;gap:3px}.she-add-row{display:flex;gap:5px;align-items:center}.she-input{width:80px;flex-shrink:0;background:var(--bg-deep);color:var(--text-primary);border:1px solid var(--border);border-radius:3px;padding:4px 6px;font-size:11px;outline:none;transition:border-color .15s}.she-input:focus{border-color:var(--accent-sky)}.she-input::placeholder{color:var(--text-muted)}.she-add-btn{padding:4px 9px;font-size:10px;background:#7bafd414;border:1px solid rgba(123,175,212,.25);border-radius:3px;cursor:pointer;color:var(--accent-sky);transition:all .12s}.she-add-btn:hover{background:#7bafd42e}.she-hint{font-size:9px;color:var(--text-muted);line-height:1.4}.she-gutter-row{display:flex;flex-direction:column;gap:5px;margin-top:4px}.tile-preview-wrap{position:absolute;bottom:0;left:0;right:0;display:flex;flex-direction:column;pointer-events:none;z-index:10}.tile-preview-grid{width:100%;aspect-ratio:1 / 1;image-rendering:pixelated;image-rendering:crisp-edges}.tile-preview-label{align-self:flex-end;margin:4px 8px;padding:2px 6px;font-size:9px;font-weight:600;letter-spacing:.06em;color:#ffffff8c;background:#00000073;border-radius:3px;pointer-events:none}.tile-preview-placeholder,.tile-preview-error{display:flex;align-items:center;justify-content:center;min-height:80px;font-size:11px;color:var(--text-muted);opacity:.7}.tile-preview-error{color:#c08080}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}html,body,#root{width:100%;height:100%;overflow:hidden}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,system-ui,sans-serif;-webkit-font-smoothing:antialiased}
