.app{display:flex;height:100vh;background:#fff3f6;color:#333;font-family:'Microsoft YaHei',Arial,sans-serif}
.sidebar{width:420px;overflow:auto;border-right:1px solid #e8d7dc;padding:16px;background:#fff7fa}
.brand{display:flex;align-items:center;gap:8px;margin-bottom:12px}
.brand .logo{width:28px;height:28px;border-radius:8px;background:#ff6ea8;color:#fff;display:flex;align-items:center;justify-content:center}
.brand .name{font-weight:700;color:#444}
.preview{flex:1;display:flex;align-items:center;justify-content:center;position:relative}
#previewCanvas{max-width:90%;max-height:90%;background:#f2f2f2;box-shadow:0 2px 12px rgba(0,0,0,0.06)}
.overlay{position:absolute;pointer-events:none}
.preview-header{position:absolute;top:8px;left:16px;color:#666;font-weight:600}
.preview-footer{position:absolute;bottom:12px;left:16px;right:16px;display:flex;gap:8px;align-items:center}
.section{margin-bottom:16px}
.section-title{font-size:14px;font-weight:700;margin-bottom:8px;color:#444}
.upload{border:1px dashed #e4c7cf;border-radius:8px;padding:12px;display:flex;gap:8px;align-items:center;background:#fff}
.upload{cursor:pointer}
.upload .hint{font-size:12px;color:#a88d96}
.actions-row{display:flex;gap:8px;margin-top:8px;flex-wrap:wrap}
button{background:#ff6ea8;border:none;color:#fff;padding:8px 12px;border-radius:6px;cursor:pointer}
button:disabled{opacity:.5;cursor:not-allowed}
textarea{width:100%;border:1px solid #e8d7dc;border-radius:6px;background:#fff;color:#333;padding:8px}
.grid{display:grid;grid-template-columns:1fr 1fr;gap:8px}
label{display:flex;flex-direction:column;font-size:12px;gap:4px}
input,select{border:1px solid #e8d7dc;border-radius:6px;background:#fff;color:#333;padding:6px}
.inline-row{display:flex;gap:8px;align-items:center;margin:8px 0}
input[type="file"]{flex:1}
.order-list{display:flex;flex-direction:column;gap:8px}
.order-item{display:flex;align-items:center;gap:8px}
.order-item .actions{margin-left:auto;display:flex;gap:6px;align-items:center}
.drag-handle{user-select:none;cursor:grab;color:#999;font-size:14px}
.order-item .btn{background:#ff6ea8;color:#fff;border:none;border-radius:6px;padding:4px 8px;cursor:pointer}
.order-item .thumb{width:48px;height:48px;object-fit:cover;border:1px solid #e8d7dc;border-radius:6px}
.order-item .name{flex:1;font-size:12px;color:#666}
.order-item button{background:#ff6ea8;border:none;color:#fff;padding:4px 8px;border-radius:6px;cursor:pointer}
