:root{--bg:#17120f;--bg-2:#211a16;--bg-3:#2c221c;--line:#45352b;--text:#f0e6dd;--text-dim:#b8a596;--bronze:#c98f5e;--bronze-hi:#e8b383;--ok:#6fbf8a;--err:#e2725b;--r:10px}*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}button{border:0}html,body,#root{overscroll-behavior:none;height:100%;margin:0}body{background:var(--bg);color:var(--text);-webkit-font-smoothing:antialiased;font:14px/1.5 -apple-system,BlinkMacSystemFont,PingFang SC,Microsoft YaHei,Helvetica Neue,sans-serif}body.dragging{cursor:col-resize;-webkit-user-select:none;user-select:none}.app{width:100vw;height:100dvh;display:flex;overflow:hidden}.pane-left,.pane-right{flex-direction:column;min-width:0;height:100%;display:flex}.pane-left{background:radial-gradient(120% 90% at 50% 0,#2a2019 0%,#14100d 100%)}.pane-right{background:var(--bg-2);border-left:1px solid var(--line)}.divider{background:var(--bg-3);border-left:1px solid var(--line);border-right:1px solid var(--line);cursor:col-resize;touch-action:none;flex:0 0 22px;justify-content:center;align-items:center;width:22px;display:flex}.divider .grip{background:#5d4738;border-radius:2px;width:3px;height:44px}.divider:hover .grip{background:var(--bronze)}.preview-pane{flex-direction:column;height:100%;min-height:0;display:flex;position:relative}.preview-head{border-bottom:1px solid var(--line);flex:none;align-items:center;gap:12px;padding:10px 14px;display:flex}.brand{color:var(--bronze-hi);letter-spacing:.5px;white-space:nowrap;flex:none;font-weight:600}.face-name{background:var(--bg-3);border:1px solid var(--line);color:var(--text-dim);white-space:nowrap;border-radius:999px;flex:none;padding:2px 10px;font-size:12px}.zone-toggle{color:var(--text-dim);cursor:pointer;-webkit-user-select:none;user-select:none;white-space:nowrap;flex:none;align-items:center;gap:6px;margin-left:auto;font-size:12px;display:flex}.stage-area{flex-direction:column;flex:auto;min-width:0;min-height:0;display:flex;position:relative}.stage-wrap{flex:auto;justify-content:center;align-items:center;min-width:0;min-height:0;padding:14px;display:flex;position:relative;overflow:hidden}.stage{background:#efe9e2;border-radius:6px;flex:none;position:relative;overflow:hidden;box-shadow:0 18px 50px #0000008c}.stage-img{object-fit:contain;background:#efe9e2;width:100%;height:100%;display:block;position:absolute;inset:0}.zone{z-index:3;cursor:pointer;background:#e8b3830f;border:1.5px dashed #e8b38373;padding:0;transition:background .12s,border-color .12s;position:absolute}.zone:hover{border-color:var(--bronze-hi);background:#e8b3832e}.zone.active{border:2px solid var(--bronze-hi);background:#e8b3834d;border-style:solid}.zone.filled{border-color:#6fbf8abf}.zone.part:after{content:"";width:max(100%,40px);height:max(100%,40px);position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.zone.z-top:after{content:"";position:absolute;inset:-14px 0 0}.zone.z-bottom:after{content:"";position:absolute;inset:0 0 -14px}.zone.z-mid:after{content:none}.zone-tag{z-index:2;pointer-events:none}.zone.part-head:after{width:auto;height:auto;inset:-18px 0 0;transform:none}.zone.part-lockL:after,.zone.part-lockR:after{width:44px;height:max(100%,44px);top:50%;left:0;right:auto;transform:translateY(-50%)}.zone.part-pillarL:after{width:40px;height:max(100%,40px);left:auto;right:0;transform:translateY(-50%)}.zone.part-pillarR:after{width:40px;height:max(100%,40px);left:0;right:auto;transform:translateY(-50%)}.zone-tag{background:var(--bronze-hi);color:#2a1a10;white-space:nowrap;border-radius:4px;padding:1px 5px;font-size:10px;font-weight:700;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.preview-foot{border-top:1px solid var(--line);flex-wrap:wrap;flex:none;align-items:center;gap:10px;padding:10px 14px;display:flex}.btn{border:1px solid var(--line);background:var(--bg-3);color:var(--text);border-radius:var(--r);cursor:pointer;padding:9px 18px;font-size:14px;font-weight:600;transition:filter .15s,transform 60ms}.btn:hover:not(:disabled){filter:brightness(1.25)}.btn:active:not(:disabled){transform:translateY(1px)}.btn:disabled{opacity:.45;cursor:not-allowed}.btn.primary{background:linear-gradient(180deg, var(--bronze-hi), var(--bronze));color:#2a1a10;border-color:#7b5537}.hint{color:var(--text-dim);font-size:12px}.error-bar{color:#f3b3a3;background:#e2725b26;border:1px solid #e2725b80;border-radius:8px;margin:0 14px 10px;padding:8px 12px;font-size:12px}.selector-pane{flex-direction:column;width:100%;min-width:0;height:100%;min-height:0;display:flex;position:relative}.nav-row{flex:none;align-items:center;gap:6px;min-width:0;padding:5px 12px;display:flex}.search-row{flex:auto;min-width:0;padding:0;position:relative}.search{border-radius:var(--r);border:1px solid var(--line);background:var(--bg-3);width:100%;color:var(--text);outline:none;padding:6px 28px 6px 11px;font-size:13px}.search:focus{border-color:var(--bronze)}.clear{color:var(--text-dim);cursor:pointer;z-index:2;background:0 0;border:none;justify-content:center;align-items:center;width:24px;height:24px;font-size:18px;line-height:1;display:flex;position:absolute;top:50%;right:7px;transform:translateY(-40%)}.search-toggle{border:1px solid var(--line);background:var(--bg-3);width:30px;height:30px;color:var(--text-dim);cursor:pointer;border-radius:8px;flex:none;justify-content:center;align-items:center;display:inline-flex}.search-toggle:hover{color:var(--bronze-hi);border-color:var(--bronze)}.search-close{border:1px solid var(--line);background:var(--bg-3);height:30px;color:var(--text-dim);cursor:pointer;white-space:nowrap;border-radius:8px;flex:none;padding:0 12px;font-size:12px}.cat-row{scrollbar-width:none;-webkit-overflow-scrolling:touch;flex:auto;gap:5px;min-width:0;display:flex;overflow-x:auto}.cat-row::-webkit-scrollbar{display:none}.cat{border:1px solid var(--line);background:var(--bg-3);color:var(--text-dim);cursor:pointer;white-space:nowrap;border-radius:999px;flex:none;padding:5px 12px;font-size:13px}.cat.on{border-color:var(--bronze);color:var(--bronze-hi);background:#e8b3832e;font-weight:600}.sub-tabs{scrollbar-width:none;-webkit-overflow-scrolling:touch;flex:none;gap:5px;padding:0 12px 6px;display:flex;overflow-x:auto}.sub-tabs::-webkit-scrollbar{display:none}.sub-tab{border:1px solid var(--line);color:var(--text-dim);cursor:pointer;white-space:nowrap;background:0 0;border-radius:999px;flex:none;padding:3px 10px;font-size:11px}.sub-tab b{opacity:.65;margin-left:3px;font-size:10px;font-weight:600}.sub-tab.on{border-color:var(--bronze);color:var(--bronze-hi);background:#e8b38329}.sub-tab:disabled{opacity:.4;cursor:default}.tip{border-left:2px solid var(--bronze);color:var(--bronze-hi);white-space:nowrap;text-overflow:ellipsis;flex:none;margin:0 12px 6px;padding:0 0 0 8px;font-size:11px;line-height:16px;overflow:hidden}.grid-scroll{-webkit-overflow-scrolling:touch;flex:1 1 0;align-self:stretch;width:100%;min-width:0;min-height:0;padding:4px 12px 0;overflow:hidden auto}.grid{gap:8px;display:grid;position:relative}.grid-foot{color:var(--text-dim);border-top:1px solid var(--line);flex:none;padding:6px 12px 10px;font-size:11px}.cell.bkt-start{box-shadow:inset 0 2px 0 var(--bronze)}.grid-bucket{color:var(--bronze);background:#e8b3831f;border-radius:999px;margin-left:10px;padding:1px 8px}.cell{background:var(--bg-3);border:1px solid var(--line);border-radius:8px;overflow:hidden}.cell-pos{position:absolute;top:0;left:0}.cell.sel{border-color:var(--bronze-hi);box-shadow:0 0 0 2px #e8b38359}.cell-img{cursor:pointer;background:#fff;border:none;width:100%;padding:0;display:block;position:relative;overflow:hidden}.cell-img img{object-fit:cover;object-position:center;width:100%;height:100%;position:absolute;inset:0}.cell-name{height:26px;color:var(--text-dim);white-space:nowrap;text-overflow:ellipsis;padding:4px 6px;font-size:11px;line-height:18px;display:block;overflow:hidden}.fav{touch-action:manipulation;color:#8d7a6a;cursor:pointer;background:#14100d8c;border:none;border-radius:50%;justify-content:center;align-items:center;width:22px;height:22px;font-size:12px;line-height:1;display:flex;position:absolute;top:3px;right:3px}.fav.on{color:#ffc861}.empty{text-align:center;color:var(--text-dim);grid-column:1/-1;padding:30px 0;font-size:13px}.more{border-radius:var(--r);border:1px dashed var(--line);color:var(--text-dim);cursor:pointer;background:0 0;margin:0 12px 14px;padding:9px}.boot{height:100dvh;color:var(--text-dim);flex-direction:column;justify-content:center;align-items:center;gap:14px;display:flex}.spinner{border:3px solid var(--line);border-top-color:var(--bronze);border-radius:50%;width:28px;height:28px;animation:.9s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}@media (height<=520px){.preview-head{padding:6px 12px}.stage-wrap{padding:8px}.preview-foot{padding:7px 12px}.btn{padding:7px 14px}.search{padding:8px 30px 8px 12px}.cell-name{font-size:10px}}.zone.part{z-index:5;background:#6fbf8a12;border-style:solid;border-color:#6fbf8a80}.zone.part:hover{border-color:var(--ok);background:#6fbf8a33}.zone.part.picked{border:2px solid var(--ok);background:#6fbf8a38}.zone.part .zone-tag{background:var(--ok);color:#10261a}.zone.part-lockL .zone-tag{transform:translate(-100%,-50%)}.zone.part-lockR .zone-tag{transform:translateY(-50%)}.zone-x{border:1px solid var(--bronze-hi);width:20px;height:20px;color:var(--bronze-hi);cursor:pointer;z-index:6;background:#14100dd1;border-radius:50%;justify-content:center;align-items:center;font-size:14px;line-height:1;display:flex;position:absolute;top:2px;right:2px}.zone-x:hover{background:var(--err);border-color:var(--err);color:#fff}.zoom{touch-action:manipulation;color:#cbb8a6;cursor:pointer;background:#14100d99;border:none;border-radius:50%;justify-content:center;align-items:center;width:22px;height:22px;font-size:12px;line-height:1;display:flex;position:absolute;bottom:30px;right:3px}.zoom:hover{background:var(--bronze);color:#2a1a10}.zoom-modal{-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);z-index:100;background:#0a0806d1;justify-content:center;align-items:center;padding:20px;display:flex;position:fixed;inset:0}.zoom-box{background:var(--bg-2);border:1px solid var(--line);border-radius:14px;flex-direction:column;max-width:min(92vw,900px);max-height:92vh;display:flex;overflow:hidden;box-shadow:0 24px 70px #0009}.zoom-head{border-bottom:1px solid var(--line);align-items:center;gap:12px;padding:10px 14px;display:flex}.zoom-title{color:var(--bronze-hi);text-overflow:ellipsis;white-space:nowrap;min-width:0;font-weight:600;overflow:hidden}.zoom-meta{color:var(--text-dim);white-space:nowrap;font-size:12px}.zoom-close{color:var(--text-dim);cursor:pointer;background:0 0;border:none;margin-left:auto;font-size:24px;line-height:1}.zoom-img{background:#efe9e2;flex:auto;justify-content:center;align-items:center;min-width:0;min-height:0;padding:12px;display:flex;overflow:auto}.zoom-img img{object-fit:contain;max-width:100%;max-height:62vh;display:block}.zoom-foot{border-top:1px solid var(--line);align-items:center;gap:10px;padding:10px 14px;display:flex}.zoom-foot .btn{align-items:center;text-decoration:none;display:inline-flex}.cell.locked .cell-img img{opacity:.28;filter:grayscale(.6)}.cell.locked .cell-name{opacity:.45}.caret{color:var(--text-dim);font-size:11px;transition:transform .15s}.caret.up{transform:rotate(180deg)}.config-empty{color:var(--text-dim);padding:16px 14px;font-size:12px;line-height:1.7}.config-list{margin:0;padding:4px 0 8px;list-style:none}.config-item{border-bottom:1px solid #45352b80;align-items:center;gap:8px;padding:7px 12px;font-size:13px;display:flex}.config-item:last-child{border-bottom:none}.ci-icon{color:var(--bronze);text-align:center;flex:none;width:16px;font-size:13px}.ci-label{color:var(--text-dim);flex:none;font-size:12px}.ci-detail{color:var(--ok);text-overflow:ellipsis;white-space:nowrap;background:#6fbf8a24;border-radius:4px;flex:0 auto;min-width:0;padding:1px 6px;font-size:11px;overflow:hidden}.ci-value{text-overflow:ellipsis;white-space:nowrap;min-width:0;color:var(--text);flex:auto;overflow:hidden}.ci-x{touch-action:manipulation;border:1px solid var(--line);width:22px;height:22px;color:var(--text-dim);cursor:pointer;background:#14100d99;border-radius:50%;flex:none;justify-content:center;align-items:center;font-size:14px;line-height:1;display:flex}.ci-x:hover{background:var(--err);border-color:var(--err);color:#fff}.zone-x{opacity:.32;transition:opacity .12s,transform .12s}.zone:hover .zone-x{opacity:1}.zone-x:hover{transform:scale(1.15)}.hint.warn{color:#e8b383}.sym-note{color:var(--bronze);white-space:nowrap;text-overflow:ellipsis;background:#e8b3831f;border:1px solid #e8b38359;border-radius:999px;min-width:0;margin-left:auto;padding:2px 9px;font-size:11px;overflow:hidden}.zone-toggle{margin-left:8px}.config-float{z-index:15;background:#18120e8c;border:1px solid #e8b3834d;border-radius:10px;flex-direction:column;width:min(252px,72%);max-width:calc(100% - 12px);max-height:calc(100% - 12px);display:flex;position:absolute;top:6px;left:6px;overflow:hidden;box-shadow:0 8px 26px #00000059}.config-float-head{cursor:pointer;-webkit-user-select:none;user-select:none;background:#2d231c73;border:0;border-bottom:1px solid #e8b38338;flex:none;align-items:center;gap:7px;padding:7px 9px;display:flex}.cf-title{color:var(--bronze-hi);white-space:nowrap;font-size:12px;font-weight:600}.config-float-head b{color:var(--text-dim);text-align:center;background:#00000047;border-radius:999px;min-width:16px;font-size:11px;font-weight:700}.config-float-head b.on{color:var(--bronze-hi)}.cf-pending{color:#10261a;background:var(--ok);white-space:nowrap;border-radius:999px;padding:1px 7px;font-size:10px}.cf-clear{color:var(--text-dim);cursor:pointer;white-space:nowrap;border:1px solid #ffffff24;border-radius:999px;padding:1px 7px;font-size:10px}.cf-clear:hover{color:var(--err);border-color:var(--err)}.config-float-body{-webkit-overflow-scrolling:touch;flex:auto;min-width:0;min-height:0;overflow-y:auto}.config-float.closed{width:auto}.config-float.closed .config-float-head{border-bottom:none}.config-float .config-list{padding:2px 0 4px}.config-float .config-item{border-bottom-color:#ffffff12;padding:5px 9px;font-size:12px}.config-float .config-empty{padding:11px 11px 13px;font-size:11px;line-height:1.65}.history-modal{z-index:200;background:#0a0806d1;justify-content:center;align-items:center;padding:20px;display:flex;position:fixed;inset:0}.history-box{background:var(--bg-2);border:1px solid var(--line);border-radius:14px;flex-direction:column;width:min(94vw,1000px);max-height:88vh;display:flex;overflow:hidden;box-shadow:0 24px 70px #0009}.history-head{border-bottom:1px solid var(--line);color:var(--bronze-hi);flex:none;align-items:center;gap:10px;padding:10px 14px;font-size:14px;font-weight:600;display:flex}.history-count{color:var(--text-dim);font-size:12px;font-weight:400}.history-empty{text-align:center;color:var(--text-dim);padding:40px 20px;font-size:13px}.history-grid{-webkit-overflow-scrolling:touch;flex:auto;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));align-content:start;gap:10px;min-width:0;min-height:0;padding:12px;display:grid;overflow-y:auto}.history-cell{border:1px solid var(--line);background:var(--bg-3);cursor:pointer;border-radius:8px;padding:0;display:block;position:relative;overflow:hidden}.history-cell:hover{border-color:var(--bronze)}.history-cell img{aspect-ratio:3/2;object-fit:cover;background:#efe9e2;width:100%;display:block}.history-time{color:var(--text-dim);text-align:left;padding:4px 7px 0;font-size:11px;display:block}.history-face{color:var(--bronze);text-align:left;padding:0 7px 5px;font-size:10px;display:block}.history-detail{z-index:210;background:#0a0806cc;justify-content:center;align-items:center;display:flex;position:absolute;inset:0}.history-detail-box{background:var(--bg-2);border:1px solid var(--line);border-radius:12px;flex-direction:column;width:min(92vw,880px);max-height:92vh;display:flex;overflow:hidden}.history-detail-img{background:#efe9e2;flex:auto;justify-content:center;align-items:center;min-width:0;min-height:0;padding:10px;display:flex;overflow:auto}.history-detail-img img{object-fit:contain;max-width:100%;max-height:58vh;display:block}.history-detail-foot{border-top:1px solid var(--line);flex:none;padding:9px 14px}.history-sum{flex-wrap:wrap;gap:8px;margin-bottom:9px;display:flex}.history-sum span{color:var(--text-dim);background:var(--bg-3);border:1px solid var(--line);border-radius:999px;padding:2px 9px;font-size:11px}.history-actions{flex-wrap:wrap;gap:9px;display:flex}.history-actions .btn{align-items:center;text-decoration:none;display:inline-flex}.history-tabs{gap:6px;display:flex}.history-tab{color:var(--text-dim);cursor:pointer;background:0 0;border:1px solid #0000;border-radius:999px;padding:3px 10px;font-size:13px}.history-tab.on{color:var(--bronze-hi);border-color:var(--bronze);background:#e8b3831f;font-weight:600}.history-msg{color:var(--ok);text-overflow:ellipsis;white-space:nowrap;min-width:0;font-size:12px;overflow:hidden}.history-deleted-tag{color:#e8b383;background:#e8b38324;border-radius:999px;padding:1px 9px;font-size:11px}.history-cell-wrap{position:relative}.history-del{color:#cbb8a6;cursor:pointer;background:#14100db3;border:none;border-radius:50%;justify-content:center;align-items:center;width:24px;height:24px;font-size:12px;display:flex;position:absolute;top:4px;right:4px}.history-del:hover{background:var(--err);color:#fff}.history-trash-ops{gap:5px;padding:4px 5px 5px;display:flex}.history-trash-ops button{border:1px solid var(--line);background:var(--bg-3);color:var(--text);cursor:pointer;border-radius:6px;flex:1;padding:4px 0;font-size:11px}.history-trash-ops button:hover{border-color:var(--bronze)}.history-trash-ops button.danger:hover{border-color:var(--err);color:var(--err)}.btn.danger{color:var(--err);border-color:#e2725b80}.btn.danger:hover{background:#e2725b24}.zoom:after,.fav:after,.ci-x:after{content:"";width:40px;height:40px;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.zoom,.fav{isolation:isolate;position:absolute}.ci-x{isolation:isolate;position:relative}.zoom>*,.fav>*,.ci-x>*{z-index:2;position:relative}@media (height<=480px){.preview-foot{flex-wrap:nowrap;gap:6px;padding:6px 10px}.preview-foot .btn{white-space:nowrap;flex:none;padding:7px 10px;font-size:12px}.preview-foot .hint{white-space:nowrap;text-overflow:ellipsis;flex:0 auto;min-width:0;font-size:11px;overflow:hidden}.grid-foot{display:none}.nav-row{padding:3px 8px 4px}.cat{padding:4px 7px;font-size:12px}.tip{margin-bottom:4px;line-height:15px}.sub-tabs{padding-bottom:5px}.sub-tab{padding:2px 9px;font-size:11px}.preview-head{gap:8px;padding:6px 10px}.zone-toggle{font-size:11px}}@media (width<=1000px){.sym-note{display:none}.cat{padding:4px 7px;font-size:12px}.nav-row{gap:5px;padding:4px 8px 5px}.cat-row{gap:4px;-webkit-mask-image:linear-gradient(90deg,#000 0 calc(100% - 10px),#0000 100%);mask-image:linear-gradient(90deg,#000 0 calc(100% - 10px),#0000 100%)}.preview-foot .btn{padding:6px 8px;font-size:11px}.preview-foot{gap:5px;padding:5px 8px}.search{padding:5px 26px 5px 10px;font-size:12px}.zone-tag{padding:1px 4px;font-size:9px}.config-float{width:min(200px,58%)}}@media (hover:none){.zone:hover,.cat:hover,.btn:hover{background:inherit}.zone:hover{border-color:var(--bronze-hi);background:#e8b3832e}}
