:root{--color-ground: #eef1f6;--color-header: #2f6fe0;--color-viewport: #e5e9f0;--color-panel: #ffffff;--color-panel-frost: rgb(255 255 255 / .9);--color-raised: #f2f4f8;--color-text: #141821;--color-muted: #4b5563;--color-label: #5b6472;--color-primary: #2f6fe0;--color-primary-text: #2459c4;--color-on-primary: #ffffff;--color-ember: #e2502a;--color-ember-text: #c4421d;--color-border: rgb(16 24 40 / .11);--color-rule: rgb(16 24 40 / .12);--shadow-panel: 0 8px 28px rgb(16 24 40 / .12);--radius-control: 8px;--radius-panel: 12px;--radius-pill: 999px;--font-ui: "Inter", system-ui, sans-serif;--font-mono: "JetBrains Mono", ui-monospace, monospace;--font-name: "Space Grotesk", "Inter", sans-serif;--header-height: 52px;--library-bottom: 0px;--library-left: 0px}html,body{margin:0;height:100%;background:var(--color-ground);color:var(--color-text);font-family:var(--font-ui);font-size:14px;line-height:1.45}button,select,input{font:inherit}.capture-panel h2,.source-field,.pairing-panel h2{margin:0;font:500 11px/1.4 var(--font-mono);letter-spacing:.1em;text-transform:uppercase}.import-control,.capture-panel,.playback-bar{box-sizing:border-box;background:var(--color-panel-frost);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);border:1px solid var(--color-border);border-radius:var(--radius-panel);box-shadow:var(--shadow-panel)}.import-button,.playback-play,.capture-button,.export-save{min-height:44px;padding:0 18px;border:0;border-radius:var(--radius-control);background:var(--color-primary);color:var(--color-on-primary);font-weight:500;cursor:pointer}.autorig-button,.rotate-model button,.pairing-button,.export-button,.export-cancel{min-height:40px;padding:0 16px;border:1px solid var(--color-border);border-radius:var(--radius-control);background:var(--color-raised);color:var(--color-text);font-weight:500;cursor:pointer}button:focus-visible,input:focus-visible,select:focus-visible,a:focus-visible{outline:2px solid var(--color-primary);outline-offset:2px}.app-header{position:fixed;top:0;left:0;right:0;height:var(--header-height);box-sizing:border-box;display:grid;grid-template-columns:1fr auto 1fr;align-items:center;gap:16px;padding:0 20px;background:var(--color-header);color:var(--color-on-primary);z-index:1}.app-name{grid-column:2;font-family:var(--font-name);font-size:32px;font-weight:400;line-height:1;letter-spacing:.04em}#viewport{position:fixed;top:var(--header-height);right:0;bottom:var(--library-bottom);left:var(--library-left);background:var(--color-viewport)}#viewport canvas{display:block;width:100%;height:100%}.axis-gizmo{position:fixed;right:20px;bottom:calc(92px + var(--library-bottom));width:64px;height:64px;pointer-events:none}.axis-gizmo text{font:500 10px var(--font-mono)}.playback-bar{position:fixed;left:calc(16px + var(--library-left));right:16px;bottom:calc(16px + var(--library-bottom));max-width:880px;margin:0 auto;display:flex;flex-wrap:wrap;align-items:center;gap:8px 14px;padding:8px 18px 8px 8px;border-radius:var(--radius-pill)}.playback-play{min-width:88px;border-radius:var(--radius-pill)}.playback-ruler{position:relative;flex:1 1 160px;display:flex;align-items:flex-end;height:28px}.playback-ruler:before{content:"";position:absolute;top:2px;left:0;right:0;height:8px;background-image:linear-gradient(90deg,var(--color-rule) 1px,transparent 1px);background-size:10% 100%;pointer-events:none}.playback-scrubber{-webkit-appearance:none;-moz-appearance:none;appearance:none;width:100%;height:16px;margin:0;background:transparent;cursor:pointer}.playback-scrubber::-webkit-slider-runnable-track{height:4px;border-radius:2px;background:linear-gradient(var(--color-primary),var(--color-primary)) 0 0 / var(--progress, 0%) 100% no-repeat,var(--color-rule)}.playback-scrubber::-moz-range-track{height:4px;border-radius:2px;background:var(--color-rule)}.playback-scrubber::-moz-range-progress{height:4px;border-radius:2px;background:var(--color-primary)}.playback-scrubber::-webkit-slider-thumb{-webkit-appearance:none;-moz-appearance:none;appearance:none;width:14px;height:14px;margin-top:-5px;box-sizing:border-box;border:2px solid var(--color-panel);border-radius:50%;background:var(--color-ember)}.playback-scrubber::-moz-range-thumb{width:14px;height:14px;box-sizing:border-box;border:2px solid var(--color-panel);border-radius:50%;background:var(--color-ember)}.playback-frame{min-width:112px;font:400 12px var(--font-mono);font-variant-numeric:tabular-nums;color:var(--color-label)}.playback-toggle{display:inline-flex;align-items:center;gap:6px;min-height:44px;color:var(--color-muted);font-size:13px;-webkit-user-select:none;user-select:none;cursor:pointer}.playback-toggle input{width:16px;height:16px;margin:0;accent-color:var(--color-primary)}.playback-bar button:disabled,.playback-bar input:disabled{opacity:.5;cursor:not-allowed}.import-control{position:fixed;top:calc(var(--header-height) + 16px);left:calc(16px + var(--library-left));right:16px;max-width:480px;display:flex;flex-wrap:wrap;align-items:center;gap:8px;padding:12px}.import-button,.autorig-button{flex:1 1 0;display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:44px;white-space:nowrap}.step-number{font:500 11px var(--font-mono)}.autorig-button .step-number{color:var(--color-label)}.autorig-button:disabled{opacity:.5;cursor:not-allowed}.rotate-model{flex-basis:100%;display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin:0;padding:0;border:0}.rotate-model[hidden]{display:none}.rotate-model legend{float:left;margin-right:8px;padding:0}.rotate-model button{padding:0 12px}.rig-fallback{flex-basis:100%;display:flex;flex-wrap:wrap;align-items:center;gap:8px}.rig-fallback[hidden]{display:none}.rig-fallback-note{flex-basis:100%;margin:0;font-size:12px;color:var(--color-muted)}.rig-fallback-button{flex:1 1 0;min-height:40px;padding:0 12px;border:1px solid var(--color-border);border-radius:var(--radius-control);background:var(--color-raised);color:var(--color-text);font-weight:500;cursor:pointer}.adjust-button,.adjust-secondary{min-height:40px;padding:0 12px;border:1px solid var(--color-border);border-radius:var(--radius-control);background:var(--color-raised);color:var(--color-text);font-weight:500;cursor:pointer}.adjust-button{flex:1 1 100%}.adjust-button[hidden],.adjust-panel[hidden],.adjust-error[hidden],.joint-handle[hidden]{display:none}.adjust-button:disabled,.adjust-secondary:disabled,.adjust-confirm:disabled{opacity:.5;cursor:not-allowed}.adjust-panel{flex-basis:100%;display:flex;flex-direction:column;gap:8px}.adjust-panel h2{margin:0;font-size:13px;font-weight:600}.adjust-note,.adjust-error{margin:0;font-size:12px;color:var(--color-muted)}.adjust-error{color:var(--color-ember-text)}.adjust-actions{display:flex;flex-wrap:wrap;gap:8px}.adjust-actions>*{flex:1 1 auto}.adjust-confirm{min-height:40px;padding:0 16px;border:0;border-radius:var(--radius-control);background:var(--color-primary);color:var(--color-on-primary);font-weight:500;cursor:pointer}.joint-handles{position:absolute;top:0;right:0;bottom:0;left:0;overflow:hidden;pointer-events:none}.joint-handle{position:absolute;top:0;left:0;width:16px;height:16px;margin:-8px 0 0 -8px;padding:0;border:2px solid var(--color-panel);border-radius:50%;background:var(--color-text);box-shadow:0 0 0 1px var(--color-text);pointer-events:auto;cursor:grab;touch-action:none}.joint-handle:active{cursor:grabbing}.joint-handle.flagged{background:var(--color-ember);box-shadow:0 0 0 3px var(--color-ember)}.joint-handle[aria-pressed=true]{background:var(--color-primary);width:20px;height:20px;margin:-10px 0 0 -10px}.import-status{flex:1 1 100%;margin:2px 2px 0;font:400 11px/1.5 var(--font-mono);color:var(--color-label)}.import-status.error{color:var(--color-ember-text)}.language-switch{justify-self:end;display:flex;border:1px solid rgb(255 255 255 / .6);border-radius:var(--radius-pill);overflow:hidden}.language-switch button{min-width:44px;padding:4px 12px;border:0;background:transparent;color:var(--color-on-primary);font-size:12px;font-weight:500;cursor:pointer}.language-switch button[aria-pressed=true]{background:var(--color-on-primary);color:var(--color-header)}.language-switch button:focus-visible{outline-color:var(--color-on-primary);outline-offset:-4px}body.dropping:after{content:attr(data-drop-text);position:fixed;top:8px;right:8px;bottom:8px;left:8px;display:grid;place-items:center;border:2px dashed var(--color-primary);border-radius:var(--radius-panel);background:#eef1f6d9;color:var(--color-primary-text);font-size:20px;pointer-events:none}.capture-panel{position:fixed;top:calc(var(--header-height) + 16px);right:16px;width:300px;max-height:calc(100vh - var(--header-height) - var(--library-bottom) - 120px);box-sizing:border-box;overflow:auto;display:grid;gap:12px;padding:14px}.capture-heading{display:flex;align-items:center;justify-content:space-between;gap:8px}.status-chip{display:inline-flex;align-items:center;gap:6px;padding:2px 8px;border:1px solid var(--color-border);border-radius:var(--radius-pill);font:400 11px/1.5 var(--font-mono);color:var(--color-label)}.status-chip:before{content:"";width:6px;height:6px;border-radius:50%;background:currentcolor}.status-chip[data-state=loading]{color:var(--color-primary-text)}.status-chip[data-state=tracking]{border-color:var(--color-ember);color:var(--color-ember-text)}.status-chip[data-state=tracking]:before{background:var(--color-ember)}.pairing-panel{display:grid;gap:8px}.pairing-panel[hidden],.webcam-video[hidden],.webcam-status[hidden]{display:none}.pairing-panel h2{color:var(--color-label)}.source-field{display:grid;gap:6px;color:var(--color-label)}.source-select{min-height:40px;padding:0 10px;border:1px solid var(--color-border);border-radius:var(--radius-control);background:var(--color-raised);color:var(--color-text);font:400 14px var(--font-ui);letter-spacing:normal;text-transform:none}.webcam-video{width:100%;border-radius:var(--radius-control);background:var(--color-text)}.webcam-status,.pairing-status,.capture-status,.export-status{margin:0;font-size:12px;color:var(--color-muted)}.webcam-status.error,.pairing-status.error,.capture-status.error,.export-status.error{color:var(--color-ember-text)}.pairing-button{justify-self:start}.pairing-code[hidden],.pairing-video[hidden]{display:none}.pairing-code{display:grid;gap:4px;justify-items:center;padding:10px;border:1px dashed var(--color-border);border-radius:var(--radius-control)}.pairing-code p{margin:0;color:var(--color-muted);font-size:12px}.pairing-code strong{color:var(--color-text);font:500 22px var(--font-mono);letter-spacing:.12em}.pairing-code a{color:var(--color-primary-text);font-size:12px}.pairing-qr svg{display:block;width:160px;height:160px}.pairing-video{width:100%;border-radius:var(--radius-control);background:var(--color-text)}@media(max-width:860px){.capture-panel{top:auto;left:calc(16px + var(--library-left));bottom:calc(112px + var(--library-bottom));width:auto;max-width:480px;max-height:50vh;overflow:auto}}.capture-control{display:grid;gap:12px}.capture-button[data-action=stop]{border:1px solid var(--color-ember);background:transparent;color:var(--color-ember-text)}.capture-status[hidden]{display:none}.capture-toggle{display:inline-flex;align-items:center;gap:6px;min-height:24px;justify-self:start;font-size:13px;-webkit-user-select:none;user-select:none;cursor:pointer}.capture-toggle input{width:16px;height:16px;margin:0;accent-color:var(--color-primary)}.capture-note{margin:-8px 0 0;font-size:12px;color:var(--color-muted)}.capture-note[hidden]{display:none}.export-button{min-height:40px;background:transparent;color:var(--color-muted)}.export-save:disabled{opacity:.5;cursor:not-allowed}.export-status[hidden]{display:none}.export-dialog,.mapping-dialog{width:min(420px,calc(100vw - 32px));box-sizing:border-box;padding:16px;border:1px solid var(--color-border);border-radius:var(--radius-panel);background:var(--color-panel);color:var(--color-text);font-family:var(--font-ui);box-shadow:var(--shadow-panel)}.export-dialog::backdrop,.mapping-dialog::backdrop{background:#14182166}.export-dialog h2,.mapping-dialog h2{margin:0 0 12px;font-size:16px}.mapping-intro{margin:0 0 12px;font-size:13px;color:var(--color-muted)}.mapping-joints{display:grid;gap:6px;max-height:min(56vh,520px);overflow:auto;padding-right:4px}.mapping-row{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);align-items:center;gap:8px}.mapping-joint{overflow:hidden;text-overflow:ellipsis;font:400 12px var(--font-mono);color:var(--color-text)}.mapping-select{min-height:32px;min-width:0;padding:0 8px;border:1px solid var(--color-border);border-radius:var(--radius-control);background:var(--color-raised);color:var(--color-text)}.mapping-error{margin:12px 0 0;font-size:12px;color:var(--color-ember-text)}.mapping-error[hidden]{display:none}.export-formats{display:grid;gap:8px;margin:0;padding:0;border:0}.export-formats legend{margin-bottom:8px;padding:0;font:500 11px var(--font-mono);letter-spacing:.1em;text-transform:uppercase;color:var(--color-label)}.export-formats label{display:flex;align-items:baseline;gap:8px;cursor:pointer}.export-formats input{accent-color:var(--color-primary)}.export-summary,.export-note{margin:12px 0 0;font-size:12px;color:var(--color-muted)}.export-note[hidden]{display:none}.export-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:16px}.latency-overlay{position:fixed;left:16px;bottom:88px;display:grid;gap:4px;padding:8px 16px;background:#141821e0;color:var(--color-on-primary);border-radius:var(--radius-control);font:400 12px var(--font-mono);font-variant-numeric:tabular-nums}.latency-overlay h2{margin:0;font-size:12px}.latency-overlay table{border-collapse:collapse}.latency-overlay th,.latency-overlay td{padding:0 8px 0 0;text-align:right;font-weight:400}.latency-overlay th[scope=row],.latency-overlay th[scope=col]:first-child{text-align:left}.latency-overlay tr[data-stage=total]>*{font-weight:700}.latency-overlay tr.over>*{color:#ff8a63}.latency-caption{margin:0;max-width:240px}.latency-overlay button{justify-self:start;padding:0 8px;border:1px solid var(--color-on-primary);border-radius:var(--radius-control);background:transparent;color:inherit;cursor:pointer}.library-dock{position:fixed;box-sizing:border-box;display:flex;background:var(--color-panel);border:0 solid var(--color-border);z-index:1}.library-dock[data-dock=bottom]{left:0;right:0;bottom:0;height:var(--library-bottom);border-top-width:1px}.library-dock[data-dock=left]{top:var(--header-height);bottom:0;left:0;width:var(--library-left);border-right-width:1px}.library-divider{position:absolute;z-index:1;touch-action:none}.library-dock[data-dock=bottom] .library-divider{top:-5px;left:0;right:0;height:10px;cursor:row-resize}.library-dock[data-dock=left] .library-divider{top:0;bottom:0;right:-5px;width:10px;cursor:col-resize}.library-divider:after{content:"";position:absolute;top:4px;right:0;bottom:4px;left:0;background:transparent}.library-dock[data-dock=left] .library-divider:after{top:0;right:4px;bottom:0;left:4px}.library-divider:hover:after,.library-dock.resizing .library-divider:after,.library-divider:focus-visible:after{background:var(--color-primary)}.library-dock.resizing{-webkit-user-select:none;user-select:none}.library-panel{flex:1;min-width:0;min-height:0;display:grid;grid-template-columns:minmax(0,1fr);grid-template-rows:auto auto auto auto minmax(0,1fr);align-items:center;gap:8px;padding:12px 16px}.library-dock[data-dock=bottom] .library-panel{grid-template-columns:auto auto auto minmax(0,1fr);grid-template-rows:auto minmax(0,1fr);column-gap:16px}.library-dock[data-dock=bottom] .library-list{grid-column:1 / -1}.library-dock[data-dock=bottom] .library-status{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.library-tabs{display:inline-flex;justify-self:start;gap:2px;padding:2px;border-radius:var(--radius-control);background:var(--color-raised)}.library-tab{min-height:32px;padding:0 14px;border:0;border-radius:6px;background:transparent;color:var(--color-muted);font-weight:500;cursor:pointer}.library-tab[aria-selected=true]{background:var(--color-primary);color:var(--color-on-primary)}.library-panel h2{margin:0;font-size:16px}.library-actions{display:flex;flex-wrap:wrap;gap:8px}.library-record{justify-self:start;display:inline-flex;align-items:center;gap:8px;min-height:44px;padding:0 16px;border:1px solid var(--color-ember);border-radius:var(--radius-control);background:transparent;color:var(--color-ember-text);font-weight:500;cursor:pointer}.library-record:before{content:"";width:10px;height:10px;border-radius:50%;background:var(--color-ember)}.library-record[data-action=stop]{border-color:var(--color-ember-text);background:var(--color-ember-text);color:var(--color-on-primary)}.library-record[data-action=stop]:before{border-radius:2px;background:var(--color-on-primary)}.library-record:disabled{opacity:.5;cursor:not-allowed}.library-action,.library-item-action{padding:4px 12px;border:1px solid var(--color-primary);border-radius:var(--radius-control);background:var(--color-panel);color:var(--color-primary-text);cursor:pointer}.library-item-action{display:inline-flex;align-items:center;gap:4px;min-width:32px;min-height:32px;justify-content:center;padding:0 6px;border-color:transparent;background:transparent;color:var(--color-muted);font-size:12px}.library-item-action svg{width:16px;height:16px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}.library-item-action:hover{border-color:var(--color-border);background:var(--color-panel);color:var(--color-text)}.library-delete:hover,.library-delete.confirming{border-color:var(--color-ember);color:var(--color-ember-text)}.library-panel button:disabled{opacity:.5;cursor:not-allowed}.library-status{margin:0;font-size:12px}.library-status:empty{display:none}.library-status.error{color:var(--color-ember-text)}.library-list{display:flex;gap:8px;margin:0;padding:0 0 4px;list-style:none;overflow:auto}.library-dock[data-dock=bottom] .library-list{flex-direction:row;align-items:flex-start;overflow-y:hidden}.library-dock[data-dock=left] .library-list{flex-direction:column;overflow-x:hidden}.library-item{--thumb-height: auto;flex:none;box-sizing:border-box;display:grid;grid-template-columns:minmax(0,1fr) auto;gap:6px 4px;padding:6px;border:1px solid var(--color-border);border-radius:var(--radius-control);background:var(--color-raised);cursor:pointer}.library-item:hover{border-color:var(--color-primary)}.library-dock[data-dock=bottom] .library-item{--thumb-height: max(56px, calc(var(--library-bottom) - 132px));width:max(184px,calc(var(--thumb-height) * 4 / 3 + 14px))}.library-card-apply{grid-column:1 / -1;display:block;padding:0;border:0;border-radius:6px;background:var(--color-viewport);overflow:hidden;cursor:pointer}.library-thumb{display:block;width:100%;height:var(--thumb-height);aspect-ratio:4 / 3;object-fit:contain}.library-card-info{display:grid;min-width:0}.library-name,.library-rename{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:600}.library-rename{border:1px solid var(--color-primary);border-radius:var(--radius-control);padding:0 8px}.library-detail{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:12px;color:var(--color-muted)}.library-item-actions{display:flex;align-items:center;gap:2px}.library-empty{font-size:12px}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/inter-latin-400-normal-C38fXH4l.woff2) format("woff2"),url(/assets/inter-latin-400-normal-CyCys3Eg.woff) format("woff")}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/inter-latin-500-normal-Cerq10X2.woff2) format("woff2"),url(/assets/inter-latin-500-normal-BL9OpVg8.woff) format("woff")}@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/inter-latin-600-normal-LgqL8muc.woff2) format("woff2"),url(/assets/inter-latin-600-normal-CiBQ2DWP.woff) format("woff")}@font-face{font-family:JetBrains Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/jetbrains-mono-latin-400-normal-V6pRDFza.woff2) format("woff2"),url(/assets/jetbrains-mono-latin-400-normal-6-qcROiO.woff) format("woff")}@font-face{font-family:JetBrains Mono;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/jetbrains-mono-latin-500-normal-BWZEU5yA.woff2) format("woff2"),url(/assets/jetbrains-mono-latin-500-normal-CJOVTJB7.woff) format("woff")}@font-face{font-family:Space Grotesk;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/space-grotesk-latin-400-normal-CJ-V5oYT.woff2) format("woff2"),url(/assets/space-grotesk-latin-400-normal-BnQMeOim.woff) format("woff")}
