:root{--gap: #161616;--bar: #181818;--ed: #2b2b2b;--ed-head: #303030;--panel: #3d3d3d;--field: #545454;--input: #1d1d1d;--text: #e6e6e6;--muted: #a6a6a6;--dim: #8c8c8c;--blue: #4772b3;--blue-dark: #334d80;--orange: #ffaa40;--font: "Noto Sans", system-ui, -apple-system, "Segoe UI", sans-serif;color-scheme:dark}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{background:var(--gap);color:var(--text);font:12px/1.35 var(--font);overflow:hidden;-webkit-tap-highlight-color:transparent;overscroll-behavior:none}button{font:inherit;color:inherit;cursor:pointer}button:focus-visible,[role=slider]:focus-visible,input:focus-visible{outline:2px solid var(--blue);outline-offset:1px}.app{height:100%;display:flex;flex-direction:column;padding:env(safe-area-inset-top,0) env(safe-area-inset-right,0) env(safe-area-inset-bottom,0) env(safe-area-inset-left,0)}.topbar{display:flex;flex-wrap:wrap;align-items:center;gap:4px;padding:4px 8px;background:var(--bar)}.logo{width:22px;height:22px;border-radius:4px;background:var(--text);color:var(--bar);display:grid;place-items:center;font-weight:600}.appname{font-weight:600;margin:0 8px 0 4px}.workspaces{display:flex;gap:1px;overflow-x:auto;scrollbar-width:none}.ws{background:none;border:0;color:var(--muted);padding:5px 11px;border-radius:4px 4px 0 0;white-space:nowrap}.ws.on{background:var(--ed-head);color:#fff}.ws:hover:not(.on){color:var(--text)}.topright{margin-left:auto;display:flex;align-items:center;gap:6px;flex-wrap:wrap}.toggles{display:flex;gap:1px;background:#0f0f0f;border-radius:4px;padding:1px;overflow-x:auto}.tg{background:none;border:0;color:var(--dim);border-radius:3px;padding:3px 8px;font-size:11px;white-space:nowrap}.tg.on{background:var(--blue);color:#fff}.btn-small{background:var(--ed);border:1px solid var(--panel);border-radius:4px;padding:3px 8px;font-size:11px;white-space:nowrap}.muted{color:var(--muted)}.notice{background:#3b3220;color:#f3d9a4;padding:5px 12px;font-size:12px}.body{flex:1;min-height:0;display:flex;gap:2px;padding:2px;background:var(--gap)}.center{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}.views{flex:1;min-height:0;display:flex;gap:2px}.right{width:290px;flex:none;display:flex;flex-direction:column;gap:2px;min-height:0}.editor{background:var(--ed);border-radius:4px;display:flex;flex-direction:column;overflow:hidden;min-width:0;min-height:0}.editor-head{display:flex;align-items:center;gap:6px;padding:4px 6px;background:var(--ed-head);flex:none}.editor-body{flex:1;min-height:0;position:relative;display:flex}.editor-body.row{flex-direction:row}.chip{background:var(--panel);border-radius:3px;padding:2px 8px;white-space:nowrap}.push{margin-left:auto}.icon-btn{width:24px;height:22px;border:0;border-radius:3px;background:var(--panel);display:grid;place-items:center;flex:none}.work-view,.camera-view{flex:1 1 0}.work-view .editor-body,.cam-stage{background:radial-gradient(ellipse at center,#444,#2b2b2b)}.view-canvas{width:100%;height:100%;display:block;touch-action:none}.view-hint{position:absolute;left:8px;bottom:6px;max-width:calc(100% - 16px);background:#181818d1;color:#cfcfcf;border-radius:4px;padding:2px 8px;font-size:11px;pointer-events:none;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.cam-stage{flex:1;min-width:0;position:relative;display:grid;place-items:center}.cam-frame{position:relative;box-shadow:0 0 0 1px #000,0 0 0 3000px #00000052}.guides{position:absolute;inset:0;pointer-events:none}.guides .gv{position:absolute;top:0;bottom:0;border-left:1px solid rgba(71,114,179,.6)}.guides .gh{position:absolute;left:0;right:0;border-top:1px solid rgba(71,114,179,.6)}.safe{position:absolute;inset:5%;border:1px dashed rgba(255,170,64,.75);pointer-events:none}.sidebar{width:220px;flex:none;background:var(--ed);padding:8px;display:flex;flex-direction:column;gap:6px;overflow-y:auto}.panel{background:var(--panel);border-radius:4px;padding:6px 8px;display:flex;flex-direction:column;gap:5px}.panel h3{margin:0;font-size:12px;font-weight:600}.panel h3:before{content:"▾ ";color:var(--dim)}.panel p{margin:0;color:var(--muted);line-height:1.45}.panel.soon{background:#333}.chips{display:flex;flex-wrap:wrap;gap:3px}.grid2{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:3px}.chip-btn{background:var(--field);border:0;border-radius:3px;padding:4px 7px;font-size:11px}.chip-btn.on{background:var(--blue);color:#fff}.chip-btn.wide{width:100%;padding:6px}.shot-row{display:flex;align-items:center;gap:4px;border-radius:3px;padding:3px 4px}.shot-pick{flex:1;min-width:0;display:flex;align-items:center;gap:6px;background:transparent;border:0;padding:0;text-align:left;color:inherit;cursor:pointer}.shot-pick img,.shot-ph{width:64px;height:36px;object-fit:cover;border-radius:2px;background:#222;flex:none;display:block}.shot-txt{display:flex;flex-direction:column;gap:1px;min-width:0}.shot-txt span{color:#bfbfbf;font-size:10px}.shot-del{background:transparent;border:0;color:#999;font-size:12px;padding:4px 6px;cursor:pointer}.shot-del:hover{color:#fff}.shot-row.on{background:var(--blue-dark)}.layers{flex:1}.search{flex:1;background:var(--input);border-radius:3px;padding:2px 8px;color:var(--dim)}.tree{flex:1;overflow-y:auto;background:#282828}.layer{display:flex;align-items:center;height:24px;padding-right:6px}.layer:nth-child(2n){background:#2b2b2b}.layer.on{background:var(--blue-dark)}.layer-name{flex:1;min-width:0;display:flex;align-items:center;gap:6px;background:none;border:0;height:100%;text-align:left;padding:0}.layer.on .name{color:var(--orange)}.caret{width:10px;color:var(--dim);font-size:9px}.swatch{width:8px;height:8px;border-radius:2px;flex:none;display:inline-block}.name{flex:1;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.name.group{font-weight:600}.tag{color:var(--dim);font-size:10px;margin-right:4px;white-space:nowrap}.tiny{width:22px;height:20px;border:0;background:none;color:var(--text);display:grid;place-items:center;border-radius:3px}.tiny.off{opacity:.3}.tiny:hover{background:#3a3a3a}.props{flex:1.25;flex-direction:row;background:var(--ed-head)}.ptabs{width:30px;background:#232323;display:flex;flex-direction:column;gap:2px;padding:4px 2px;flex:none}.ptab{width:26px;height:26px;border:0;border-radius:4px;background:transparent;display:grid;place-items:center}.ptab span{width:12px;height:12px;border-radius:3px}.ptab.on{background:var(--blue)}.pbody{flex:1;min-width:0;padding:6px;display:flex;flex-direction:column;gap:4px;overflow-y:auto}.ptitle{display:flex;align-items:center;gap:6px;padding:2px 4px 4px;color:#bfbfbf}.note{font-size:11px;color:var(--dim)!important}.kv{display:flex;justify-content:space-between;gap:8px}.kv span{color:#bfbfbf}.seg{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:1px;background:var(--input);border-radius:4px;padding:1px}.seg button{background:transparent;border:0;border-radius:3px;padding:4px 2px;font-size:11px}.seg button.on{background:var(--blue);color:#fff}.seg button:disabled{color:#6a6a6a;cursor:not-allowed}.btn-primary{background:var(--blue);color:#fff;border:0;border-radius:4px;padding:6px;font-weight:600}.check{display:flex;align-items:center;gap:6px;color:#d0d0d0}.check input{accent-color:var(--blue);margin:0}.field{display:flex;align-items:center;gap:8px}.field-label{width:42%;text-align:right;color:#bfbfbf;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.field-slider{flex:1;min-width:0;position:relative;height:22px;border-radius:4px;background:var(--field);overflow:hidden;display:grid;place-items:center;cursor:ew-resize;touch-action:none;user-select:none}.field-slider.is-disabled{opacity:.5;cursor:not-allowed}.field-fill{position:absolute;left:0;top:0;bottom:0;background:var(--blue)}.field-value{position:relative;white-space:nowrap}.field-input{flex:1;min-width:0;height:22px;border-radius:4px;background:var(--input);color:var(--text);border:1px solid var(--blue);padding:0 6px;font:inherit;text-align:center}.timeline{flex:none}.frame-chip{background:var(--blue);border-radius:3px;padding:1px 9px}.ruler{position:relative;height:34px;margin:6px 12px 0;background:#232323;border-radius:4px;touch-action:none;cursor:col-resize}.tick{position:absolute;top:9px;transform:translate(-50%);color:var(--dim);font-size:10px;pointer-events:none}.tick:first-child{transform:none}.tick:last-of-type{transform:translate(-100%)}.playhead{position:absolute;top:-3px;bottom:-3px;width:0;border-left:2px solid var(--blue);pointer-events:none}.track-note{color:var(--dim);padding:6px 12px 8px;font-size:11px}.edge-tab{border:0;border-radius:4px;background:#282828;color:#bfbfbf;font-size:11px;flex:none}.edge-tab.vertical{width:22px;writing-mode:vertical-rl}.edge-tab.horizontal{height:22px}.edge-bar{height:24px;flex:none;border:0;border-radius:4px;background:#282828;color:#bfbfbf;font-size:11px;text-align:left;padding:0 10px}.status{display:flex;gap:16px;padding:3px 10px;background:var(--bar);color:var(--muted);font-size:11px;white-space:nowrap;overflow:hidden}.status span:first-child{overflow:hidden;text-overflow:ellipsis}@media (max-width: 900px){.hide-narrow,.appname{display:none}.topbar{flex-wrap:wrap}.workspaces{flex:1;min-width:0}.topright{margin-left:0;width:100%}.toggles{flex:1}.views{flex-direction:column}.right{position:fixed;right:0;top:76px;bottom:26px;width:min(320px,86vw);z-index:5;box-shadow:-8px 0 24px #00000080}.edge-tab.vertical{display:none}.camera-view .editor-body.row{flex-direction:column}.sidebar{width:auto;max-height:40%;flex-direction:row;flex-wrap:wrap}.sidebar .panel{flex:1 1 160px}.status span:first-child{display:none}}.sidebar.wide{width:290px}.loc{display:flex;flex-direction:column;gap:6px}.seg.two{grid-template-columns:repeat(2,minmax(0,1fr))}.search-row{display:flex;gap:4px}.text-input{flex:1;min-width:0;height:30px;background:var(--input);color:var(--text);border:1px solid #4a4a4a;border-radius:4px;padding:0 8px;font:13px var(--font)}.text-input:focus{border-color:var(--blue);outline:none}.search-row .btn-primary{padding:0 12px}.btn-primary:disabled{opacity:.6;cursor:default}.results{display:flex;flex-direction:column;gap:2px;max-height:300px;overflow-y:auto}.result{display:flex;flex-direction:column;align-items:flex-start;gap:1px;background:#353535;border:0;border-radius:4px;padding:6px 8px;text-align:left}.result:hover{background:var(--blue-dark)}.result span{color:var(--muted);font-size:11px}.result:disabled{opacity:.5}.err{color:#ff9d8a!important}.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}.badge{background:var(--panel);border-radius:3px;padding:2px 8px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:55%}.badge.loading{background:#3b3220;color:#f3d9a4}.badge.error{background:#4a2620;color:#ffb4a6}.veil{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:10px;background:#161616b8;color:#eee;font-size:13px;text-align:center;padding:16px}.veil.is-error{color:#ffb4a6}.spinner{width:26px;height:26px;border:3px solid #555;border-top-color:var(--blue);border-radius:50%;animation:spin .9s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}@media (prefers-reduced-motion: reduce){.spinner{animation-duration:3s}}.attribution{position:absolute;right:6px;bottom:6px;background:#ffffffd9;color:#333;font-size:10px;padding:1px 6px;border-radius:3px;pointer-events:none}@media (max-width: 900px){.sidebar.wide{width:auto;max-height:50%}.badge{max-width:70%}}.input-wrap{position:relative;flex:1;min-width:0;display:flex}.input-wrap .text-input{padding-right:34px}.input-wrap input[type=search]::-webkit-search-cancel-button{display:none}.clear-btn{position:absolute;right:2px;top:50%;transform:translateY(-50%);width:30px;height:28px;border:0;border-radius:4px;background:transparent;color:var(--muted);font-size:13px;display:grid;place-items:center}.clear-btn:hover,.clear-btn:focus-visible{background:#3a3a3a;color:var(--text)}.place-card{display:flex;flex-direction:column;gap:6px;background:#333;border-radius:4px;padding:6px 8px}.place-head{display:flex;flex-wrap:wrap;gap:6px;align-items:baseline}.mono{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;color:var(--muted);font-size:11px}.place-row{display:flex;gap:8px;align-items:center}.dpad{display:grid;grid-template-columns:repeat(3,26px);grid-template-rows:repeat(3,24px);gap:2px;flex:none}.dpad .n{grid-column:2;grid-row:1}.dpad .w{grid-column:1;grid-row:2}.dpad .e{grid-column:3;grid-row:2}.dpad .s{grid-column:2;grid-row:3}.dpad .chip-btn{padding:0}.map-row{align-items:flex-start;flex-wrap:wrap}.place-map{flex:1 1 220px;min-width:0;display:flex;flex-direction:column;gap:6px}.place-map canvas{display:block;border-radius:4px;border:1px solid #222;touch-action:none;cursor:crosshair;max-width:100%}.map-actions{display:flex;flex-wrap:wrap;gap:4px}.map-actions .chip-btn:disabled{opacity:.45}.btn-secondary{background:#c96a4a;color:#fff;border:0;border-radius:4px;padding:6px;font-weight:600}.groups{display:flex;flex-direction:column;gap:2px}.group-title{color:var(--muted);font-size:11px;text-transform:uppercase;letter-spacing:.06em;padding:4px 0 2px}.group{display:flex;flex-direction:column;gap:2px}.group-head{display:flex;justify-content:space-between;background:transparent;border:0;padding:5px 4px;font-weight:600;text-align:left;border-top:1px solid #3a3a3a}.cam-col{flex:1;min-width:0;min-height:0;display:flex;flex-direction:column}.cam-col .cam-stage{flex:1;min-height:140px}.pad-bar{flex:none;display:flex;flex-wrap:wrap;align-items:center;gap:4px 8px;padding:4px 8px;background:#232323;border-top:1px solid #161616}.pad-hint{flex:1 1 200px;min-width:0;color:#9a9a9a;font-size:11px;line-height:1.35;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.move-pad{display:flex;gap:8px;align-items:flex-end;margin-left:auto;user-select:none;-webkit-user-select:none}.mp-grid{display:grid;grid-template-columns:repeat(3,34px);grid-template-rows:repeat(2,34px);gap:3px}.mp{width:34px;height:34px;border:0;border-radius:6px;background:#1e1e1eb8;color:#eee;font-size:15px;touch-action:none;cursor:pointer;padding:0}.mp:active{background:var(--blue)}.mp-toggle{width:26px;height:26px;font-size:12px;align-self:flex-end}@media (max-width: 899px){.move-pad{gap:6px}.pad-bar{justify-content:center}.pad-hint{display:none}.mp-grid{grid-template-columns:repeat(3,36px);grid-template-rows:repeat(2,36px)}.mp{width:36px;height:36px;font-size:16px}.mp-toggle{width:28px;height:28px;font-size:13px}}.world{display:flex;flex-direction:column;gap:8px}.gacha-btn{width:100%;padding:10px;border:0;border-radius:6px;background:#f2876f;color:#2b1a14;font-size:16px;font-weight:700;cursor:pointer}.gacha-btn:disabled{opacity:.6}.seed-row{display:flex;align-items:center;gap:4px}.seed-row .text-input{flex:1;min-width:0}.panel-lite{display:flex;flex-direction:column;gap:6px;background:#333;border-radius:4px;padding:6px 8px}.chips.wrap{flex-wrap:wrap}.step{border-top:1px solid #404040;padding:4px 0}.step:first-of-type{border-top:0}.step-head{display:flex;align-items:center;gap:6px;flex-wrap:wrap}.step-head .muted{font-size:11px}.chip-btn.dice{padding:2px 6px}.step-values{background:transparent;border:0;color:#aaa;font-size:11px;padding:2px 0 0 34px;cursor:pointer;text-align:left}.step-body{padding:4px 0 2px 34px;display:flex;flex-direction:column;gap:4px}.region-map{display:block;border-radius:4px;border:1px solid #222;touch-action:none;cursor:crosshair;max-width:100%}.select{background:var(--field);color:#eee;border:0;border-radius:4px;padding:6px;font:inherit}.png-btn{background:#2a9fb3;color:#fff;font-weight:600;margin-left:6px;flex:none}.map-head{display:flex;align-items:center;justify-content:space-between;gap:6px}.draw-tools{display:flex;flex-direction:column;gap:6px}.draw-tools .dot{display:inline-block;width:9px;height:9px;border-radius:50%;vertical-align:middle;margin-right:2px}.gacha-row{display:flex;gap:6px}.gacha-row .gacha-btn{flex:1}.relief-btn{flex:none;white-space:nowrap}.camera-view:fullscreen{background:#1e1e1e}.camera-view:fullscreen .editor-body{height:calc(100vh - 34px)}.style-group{display:flex;flex-direction:column;gap:6px}.style-group+.style-group{margin-top:4px}.style-group-head{display:flex;align-items:baseline;gap:6px;width:100%;min-height:34px;padding:6px 8px;border:0;border-radius:4px;background:#262626;color:#e6e6e6;font:inherit;font-size:13px;text-align:left;cursor:pointer}.style-group-head b{font-weight:600}.style-group-head:hover{background:#303030}.sg-arrow{color:#9a9a9a;width:10px}.sg-hint{color:#8a8a8a;font-size:11px;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.style-group-body{display:flex;flex-direction:column;gap:6px;padding-left:4px;border-left:2px solid #3a3a3a;margin-left:6px}.char-dot{width:10px;height:10px;border-radius:50%;background:#f08a6c;flex:none;margin-left:4px}.field-row{display:flex;align-items:center;gap:6px;font-size:11px}.field-row>span{width:44px;flex:none;color:var(--muted)}.field-row select,.field-row input{flex:1;min-width:0;background:var(--field);color:var(--text);border:0;border-radius:3px;padding:4px 6px;font:inherit}.chip-btn:disabled{opacity:.45}.page-view{flex:1}.page-stage{background:radial-gradient(ellipse at center,#4a4a4a,#2b2b2b);display:grid;place-items:center;overflow:hidden}.page-canvas{display:block;box-shadow:0 2px 14px #0000008c;touch-action:none;cursor:pointer;background:#fff}.page-tabs{flex-wrap:nowrap;overflow-x:auto}.layout-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:4px}.layout-btn{background:var(--field);border:2px solid transparent;border-radius:4px;padding:4px;display:flex;flex-direction:column;align-items:center;gap:2px;font-size:9px;color:var(--muted)}.layout-btn svg{width:100%;height:auto;background:#f4f2ee;border-radius:2px}.layout-btn rect{fill:#cfcac1;stroke:#222;stroke-width:14}.layout-btn.on{border-color:var(--orange);color:var(--text)}.layout-btn span{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%}.text-edit{background:var(--field);color:var(--text);border:0;border-radius:3px;padding:5px 6px;font:inherit;resize:vertical}.seg{display:flex;flex-wrap:wrap;align-items:center;gap:3px}.seg-label{font-size:11px;color:var(--muted);width:44px;flex:none}.grid3{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:3px}.face-group{display:flex;flex-direction:column;gap:3px;padding-top:4px}.lib-name{flex:1;min-width:0;background:var(--field);color:var(--text);border:0;border-radius:3px;padding:4px 6px;font:inherit;font-size:11px}.finger-detail{border-left:2px solid var(--line, #3a3a3a);padding-left:6px;margin:2px 0 4px}
