:root{--text:#2a2a2a;--text-muted:#6b6b6b;--bg:#fafaf7;--border:#e8e6df;--accent:#c8553d;--sans:ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;--serif:ui-serif, Georgia, "Times New Roman", serif;font:16px/1.5 var(--sans);color:var(--text);background:var(--bg);--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light dark;-webkit-font-smoothing:antialiased}@media (prefers-color-scheme:dark){:root{--lightningcss-light: ;--lightningcss-dark:initial;--text:#e8e6df;--text-muted:#9b9b9b;--bg:#1a1916;--border:#2e2c28;--accent:#e07a64}}*{box-sizing:border-box}body,html,#root{min-height:100vh;margin:0;padding:0}h1,h2,h3{font-family:var(--serif);color:var(--text);margin:0;font-weight:500}.auth-screen{flex-direction:column;justify-content:center;align-items:center;gap:1rem;min-height:100vh;padding:2rem;display:flex}.auth-screen h1{font-family:var(--serif);letter-spacing:-.02em;margin:0;font-size:3.5rem}.auth-screen .tagline{color:var(--text-muted);margin:0 0 2rem;font-style:italic}.home{flex-direction:column;min-height:100vh;display:flex}.home-header{border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;padding:1rem 2rem;display:flex}.home-header .brand{font-family:var(--serif);letter-spacing:-.01em;font-size:1.75rem}.home-main{text-align:center;flex-direction:column;flex:1;justify-content:center;align-items:center;gap:.5rem;padding:2rem;display:flex}.home-main h2{font-size:2rem}.home-main p{color:var(--text-muted)}.home-main .loaded-from{opacity:.7;margin-top:1rem;font-size:.85rem;font-style:italic}.home-main .error{color:var(--accent);text-align:center;max-width:32rem}.home-main .error code{background:#0000000d;border-radius:3px;padding:.1rem .3rem;font-family:ui-monospace,Consolas,monospace}.muted{color:var(--text-muted)}.empty-state{text-align:center;flex-direction:column;align-items:center;gap:1rem;max-width:28rem;display:flex}.empty-state h2{margin:0;font-size:2rem}.albums-section{width:100%;max-width:56rem;margin:0 auto}.albums-header{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:1rem;margin-bottom:1.5rem;display:flex}.albums-header h2{margin:0;font-size:1.75rem}.album-list{grid-template-columns:repeat(auto-fill,minmax(16rem,1fr));gap:1rem;margin:0;padding:0;list-style:none;display:grid}.album-card{border:1px solid var(--border);background:var(--bg);cursor:pointer;color:inherit;border-radius:8px;padding:1.25rem;text-decoration:none;transition:border-color .15s,transform .15s;display:block}.album-card:hover{border-color:var(--accent);transform:translateY(-2px)}.album-card h3{font-family:var(--serif);margin:0 0 .4rem;font-size:1.3rem}.album-card p{margin:0;font-size:.9rem}.create-album-form{flex-wrap:wrap;align-items:center;gap:.5rem;display:flex}.create-album-form input{border:1px solid var(--border);min-width:12rem;font:inherit;background:var(--bg);color:var(--text);border-radius:6px;flex:1;padding:.55rem .75rem}.create-album-form input:focus{border-color:var(--accent);outline:none}.create-album-form .error{flex:100%;margin:.3rem 0 0;font-size:.9rem}.btn{font:inherit;cursor:pointer;border:1px solid #0000;border-radius:6px;padding:.55rem 1rem;transition:background .15s,border-color .15s}.btn:disabled{opacity:.5;cursor:not-allowed}.btn-primary{background:var(--accent);color:#fff}.btn-primary:hover:not(:disabled){filter:brightness(.95)}.btn-ghost{border-color:var(--border);color:var(--text);background:0 0}.btn-ghost:hover:not(:disabled){border-color:var(--accent);color:var(--accent)}.btn-danger{color:#fff;background:#c8553d}.btn-danger:hover:not(:disabled){filter:brightness(.95)}.btn-danger-ghost{color:#ffffffb3;background:0 0;border-color:#fff3}.btn-danger-ghost:hover:not(:disabled){color:#fff;border-color:#ffffff80}.brand-link{color:inherit;text-decoration:none}.breadcrumb{width:100%;max-width:56rem;margin:0 auto 1rem}.breadcrumb a{color:var(--text-muted);font-size:.95rem;text-decoration:none}.breadcrumb a:hover{color:var(--accent)}.album-detail{width:100%;max-width:56rem;margin:0 auto}.album-detail h2{margin:0 0 .4rem;font-size:2.25rem}.placeholder{border:1px dashed var(--border);text-align:center;border-radius:8px;margin-top:3rem;padding:4rem 2rem}.album-detail-header{flex-wrap:wrap;justify-content:space-between;align-items:flex-start;gap:1rem;margin-bottom:2rem;display:flex}.album-detail-header h2{margin:0 0 .3rem;font-size:2.25rem}.album-detail-actions{flex-wrap:wrap;align-items:center;gap:.5rem;display:flex}.members-panel{border:1px solid var(--border);background:#00000004;border-radius:8px;flex-direction:column;gap:1.5rem;margin-bottom:2rem;padding:1.25rem 1.5rem;display:flex}.members-panel h3{font-family:var(--serif);margin:0 0 .75rem;font-size:1.15rem;font-weight:500}.member-list,.invite-list{flex-direction:column;gap:.4rem;margin:0;padding:0;list-style:none;display:flex}.member-row,.invite-row{border-radius:6px;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.75rem;padding:.6rem .5rem;transition:background .15s;display:flex}.member-row:hover,.invite-row:hover{background:#00000006}.member-info{flex:1;align-items:center;gap:.75rem;min-width:0;display:flex}.member-avatar{object-fit:cover;background:var(--border);border-radius:50%;flex-shrink:0;width:36px;height:36px}.member-avatar-placeholder{background:var(--accent);color:#fff;justify-content:center;align-items:center;font-weight:500;display:flex}.member-name{font-size:.95rem;font-weight:500}.member-email{word-break:break-all;font-size:.85rem}.member-actions{flex-wrap:wrap;align-items:center;gap:.4rem;display:flex}.member-actions select{border:1px solid var(--border);font:inherit;background:var(--bg);color:var(--text);border-radius:5px;padding:.35rem .6rem;font-size:.85rem}.role-badge{text-transform:lowercase;color:var(--text-muted);border:1px solid var(--border);border-radius:999px;padding:.2rem .55rem;font-size:.8rem}.member-row-error{flex:100%;margin:.3rem 0 0;font-size:.85rem}.btn-sm{padding:.35rem .7rem;font-size:.85rem}.invite-form{border:1px solid var(--border);background:#00000004;border-radius:8px;margin-bottom:2rem;padding:1.25rem}.invite-form-row{flex-wrap:wrap;align-items:stretch;gap:.5rem;display:flex}.invite-form-row input[type=email]{border:1px solid var(--border);font:inherit;background:var(--bg);color:var(--text);border-radius:6px;flex:2 14rem;padding:.55rem .75rem}.invite-form-row select{border:1px solid var(--border);font:inherit;background:var(--bg);color:var(--text);border-radius:6px;flex:0 9rem;padding:.55rem .75rem}.invite-form-row input:focus,.invite-form-row select:focus{border-color:var(--accent);outline:none}.invite-result{border-top:1px solid var(--border);margin-top:1rem;padding-top:1rem}.invite-link-row{gap:.5rem;margin-top:.5rem;display:flex}.invite-link-row input{border:1px solid var(--border);font:ui-monospace, Consolas, monospace;background:var(--bg);color:var(--text);border-radius:6px;flex:1;padding:.55rem .75rem;font-size:.85rem}.invite-card{border:1px solid var(--border);background:var(--bg);text-align:center;border-radius:12px;flex-direction:column;align-items:center;gap:1rem;max-width:32rem;padding:2rem;display:flex}.invite-card h2{margin:0;font-size:1.75rem}.invite-card p{margin:0;line-height:1.5}.invite-card em{color:var(--accent);font-style:normal;font-weight:500}.photo-grid{grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:.5rem;margin:0;padding:0;list-style:none;display:grid}.photo-grid-item{aspect-ratio:1;background:var(--border);border-radius:6px;position:relative;overflow:hidden}.photo-grid-item img,.photo-grid-item .auth-image-loading,.photo-grid-item .auth-image-error{object-fit:cover;cursor:pointer;width:100%;height:100%;transition:transform .2s;display:block}.photo-grid-item img:hover{transform:scale(1.03)}.auth-image-loading{background:linear-gradient(90deg, var(--border) 0%, #c8553d14 50%, var(--border) 100%);background-size:200% 100%;animation:1.4s ease-in-out infinite shimmer}.auth-image-error{color:var(--text-muted);text-align:center;background:var(--border);justify-content:center;align-items:center;padding:.5rem;font-size:.8rem;display:flex}@keyframes shimmer{0%{background-position:200% 0}to{background-position:-200% 0}}.upload-button{position:relative}.upload-error{max-width:22rem;margin-top:.3rem;font-size:.85rem;position:absolute;top:100%;right:0}.lightbox{z-index:1000;background:#0a0a0cf5;position:fixed;inset:0;overflow:hidden}.lightbox-stage{cursor:pointer;font:inherit;color:inherit;background:0 0;border:0;justify-content:center;align-items:center;margin:0;padding:0;display:flex;position:absolute;inset:0}.lightbox-image,.lightbox-stage .auth-image-loading,.lightbox-stage .auth-image-error{object-fit:contain;width:auto;max-width:100vw;height:auto;max-height:100vh}.lightbox-stage .auth-image-loading{border-radius:8px;width:70vmin;height:70vmin}.lightbox-stage .auth-image-error{color:#fff;background:#ffffff1a;border-radius:8px;width:auto;padding:2rem 3rem}.lightbox-chrome{pointer-events:none;z-index:1;transition:opacity .2s;position:absolute;inset:0}.lightbox-chrome.visible{opacity:1}.lightbox-chrome.hidden{opacity:0}.lightbox-chrome.visible>*{pointer-events:auto}.lightbox-close,.lightbox-nav{-webkit-backdrop-filter:blur(8px);color:#fff;cursor:pointer;font:inherit;background:#1414168c;border:1px solid #ffffff26;transition:background .15s;position:absolute}.lightbox-close:hover,.lightbox-nav:hover{background:#28282cbf}.lightbox-close{top:max(env(safe-area-inset-top), 1rem);right:max(env(safe-area-inset-right), 1rem);border-radius:50%;width:2.75rem;height:2.75rem;font-size:1.1rem}.lightbox-nav{width:3rem;height:3rem;font-size:2rem;line-height:1;font-family:var(--serif);border-radius:50%;top:50%;transform:translateY(-50%)}.lightbox-prev{left:max(env(safe-area-inset-left), 1rem)}.lightbox-next{right:max(env(safe-area-inset-right), 1rem)}.lightbox-caption{padding:2rem 1.25rem max(env(safe-area-inset-bottom), 1.25rem);color:#fff;text-align:center;background:linear-gradient(#0000 0%,#00000080 60%,#000000bf 100%);position:absolute;bottom:0;left:0;right:0}.lightbox-filename{opacity:.9;margin:0 0 .25rem;font-size:.95rem}.lightbox-caption .muted{color:#ffffffa6;margin:0;font-size:.85rem}.lightbox-actions{flex-wrap:wrap;justify-content:center;align-items:center;gap:.6rem;margin-top:1rem;display:flex}.lightbox-actions .btn-ghost{color:#fffc;background:#0003;border-color:#ffffff40}.lightbox-actions .btn-ghost:hover:not(:disabled){color:#fff;border-color:#ffffff80}@media (width<=640px){.lightbox-close{width:2.5rem;height:2.5rem}.lightbox-nav{width:2.75rem;height:2.75rem;font-size:1.75rem}}
