.bf-stage{position:relative;display:grid;aspect-ratio:4 / 3;min-width:0;max-height:72vh;border-radius:var(--radius-lg);overflow:hidden}.bf-stage>*{grid-area:1 / 1;min-width:0;min-height:0}@media(min-width:960px){.blurfaces .ws-stage{display:flex;flex-direction:column}.bf-stage{flex:1 1 0;aspect-ratio:auto;min-height:28rem;max-height:none;grid-template:minmax(0,1fr) / minmax(0,1fr)}}.bf-stage [hidden],.blurfaces [hidden]{display:none!important}.bf-view{position:relative;display:grid;place-items:center;background:var(--paper-3);border-radius:var(--radius-lg);overflow:hidden;animation:t-in var(--dur-3) var(--ease-out)}.bf-frame{position:relative;touch-action:none;cursor:crosshair;user-select:none}.bf-canvas{display:block;width:100%;height:100%}.bf-boxes{position:absolute;inset:0}.bf-box{position:absolute;padding:0;border:2px solid #fff;border-radius:3px;background:transparent;box-shadow:0 0 0 1px #0000008c,inset 0 0 0 1px #00000059;cursor:move;transition:border-color var(--dur-1) var(--ease-move)}.bf-box.is-kept{border-style:dashed;border-color:#fbd76a}.bf-box.is-track{cursor:pointer}.bf-box.is-picked,.bf-box:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.bf-box .bf-tag{position:absolute;left:-2px;bottom:100%;margin-bottom:3px;padding:0 5px;border-radius:var(--radius-sm);background:#0009;color:#fff;font-size:var(--text-2xs);line-height:18px;white-space:nowrap;pointer-events:none}.bf-box .bf-handle{position:absolute;right:-7px;bottom:-7px;width:14px;height:14px;border-radius:3px;background:#fff;box-shadow:0 0 0 1px #00000080;cursor:nwse-resize}.bf-box:not(.is-picked) .bf-handle{display:none}.bf-draw{position:absolute;border:2px dashed var(--accent);background:color-mix(in oklab,var(--accent) 12%,transparent);pointer-events:none}[data-state=working] .bf-frame{cursor:progress}[data-state=working] .bf-boxes{pointer-events:none}[data-boxes=off] .bf-boxes{visibility:hidden}.bf-source{position:absolute;width:2px;height:2px;opacity:0;pointer-events:none}.bf-nopreview{position:absolute;left:var(--space-3);right:var(--space-3);bottom:var(--space-3);padding:var(--space-2) var(--space-3);border-radius:var(--radius-md);background:#0009;color:#fff;font-size:var(--text-sm);text-align:center}.bf-player{display:flex;align-items:center;gap:var(--space-3);margin-top:var(--space-4)}.bf-seek{flex:1;display:flex;min-width:0}.bf-time{flex:none;font-family:var(--font-mono);font-size:var(--text-sm);color:var(--ink-2);font-variant-numeric:tabular-nums}.bf-hint{margin-top:var(--space-3);font-size:var(--text-sm);color:var(--ink-3)}.bf-list-head{display:flex;align-items:baseline;justify-content:space-between;gap:var(--space-3)}.bf-count{font-family:var(--font-mono);font-size:var(--text-xs);color:var(--ink-3)}.bf-list{display:grid;gap:var(--space-2);max-height:18rem;margin:0;padding:0;overflow:auto;list-style:none;overscroll-behavior:contain}.bf-list:empty{display:none}.bf-face{display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:var(--space-3);padding:var(--space-2);border:1px solid var(--line);border-radius:var(--radius-md);background:var(--paper);transition:border-color var(--dur-2) var(--ease-move),background-color var(--dur-2) var(--ease-move)}.bf-face.is-picked{border-color:color-mix(in oklab,var(--accent) 45%,transparent);background:var(--accent-soft)}.bf-face-pic{width:var(--space-10);height:var(--space-10);border-radius:var(--radius-sm);background:var(--paper-3);overflow:hidden}.bf-face-pic canvas{display:block;width:100%;height:100%}.bf-face-text{min-width:0;display:grid;font-size:var(--text-sm);text-align:left;background:none;border:0;padding:0;color:inherit;cursor:pointer}.bf-face-text strong{font-weight:500}.bf-face-text small{font-size:var(--text-xs);color:var(--ink-3)}.bf-face-end{display:flex;align-items:center;gap:var(--space-2)}.bf-face-end label{display:flex;align-items:center;gap:var(--space-2);font-size:var(--text-xs);color:var(--ink-2)}.bf-remove{min-height:0;padding:var(--space-1)}.bf-look{display:grid;gap:var(--space-3);margin:0;padding:0;border:0;min-width:0}.bf-look legend{padding:0;margin-bottom:var(--space-2)}.bf-look .field output,.bf-look .label output{color:var(--ink-3)}.bf-result{font-size:var(--text-sm);color:var(--ink-2)}.bf-result strong{font-weight:500;color:var(--ink)}@media(prefers-reduced-motion:reduce){.bf-view{animation:none}}
