:root{--bg:#eef0f3;--panel:#fff;--ink:#23272e;--muted:#6b7380;--line:#d9dde3;--accent:#1f6fb8;--accent-ink:#fff}*{box-sizing:border-box}html,body{height:100%;color:var(--ink);background:var(--bg);margin:0;font-family:system-ui,Hiragino Sans,Noto Sans JP,sans-serif;font-size:13px;overflow:hidden}#app{grid-template-columns:296px 1fr;height:100%;display:grid}#panel{background:var(--panel);border-right:1px solid var(--line);padding:0 14px 40px;overflow-y:auto}#panel h1{letter-spacing:.08em;flex:none;margin:0;font-size:15px}.panel-head{z-index:8;background:var(--panel);border-bottom:1px solid var(--line);margin:0 -14px;padding:12px 14px 8px;position:sticky;top:0}.head-row{align-items:center;gap:10px;display:flex}.finder{flex:auto;display:flex;position:relative}.finder input{border:1px solid var(--line);background:#f6f7f9;border-radius:999px;width:100%;padding:5px 22px 5px 9px;font-size:11px}.finder input:focus{border-color:var(--accent);background:#fff;outline:none}#find-clear{color:var(--muted);cursor:pointer;background:0 0;border:0;padding:2px 5px;font-size:13px;line-height:1;position:absolute;top:50%;right:3px;transform:translateY(-50%)}.tabs{flex-wrap:wrap;gap:4px;margin-top:9px;display:flex}.tabs button{white-space:nowrap;border:1px solid var(--line);color:var(--muted);cursor:pointer;background:#f6f7f9;border-radius:6px;flex:auto;padding:6px 4px;font-size:11px}.tabs button:hover{color:var(--ink)}.tabs button.on{background:var(--accent);border-color:var(--accent);color:var(--accent-ink)}.tabpane{padding:4px 0 0;display:none}.tabpane.on{display:block}.pane-label{color:var(--accent);letter-spacing:.06em;margin:16px 0 0;font-size:11px;font-weight:700;display:none}.grp{border-top:1px solid var(--line)}.grp>summary{cursor:pointer;-webkit-user-select:none;user-select:none;align-items:center;gap:7px;padding:11px 0;font-size:12px;font-weight:600;list-style:none;display:flex}.grp>summary::-webkit-details-marker{display:none}.grp>summary:before{content:"";border-left:4.5px solid var(--muted);border-top:3.5px solid #0000;border-bottom:3.5px solid #0000;flex:none;width:0;height:0;transition:transform .12s}.grp[open]>summary:before{transform:rotate(90deg)}.grp>summary:hover{color:var(--accent)}.grp>.body{padding-bottom:12px}body.finding .tabpane{display:block}body.finding .tabpane.nomatch,body.finding .grp.nomatch,body.finding .pinned{display:none}body.finding .pane-label{display:block}body.finding .tabs button{opacity:.45}.hit{background:#fff3bf;border-radius:4px;box-shadow:0 0 0 4px #fff3bf}.find-none{margin:18px 0}#panel h2{color:var(--muted);letter-spacing:.06em;margin:0 0 10px;font-size:12px}#panel h3{color:var(--muted);margin:14px 0 6px;font-size:11px}.hint{color:var(--muted);margin:6px 0 10px;font-size:11px;line-height:1.6}.field{justify-content:space-between;align-items:center;gap:8px;margin:8px 0;display:flex}.field>span:first-child{white-space:nowrap;flex:none}.inline{flex:auto;justify-content:flex-end;align-items:center;gap:5px;display:flex}.unit{color:var(--muted);font-size:11px}input[type=range]{min-width:70px;accent-color:var(--accent);flex:auto}input[type=number]{width:68px}input[type=number],select{font:inherit;border:1px solid var(--line);color:inherit;background:#fff;border-radius:5px;padding:3px 6px}select{max-width:172px}input[type=color]{border:1px solid var(--line);background:0 0;border-radius:5px;width:44px;height:24px;padding:0}output{font-variant-numeric:tabular-nums;color:var(--muted);text-align:right;min-width:48px;font-size:11px}.check{cursor:pointer;align-items:center;gap:7px;margin:6px 0;display:flex}.check input{accent-color:var(--accent)}.row{gap:6px;margin:8px 0;display:flex}button{font:inherit;border:1px solid var(--line);color:inherit;cursor:pointer;background:#fff;border-radius:6px;padding:5px 10px}button:hover{background:#f3f5f8}button.primary{background:var(--accent);border-color:var(--accent);color:var(--accent-ink)}button.primary:hover{filter:brightness(1.08)}button.wide{flex:1;padding:8px}button.mini{padding:2px 7px;font-size:11px}.chips{flex-wrap:wrap;gap:4px;margin:4px 0 10px;display:flex}.chips button{border-radius:20px;padding:3px 7px;font-size:11px}.chips button.on{background:var(--accent);border-color:var(--accent);color:#fff}.list{margin:8px 0;padding:0;list-style:none}.list li{border:1px solid var(--line);background:#fafbfc;border-radius:6px;align-items:center;gap:6px;margin-bottom:4px;padding:5px 6px;display:flex}.list .name{text-overflow:ellipsis;white-space:nowrap;flex:1;overflow:hidden}.list .tri{color:var(--muted);font-variant-numeric:tabular-nums;font-size:10px}.list.parts{max-height:260px;padding-right:2px;overflow-y:auto}.list.parts li{margin-bottom:2px;padding:3px 6px}.list.parts .name{font-size:11px}.list.parts li.off .name{color:var(--muted);text-decoration:line-through}.list .empty-row{color:var(--muted);background:0 0;border-style:dashed;justify-content:center;font-size:11px}input[type=text]{font:inherit;border:1px solid var(--line);color:inherit;background:#fff;border-radius:5px;width:160px;padding:3px 6px}.proposals{grid-template-columns:1fr 1fr;gap:6px;margin:8px 0;display:grid}.proposal{text-align:left;color:var(--muted);flex-direction:column;align-items:stretch;gap:3px;padding:4px;font-size:10px;line-height:1.3;display:flex}.proposal.on{border-color:var(--accent);box-shadow:0 0 0 1px var(--accent) inset;color:var(--ink)}.proposal .thumb{border:1px solid var(--line);background:#fff;border-radius:3px;width:100%;height:auto;display:block}.plan-wrap{border:1px solid var(--line);background:#f4f5f7;border-radius:8px;overflow:hidden}#minimap{cursor:crosshair;touch-action:none;width:100%;display:block}.plan-legend{border-top:1px solid var(--line);color:var(--muted);background:#fff;align-items:center;gap:10px;padding:4px 7px;font-size:10px;display:flex}.plan-legend button{margin-left:auto}.dot{border-radius:50%;width:7px;height:7px;margin-right:4px;display:inline-block}.dot.cam{background:#1f6fb8}.dot.tgt{background:#c83c3c}#stage{flex-direction:column;min-width:0;min-height:0;display:flex}#viewport{background:#fff;flex:1;align-self:center;margin:16px;position:relative;box-shadow:0 1px 10px #141e2d29}#viewport canvas{touch-action:none;width:100%;height:100%;display:block;position:absolute;inset:0}#gl{cursor:grab}#gl.dragging{cursor:grabbing}#gl.editing{cursor:default}#overlay{pointer-events:none}#empty{color:var(--muted);pointer-events:none;flex-direction:column;justify-content:center;align-items:center;gap:6px;display:flex;position:absolute;inset:0}#empty .small{font-size:11px}#walkpad{-webkit-user-select:none;user-select:none;z-index:5;opacity:.5;flex-wrap:wrap;align-items:flex-end;gap:8px;transition:opacity .12s;display:flex;position:absolute;bottom:12px;left:12px;right:12px}#walkpad:hover,#walkpad:focus-within{opacity:1}#walkpad .pad{grid-template-rows:repeat(3,34px);grid-template-columns:repeat(3,34px);gap:2px;display:grid}#walkpad .pad>:first-child{grid-area:1/2}#walkpad .pad>:nth-child(2){grid-area:2/1}#walkpad .pad>:nth-child(3){grid-area:2/2}#walkpad .pad>:nth-child(4){grid-area:2/3}#walkpad .pad>:nth-child(5){grid-area:3/2}#walkpad .side{flex-direction:column;gap:2px;display:flex}#walkpad .pair{gap:2px;display:flex}#walkpad button{color:#3a4250;touch-action:none;background:#ffffffeb;border:1px solid #3c465547;border-radius:6px;width:34px;height:34px;padding:0;font-size:13px;line-height:1;box-shadow:0 1px 3px #141e2d24}#walkpad button:hover{border-color:var(--accent);color:var(--accent);background:#fff}#walkpad button:active,#walkpad button.held{background:var(--accent);border-color:var(--accent);color:#fff}#walkpad #step-size{font-variant-numeric:tabular-nums;background:#f0f2f5f2;font-size:10px}#walkpad .readout{color:var(--muted);font-variant-numeric:tabular-nums;white-space:nowrap;pointer-events:none;background:#ffffffe0;border:1px solid #3c465533;border-radius:5px;align-self:flex-end;margin-right:auto;padding:3px 7px;font-size:10px}#status{border-top:1px solid var(--line);background:var(--panel);color:var(--muted);font-variant-numeric:tabular-nums;gap:18px;padding:6px 16px;font-size:11px;display:flex}#status span:last-child{margin-left:auto}#drop-hint{border:3px dashed var(--accent);color:var(--accent);z-index:50;pointer-events:none;background:#1f6fb824;justify-content:center;align-items:center;font-size:18px;display:flex;position:fixed;inset:0}#busy{z-index:60;background:#eef0f3d1;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}#busy>div{text-align:center;background:#fff;border-radius:10px;min-width:260px;padding:18px 26px;box-shadow:0 6px 30px #141e2d33}#busy .bar{background:var(--line);border-radius:2px;height:4px;margin-top:12px;overflow:hidden}#busy .bar i{background:var(--accent);width:0;height:100%;transition:width .15s;display:block}#toast{color:#fff;z-index:70;background:#23272e;border-radius:6px;max-width:70vw;padding:8px 16px;position:fixed;bottom:26px;left:50%;transform:translate(-50%)}[hidden]{display:none!important}.hint.warn{color:#9a3412;background:#fb923c1f;border-left:2px solid #ea580c;border-radius:3px;padding:5px 7px}#underlay{pointer-events:none;-webkit-user-select:none;user-select:none;z-index:0;display:block;position:absolute}#gl{z-index:1}#overlay{z-index:3}#panel-toggle{left:10px;top:calc(10px + env(safe-area-inset-top));z-index:41;background:var(--panel);border-radius:10px;width:40px;height:40px;padding:0;font-size:17px;line-height:1;display:none;position:fixed;box-shadow:0 2px 10px #0000002e}#panel-scrim{display:none}@media (max-width:900px){#app{grid-template-columns:1fr}#panel{z-index:42;width:min(320px,88vw);padding-bottom:calc(40px + env(safe-area-inset-bottom));transition:transform .18s;position:fixed;top:0;bottom:0;left:0;transform:translate(-102%);box-shadow:2px 0 18px #0003}body.panel-open #panel{transform:none}#panel-toggle{display:block}body.panel-open #panel-toggle{left:calc(min(320px,88vw) + 10px)}body.panel-open #panel-scrim{z-index:41;background:#00000059;display:block;position:fixed;inset:0}#stage{padding-top:44px}}@media (max-width:560px){#status{gap:8px;font-size:10px}#walkpad{transform-origin:0 100%;transform:scale(.85)}}#fatal{z-index:99;background:var(--bg);justify-content:center;align-items:center;padding:24px;display:flex;position:fixed;inset:0}#fatal>div{background:var(--panel);border-radius:12px;max-width:460px;padding:22px 24px;line-height:1.8;box-shadow:0 6px 30px #00000024}#fatal h2{margin:0 0 10px;font-size:15px}#fatal p{margin:0 0 10px;font-size:13px}#fatal code{color:var(--muted);word-break:break-all;font-size:11px}.hint code{background:#f1f3f6;border-radius:3px;padding:1px 4px;font-family:ui-monospace,SFMono-Regular,Consolas,monospace;font-size:10.5px}
