@import "https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600&display=swap";:root{--color-primary:#3b82f6;--color-primary-hover:#2563eb;--color-primary-subtle:#3b82f614;--color-bg:#f1f5f9;--color-bg-alt:#e8edf3;--color-surface:#fff;--color-text:#0f172a;--color-text-light:#64748b;--color-border:#e2e8f0;--color-danger:#ef4444;--color-danger-hover:#dc2626;--shadow-sm:0 1px 3px 0 #0000000f;--shadow-md:0 4px 12px -2px #00000014, 0 2px 6px -2px #0000000d;--shadow-lg:0 10px 24px -4px #0000001f, 0 4px 8px -4px #0000000f;--radius-sm:.375rem;--radius-md:.5rem;--radius-lg:.875rem;--radius-xl:1.25rem;--ease:cubic-bezier(.4, 0, .2, 1)}[data-theme=dark]{--color-primary:#60a5fa;--color-primary-hover:#93c5fd;--color-primary-subtle:#60a5fa1f;--color-bg:#0f172a;--color-bg-alt:#1e293b;--color-surface:#1e293b;--color-text:#f1f5f9;--color-text-light:#94a3b8;--color-border:#334155;--shadow-sm:0 1px 3px 0 #0000004d;--shadow-md:0 4px 12px -2px #0006, 0 2px 6px -2px #0000004d;--shadow-lg:0 10px 24px -4px #00000080, 0 4px 8px -4px #0000004d}@media (prefers-color-scheme:dark){:root:not([data-theme=light]):not([data-theme=dark]){--color-primary:#60a5fa;--color-primary-hover:#93c5fd;--color-primary-subtle:#60a5fa1f;--color-bg:#0f172a;--color-bg-alt:#1e293b;--color-surface:#1e293b;--color-text:#f1f5f9;--color-text-light:#94a3b8;--color-border:#334155;--shadow-sm:0 1px 3px 0 #0000004d;--shadow-md:0 4px 12px -2px #0006, 0 2px 6px -2px #0000004d;--shadow-lg:0 10px 24px -4px #00000080, 0 4px 8px -4px #0000004d}}.flex-between{justify-content:space-between;align-items:center;display:flex}.flex-center{align-items:center;display:flex}.flex-col{flex-direction:column;display:flex}.flex-wrap{flex-wrap:wrap;display:flex}.gap-sm{gap:.5rem}.gap-md{gap:1rem}.mb-sm{margin-bottom:.5rem}.mb-md{margin-bottom:1rem}.mb-lg{margin-bottom:2rem}.mb-xl{margin-bottom:3rem}.mt-sm{margin-top:.5rem}.mt-auto{margin-top:auto}.pt-sm{padding-top:.5rem}.p-sm{padding:.5rem}.p-md{padding:1rem}.p-xl{padding:3rem}.w-full{width:100%}.border-top{border-top:1px solid var(--color-border)}.text-light{color:var(--color-text-light)}.text-center{text-align:center}.text-xs{font-size:.75rem}.text-sm{font-size:.875rem}.text-xl{font-size:1.25rem}.font-medium{font-weight:500}.font-bold{font-weight:700}.uppercase{text-transform:uppercase}.tracking-wider{letter-spacing:.05em}.line-clamp-2{-webkit-line-clamp:2;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.bg-glass{background-color:color-mix(in srgb, var(--color-surface) 70%, transparent);-webkit-backdrop-filter:blur(8px)}.btn{border-radius:var(--radius-md);cursor:pointer;transition:transform .15s var(--ease), box-shadow .2s var(--ease), background-color .2s var(--ease);border:none;justify-content:center;align-items:center;padding:.5rem 1rem;font-size:.875rem;font-weight:500;display:inline-flex}.btn-sm{padding:.35rem .75rem;font-size:.8125rem}.btn-primary{background-color:var(--color-primary);box-shadow:0 2px 8px -2px color-mix(in srgb, var(--color-primary) 50%, transparent);color:#fff!important}.btn-primary:hover{background-color:var(--color-primary-hover)}.btn-outline{color:var(--color-text);border:1px solid var(--color-border);background-color:#0000}.btn-outline:hover{background-color:var(--color-bg-alt)}.btn:active:not(:disabled){transform:scale(.97)}.btn:disabled{opacity:.6;cursor:not-allowed}.card{background:var(--color-surface);border-radius:var(--radius-md);box-shadow:var(--shadow-md);border:1px solid var(--color-border);cursor:default;padding:1.5rem;transition:transform .2s,box-shadow .2s}.card.hoverable:hover{transform:translateY(-2px);box-shadow:0 10px 15px -3px #0000001a,0 4px 6px -4px #0000001a}.form-group{margin-bottom:1rem}.form-label{margin-bottom:.5rem;font-weight:500;display:block}.form-input{border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-surface);width:100%;color:var(--color-text);padding:.75rem;font-family:inherit;font-size:1rem;transition:border-color .2s,background .25s,color .25s}.form-input:focus{border-color:var(--color-primary);outline:none;box-shadow:0 0 0 3px #3b82f61a}.navbar{background-color:color-mix(in srgb, var(--color-surface) 85%, transparent);-webkit-backdrop-filter:blur(12px);border-bottom:1px solid var(--color-border);box-shadow:var(--shadow-sm);z-index:100;justify-content:space-between;align-items:center;padding:.875rem 2rem;transition:background-color .25s;display:flex;position:sticky;top:0}.navbar .nav-brand .brand-link{color:var(--color-text);letter-spacing:-.02em;font-size:1.2rem;font-weight:700}.navbar .nav-links{align-items:center;gap:.75rem;display:flex}.navbar .nav-links .nav-profile-link{color:var(--color-text-light);font-size:.875rem;font-weight:500;text-decoration:none;transition:color .2s}.navbar .nav-links .nav-profile-link:hover{color:var(--color-primary)}.auth-container{justify-content:center;align-items:center;min-height:60vh;display:flex}.auth-card{width:100%;max-width:400px}.auth-btn{width:100%;margin-top:1rem}.auth-footer{text-align:center;margin-top:1rem;font-size:.875rem}.grid{gap:1.5rem;display:grid}.grid.grid-albums{grid-template-columns:repeat(auto-fill,minmax(280px,1fr))}.grid.grid-photos{column-count:3;column-gap:1rem;display:block}@media (width<=900px){.grid.grid-photos{column-count:2}}@media (width<=540px){.grid.grid-photos{column-count:1}}.album-card{color:inherit;cursor:pointer;flex-direction:column;gap:.5rem;height:100%;text-decoration:none;display:flex}.album-card .album-link{color:inherit;flex-direction:column;flex:1;gap:.5rem;text-decoration:none;display:flex}.photo-card{break-inside:avoid;width:100%;margin-bottom:1rem;padding:.5rem;display:inline-block}.photo-img{object-fit:contain;border-radius:var(--radius-md);cursor:pointer;opacity:0;width:100%;height:auto;min-height:8rem;transition:opacity .35s;display:block}.photo-img.loaded{opacity:1;background:0 0;animation:none}.photo-img:hover.loaded{opacity:.9}@keyframes shimmer{0%{background-position:-400px 0}to{background-position:400px 0}}.skeleton-shimmer{background-image:linear-gradient(90deg, var(--color-bg-alt) 25%, var(--color-border) 37%, var(--color-bg-alt) 63%);background-size:800px 100%;animation:1.4s ease-in-out infinite shimmer}.skeleton-card{pointer-events:none}.skeleton-line{border-radius:var(--radius-sm);height:.85rem;margin-bottom:.6rem}.skeleton-line:last-child{margin-bottom:0}@keyframes gridReveal{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}.grid-reveal{animation:gridReveal .45s var(--ease)}.badge{background:var(--color-border);border-radius:var(--radius-md);align-self:flex-start;padding:.2rem .5rem;font-size:.75rem}.error-msg{color:var(--color-danger);margin-top:.5rem;font-size:.875rem}.empty-state{text-align:center;border:1px dashed var(--color-border);border-radius:var(--radius-lg);color:var(--color-text-light);padding:3rem 1.5rem}.empty-state .empty-state-icon{opacity:.7;margin-bottom:.75rem;font-size:2rem}.author-link{color:var(--color-text-light);margin-top:.25rem;text-decoration:none;transition:color .2s;display:inline-block}.author-link:hover{color:var(--color-primary)}.folder-tabs{border-top:1px solid var(--color-border);flex-wrap:wrap;gap:.5rem;padding-top:1rem;display:flex}.folder-tab{border:1px solid var(--color-border);border-radius:var(--radius-md);cursor:pointer;color:var(--color-text);background:0 0;padding:.35rem .85rem;font-size:.875rem;transition:all .2s}.folder-tab:hover{background:var(--color-bg)}.folder-tab.active{background:var(--color-primary);color:#fff;border-color:var(--color-primary)}.album-card{flex-direction:column;display:flex;overflow:hidden;padding:0!important}.album-card .album-preview{background:var(--color-bg-alt);height:180px;position:relative;overflow:hidden}.album-card .album-preview img{object-fit:cover;width:100%;height:100%;transition:transform .3s}.album-card .album-preview .album-preview-img{opacity:0;transition:opacity .35s,transform .3s}.album-card .album-preview .album-preview-img.loaded{opacity:1}.album-card .album-preview .album-placeholder{width:100%;height:100%;color:var(--color-text-light);justify-content:center;align-items:center;font-size:2rem;display:flex}.album-card .album-info{flex-direction:column;flex:1;padding:1.25rem;display:flex}.album-card:hover .album-preview img{transform:scale(1.05)}.album-link{color:inherit;flex-direction:column;height:100%;text-decoration:none;display:flex}.btn-danger{background-color:var(--color-danger);color:#fff}.btn-danger:hover{background-color:var(--color-danger-hover)}.card-actions{gap:.5rem;margin-top:auto;padding-top:.5rem;display:flex}.card-actions .btn{flex:1;padding:.35rem .5rem;font-size:.75rem}.photo-card{position:relative}.photo-card .photo-overlay-actions{gap:.25rem;display:none;position:absolute;top:.5rem;right:.5rem}.photo-card:hover .photo-overlay-actions{display:flex}.photo-card .photo-action-btn{color:#fff;border-radius:var(--radius-md);cursor:pointer;background:#0009;border:none;padding:.25rem .5rem;font-size:.75rem;transition:background .2s}.photo-card .photo-action-btn:hover{background:#000000d9}.photo-card .photo-action-btn.danger{background:#ef4444cc}.photo-card .photo-action-btn.danger:hover{background:#dc2626f2}.lightbox-overlay{z-index:1000;cursor:zoom-out;background:#000000e6;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.lightbox-overlay .lightbox-stage{cursor:default;justify-content:center;align-items:center;width:min(90vw,1400px);height:85vh;display:flex;position:relative;overflow:hidden}.lightbox-overlay .lightbox-slide{will-change:transform;justify-content:center;align-items:center;display:flex;position:absolute;inset:0}.lightbox-overlay .lightbox-img{object-fit:contain;border-radius:var(--radius-md);cursor:default;opacity:1;max-width:100%;max-height:100%;transition:opacity .25s;box-shadow:0 25px 50px #00000080}.lightbox-overlay .lightbox-img.is-loading{opacity:0}.lightbox-overlay .lightbox-spinner{z-index:2;pointer-events:none;justify-content:center;align-items:center;display:flex;position:absolute;inset:0}.lightbox-overlay .spinner-ring{border:3px solid #ffffff40;border-top-color:#fff;border-radius:50%;width:3rem;height:3rem;animation:.8s linear infinite spin}.lightbox-overlay .lightbox-close{color:#fff;cursor:pointer;background:#ffffff26;border:none;border-radius:50%;justify-content:center;align-items:center;width:2.5rem;height:2.5rem;font-size:1.5rem;transition:background .2s;display:flex;position:absolute;top:1.5rem;right:1.5rem}.lightbox-overlay .lightbox-close:hover{background:#ffffff4d}.lightbox-overlay .lightbox-prev,.lightbox-overlay .lightbox-next{color:#fff;border-radius:var(--radius-lg);cursor:pointer;width:3rem;height:5rem;transition:background .2s, transform .15s var(--ease);-webkit-user-select:none;user-select:none;background:#ffffff1f;border:none;justify-content:center;align-items:center;font-size:2.5rem;line-height:1;display:flex;position:absolute;top:50%;transform:translateY(-50%)}.lightbox-overlay .lightbox-prev:hover,.lightbox-overlay .lightbox-next:hover{background:#ffffff40}.lightbox-overlay .lightbox-prev:active,.lightbox-overlay .lightbox-next:active{transform:translateY(-50%)scale(.92)}.lightbox-overlay .lightbox-prev{left:1.25rem}.lightbox-overlay .lightbox-next{right:1.25rem}.lightbox-overlay .lightbox-caption{color:#fff;opacity:.8;font-size:1rem;position:absolute;bottom:2rem}@keyframes spin{to{transform:rotate(360deg)}}.slide-next-enter-active,.slide-prev-enter-active{transition:transform .45s cubic-bezier(.22,1,.36,1)}.slide-next-leave-active,.slide-prev-leave-active{transition:transform .22s cubic-bezier(.4,0,1,1),opacity .18s}.slide-next-enter-from{transform:translate(45%)}.slide-next-leave-to{opacity:0;transform:translate(-45%)}.slide-prev-enter-from{transform:translate(-45%)}.slide-prev-leave-to{opacity:0;transform:translate(45%)}.modal-overlay{z-index:900;background:#00000080;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.modal-overlay .modal-card{background:var(--color-surface);border-radius:var(--radius-lg);width:100%;max-width:480px;box-shadow:var(--shadow-md);padding:2rem}.modal-overlay .modal-card h3{margin-bottom:1.5rem}.modal-overlay .modal-card .modal-actions{justify-content:flex-end;gap:.75rem;margin-top:1.5rem;display:flex}*{box-sizing:border-box;margin:0;padding:0}body{-webkit-font-smoothing:antialiased;color:var(--color-text);background-color:var(--color-bg);font-family:Inter,system-ui,sans-serif;font-size:16px;line-height:1.5;transition:background-color .25s,color .25s}h1,h2,h3,h4{margin-bottom:1rem;font-weight:600}a{color:var(--color-primary);text-decoration:none;transition:color .2s}a:hover{color:var(--color-primary-hover)}#app{flex-direction:column;min-height:100vh;display:flex}.main-content{flex:1;width:100%;max-width:1200px;margin:0 auto;padding:2rem}
