@import "https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&display=swap";:root{--bg-app:#0f1115;--bg-sidebar:#14161c99;--bg-card:#1e2128b3;--bg-input:#ffffff0d;--bg-hover:#ffffff0a;--bg-header:#12141a;--accent-primary:#6366f1;--accent-primary-hover:#818cf8;--accent-glow:#6366f166;--accent-success:#22c55e;--accent-warning:#f59e0b;--accent-danger:#ef4444;--accent-favorite:#f43f5e;--text-primary:#f8fafc;--text-secondary:#94a3b8;--text-muted:#64748b;--border-subtle:#ffffff14;--border-input:#ffffff1f;--glass-blur:blur(16px);--glass-border:1px solid #ffffff1a;--sidebar-width:260px;--sidebar-collapsed-width:72px;--header-height:64px;--radius-sm:6px;--radius-md:10px;--radius-lg:16px;--transition-fast:.15s ease;--transition-normal:.25s ease}*{box-sizing:border-box;margin:0;padding:0}body{color:var(--text-primary);background:var(--bg-app);-webkit-font-smoothing:antialiased;font-family:Inter,-apple-system,BlinkMacSystemFont,sans-serif;font-size:14px;line-height:1.5;overflow-x:hidden}a{color:inherit;text-decoration:none}button{cursor:pointer;background:0 0;border:none;font-family:inherit}.glass-panel{background:var(--bg-card);-webkit-backdrop-filter:var(--glass-blur);border:var(--glass-border)}.sidebar{background:var(--bg-header);border-right:1px solid var(--border-subtle);height:100vh;transition:padding var(--transition-normal);flex-direction:column;padding:1.5rem 1rem;display:flex;position:sticky;top:0}.app-layout.collapsed .sidebar{align-items:center;padding:1.5rem .5rem}.sidebar-header{justify-content:space-between;align-items:center;margin-bottom:2.5rem;display:flex;position:relative}.logo-container{align-items:center;gap:.75rem;display:flex}.logo-icon{background:linear-gradient(135deg, var(--accent-primary), #818cf8);width:28px;height:28px;box-shadow:0 0 15px var(--accent-glow);border-radius:8px;flex-shrink:0}.logo-text{letter-spacing:-.5px;font-size:1.25rem;font-weight:600}.collapse-btn{background:var(--bg-input);width:24px;height:24px;color:var(--text-secondary);border:var(--glass-border);transition:all var(--transition-fast);border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;display:flex}.app-layout.collapsed .collapse-btn{z-index:10;position:absolute;top:50%;right:-12px;transform:translateY(-50%)}.collapse-btn:hover{background:var(--bg-hover);color:var(--text-primary)}.sidebar-nav{flex-direction:column;flex:1;gap:.5rem;width:100%;display:flex}.nav-item{border-radius:var(--radius-md);color:var(--text-secondary);transition:all var(--transition-fast);white-space:nowrap;align-items:center;gap:1rem;padding:.75rem 1rem;font-weight:500;display:flex}.app-layout.collapsed .nav-item{justify-content:center;padding:.75rem}.nav-item:hover{background:var(--bg-hover);color:var(--text-primary)}.nav-item.active{color:var(--accent-primary-hover);background:#6366f126}.sidebar-footer{border-top:var(--glass-border);justify-content:space-between;align-items:center;width:100%;margin-top:auto;padding-top:1.5rem;display:flex}.app-layout.collapsed .sidebar-footer{border-top:none;flex-direction:column;gap:1rem;padding-top:0}.user-profile{align-items:center;gap:.75rem;display:flex}.avatar{background:var(--bg-input);border:var(--glass-border);border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;width:32px;height:32px;font-size:.875rem;font-weight:600;display:flex}.user-name{white-space:nowrap;font-size:.875rem;font-weight:500}.settings-btn{color:var(--text-secondary);transition:color var(--transition-fast);flex-shrink:0}.settings-btn:hover{color:var(--text-primary)}@media (width<=640px){.collapse-btn{display:none}}.app-layout{grid-template-columns:var(--sidebar-width) 1fr;min-height:100vh;transition:grid-template-columns var(--transition-normal);display:grid}.app-layout.collapsed{grid-template-columns:var(--sidebar-collapsed-width) 1fr}.main-content{height:100vh;position:relative;overflow:hidden auto}.btn{border-radius:var(--radius-md);transition:all var(--transition-fast);white-space:nowrap;justify-content:center;align-items:center;gap:.5rem;font-weight:500;display:inline-flex}.btn:disabled{opacity:.6;cursor:not-allowed}.btn-icon{align-items:center;display:inline-flex}.btn-primary{background:linear-gradient(135deg, var(--accent-primary), var(--accent-primary-hover));color:#fff;box-shadow:0 4px 12px var(--accent-glow)}.btn-primary:hover:not(:disabled){box-shadow:0 6px 16px var(--accent-glow);transform:translateY(-1px)}.btn-primary:active:not(:disabled){transform:translateY(1px)}.btn-ghost{color:var(--text-primary);border:var(--glass-border);background:0 0}.btn-ghost:hover:not(:disabled){background:var(--bg-hover)}.btn-danger{color:var(--accent-danger);background:#ef44441a;border:1px solid #ef444433}.btn-danger:hover:not(:disabled){background:#ef444433}.btn-warning{color:var(--accent-warning);background:#f59e0b1a;border:1px solid #f59e0b40}.btn-warning:hover:not(:disabled){background:#f59e0b33}.btn-warning:active:not(:disabled){transform:translateY(1px)}.btn-sm{padding:.375rem .75rem;font-size:.875rem}.btn-md{padding:.5rem 1rem;font-size:.875rem}.btn-lg{padding:.75rem 1.5rem;font-size:1rem}.modal-overlay{z-index:200;animation:modal-overlay-in var(--transition-normal) ease both;background:#0a0b0eb3;justify-content:center;align-items:center;padding:2rem;display:flex;position:fixed;inset:0}@keyframes modal-overlay-in{0%{opacity:0}to{opacity:1}}.modal-card{border-radius:var(--radius-lg);width:100%;max-width:420px;animation:modal-card-in var(--transition-normal) cubic-bezier(.34, 1.15, .64, 1) both;padding:1.5rem;box-shadow:0 24px 60px #00000080}@keyframes modal-card-in{0%{opacity:0;transform:translateY(10px)scale(.98)}to{opacity:1;transform:translateY(0)scale(1)}}.modal-header{justify-content:space-between;align-items:center;margin-bottom:1.25rem;display:flex}.modal-title{font-size:1.125rem;font-weight:600}.modal-close{width:30px;height:30px;color:var(--text-secondary);transition:background var(--transition-fast), color var(--transition-fast);border-radius:50%;justify-content:center;align-items:center;display:flex}.modal-close:hover{background:var(--bg-hover);color:var(--text-primary)}.modal-label{color:var(--text-secondary);margin-bottom:.5rem;font-size:.8125rem;font-weight:500;display:block}.modal-input{border:1px solid var(--border-input);border-radius:var(--radius-md);background:var(--bg-input);width:100%;color:var(--text-primary);transition:border-color var(--transition-fast), background var(--transition-fast);outline:none;padding:.625rem .875rem;font-family:inherit;font-size:.9375rem}.modal-input:focus{border-color:var(--accent-primary);background:#6366f10f}.modal-input::placeholder{color:var(--text-muted)}.modal-error{color:var(--accent-danger);margin-top:.75rem;font-size:.8125rem}.modal-actions{justify-content:flex-end;gap:.75rem;margin-top:1.5rem;display:flex}.confirm-overlay{z-index:200;animation:confirm-overlay-in var(--transition-normal) ease both;background:#0a0b0eb3;justify-content:center;align-items:center;padding:2rem;display:flex;position:fixed;inset:0}@keyframes confirm-overlay-in{0%{opacity:0}to{opacity:1}}.confirm-dialog{border-radius:var(--radius-lg);width:100%;max-width:400px;animation:confirm-dialog-in var(--transition-normal) cubic-bezier(.34, 1.15, .64, 1) both;outline:none;flex-direction:column;align-items:center;gap:1rem;padding:1.75rem 1.5rem 1.5rem;display:flex;box-shadow:0 24px 60px #00000080}@keyframes confirm-dialog-in{0%{opacity:0;transform:translateY(10px)scale(.98)}to{opacity:1;transform:translateY(0)scale(1)}}.confirm-icon-wrap{border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;width:52px;height:52px;display:flex}.confirm-icon-wrap--danger{background:#ef44441a;border:1px solid #ef444433}.confirm-icon-wrap--warning{background:#f59e0b1a;border:1px solid #f59e0b40}.confirm-icon--danger{color:var(--accent-danger)}.confirm-icon--warning{color:var(--accent-warning)}.confirm-body{text-align:center;flex-direction:column;gap:.5rem;display:flex}.confirm-title{color:var(--text-primary);font-size:1.125rem;font-weight:600;line-height:1.3}.confirm-message{color:var(--text-secondary);font-size:.875rem;line-height:1.6}.confirm-message strong{color:var(--text-primary);font-weight:600}.confirm-actions{justify-content:flex-end;gap:.75rem;width:100%;margin-top:.5rem;display:flex}.lightbox{z-index:200;background:#08090c;flex-direction:row;display:flex;position:fixed;inset:0}.lb-viewer{flex-direction:column;flex:1;min-width:0;display:flex;overflow:hidden}.lb-toolbar{height:var(--header-height);background:var(--bg-header);border-bottom:1px solid var(--border-subtle);flex-shrink:0;align-items:center;gap:.75rem;padding:0 1.25rem;display:flex}.lb-toolbar-meta{flex-direction:column;flex:1;gap:.125rem;min-width:0;display:flex}.lb-filename{color:var(--text-primary);white-space:nowrap;text-overflow:ellipsis;font-size:.9375rem;font-weight:600;overflow:hidden}.lb-date{color:var(--text-secondary);font-size:.75rem}.lb-toolbar-actions{align-items:center;gap:.25rem;display:flex}.lb-icon-btn{background:var(--bg-input);border:1px solid var(--border-input);width:36px;height:36px;color:var(--text-secondary);transition:background var(--transition-fast), color var(--transition-fast), border-color var(--transition-fast);border-radius:50%;justify-content:center;align-items:center;display:flex}.lb-icon-btn:hover{background:var(--bg-hover);color:var(--text-primary)}.lb-icon-btn--active{color:var(--accent-primary-hover);background:#6366f126;border-color:#6366f14d}.lb-icon-btn--active:hover{color:var(--accent-primary-hover);background:#6366f138}.lb-icon-btn--danger:hover{color:var(--accent-danger);background:#ef44441f;border-color:#ef444440}.lb-stage{flex:1;justify-content:center;align-items:center;min-height:0;display:flex;position:relative;overflow:hidden}.lb-image{object-fit:contain;-webkit-user-select:none;user-select:none;width:100%;height:100%;animation:.18s both lb-image-in}@keyframes lb-image-in{0%{opacity:0}to{opacity:1}}.lb-nav{z-index:10;width:40px;height:40px;color:var(--text-primary);-webkit-backdrop-filter:blur(8px);transition:background var(--transition-fast), opacity var(--transition-fast);background:#0f1115b3;border:1px solid #ffffff1f;border-radius:50%;justify-content:center;align-items:center;display:flex;position:absolute;top:50%;transform:translateY(-50%)}.lb-nav--prev{left:1rem}.lb-nav--next{right:1rem}.lb-nav:hover:not(:disabled){background:#1e2128e6}.lb-nav--hidden{opacity:0;pointer-events:none}.lb-filmstrip{background:var(--bg-header);border-top:1px solid var(--border-subtle);scroll-behavior:smooth;scrollbar-width:none;flex-shrink:0;align-items:center;gap:4px;padding:12px 1.25rem;display:flex;overflow-x:auto}.lb-filmstrip::-webkit-scrollbar{display:none}.lb-thumb{border-radius:var(--radius-sm);opacity:.55;width:60px;height:60px;transition:opacity var(--transition-fast), border-color var(--transition-fast);border:2px solid #0000;flex-shrink:0;padding:0;overflow:hidden}.lb-thumb img{object-fit:cover;pointer-events:none;width:100%;height:100%;display:block}.lb-thumb:hover{opacity:.85}.lb-thumb--active{border-color:var(--accent-primary);opacity:1}.lb-info{border-left:1px solid var(--border-subtle);background:var(--bg-header);scrollbar-width:thin;scrollbar-color:var(--border-subtle) transparent;flex-direction:column;flex-shrink:0;gap:0;width:280px;padding:1.25rem 1.25rem 2rem;display:flex;overflow-y:auto}.lb-info-heading{color:var(--text-primary);margin-bottom:1.25rem;font-size:.9375rem;font-weight:600}.lb-info-row{border-bottom:1px solid var(--border-subtle);align-items:flex-start;gap:.75rem;padding:.625rem 0;display:flex}.lb-info-row:last-of-type{border-bottom:none}.lb-info-icon{color:var(--text-muted);flex-shrink:0;margin-top:2px}.lb-info-primary{color:var(--text-primary);word-break:break-word;font-size:.8125rem;font-weight:500;line-height:1.4}.lb-info-secondary{color:var(--text-secondary);margin-top:.125rem;font-size:.75rem;line-height:1.4}.lb-info-section{flex-direction:column;gap:.625rem;margin-top:1.25rem;display:flex}.lb-info-section-label{letter-spacing:.07em;text-transform:uppercase;color:var(--text-muted);align-items:center;gap:.375rem;font-size:.6875rem;font-weight:600;display:flex}.lb-map-placeholder{border-radius:var(--radius-md);border:1px dashed var(--border-subtle);background:#ffffff08;justify-content:center;align-items:center;width:100%;height:110px;display:flex}.lb-map-label{color:var(--text-muted);font-size:.6875rem;font-style:italic}.lb-info-location{color:var(--text-secondary);font-size:.8125rem}.lb-chips{flex-wrap:wrap;gap:.375rem;display:flex}.lb-chip{cursor:pointer;transition:background var(--transition-fast), border-color var(--transition-fast);border-radius:999px;align-items:center;padding:.25rem .625rem;font-family:inherit;font-size:.75rem;font-weight:500;display:inline-flex}.lb-chip--filled{color:var(--accent-primary-hover);background:#6366f126;border:1px solid #6366f140}.lb-chip--filled:hover{background:#6366f138}.lb-chip--add{border:1px solid var(--border-input);color:var(--text-secondary);background:0 0}.lb-chip--add:hover{background:var(--bg-hover);color:var(--text-primary)}.lb-toolbar-meta-mobile,.lb-mobile-overflow,.lb-mobile-actions,.lb-sheet-handle,.lb-info--hidden{display:none}@media (width<=640px){.lightbox{flex-direction:column}.lb-toolbar{background:0 0;border-bottom:none;padding:0 .75rem}.lb-toolbar-meta-desktop{display:none}.lb-toolbar-meta-mobile{flex-direction:column;align-items:center;gap:.0625rem;display:flex}.lb-toolbar-day{color:var(--text-primary);font-size:.875rem;font-weight:600}.lb-toolbar-time{color:var(--text-secondary);font-size:.75rem}.lb-toolbar-actions{display:none}.lb-mobile-overflow{background:var(--bg-input);border:1px solid var(--border-input);width:36px;height:36px;color:var(--text-secondary);border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;display:flex}.lb-mobile-overflow:hover{background:var(--bg-hover);color:var(--text-primary)}.lb-nav,.lb-filmstrip{display:none}.lb-mobile-actions{background:#08090c;flex-shrink:0;justify-content:space-around;padding:.625rem .5rem;display:flex}.lb-mobile-action{color:var(--text-secondary);flex-direction:column;align-items:center;gap:.25rem;padding:.25rem .75rem;font-size:.6875rem;font-weight:500;display:flex}.lb-mobile-action--active{color:var(--accent-primary-hover)}.lb-mobile-action--danger{color:var(--accent-danger)}.lb-info{border-left:none;border-top:1px solid var(--border-subtle);border-radius:var(--radius-lg) var(--radius-lg) 0 0;width:auto;max-height:32vh;padding:.5rem 1.25rem calc(1rem + env(safe-area-inset-bottom,0px));transition:max-height var(--transition-normal);flex-shrink:0;overflow-y:auto}.lb-info--expanded{max-height:60vh}.lb-info-heading{display:none}.lb-sheet-handle{background:var(--border-input);border:none;border-radius:999px;flex-shrink:0;width:36px;height:4px;margin:0 auto .75rem;padding:0;display:block}.lb-info-row--collapsible,.lb-info-section--collapsible{display:none}.lb-info--expanded .lb-info-row--collapsible,.lb-info--expanded .lb-info-section--collapsible{display:flex}}.album-members{display:flex}.album-avatar{border:2px solid var(--bg-header);width:28px;height:28px;color:var(--text-primary);letter-spacing:.02em;background:#2a2f3a;border-radius:50%;justify-content:center;align-items:center;font-size:.625rem;font-weight:600;display:flex}.album-avatar:not(:first-child){margin-left:-8px}.album-avatar-overflow{background:var(--accent-primary);color:#fff}.empty-state{text-align:center;border:1px dashed var(--border-input);border-radius:var(--radius-lg);flex-direction:column;justify-content:center;align-items:center;gap:.5rem;padding:4rem 2rem;display:flex}.empty-state-icon{border-radius:var(--radius-lg);width:64px;height:64px;color:var(--accent-primary-hover);background:#6366f11f;justify-content:center;align-items:center;margin-bottom:.5rem;display:flex}.empty-state-title{font-size:1.125rem;font-weight:600}.empty-state-message{max-width:340px;color:var(--text-secondary);font-size:.875rem}.empty-state-action{margin-top:1rem}.photo-cell{aspect-ratio:1;border-radius:var(--radius-md);cursor:pointer;transition:padding var(--transition-fast), background var(--transition-fast);position:relative}.photo-cell.selected{background:#6366f124;padding:8px}.photo-cell-image{object-fit:cover;border-radius:var(--radius-sm);background:var(--bg-input);width:100%;height:100%;display:block}.photo-cell-checkbox{color:#fff;width:22px;height:22px;transition:background var(--transition-fast), border-color var(--transition-fast);background:#0f111559;border:1.5px solid #ffffff8c;border-radius:50%;justify-content:center;align-items:center;padding:0;display:flex;position:absolute;top:10px;left:10px}.photo-cell:hover .photo-cell-checkbox{border-color:#ffffffd9}.photo-cell.selected .photo-cell-checkbox{background:var(--accent-primary);border-color:var(--accent-primary)}.photo-cell-favorite{color:var(--accent-favorite);filter:drop-shadow(0 1px 3px #0000008c);pointer-events:none;display:flex;position:absolute;top:10px;right:10px}.timeline{padding:1.5rem 4rem 3rem 2rem}@media (width<=640px){.timeline{padding:1rem}.day-grid{gap:4px}}.day-group+.day-group{margin-top:2rem}.day-header{align-items:baseline;gap:.625rem;margin-bottom:.75rem;display:flex}.day-title{color:var(--text-primary);font-size:.9375rem;font-weight:600}.day-location{color:var(--text-secondary);font-size:.8125rem}.day-grid{grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:8px;display:grid}.album-detail{flex-direction:column;height:100vh;display:flex}.album-detail-toolbar{min-height:var(--header-height);background:var(--bg-header);border-bottom:1px solid var(--border-subtle);flex-wrap:wrap;flex-shrink:0;align-items:center;gap:.75rem 1rem;padding:.75rem 2rem;display:flex}.album-detail-back{background:var(--bg-input);border:1px solid var(--border-input);width:36px;height:36px;color:var(--text-secondary);transition:background var(--transition-fast), color var(--transition-fast);border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;display:flex}.album-detail-back:hover{background:var(--bg-hover);color:var(--text-primary)}.album-detail-titles{min-width:0}.album-detail-name{letter-spacing:-.01em;text-overflow:ellipsis;white-space:nowrap;font-size:1.125rem;font-weight:600;overflow:hidden}.album-detail-sub{color:var(--text-secondary);font-size:.8125rem}.album-detail-actions{flex-wrap:wrap;align-items:center;gap:.625rem;margin-left:auto;display:flex}.album-detail-overflow{border-radius:var(--radius-md);width:34px;height:34px;color:var(--text-secondary);border:1px solid var(--border-input);transition:background var(--transition-fast), color var(--transition-fast);flex-shrink:0;justify-content:center;align-items:center;display:flex}.album-detail-overflow:hover{background:var(--bg-hover);color:var(--text-primary)}.album-detail-body{flex:1;min-height:0;overflow-y:auto}.album-hero{border-radius:var(--radius-lg);background:var(--bg-input);height:220px;margin:1.5rem 2rem 0;position:relative;overflow:hidden}.album-hero-image{object-fit:cover;width:100%;height:100%}.album-hero-overlay{background:linear-gradient(#0000 38%,#08090ccc);justify-content:space-between;align-items:flex-end;gap:1rem;padding:1.5rem;display:flex;position:absolute;inset:0}.album-hero-title{letter-spacing:-.02em;font-size:1.75rem;font-weight:700}.album-hero-caption{color:#f8fafcd9;margin-top:.25rem;font-size:.875rem}.album-hero-slideshow{border-radius:var(--radius-md);color:var(--text-primary);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);transition:background var(--transition-fast);background:#0f111599;border:1px solid #fff3;flex-shrink:0;align-items:center;gap:.4rem;padding:.5rem .875rem;font-size:.8125rem;font-weight:500;display:flex}.album-hero-slideshow:hover{background:#0f1115cc}.album-detail-status{color:var(--text-secondary);padding:2rem}.album-detail-status-error{color:var(--accent-danger)}.album-detail-placeholder{padding:2rem}@media (width<=640px){.album-detail-toolbar{padding:.75rem 1rem}.album-detail-actions .album-members{display:none}.album-hero{height:160px;margin:1rem 1rem 0}.album-hero-title{font-size:1.375rem}.album-hero-overlay{flex-wrap:wrap;padding:1rem}.album-detail-placeholder{padding:1rem}}.album-card{border:1px solid var(--border-subtle);border-radius:var(--radius-lg);background:var(--bg-header);transition:border-color var(--transition-fast), transform var(--transition-fast);flex-direction:column;display:flex;overflow:hidden}.album-card:hover{border-color:var(--border-input);transform:translateY(-2px)}.album-card:focus-visible{outline:2px solid var(--accent-primary);outline-offset:2px}.album-cover{aspect-ratio:3/2;background:var(--bg-input);position:relative}.album-cover img{object-fit:cover;width:100%;height:100%}.album-cover-badge{position:absolute;top:10px;right:10px}.album-info{padding:.875rem 1rem 1rem}.album-name-row{justify-content:space-between;align-items:center;gap:.5rem;display:flex}.album-name{text-overflow:ellipsis;white-space:nowrap;font-size:.9375rem;font-weight:600;overflow:hidden}.album-role{border-radius:var(--radius-sm);letter-spacing:.04em;text-transform:uppercase;color:var(--accent-primary-hover);background:#6366f126;flex-shrink:0;padding:.125rem .5rem;font-size:.625rem;font-weight:600}.album-role-contributor{color:#4ade80;background:#22c55e26}.album-meta{color:var(--text-secondary);margin-top:.25rem;font-size:.8125rem}.albums-page{flex-direction:column;height:100vh;display:flex}.albums-header{height:var(--header-height);background:var(--bg-header);border-bottom:1px solid var(--border-subtle);flex-shrink:0;justify-content:space-between;align-items:center;padding:0 2rem;display:flex}.albums-title{letter-spacing:-.01em;font-size:1.25rem;font-weight:600}.albums-content{flex:1;min-height:0;padding:1.5rem 2rem 3rem;overflow-y:auto}.albums-grid{grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:1.25rem;display:grid}.albums-status{color:var(--text-secondary);padding:2rem 0}.albums-status-error{color:var(--accent-danger)}@media (width<=640px){.albums-header{padding:0 1rem}.albums-content{padding:1rem 1rem 2rem}.albums-grid{grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:.75rem}}.login-page{background:radial-gradient(600px circle at 70% 35%, #6366f12e, transparent 60%), radial-gradient(500px circle at 25% 60%, #818cf81a, transparent 55%), var(--bg-app);justify-content:center;align-items:center;min-height:100vh;padding:2rem;display:flex}.login-card{border-radius:var(--radius-lg);flex-direction:column;width:100%;max-width:400px;padding:2.5rem 2rem;display:flex;box-shadow:0 24px 60px #00000073}.login-brand{justify-content:center;align-items:center;gap:.625rem;margin-bottom:1.5rem;display:flex}.login-logo{background:linear-gradient(135deg, var(--accent-primary), var(--accent-primary-hover));width:34px;height:34px;box-shadow:0 0 20px var(--accent-glow);border-radius:10px}.login-logo-text{letter-spacing:-.02em;font-size:1.5rem;font-weight:600}.login-intro{text-align:center;margin-bottom:1.75rem}.login-title{letter-spacing:-.02em;font-size:1.75rem;font-weight:700}.login-subtitle{color:var(--text-secondary);margin-top:.375rem}.login-field{border:1px solid var(--border-input);border-radius:var(--radius-md);background:var(--bg-input);transition:border-color var(--transition-fast), background var(--transition-fast);align-items:center;gap:.75rem;padding:.625rem .875rem;display:flex}.login-field+.login-field{margin-top:1rem}.login-field:focus-within{border-color:var(--accent-primary);background:#6366f10f}.login-field-icon{color:var(--text-muted);flex-shrink:0}.login-field-body{flex-direction:column;flex:1;min-width:0;display:flex}.login-field-label{color:var(--text-secondary);font-size:.6875rem;font-weight:500}.login-field input{width:100%;color:var(--text-primary);background:0 0;border:none;outline:none;padding:0;font-family:inherit;font-size:.9375rem}.login-field input::placeholder{color:var(--text-muted)}.login-field input:-webkit-autofill{-webkit-text-fill-color:var(--text-primary);transition:background-color 9999s ease-in-out;box-shadow:inset 0 0 0 1000px #262830}.login-field input:-webkit-autofill:hover{-webkit-text-fill-color:var(--text-primary);transition:background-color 9999s ease-in-out;box-shadow:inset 0 0 0 1000px #262830}.login-field input:-webkit-autofill:focus{-webkit-text-fill-color:var(--text-primary);transition:background-color 9999s ease-in-out;box-shadow:inset 0 0 0 1000px #262830}.login-toggle{color:var(--text-muted);transition:color var(--transition-fast);flex-shrink:0;align-items:center;display:flex}.login-toggle:hover{color:var(--text-secondary)}.login-forgot{text-align:right;margin-top:.75rem}.login-forgot a{color:var(--accent-primary-hover);font-size:.8125rem}.login-forgot a:hover{text-decoration:underline}.login-error{border-radius:var(--radius-md);color:var(--accent-danger);background:#ef44441a;border:1px solid #ef444440;margin-top:1rem;padding:.625rem .875rem;font-size:.8125rem}.login-submit{width:100%;margin-top:1.5rem}.login-footer{text-align:center;color:var(--text-muted);margin-top:1.5rem;font-size:.8125rem}.scrubber{pointer-events:none;z-index:20;width:72px;position:absolute;top:0;bottom:0;right:0}@media (width<=640px){.scrubber{display:none}}.scrubber-year{color:var(--text-muted);font-size:.6875rem;font-weight:500;position:absolute;right:18px;transform:translateY(-50%)}.scrubber-marker{height:0;position:absolute;left:0;right:0}.scrubber-pill{border-radius:var(--radius-sm);background:var(--bg-header);border:1px solid var(--border-input);white-space:nowrap;flex-direction:column;align-items:center;padding:.25rem .5rem;font-size:.6875rem;font-weight:600;line-height:1.25;display:flex;position:absolute;top:0;right:30px;transform:translateY(-50%);box-shadow:0 4px 12px #00000073}.scrubber-dot{background:var(--accent-primary);width:6px;height:6px;box-shadow:0 0 8px var(--accent-glow);border-radius:50%;position:absolute;top:0;right:9px;transform:translateY(-50%)}.selection-bar{background:var(--bg-header);border-bottom:1px solid var(--border-subtle);flex-shrink:0;justify-content:space-between;align-items:center;gap:1rem;padding:.625rem 2rem;display:flex}.selection-summary{align-items:center;gap:.75rem;display:flex}.selection-clear{background:var(--bg-input);border:1px solid var(--border-input);width:26px;height:26px;color:var(--text-secondary);transition:background var(--transition-fast), color var(--transition-fast);border-radius:50%;justify-content:center;align-items:center;display:flex}.selection-clear:hover{background:var(--bg-hover);color:var(--text-primary)}.selection-count{font-size:.875rem;font-weight:600}.selection-actions{flex-wrap:wrap;justify-content:flex-end;align-items:center;gap:.5rem;display:flex}.selection-actions .btn-ghost{background:var(--bg-hover)}.selection-actions .btn-ghost:hover:not(:disabled){background:#ffffff17}@media (width<=640px){.selection-bar{padding:.625rem 1rem}}.upload-modal{border-radius:var(--radius-lg);flex-direction:column;gap:1.25rem;width:100%;max-width:560px;max-height:85vh;padding:1.5rem;display:flex;box-shadow:0 24px 60px #00000080}.upload-dropzone{border:1px dashed var(--border-input);border-radius:var(--radius-md);background:var(--bg-input);cursor:pointer;transition:border-color var(--transition-fast), background var(--transition-fast);flex-direction:column;align-items:center;gap:.375rem;padding:2rem 1rem;display:flex}.upload-dropzone:hover,.upload-dropzone-active{border-color:var(--accent-primary);background:#6366f10f}.upload-dropzone-icon{color:var(--accent-primary);margin-bottom:.5rem}.upload-dropzone-title{font-weight:600}.upload-dropzone-browse{color:var(--accent-primary);font-weight:500}.upload-dropzone-browse:hover{color:var(--accent-primary-hover)}.upload-dropzone-hint{color:var(--text-muted);font-size:.8125rem}.upload-file-input{display:none}.upload-summary{flex-direction:column;gap:.5rem;display:flex}.upload-summary-row{justify-content:space-between;align-items:baseline;font-size:.875rem;font-weight:500;display:flex}.upload-summary-meta{color:var(--text-secondary);font-size:.8125rem;font-weight:400}.upload-progress-track{background:var(--bg-input);border-radius:999px;height:6px;overflow:hidden}.upload-progress-fill{background:var(--accent-primary);border-radius:999px;height:100%;transition:width .15s}.upload-queue{flex-direction:column;gap:.75rem;max-height:260px;padding-right:.25rem;list-style:none;display:flex;overflow-y:auto}.upload-queue-item{border-bottom:1px solid var(--border-subtle);align-items:center;gap:.75rem;padding-bottom:.75rem;display:flex}.upload-queue-item:last-child{border-bottom:none;padding-bottom:0}.upload-queue-thumb{border-radius:var(--radius-sm);object-fit:cover;flex-shrink:0;width:40px;height:40px}.upload-queue-info{flex-direction:column;flex:1;gap:.25rem;min-width:0;display:flex}.upload-queue-name{text-overflow:ellipsis;white-space:nowrap;font-size:.875rem;font-weight:500;overflow:hidden}.upload-queue-size{color:var(--text-muted);font-size:.75rem}.upload-queue-warning{color:var(--accent-warning);align-items:center;gap:.375rem;font-size:.75rem;display:flex}.upload-queue-progress-track{background:var(--bg-input);border-radius:999px;height:4px;overflow:hidden}.upload-queue-progress-fill{background:var(--accent-primary);border-radius:999px;height:100%;transition:width .15s}.upload-queue-completed{color:var(--accent-success);flex-shrink:0;align-items:center;gap:.375rem;font-size:.8125rem;display:flex}.upload-queue-percent{color:var(--accent-primary);flex-shrink:0;font-size:.8125rem}.upload-queue-actions{flex-shrink:0;gap:.5rem;display:flex}.upload-footer{border-top:1px solid var(--border-subtle);justify-content:space-between;align-items:center;gap:1rem;padding-top:.5rem;display:flex}.upload-footer-hint{color:var(--text-muted);align-items:center;gap:.375rem;font-size:.8125rem;display:flex}.upload-pill{z-index:210;color:var(--text-primary);border-radius:999px;align-items:center;gap:.5rem;padding:.625rem 1rem;font-size:.8125rem;font-weight:500;display:flex;position:fixed;bottom:1.5rem;right:1.5rem;box-shadow:0 12px 30px #0006}.upload-pill-progress{color:var(--accent-primary)}@media (width<=640px){.upload-modal{max-width:none}}.photos-page{flex-direction:column;height:100vh;display:flex}.photos-header{height:var(--header-height);background:var(--bg-header);border-bottom:1px solid var(--border-subtle);flex-shrink:0;justify-content:space-between;align-items:center;padding:0 2rem;display:flex}.photos-title{letter-spacing:-.01em;font-size:1.25rem;font-weight:600}.timeline-region{flex:1;min-height:0;position:relative}.timeline-scroll{height:100%;position:relative;overflow-y:auto}.timeline-status{color:var(--text-secondary);padding:3rem 2rem}.timeline-status-error{color:var(--accent-danger)}@media (width<=640px){.photos-header{padding:0 1rem}}.trash-card{aspect-ratio:1;border-radius:var(--radius-md);background:var(--bg-input);position:relative;overflow:hidden}.trash-thumb{object-fit:cover;filter:grayscale(.25)brightness(.82);width:100%;height:100%;transition:filter var(--transition-fast)}.trash-card:hover .trash-thumb{filter:none}.trash-overlay{background:linear-gradient(#0000 55%,#08090cbf);justify-content:space-between;align-items:flex-end;gap:.5rem;padding:.625rem;display:flex;position:absolute;inset:0}.trash-days{color:var(--text-primary);text-shadow:0 1px 2px #0009;align-self:flex-end;font-size:.6875rem;font-weight:600}.trash-days.urgent{color:#fca5a5}.trash-actions{gap:.375rem;display:flex}.trash-action{width:28px;height:28px;color:var(--text-primary);-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);transition:background var(--transition-fast), color var(--transition-fast), border-color var(--transition-fast);background:#0f1115a6;border:1px solid #fff3;border-radius:50%;justify-content:center;align-items:center;display:flex}.trash-restore:hover{color:#0f1115;background:#ffffffe6}.trash-delete:hover{background:var(--accent-danger);border-color:var(--accent-danger);color:#fff}.trash-page{flex-direction:column;height:100vh;display:flex}.trash-header{height:var(--header-height);background:var(--bg-header);border-bottom:1px solid var(--border-subtle);flex-shrink:0;justify-content:space-between;align-items:center;padding:0 2rem;display:flex}.trash-title{letter-spacing:-.01em;font-size:1.25rem;font-weight:600}.trash-content{flex:1;min-height:0;padding:1.5rem 2rem 3rem;overflow-y:auto}.trash-banner{border-radius:var(--radius-md);color:var(--accent-warning);background:#f59e0b1a;border:1px solid #f59e0b40;align-items:center;gap:.625rem;margin-bottom:1.5rem;padding:.75rem 1rem;font-size:.875rem;display:flex}.trash-grid{grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:8px;display:grid}.trash-status{color:var(--text-secondary);padding:2rem 0}.trash-status-error{color:var(--accent-danger)}@media (width<=640px){.trash-header{padding:0 1rem}.trash-content{padding:1rem 1rem 2rem}.trash-grid{gap:4px}}
