:root{--bg:#f6f7f8;--panel:#fff;--ink:#1f2328;--muted:#646b73;--line:#dde1e5;--accent:#e0703a;--accent-ink:#fff;--control:#f0f2f4;color:var(--ink);background:var(--bg);font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}.app{grid-template-columns:1fr 320px;height:100%;display:grid}.stage{min-height:0;position:relative}.panel{background:var(--panel);border-left:1px solid var(--line);flex-direction:column;min-height:0;display:flex}.panel-head{border-bottom:1px solid var(--line);padding:14px 16px 0}.panel-body{flex:1;padding:0 16px 16px;overflow-y:auto}.panel-body section:first-child{border-top:none}.panel h1{margin:0 0 4px;font-size:18px}.panel h2{text-transform:uppercase;letter-spacing:.06em;color:var(--muted);margin:0 0 8px;font-size:12px}.panel section{border-top:1px solid var(--line);padding:14px 0}.hint{color:var(--muted);margin:0 0 12px;font-size:13px;line-height:1.4}button,select{font:inherit;color:var(--ink);background:var(--control);border:1px solid var(--line);cursor:pointer;border-radius:6px;padding:6px 10px;font-size:14px}button:hover{border-color:#b9c0c7}button.quiet{color:var(--muted);background:0 0;margin-top:4px}select{width:100%}.buttons{flex-wrap:wrap;gap:6px;display:flex}.dofs{margin-top:10px}.dof{margin-bottom:10px;font-size:14px;display:block}.dof-head{justify-content:space-between;margin-bottom:2px;display:flex}.dof output{color:var(--muted);font-variant-numeric:tabular-nums}.dof input[type=range]{width:100%;accent-color:var(--accent)}.toggle{justify-content:space-between;align-items:center;margin-bottom:8px;font-size:14px;display:flex}.toggle div{display:flex}.toggle button{border-radius:0;padding:4px 10px}.toggle button:first-child{border-radius:6px 0 0 6px}.toggle button:last-child{border-left:none;border-radius:0 6px 6px 0}.toggle button.on{background:var(--accent);border-color:var(--accent);color:var(--accent-ink)}@media (width<=760px){.app{grid-template-rows:55vh 1fr;grid-template-columns:1fr}.panel{border-left:none;border-top:1px solid var(--line)}}button:disabled{opacity:.45;cursor:default}button.link{color:var(--accent);background:0 0;border:none;padding:0;font-size:13px}.section-head{justify-content:space-between;align-items:baseline;display:flex}kbd{color:var(--muted);border:1px solid var(--line);white-space:nowrap;border-radius:4px;margin-left:4px;padding:0 4px;font:11px ui-monospace,SFMono-Regular,Menlo,monospace}.preset-list{margin:0 0 8px;padding:0;list-style:none}.preset-list li{border-bottom:1px solid var(--line);padding:6px 0}.preset-list input,.name-form input{font:inherit;border:1px solid var(--line);border-radius:6px;width:100%;padding:5px 8px;font-size:14px}.row-actions{gap:4px;margin-top:4px;display:flex}.row-actions button{padding:3px 8px;font-size:13px}.name-form{gap:6px;margin-top:8px;display:flex}.panel header .buttons{margin-bottom:4px}.keys{grid-template-columns:auto 1fr;gap:4px 10px;margin:0;font-size:13px;display:grid}.keys dt{color:var(--ink);font:12px ui-monospace,SFMono-Regular,Menlo,monospace}.keys dd{color:var(--muted);margin:0}.panel h3{color:var(--muted);margin:8px 0 6px;font-size:13px;font-weight:600}input.title{font:inherit;background:0 0;border:1px solid #0000;border-radius:6px;width:100%;margin-left:-6px;margin-right:8px;padding:3px 6px;font-size:17px;font-weight:650}input.title:hover,input.title:focus{border-color:var(--line)}input.wide,textarea.wide{font:inherit;border:1px solid var(--line);resize:vertical;border-radius:6px;width:100%;margin-bottom:6px;padding:6px 8px;font-size:14px}.fencer-tag{color:var(--muted);-webkit-user-select:none;user-select:none;background:#fffc;border-radius:999px;padding:2px 8px;font-size:12px;font-weight:700}.fencer-tag.active{background:var(--accent);border-color:var(--accent);color:var(--accent-ink)}.step-bar{border:1px solid var(--line);background:#ffffffe6;border-radius:10px;align-items:center;gap:6px;padding:8px;display:flex;position:absolute;bottom:12px;left:12px;right:12px;overflow-x:auto}.step-bar ol{flex:1;gap:6px;min-width:0;margin:0;padding:0;list-style:none;display:flex;overflow-x:auto}.step-bar ol button{white-space:nowrap;text-overflow:ellipsis;max-width:220px;overflow:hidden}.step-bar ol button.on{background:var(--accent);border-color:var(--accent);color:var(--accent-ink)}.step-bar .num{margin-right:6px;font-weight:700}.step-bar .untitled{opacity:.6;font-style:italic}.step-bar>button{white-space:nowrap}.step-bar .divider{background:var(--line);align-self:stretch;width:1px}dialog.library{border:1px solid var(--line);width:min(640px,100vw - 32px);max-height:calc(100vh - 64px);color:var(--ink);border-radius:12px;padding:16px 20px}dialog.library::backdrop{background:#0006}dialog.library h2{margin:0 0 6px;font-size:18px}.message{background:var(--control);border-radius:6px;padding:6px 10px;font-size:14px}.library-list{margin:14px 0 0;padding:0;list-style:none}.library-list li{border-top:1px solid var(--line);align-items:center;gap:6px;padding:6px 0;display:flex}.library-list li.current .open strong:after{content:" · open";color:var(--accent);font-weight:500}.library-list .open{text-align:left;background:0 0;border-color:#0000;flex-direction:column;flex:1;display:flex}.library-list .open span{color:var(--muted);font-size:12px}.save-state{color:var(--muted);margin:0 0 8px;font-size:12px}.folder{flex-wrap:wrap;align-items:center;gap:8px;margin-bottom:12px;font-size:14px;display:flex}.folder .hint{margin:0}code{background:var(--control);border-radius:4px;padding:1px 4px;font:12px ui-monospace,SFMono-Regular,Menlo,monospace}.preset-group h4{color:var(--muted);margin:8px 0 4px;font-size:12px;font-weight:500}button.small{padding:4px 8px;font-size:13px}.dot{vertical-align:baseline;border-radius:50%;width:9px;height:9px;display:inline-block}.dot.hand{background:#e0703a}.dot.point{background:#d0263a}.dot.foot{background:#3a7be0}.dot.hips{background:#7a3ae0}.stage-tools{border:1px solid var(--line);background:#ffffffe6;border-radius:10px;flex-wrap:wrap;gap:6px;padding:6px;display:flex;position:absolute;top:12px;left:12px}.stage-tools button{padding:4px 9px;font-size:13px}.stage-tools .divider{background:var(--line);width:1px}.readouts{border:1px solid var(--line);background:#ffffffe6;border-radius:10px;grid-template-columns:auto auto;gap:2px 12px;margin:0;padding:8px 12px;font-size:13px;display:grid;position:absolute;top:12px;right:12px}.readouts div{display:contents}.readouts dt{color:var(--muted)}.readouts dd{text-align:right;font-variant-numeric:tabular-nums;margin:0;font-weight:600}.readouts dd.touch{color:#d0263a}.target-row{align-items:baseline;gap:8px;margin-bottom:4px;display:flex}.target-row>span{width:14px;font-weight:700}button.small[aria-pressed=true]{color:#fff;background:#d23c3c;border-color:#d23c3c}button.primary,a.button.primary{background:var(--accent);border-color:var(--accent);color:var(--accent-ink)}a.button{color:var(--ink);background:var(--control);border:1px solid var(--line);white-space:nowrap;border-radius:6px;padding:6px 10px;font-size:14px;text-decoration:none}.share-row{align-items:center;gap:6px;display:flex}.share-row input{margin:0}.qr{text-align:center;margin:12px 0 0}.qr img{border:1px solid var(--line);border-radius:8px}.qr figcaption{color:var(--muted);font-size:13px}.panel header .section-head{gap:6px}label.check{color:var(--muted);align-items:flex-start;gap:8px;margin:4px 0 8px;font-size:13px;display:flex}label.inline{color:var(--muted);justify-content:space-between;align-items:center;gap:8px;margin-bottom:8px;font-size:13px;display:flex}label.inline select{width:auto}.viewer{position:fixed;inset:0}.viewer-message{max-width:420px;margin:20vh auto;padding:0 16px;font-size:16px;line-height:1.5}.viewer-top{pointer-events:none;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:8px;padding:10px 16px;display:flex;position:absolute;top:0;left:0;right:0}.viewer-top>*{pointer-events:auto}.viewer-top h1{background:#ffffffd9;border-radius:8px;margin:0;padding:4px 10px;font-size:18px}.viewer-top-tools{align-items:center;gap:8px;display:flex}.viewer-top-tools .toggle{margin:0}.viewer-readouts{top:64px;right:16px}.viewer-card{border:1px solid var(--line);background:#ffffffeb;border-radius:12px;width:min(560px,100vw - 32px);padding:12px 16px;position:absolute;bottom:16px;left:50%;transform:translate(-50%)}.viewer-step{margin:0 0 4px;font-size:15px}.viewer-notes{color:var(--muted);margin:0 0 8px;font-size:14px;line-height:1.45}.viewer-controls{justify-content:center;align-items:center;gap:8px;display:flex}.viewer-controls button{padding:8px 14px;font-size:16px}.viewer-controls select{width:auto}.viewer-dots{justify-content:center;gap:6px;margin:10px 0 0;padding:0;list-style:none;display:flex}.viewer-dots li{background:var(--line);border-radius:50%;width:8px;height:8px}.viewer-dots li.on{background:var(--accent)}.step-bar ol button.via{border-style:dashed;font-style:italic}@media (width<=600px){.viewer-readouts{top:100px}.viewer-top h1{font-size:16px}}.share-row button,.share-row a,.viewer-controls button{white-space:nowrap}@media (width<=420px){.viewer-controls{gap:6px}.viewer-controls button{padding:8px 10px;font-size:15px}}.joint-hud{z-index:5;border:1px solid var(--line);visibility:hidden;will-change:transform;background:#fffffff2;border-radius:10px;width:290px;padding:8px 10px;font-size:13px;position:absolute;top:0;left:0;box-shadow:0 6px 20px #0002}.hud-head{justify-content:space-between;align-items:center;margin-bottom:6px;display:flex}.hud-head button{color:var(--muted);font-size:18px;line-height:1}.hud-row{border-left:4px solid #0000;border-radius:6px;grid-template-columns:auto auto 1fr auto auto;align-items:center;gap:4px;padding:3px 4px;transition:background .4s;display:grid}.hud-row kbd{text-align:center;min-width:20px;margin:0}.hud-row button{padding:2px 7px;font-size:12px}.hud-row.flash{background:#fde3d6;transition:none}.hud-row.flash kbd{background:var(--accent);border-color:var(--accent);color:#fff}.hud-label{flex-direction:column;align-items:center;line-height:1.2;display:flex}.hud-dirs{width:100%;color:var(--muted);justify-content:space-between;gap:6px;font-size:11px;display:flex}.hud-dirs.single{justify-content:center}.hud-label output{font-variant-numeric:tabular-nums;font-weight:650}.hud-label output.limit{color:#c0392b}.hud-mods{color:var(--muted);justify-content:space-between;margin:8px 0 2px;font-size:12px;display:flex}.hud-mods span{border-radius:5px;padding:1px 6px}.hud-mods span.held{background:var(--accent);color:#fff}.hud-mods span.held kbd{color:#fff;border-color:#fff8}.hud-more{color:var(--muted);margin:4px 0 0;font-size:11px}.hud-more kbd{margin-left:0}.hud-clock{text-align:center;margin:6px 0 0;font-size:13px}.hud-clock strong{color:var(--accent)}.export-head{margin-top:18px}.export-grid{grid-template-columns:1fr 1fr;gap:8px;margin-bottom:10px;display:grid}.export-grid button{text-align:left;flex-direction:column;align-items:flex-start;gap:2px;padding:10px 12px;display:flex}.export-grid button span{color:var(--muted);font-size:12px}@media (width<=560px){.export-grid{grid-template-columns:1fr}}.head-row{justify-content:space-between;align-items:center;gap:8px;margin:4px 0 10px;display:flex}.head-row .save-state{min-width:0;margin:0}.head-row .buttons{flex-wrap:nowrap;flex:none}button.small.history-toggle[aria-pressed=true]{border-color:var(--accent);color:inherit;background:#fde9df}.posing{align-items:center;gap:10px;margin-bottom:10px;font-size:14px;font-weight:600;display:flex}.posing .toggle{margin:0}.posing .toggle button{min-width:40px;font-weight:700}.tabs{gap:2px;display:flex}.tabs button{color:var(--muted);background:0 0;border:none;border-bottom:2px solid #0000;border-radius:0;padding:8px 10px;font-size:14px}.tabs button.on{color:var(--ink);border-bottom-color:var(--accent);font-weight:600}.hint.small{margin:2px 0 6px;font-size:12px}.preset-chip{display:inline-flex;position:relative}.preset-chip .apply{border-top-right-radius:0;border-bottom-right-radius:0}.preset-chip .more{color:var(--muted);border-left:none;border-top-left-radius:0;border-bottom-left-radius:0;padding:4px 6px}.preset-chip.mine .apply,.preset-chip.mine .more{background:#fff4ee;border-color:#f0c9b3}.preset-chip .changed{color:var(--accent);font-weight:700}.preset-chip.renaming input{font:inherit;border:1px solid var(--accent);border-radius:6px;width:150px;padding:3px 6px;font-size:13px}.menu{z-index:20;border:1px solid var(--line);background:#fff;border-radius:8px;flex-direction:column;width:250px;padding:4px;display:flex;position:fixed;box-shadow:0 8px 24px #0002}.menu>button{text-align:left;background:0 0;border:none;padding:7px 10px;font-size:13px}.menu>button:hover{background:var(--control)}.menu p{margin:6px 8px;font-size:13px}.menu .buttons{padding:0 6px 6px}button.danger,.menu>button.danger{color:#b42318}.menu .buttons button.danger{color:#fff;background:#b42318;border-color:#b42318}.name-row{gap:6px;width:100%;display:flex}.name-form{flex-direction:column}.hud-leader{pointer-events:none;z-index:4;width:100%;height:100%;position:absolute;inset:0}.hud-leader line{stroke:#3c4248;stroke-opacity:.45;stroke-width:1.2px;stroke-dasharray:3 3}.presets .toggle{justify-content:flex-start}.presets .toggle div{width:100%}.presets .toggle button{flex:1}.apply-head{margin-top:4px}.presets .toggle button{white-space:nowrap;padding:5px 6px;font-size:13px}dialog.wide-dialog{width:min(860px,100vw - 32px)}.library-filters{gap:8px;margin-top:14px;display:flex}.library-filters input{margin:0}.library-filters select{width:auto}.collection-chips{flex-wrap:wrap;gap:6px;margin:8px 0 4px;display:flex}.collection-chips button{border-radius:999px;padding:3px 10px;font-size:13px}.collection-chips button.on{background:var(--ink);border-color:var(--ink);color:#fff}.selection-bar{background:#fff4ee;border:1px solid #f0c9b3;border-radius:8px;align-items:center;gap:8px;margin-top:8px;padding:6px 10px;font-size:14px;display:flex}.library-list .labels{white-space:nowrap;text-overflow:ellipsis;max-width:480px;overflow:hidden;color:var(--ink)!important;font-size:13px!important}.library-list .badge{background:var(--control);border:1px solid var(--line);vertical-align:middle;border-radius:999px;margin-left:8px;padding:1px 8px;font-size:11px;font-weight:600}.library-list li>input[type=checkbox]{margin:0 4px}.move-to{gap:4px;display:flex}.move-to input{font:inherit;border:1px solid var(--line);border-radius:6px;width:170px;padding:4px 6px;font-size:13px}button.danger-solid{color:#fff;background:#b42318;border-color:#b42318}.stage-tools{flex-direction:column;align-items:flex-start;gap:4px;max-width:calc(100% - 24px)}.tool-group{flex-wrap:wrap;align-items:center;gap:6px;display:flex}.group-label{text-transform:uppercase;letter-spacing:.06em;color:var(--muted);width:64px;font-size:11px;font-weight:700}button.switch{align-items:center;gap:6px;display:inline-flex}button.switch .track{background:#c4c9cf;border-radius:999px;flex:none;width:24px;height:14px;transition:background .15s;position:relative}button.switch .knob{background:#fff;border-radius:50%;width:10px;height:10px;transition:left .15s;position:absolute;top:2px;left:2px}button.switch.on{border-color:var(--accent);background:#fff4ee}button.switch.on .track{background:var(--accent)}button.switch.on .knob{left:12px}.stage-tools button[aria-pressed=true]{background:var(--accent);border-color:var(--accent);color:var(--accent-ink)}.step-bar .play{min-width:78px;font-weight:600}.step-bar .play.on{background:var(--ink);border-color:var(--ink);color:#fff}.step-bar .nav{padding:4px 10px;font-size:18px;line-height:1}.step-chip{border:1px solid var(--line);background:var(--control);border-radius:6px;display:inline-flex}.step-chip button{background:0 0;border:none}.step-chip .go{white-space:nowrap;text-overflow:ellipsis;max-width:220px;overflow:hidden}.step-chip.on{background:var(--accent);border-color:var(--accent)}.step-chip.on button{color:var(--accent-ink)}.step-chip.via{border-style:dashed;font-style:italic}.step-more .more{padding:6px 8px 6px 2px;font-weight:700}.step-chip .menu button{color:var(--ink);font-style:normal}.step-chip .menu button.danger{color:#b42318}.step-chip .menu .buttons button.danger-solid{color:#fff;background:#b42318}.step-chip .menu .buttons button:not(.danger-solid){border:1px solid var(--line);background:var(--control)}.step-chip .menu>button:disabled{opacity:.4}.blade-row{grid-template-columns:92px 1fr;align-items:baseline;gap:6px;margin-bottom:6px;font-size:13px;display:grid}.blade-row>span{color:var(--muted)}.hud-value{font-variant-numeric:tabular-nums;background:0 0;border:none;border-bottom:1px dashed #b9c0c7;border-radius:0;padding:0 4px;font-size:13px;font-weight:650}.hud-value.limit{color:#c0392b}.hud-input{width:64px;font:inherit;text-align:center;border:1px solid var(--accent);border-radius:4px;padding:1px 4px;font-size:13px}.hud-switch{margin:6px 0 0 4px}.hud-switch .switch{padding:3px 8px;font-size:12px}.hud-more .link{color:var(--muted);font-size:11px}.step-bar{flex-direction:column;align-items:stretch;gap:6px}.step-row{align-items:center;gap:6px;min-width:0;display:flex}.scrubber{width:100%;height:14px;accent-color:var(--accent);margin:0}.step-row .switch{padding:4px 8px;font-size:13px}.tour{z-index:30;border:1px solid var(--line);background:#fff;border-radius:12px;width:min(380px,100% - 32px);padding:18px 20px;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);box-shadow:0 12px 40px #0003}.tour h2{margin:0 0 6px;font-size:18px}.tour p{margin:0 0 14px;font-size:14px;line-height:1.5}.tour .tour-count{color:var(--muted);margin:0 0 4px;font-size:12px}.path-banner{z-index:6;background:#fff;border:1px solid #f0b8bf;border-left:4px solid #d0263a;border-radius:10px;align-items:center;gap:8px;max-width:calc(100% - 32px);padding:6px 6px 6px 12px;font-size:13px;display:flex;position:absolute;bottom:112px;left:16px;box-shadow:0 4px 14px #0002}.path-banner p{flex-wrap:wrap;gap:0 8px;margin:0 4px 0 0;display:flex}.path-banner strong{color:#b4202f}.fencer-views{border:1px solid var(--line);border-radius:9px;align-items:center;gap:4px;padding:2px 3px 2px 4px;display:inline-flex}.fencer-badge{color:#fff;background:#9aa0a8;border-radius:50%;place-items:center;width:22px;height:22px;font-size:12px;font-weight:700;display:inline-grid}.fencer-badge.on{background:var(--accent)}.stage-stop{z-index:6;background:var(--ink);border-color:var(--ink);color:#fff;border-radius:999px;padding:10px 22px;font-size:15px;font-weight:600;position:absolute;bottom:112px;left:50%;transform:translate(-50%);box-shadow:0 6px 18px #0003}.camera-hint{color:var(--muted);pointer-events:none;background:#ffffffb3;border-radius:6px;margin:0;padding:3px 8px;font-size:12px;position:absolute;bottom:112px;right:16px}.camera-hint kbd{font-size:11px}@media (width<=700px){.camera-hint{display:none}}.step-bar ol li{align-items:center;gap:4px;display:flex}.path-link{border:1px solid var(--line);color:var(--muted);background:#fff;border-radius:999px;padding:3px 6px;font-size:14px;line-height:1}.path-link:hover{background:var(--control);color:var(--ink)}.path-link.shaped{color:#d0263a;font-weight:700}.path-link.on{color:#fff;background:#d0263a}.shape-prompt{z-index:5;color:#b4202f;background:#fff;border:1px solid #f0b8bf;font-weight:600;position:absolute;bottom:112px;left:16px;box-shadow:0 4px 14px #0002}.history{border:1px solid var(--line);background:#fff;border-radius:8px;margin:8px 0 0}.history ol{max-height:200px;margin:0;padding:4px;list-style:none;overflow-y:auto}.history li button{text-align:left;background:0 0;border:0;border-radius:6px;justify-content:space-between;align-items:baseline;gap:8px;width:100%;padding:4px 8px;font-size:13px;display:flex}.history li button:hover{background:#0000000d}.history li button[aria-current]{background:var(--accent);color:var(--accent-ink)}.history li button.undone{color:var(--muted);font-style:italic}.history .what{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.history .when{opacity:.75;flex:none;font-size:11px}.history .hint{color:var(--muted);margin:0;padding:0 10px 6px;font-size:11px}.step-row>button,.step-row>.switch,.step-row .step-chip,.step-row .path-link{box-sizing:border-box;height:34px}.step-row>button,.step-row>.switch{flex:none;justify-content:center;align-items:center;padding-top:0;padding-bottom:0;display:inline-flex}.step-row .step-chip button{height:100%;padding-top:0;padding-bottom:0}.step-row .path-link{flex:none;width:30px;padding:0}.step-bar ol{scrollbar-width:none;align-items:center}.step-bar ol::-webkit-scrollbar{display:none}.step-row>button.quiet{margin-top:0}.viewer-top-tools select{flex:1;width:auto;min-width:0}.viewer-top-tools button{white-space:nowrap;flex:none}.viewer-top-tools button[aria-pressed=true]{border-color:var(--accent);background:#fde9df}
