:root{color-scheme:dark;--snap-yellow: #fffc00}*{box-sizing:border-box}html,body,#root{margin:0;height:100%;background:#000;font-family:system-ui,-apple-system,sans-serif;-webkit-user-select:none;user-select:none;-webkit-touch-callout:none;overscroll-behavior:none}.app{position:relative;width:100%;height:100%;overflow:hidden}.canvas-container,.canvas-container canvas{width:100%;height:100%}.canvas-container canvas{object-fit:cover;display:block}.loading{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:14px;height:100%;padding:24px;color:#fff;font-size:1.05rem;text-align:center}.loading p{margin:0}.loading__detail{max-width:34ch;color:#ffffff8c;font-size:.85rem;line-height:1.45}.loading__spinner{width:34px;height:34px;border-radius:50%;border:3px solid rgba(255,255,255,.2);border-top-color:var(--snap-yellow);animation:spin .9s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.camera-error{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);max-width:80%;padding:18px 22px;border-radius:14px;background:#000000bf;color:#fff;text-align:center}.camera-error p{margin:0 0 6px}.camera-error__detail{color:#fff9;font-size:.82rem}.controls{position:absolute;left:0;right:0;bottom:0;padding:14px 0 calc(10px + env(safe-area-inset-bottom));display:flex;flex-direction:column;align-items:center;gap:10px;background:linear-gradient(to top,rgba(0,0,0,.62),rgba(0,0,0,.3) 48%,transparent)}.controls__row{display:flex;align-items:center;width:100%;min-height:44px;padding-left:calc(16px + env(safe-area-inset-left));padding-right:calc(16px + env(safe-area-inset-right))}.controls__slot{display:flex;align-items:center;flex:1 1 0;min-width:0}.controls__slot--start{justify-content:flex-start}.controls__slot--centre{flex:0 0 auto;justify-content:center}.controls__slot--end{justify-content:flex-end}.controls__solo{display:grid;place-items:center}.controls__hint,.lens-title{margin:0;padding-inline:16px;text-align:center;color:#ffffffbf;font-size:.78rem;letter-spacing:.02em}.controls.is-recording .controls__hint,.controls.is-recording .lens-title,.controls.is-recording .lens-chip:not(.shutter),.controls.is-recording .clear-lens,.controls.is-recording .icon-btn{opacity:0;pointer-events:none;transition:opacity .2s ease}.scrim{position:absolute;left:0;right:0;pointer-events:none}.scrim--top{top:0;height:132px;background:linear-gradient(to bottom,rgba(0,0,0,.45),transparent)}.home-button{position:absolute;top:calc(10px + env(safe-area-inset-top));left:calc(10px + env(safe-area-inset-left));z-index:3;width:44px;height:44px;display:grid;place-items:center;color:#fff;filter:drop-shadow(0 1px 3px rgba(0,0,0,.5));-webkit-tap-highlight-color:transparent}.home-button svg{width:26px;height:26px}.home-button:active{transform:scale(.92)}.snap-attribution{--ghost: 15px;display:flex;align-items:center;gap:calc(var(--ghost) * .5);padding:calc(var(--ghost) * .5);padding-left:0;color:#fff;pointer-events:none;-webkit-user-select:none;user-select:none}.snap-attribution__ghost{width:var(--ghost);height:var(--ghost);flex:0 0 auto}.snap-attribution__label{font-size:.7rem;font-weight:500;letter-spacing:.01em;white-space:nowrap}@media (max-width: 380px){.snap-attribution{--ghost: 13px}.snap-attribution__label{font-size:.66rem}}.lens-title{color:#fff;font-size:.95rem;font-weight:600;letter-spacing:.01em}.lens-carousel{display:flex;align-items:center;gap:14px;width:100%;overflow-x:auto;padding:4px calc(50% - 44px);scroll-padding-inline:calc(50% - 44px);scrollbar-width:none;overscroll-behavior-x:contain}.lens-carousel::-webkit-scrollbar{display:none}.lens-carousel__centre{flex:0 0 auto;display:grid;place-items:center}.lens-chip:not(.shutter){flex:0 0 auto;width:52px;height:52px;border-radius:50%;border:none;padding:0;overflow:hidden;background:#ffffff24;opacity:.9;cursor:pointer;transition:transform .15s ease,opacity .15s ease}.lens-chip:not(.shutter):hover{opacity:1}.lens-chip:not(.shutter):active{transform:scale(.94)}.lens-chip img{width:100%;height:100%;object-fit:cover;display:block}.lens-chip__fallback{display:grid;place-items:center;width:100%;height:100%;color:#fff;font-size:1.1rem;font-weight:600}.clear-lens{width:34px;height:34px;border-radius:50%;border:none;display:grid;place-items:center;background:#0000008c;color:#fff;cursor:pointer;transition:transform .15s ease}.clear-lens svg{width:16px;height:16px}.clear-lens:active{transform:scale(.92)}.icon-btn{width:44px;height:44px;border:none;background:none;padding:0;display:grid;place-items:center;color:#fff;cursor:pointer;filter:drop-shadow(0 1px 3px rgba(0,0,0,.5));transition:transform .15s ease,opacity .15s ease;-webkit-tap-highlight-color:transparent}.icon-btn svg{width:24px;height:24px}.icon-btn:active{transform:scale(.92)}.icon-btn:disabled{opacity:.35;cursor:default}.icon-btn--flip:not(:disabled):active svg{transform:rotate(180deg);transition:transform .3s ease}.shutter{position:relative;width:88px;height:88px;border-radius:50%;border:none;background:transparent;padding:0;cursor:pointer;touch-action:none;display:grid;place-items:center;flex:0 0 auto;opacity:1;overflow:visible;-webkit-tap-highlight-color:transparent}.shutter__inner{display:grid;place-items:center;width:68px;height:68px;border-radius:50%;overflow:hidden;box-sizing:border-box;transition:width .18s ease,height .18s ease,background .18s ease,border-color .18s ease,transform .18s ease}.shutter__inner img{width:100%;height:100%;object-fit:cover;display:block;transition:opacity .18s ease}.shutter--ring .shutter__inner{border:4px solid #fff;background:transparent}.shutter--lens .shutter__inner{border:3px solid #fff;background:#ffffff24}.shutter:active .shutter__inner{transform:scale(.94)}.shutter:disabled{opacity:.4;cursor:default}.shutter.is-recording .shutter__inner{width:58px;height:58px;border-color:transparent;background:#8f8f8f}.shutter.is-recording .shutter__inner img{opacity:0}.shutter__ring{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;transform:rotate(-90deg);pointer-events:none}.shutter__ring-track,.shutter__ring-progress{fill:none;stroke:transparent;stroke-width:4}.shutter__ring-progress{stroke-linecap:round;transition:stroke-dashoffset .06s linear}.shutter.is-recording .shutter__ring-progress{stroke:#ff3b4e}.lens-warning{position:absolute;top:calc(14px + env(safe-area-inset-top));left:50%;transform:translate(-50%);padding:6px 14px;border-radius:999px;background:#0000008c;color:#fffc;font-size:.78rem}.rec-badge{position:absolute;top:calc(14px + env(safe-area-inset-top));left:50%;transform:translate(-50%);display:flex;align-items:center;gap:8px;padding:6px 14px;border-radius:999px;background:#0000008c;color:#fff;font-size:.85rem;font-variant-numeric:tabular-nums;font-weight:600}.rec-badge__dot{width:9px;height:9px;border-radius:50%;background:#ff3b30;animation:pulse 1s ease-in-out infinite}@keyframes pulse{50%{opacity:.25}}.flash{position:absolute;top:0;right:0;bottom:0;left:0;background:#fff;animation:flash .18s ease-out;pointer-events:none}@keyframes flash{0%{opacity:.9}to{opacity:0}}.preview{position:absolute;top:0;right:0;bottom:0;left:0;background:#000;z-index:10}.preview__media{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;object-fit:contain;background:#000}.preview__close{position:absolute;top:calc(10px + env(safe-area-inset-top));left:calc(10px + env(safe-area-inset-left));z-index:2}.preview__footer{position:absolute;left:calc(10px + env(safe-area-inset-left));right:calc(10px + env(safe-area-inset-right));bottom:calc(10px + env(safe-area-inset-bottom));z-index:2;display:flex;flex-direction:column;align-items:flex-start;gap:4px}.preview__actions{display:flex;align-items:center;gap:6px}.preview__hint{margin:0 0 0 10px;color:#ffffffbf;font-size:.78rem;text-shadow:0 1px 3px rgba(0,0,0,.6)}
