.gallery{padding:var(--s-4)}.gallery h1{margin-bottom:var(--s-2)}.gallery-error{color:var(--danger, #c00)}.lightbox{position:fixed;top:0;right:0;bottom:0;left:0;background:#000000eb;display:flex;flex-direction:column;align-items:center;justify-content:center;z-index:1000}.lightbox img{max-width:95vw;max-height:88vh;object-fit:contain}.lightbox-nav{position:absolute;top:50%;transform:translateY(-50%);color:#fff;background:none;border:0;font-size:2rem;padding:1rem;cursor:pointer}.lightbox-nav.prev{left:0}.lightbox-nav.next{right:0}.lightbox-close{position:absolute;top:1rem;right:1rem;color:#fff;background:none;border:0;font-size:1.5rem;cursor:pointer}.upload-queue{list-style:none;padding:0;margin-left:auto;margin-top:var(--s-4, 1rem);max-width:36rem;display:grid;gap:var(--s-2, .5rem)}.upload-row{display:grid;grid-template-columns:minmax(0,1fr) 12rem auto;align-items:center;gap:var(--s-3, .75rem)}.upload-row-name{text-align:right;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-family:var(--mono, ui-monospace, SFMono-Regular, Menlo, monospace);font-size:.875rem}.upload-row-bar{width:100%;height:.75rem;-webkit-appearance:none;-moz-appearance:none;appearance:none;border:1px solid var(--line, #ddd);border-radius:var(--r-md, .5rem);background:var(--surface, #fff);overflow:hidden}.upload-row-bar::-webkit-progress-bar{background:var(--surface, #fff)}.upload-row-bar::-webkit-progress-value{background:var(--ink, #222);transition:width .15s ease}.upload-row-bar::-moz-progress-bar{background:var(--ink, #222)}.upload-row-status{font-size:.8125rem;color:var(--ink-3, #666);text-transform:lowercase;min-width:4.5rem}.upload-row-error .upload-row-status,.upload-row-error .upload-row-name{color:var(--danger, #c00)}.upload-row-error .upload-row-bar{border-color:var(--danger, #c00)}.upload-row-error .upload-row-bar::-webkit-progress-value,.upload-row-error .upload-row-bar::-moz-progress-bar{background:var(--danger, #c00)}.upload-header-cluster{display:inline-flex;align-items:center;gap:var(--s-3, .75rem)}.gallery-header{display:flex;align-items:center;gap:var(--s-3, .75rem);padding:var(--s-3, .75rem) 0}.gallery-title{margin:0;flex:0 0 auto;width:10rem}.gallery-search-wrap{flex:1 1 auto}.searchbar{width:100%;padding:var(--s-2, .5rem) var(--s-3, .75rem);border:1px solid var(--line, #ddd);border-radius:var(--r-md, .5rem);background:var(--surface, #fff);color:var(--ink, #222);font-size:var(--font-size-md, 1rem)}.signout-icon,.profile-icon{display:inline-flex;align-items:center;justify-content:center;width:2rem;height:2rem;border-radius:50%;border:1px solid var(--line, #ddd);text-decoration:none;color:var(--ink, #222);background:var(--surface, #fff);font-weight:600}.profile-icon:hover,.signout-icon:hover{background:var(--ink-1, #f2f2f2)}.auth-actions{display:inline-flex;align-items:center;gap:var(--s-2, .5rem);flex:0 0 auto}.page-top-actions{position:fixed;top:var(--s-3, .75rem);right:var(--s-3, .75rem);z-index:10;display:inline-flex;align-items:center;gap:var(--s-3, .75rem)}.gallery-toolbar{display:flex;align-items:center;gap:var(--s-3, .75rem);padding:var(--s-2, .5rem) 0;border-top:1px solid var(--line, #ddd);border-bottom:1px solid var(--line, #ddd)}.toolbar-left,.toolbar-right{flex:0 0 auto}.toolbar-actions{flex:1 1 auto;display:flex;gap:var(--s-2, .5rem);align-items:center}.toolbar-actions>button,.toolbar-actions>a,.toolbar-actions .toolbar-button,.dialog-actions>button{display:inline-flex;align-items:center;padding:.25rem .6rem;border:1px solid var(--line, #ddd);border-radius:var(--r-md, .5rem);background:var(--surface, #fff);color:var(--ink, #222);font:inherit;text-decoration:none;cursor:pointer}.toolbar-actions>button:hover:not(:disabled),.toolbar-actions>a:hover,.toolbar-actions .toolbar-button:hover:not(:disabled),.dialog-actions>button:hover:not(:disabled){background:var(--surface-2, #f5f5f5)}.toolbar-actions>button:disabled,.dialog-actions>button:disabled{opacity:.5;cursor:not-allowed}.zoom-buttons button{width:2rem;height:2rem;border:1px solid var(--line, #ddd);background:var(--surface, #fff);color:var(--ink, #222);cursor:pointer}.zoom-buttons button:disabled{opacity:.4;cursor:not-allowed}.gallery-toolbar button.danger,.dialog-actions button.danger{border-color:var(--danger, #c00);color:var(--danger, #c00);background:var(--surface, #fff)}.gallery-toolbar button.danger:hover:not(:disabled),.dialog-actions button.danger:hover:not(:disabled){background:var(--danger, #c00);color:var(--surface, #fff)}.dialog-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#0006;display:flex;align-items:center;justify-content:center;z-index:100}.dialog{background:var(--surface, #fff);border:1px solid var(--line, #eae6dd);border-radius:var(--r-md, 10px);padding:var(--s-4, 16px);min-width:20rem}.dialog-actions{display:flex;justify-content:flex-end;gap:var(--s-2, 8px);margin-top:var(--s-3, 12px)}.resize-dim-toggle{display:inline-flex;border:1px solid var(--line, #ddd);border-radius:var(--r-md, .5rem);overflow:hidden;margin-right:var(--s-2, .5rem)}.resize-dim-toggle button{border:0;background:var(--surface, #fff);color:var(--ink, #222);padding:.25rem .75rem;cursor:pointer;font:inherit}.resize-dim-toggle button+button{border-left:1px solid var(--line, #ddd)}.resize-dim-toggle button[aria-pressed=true]{background:var(--ink, #222);color:var(--surface, #fff)}.resize-input-row{display:flex;align-items:center;gap:var(--s-3, .75rem);margin-top:var(--s-3, .75rem)}.dialog-actions>.resize-dim-toggle{margin:0;flex:0 0 auto}.dialog-actions>.resize-cancel{margin-left:auto}.resize-slider{flex:1 1 auto}.resize-input{flex:0 0 auto;width:6rem}.profile-edit-form{display:flex;flex-direction:column;gap:var(--s-3, .75rem)}.profile-ai-section{display:flex;flex-direction:column;gap:var(--s-3, .75rem);margin:var(--s-3, .75rem) 0 0;padding:var(--s-3, .75rem) var(--s-3, .75rem) var(--s-4, 1rem);border:1px solid var(--line, #ddd);border-radius:var(--r-md, .5rem)}.profile-ai-section legend{padding:0 var(--s-2, .5rem);font-size:.75rem;text-transform:uppercase;letter-spacing:.08em;color:var(--ink-3)}.image-tile-wrap .info-icon,.image-tile-wrap .restore-icon,.image-tile-wrap .tag-icon,.image-tile-wrap .download-icon,.image-tile-wrap .copy-icon,.image-tile-wrap .delete-icon{position:absolute;top:.25rem;width:1.5rem;height:1.5rem;border-radius:50%;border:none;background:#00000080;color:#fff;cursor:pointer;opacity:0;transition:opacity .15s ease,background .15s ease;display:inline-flex;align-items:center;justify-content:center;padding:0;font-size:.875rem;text-decoration:none}.image-tile-wrap .info-icon{left:.25rem}.image-tile-wrap .restore-icon,.image-tile-wrap .tag-icon{right:5.5rem}.image-tile-wrap .download-icon{right:3.75rem}.image-tile-wrap .copy-icon{right:2rem}.image-tile-wrap .delete-icon{right:.25rem;background:#b42828d9;font-size:1.125rem;line-height:1}.image-tile-wrap .delete-icon:hover:not(:disabled){background:#c81e1e}.image-tile-wrap .delete-icon:disabled{cursor:progress}.image-tile-wrap .restore-icon:disabled{cursor:progress}.image-tile-wrap .tag-icon:disabled{cursor:progress}.image-tile-wrap:hover .info-icon,.image-tile-wrap:hover .restore-icon,.image-tile-wrap:hover .tag-icon,.image-tile-wrap:hover .download-icon,.image-tile-wrap:hover .copy-icon,.image-tile-wrap:hover .delete-icon,.image-tile-wrap .info-icon.pinned,.image-tile-wrap .info-icon:focus-visible,.image-tile-wrap .restore-icon:focus-visible,.image-tile-wrap .tag-icon:focus-visible,.image-tile-wrap .download-icon:focus-visible,.image-tile-wrap .copy-icon:focus-visible,.image-tile-wrap .delete-icon:focus-visible{opacity:1}.image-tile-wrap .copy-icon.copied,.image-tile-wrap .tag-icon.queued{background:#288c3cd9;opacity:1}@media (pointer: coarse){.image-tile-wrap .info-icon,.image-tile-wrap .restore-icon,.image-tile-wrap .tag-icon,.image-tile-wrap .download-icon,.image-tile-wrap .copy-icon,.image-tile-wrap .delete-icon{opacity:1}}.bottom-info-bar{position:fixed;bottom:.5rem;right:.5rem;max-width:calc(100vw - 1rem);background:var(--surface, #fff);border:1px solid var(--line, #ddd);border-radius:var(--r-md, .5rem);padding:.5rem .75rem;display:flex;flex-direction:column;gap:.35rem;font-size:.875rem;box-shadow:0 2px 8px #0000001f;z-index:50}.bottom-info-bar__meta{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:.5rem}.bottom-info-bar__tags{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:.3rem}.bottom-info-bar__tag{display:inline-flex;align-items:center;gap:.25rem;background:var(--surface-2, #f3f3f3);border:1px solid var(--line, #ddd);border-radius:999px;padding:.1rem .5rem;font-size:.78rem;line-height:1.3;color:var(--fg-muted, #555)}.bottom-info-bar__tag[data-source=manual]{background:#e6f0ff;border-color:#b3cfff;color:#1d4ed8}.bottom-info-bar__tag[data-source=manual] .bottom-info-bar__tag-text{color:inherit}.bottom-info-bar__tag[data-source=manual] .bottom-info-bar__tag-remove:hover{color:#1d4ed8}.bottom-info-bar__tag-text{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:transparent;border:0;padding:0;margin:0;font:inherit;color:inherit;cursor:default}.bottom-info-bar__tag--editable .bottom-info-bar__tag-text{cursor:text}.bottom-info-bar__tag--editable .bottom-info-bar__tag-text:hover{color:var(--fg, #222)}.bottom-info-bar__tag-input{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:transparent;border:0;padding:0;margin:0;font:inherit;color:var(--fg, #222);outline:none;min-width:4rem}.bottom-info-bar__tag-remove,.bottom-info-bar__tag-add{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:transparent;border:0;padding:0 .15rem;margin:0;font:inherit;font-size:.95rem;line-height:1;color:var(--fg-muted, #555);cursor:pointer;border-radius:999px}.bottom-info-bar__tag-remove:hover{color:#c00}.bottom-info-bar__tag-add{background:var(--surface-2, #f3f3f3);border:1px dashed var(--line, #ddd);padding:.1rem .5rem}.bottom-info-bar__tag-add:hover{color:var(--fg, #222);border-style:solid}:root{--bg: #fbfaf7;--surface: #ffffff;--ink: #17161a;--ink-2: #4a4852;--ink-3: #8e8a95;--line: #eae6dd;--line-2: #d9d3c6;--accent: oklch(.72 .13 65);--accent-ink: oklch(.38 .08 65);--accent-soft: oklch(.95 .04 75);--danger: oklch(.58 .18 25);--success: oklch(.62 .11 150);--sans: ui-sans-serif, -apple-system, "SF Pro Text", "Segoe UI", Roboto, system-ui, sans-serif;--mono: ui-monospace, "SF Mono", "JetBrains Mono", Menlo, monospace;--r-sm: 6px;--r-md: 10px;--r-lg: 16px;--r-xl: 24px;--s-1: 4px;--s-2: 8px;--s-3: 12px;--s-4: 16px;--s-5: 24px;--s-6: 32px;--s-7: 48px;--shadow-sm: 0 1px 2px rgba(20,18,10,.04), 0 1px 1px rgba(20,18,10,.02);--shadow-md: 0 4px 12px rgba(20,18,10,.06), 0 1px 2px rgba(20,18,10,.04);--shadow-lg: 0 16px 32px rgba(20,18,10,.08), 0 4px 8px rgba(20,18,10,.04);--ease-out: cubic-bezier(.2, .8, .2, 1);--ease-pop: cubic-bezier(.2, 1.4, .4, 1);--dur-fast: .15s;--dur: .25s;--dur-slow: .4s}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}body{font-family:var(--sans);font-size:15px;background:var(--bg);color:var(--ink);-webkit-font-smoothing:antialiased}a{color:inherit}button{cursor:pointer;font-family:inherit}.page-center{min-height:100dvh;display:flex;align-items:center;justify-content:center;padding:var(--s-5)}.stack{display:flex;flex-direction:column;gap:var(--s-4)}.mono{font-family:var(--mono)}
