:root{--bg:#0e1116;--paper:#f6e4c4;--brass:#e3b23c;--ink:#2a2236;--sa-t:env(safe-area-inset-top,0px);--sa-b:env(safe-area-inset-bottom,0px);--vw:844px;--vh:390px}*{box-sizing:border-box;margin:0;padding:0}html,body{background:var(--bg);touch-action:none;-webkit-user-select:none;user-select:none;height:100%;font-family:PingFang SC,Hiragino Sans GB,system-ui,sans-serif;overflow:hidden}#stage{width:var(--vw);height:var(--vh);transform-origin:50%;background:#12151c;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}#c{width:100%;height:100%;display:block;position:absolute;inset:0}#hits{pointer-events:none;position:absolute;inset:0}.hang-hit{pointer-events:auto;cursor:pointer;background:0 0;border:2px solid #0000;border-radius:50%;width:26px;height:26px;margin:0;position:absolute}.hang-hit[data-on="1"]{border-color:#0000}#hud{width:var(--vw);height:var(--vh);pointer-events:none;z-index:7;position:absolute;top:0;left:0}#skin-toggle{pointer-events:auto;z-index:6;gap:4px;display:flex;position:absolute;top:4px;left:8px}#job-toggle{pointer-events:auto;z-index:6;gap:4px;display:flex;position:absolute;top:52px;left:8px}#job-toggle button{color:#d8c7a4;background:#14100c8c;border:1px solid #6a5638;border-radius:3px;width:44px;min-width:44px;height:44px;min-height:44px;padding:0;font-size:11px}#job-toggle button[aria-pressed=true]{border-color:var(--brass);color:var(--paper);background:#5a4630}#job-preview-wrap{pointer-events:none;z-index:5;width:96px;position:absolute;top:100px;left:8px}#job-preview-cap{color:var(--paper);text-shadow:0 1px 3px #000;margin-bottom:2px;font-size:10px;line-height:1.2}#job-preview{background:#1a2228;border:1px solid #6a5638;width:92px;height:32px;display:block}body[data-skin=scene_v1] #job-toggle button{color:#e8eef2;background:#303e48b8;border-color:#6a7a86}body[data-skin=scene_v1] #job-toggle button[aria-pressed=true]{color:#2a1c10;background:#e8c84a;border-color:#8a7018}body[data-skin=scene_v1] #job-preview-cap{color:#f3ead4;text-shadow:none;background:#2a3842;padding:2px 4px}body[data-skin=scene_v1] #job-preview{border-color:#6a7a86}#skin-toggle button{color:#d8c7a4;background:#14100c8c;border:1px solid #6a5638;border-radius:3px;width:44px;min-width:44px;height:44px;min-height:44px;padding:0;font-size:11px}#skin-toggle button[aria-pressed=true]{border-color:var(--brass);color:var(--paper);background:#5a4630}body[data-skin=scene_v1] #skin-toggle button{color:#e8eef2;background:#303e48b8;border-color:#6a7a86}body[data-skin=scene_v1] #skin-toggle button[aria-pressed=true]{color:#2a1c10;background:#e8c84a;border-color:#8a7018}body[data-skin=scene_v1] #stage{background:#b7c4cc}body[data-skin=scene_v1] .dock-group{background:#28343cc7;border-color:#6a7a86}body[data-skin=scene_v1] .dock-group[data-group=move]{border-left-color:#e8c84a}body[data-skin=scene_v1] .dock-group[data-group=rope-l]{border-left-color:#f3d56a}body[data-skin=scene_v1] .dock-group[data-group=rope-r]{border-left-color:#8aa0b0}body[data-skin=scene_v1] .dock-btn{color:#e8eef2;background:#3a4a54;border-color:#6a7a86}#title{text-align:center;color:var(--paper);letter-spacing:.16em;text-shadow:0 1px #000;font-size:15px;font-weight:700;position:absolute;top:4px;left:0;right:0}#objective,#status{color:var(--paper);text-shadow:0 1px 3px #000;position:absolute;left:108px;right:248px}#objective{font-size:13px;font-weight:650;top:24px}#status{font-size:12px;top:44px}#meters,#pose{color:#cbb89a;text-align:right;text-shadow:0 1px 3px #000;width:228px;font-size:11px;position:absolute;left:auto;right:12px}#meters{top:24px}#pose{top:40px}#btn-details{color:#d8c7a4;pointer-events:auto;background:#14100c8c;border:1px solid #6a5638;border-radius:3px;width:44px;min-width:44px;height:44px;min-height:44px;padding:0;font-size:11px;position:absolute;top:56px;right:12px}#details{color:#cbb89a;text-align:right;text-shadow:0 1px 3px #000;width:220px;font-size:11px;position:absolute;top:102px;right:12px}#guide{pointer-events:none;max-width:none;color:var(--paper);text-shadow:0 1px 3px #000;background:0 0;border:none;padding:0;display:block;position:absolute;inset:0}#guide[hidden]{display:none!important}#guide-step{pointer-events:none;font-size:12px;line-height:1.35;position:absolute;top:72px;left:108px;right:260px}body[data-skin=scene_v1] #title{color:#f3ead4;text-shadow:none;z-index:3;background:#2a3842;padding:3px 0}body[data-skin=scene_v1] #objective,body[data-skin=scene_v1] #status{color:#f3ead4;text-shadow:none;z-index:3;background:#2a3842;padding:3px 8px}body[data-skin=scene_v1] #guide-step{color:#f3ead4;text-shadow:none;z-index:3;background:#2a3842;padding:5px 8px 6px}body[data-skin=scene_v1] #meters,body[data-skin=scene_v1] #pose{color:#f3ead4;text-shadow:none;background:#2a3842;padding:2px 6px}#guide-actions{pointer-events:auto;flex-direction:column;gap:4px;display:flex;position:absolute;top:102px;right:12px}#guide-actions button{width:44px;min-width:44px;height:44px;min-height:44px;color:var(--paper);background:#2a241c;border:1px solid #6a5638;border-radius:3px;padding:0;font-size:11px}#last-run{color:#cbb89a;text-align:right;text-shadow:0 1px 3px #000;width:180px;font-size:11px;position:absolute;top:196px;right:60px}#hint{text-align:center;color:var(--paper);text-shadow:0 1px 4px #000;pointer-events:none;font-size:12px;position:absolute;bottom:62px;left:12px;right:12px}#result{border:1px solid var(--brass);width:250px;color:var(--paper);pointer-events:auto;text-shadow:none;z-index:4;background:#0c0a08e0;padding:10px 12px 12px;position:absolute;top:118px;left:12px}#result[hidden]{display:none}#result-title{letter-spacing:.08em;margin-bottom:6px;font-size:14px;font-weight:700}#result-costs{color:#f0e0c0;margin-bottom:8px;font-size:12px}#result-routes{color:#d8c7a4;white-space:pre-line;margin-bottom:10px;font-size:11px;line-height:1.45}#btn-retry{border:1px solid var(--brass);width:100%;height:32px;color:var(--paper);background:#5a4630;border-radius:3px;font-size:13px;font-weight:700;display:block}#rotate{z-index:30;color:var(--paper);text-align:center;background:#0e1116;flex-direction:column;justify-content:center;align-items:center;gap:12px;padding:28px;display:flex;position:fixed;inset:0}#rotate[hidden]{display:none!important}body.portrait #stage{visibility:visible;pointer-events:auto}body.portrait #hud{z-index:9;width:100%;height:auto;padding:6px 8px 8px;padding-top:max(6px, env(safe-area-inset-top,0px));background:#2a3842;flex-wrap:wrap;align-items:center;gap:4px 6px;display:flex;position:fixed;top:0;left:0;right:0;transform:none!important}body.portrait #skin-toggle,body.portrait #job-toggle,body.portrait #title,body.portrait #meters,body.portrait #pose,body.portrait #btn-details,body.portrait #details,body.portrait #objective,body.portrait #status,body.portrait #guide,body.portrait #guide-step,body.portrait #guide-actions,body.portrait #last-run,body.portrait #result{top:auto;left:auto;right:auto;grid-area:auto;width:auto;position:static;inset:auto}body.portrait #job-preview-wrap,body.portrait #pose{display:none}body.portrait #hint{text-align:left;flex:1 0 100%;max-height:2.7em;font-size:14px;line-height:1.3;position:static;bottom:auto;left:auto;right:auto;overflow:hidden}body.portrait #title{letter-spacing:.06em;text-align:left;background:0 0;flex:auto;padding:0;font-size:15px}body.portrait #meters{text-align:right;font-size:12px}body.portrait #objective{flex:1 0 100%;font-size:16px;font-weight:700;line-height:1.25}body.portrait #status{flex:auto;font-size:14px;line-height:1.3}body.portrait #guide{flex:1 0 100%;align-items:flex-start;gap:6px;display:flex}body.portrait #guide-step{flex:auto;max-height:2.6em;font-size:13px;line-height:1.3;overflow:hidden}body.portrait #guide-actions{flex-direction:row;flex:none}body.portrait #details,body.portrait #last-run,body.portrait #result{text-align:left;flex:1 0 100%;font-size:13px}body.portrait #result{font-size:15px}body.portrait #result-title{font-size:17px}body.portrait #result-costs,body.portrait #result-routes{font-size:14px}body.portrait #btn-retry{height:44px;font-size:15px}.rotate-title{letter-spacing:.12em;font-size:22px;font-weight:700}.rotate-body{color:#d8c7a4;max-width:280px;font-size:15px;line-height:1.5}#dock{pointer-events:auto;z-index:8;flex-wrap:nowrap;align-items:stretch;gap:4px;height:48px;display:flex;position:fixed;bottom:4px;left:8px;right:8px}body.portrait #dock{height:auto;padding:8px;padding-bottom:max(8px, env(safe-area-inset-bottom,0px));background:#2a3842;grid-template-rows:96px 44px 44px 44px;grid-template-columns:1fr 1fr;align-content:end;align-items:stretch;gap:6px;display:grid;inset:auto 0 0}body.portrait .dock-group[data-group=rope-l]{flex-direction:column;grid-area:1/1;min-height:96px}body.portrait .dock-group[data-group=rope-r]{flex-direction:column;grid-area:1/2;min-height:96px}body.portrait .dock-group[data-group=move]{grid-area:2/1/auto/span 2}body.portrait .dock-group[data-group=hang]{grid-area:3/1/auto/span 2}body.portrait #btn-advanced{grid-area:4/1;justify-self:stretch;max-height:48px}body.portrait #btn-reset{grid-area:4/2;justify-self:stretch;max-height:48px}body.portrait #advanced{grid-area:5/1/auto/span 2;max-height:48px}.dock-kicker{display:none}.dock-group{background:#120e0ab8;border:1px solid #4a3c28;border-left-width:3px;border-radius:4px;flex-wrap:nowrap;align-items:stretch;gap:2px;min-width:0;padding:2px;display:flex}.dock-group[data-group=move]{border-left-color:#c9a15b;flex:1.35 1 0}.dock-group[data-group=rope-l]{border-left-color:#e8c98a;flex:.9 1 0}.dock-group[data-group=rope-r]{border-left-color:#b8c8e0;flex:.9 1 0}.dock-group[data-group=hang]{border-left-color:#f3e6c4;flex:1.15 1 0}.dock-btn{min-width:44px;height:auto;min-height:44px;color:var(--paper);white-space:nowrap;background:#2a241c;border:1px solid #6a5638;border-radius:3px;flex:44px;padding:0 2px;font-size:12px}.dock-btn[data-on="1"]{border-color:var(--brass);box-shadow:inset 0 0 0 1px var(--brass);background:#5a4630}.dock-btn.hold-live{background:#7a5a28;border-color:#f0d48a}#btn-advanced,#btn-reset{flex:0 0 44px;min-width:44px;min-height:44px}#advanced{pointer-events:auto;z-index:6;background:0 0;border:none;gap:2px;height:auto;padding:0;display:flex;position:static}#advanced[hidden]{display:none!important}#advanced .dock-btn{flex:0 0 44px;width:auto;min-width:44px;height:auto;min-height:44px;font-size:12px}#cta{color:#fff6e4;letter-spacing:.08em;text-shadow:0 2px #5a2a10,0 0 24px #ffb43cb3;pointer-events:none;background:linear-gradient(#0000 30%,#0c080e26 54%,#0c080ed1 100%);justify-content:center;align-items:flex-end;padding-bottom:88px;font-size:42px;font-weight:800;display:flex;position:fixed;inset:0}#cta[hidden]{display:none}
