:root{--brand: #f5b800;--brand-ink: #1a1a1a;--bg: #f3f4f6;--panel: #ffffff;--line: #e4e6ea;--line-strong: #cfd3da;--text: #1a1a1a;--muted: #6b7280;--accent: #2563eb;--accent-bg: #e8f0fe;--danger: #c0392b;font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif;color:var(--text)}*{box-sizing:border-box}body{margin:0;background:var(--bg)}button{font-family:inherit}.app{display:flex;flex-direction:column;height:100vh}.topbar{display:flex;align-items:center;gap:14px;padding:10px 16px;background:var(--panel);border-bottom:1px solid var(--line);flex-shrink:0}.logo{font-weight:800;font-size:17px;letter-spacing:-.3px}.logo b{color:var(--brand)}.topbar .spacer{flex:1}.viewzoom{display:flex;align-items:center;gap:8px;margin-right:14px}.viewzoom button{width:28px;height:28px;border-radius:7px;border:1px solid var(--line-strong);background:#fff;font-size:16px;cursor:pointer;color:var(--text);line-height:1;padding:0}.viewzoom button:hover{background:#f3f4f6}.viewzoom #vz-val{font-size:13px;font-weight:700;min-width:44px;text-align:center;cursor:pointer;color:var(--text)}.workspace{display:flex;flex:1;min-height:0}.files{width:210px;flex-shrink:0;background:var(--panel);border-right:1px solid var(--line);display:flex;flex-direction:column;min-height:0}.files h2,.controls h2{font-size:12px;text-transform:uppercase;letter-spacing:.6px;color:var(--muted);margin:0;padding:14px 14px 8px}.dropzone{margin:4px 12px 10px;padding:18px 10px;border:2px dashed var(--line-strong);border-radius:10px;text-align:center;color:var(--muted);font-size:12.5px;cursor:pointer;transition:all .12s}.dropzone:hover,.dropzone.over{border-color:var(--brand);background:#fffdf3;color:var(--brand-ink)}.dropzone .big{font-size:22px;display:block;margin-bottom:4px}.tilelist{overflow-y:auto;padding:0 12px 12px;flex:1}.tile-item{display:flex;align-items:center;gap:8px;padding:7px 8px;margin-bottom:6px;background:#fafafa;border:1px solid var(--line);border-radius:8px;font-size:12px;cursor:grab;-webkit-user-select:none;user-select:none}.tile-item:hover{border-color:var(--line-strong)}.tile-item .thumb{width:30px;height:38px;flex-shrink:0;border-radius:3px;border:1px solid var(--line);object-fit:cover;background:#fff}.tile-item .name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.tile-item.placed{opacity:.5}.canvas-wrap{flex:1;overflow:auto;padding:24px;text-align:center}#pages{display:inline-flex;flex-direction:column;align-items:center;gap:22px;text-align:left}.page-label{font-size:11px;color:var(--muted);margin-bottom:4px;text-align:center}.page{background:#fff;box-shadow:0 2px 12px #00000024;display:grid;position:relative}.cell{position:relative;overflow:hidden;background:#fff;outline:1px dashed var(--line-strong);outline-offset:-1px}.cell.empty{display:flex;align-items:center;justify-content:center;color:#c3c7cf;font-size:26px;font-weight:300}.cell.over{outline:2px solid var(--brand);background:#fffdf3}.cell.selected{outline:2px solid var(--accent)}.cell .art{position:absolute;top:0;left:0;transform-origin:0 0;cursor:grab}.cell.dragging .art{cursor:grabbing}.cell .remove{position:absolute;top:3px;right:3px;z-index:3;width:20px;height:20px;border-radius:50%;border:none;background:#0000008c;color:#fff;font-size:13px;line-height:20px;cursor:pointer;display:none;padding:0}.cell:hover .remove{display:block}.controls{width:240px;flex-shrink:0;background:var(--panel);border-left:1px solid var(--line);overflow-y:auto;display:flex;flex-direction:column}.control-group{padding:12px 16px;border-bottom:1px solid var(--line)}.control-group .label{font-size:12px;color:var(--muted);margin-bottom:8px;display:block}.stepper{display:flex;align-items:center;gap:10px}.stepper .val{font-size:20px;font-weight:700;min-width:26px;text-align:center}.stepper button,.seg button{width:30px;height:30px;border-radius:7px;border:1px solid var(--line-strong);background:#fff;font-size:17px;cursor:pointer;color:var(--text)}.stepper button:hover{background:#f3f4f6}.two{display:flex;gap:14px}.two>div{flex:1}.two .cap{font-size:11px;color:var(--muted);text-align:center;margin-top:5px}.seg{display:flex;gap:6px}.seg button{flex:1;width:auto;height:32px;font-size:12.5px}.seg button.on{background:var(--brand-ink);color:#fff;border-color:var(--brand-ink)}.slider-row label{font-size:11px;color:var(--muted)}input[type=range]{width:100%;accent-color:var(--accent)}.hint{font-size:11.5px;color:var(--muted);line-height:1.5}.hint.select-first{padding:8px 0}.export-area{margin-top:auto;padding:14px 16px}.fname-label{display:block;font-size:12px;color:var(--muted);margin-bottom:6px}.fname-row{display:flex;align-items:center;gap:6px}.fname-row input{flex:1;min-width:0;padding:9px 11px;border-radius:8px;border:1.5px solid var(--line-strong);font-size:13px;font-family:inherit;color:var(--text)}.fname-row input:focus{outline:none;border-color:var(--brand)}.fname-ext{font-size:13px;color:var(--muted)}.btn-primary{width:100%;padding:12px;border:none;border-radius:9px;background:var(--brand);color:var(--brand-ink);font-size:14px;font-weight:700;cursor:pointer;display:flex;align-items:center;justify-content:center;gap:8px}.btn-primary:hover{filter:brightness(.97)}.btn-primary:disabled{opacity:.5;cursor:default}.btn-ghost{background:none;border:1px solid var(--line-strong);border-radius:8px;padding:7px 12px;font-size:12.5px;cursor:pointer;color:var(--text)}.btn-ghost:hover{background:#f3f4f6}.busy{position:fixed;top:0;right:0;bottom:0;left:0;background:#ffffffbf;z-index:50;display:none;align-items:center;justify-content:center;font-size:15px;color:var(--brand-ink)}.busy.on{display:flex}#toast{position:fixed;left:50%;bottom:26px;transform:translate(-50%) translateY(10px);background:#1a1a1a;color:#fff;font-size:13px;font-weight:600;padding:10px 18px;border-radius:10px;z-index:60;opacity:0;pointer-events:none;transition:opacity .18s,transform .18s}#toast.on{opacity:1;transform:translate(-50%) translateY(0)}
