:root{--bg: #f4f6f9;--panel: #ffffff;--line: #e3e8ef;--text: #0f172a;--muted: #64748b;--accent: #2563eb;--accent-soft: #e8efff;--danger: #dc2626;font-family:Inter,Segoe UI,system-ui,-apple-system,sans-serif;color:var(--text);background:var(--bg)}*{box-sizing:border-box}html,body,#root{margin:0;height:100%}.app{display:flex;flex-direction:column;height:100%}.topbar{display:flex;align-items:center;gap:16px;height:56px;padding:0 18px;background:var(--panel);border-bottom:1px solid var(--line)}.brand{display:flex;align-items:center;gap:8px;font-weight:700;font-size:16px;white-space:nowrap}.brand-mark{color:var(--accent)}.ai-badge{font-size:11px;font-weight:600;padding:3px 8px;border-radius:999px;background:#dcfce7;color:#166534}.ai-badge.demo{background:#fef3c7;color:#92400e}.name{flex:1;max-width:340px;font-size:15px;font-weight:600;border:1px solid transparent;background:transparent;padding:6px 8px;border-radius:6px}.name:hover,.name:focus{border-color:var(--line);background:#fff;outline:none}.top-actions{margin-left:auto;display:flex;align-items:center;gap:10px}.design-id{font-size:12px;color:var(--muted);font-family:ui-monospace,monospace}main{flex:1;display:flex;min-height:0}.stage{position:relative;flex:1;min-width:0}.viewport{position:absolute;top:0;right:0;bottom:0;left:0;touch-action:none}.viewport canvas{display:block;width:100%;height:100%}.stage-hint{position:absolute;left:16px;bottom:14px;font-size:12px;color:var(--muted);background:#ffffffd9;padding:6px 10px;border-radius:8px;pointer-events:none}.stage-tools{position:absolute;top:14px;left:14px;display:flex;gap:8px}.busy{position:absolute;top:14px;left:50%;transform:translate(-50%);display:flex;align-items:center;gap:10px;background:var(--text);color:#fff;padding:10px 16px;border-radius:10px;font-size:13px;box-shadow:0 8px 24px #0f172a40}.spinner{width:16px;height:16px;border-radius:50%;border:2px solid rgba(255,255,255,.3);border-top-color:#fff;animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.toast{position:absolute;right:16px;bottom:14px;max-width:420px;background:#fff;border-left:4px solid var(--accent);padding:12px 14px;border-radius:8px;font-size:13px;line-height:1.45;box-shadow:0 8px 24px #0f172a26;cursor:pointer}.toast.error{border-left-color:var(--danger)}.sidebar{width:400px;flex-shrink:0;overflow-y:auto;background:var(--bg);border-left:1px solid var(--line);padding:12px;display:flex;flex-direction:column;gap:12px}.card{background:var(--panel);border:1px solid var(--line);border-radius:12px;padding:14px;display:flex;flex-direction:column;gap:10px}.card.ai{border-color:#c7d7fe;background:linear-gradient(180deg,#f5f8ff,#fff 60%)}h2{margin:0;font-size:14px;font-weight:700}h3{margin:4px 0 0;font-size:12px;font-weight:700;color:var(--muted);text-transform:uppercase;letter-spacing:.04em}.muted{margin:0;font-size:12px;color:var(--muted);line-height:1.45}.summary{margin:0;font-size:13px;line-height:1.5;background:var(--accent-soft);padding:8px 10px;border-radius:8px}.revise{display:flex;flex-direction:column;gap:8px}.row{display:flex;align-items:center;gap:8px}.row.wrap{flex-wrap:wrap}.row>input:not([type]),.row>input[type=text]{flex:1;min-width:0}.grow{flex:1}.label{font-size:12px;color:var(--muted);width:44px}input,textarea,select,button{font:inherit;font-size:13px}input:not([type=color]):not([type=checkbox]):not([type=range]),textarea,select{border:1px solid var(--line);border-radius:8px;padding:7px 9px;background:#fff;color:var(--text)}textarea{resize:vertical;line-height:1.45}input:focus,textarea:focus,select:focus{outline:2px solid #bfd3fe;border-color:var(--accent)}input[type=color]{width:34px;height:30px;padding:0;border:1px solid var(--line);border-radius:6px;background:none;cursor:pointer}button{border:1px solid var(--line);background:#fff;color:var(--text);padding:7px 11px;border-radius:8px;cursor:pointer;white-space:nowrap}button:hover:not(:disabled){border-color:#cbd5e1;background:#f8fafc}button:disabled{opacity:.55;cursor:default}button.primary{background:var(--accent);border-color:var(--accent);color:#fff;font-weight:600}button.primary:hover:not(:disabled){background:#1d4ed8}button.ghost{border-color:transparent;color:var(--muted)}button.danger{color:var(--danger)}button.on{background:var(--accent-soft);border-color:#bfd3fe;color:var(--accent)}.chips{display:flex;flex-wrap:wrap;gap:6px}.chip{font-size:11px;padding:4px 9px;border-radius:999px;color:var(--muted)}.swatch{width:26px;height:26px;padding:0;border-radius:50%;border:2px solid #fff;box-shadow:0 0 0 1px var(--line)}.swatch.on{box-shadow:0 0 0 2px var(--accent)}.swatch-label{display:flex;align-items:center;gap:6px;font-size:12px;color:var(--muted);margin-right:4px}.file{position:relative;display:inline-flex;align-items:center;justify-content:center;gap:6px;min-width:64px;height:36px;padding:0 10px;border:1px dashed #b6c2d2;border-radius:8px;font-size:12px;color:var(--muted);cursor:pointer;background:#fff;overflow:hidden}.file.small{height:32px;border-style:solid;border-color:var(--line);color:var(--text);font-size:13px}.file img{max-height:30px;max-width:90px}.file input{position:absolute;top:0;right:0;bottom:0;left:0;opacity:0;cursor:pointer}.check{display:inline-flex;align-items:center;gap:4px;font-size:13px;text-transform:capitalize}.preview{display:flex;flex-direction:column;align-items:center;gap:6px;padding:10px;background:#eef2f6;border-radius:10px}.preview canvas{border-radius:2px;box-shadow:0 1px 4px #0f172a2e;cursor:crosshair;touch-action:none}.preview-meta{font-size:11px;color:var(--muted)}.layers{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:4px}.layers li{display:flex;align-items:center;gap:8px;padding:7px 9px;border-radius:8px;border:1px solid var(--line);font-size:13px;cursor:pointer;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.layers li.active{border-color:var(--accent);background:var(--accent-soft)}.layers .kind{width:18px;text-align:center;color:var(--muted);font-weight:700}.layer-edit{display:flex;flex-direction:column;gap:8px;padding:10px;border-radius:10px;background:#f8fafc;border:1px solid var(--line)}.slider{display:flex;flex-direction:column;gap:4px;font-size:12px;color:var(--muted)}.slider input{width:100%;accent-color:var(--accent)}@media (max-width: 900px){main{flex-direction:column}.stage{min-height:55vh}.sidebar{width:auto;border-left:none;border-top:1px solid var(--line)}}
