:root{--overlay-control-size:2rem;color:#f4f7fb;font-synthesis:none;text-rendering:optimizelegibility;background:#10151d;font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif}*{box-sizing:border-box}html,body,#app{width:100%;min-width:320px;height:100%;min-height:100%;margin:0;overflow:hidden}body{overscroll-behavior:none;min-height:100dvh}.workspace{background:#10151d;width:100%;height:100dvh}.visually-hidden{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.viewport{background:radial-gradient(circle at 50% 42%,#263242 0%,#151c26 48%,#0c1118 100%);width:100%;height:100%;position:relative}canvas{cursor:grab;touch-action:none;-webkit-user-select:none;user-select:none;width:100%;height:100%;display:block}canvas:active{cursor:grabbing}.app-menu-anchor{z-index:7;top:max(1rem, env(safe-area-inset-top));left:max(1rem, env(safe-area-inset-left));justify-items:start;gap:.5rem;display:grid;position:absolute}.app-menu-toggle{cursor:pointer;touch-action:manipulation;background:0 0;border:1px solid #0000;border-radius:.65rem;padding:.35rem .45rem;display:block}.app-menu-toggle:hover,.app-menu-toggle[aria-expanded=true]{background:#0b1017b8;border-color:#52657b}.app-menu-toggle:focus-visible,.app-menu-tab:focus-visible,.mode-button:focus-visible{outline-offset:2px;outline:2px solid #8ec5ff}.wordmark{pointer-events:none;-webkit-user-select:none;user-select:none;width:clamp(9rem,18vw,14rem);height:auto;display:block}.app-menu{width:min(24rem, calc(100vw - max(2rem, env(safe-area-inset-left) + env(safe-area-inset-right))));-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);background:#0b1017e0;border:1px solid #334155;border-radius:.8rem;padding:.55rem;box-shadow:0 .8rem 2rem #00000047}.app-menu[hidden]{display:none}.app-menu-tabs{background:#19222fb8;border-radius:.65rem;grid-template-columns:repeat(2,minmax(0,1fr));gap:.25rem;padding:.15rem;display:grid}.app-menu-tab{color:#9bacc0;min-height:2.75rem;font:inherit;cursor:pointer;touch-action:manipulation;background:0 0;border:1px solid #0000;border-radius:.5rem;padding:.5rem .65rem;font-size:.78rem;font-weight:700}.app-menu-tab:hover,.app-menu-tab[aria-selected=true]{color:#f4f7fb;background:#334c68b8;border-color:#52657b}.app-menu-panel{max-height:calc(100dvh - 9rem);padding-top:.45rem;overflow-y:auto}.app-menu-panel[hidden]{display:none}.app-menu-section{gap:.35rem;display:grid}.app-menu-heading{color:#9bacc0;letter-spacing:.08em;margin:0;padding:.25rem .4rem;font-size:.7rem;font-weight:700}.app-menu-items{gap:.2rem;display:grid}.mode-button{color:#c8d4e3;min-height:2.75rem;font:inherit;text-align:left;cursor:pointer;touch-action:manipulation;background:0 0;border:1px solid #0000;border-radius:.55rem;grid-template-columns:1fr auto;align-items:center;padding:.55rem .65rem;display:grid}.mode-button:hover:not(:disabled){background:#2c394b8c;border-color:#3d4d61}.mode-button:disabled{color:#78889a;cursor:not-allowed}.mode-button[aria-pressed=true]{color:#f4f7fb;background:#334c68b8;border-color:#6385aa}.mode-button-name{font-size:.85rem;font-weight:650}.mode-button-label{align-items:baseline;gap:.55rem;display:inline-flex}.mode-button-korean{color:#9bacc0;font-size:.75rem}.mode-button[aria-pressed=true] .mode-button-korean{color:#c8d4e3}.mode-button-status{color:#8e9daf;white-space:nowrap;border:1px solid #3d4d61;border-radius:999px;padding:.15rem .35rem;font-size:.65rem;font-weight:700}.controls-help-list{gap:.25rem;margin:0;padding:0;list-style:none;display:grid}.controls-help-list li{color:#c8d4e3;background:#19222f73;border-radius:.5rem;gap:.15rem;padding:.55rem .65rem;font-size:.76rem;display:grid}.controls-help-list kbd{color:#f4f7fb;font:inherit;font-weight:650}.controls{right:max(1rem, env(safe-area-inset-right));bottom:max(1rem, env(safe-area-inset-bottom));color:#9bacc0;pointer-events:none;white-space:nowrap;margin:0;font-size:.75rem;position:absolute}.viewport-actions{left:max(1rem, env(safe-area-inset-left));bottom:max(1rem, env(safe-area-inset-bottom));align-items:center;gap:.5rem;display:flex;position:absolute}.status{height:var(--overlay-control-size);color:#c8d4e3;pointer-events:none;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);background:#0b1017b8;border:1px solid #334155;border-radius:999px;align-items:center;margin:0;padding:.45rem .7rem;font-size:.75rem;display:inline-flex}.fullscreen-toggle{width:var(--overlay-control-size);height:var(--overlay-control-size);color:#c8d4e3;cursor:pointer;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);touch-action:manipulation;background:#0b1017b8;border:1px solid #334155;border-radius:.65rem;place-items:center;padding:.38rem;display:inline-grid}.fullscreen-toggle:hover{color:#f4f7fb;background:#19222fd1;border-color:#52657b}.fullscreen-toggle:focus-visible{outline-offset:2px;outline:2px solid #8ec5ff}.fullscreen-toggle:active{transform:scale(.94)}.fullscreen-toggle svg{fill:none;stroke:currentColor;stroke-linecap:round;stroke-linejoin:round;stroke-width:1.8px;width:100%;height:100%}.status--ready:before{content:"";background:#65d7a4;border-radius:50%;width:.45rem;height:.45rem;margin-right:.45rem;display:inline-block}.status--error{color:#ffd2d2;border-color:#7f3f49}.facial-panel-layer{z-index:6;pointer-events:none;width:100%;height:100%;position:absolute;inset:0;overflow:hidden}.facial-panel{pointer-events:none;position:absolute;inset:0}.facial-tool-strip{z-index:3;top:max(1rem, env(safe-area-inset-top));pointer-events:auto;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);background:#0b1017e0;border:1px solid #3d4d61;border-radius:.75rem;align-items:flex-start;gap:.4rem;padding:.35rem;display:flex;position:absolute;left:50%;transform:translate(-50%);box-shadow:0 .5rem 1.5rem #00000040}.facial-selection-card,.facial-mesh-drawer,.facial-file-menu,.movement-controls__popover{-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);background:#0b1017eb;border:1px solid #3d4d61;border-radius:.85rem;box-shadow:0 .8rem 2rem #00000047}.facial-selection-card{z-index:1;right:max(1rem, env(safe-area-inset-right));bottom:max(4rem, calc(env(safe-area-inset-bottom) + 3rem));pointer-events:auto;gap:.55rem;max-width:19rem;padding:.75rem;display:grid;position:absolute}.facial-selection-card h2,.facial-mesh-drawer h2,.facial-file-menu h2{margin:0;font-size:.9rem}.facial-selection-summary{color:#c8d4e3;margin:0;font-size:.72rem;line-height:1.45}.facial-mesh-drawer{z-index:2;width:min(21rem, calc(100vw - max(1rem, env(safe-area-inset-left))));padding:max(4.75rem, calc(env(safe-area-inset-top) + 4rem)) max(1rem, env(safe-area-inset-right)) max(1rem, env(safe-area-inset-bottom)) 1rem;pointer-events:none;align-content:start;gap:.75rem;transition:transform .18s;display:grid;position:absolute;top:0;bottom:0;right:0;overflow-y:auto;transform:translate(calc(100% + 1rem))}.facial-mesh-drawer[data-open=true]{pointer-events:auto;transform:translate(0)}.facial-file-menu{gap:.55rem;width:min(14rem,100vw - 1.5rem);padding:.75rem;display:grid;position:absolute;top:calc(100% + .45rem);left:50%;transform:translate(-50%)}.facial-file-menu[hidden],.movement-controls__popover[hidden],.facial-mesh-row__actions[hidden]{display:none}.facial-tool-button{place-items:center;width:2.75rem;min-width:2.75rem;height:2.75rem;min-height:2.75rem;padding:.4rem;display:grid}.facial-tool-button svg{fill:none;stroke:currentColor;stroke-linecap:round;stroke-linejoin:round;stroke-width:1.8px;width:100%;height:100%}.movement-controls{position:relative}.movement-controls__popover{gap:.55rem;width:min(19rem,100vw - 2rem);padding:.75rem;display:grid;position:absolute;top:calc(100% + .8rem);left:50%;transform:translate(-50%)}.movement-mode-buttons{grid-template-columns:repeat(3,minmax(0,1fr));gap:.35rem;display:grid}.movement-mode-buttons button{white-space:nowrap;min-width:0;padding-inline:.35rem;font-size:.72rem}.movement-plane-options{border:1px solid #3d4d61;border-radius:.55rem;align-items:center;gap:.65rem;margin:0;padding:.5rem .6rem;display:flex}.movement-plane-options[hidden]{display:none}.movement-plane-options legend{color:#9bacc0;padding:0 .25rem;font-size:.68rem}.movement-plane-options label{align-items:center;gap:.25rem;font-size:.72rem;display:inline-flex}.movement-plane-options input{min-height:auto}.movement-plane-selector{top:50%;left:max(.75rem, env(safe-area-inset-left));pointer-events:auto;gap:.4rem;display:grid;position:absolute;transform:translateY(-50%)}.movement-plane-selector[hidden]{display:none}.movement-plane-selector button{color:#c8d4e3;cursor:pointer;touch-action:manipulation;background:#0b1017e0;border:1px solid #52657b;border-radius:.6rem;width:2.8rem;height:2.4rem;font:700 .7rem/1 sans-serif}.movement-plane-selector button[aria-pressed=true]{color:#fff;background:#334c68eb;border-color:#8ec5ff}.facial-panel button,.facial-panel input,.facial-mesh-dialog button,.facial-mesh-dialog input{color:#e5edf7;min-height:2.35rem;font:inherit;background:#19222feb;border:1px solid #52657b;border-radius:.5rem}.facial-panel button,.facial-mesh-dialog button{cursor:pointer;padding:.45rem .65rem}.facial-panel input,.facial-mesh-dialog input{min-width:0;padding:.4rem .55rem}.facial-panel button:hover,.facial-panel button[aria-pressed=true],.facial-mesh-dialog button:hover{background:#334c68e0;border-color:#8ec5ff}.facial-panel button:focus-visible,.facial-panel input:focus-visible,.facial-mesh-dialog button:focus-visible,.facial-mesh-dialog input:focus-visible,.vertex-gizmo__handle:focus-visible{outline-offset:2px;outline:2px solid #8ec5ff}.facial-mesh-list{gap:.45rem;display:grid}.facial-mesh-row{grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:.35rem;display:grid}.facial-mesh-row__actions{gap:.35rem;display:flex}.facial-mesh-row__select{text-align:left;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.facial-mesh-row__action{place-items:center;width:2.35rem;min-width:2.35rem;padding:0;display:grid}.facial-mesh-row__action svg{fill:currentColor;width:1rem;height:1rem}.facial-mesh-dialog-backdrop{z-index:20;pointer-events:auto;background:#04080ead;place-items:center;padding:1rem;display:grid;position:fixed;inset:0}.facial-mesh-dialog-backdrop[hidden],.facial-mesh-dialog[hidden]{display:none}.facial-mesh-dialog{background:#151e2a;border:1px solid #52657b;border-radius:.8rem;gap:1rem;width:min(23rem,100vw - 2rem);padding:1.1rem;display:grid;box-shadow:0 1rem 3rem #00000073}.facial-mesh-dialog h3,.facial-mesh-dialog p{margin:0}.facial-mesh-dialog label{gap:.4rem;display:grid}.facial-mesh-dialog__actions{justify-content:flex-end;gap:.5rem;display:flex}.facial-mesh-dialog button.facial-mesh-dialog__delete{color:#fff;background:#b92338;border-color:#ff5667}.facial-mesh-dialog button.facial-mesh-dialog__delete:hover,.facial-mesh-dialog button.facial-mesh-dialog__delete:focus-visible{background:#d12a42;border-color:#ff8a96}.viewport-overlay{z-index:3;pointer-events:none;position:absolute;inset:0;overflow:hidden}.vertex-gizmo{pointer-events:none;width:0;height:0;position:absolute;top:0;left:0}.vertex-gizmo[hidden]{display:none}.vertex-gizmo__axis-line{z-index:0;opacity:.72;pointer-events:none;transform-origin:0;background:currentColor;border-radius:999px;height:2px;position:absolute;top:-1px;left:0}.vertex-gizmo__axis-line--x{color:#ff6978}.vertex-gizmo__axis-line--y{color:#65d7a4}.vertex-gizmo__axis-line--z{color:#6eb7ff}.vertex-gizmo__handle{z-index:1;color:#f4f7fb;cursor:grab;pointer-events:auto;touch-action:none;background:#182230;border:2px solid;border-radius:50%;place-items:center;width:2rem;height:2rem;padding:0;font:700 .7rem/1 sans-serif;display:grid;position:absolute;transform:translate(-50%,-50%);box-shadow:0 .25rem .7rem #00000073}.vertex-gizmo__handle:active{cursor:grabbing}.vertex-gizmo__plane-handle{z-index:2;color:#f4f7fb;cursor:grab;pointer-events:auto;touch-action:none;background:#182230f0;border:2px solid #d5e6f8;border-radius:999px;min-width:2.8rem;height:2rem;padding:0 .5rem;font:700 .65rem/1 sans-serif;position:absolute;top:0;left:0;transform:translate(-50%,-50%);box-shadow:0 .25rem .7rem #00000073}.vertex-gizmo__plane-handle:active{cursor:grabbing}.vertex-gizmo__handle--x{color:#ff6978;left:2.3rem}.vertex-gizmo__handle--y{color:#65d7a4;top:-2.3rem}.vertex-gizmo__handle--z{color:#6eb7ff;top:-1.75rem;left:1.75rem}@media (max-width:520px){.controls{display:none}.facial-panel-layer{width:100%;height:100%;inset:0}.facial-tool-strip{top:max(5.25rem, calc(env(safe-area-inset-top) + 4.25rem))}.facial-tool-button{width:2.75rem;min-width:2.75rem;height:2.75rem;min-height:2.75rem}.facial-selection-card{right:max(.75rem, env(safe-area-inset-right));bottom:max(3.75rem, calc(env(safe-area-inset-bottom) + 3rem));width:min(17rem, calc(100vw - max(1.5rem, env(safe-area-inset-left) + env(safe-area-inset-right))));max-height:min(28dvh,11rem);padding:.65rem;overflow-y:auto}.facial-mesh-drawer{width:min(19rem, calc(100vw - max(3.5rem, env(safe-area-inset-left) + 3rem)));max-height:100dvh;padding:max(9.5rem, calc(env(safe-area-inset-top) + 8.5rem)) max(.75rem, env(safe-area-inset-right)) max(.75rem, env(safe-area-inset-bottom)) .75rem}.movement-controls__popover{width:min(19rem,100vw - 1.5rem)}}
