:root{color:#25231f;background:#f4f1eb;font-family:Inter,Noto Sans SC,PingFang SC,Microsoft YaHei,system-ui,sans-serif;font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;--paper: #fbf9f4;--paper-2: #f1ede5;--line: #d9d2c7;--line-dark: #bdb3a6;--ink: #25231f;--muted: #766f65;--green: #374827;--green-2: #4f673d;--olive: #71835c;--warm: #a97848;--danger: #9b413c;--shadow: 0 24px 80px rgba(55, 48, 39, .12)}*{box-sizing:border-box}body{margin:0;min-width:1180px;min-height:100vh;background:radial-gradient(circle at 10% 0%,rgba(255,255,255,.78),transparent 32%),linear-gradient(135deg,#fbfaf7,#ebe4d9)}button,textarea,input{font:inherit}button{cursor:pointer}button:disabled{cursor:not-allowed}.app-shell{min-height:100vh;display:grid;grid-template-rows:78px 1fr}.token-shell{min-height:100vh;display:grid;place-items:center;padding:28px}.token-dialog{width:min(420px,100%);display:grid;gap:18px;padding:28px;border:1px solid var(--line-dark);border-radius:7px;background:#fbf9f4e6;box-shadow:var(--shadow)}.token-dialog h1{margin:8px 0 0;color:#1e1d1a;font-size:28px;letter-spacing:0}.token-dialog label{display:grid;gap:8px;color:var(--muted);font-size:12px;font-weight:800;letter-spacing:.8px;text-transform:uppercase}.token-error{margin:-6px 0 0;color:var(--danger);font-size:13px}.topbar{display:flex;align-items:center;justify-content:space-between;padding:0 28px;border-bottom:1px solid var(--line);background:#fbf9f4eb;-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px)}.brand{display:flex;align-items:center;gap:28px}.brand-main{font-family:Georgia,Times New Roman,serif;font-size:26px;letter-spacing:0;color:#1e1d1a}.brand-sub{border-left:1px solid var(--line-dark);padding-left:28px;color:var(--warm);font-size:13px;letter-spacing:2px}.top-actions,.section-header{display:flex;align-items:center}.top-actions{gap:12px}.text-button,.primary-button,.danger-button{border:1px solid var(--line-dark);background:#fff6;color:var(--ink);border-radius:6px;transition:.16s ease}.text-button{border:0;background:transparent;color:var(--green);padding:5px 0;font-size:13px}.primary-button{border:0;background:var(--green);color:#fff;min-height:48px;padding:0 20px;font-weight:700;box-shadow:0 12px 34px #37482738}.primary-button.small{min-height:38px}.danger-button{color:var(--danger);border-color:#9b413c47;padding:10px 12px;background:#9b413c0d}.primary-button:hover,.danger-button:hover,.tab:hover,.upload-card:hover{transform:translateY(-1px)}.primary-button:disabled{transform:none;opacity:.68;box-shadow:none}.workspace{display:grid;grid-template-columns:236px minmax(0,1fr) 356px;min-height:calc(100vh - 78px)}.workflow-panel,.control-panel{background:#fbf9f4b8}.workflow-panel{border-right:1px solid var(--line);padding:24px}.control-panel{border-left:1px solid var(--line);padding:22px 18px;overflow-y:auto}.panel-title,.section-header span{color:#2d2a25;font-size:12px;font-weight:800;letter-spacing:1.3px;text-transform:uppercase}.steps{list-style:none;padding:18px 0 10px;margin:0}.step{position:relative;display:grid;grid-template-columns:34px 1fr;gap:12px;min-height:82px;color:var(--muted)}.step:after{content:"";position:absolute;top:34px;left:16px;width:1px;height:calc(100% - 34px);background:var(--line-dark)}.step:last-child:after{display:none}.step-marker{width:34px;height:34px;display:grid;place-items:center;border-radius:999px;border:1px solid var(--line-dark);background:var(--paper);color:var(--muted);font-weight:800;z-index:1}.step.complete .step-marker,.step.active .step-marker{background:var(--green);border-color:var(--green);color:#fff}.step strong{display:block;color:#2d2a25;font-size:13px;letter-spacing:.9px}.step p{margin:6px 0 0;font-size:12px}.upload-card{width:100%;border:1px solid var(--line-dark);background:#ffffff6b;border-radius:7px;padding:8px;text-align:left;color:var(--ink)}.upload-card:disabled{cursor:wait;opacity:.72;transform:none}.upload-image{display:block;aspect-ratio:16 / 10;overflow:hidden;border-radius:5px;background:#ded7ce}.upload-image img,.image-stage img{width:100%;height:100%;object-fit:cover;display:block}.upload-text{display:grid;gap:3px;padding:10px 2px 2px}.upload-text strong{font-size:13px}.upload-text small{color:var(--muted)}.hidden-input{display:none}.progress-card{margin-top:18px;padding:16px 12px;border:1px solid var(--line);border-radius:7px;background:#ffffff57}.progress-ring{--progress: 70%;width:70px;height:70px;margin:0 auto 12px;display:grid;place-items:center;border-radius:999px;background:radial-gradient(circle closest-side,var(--paper) 72%,transparent 74%),conic-gradient(var(--green) var(--progress),#d8d1c6 0)}.progress-ring span{font-weight:800;color:var(--green)}.progress-card strong,.progress-card p{display:block;text-align:center}.progress-card p{margin:6px 0 0;color:var(--muted);font-size:12px;line-height:1.45}.stage-panel{min-width:0;overflow:hidden;display:grid;grid-template-rows:54px minmax(0,1fr);background:#f4f1eb73}.view-tabs{display:flex;align-items:end;gap:8px;padding:12px 16px 0}.tab{height:34px;min-width:72px;border:1px solid transparent;border-bottom:0;border-radius:6px 6px 0 0;background:transparent;color:var(--muted)}.tab.active{background:var(--paper);color:var(--green);border-color:var(--line);font-weight:800}.preview-frame{padding:0 16px 16px;min-width:0}.image-stage{position:relative;height:100%;min-height:calc(100vh - 148px);overflow:hidden;border:1px solid var(--line-dark);border-radius:7px;background:#e2dbd1;box-shadow:var(--shadow)}.image-stage.compare{cursor:ew-resize;touch-action:none;-webkit-user-select:none;user-select:none}.image-stage img{pointer-events:none;-webkit-user-select:none;user-select:none;-webkit-user-drag:none}.stage-image{position:absolute;top:0;right:0;bottom:0;left:0;transition:opacity .16s ease}.base-image{z-index:1}.before-image{z-index:2}.image-stage.cleared .base-image,.image-stage.decorated .before-image{opacity:0}.image-stage:not(.compare) .divider,.image-stage:not(.compare) .image-badge{display:none}.divider{position:absolute;top:0;bottom:0;width:1px;transform:translate(-1px);background:#ffffffdb;z-index:3}.divider span{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);width:54px;height:34px;display:grid;place-items:center;border-radius:999px;background:#ffffffeb;color:var(--green);font-size:12px;font-weight:800;box-shadow:0 10px 28px #00000029}.image-badge{position:absolute;top:18px;z-index:5;min-width:78px;padding:9px 14px;border-radius:4px;text-align:center;color:#fff;background:#282623b8;font-weight:800;letter-spacing:.7px}.image-badge.before{left:18px}.image-badge.after{right:18px;background:#374827e6}.form-section{border-bottom:1px solid var(--line);padding-bottom:18px;margin-bottom:18px}.section-header{justify-content:space-between;margin-bottom:10px}textarea,input{width:100%;border:1px solid var(--line);border-radius:6px;background:#ffffff8c;color:var(--ink);outline:0}textarea{resize:vertical;padding:13px;line-height:1.55}input{height:40px;padding:0 11px}textarea:focus,input:focus{border-color:var(--green-2);box-shadow:0 0 0 3px #4f673d1f}.char-count{color:var(--muted);text-align:right;font-size:12px;margin-top:8px}.furniture-list{display:grid;border:1px solid var(--line);border-radius:7px;overflow:hidden}.furniture-item{display:grid;grid-template-columns:28px 1fr;gap:10px;width:100%;min-height:70px;border:0;border-bottom:1px solid var(--line);background:#ffffff57;color:var(--ink);text-align:left;padding:10px}.furniture-item:last-child{border-bottom:0}.furniture-item.active{background:#4f673d1a}.furniture-item:hover{background:#4f673d12}.furniture-item.active:hover{background:#4f673d1f}.item-index{width:25px;height:25px;display:grid;place-items:center;border-radius:999px;color:var(--green);background:#ebe5dc;font-size:12px;font-weight:800}.furniture-item strong,.furniture-item small{display:block}.furniture-item strong{font-size:13px;margin-bottom:3px}.furniture-item small{color:var(--muted);font-size:12px;line-height:1.35}.editor-card{margin-top:12px;display:grid;gap:12px;padding:12px;border:1px solid var(--line);border-radius:7px;background:#ffffff52}.editor-card label{display:grid;gap:7px;font-size:12px;color:var(--muted)}@media(max-height:760px){.stage-panel{grid-template-rows:48px minmax(0,1fr)}.image-stage{min-height:calc(100vh - 130px)}}
