*{box-sizing:border-box;-webkit-user-select:none;user-select:none;-webkit-font-smoothing:antialiased;-webkit-touch-callout:none}:root{--bg: #ffffff;--bg-subtle: #f5f5f7;--bg-hover: #f9f9f9;--border: #e5e5e5;--text: #1d1d1f;--text-muted: #666;--text-subtle: #999;--text-on-dark: #ffffff;--text-secondary: rgba(0, 0, 0, .5);--color-primary: #007aff;--color-primary-hover: #0051d5;--color-primary-light: #62abfc;--color-primary-lighter: #c4dcf9;--color-primary-alpha: rgba(0, 122, 255, .16);--color-primary-shadow: rgba(0, 122, 255, .1);--color-success: #34c759;--color-success-shadow: rgba(52, 199, 89, .3);--color-error: #ff3b30;--color-error-dark: #d32f2f;--color-error-shadow: rgba(255, 59, 48, .3);--color-warning: #ffcc00;--color-warning-shadow: rgba(255, 204, 0, .3);--color-highlight: #fff59d;--color-highlight-hover: #fff176;--color-trim: #FFD700;--color-trim-hover: #FFC700;--color-trim-active: #FFB700;--color-button: #666;--color-button-hover: #555;--color-button-light: #e5e5e7;--color-button-light-hover: #d1d1d6;--color-button-dark: #333;--color-button-dark-bg: #515154;--color-button-dark-hover: #3a3a3c;--color-button-red: hsl(0 80% 60%);--color-button-red-hover: hsl(0 80% 50%);--overlay: rgba(0, 0, 0, .5);--overlay-light: rgba(0, 0, 0, .3);--overlay-very-light: rgba(0, 0, 0, .05);--shadow-sm: rgba(0, 0, 0, .1);--shadow-md: rgba(0, 0, 0, .2);--shadow-lg: rgba(0, 0, 0, .3)}html,body{margin:0;padding:0;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;padding-top:env(safe-area-inset-top);background-color:var(--bg)}html:has(body.app-mode),body.app-mode{height:100vh;overflow:hidden}[hidden]{display:none!important}#root{height:100%}button[disabled]{opacity:.3;pointer-events:none}@media (prefers-color-scheme: dark){:root{--bg: #1d1d1f;--bg-subtle: #2a2a2e;--bg-hover: #3a3a3f;--border: #424245;--color-primary-lighter: rgba(0, 122, 255, .16);--color-button-light: var(--color-button-dark-bg);--color-button-light-hover: var(--color-button-dark-hover);--text: #f5f5f7;--text-muted: #a1a1a6;--text-subtle: #666;--text-on-dark: #ffffff;--text-secondary: rgba(255, 255, 255, .5);--overlay: rgba(0, 0, 0, .7);--overlay-light: rgba(0, 0, 0, .5);--overlay-very-light: rgba(0, 0, 0, .2);--shadow-sm: rgba(0, 0, 0, .3);--shadow-md: rgba(0, 0, 0, .5);--shadow-lg: rgba(0, 0, 0, .7);--color-highlight: #fff59d;--color-highlight-hover: #fff176;--color-trim: #FFD700;--color-trim-hover: #FFC700;--color-trim-active: #FFB700}}.puter-error-overlay{position:fixed;top:0;left:0;right:0;bottom:0;background:#000c;display:flex;align-items:center;justify-content:center;z-index:100000}.puter-error-content{background:var(--bg);border-radius:1rem;padding:2rem;max-width:320px;text-align:center;box-shadow:0 8px 32px #0000004d}.puter-error-icon{width:48px;height:48px;margin:0 auto 1rem;background:var(--color-warning);color:#000;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:1.5rem;font-weight:700}.puter-error-content h2{margin:0 0 .5rem;font-size:1.25rem;color:var(--text)}.puter-error-content p{margin:0 0 1.5rem;font-size:.875rem;color:var(--text-muted);line-height:1.4}.puter-error-reload-btn{background:var(--color-primary);color:#fff;border:none;border-radius:.5rem;padding:.75rem 1.5rem;font-size:1rem;font-weight:500;cursor:pointer;transition:background .2s}.puter-error-reload-btn:hover{background:var(--color-primary-hover)}#sign-in-overlay{background:#000}.update-notification{position:fixed;bottom:0;left:0;right:0;display:flex;align-items:center;justify-content:center;gap:1rem;padding:.875rem 1rem;background:var(--color-primary);color:var(--text-on-dark);font-size:.875rem;font-weight:500;transform:translateY(100%);opacity:0;transition:transform .3s ease-out,opacity .3s ease-out;z-index:10001}.update-notification-visible{transform:translateY(0);opacity:1}.update-notification-text{flex:0 1 auto}.update-notification-button{flex:0 0 auto;padding:.375rem .75rem;border:none;border-radius:.25rem;background:var(--text-on-dark);color:var(--color-primary);font-size:.8125rem;font-weight:600;cursor:pointer;transition:background-color .15s ease}.update-notification-button:hover{background:var(--bg-subtle)}.update-notification-button:active{background:var(--border)}.update-notification-dismiss{flex:0 0 auto;padding:.25rem .5rem;border:none;background:transparent;color:var(--text-on-dark);font-size:1.25rem;line-height:1;cursor:pointer;opacity:.7;transition:opacity .15s ease}.update-notification-dismiss:hover{opacity:1}.camera-container{position:relative;width:100%;height:100%;background:#000;overflow:hidden}.camera-container video{display:none}.camera-container canvas{display:block;position:absolute;top:0;transition:filter .1s ease-out}.camera-container canvas.flash{filter:brightness(2)}.countdown-overlay{position:absolute;top:0;left:0;right:0;bottom:0;display:flex;align-items:center;justify-content:center;background:#0006;z-index:100}.countdown-overlay[hidden]{display:none}.countdown-number{font-size:8rem;font-weight:200;color:#fff;text-shadow:0 0 20px rgba(0,0,0,.5);opacity:1}.countdown-number.pulse{animation:countdown-pulse 1s ease-out}@keyframes countdown-pulse{0%{transform:scale(1.2);opacity:0}20%{opacity:1}to{transform:scale(1);opacity:1}}.recording-indicator{position:absolute;top:calc(env(safe-area-inset-top) + 1rem);left:50%;transform:translate(-50%);display:flex;align-items:center;gap:.5rem;padding:.5rem 1rem;background:#0009;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border-radius:1.5rem;z-index:20}.recording-indicator[hidden]{display:none}.recording-dot{width:12px;height:12px;background:#ff3b30;border-radius:50%;animation:recording-dot-pulse 1s ease-in-out infinite}@keyframes recording-dot-pulse{0%,to{opacity:1}50%{opacity:.4}}.recording-timer{color:#fff;font-size:.9rem;font-weight:600;font-variant-numeric:tabular-nums;min-width:40px}.camera-toolbar{position:absolute;bottom:env(safe-area-inset-bottom);left:0;right:0;display:flex;flex-direction:column;padding:1rem 1.5rem 4rem;background:linear-gradient(#0000,#0000007f)}.toolbar-menu{display:flex;justify-content:center;max-width:450px;margin:auto;margin-bottom:1rem;width:100%}.toolbar-menu .mode-switch{display:flex;height:3rem;padding:.3rem;border-radius:.5rem;background:var(--overlay);border:1px solid var(--color-button-dark-bg)}.menu-btn{display:flex;justify-content:center;flex-direction:column;align-items:center;gap:.25rem;background:transparent;border:none;color:#fff;opacity:.9;font-size:.7rem;font-weight:600;cursor:pointer;padding:.5rem;transition:opacity .15s;text-transform:uppercase;width:4rem}.menu-btn svg{width:1.6rem;height:1.6rem}.menu-btn:active{opacity:1}.menu-btn.active{background:var(--color-button);border-radius:.3rem;pointer-events:none}[data-action=torch][disabled]{text-decoration:line-through}.toolbar-actions{display:flex;justify-content:space-around;align-items:center;margin:auto;width:75%;max-width:320px}.zoom-control{position:absolute;bottom:calc(env(safe-area-inset-bottom) + 1rem);left:50%;transform:translate(-50%);display:flex;flex-direction:column;align-items:center;gap:.25rem;padding:.3rem 1rem;background:#0006;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border-radius:1.25rem;z-index:5;opacity:1;transition:opacity .25s ease-out}.zoom-current{color:#fff;font-size:13px;font-weight:600;min-width:32px;text-align:center}.zoom-slider-row{display:flex;align-items:center;gap:.75rem}.zoom-control[hidden]{display:flex!important;pointer-events:none;opacity:0}.zoom-slider-container{position:relative;width:120px;height:20px;display:flex;align-items:center}.zoom-slider-track{position:absolute;width:100%;height:4px;background:#ffffff4d;border-radius:2px;pointer-events:none}.snap-tick{position:absolute;width:2px;height:10px;background:#fff9;border-radius:1px;transform:translate(-50%)}.zoom-slider{width:calc(100% + 22px);margin:0 -11px;height:4px;-webkit-appearance:none;-moz-appearance:none;appearance:none;background:transparent;outline:none;position:relative;z-index:1}.zoom-slider::-webkit-slider-thumb{-webkit-appearance:none;-moz-appearance:none;appearance:none;width:22px;height:22px;border-radius:50%;background:#fff;cursor:pointer;box-shadow:0 2px 6px #0000004d}.zoom-slider::-moz-range-thumb{width:22px;height:22px;border-radius:50%;background:#fff;cursor:pointer;border:none;box-shadow:0 2px 6px #0000004d}.zoom-label{color:#fff;font-size:11px;font-weight:500;min-width:24px;text-align:center}.exposure-slider-container{position:absolute;right:1rem;top:50%;transform:translateY(-50%);display:flex;flex-direction:column;align-items:center;gap:.5rem;padding:.75rem .5rem;background:#0006;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border-radius:2rem;z-index:10}.exposure-slider-container[hidden]{display:none}.exposure-label{color:#fff;font-size:14px;font-weight:600;opacity:.8}.exposure-slider-vertical{writing-mode:vertical-lr;direction:rtl;width:24px;height:160px;-webkit-appearance:none;-moz-appearance:none;appearance:none;background:#ffffff4d;border-radius:12px;outline:none}.exposure-slider-vertical::-webkit-slider-thumb{-webkit-appearance:none;-moz-appearance:none;appearance:none;width:24px;height:24px;border-radius:50%;background:#fff;cursor:pointer;box-shadow:0 2px 6px #0000004d}.exposure-slider-vertical::-moz-range-thumb{width:24px;height:24px;border-radius:50%;background:#fff;cursor:pointer;border:none;box-shadow:0 2px 6px #0000004d}.gallery-btn{width:3.5rem;height:3.5rem;padding:0;border:none;border-radius:50%;background:#0000007f;cursor:pointer;overflow:hidden;box-shadow:0 4px 12px #0006;display:flex;align-items:center;justify-content:center}.gallery-btn:hover{box-shadow:0 4px 16px #0009}.gallery-btn img{width:100%;height:100%;object-fit:cover}.gallery-btn .spinner{width:24px;height:24px;border:3px solid rgba(255,255,255,.3);border-top-color:#fff;border-radius:50%;animation:spin .8s linear infinite}.capture-btn{width:5rem;height:5rem;border-radius:50%;border:.35rem solid var(--color-button);background:#fff;cursor:pointer;flex-shrink:0;transition:transform .1s}.capture-btn:active{transform:scale(.95);background:var(--color-button-red-hover)}.capture-btn.Video{background:var(--color-button-red)}.capture-btn.recording{background:var(--color-button-red);animation:recording-pulse 1s ease-in-out infinite}.capture-btn.recording:after{content:"";position:absolute;width:28px;height:28px;background:#fff;border-radius:4px;transform:translate(-14px,-14px)}@keyframes recording-pulse{0%,to{box-shadow:0 0 #ff3b3066}50%{box-shadow:0 0 0 12px #ff3b3000}}.capture-btn:disabled{opacity:.5;pointer-events:none;transform:scale(.95)}.flip-btn{width:3.5rem;height:3.5rem;padding:.8rem;color:#fff;border:none;border-radius:50%;background:#0000007f;cursor:pointer;overflow:hidden;box-shadow:0 4px 12px #0006;display:flex;align-items:center;justify-content:center}.flip-btn:active{box-shadow:0 4px 16px #0009}.flip-btn svg{width:100%;height:100%}.camera-error{display:flex;flex-direction:column;align-items:center;justify-content:center;height:100%;color:#fff;text-align:center;padding:20px}.camera-error button{margin-top:16px;padding:10px 20px;border:none;border-radius:8px;background:var(--color-primary);color:#fff;cursor:pointer}.menu-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:100}.menu-overlay[hidden]{display:none}.menu-overlay-backdrop{position:absolute;top:0;right:0;bottom:0;left:0;background:#0006}.menu-overlay-content{position:absolute;bottom:13rem;left:50%;transform:translate(-50%);display:flex;gap:.5rem;padding:.5rem;background:#0009;border-radius:1rem}.menu-option{padding:.6rem 1rem;background:#ffffff1a;border:none;border-radius:.5rem;color:#fff;font-size:.85rem;cursor:pointer;transition:background .15s}.menu-option:active,.menu-option.active{background:#ffffff4d}.menu-section{display:flex;flex-direction:column;gap:.5rem;padding:.5rem}.menu-section-title{font-size:.7rem;color:#fff9;text-transform:uppercase;letter-spacing:.05em}.menu-overlay-content.styles-grid{flex-direction:column;max-height:50vh;overflow-y:auto;width:90vw;max-width:400px}.styles-thumbnails{display:grid;grid-template-columns:repeat(4,1fr);gap:.5rem}.style-thumb{display:flex;flex-direction:column;align-items:center;gap:.25rem;padding:.4rem;background:#ffffff0d;border:2px solid transparent;border-radius:.5rem;color:#fff;font-size:.6rem;cursor:pointer;transition:background .15s,border-color .15s}.style-thumb:active{background:#ffffff26}.style-thumb.active{border-color:#fff;background:#ffffff1a}.style-thumb-preview{width:48px;height:48px;border-radius:.25rem;background-size:cover;background-position:center}.style-thumb-none{background:linear-gradient(135deg,#666,#333)}@media (max-width: 600px){.camera-toolbar{padding:1rem 0 5rem}}@media (orientation: landscape) and (max-height: 500px){.camera-toolbar{bottom:0;left:auto;right:0;top:0;flex-direction:column;justify-content:center;align-items:center;gap:1rem;width:auto;padding:1rem;padding-right:calc(1.5rem + env(safe-area-inset-right));padding-bottom:1rem;background:linear-gradient(to left,#0000007f,#0000)}.toolbar-menu{flex-direction:column;margin-bottom:0;width:auto;max-width:4rem;gap:.25rem;position:fixed;left:env(safe-area-inset-left)}.toolbar-menu .mode-switch{flex-direction:column;width:3.45rem;height:6.2rem;margin-left:.5rem}.toolbar-menu .mode-switch .menu-btn{width:2.7rem}.toolbar-actions{flex-direction:column;width:auto;max-width:none;gap:.75rem}.zoom-control{bottom:0rem;top:unset;left:calc(50% - 100px);right:auto;transform:translateY(-50%)}.exposure-slider-container{right:auto;left:calc(env(safe-area-inset-left) + 1rem);top:20%;transform:none}}.gallery-container{display:flex;flex-direction:column;height:100%;background:var(--bg)}.gallery-header{display:flex;align-items:center;padding:16px;border-bottom:1px solid var(--border)}.gallery-header h1{margin:0;font-size:20px;font-weight:600;color:var(--text)}.gallery-header .back-btn{display:flex;align-items:center;gap:4px;padding:8px 12px;margin-right:12px;border:none;border-radius:8px;background:transparent;color:var(--text);font-size:14px;cursor:pointer}.gallery-header .back-btn:hover{background:var(--color-button-light-hover)}.gallery-grid{flex:1;overflow-y:auto;display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));grid-auto-rows:minmax(100px,auto);gap:1px;align-content:start}.gallery-item{aspect-ratio:1;overflow:hidden;background:var(--bg-subtle)}.gallery-item img{width:100%;height:100%;object-fit:cover}.gallery-empty{display:flex;flex-direction:column;align-items:center;justify-content:center;height:100%;color:var(--text-muted);text-align:center;padding:40px}.gallery-empty p{margin:8px 0}.image-modal{position:fixed;top:0;left:0;right:0;bottom:0;z-index:1000;display:flex;align-items:center;justify-content:center}.modal-backdrop{position:absolute;top:0;left:0;right:0;bottom:0;background:#000c}.modal-content{position:relative;background:var(--bg);border-radius:12px;max-width:90vw;max-height:90vh;overflow:hidden;display:flex;flex-direction:column}.modal-image{flex:1;min-height:0;display:flex;align-items:center;justify-content:center;background:#000}.modal-image img{max-width:100%;max-height:60vh;object-fit:contain}.modal-details{padding:16px;border-top:1px solid var(--border)}.detail-row{display:flex;justify-content:space-between;padding:8px 0;border-bottom:1px solid var(--border)}.detail-row:last-child{border-bottom:none}.detail-label{color:var(--text-muted);font-size:14px}.detail-value{color:var(--text);font-size:14px;font-weight:500}.modal-actions{display:flex;gap:12px;padding:16px;border-top:1px solid var(--border)}.modal-btn{flex:1;padding:12px 20px;border:none;border-radius:8px;font-size:14px;font-weight:500;cursor:pointer}.download-btn{background:var(--color-primary);color:#fff}.download-btn:hover{background:var(--color-primary-hover, #0056b3)}.close-btn{background:var(--color-button-light);color:var(--text)}.close-btn:hover{background:var(--color-button-light-hover)}.fullscreen-viewer{position:fixed;top:0;left:0;right:0;bottom:0;z-index:1000;background:#000}.viewer-image-container{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:center;touch-action:pan-y;overflow:hidden}.viewer-image{width:100%;height:100%;object-fit:contain;-webkit-user-select:none;user-select:none;-webkit-user-drag:none;will-change:transform}.viewer-close-btn{position:absolute;top:calc(env(safe-area-inset-top,0px) + 16px);right:16px;width:44px;height:44px;background:#444;border:none;border-radius:50%;color:#fff;cursor:pointer;display:flex;align-items:center;justify-content:center;z-index:10;transition:background .15s;box-shadow:0 4px 12px #0006}.viewer-close-btn:hover{background:#555}.viewer-close-btn:active{background:#ffffff4d}.viewer-close-btn svg{width:20px;height:20px}.viewer-nav-btn{position:absolute;top:50%;transform:translateY(-50%);width:48px;height:48px;background:#444;border:none;border-radius:50%;color:#fff;cursor:pointer;display:flex;align-items:center;justify-content:center;z-index:10;transition:background .15s,opacity .3s;box-shadow:0 4px 12px #0006}.viewer-nav-prev{left:16px}.viewer-nav-next{right:16px}.viewer-nav-btn:hover{background:#555}.viewer-nav-btn:disabled{opacity:0;cursor:default;pointer-events:none}.viewer-nav-btn svg{width:24px;height:24px}.viewer-nav-next svg{transform:rotate(180deg)}@media (hover: none) and (pointer: coarse){.viewer-nav-btn{display:none}}.viewer-info-btn{position:absolute;bottom:calc(env(safe-area-inset-bottom,0px) + 24px);left:50%;transform:translate(-50%);width:48px;height:48px;background:#444;border:none;border-radius:50%;color:#fff;cursor:pointer;display:flex;align-items:center;justify-content:center;z-index:10;transition:background .15s,opacity .3s;box-shadow:0 4px 12px #0006}.viewer-info-btn svg{width:24px;height:24px;transform:rotate(180deg);transition:transform .3s}.viewer-info-btn.active svg{transform:rotate(0)}.viewer-info-btn:hover{background:#ffffff40}.viewer-info-btn.hidden{opacity:0;pointer-events:none}.viewer-info-drawer{position:absolute;bottom:0;left:0;right:0;max-width:500px;margin:0 auto;padding:16px 20px calc(env(safe-area-inset-bottom,0px) + 24px) 20px;background:#000000d9;backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);border-radius:16px 16px 0 0;border:1px solid rgba(255,255,255,.1);border-bottom:none;z-index:20;transform:translateY(0);opacity:1;transition:transform .3s cubic-bezier(.4,0,.2,1),opacity .25s ease-out}.viewer-info-drawer[hidden]{display:block!important;pointer-events:none;transform:translateY(100%);opacity:0}.drawer-handle{width:40px;height:4px;background:#ffffff4d;border-radius:2px;margin:0 auto 16px;opacity:0}.viewer-info-drawer .drawer-close-btn{position:absolute;top:8px;right:8px;width:32px;height:32px;background:#ffffff1a;border:none;border-radius:50%;color:#fff;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:background .15s}.viewer-info-drawer .drawer-close-btn:hover{background:#fff3}.viewer-info-drawer .drawer-close-btn:active{background:#ffffff40}.viewer-info-drawer .drawer-close-btn svg{width:16px;height:16px}.info-section{margin-bottom:20px}.info-row{display:flex;justify-content:space-between;align-items:center;padding:10px 0;border-bottom:1px solid rgba(255,255,255,.1)}.info-row:last-child{border-bottom:none}.info-label{color:#fff9;font-size:14px}.info-value{color:#fff;font-size:14px;font-weight:500;text-align:right;max-width:60%;overflow:hidden;text-overflow:ellipsis}.drawer-actions{display:flex;gap:12px;justify-content:center}.viewer-info-drawer .drawer-btn{display:flex;align-items:center;justify-content:center;gap:8px;padding:12px 16px;background:#ffffff1a;border:1px solid rgba(255,255,255,.2);border-radius:8px;color:#fff;font-size:13px;font-weight:500;cursor:pointer;transition:background .15s,transform .1s;flex:1;max-width:120px}.viewer-info-drawer .drawer-btn:hover{background:#ffffff26}.viewer-info-drawer .drawer-btn:active{transform:scale(.98);background:#fff3}.viewer-info-drawer .drawer-btn svg{width:18px;height:18px}.viewer-info-drawer .drawer-btn.primary{background:#6496ff4d;border-color:#6496ff80}.viewer-info-drawer .drawer-btn.primary:hover{background:#6496ff66}.viewer-info-drawer .drawer-btn.danger{background:#ff50504d;border-color:#ff505080}.viewer-info-drawer .drawer-btn.danger:hover{background:#ff505066}.gallery-header{justify-content:flex-start;gap:8px}.gallery-header .select-btn{margin-left:auto;display:flex;align-items:center;justify-content:center;padding:12px 16px;background:#ffffff1a;border:1px solid var(--border);border-radius:.5rem;color:var(--text-muted);font-size:.8rem;font-weight:500;cursor:pointer;transition:background .15s,transform .1s}.gallery-header .select-btn:hover{color:var(--text)}.gallery-header .account-btn{display:flex;align-items:center;justify-content:center;padding:8px;background:#ffffff1a;border:1px solid var(--border);border-radius:.5rem;color:var(--text-muted);font-size:.8rem;font-weight:500;cursor:pointer;transition:background .15s,transform .1s}.gallery-header .account-btn:hover{color:var(--text)!important}.gallery-header .select-actions{display:flex;flex:1;gap:8px;align-items:center}.gallery-header .select-all-btn,.gallery-header .cancel-btn{background:transparent;border:1px solid var(--border);color:var(--text-muted);padding:12px 16px;border-radius:6px;font-size:.8rem;cursor:pointer;margin-left:auto}.gallery-header .select-all-btn:hover,.gallery-header .cancel-btn:hover{color:var(--color-text)}.gallery-header .delete-btn{background:#f44;border:none;color:#fff;padding:12px 16px;border-radius:6px;font-size:.8rem;cursor:pointer;display:flex;align-items:center;gap:4px}.gallery-header .delete-btn:hover{background:#f22}.gallery-header .delete-btn:disabled{opacity:.5;cursor:not-allowed}.gallery-header .delete-btn svg{width:16px;height:16px}.gallery-header .delete-btn .spinner{width:14px;height:14px;border:2px solid rgba(255,255,255,.3);border-top-color:#fff;border-radius:50%;animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.gallery-item{position:relative;cursor:pointer}.gallery-item.selected{outline:3px solid #007AFF;outline-offset:-3px}.gallery-item .select-checkbox{position:absolute;top:8px;left:8px;width:24px;height:24px;border-radius:50%;background:#00000080;border:2px solid white;display:flex;align-items:center;justify-content:center;z-index:10;color:#fff;font-size:14px}.gallery-item .select-checkbox.checked{background:#007aff;border-color:#007aff}.gallery-item .select-checkbox svg{width:14px;height:14px;stroke:#fff;stroke-width:3}.video-indicator{position:absolute;bottom:0;left:0;right:0;display:flex;align-items:center;justify-content:space-between;padding:6px 8px;background:linear-gradient(transparent,#000000b3);color:#fff;font-size:11px;font-weight:500;pointer-events:none}.video-indicator .play-icon{width:16px;height:16px;display:flex;align-items:center;justify-content:center}.video-indicator .play-icon svg{width:14px;height:14px}.video-duration{font-variant-numeric:tabular-nums}.viewer-video-container{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:center;background:#000;touch-action:pan-y}.viewer-video{max-width:100%;max-height:100%;object-fit:contain}.video-loading{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);color:#ffffffb3;font-size:14px}@media (max-width: 420px){.gallery-header .select-actions{gap:4px}.gallery-grid{grid-template-columns:repeat(3,1fr);grid-auto-rows:minmax(calc(33.33vw - 1px),auto)}.viewer-info-drawer{max-width:none;margin:0;padding-left:16px;padding-right:16px}.viewer-info-drawer .drawer-btn span{display:none}.viewer-info-drawer .drawer-btn{padding:12px;max-width:60px}}.filter-strip{position:absolute;bottom:calc(env(safe-area-inset-bottom) + 15rem);left:0;right:0;margin:auto;display:flex;gap:8px;padding:1rem;justify-content:space-evenly;overflow-x:auto;border-radius:.5rem;transform:translateY(0);opacity:1;transition:transform .3s ease-out,opacity .25s ease-out;scrollbar-width:thin;scrollbar-color:rgba(0,0,0,.5) transparent}.filter-strip::-webkit-scrollbar{height:4px}.filter-strip::-webkit-scrollbar-track{background:transparent}.filter-strip::-webkit-scrollbar-thumb{background:#00000080;border-radius:2px}.filter-strip::-webkit-scrollbar-thumb:hover{background:#000000b3}.filter-strip[hidden]{display:flex!important;pointer-events:none;transform:translateY(20px);opacity:0}.filter-btn{flex-shrink:0;background:#0000004d;border:1px solid rgba(255,255,255,.2);border-radius:1rem;color:#fff;font-size:11px;font-weight:500;width:4rem;height:4rem;cursor:pointer;transition:background .15s,border-color .15s}.filter-btn:hover{background:#fff3}.filter-btn.active{background:#ffffff40;border-color:#ffffff80}.filter-btn.custom{font-size:1.5rem;font-weight:300}.filter-btn.user-preset{background:#ffc86426;border-color:#ffc8644d}.filter-btn.user-preset:hover{background:#ffc86440}.filter-btn.user-preset.active{background:#ffc8644d;border-color:#ffc86499}.filter-divider{width:1px;height:3rem;background:#fff3;flex-shrink:0;align-self:center}@media (max-width: 600px){.filter-strip{justify-content:flex-start}}@media (orientation: landscape) and (max-height: 500px){.filter-strip{bottom:0;top:0;left:calc(env(safe-area-inset-left) + 4rem);right:unset;flex-direction:column;overflow-y:auto;overflow-x:visible;scroll-snap-type:y mandatory}.filter-strip[hidden]{transform:translateY(-50%) translate(0)}.filter-divider{width:3rem;height:1px}}.effects-strip{position:absolute;bottom:calc(env(safe-area-inset-bottom) + 15rem);left:0;right:0;display:flex;gap:8px;padding:1rem;align-items:flex-start;justify-content:center;margin:auto;transform:translateY(0);opacity:1;transition:transform .3s ease-out,opacity .25s ease-out;overflow-x:auto;overflow-y:visible;scroll-snap-type:x mandatory;-webkit-overflow-scrolling:touch;scrollbar-width:none}.effects-strip::-webkit-scrollbar{display:none}.effects-strip[hidden]{display:flex!important;pointer-events:none;transform:translateY(20px);opacity:0}.effect-knob{position:relative;display:flex;flex-direction:column;align-items:center;cursor:grab;-webkit-user-select:none;user-select:none;flex-shrink:0;scroll-snap-align:center;background:#0000007f;border-radius:1rem;width:4rem;height:4rem;gap:2px;padding:6px 4px}.knob-reset{position:absolute;top:-6px;right:-6px;width:18px;height:18px;border-radius:50%;background:#ffffffe6;color:#000;border:none;font-size:14px;font-weight:700;line-height:1;cursor:pointer;display:none;align-items:center;justify-content:center;z-index:10;padding:0;transition:transform .15s,background .15s}.knob-reset:hover{background:#fff;transform:scale(1.1)}.knob-reset:active{transform:scale(.95)}.effect-knob:active{cursor:grabbing}.knob-ring{width:48px;height:48px;touch-action:pan-x;filter:drop-shadow(0 2px 4px rgba(0,0,0,.3))}.knob-track{transition:stroke .2s}.effect-knob.active .knob-ring{filter:drop-shadow(0 0 8px rgba(255,255,255,.4))}.knob-icon{position:absolute;top:12px;left:50%;transform:translate(-50%);width:24px;height:24px;pointer-events:none;touch-action:none;display:flex;align-items:center;justify-content:center;transition:opacity .15s}.knob-icon svg{width:20px;height:20px;color:#ffffffd9}.effect-knob.active .knob-icon svg{color:#fff}.knob-label{font-size:9px;color:#fff9;text-transform:uppercase;letter-spacing:.05em;white-space:nowrap;font-weight:500;pointer-events:none;touch-action:none}.effect-knob.active .knob-label{color:#ffffffe6}.effect-knob.active .knob-icon{opacity:0}.effect-knob.active .knob-tooltip:after{display:none}.knob-tooltip{position:absolute;top:1.1rem;left:50%;transform:translate(-50%);background:transparent;color:#fff;font-size:13px;font-weight:600;padding:0;border-radius:6px;white-space:nowrap;opacity:0;transition:opacity .15s;pointer-events:none;touch-action:none;z-index:10}.effect-knob.secondary .knob-label{font-size:8px}.effect-knob.disabled{opacity:.3;pointer-events:none}.effect-divider{width:1px;height:48px;background:#ffffff26;flex-shrink:0;align-self:center;margin:0 4px}.reset-effects-btn{flex-shrink:0;width:36px;height:36px;display:flex;align-items:center;justify-content:center;border:1px solid rgba(255,255,255,.2);border-radius:50%;background:#ffffff1a;color:#ffffffb3;cursor:pointer;transition:all .2s;align-self:center;margin-left:4px}.reset-effects-btn:hover{background:#fff3;color:#fff}.reset-effects-btn:active{transform:scale(.95)}.reset-effects-btn svg{width:16px;height:16px}@media (max-width: 600px){.effects-strip{justify-content:flex-start}}@media (orientation: landscape) and (max-height: 500px){.effects-strip{bottom:0;top:0;left:calc(env(safe-area-inset-left) + 4rem);right:unset;flex-direction:column;overflow-y:auto;overflow-x:visible;scroll-snap-type:y mandatory}.effects-strip[hidden]{transform:translateY(-50%) translate(0)}.knob-ring{touch-action:pan-y}}.adjustments-drawer{position:absolute;bottom:calc(env(safe-area-inset-bottom) + 0rem);left:0;right:0;max-width:400px;margin:auto;padding:1rem 1rem 3rem;background:#000c;-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);border-radius:1rem 1rem 0 0;border:1px solid rgb(255 255 255 / 10%);border-bottom:none;z-index:10;transform:translateY(0);opacity:1;transition:transform .3s cubic-bezier(.4,0,.2,1),opacity .25s ease-out}.adjustments-drawer[hidden]{display:block!important;pointer-events:none;transform:translateY(100%);opacity:0}.drawer-reset-btn{position:absolute;top:8px;left:8px;width:32px;height:32px;background:#ffffff1a;border:none;border-radius:50%;color:#fff;cursor:pointer;display:flex;align-items:center;justify-content:center;z-index:10;transition:background .15s}.drawer-close-btn{position:absolute;top:8px;right:8px;width:32px;height:32px;background:#ffffff1a;border:none;border-radius:50%;color:#fff;cursor:pointer;display:flex;align-items:center;justify-content:center;z-index:10;transition:background .15s}.drawer-close-btn:hover{background:#fff3}.drawer-close-btn:active{background:#ffffff40}.drawer-close-btn svg{width:16px;height:16px}.drawer-handle{width:40px;height:4px;background:#ffffff4d;border-radius:2px;margin:0 auto 12px;opacity:0}.drawer-section{margin-bottom:16px}.drawer-section-title{font-size:10px;color:#ffffff80;text-transform:uppercase;letter-spacing:.08em;margin-bottom:12px;font-weight:500;text-align:center}.adjustment-knobs{display:flex;gap:8px;justify-content:space-around}.adjustments-drawer .effect-knob{position:relative;display:flex;flex-direction:column;align-items:center;gap:2px;cursor:grab;-webkit-user-select:none;user-select:none;flex-shrink:0}.adjustments-drawer .effect-knob:active{cursor:grabbing}.adjustments-drawer .knob-ring{width:48px;height:48px;touch-action:none;filter:drop-shadow(0 2px 4px rgba(0,0,0,.3))}.adjustments-drawer .knob-track{transition:stroke .2s}.adjustments-drawer .effect-knob.active .knob-ring{filter:drop-shadow(0 0 8px rgba(255,255,255,.4))}.adjustments-drawer .knob-icon{position:absolute;top:12px;left:50%;transform:translate(-50%);width:24px;height:24px;pointer-events:none;touch-action:none;display:flex;align-items:center;justify-content:center;transition:opacity .15s}.adjustments-drawer .knob-icon svg{width:20px;height:20px;color:#ffffffd9}.adjustments-drawer .effect-knob.active .knob-icon svg{color:#fff}.adjustments-drawer .knob-label{font-size:9px;color:#fff9;text-transform:uppercase;letter-spacing:.05em;white-space:nowrap;font-weight:500;pointer-events:none;touch-action:none}.adjustments-drawer .effect-knob.active .knob-label{color:#ffffffe6}.adjustments-drawer .effect-knob.active .knob-icon{opacity:0}.adjustments-drawer .knob-tooltip{position:absolute;top:.9rem;left:50%;transform:translate(-50%);background:transparent;color:#fff;font-size:13px;font-weight:600;padding:0;border-radius:6px;white-space:nowrap;opacity:0;transition:opacity .15s;pointer-events:none;touch-action:none;z-index:10}.drawer-actions{display:flex;gap:1rem;justify-content:center}.drawer-btn{display:flex;align-items:center;justify-content:center;gap:6px;padding:10px 12px;background:#ffffff1a;border:1px solid rgba(255,255,255,.2);border-radius:8px;color:#fff;font-size:12px;font-weight:500;cursor:pointer;transition:background .15s,transform .1s}.drawer-btn:hover{background:#ffffff26}.drawer-btn:active{transform:scale(.98);background:#fff3}.drawer-btn svg{width:16px;height:16px}.drawer-btn.primary{background:#6496ff4d;border-color:#6496ff80}.drawer-btn.primary:hover{background:#6496ff66}.drawer-btn.primary:active{background:#6496ff80}@media (max-width: 420px){.adjustments-drawer{max-width:none;border-radius:1rem 1rem 0 0;margin:0 8px}.adjustment-knobs{gap:4px}.adjustments-drawer .knob-ring{width:44px;height:44px}.adjustments-drawer .knob-icon{top:10px}}.top-drawer-toggle{position:absolute;top:0;left:0;right:0;border:none;height:2rem;display:flex;align-items:center;justify-content:center;color:#fff;cursor:pointer;z-index:20;margin:0 8px;padding:calc(env(safe-area-inset-top) + 1rem) 1rem 1rem;transition:background .15s;background:transparent}.top-drawer-toggle svg{width:24px;height:24px;transition:transform .3s cubic-bezier(.4,0,.2,1)}.top-drawer-toggle.open svg{transform:rotate(180deg)}.top-drawer{position:absolute;top:0;left:0;right:0;padding:calc(env(safe-area-inset-top) + 3rem) 1rem 1rem;background:#000c;-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);z-index:15;transform:translateY(0);opacity:1;transition:transform .3s cubic-bezier(.4,0,.2,1),opacity .25s ease-out;border-radius:0 0 1rem 1rem;margin:0 8px}.top-drawer[hidden]{display:block!important;pointer-events:none;transform:translateY(-100%);opacity:0}.top-drawer-content{display:flex;justify-content:center;align-items:flex-start;gap:1.5rem;max-width:400px;margin:0 auto}.drawer-control{display:flex;flex-direction:column;align-items:center;gap:.5rem}.control-btn{display:flex;flex-direction:column;align-items:center;gap:.25rem;background:#ffffff1a;border:1px solid rgba(255,255,255,.2);border-radius:12px;padding:.75rem 1rem;color:#fff;cursor:pointer;min-width:70px;transition:background .15s,border-color .15s}.control-btn:hover{background:#ffffff26}.control-btn:active{background:#fff3}.control-btn.active{background:#ffc8644d;border-color:#ffc86480}.control-btn .control-icon{display:flex;align-items:center;justify-content:center}.control-btn .control-icon svg{width:24px;height:24px}.control-btn .control-label{font-size:11px;font-weight:500;text-transform:uppercase;letter-spacing:.03em}@media (max-width: 768px){.top-drawer-content{gap:.75rem}.control-btn{min-width:56px;padding:.5rem .6rem}}.view{position:fixed;top:0;left:0;bottom:0;right:0;display:flex;justify-content:center;align-items:center;padding-top:env(safe-area-inset-top);background-color:var(--bg)}.view.camera{display:block;padding:0}.view.gallery{display:block}.view.camera c-camera,.view.gallery c-gallery{display:block;width:100%;height:100%}
