:root{--bg:#15171c;--panel:#1d2027;--panel2:#242832;--line:#313644;--ink:#e8eaed;--muted:#9aa3b2;--accent:#4da3ff;--accent2:#37d67a;--warn:#ffb454;--danger:#ff6b6b;}*{box-sizing:border-box;margin:0;padding:0}html,body{height:100%}body{font-family:-apple-system,BlinkMacSystemFont,"Segoe UI","PingFang SC","Microsoft YaHei",sans-serif;background:var(--bg);color:var(--ink);overflow:hidden;font-size:13px;}.app{display:flex;flex-direction:column;height:100vh}header{display:flex;align-items:center;gap:12px;padding:10px 16px;background:var(--panel);border-bottom:1px solid var(--line);flex-shrink:0;}header h1{font-size:15px;font-weight:600;letter-spacing:.3px}header .sub{color:var(--muted);font-size:11px}.spacer{flex:1}.btn{background:var(--panel2);border:1px solid var(--line);color:var(--ink);padding:6px 14px;border-radius:6px;cursor:pointer;font-size:12px;font-family:inherit;transition:.15s;white-space:nowrap;}.btn:hover{background:#2e3340;border-color:#454d5e}.btn.primary{background:var(--accent);border-color:var(--accent);color:#08121e;font-weight:600}.btn.primary:hover{background:#6bb5ff}.btn.ghost{background:transparent}.btn.danger{color:#ff8f8f;border-color:#5a3030}.btn.danger:hover{background:#3a2226;border-color:#8a4040}.btn:disabled{opacity:.4;cursor:not-allowed}main{display:flex;flex:1;min-height:0}.stage{flex:1;position:relative;overflow:hidden;background:linear-gradient(45deg,#1a1d23 25%,transparent 25%,transparent 75%,#1a1d23 75%) 0 0/24px 24px,linear-gradient(45deg,#1a1d23 25%,#20242c 25%,#20242c 75%,#1a1d23 75%) 12px 12px/24px 24px;display:flex;align-items:center;justify-content:center;}#main{display:block;cursor:crosshair}.dropzone{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:14px;border:2px dashed #3a4150;border-radius:12px;margin:24px;color:var(--muted);transition:.2s;text-align:center;padding:20px;}.dropzone.over{border-color:var(--accent);background:rgba(77,163,255,.08);color:var(--accent)}.dropzone .big{font-size:32px;opacity:.5}.dropzone h2{font-size:17px;font-weight:600;color:var(--ink)}.dropzone p{font-size:12px;line-height:1.9}.dropzone.hidden{display:none}.hint{position:absolute;left:14px;top:14px;background:rgba(20,23,28,.8);width:340px;max-width:calc(100% - 28px);border:1px solid var(--line);border-radius:11px;padding:9px 11px 11px;color:var(--muted);font-size:11px;line-height:1.5;pointer-events:none;box-shadow:0 10px 30px rgba(0,0,0,.24);backdrop-filter:blur(7px);}.hint.collapsed{width:auto;padding:6px 8px}.hint .hint-toggle{pointer-events:auto;display:flex;align-items:center;gap:6px;padding:2px 5px 2px 2px;border:0;background:transparent;color:var(--ink);font-family:inherit;font-size:11px;font-weight:600;cursor:pointer}.hint .hint-toggle:hover{color:var(--accent)}.hint .hint-toggle-icon{width:22px;height:22px;display:grid;place-items:center;border:1px solid var(--line);border-radius:5px;color:var(--accent);line-height:0;background:var(--panel2)}.collapse-glyph{width:12px;height:12px;display:block;transform-origin:50% 50%;transition:transform .18s}.collapse-glyph path{fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}.hint:not(.collapsed) .hint-toggle-icon .collapse-glyph{transform:rotate(180deg)}.hint .hint-body{margin-top:7px;padding-top:8px;border-top:1px solid rgba(255,255,255,.08)}.hint.collapsed .hint-body{display:none}.hint .hint-intro{margin-bottom:7px;color:#b8c0cc;font-size:10.5px}.hint .hint-grid{display:grid;grid-template-columns:1fr;gap:7px}.hint .hint-card{padding:8px 9px;border:1px solid rgba(255,255,255,.075);border-radius:8px;background:rgba(9,11,15,.28)}.hint .hint-card.wide{grid-column:1/-1}.hint .hint-card-title{display:flex;align-items:center;gap:6px;margin-bottom:4px;color:var(--accent);font-weight:700}.hint .hint-card-title .num{width:16px;height:16px;display:grid;place-items:center;border-radius:5px;background:rgba(77,163,255,.15);font:700 9px ui-monospace,monospace}.hint .hint-item{margin-top:3px}.hint .hint-item:first-of-type{margin-top:0}.hint .hint-item::before{content:'·';margin-right:5px;color:#647086}.hint .hint-feature{color:#d7dde7}.hint .hint-feature::before{color:var(--accent2)}.hint b{color:var(--ink);font-weight:600}.hint kbd{background:var(--panel2);border:1px solid var(--line);border-bottom-width:2px;border-radius:4px;padding:1px 5px;font-size:10px;font-family:ui-monospace,monospace;color:var(--ink);}.panel{width:350px;flex-shrink:0;background:var(--panel);border-left:1px solid var(--line);display:flex;flex-direction:column;overflow:hidden;}.panel-scroll{overflow-y:auto;flex:1;padding:14px}.panel-scroll::-webkit-scrollbar{width:9px}.panel-scroll::-webkit-scrollbar-thumb{background:#3a4150;border-radius:5px}.hist-bar{position:absolute;left:50%;bottom:14px;transform:translateX(-50%);display:none;align-items:center;gap:8px;z-index:6;padding:7px 9px;border-radius:11px;background:rgba(20,23,29,.86);border:1px solid #3a4150;box-shadow:0 6px 22px rgba(0,0,0,.5);backdrop-filter:blur(8px);}.hist-bar.show{display:flex}.hist-bar{width:max-content;max-width:calc(100% - 24px);flex-wrap:wrap;justify-content:center;gap:6px}.canvas-paint-tools{display:flex;align-items:center;gap:5px;flex-shrink:0}.hist-bar button.canvas-tool{width:32px;height:32px;padding:0;display:grid;place-items:center}.canvas-tool svg{width:17px;height:17px;fill:none;stroke:currentColor;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round}.canvas-tool .paint-chip{width:18px;height:18px;border-radius:4px;border:1px solid rgba(255,255,255,.55);background:#000}.color-editor-controls{padding:10px 14px;border-bottom:1px solid var(--line)}.color-editor-controls .row{margin-bottom:7px}.color-editor-controls .row select{min-width:0}.paint-extras{display:flex;align-items:center;gap:8px;margin-top:8px;color:var(--muted);font-size:11px}.paint-extras input[type=color]{width:36px;height:28px;padding:2px;background:var(--bg);border:1px solid var(--line);border-radius:5px}.paint-extras .btn{margin-left:auto;font-size:10px;padding:5px 8px}.float-prev{position:absolute;z-index:7;width:300px;max-width:calc(100% - 28px);background:rgba(20,23,29,.9);border:1px solid #3a4150;border-radius:10px;padding:9px;box-shadow:0 8px 26px rgba(0,0,0,.5);backdrop-filter:blur(8px);top:14px;right:14px;left:auto;bottom:auto;}.float-prev.pos-tl{top:14px;left:14px;right:auto;bottom:auto}.float-prev.pos-tr{top:14px;right:14px;left:auto;bottom:auto}.float-prev.pos-bl{bottom:14px;left:14px;right:auto;top:auto}.float-prev.pos-br{bottom:14px;right:14px;left:auto;top:auto}.float-prev.hidden{display:none}.float-prev.preview-15{width:450px}.float-prev.preview-2{width:600px}.float-prev .fp-head{display:flex;justify-content:space-between;align-items:center;gap:8px;font-size:11px;color:var(--muted);margin-bottom:7px}.float-prev .fp-size{font-family:ui-monospace,monospace;color:var(--accent)}.float-prev .fp-head-actions{display:flex;align-items:center;gap:7px}.float-prev .fp-scales{display:flex;align-items:center;border:1px solid var(--line);border-radius:6px;overflow:hidden}.float-prev .fp-scale{min-width:31px;height:22px;padding:0 5px;border:0;border-left:1px solid var(--line);background:transparent;color:var(--muted);font:10px ui-monospace,monospace;cursor:pointer}.float-prev .fp-scale:first-child{border-left:0}.float-prev .fp-scale:hover{color:var(--ink);background:rgba(77,163,255,.09)}.float-prev .fp-scale.active{color:#fff;background:var(--accent)}.float-prev .pv-wrap{margin-bottom:8px;display:grid;place-items:center;overflow:auto}.float-prev .pv-wrap canvas{width:auto;height:auto;max-width:none;display:block;border-radius:6px;background:#0d0f13}.preview-backgrounds{display:flex;align-items:center;gap:7px;margin-bottom:8px}.preview-backgrounds>span{font-size:10px;color:var(--muted);margin-right:2px}.preview-background{width:23px;height:23px;flex:none;padding:0;border:1px solid rgba(255,255,255,.35);border-radius:5px;cursor:pointer;background:var(--swatch);color:var(--check,#fff);position:relative}.preview-background[aria-pressed="true"]{outline:2px solid var(--accent);outline-offset:2px}.preview-background[aria-pressed="true"]::after{content:'✓';display:grid;place-items:center;position:absolute;inset:0;font:700 13px/1 sans-serif}.preview-background:focus-visible{outline:2px solid #fff;outline-offset:2px}.float-prev .fp-corners{display:flex;gap:6px;justify-content:center}.float-prev .fp-corner{flex:1;height:28px;padding:0;display:grid;place-items:center;font-size:0;line-height:0;background:var(--panel2);border:1px solid var(--line);border-radius:7px;color:var(--ink)}.float-prev .fp-corner svg{width:16px;height:16px;display:block;overflow:visible;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round;fill:none}.float-prev .fp-corner:hover{border-color:var(--accent);color:var(--accent)}.float-prev .fp-corner.active{border-color:var(--accent);background:rgba(77,163,255,.16)}.hist-bar .btn{flex:0 0 auto;padding:6px 13px;font-size:12px}.hist-bar .btn:disabled{opacity:.38;cursor:not-allowed}.hist-bar .btn:disabled:hover{background:var(--panel2);border-color:var(--line)}.hist-n{font-size:10px;color:var(--muted);font-family:ui-monospace,monospace;white-space:nowrap;min-width:40px;text-align:center;}.zoom-box{display:flex;align-items:center;gap:4px;flex:0 0 auto}.hist-bar .zbtn{padding:6px 8px;min-width:26px;text-align:center;line-height:1;font-size:12px}.zval{min-width:56px;font-family:ui-monospace,monospace;font-variant-numeric:tabular-nums}.hbar-sep{width:1px;height:18px;background:#3a4150;flex:0 0 auto;margin:0 2px}.group{margin-bottom:16px;background:var(--panel2);border-radius:9px;padding:12px;border:1px solid var(--line)}.group>h3{font-size:11px;font-weight:700;color:var(--accent);text-transform:uppercase;letter-spacing:.9px;margin-bottom:11px;display:flex;align-items:center;gap:6px;cursor:pointer;user-select:none;}.group>h3 .n{width:16px;height:16px;border-radius:4px;background:var(--accent);color:#08121e;display:inline-flex;align-items:center;justify-content:center;font-size:10px;}.group>h3 .help{margin-left:auto;flex-shrink:0;position:relative;width:14px;height:14px;border-radius:50%;border:1px solid var(--line);color:var(--muted);font-size:9px;font-weight:700;line-height:1;font-family:inherit;display:inline-flex;align-items:center;justify-content:center;cursor:help;user-select:none;}.group>h3 .help:hover,.group>h3 .help.show{color:var(--accent);border-color:var(--accent);background:rgba(77,163,255,.12)}.help-tip{position:absolute;right:-4px;top:calc(100% + 7px);width:224px;max-width:224px;background:#0d1015;border:1px solid #3a4250;border-radius:7px;padding:9px 11px;color:var(--ink);font-size:10.5px;font-weight:400;line-height:1.65;letter-spacing:0;text-transform:none;text-align:left;white-space:normal;box-shadow:0 10px 26px rgba(0,0,0,.6);opacity:0;visibility:hidden;transition:.14s;z-index:80;pointer-events:none;}.help:hover .help-tip,.help:focus .help-tip,.help.show .help-tip{opacity:1;visibility:visible;pointer-events:auto;}.help-tip::before{content:'';position:absolute;top:-9px;left:0;right:0;height:9px}.help-tip b{color:var(--accent);font-weight:600}.help-tip kbd{background:#232936;border:1px solid #3a4250;border-radius:3px;padding:0 4px;font-size:9.5px;font-family:inherit;}.help-tip hr{border:0;border-top:1px solid #2b323e;margin:7px 0}.row{display:flex;align-items:center;gap:9px;margin-bottom:9px}.row:last-child{margin-bottom:0}.row label{flex-shrink:0;color:var(--muted);font-size:11.5px;min-width:62px}.row input[type=range]{flex:1;accent-color:var(--accent);height:4px;cursor:pointer}.row .val{min-width:44px;text-align:right;font-family:ui-monospace,monospace;font-size:11px;color:var(--ink);background:var(--bg);padding:2px 6px;border-radius:4px;}.row select,.row input[type=number],.row input[type=text]{flex:1;background:var(--bg);border:1px solid var(--line);color:var(--ink);padding:5px 8px;border-radius:5px;font-size:11.5px;font-family:inherit;}.row .full{width:100%}.file-name-row{align-items:center;gap:8px;margin-bottom:10px}.row.file-name-row input[type=text]{min-width:0;padding:7px 9px;font-size:12px}.file-save-status{flex:0 0 auto;min-width:72px;max-width:112px;text-align:center!important;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:var(--muted)!important;background:rgba(12,15,20,.72)!important;border:1px solid var(--line);padding:5px 7px!important;border-radius:5px!important;}.project-library-row{display:grid;grid-template-columns:minmax(0,1fr) 58px;gap:7px;margin-bottom:9px;position:relative}.project-picker{position:relative;min-width:0}.project-picker-trigger{width:100%;height:38px;padding:3px 7px 3px 4px;display:grid;grid-template-columns:31px minmax(0,1fr) 16px;align-items:center;gap:7px;background:var(--bg);border:1px solid var(--line);border-radius:6px;color:var(--ink);font-size:11px;font-family:inherit;text-align:left;cursor:pointer}.project-picker-trigger:hover,.project-picker.open .project-picker-trigger{border-color:#4a5364;background:#191c22}.project-picker-trigger.empty{grid-template-columns:minmax(0,1fr) 16px;padding-left:8px}.project-picker-thumb,.project-option-thumb,.import-project-thumb{display:block;object-fit:contain;background-color:#171a20;border:1px solid var(--line);border-radius:4px;background-image:linear-gradient(45deg,#262b34 25%,transparent 25%),linear-gradient(-45deg,#262b34 25%,transparent 25%),linear-gradient(45deg,transparent 75%,#262b34 75%),linear-gradient(-45deg,transparent 75%,#262b34 75%);background-size:8px 8px;background-position:0 0,0 4px,4px -4px,-4px 0}.project-picker-thumb{width:31px;height:31px}.project-picker-text{min-width:0;display:flex;flex-direction:column;gap:1px}.project-picker-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:600}.project-picker-meta{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--muted);font-size:9.5px}.project-picker-arrow{width:13px;height:13px;color:var(--muted);transition:transform .15s}.project-picker.open .project-picker-arrow{transform:rotate(180deg)}.project-menu{display:none;position:absolute;left:0;right:0;top:calc(100% + 5px);z-index:90;max-height:260px;overflow:auto;padding:4px;background:#171a20;border:1px solid #424a59;border-radius:7px;box-shadow:0 12px 28px rgba(0,0,0,.55)}.project-picker.open .project-menu{display:block}.project-option{width:100%;padding:5px;display:grid;grid-template-columns:40px minmax(0,1fr);align-items:center;gap:8px;border:0;border-radius:5px;background:transparent;color:var(--ink);font-size:11px;font-family:inherit;text-align:left;cursor:pointer}.project-option:hover,.project-option[aria-selected="true"]{background:rgba(77,163,255,.13)}.project-option-thumb{width:40px;height:40px}.project-option-name{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:600}.project-option-meta{display:block;margin-top:2px;color:var(--muted);font-size:9.5px}.project-picker-empty{padding:10px;color:var(--muted);font-size:10.5px;text-align:center}.project-library-row .btn{min-width:58px;padding-left:7px;padding-right:7px}.file-group .project-library-row{grid-template-columns:minmax(0,1fr) 48px;gap:6px;margin-bottom:6px}.file-group .project-picker-trigger{height:34px;grid-template-columns:26px minmax(0,1fr) 13px;gap:6px}.file-group .project-picker-trigger.empty{grid-template-columns:minmax(0,1fr) 13px}.file-group .project-picker-thumb{width:26px;height:26px}.file-group .project-picker-trigger .project-picker-meta{display:none}.file-group .project-library-row .btn{min-width:0;padding:0 7px}.file-group .file-name-row{display:grid;grid-template-columns:minmax(0,1fr) auto 48px;gap:6px;margin-bottom:8px}.file-group .file-name-row input[type=text]{width:100%;height:32px;padding:5px 8px;font-size:12px}.file-group .file-save-status{min-width:0;max-width:86px;padding:0!important;border:0;background:transparent!important;text-align:right!important;font-size:10px;border-radius:0!important}.file-group .file-name-row .btn{height:32px;padding:0 6px}.file-actions{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:5px}.file-actions .btn{height:30px;min-width:0;padding:0 8px;font-size:11px}.file-actions .file-manage{background:transparent;color:var(--muted)}.file-actions .file-delete{background:transparent;color:#ffb0b0;border-color:#50353c}@media(pointer:coarse){.file-group .project-picker-trigger,.file-group .file-name-row input[type=text],.file-group .file-name-row .btn,.file-actions .btn{min-height:36px}}.import-project-preview{display:grid;grid-template-columns:46px minmax(0,1fr) auto;align-items:center;gap:8px;margin:7px 0;padding:6px;background:var(--bg);border:1px solid var(--line);border-radius:7px}.import-project-preview[hidden]{display:none}.import-project-thumb{width:46px;height:46px}.import-project-copy{min-width:0}.import-project-copy strong,.import-project-copy span{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.import-project-copy strong{font-size:11px}.import-project-copy span{margin-top:3px;color:var(--muted);font-size:9.5px}.import-project-actions{display:flex;flex-direction:column;gap:4px}.import-project-actions .btn{min-width:44px!important;padding:3px 6px!important;font-size:10px}.chk{display:flex;align-items:center;gap:7px;cursor:pointer;color:var(--muted);font-size:11.5px}.chk input{accent-color:var(--accent);cursor:pointer;width:14px;height:14px}.chk:hover{color:var(--ink)}.btns{display:flex;gap:7px;flex-wrap:wrap}.btns .btn{flex:1;min-width:78px}.btn.full{width:100%}.export-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:7px}.export-item{display:grid;grid-template-columns:minmax(0,1fr) 38px;min-width:0}.export-download{width:100%;min-width:0;padding:9px 10px;text-align:left;border-radius:6px 0 0 6px}.export-copy{width:38px;min-width:38px;margin-left:-1px;padding:0;display:grid;place-items:center;border-radius:0 6px 6px 0;color:var(--accent);font-size:16px;line-height:1}.export-copy:hover{position:relative;z-index:1;color:#fff;border-color:var(--accent);background:rgba(77,163,255,.16)}.export-copy.copied{color:var(--accent2);border-color:var(--accent2);background:rgba(55,214,122,.12)}.export-item.is-primary .export-copy{border-color:var(--accent);background:rgba(77,163,255,.14)}.export-item.is-primary .export-copy:hover{background:rgba(77,163,255,.28)}.watermark-box{margin-top:9px;padding:7px;background:var(--bg);border:1px solid var(--line);border-radius:7px}.watermark-head{display:flex;align-items:center;justify-content:space-between;gap:8px}.watermark-head label{color:var(--ink);font-size:11px;font-weight:600}.watermark-head span{color:#687386;font-size:9.5px}.watermark-switch{display:flex;align-items:center;gap:7px;cursor:pointer}.watermark-switch input{width:14px;height:14px;accent-color:var(--accent);cursor:pointer}.watermark-editor{margin-top:8px}.watermark-editor[hidden],.watermark-last[hidden]{display:none}.watermark-last{margin-top:6px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#687386;font-size:10.5px}.watermark-input{display:grid;grid-template-columns:minmax(0,1fr) 28px}.watermark-input input{min-width:0;padding:5px 8px;background:#11141a;border:1px solid var(--line);border-radius:5px 0 0 5px;color:var(--ink);font-size:11px;font-family:inherit}.watermark-input input:focus{outline:1px solid var(--accent);border-color:var(--accent)}.watermark-input .btn{min-width:28px;width:28px;margin-left:-1px;padding:0;border-radius:0 5px 5px 0;color:var(--muted);font-size:14px}.watermark-tags{display:flex;flex-wrap:wrap;gap:4px;margin-top:6px}.watermark-tags:empty{display:none}.watermark-tag{display:inline-flex;align-items:center;min-width:0;border:1px solid #3a4250;border-radius:999px;background:#202530;overflow:hidden}.watermark-tag-use,.watermark-tag-remove{border:0;background:transparent;color:var(--muted);font-family:inherit;cursor:pointer}.watermark-tag-use{max-width:190px;padding:3px 5px 3px 8px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:9.5px}.watermark-tag-remove{width:21px;height:21px;padding:0;display:grid;place-items:center;font-size:11px}.watermark-tag:hover{border-color:#536078}.watermark-tag-use:hover{color:var(--ink)}.watermark-tag-remove:hover{color:#ff8f8f;background:rgba(255,107,107,.1)}.grid-stepper{flex:1;display:grid;grid-template-columns:36px minmax(56px,1fr) 36px;gap:7px;align-items:center}.grid-stepper .btn{width:36px;min-width:36px;padding:6px 0;text-align:center}.row .grid-stepper .val{box-sizing:border-box;width:100%;min-width:0;text-align:center;font-variant-numeric:tabular-nums}.dimension-row{display:grid;grid-template-columns:minmax(0,1fr) 28px minmax(0,1fr);align-items:center;gap:6px;margin-bottom:10px}.dimension-control{display:grid;grid-template-columns:auto 24px minmax(0,1fr) 24px;align-items:center;gap:3px;min-width:0}.dimension-control>span:first-child{color:var(--muted);font-size:12px}.dimension-control .btn{min-width:24px;width:24px;padding:5px 0}.dimension-control .val{min-width:0;width:100%;text-align:center;font-variant-numeric:tabular-nums}.grid-count-input{height:28px;padding:3px 2px!important;border:1px solid var(--line);border-radius:5px;background:var(--bg);color:var(--ink);font:11px ui-monospace,monospace;appearance:textfield;-moz-appearance:textfield;}.grid-count-input::-webkit-inner-spin-button,.grid-count-input::-webkit-outer-spin-button{appearance:none;margin:0}.grid-count-input:focus{outline:1px solid var(--accent);border-color:var(--accent)}.aspect-lock{width:28px;min-width:28px;height:28px;padding:0;display:grid;place-items:center;color:var(--muted);font-size:11px}.aspect-lock .lock-icon{font-size:13px;line-height:1}.aspect-lock[aria-pressed="true"]{color:var(--accent2);border-color:var(--accent2);background:rgba(55,214,122,.1)}.grid-group .dimension-row{grid-template-columns:minmax(0,1fr) 30px minmax(0,1fr);align-items:end;gap:8px;margin-bottom:12px}.grid-group .dimension-control{display:flex;flex-direction:column;align-items:stretch;gap:5px}.grid-group .dimension-control>label{font-size:11px;color:var(--muted);padding-left:1px}.dimension-stepper{display:grid;grid-template-columns:28px minmax(0,1fr) 28px;align-items:center;height:34px;background:var(--bg);border:1px solid var(--line);border-radius:7px;overflow:hidden}.grid-group .dimension-stepper .btn{width:28px;min-width:0;height:32px;padding:0;border:0;border-radius:0;background:transparent;font-size:16px;color:var(--muted)}.grid-group .dimension-stepper .btn:hover{background:var(--panel2);color:var(--ink)}.grid-group .dimension-stepper .grid-count-input{height:32px;border:0;border-radius:0;background:transparent;font-size:14px;font-weight:600;outline:0;box-shadow:none}.dimension-stepper:focus-within{border-color:var(--accent);box-shadow:0 0 0 1px var(--accent)}.grid-group .aspect-lock{height:30px;width:30px;min-width:30px;margin-bottom:2px;padding:0;display:flex;align-items:center;justify-content:center;line-height:0;border-color:transparent;background:transparent;color:var(--muted)}.grid-group .aspect-lock:hover{background:var(--panel2);color:var(--ink)}.grid-group .aspect-lock[aria-pressed="true"]{color:var(--accent2);background:rgba(55,214,122,.13);border-color:rgba(55,214,122,.35)}.grid-group .lock-icon{width:18px;height:18px;display:block;flex:none;margin:0;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}.grid-group .grid-sampling{gap:8px;margin-bottom:8px}.grid-group .grid-sampling label{min-width:0;flex:none;font-size:11px}.grid-group .grid-sampling select{min-width:0;height:32px;padding:4px 7px;border-radius:6px}.grid-display{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:5px;margin-bottom:9px}.grid-display .chk{justify-content:center;gap:4px;padding:6px 2px;border:1px solid var(--line);border-radius:6px;font-size:10.5px;white-space:nowrap;min-width:0}.grid-display .chk input{width:12px;height:12px;flex-shrink:0}.grid-display .chk:has(input:checked){background:rgba(77,163,255,.06);border-color:#3f5066;color:var(--ink)}.grid-group .grid-auto{height:32px;display:flex;align-items:center;justify-content:center;gap:6px;background:transparent;color:var(--accent);font-size:11px;padding:0 8px}.grid-auto svg{width:14px;height:14px;fill:none;stroke:currentColor;stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round}@media(pointer:coarse){.grid-group .dimension-stepper{height:38px}.grid-group .dimension-stepper .btn,.grid-group .dimension-stepper .grid-count-input{height:36px}.grid-group .aspect-lock{height:34px}.grid-group .grid-auto,.grid-display .chk{min-height:36px}}.group.collapsed{padding-bottom:10px}.group.collapsed>h3{margin-bottom:0}.group.collapsed>.group-body{display:none}.color-stats-group>h3 .collapsed-stats{display:none;min-width:0;flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--muted);font-size:10px;font-weight:500;letter-spacing:0;text-transform:none;font-family:ui-monospace,monospace}.color-stats-group.collapsed>h3 .collapsed-stats{display:block}.color-stats-group.collapsed>h3 .help{display:none}.group-collapse{flex:0 0 auto;width:22px;height:22px;padding:0;margin-left:auto;border:0;border-radius:5px;display:grid;place-items:center;background:transparent;color:var(--muted);cursor:pointer;font-family:inherit;font-size:0;line-height:0;transition:.15s;}.group>h3 .help+.group-collapse{margin-left:0}.group-collapse:hover{background:rgba(77,163,255,.12);color:var(--accent)}.group:not(.collapsed) .group-collapse .collapse-glyph{transform:rotate(180deg)}.tool-modes{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:7px;margin-bottom:8px}.tool-modes.three{grid-template-columns:repeat(3,minmax(0,1fr))}.tool-modes .btn{min-width:0;padding:7px 6px}.tool-status{min-height:31px;display:flex;align-items:center;justify-content:space-between;gap:8px;margin:7px 0;padding:7px 9px;border-radius:6px;background:var(--bg);border:1px solid var(--line);color:var(--muted);font-size:11px;line-height:1.35;}.tool-status strong{color:var(--ink);font-weight:600;text-align:right}.flow-hint{font-size:10.5px;color:var(--muted);line-height:1.55;margin-top:7px}.flow-hint b{color:var(--ink)}.bg-tools{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:5px;margin-bottom:10px}.bg-tools .btn{height:33px;display:flex;align-items:center;justify-content:center;gap:6px;padding:0 6px;font-size:11px}.bg-tools svg{width:14px;height:14px;fill:none;stroke:currentColor;stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round}.bg-group .bg-tolerance{gap:8px;margin-bottom:9px}.bg-group .bg-tolerance label{min-width:0;flex:none;font-size:11px}.bg-readout{padding:8px 9px;margin-bottom:9px;border:1px solid var(--line);border-radius:7px;background:var(--bg)}.bg-instruction{display:block;color:var(--ink);font-size:11px;line-height:1.5}.bg-summary{display:flex;align-items:center;justify-content:space-between;gap:6px;margin-top:4px}.bg-summary strong{font-size:10.5px;font-weight:500;color:var(--muted);line-height:1.4}.bg-group.has-candidates .bg-summary strong{color:#ff9dc4}.bg-group .bg-clear{padding:2px 0;border:0;background:transparent;font-size:10px;color:var(--muted);text-decoration:underline;text-underline-offset:3px}.bg-clear[hidden]{display:none}.bg-actions{display:grid;grid-template-columns:minmax(0,1fr) 92px;gap:5px}.bg-actions .btn{height:32px;padding:0 8px;font-size:11px}@media(pointer:coarse){.bg-tools .btn,.bg-actions .btn{min-height:36px}}.paint-color-row{display:grid;grid-template-columns:auto 38px minmax(0,1fr);align-items:center;gap:7px;margin-bottom:8px}.paint-color-row label{color:var(--muted);font-size:11.5px}.paint-color-row input[type=color]{width:100%;height:30px;padding:2px;border:1px solid var(--line);border-radius:6px;background:var(--bg);cursor:pointer}.paint-color-row .btn{min-width:0;padding:6px 7px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.btn.subtle-danger{color:#ff9b9b;background:transparent;border-color:#56343a}.btn.subtle-danger:hover{background:#382328;border-color:#87505a}.visually-hidden{position:absolute!important;width:1px!important;height:1px!important;padding:0!important;margin:-1px!important;overflow:hidden!important;clip:rect(0,0,0,0)!important;white-space:nowrap!important;border:0!important}.note{font-size:10.5px;color:var(--muted);line-height:1.65;margin-top:8px}#preview{width:auto;height:auto;max-width:none;image-rendering:pixelated;border:1px solid var(--line);border-radius:7px;background-color:#14171d;display:block;background-image:linear-gradient(45deg,#252a33 25%,transparent 25%),linear-gradient(-45deg,#252a33 25%,transparent 25%),linear-gradient(45deg,transparent 75%,#252a33 75%),linear-gradient(-45deg,transparent 75%,#252a33 75%);background-size:16px 16px;background-position:0 0,0 8px,8px -8px,-8px 0;}.pv-wrap{position:relative;margin-bottom:10px}.stats{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:5px;margin-bottom:9px;}.stat{min-width:0;background:var(--bg);border-radius:6px;padding:6px 3px;text-align:center}.stat .k{color:var(--muted);font-size:10px}.stat .v{overflow:hidden;text-overflow:ellipsis;font-size:13px;font-weight:700;font-family:ui-monospace,monospace;margin-top:1px}.stat.stat-clean{grid-column:1/-1;display:flex;align-items:center;justify-content:space-between;gap:8px;padding:6px 9px;text-align:left}.stat.stat-clean .v{flex:0 0 auto;margin:0;font-size:11px}.clean-summary{display:flex;align-items:center;flex-wrap:wrap;gap:3px 8px;min-width:0;flex:1}.stat.stat-clean .clean-summary .v{flex-shrink:1;white-space:normal;overflow-wrap:anywhere}.map-preview{flex:none;gap:5px;font-size:10.5px;white-space:nowrap;padding:3px 5px;border-radius:4px}.map-preview input{width:13px;height:13px}.map-preview:has(input:checked){color:var(--accent);background:rgba(77,163,255,.09)}.swatches{display:flex;flex-wrap:wrap;gap:3px;margin-top:8px}.swatches.collapsed{overflow:hidden}.sw-toggle{width:100%;margin-top:7px;padding:4px 0;font-size:10.5px;color:var(--muted);background:transparent;border:1px dashed var(--line);}.sw-toggle:hover{color:var(--accent);border-color:var(--accent);background:rgba(77,163,255,.08)}.batch-color-status{margin-top:7px;color:#ffb454;font-size:10px;line-height:1.4}.sw{width:26px;height:26px;border-radius:4px;border:1px solid rgba(255,255,255,.14);cursor:pointer;position:relative;transition:.12s;}.sw:hover{transform:scale(1.14);z-index:2;border-color:var(--ink)}.sw.selected{z-index:3;border-color:#fff;outline:2px solid var(--accent);outline-offset:1px;box-shadow:0 0 0 3px rgba(77,163,255,.2),0 0 12px rgba(77,163,255,.7)}.sw.replaced{border-color:#ffb454;box-shadow:inset 0 0 0 1px #ffb454}.sw .edited-mark{position:absolute;right:-3px;top:-5px;z-index:4;width:12px;height:12px;border-radius:50%;display:grid;place-items:center;background:#ffb454;color:#261600;font:700 8px/1 sans-serif;box-shadow:0 1px 4px rgba(0,0,0,.7)}.sw .cnt{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;font-size:9px;font-weight:700;color:#fff;text-shadow:0 1px 3px rgba(0,0,0,.95);font-family:ui-monospace,monospace;}.sw .code{position:absolute;bottom:-1px;left:0;right:0;text-align:center;font-size:7px;background:rgba(0,0,0,.68);color:#fff;border-radius:0 0 3px 3px;font-family:ui-monospace,monospace;}.toast{position:fixed;bottom:90px;left:50%;transform:translateX(-50%) translateY(12px);max-width:calc(100vw - 32px);background:var(--accent2);color:#06210f;padding:9px 20px;border-radius:7px;font-size:12.5px;font-weight:600;opacity:0;transition:.28s;z-index:99;pointer-events:none;}.toast.show{opacity:1;transform:translateX(-50%) translateY(0)}.modal{position:fixed;inset:0;background:rgba(6,10,16,.84);z-index:200;display:none;align-items:center;justify-content:center;padding:24px;}.modal.show{display:flex}.modal-box{background:var(--panel);border:1px solid var(--line);border-radius:12px;width:min(940px,94vw);max-height:88vh;display:flex;flex-direction:column;overflow:hidden;}.modal-head{display:flex;align-items:center;gap:10px;padding:11px 14px;border-bottom:1px solid var(--line);font-size:12.5px;}.modal-head b{font-family:ui-monospace,monospace;word-break:break-all}.modal-body{overflow:auto;padding:14px;background:#0d0f13;display:flex;justify-content:center}.modal-body img{max-width:100%;image-rendering:pixelated;border:1px solid var(--line);border-radius:6px}.modal-body textarea{width:100%;height:44vh;background:var(--bg);color:var(--ink);border:1px solid var(--line);border-radius:6px;padding:10px;font-family:ui-monospace,monospace;font-size:11.5px;resize:vertical;}.modal-foot{display:flex;align-items:center;gap:9px;padding:11px 14px;border-top:1px solid var(--line)}.modal-foot .btn{flex:0 0 auto;text-decoration:none;display:inline-flex;align-items:center}.modal-foot .note{margin:0;flex:1;min-width:0}.color-editor .modal-box{width:min(760px,94vw)}.color-editor-current{display:flex;align-items:center;gap:9px;color:var(--muted);font-size:11px}.color-editor-current .sample{width:24px;height:24px;border-radius:5px;border:1px solid rgba(255,255,255,.3)}.color-editor .modal-body{display:block;padding:12px;min-height:180px}.batch-palette{display:grid;grid-template-columns:repeat(auto-fill,minmax(48px,1fr));gap:6px;width:100%}.palette-color{height:44px;min-width:0;padding:0;border:1px solid rgba(255,255,255,.18);border-radius:6px;position:relative;cursor:pointer;overflow:hidden}.palette-color:hover,.palette-color:focus{z-index:2;outline:2px solid #fff;outline-offset:1px}.palette-color .palette-code{position:absolute;left:0;right:0;bottom:0;padding:2px 1px;background:rgba(0,0,0,.7);color:#fff;font:8px ui-monospace,monospace;text-align:center}.palette-color.current{z-index:3;outline:3px solid #fff;outline-offset:1px;box-shadow:0 0 0 5px var(--accent),inset 0 0 0 2px rgba(0,0,0,.65)}.palette-color.current::after{content:'✓';position:absolute;top:3px;right:3px;width:18px;height:18px;display:grid;place-items:center;border-radius:50%;background:#fff;color:#111;box-shadow:0 1px 4px rgba(0,0,0,.6);font:800 13px/1 sans-serif;pointer-events:none}.palette-color.current .palette-code{background:#1264b8;color:#fff;font-weight:700}.btn.restore-color{color:#ffbd72;border-color:#875a31;background:rgba(255,180,84,.08)}.archive-manager .modal-box{width:min(680px,94vw)}.archive-manager .modal-body{display:block;min-height:100px}.archive-summary{padding:10px 14px;color:var(--muted);font-size:12px;line-height:1.6;border-bottom:1px solid var(--line)}.archive-toolbar{display:flex;align-items:center;gap:10px;margin-bottom:10px;color:var(--muted);font-size:12px}.archive-row{display:grid;grid-template-columns:18px 40px minmax(0,1fr);align-items:center;gap:10px;padding:10px 6px;border-bottom:1px solid var(--line);cursor:pointer}.archive-row:has(input:checked){background:rgba(77,163,255,.12)}.archive-row input{accent-color:var(--accent);width:16px;height:16px}.archive-name{display:block;overflow-wrap:anywhere;font-size:13px;font-weight:600}.archive-meta{display:block;color:var(--muted);font-size:11px;margin-top:4px;line-height:1.5}.archive-manager .modal-foot{flex-wrap:wrap}@media(min-width:821px){.panel-scroll{padding:10px}.group{margin-bottom:9px;padding:9px;border-radius:8px}.group>h3{min-height:22px;margin-bottom:7px;line-height:1.2}.group.collapsed{padding-top:7px;padding-bottom:7px}.group-collapse{width:20px;height:20px}.row{gap:7px;margin-bottom:6px}.row select,.row input[type=number],.row input[type=text]{padding:4px 7px}.row .val{padding:2px 5px}.panel .btn{padding:5px 10px}.btns{gap:5px}.file-name-row{gap:6px;margin-bottom:7px}.row.file-name-row input[type=text]{padding:5px 8px}.file-save-status{padding:4px 6px!important}.project-library-row{gap:5px;margin-bottom:7px}.project-picker-trigger{height:36px}.dimension-row{gap:6px;margin-bottom:7px}.dimension-control{grid-template-columns:auto 24px minmax(0,1fr) 24px;gap:3px}.dimension-control .btn{min-width:24px;width:24px;padding:3px 0}.grid-count-input{height:26px}.aspect-lock{padding:0}.tool-modes{gap:5px;margin-bottom:6px}.tool-modes .btn{padding:5px 5px}.tool-status{min-height:27px;margin:5px 0;padding:5px 7px}.flow-hint{line-height:1.45;margin-top:5px}.paint-color-row{margin-bottom:6px}.paint-color-row input[type=color]{height:27px}.note{line-height:1.5;margin-top:6px}.stats{gap:4px;margin-bottom:6px}.stat{padding:4px 2px}.stat.stat-clean{padding:4px 7px}.swatches{margin-top:6px}.sw-toggle{margin-top:5px}.batch-color-status{margin-top:5px}.export-grid{gap:5px}.export-download{padding:7px 8px}.watermark-box{margin-top:7px;padding:6px}}@media(max-width:820px){html,body{height:auto;min-height:100%;overflow:auto}body{font-size:14px}.app{height:auto;min-height:100vh}header{position:sticky;top:0;z-index:100;flex-wrap:wrap;padding:9px 12px}header .sub{display:none}header .home-link{order:-1}header .spacer{display:none}header .btn{padding:7px 10px}main{flex-direction:column;min-height:0}.stage{min-height:62vh;height:62vh}.panel{width:100%;border-left:0;border-top:1px solid var(--line);overflow:visible}.panel-scroll{overflow:visible;padding:12px}.hint{display:none!important}.float-prev{width:min(250px,52vw)}.group{padding:13px}.row label,.chk{font-size:13px}.row select,.row input[type=number],.row input[type=text]{font-size:14px}}@media(max-width:1080px) and (min-width:821px){.hint{width:340px}}@media(max-width:520px){header h1{font-size:14px}header #btnResetGrid,header #btnFit{display:none}.stage{min-height:56vh;height:56vh}.dropzone{margin:12px}.dropzone h2{font-size:16px}.dropzone p{font-size:13px}.float-prev{width:46vw;top:8px!important;right:8px!important;left:auto!important;bottom:auto!important}.hist-bar{bottom:8px;max-width:calc(100% - 16px);gap:4px}.hist-bar .btn{padding:7px 8px}.hist-n{display:none}.export-grid{grid-template-columns:1fr}.modal{padding:10px}}