*{margin:0;padding:0;box-sizing:border-box}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;background:#1a1a2e;color:#e0e0e0;overflow:hidden}.app-layout{width:100vw;height:100vh;position:relative}.viewport-container{position:absolute;inset:0 360px 0 0;transition:right .3s ease}.app-layout.sidebar-closed .viewport-container{right:0}.viewport-container{overflow:hidden}.viewport-container canvas{width:100%;height:100%;display:block}.edge-swipe-zone{position:absolute;right:0;top:0;bottom:0;width:24px;z-index:15;touch-action:none}.viewport-overlay{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);font-size:1.1rem;color:#aaa}.viewport-overlay.error{color:#ff6b6b;max-width:80%;text-align:center}.sidebar-handle{position:absolute;left:-18px;top:50%;transform:translateY(-50%);width:18px;height:48px;background:#16213e;border:1px solid #0f3460;border-right:none;border-radius:6px 0 0 6px;display:flex;align-items:center;justify-content:center;cursor:pointer;z-index:11}.sidebar:not(.collapsed) .sidebar-handle{cursor:col-resize}.sidebar-handle:hover{background:#1c2a4e}.sidebar-handle .handle-grip{color:#666;font-size:.9rem;line-height:1}@media(max-width:768px){.sidebar-handle{width:22px;height:56px;left:-22px}}.sidebar{position:fixed;right:0;top:0;bottom:0;width:360px;background:#16213e;border-left:1px solid #0f3460;overflow:visible;transition:right .3s ease;z-index:10}.sidebar-content{display:flex;flex-direction:column;overflow-y:auto;height:100%}.sidebar.collapsed{right:-360px}.sidebar-handle.with-hint{width:auto;left:0;transform:translate(-100%) translateY(-50%);padding:10px 14px;border-radius:8px 0 0 8px;border-right:none;background:#533483;animation:hint-pulse 2s ease-in-out infinite;box-shadow:0 4px 16px #53348366;display:flex;align-items:center;gap:6px}.sidebar-handle.with-hint .handle-grip{color:#ffffffb3}.handle-hint{color:#fff;font-size:.8rem;white-space:nowrap}@keyframes hint-pulse{0%,to{opacity:1}50%{opacity:.7}}.sidebar.dragging{transition:none!important}@media(max-width:768px){.viewport-container{right:0!important}.sidebar{width:320px;max-width:85vw;height:100dvh;box-shadow:-4px 0 20px #0006}.sidebar.collapsed{right:-320px;box-shadow:none}.status-bar{display:none!important}}.sidebar-header{padding:16px;border-bottom:1px solid #0f3460;display:flex;justify-content:space-between;align-items:center}.sidebar-header h1{font-size:1rem;font-weight:600;color:#e0e0e0}.sidebar-header button{background:none;border:none;color:#888;cursor:pointer;font-size:1.2rem;padding:4px}.sidebar-header button:hover{color:#e0e0e0}.panel{padding:12px 16px;border-bottom:1px solid #0f3460}.panel h2{font-size:.75rem;font-weight:600;text-transform:uppercase;letter-spacing:.05em;color:#888;margin-bottom:8px}.panel-header-toggle{cursor:pointer;display:flex;align-items:center;gap:6px;user-select:none}.panel-header-toggle:hover{color:#bbb}.panel-header-toggle .expand-icon{font-size:.7rem;color:#888}.panel-header-toggle .step-count{color:#666;font-size:.65rem;margin-left:auto}.scene-objects{list-style:none;font-size:.85rem}.scene-objects li{padding:4px 0;display:flex;justify-content:space-between}.scene-objects .coords{color:#666;font-family:monospace;font-size:.75rem}.scene-objects .scene-shape{color:#888;font-size:.7rem;font-style:italic}.example-chips{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:8px}.chip{padding:4px 10px;border:1px solid #0f3460;border-radius:12px;background:transparent;color:#999;font-size:.72rem;cursor:pointer;transition:all .15s}.chip:hover:not(:disabled){border-color:#533483;color:#ccc}.chip.active{border-color:#533483;background:#53348333;color:#ccc}.chip:disabled{opacity:.5;cursor:not-allowed}.task-input textarea{width:100%;padding:8px 10px;border:1px solid #0f3460;border-radius:6px;background:#1a1a2e;color:#e0e0e0;font-size:.85rem;font-family:inherit;resize:vertical;min-height:60px}.task-input textarea:focus{outline:none;border-color:#533483}.task-input .actions{display:flex;gap:8px;margin-top:8px}.btn{padding:6px 14px;border:none;border-radius:6px;font-size:.8rem;font-weight:500;cursor:pointer;transition:background .15s}.btn-primary{background:#533483;color:#fff;flex:1}.btn-primary:hover:not(:disabled){background:#6a42a0}.btn-primary:disabled{opacity:.5;cursor:not-allowed}.btn-secondary{background:#0f3460;color:#ccc}.btn-secondary:hover{background:#1a4a7a}.plan-empty{color:#555;font-size:.82rem;font-style:italic}.plan-groups{font-size:.82rem;font-family:monospace}.plan-group{margin-bottom:2px;border-radius:4px;overflow:hidden}.plan-group.active>.plan-group-header{background:#533483;color:#fff}.plan-group.done>.plan-group-header{color:#666}.plan-group-header{padding:5px 8px;display:flex;gap:6px;align-items:center;border-radius:4px}.plan-group-header.expandable{cursor:pointer}.plan-group-header.expandable:hover{background:#5334834d}.plan-group-header .step-idx{color:#888;min-width:18px}.plan-group-header .expand-icon{color:#888;font-size:.7rem;width:10px}.plan-group-header .step-label{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.plan-group-header .step-count{color:#666;font-size:.7rem;white-space:nowrap}.plan-substeps{padding:2px 0 4px 28px;border-left:2px solid #0f3460;margin-left:14px}.plan-substep{padding:2px 8px;font-size:.75rem;color:#999;border-radius:3px}.plan-substep.active{background:#53348380;color:#fff}.plan-substep.done{color:#555}.exec-controls{display:flex;gap:6px}.exec-controls .btn{flex:1;padding:8px;font-size:.9rem}.status-bar{position:fixed;bottom:0;left:0;right:0;z-index:5;background:#0f3460;padding:6px 16px;font-size:.75rem;color:#888;display:flex;gap:16px;align-items:center}.status-bar .dot{display:inline-block;width:6px;height:6px;border-radius:50%;margin-right:4px}.status-bar .dot.green{background:#4caf50}.status-bar .dot.red{background:#f44336}.status-bar .dot.yellow{background:#ff9800}.config-overlay{position:fixed;inset:0;background:#0009;display:flex;align-items:center;justify-content:center;z-index:100}.config-dialog{background:#16213e;border:1px solid #0f3460;border-radius:12px;padding:24px;width:400px;max-width:90vw}.config-dialog h2{font-size:1rem;margin-bottom:16px}.config-dialog label{display:block;font-size:.8rem;color:#888;margin-bottom:4px;margin-top:12px}.config-dialog input{width:100%;padding:8px 10px;border:1px solid #0f3460;border-radius:6px;background:#1a1a2e;color:#e0e0e0;font-size:.85rem;font-family:monospace}.config-dialog input:focus{outline:none;border-color:#533483}.config-dialog .actions{display:flex;gap:8px;margin-top:20px;justify-content:flex-end}
