*{box-sizing:border-box;-webkit-tap-highlight-color:transparent;-webkit-touch-callout:none;-webkit-user-select:none;user-select:none;margin:0;padding:0}html,body{touch-action:manipulation;background:#000;width:100%;height:100%;overflow:hidden}#app{background:#000;position:fixed;inset:0}#canvas{object-fit:cover;width:100%;height:100%;position:absolute;inset:0}.loading-overlay{z-index:100;background:#000;flex-direction:column;justify-content:center;align-items:center;display:flex;position:absolute;inset:0}.spinner{border:3px solid #333;border-top-color:#fff;border-radius:50%;width:50px;height:50px;margin-bottom:20px;animation:1s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.loading-text{color:#888;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;font-size:16px}.error-overlay{z-index:100;background:#000;flex-direction:column;justify-content:center;align-items:center;padding:20px;display:flex;position:absolute;inset:0}.error-text{color:#f44;text-align:center;margin-bottom:20px;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;font-size:16px}.retry-btn{color:#000;cursor:pointer;background:#fff;border:none;border-radius:30px;padding:12px 32px;font-size:16px;font-weight:600}.hidden{display:none!important}.recording-indicator{top:env(safe-area-inset-top,20px);top:max(env(safe-area-inset-top),20px);color:#fff;z-index:50;background:#ff0000e6;border-radius:20px;align-items:center;gap:8px;padding:8px 16px;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;font-size:14px;font-weight:600;display:flex;position:absolute;left:50%;transform:translate(-50%)}.recording-dot{background:#fff;border-radius:50%;width:10px;height:10px;animation:1s ease-in-out infinite pulse}@keyframes pulse{0%,to{opacity:1}50%{opacity:.3}}.swap-btn{top:env(safe-area-inset-top,20px);top:max(env(safe-area-inset-top),20px);color:#fff;cursor:pointer;z-index:50;-webkit-tap-highlight-color:transparent;background:#00000080;border:2px solid #ffffff4d;border-radius:50%;justify-content:center;align-items:center;width:50px;height:50px;font-size:24px;transition:all .15s;display:flex;position:absolute;right:20px}.swap-btn:disabled{opacity:.3;cursor:not-allowed}.swap-btn:active:not(:disabled){background:#fff3;transform:scale(.95)}.capture-btn{bottom:env(safe-area-inset-bottom,40px);bottom:max(env(safe-area-inset-bottom),40px);cursor:pointer;z-index:50;-webkit-tap-highlight-color:transparent;background:#ffffff4d;border:4px solid #fff;border-radius:50%;justify-content:center;align-items:center;width:80px;height:80px;transition:all .15s;display:flex;position:absolute;left:50%;transform:translate(-50%)}.capture-btn:disabled{opacity:.3;cursor:not-allowed}.capture-btn:active:not(:disabled){transform:translate(-50%)scale(.95)}.capture-btn-inner{background:#fff;border-radius:50%;width:64px;height:64px;transition:all .2s}.capture-btn.recording .capture-btn-inner{background:red;border-radius:8px;width:32px;height:32px}.preview-overlay{z-index:150;background:#000;flex-direction:column;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.preview-media{object-fit:contain;border-radius:12px;max-width:100%;max-height:80vh}.preview-instructions{color:#ffffffb3;text-align:center;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;font-size:14px;position:absolute;bottom:140px;left:50%;transform:translate(-50%)}.preview-close{top:env(safe-area-inset-top,20px);top:max(env(safe-area-inset-top),20px);color:#fff;cursor:pointer;background:#fff3;border:none;border-radius:50%;justify-content:center;align-items:center;width:44px;height:44px;font-size:20px;display:flex;position:absolute;left:20px}.preview-save{bottom:env(safe-area-inset-bottom,40px);bottom:max(env(safe-area-inset-bottom),40px);color:#000;cursor:pointer;background:#fff;border:none;border-radius:30px;padding:16px 48px;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;font-size:18px;font-weight:600;position:absolute;left:50%;transform:translate(-50%)}.preview-save:active{background:#ddd;transform:translate(-50%)scale(.95)}.flash{z-index:200;pointer-events:none;background:#fff;animation:.3s ease-out forwards flash;position:fixed;inset:0}@keyframes flash{0%{opacity:1}to{opacity:0}}
