.radio-chips{color:#fff;gap:.5em;width:min-content;display:flex}.radio-chips .radio-chip{border:1px solid #fff;width:min-content;padding:.5em}.radio-chips .radio-chip:has(input:checked){background:#00f}.radio-chips .radio-chip:has(:disabled){pointer-events:none;cursor:not-allowed;opacity:.5}.area-list{color:#fff;border:1px solid #fff;flex-direction:column;gap:.1em;height:400px;max-height:400px;padding:.5em;display:flex;overflow-y:auto}.area-list .area{border:1px solid #fff;padding:1em}.area-list .area.active{background:#ff9b9b80}.area-list .actions{color:#000;margin-top:auto;position:sticky;bottom:0}.input{color:#fff;flex-direction:column;display:flex}.area-properties{flex-direction:column;padding:.1em;display:flex}.tool-control{flex-direction:column;justify-content:center;align-items:center;gap:.5em;display:flex}.tool-control .file-control{flex-wrap:wrap;gap:2em;display:flex}.controls{flex-direction:column;display:flex;box-shadow:inset 0 0 0 1px #fff}.controls .tool-instruction{color:#fff;padding:0 .5em}.controls{overflow-y:auto}.area-handle{background:#fff;border:1px solid #000;border-radius:100%;width:10px;height:10px;position:absolute}.area-handle:hover{cursor:grab}.area-handle.origin{background:green}.area-handle.isDragging{background:#00f}.viewport{justify-content:center;align-items:center;display:flex;position:relative;box-shadow:inset 0 0 0 1px #fff}.viewport.comp{width:min-content;padding:1em}.viewport .fileupload{color:#fff;cursor:pointer;-webkit-user-select:none;user-select:none;border:3px dashed #fff;justify-content:center;align-items:center;width:80%;height:80%;font-size:2em;display:flex}.viewport .fileupload *{cursor:pointer;pointer-events:none}.viewport.loading *{opacity:0}.viewport.loading * :after{content:"Loading...";opacity:1}.viewport:has(.fileupload) canvas{display:none}.viewport .control-grab{border:1px solid #fff;margin:auto;position:absolute;inset:0}.viewport .control-grab.dragging{cursor:grabbing}.viewport .control-grab.dragging .area-handle{pointer-events:none}.viewport .pointer-info{color:#fff;background:#000;position:absolute;bottom:0;left:0}.viewport .mode-select{z-index:1;position:absolute;top:0}.page{grid-template-columns:auto 350px;display:grid}.page.comp{grid-template-columns:min-content auto}.page{box-sizing:border-box;gap:.5em;width:100vw;height:100vh;padding:.5em}body{background:#000;margin:0;padding:0}
