.layout-shell[data-v-f246f247]{min-height:100vh;display:flex;flex-direction:column}.topbar[data-v-f246f247]{display:flex;align-items:center;justify-content:space-between;gap:24px;padding:14px 20px;background:#ffffffeb;border-bottom:1px solid rgba(0,0,0,.08);position:sticky;top:0;z-index:10}.brand[data-v-f246f247]{font-size:20px;font-weight:700;color:#3b2f25}.nav[data-v-f246f247]{display:flex;flex-wrap:wrap;gap:16px;color:#5d4037}.nav[data-v-f246f247] a.router-link-active{color:#3b8bcc;font-weight:700}.layout-main[data-v-f246f247]{flex:1;min-height:0}@media (max-width: 768px){.topbar[data-v-f246f247]{flex-direction:column;align-items:flex-start;gap:10px}.nav[data-v-f246f247]{gap:12px;font-size:14px}}.page[data-v-5ebfb259]{padding:24px;color:#3b2f25}h1[data-v-5ebfb259]{margin-top:0}ul[data-v-5ebfb259]{padding-left:20px}:root{--bg: #f4efe6;--panel: rgba(255, 252, 247, .92);--text: #3b2f25;--soft: #7f6e60}.sandbox-app,.sandbox-app *{-webkit-user-select:none;user-select:none}.sandbox-app{display:flex;width:100vw;height:100vh;color:var(--text);font-family:Microsoft YaHei,sans-serif;position:relative;overflow:hidden}.sidebar-nav{position:absolute;left:0;top:50%;transform:translateY(-50%) translate(0);display:flex;flex-direction:column;gap:16px;z-index:200;transition:transform .3s cubic-bezier(.4,0,.2,1)}.nav-btn{width:52px;height:128px;background:linear-gradient(135deg,#fff,#f0f5fb 55%,#e3edf7);border:1px solid rgba(59,139,204,.28);border-left:none;border-radius:0 20px 20px 0;display:flex;flex-direction:column;align-items:center;justify-content:center;cursor:pointer;color:#3b8bcc;gap:4px;transition:transform .18s ease,box-shadow .22s ease,background .22s ease,color .22s ease;box-shadow:inset 0 1px #fffffff2,inset 0 -3px 6px #3b8bcc21,3px 4px 10px #1e466e24,8px 12px 24px #3b8bcc26}.nav-btn:hover:not(.active){background:linear-gradient(135deg,#fff,#f4f9fd 55%,#e9f2fa);color:#2f7cc0;transform:translate(2px);box-shadow:inset 0 1px #fffffff2,inset 0 -3px 6px #3b8bcc29,4px 6px 14px #1e466e2e,10px 14px 28px #3b8bcc38}.nav-btn:active{transform:translate(1px) scale(.98)}.nav-btn.active{background:linear-gradient(150deg,#58a7e8,#3b8bcc 45%,#2c6ea6);color:#fff;text-shadow:0 1px 2px rgba(0,0,0,.28);box-shadow:inset 0 2px 2px #ffffff59,inset 0 -4px 8px #092d5059,4px 6px 14px #2c6ea66b,10px 14px 28px #2c6ea647}.nav-arrow{margin-top:6px;transition:transform .3s cubic-bezier(.4,0,.2,1)}.nav-arrow .chev{animation:chev-march 1.6s ease-in-out infinite}.nav-arrow .chev-b{animation-delay:.25s}.nav-btn.active .nav-arrow{transform:rotate(180deg)}@keyframes chev-march{0%,to{opacity:.25}45%{opacity:1}}.sidebar{width:auto;max-width:none;height:100%;background:#fff;border-right:1px solid rgba(0,0,0,.1);padding:clamp(12px,2vh,30px);display:flex;flex-direction:column;gap:clamp(8px,1.5vh,24px);overflow:hidden;box-shadow:4px 0 20px #0000001a;z-index:100;position:absolute;left:0;transform:translate(-100%);transition:transform .3s cubic-bezier(.4,0,.2,1);box-sizing:border-box}#sidebar-sandbox{overflow-y:auto;overflow-x:hidden;width:max-content;min-width:280px}#sidebar-sandbox .control-group{flex-shrink:0}.sidebar-right{left:auto;right:0;transform:translate(100%);border-right:none;border-left:1px solid rgba(0,0,0,.1);box-shadow:-4px 0 20px #0000001a;z-index:1250}.sidebar-right.active{transform:translate(0)}.sidebar-close{position:absolute;top:50%;right:-24px;transform:translateY(-50%);width:24px;height:80px;background:#fff;border:1px solid rgba(0,0,0,.1);border-left:none;border-radius:0 8px 8px 0;display:flex;align-items:center;justify-content:center;cursor:pointer;font-size:14px;color:#666;z-index:110;box-shadow:4px 0 10px #0000000d;transition:background .2s}.sidebar-close:hover{background:#f5f5f5;color:#333}.sidebar.active{transform:translate(0)}#sidebar-toggle{display:none}.toolbox{display:flex;flex-direction:column;gap:16px;background:transparent;padding:0;border-radius:0;box-shadow:none;border:none;flex:1;overflow-y:hidden;overflow-x:hidden}.palette{display:flex;flex-wrap:nowrap;gap:8px;width:100%;box-sizing:border-box;justify-content:flex-start}.palette-card{width:var(--card-w, 70px);height:var(--card-h, 93px);flex:0 0 auto;position:relative;padding:9px;background:#fcfcfc;border-radius:12px;border:1px solid #eee;display:flex;flex-direction:column;align-items:center;justify-content:center;box-sizing:border-box;cursor:pointer;transition:all .2s}.palette-card:hover{background:#f0f0f0;transform:translateY(-2px);box-shadow:0 4px 8px #0000001a}.palette-card.placed{background:#fff3d6;border:2px solid #e0a839}.palette-card.placed .palette-num{color:#9a6b1f}.palette-icon{width:100%;flex:1;display:flex;align-items:center;justify-content:center;overflow:hidden}.palette-icon canvas{width:100%;height:100%;object-fit:cover}.palette-num{position:absolute;top:calc(var(--card-w, 70px) * .04);left:calc(var(--card-w, 70px) * .04);margin:0;font-size:calc(var(--card-w, 70px) * .22);color:#7f6e60;font-weight:700;background:none;padding:0;line-height:1;z-index:10;border:none;text-shadow:1px 1px 0 #fff,-1px -1px 0 #fff,1px -1px 0 #fff,-1px 1px 0 #fff}.control-group{background:#f9f9f9;padding:clamp(12px,1.5vh,24px);border-radius:12px;margin-bottom:clamp(8px,1vh,24px)}.control-group h2{font-size:clamp(16px,2vh,24px);margin-bottom:clamp(6px,1vh,12px)}.rotate-row,.action-row{display:flex;width:100%;gap:clamp(8px,1vh,12px)}.action-btn,.rotate-btn{flex:1;height:clamp(32px,4.5vh,48px);min-height:32px;font-size:clamp(13px,1.6vh,16px);border-radius:10px;border:1px solid #d7ccc8;background:#f9f9f9;color:#5d4037;cursor:pointer;transition:all .2s;-webkit-appearance:none;-moz-appearance:none;appearance:none}.action-btn:active,.rotate-btn:active{transform:scale(.96)}.slider-group{display:flex;flex-direction:column;gap:clamp(4px,.8vh,12px);margin-bottom:clamp(8px,1.2vh,20px)}.slider-group label{display:flex;justify-content:space-between;font-size:clamp(14px,1.6vh,21px);color:#5d4037;font-weight:500}.slider-control{display:flex;align-items:center;gap:clamp(6px,1vh,12px);width:100%}.step-btn{width:clamp(28px,4vh,44px);height:clamp(28px,4vh,44px);border-radius:12px;border:1px solid #d7ccc8;background:#efebe9;color:#5d4037;font-size:clamp(16px,1.8vh,24px);font-weight:700;display:flex;align-items:center;justify-content:center;cursor:pointer;-webkit-user-select:none;user-select:none;transition:all .2s;flex-shrink:0;-webkit-appearance:none;-moz-appearance:none;appearance:none}.step-btn:active{background:#d7ccc8;transform:scale(.92)}.slider-group input{flex:1;height:clamp(28px,4vh,40px);-webkit-appearance:none;-moz-appearance:none;appearance:none;background:transparent;outline:none;margin:0;cursor:default;overflow:visible;pointer-events:none}.slider-group input::-webkit-slider-runnable-track{width:100%;height:8px;background:#e0e0e0;border-radius:4px;border:none}.slider-group input::-webkit-slider-thumb{-webkit-appearance:none;-moz-appearance:none;appearance:none;height:22px;width:6px;border-radius:3px;background:#a67c52;cursor:default;margin-top:-7px;box-shadow:none;border:none}.slider-group input::-moz-range-track{width:100%;height:8px;background:#e0e0e0;border-radius:4px}.slider-group input::-moz-range-thumb{height:22px;width:6px;border-radius:3px;background:#a67c52;cursor:default;border:none;box-shadow:none}.action-btn.primary{background:linear-gradient(180deg,#a67c52,#7d5a3a);color:#fff;border:none}#stage-container{flex:1;position:relative}canvas{display:block;width:100%;height:100%}#loading{position:absolute;top:0;right:0;bottom:0;left:0;display:grid;place-items:center;background:var(--bg);font-size:18px;color:var(--soft);z-index:100}#person-controls{position:absolute;bottom:24px;left:50%;transform:translate(-50%) translateY(0);background:transparent;padding:0;display:grid;grid-template-columns:repeat(4,1fr);gap:36px;z-index:1000;transition:all .3s cubic-bezier(.4,0,.2,1);border:none;box-shadow:none;width:max-content}#person-controls.disabled-controls{opacity:0;visibility:hidden;transform:translate(-50%) translateY(30px);pointer-events:none}#person-controls.no-selection .rotate-btn,#person-controls.no-selection #deleteBtn{opacity:.45;pointer-events:none}#person-controls.empty-board{opacity:0;visibility:hidden;transform:translate(-50%) translateY(30px);pointer-events:none}#replay-controls{display:none;position:absolute;bottom:24px;left:50%;transform:translate(-50%);align-items:center;gap:14px;background:#14161ee0;color:#fff;border-radius:28px;padding:10px 20px;z-index:1100;box-shadow:0 4px 18px #00000059;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px)}#replay-controls.active{display:flex}#replay-controls #replay-label{font-size:13px;color:#ffd04d;white-space:nowrap}#replay-controls #replay-pos{font-size:14px;font-variant-numeric:tabular-nums;min-width:52px;text-align:center}#replay-controls button{height:34px;padding:0 18px;border:0;border-radius:17px;background:#409eff;color:#fff;font-size:13px;cursor:pointer;white-space:nowrap}#replay-controls button:hover:not(:disabled){background:#337ecc}#replay-controls button:disabled{opacity:.35;cursor:default}#replay-controls #replay-exit{background:transparent;border:1px solid rgba(255,255,255,.45)}#replay-controls #replay-exit:hover{border-color:#fff;background:#ffffff1f}body.replay-mode #person-controls{display:none!important}#top-corner-btns{position:fixed;right:14px;top:14px;z-index:1200;display:flex;align-items:center;gap:10px}#top-corner-btns button{height:32px;padding:0 14px;border:1px solid rgba(127,110,96,.12);border-radius:16px;background:#ffffff80;color:#b5a695;font-size:13px;cursor:pointer;box-shadow:none;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);transition:color .2s ease,background .2s ease,border-color .2s ease}#top-corner-btns button:hover{color:#8a7a68;background:#ffffffd9}#top-corner-btns #settings-btn{padding:0 4px;font-size:18px;line-height:1;background:transparent;border:none;box-shadow:none;-webkit-backdrop-filter:none;backdrop-filter:none}#top-corner-btns #settings-btn:hover{background:transparent;opacity:.75;color:#8a7a68}.contact-entry{margin-top:auto}.contact-entry .action-btn{width:100%}body.replay-mode #top-corner-btns{display:none}#contact-modal{display:none;position:fixed;top:0;right:0;bottom:0;left:0;background:#00000073;align-items:center;justify-content:center;z-index:1300}#contact-modal.open{display:flex}.contact-card{position:relative;background:#fff;border-radius:12px;padding:28px 24px;width:300px;text-align:center;box-shadow:0 8px 30px #00000040}.contact-card h3{margin:0 0 6px;font-size:17px;color:#333}.contact-tip{margin:0 0 14px;font-size:13px;color:#888}#contact-qr{width:220px;height:220px;object-fit:contain;border:1px solid #eee;border-radius:8px}#contact-qr-missing{margin:8px 0 0;font-size:12px;color:#d93026;line-height:1.7}#contact-close{position:absolute;top:8px;right:10px;border:0;background:none;font-size:22px;line-height:1;color:#999;cursor:pointer}#contact-close:hover{color:#333}#person-controls .action-btn,#person-controls .rotate-btn{height:36px;padding:0 16px;border-radius:18px;font-size:14px;font-weight:700;box-shadow:0 2px 8px #0000000d;background:#fff;color:#333;border:1px solid #e0e0e0;transition:all .2s;width:100%}#person-controls .rotate-btn:hover{background:#f0f7ff;border-color:#3b8bcc;color:#3b8bcc}#person-controls #deleteBtn{background:#fff0f0;border-color:#fcc;color:#d93025}#person-controls #deleteBtn:hover{background:#ffe6e6;border-color:#ffb3b3}#person-controls #clearBtn{background:#fff7e6;border-color:#ffe1a8;color:#b07d2b}#person-controls #clearBtn:hover{background:#ffefcf;border-color:#ffd27a}.version-switch{display:grid;grid-template-columns:1fr 1fr;gap:10px}.version-btn{height:40px;border-radius:12px;border:1px solid #e0e0e0;background:#fff;color:#333;font-size:14px;font-weight:700;cursor:pointer;transition:all .2s}.version-btn:hover:not(.active){background:#f0f7ff;border-color:#3b8bcc;color:#3b8bcc}.version-btn.active{background:linear-gradient(150deg,#58a7e8,#3b8bcc 45%,#2c6ea6);border-color:#2c6ea6;color:#fff;pointer-events:none}#clear-confirm-modal{display:none;position:fixed;top:0;right:0;bottom:0;left:0;background:#00000073;align-items:center;justify-content:center;z-index:1300}#clear-confirm-modal.open{display:flex}.confirm-card{background:#fff;border-radius:12px;padding:26px 24px 20px;width:min(320px,86vw);text-align:center;box-shadow:0 8px 30px #00000040}.confirm-card h3{margin:0 0 8px;font-size:17px;color:#333}.confirm-tip{margin:0 0 18px;font-size:13px;color:#888;line-height:1.6}.confirm-actions{display:flex;gap:12px}.confirm-actions button{flex:1;height:40px;border-radius:20px;font-size:14px;font-weight:700;cursor:pointer;transition:all .2s;-webkit-appearance:none;-moz-appearance:none;appearance:none}#clear-cancel-btn{border:1px solid #e0e0e0;background:#f9f9f9;color:#666}#clear-cancel-btn:hover{background:#efefef}#clear-confirm-btn{border:1px solid #ffb84d;background:#ff9800;color:#fff}#clear-confirm-btn:hover{background:#f08c00}@media (max-width: 768px){.confirm-actions button{height:44px;font-size:15px}}@media (max-width: 768px){#top-corner-btns{right:10px;top:10px;gap:6px}#top-corner-btns button{height:28px;font-size:12px;padding:0 10px}.contact-card{width:82vw;padding:20px 14px}#contact-qr{width:64vw;height:64vw}.sidebar{width:max-content!important;max-width:none;padding:8px 12px;gap:8px;overflow-y:auto}#sidebar-person{width:auto!important}#sidebar-sandbox{width:max-content!important;min-width:auto}.palette{gap:6px}.palette-card{padding:6px;border-radius:8px}.palette-icon{flex:1}.action-btn,.rotate-btn{height:26px;font-size:11px;border-radius:12px;padding:0 6px;white-space:nowrap;-webkit-appearance:none;-moz-appearance:none;appearance:none}#person-controls{bottom:12px;padding:0;gap:18px;border-radius:0;width:max-content;min-width:0;justify-content:center}#person-controls .action-btn,#person-controls .rotate-btn{height:26px;padding:0 8px;font-size:11px;border-radius:16px;white-space:nowrap;width:100%;-webkit-appearance:none;-moz-appearance:none;appearance:none}.control-group{padding:4px 8px;margin-bottom:2px;border-radius:8px}.control-group h2{font-size:12px;margin-bottom:4px}.rotate-row,.action-row{gap:6px}.slider-group{margin-bottom:4px;gap:2px}.slider-control{gap:4px}.step-btn{width:32px;height:32px;border-radius:10px;font-size:18px;-webkit-appearance:none;-moz-appearance:none;appearance:none}.slider-group input{height:28px}.slider-group input::-webkit-slider-thumb{height:18px;width:5px;margin-top:-5px}.slider-group input::-moz-range-thumb{height:18px;width:5px}.slider-group label{font-size:11px}#person-controls{margin-bottom:0}#sidebar-sandbox .action-row{margin-top:8px;gap:8px}#sidebar-sandbox .action-btn{height:36px;font-size:14px;padding:0 8px}.sidebar-nav{left:0;z-index:250}.nav-btn{width:42px;height:104px;border-radius:0 16px 16px 0}}@media screen and (orientation: portrait){body:has(.sandbox-app){width:100vw;height:100vh;overflow:hidden}.sandbox-page{position:fixed;top:0;left:0;width:100vw;height:100vh}.sandbox-app{position:absolute;top:0;left:100vw;width:100vh;height:100vw;transform:rotate(90deg);transform-origin:top left}}.sandbox-toast{position:fixed;left:50%;bottom:40px;transform:translate(-50%) translateY(10px);padding:10px 24px;background:#3b2f25e0;color:#fff;font-size:14px;border-radius:8px;box-shadow:0 4px 16px #0003;opacity:0;pointer-events:none;z-index:1000;transition:opacity .25s,transform .25s}.sandbox-toast.visible{opacity:1;transform:translate(-50%) translateY(0)}.sandbox-page[data-v-932e56c3]{width:100vw;height:100vh;overflow:hidden}.wx-guide[data-v-932e56c3]{width:100vw;height:100vh;display:flex;align-items:center;justify-content:center;background:#f4efe6;padding:24px;box-sizing:border-box}.wx-guide-card[data-v-932e56c3]{max-width:420px;background:#fff;border-radius:16px;padding:40px 32px;text-align:center;box-shadow:0 4px 24px #0000000f}.wx-guide-card h1[data-v-932e56c3]{font-size:22px;margin:0 0 16px;color:#333}.wx-guide-card p[data-v-932e56c3]{font-size:15px;line-height:1.7;color:#777;margin:0}.page[data-v-7dcdd2ff]{padding:24px;color:#3b2f25}h1[data-v-7dcdd2ff]{margin-top:0}.page[data-v-6534486e]{padding:24px;color:#3b2f25}h1[data-v-6534486e]{margin-top:0}html,body,#app{margin:0;min-height:100%}body{font-family:Microsoft YaHei,sans-serif;background:#f4efe6}*{box-sizing:border-box}a{color:inherit;text-decoration:none}
