.panel-root[data-v-d60df964]{position:relative}.gift-panel[data-v-d60df964]{display:flex;flex-direction:column;width:320px;height:100%;background:var(--panel);border-right:1px solid var(--border)}.panel-head[data-v-d60df964]{flex:0 0 auto;display:flex;align-items:center;justify-content:space-between;padding:12px 14px}.panel-title[data-v-d60df964]{font-weight:700;font-size:15px}.close-btn[data-v-d60df964]{width:30px;height:30px;padding:0;display:grid;place-items:center;border-radius:8px;background:var(--panel-2);border:1px solid var(--border)}.search-box[data-v-d60df964]{padding:0 14px 8px}.search-box input[data-v-d60df964]{width:100%;background:var(--input-bg);border:1px solid var(--border);color:var(--text);border-radius:10px;padding:9px 12px;font-size:13px;outline:none}.search-box input[data-v-d60df964]:focus{border-color:var(--accent-2)}.panel-hint[data-v-d60df964]{font-size:11px;color:var(--muted);padding:0 14px 8px}.panel-scroll[data-v-d60df964]{flex:1;overflow-y:auto;-webkit-overflow-scrolling:touch;padding:0 14px 16px}.state[data-v-d60df964]{text-align:center;color:var(--muted);padding:30px 0;font-size:13px}.state a[data-v-d60df964]{color:var(--accent-2);text-decoration:underline;cursor:pointer}.chip-grid[data-v-d60df964]{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}.gift-chip[data-v-d60df964]{display:flex;flex-direction:column;align-items:center;gap:2px;padding:10px 4px 8px;background:var(--chip-bg);border:1px solid var(--border);border-radius:12px;cursor:grab;touch-action:pan-x;user-select:none;-webkit-user-select:none;transition:transform .12s}.gift-chip[data-v-d60df964]:active{transform:scale(.94)}.chip-img[data-v-d60df964]{width:32px;height:32px;object-fit:contain;pointer-events:none}.chip-emoji[data-v-d60df964]{font-size:26px;line-height:1.2}.chip-name[data-v-d60df964]{font-size:11px;color:var(--text);white-space:nowrap;max-width:100%;overflow:hidden;text-overflow:ellipsis}@media (max-width: 819px){.backdrop[data-v-d60df964]{position:fixed;top:0;right:0;bottom:0;left:0;background:#00000073;z-index:40;opacity:0;pointer-events:none;transition:opacity .2s}.backdrop.show[data-v-d60df964]{opacity:1;pointer-events:auto}.gift-panel[data-v-d60df964]{position:fixed;top:0;bottom:0;left:0;width:min(320px,86vw);z-index:41;transform:translate(-105%);transition:transform .22s ease;box-shadow:8px 0 30px #00000059}.gift-panel.open[data-v-d60df964]{transform:translate(0)}}.app[data-v-d49f9991]{height:100dvh;display:flex;flex-direction:column;background:var(--bg);color:var(--text)}.topbar[data-v-d49f9991]{flex:0 0 auto;display:flex;align-items:center;justify-content:space-between;gap:10px;padding:10px 14px calc(10px + env(safe-area-inset-top));background:var(--panel);border-bottom:1px solid var(--border);z-index:30}.brand[data-v-d49f9991]{display:flex;align-items:center;gap:10px;min-width:0}.brand-badge[data-v-d49f9991]{width:32px;height:32px;border-radius:9px;display:grid;place-items:center;font-weight:800;color:#fff;background:linear-gradient(135deg,var(--accent),#ff7a45);flex:0 0 32px}.brand-title[data-v-d49f9991]{font-weight:700;font-size:16px;white-space:nowrap}.top-actions[data-v-d49f9991]{display:flex;align-items:center;gap:8px}.icon-btn[data-v-d49f9991]{width:36px;height:36px;padding:0;display:grid;place-items:center;font-size:17px;border-radius:9px;background:var(--panel-2);border:1px solid var(--border)}button.primary[data-v-d49f9991]{background:linear-gradient(135deg,var(--accent),#ff7a45);border:none;color:#fff;font-weight:700;border-radius:10px;padding:8px 16px;font-size:14px}button.primary[data-v-d49f9991]:disabled{opacity:.5;cursor:not-allowed}.layout[data-v-d49f9991]{flex:1;display:flex;overflow:hidden}.canvas-area[data-v-d49f9991]{flex:1;overflow:auto;-webkit-overflow-scrolling:touch;padding:14px;overscroll-behavior:contain}.canvas-toolbar[data-v-d49f9991]{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:10px;font-size:12px;color:var(--muted)}.size-label[data-v-d49f9991]{font-weight:600;color:var(--text);background:var(--panel);border:1px solid var(--border);padding:4px 10px;border-radius:8px;white-space:nowrap}.text-color-control[data-v-d49f9991]{display:flex;align-items:center;gap:6px;color:var(--muted);white-space:nowrap}.text-color-control input[data-v-d49f9991]{width:26px;height:26px;padding:2px;border:1px solid var(--border);border-radius:7px;background:var(--panel);cursor:pointer}.stage-wrap[data-v-d49f9991]{margin:0 auto;position:relative}.stage[data-v-d49f9991]{position:absolute;top:0;left:0;transform-origin:top left;background:repeating-conic-gradient(var(--checker-a) 0% 25%,var(--checker-b) 0% 50%) 0 0 / 28px 28px;box-shadow:0 0 0 1px #00000026,0 18px 50px #00000040;overflow:hidden}.stage-empty[data-v-d49f9991]{position:absolute;top:50%;left:0;right:0;transform:translateY(-50%);text-align:center;color:#8a8a95;pointer-events:none}.stage-empty p[data-v-d49f9991]{font-size:15px;margin:4px 0}.stage-empty-sub[data-v-d49f9991]{font-size:12px;opacity:.7}.stage-items[data-v-d49f9991]{position:absolute;top:0;right:0;bottom:0;left:0}.item[data-v-d49f9991]{position:absolute;display:flex;align-items:center;gap:26px;line-height:1;cursor:grab;user-select:none;-webkit-user-select:none}.item-emoji[data-v-d49f9991]{width:72px;height:72px;object-fit:contain;touch-action:none;cursor:grab;filter:drop-shadow(0 4px 8px rgba(0,0,0,.35))}.item.selected .item-emoji[data-v-d49f9991]{filter:drop-shadow(0 0 14px rgba(254,44,85,.85))}.item-text[data-v-d49f9991]{font-size:56px;font-weight:700;min-width:40px;max-width:620px;line-height:72px;outline:none;cursor:text;overflow-wrap:anywhere;user-select:text;-webkit-user-select:text;text-shadow:0 2px 6px rgba(0,0,0,.45)}.item-text[data-v-d49f9991]:empty:before{content:attr(data-ph);color:var(--muted);opacity:.7}.item-del[data-v-d49f9991]{position:absolute;top:-14px;right:-14px;width:34px;height:34px;padding:0;display:grid;place-items:center;border-radius:50%;font-size:15px;background:var(--accent);border:none;color:#fff;box-shadow:0 4px 12px #0000004d}.resize-handle[data-v-d49f9991]{position:absolute;right:-3px;bottom:-3px;width:36px;height:36px;display:grid;place-items:center;font-size:16px;color:var(--muted);background:var(--panel-2);border:1px solid var(--border);border-radius:10px 0;cursor:nwse-resize;touch-action:none;user-select:none;-webkit-user-select:none;z-index:5}.resize-handle[data-v-d49f9991]:hover{color:var(--text);border-color:var(--accent)}.pop-enter-active[data-v-d49f9991]{transition:transform .18s ease,opacity .18s ease}.pop-enter-from[data-v-d49f9991]{transform:scale(.7);opacity:0}.fab[data-v-d49f9991]{position:fixed;left:16px;bottom:calc(18px + env(safe-area-inset-bottom));width:52px;height:52px;border-radius:50%;font-size:24px;background:linear-gradient(135deg,var(--accent),#ff7a45);border:none;box-shadow:0 8px 24px #00000059;z-index:20}.ghost[data-v-d49f9991]{position:fixed;z-index:999;transform:translate(-50%,-115%);display:flex;flex-direction:column;align-items:center;gap:2px;padding:8px 12px;border-radius:14px;background:transparent;pointer-events:none;font-size:12px;color:var(--text);text-shadow:0 2px 6px rgba(0,0,0,.5)}.ghost-emoji[data-v-d49f9991]{width:44px;height:44px;object-fit:contain;filter:drop-shadow(0 4px 10px rgba(0,0,0,.5))}:root{--bg: #0e1013;--panel: #161a20;--panel-2: #1d222b;--border: #2a313d;--text: #e8ecf2;--muted: #8b94a3;--accent: #fe2c55;--accent-2: #25f4ee;--chip-bg: #1f2631;--row-bg: #161a20;--input-bg: #10141a}*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}html,body,#app{height:100%;margin:0}body{background:var(--bg);color:var(--text);font-family:-apple-system,BlinkMacSystemFont,PingFang SC,Hiragino Sans GB,Microsoft YaHei,sans-serif;font-size:14px;overscroll-behavior-y:none}button{font:inherit;cursor:pointer;border:1px solid var(--border);background:var(--panel-2);color:var(--text);border-radius:8px;transition:filter .15s}button:hover{filter:brightness(1.1)}button:active{transform:translateY(1px)}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-thumb{background:#80808059;border-radius:6px}::-webkit-scrollbar-track{background:transparent}.fade-enter-active,.fade-leave-active{transition:opacity .2s}.fade-enter-from,.fade-leave-to{opacity:0}
