@import"https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700&family=Outfit:wght@400;500;600;700;800&display=swap";:root{--bg-primary: #0e0e0e;--bg-secondary: #161616;--bg-tertiary: #1e1e1e;--bg-elevated: #262626;--bg-hover: #2e2e2e;--bg-active: #363636;--surface-glass: rgba(255, 255, 255, .04);--surface-glass-hover: rgba(255, 255, 255, .07);--surface-glass-border: rgba(255, 255, 255, .08);--text-primary: #f0f0f0;--text-secondary: #999999;--text-tertiary: #666666;--text-muted: #444444;--accent-primary: #e0e0e0;--accent-primary-hover: #ffffff;--accent-primary-subtle: rgba(255, 255, 255, .08);--accent-secondary: #b0b0b0;--accent-warm: #f5a623;--accent-warm-hover: #ffc942;--accent-success: #4ade80;--accent-danger: #f87171;--accent-info: #93c5fd;--star-empty: #3a3a3a;--star-filled: #f5a623;--star-hover: #ffc942;--tag-bg: rgba(255, 255, 255, .06);--tag-text: #c0c0c0;--tag-border: rgba(255, 255, 255, .12);--font-primary: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;--font-display: "Outfit", var(--font-primary);--font-mono: "JetBrains Mono", "Fira Code", monospace;--text-xs: .6875rem;--text-sm: .8125rem;--text-base: .875rem;--text-md: 1rem;--text-lg: 1.125rem;--text-xl: 1.375rem;--text-2xl: 1.75rem;--text-3xl: 2.25rem;--weight-regular: 400;--weight-medium: 500;--weight-semibold: 600;--weight-bold: 700;--leading-tight: 1.2;--leading-normal: 1.5;--leading-relaxed: 1.7;--space-1: .25rem;--space-2: .5rem;--space-3: .75rem;--space-4: 1rem;--space-5: 1.25rem;--space-6: 1.5rem;--space-8: 2rem;--space-10: 2.5rem;--space-12: 3rem;--sidebar-width: 260px;--sidebar-collapsed: 60px;--header-height: 64px;--grid-gap: 12px;--radius-sm: 6px;--radius-md: 10px;--radius-lg: 14px;--radius-xl: 20px;--radius-full: 9999px;--shadow-sm: 0 1px 3px rgba(0, 0, 0, .3);--shadow-md: 0 4px 12px rgba(0, 0, 0, .4);--shadow-lg: 0 8px 32px rgba(0, 0, 0, .5);--shadow-glow: 0 0 20px rgba(255, 255, 255, .05);--transition-fast: .12s ease;--transition-base: .2s ease;--transition-slow: .35s cubic-bezier(.4, 0, .2, 1);--transition-spring: .5s cubic-bezier(.34, 1.56, .64, 1);--z-sidebar: 100;--z-header: 200;--z-dropdown: 300;--z-modal: 400;--z-lightbox: 500;--z-toast: 600}*,*:before,*:after{margin:0;padding:0;box-sizing:border-box}html{font-size:16px;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}body{font-family:var(--font-primary);background:var(--bg-primary);color:var(--text-primary);line-height:var(--leading-normal);overflow:hidden;height:100vh;width:100vw}#app{display:flex;height:100vh;width:100vw;overflow:hidden}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:var(--bg-hover);border-radius:var(--radius-full)}::-webkit-scrollbar-thumb:hover{background:var(--text-tertiary)}::selection{background:var(--accent-primary-subtle);color:var(--text-primary)}a{color:var(--accent-primary);text-decoration:none;transition:color var(--transition-fast)}a:hover{color:var(--accent-primary-hover)}img{display:block;max-width:100%}button{border:none;background:none;font:inherit;color:inherit;cursor:pointer;outline:none}input,select,textarea{border:none;background:none;font:inherit;color:inherit;outline:none}.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap}.truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes fadeInUp{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}@keyframes fadeInScale{0%{opacity:0;transform:scale(.95)}to{opacity:1;transform:scale(1)}}@keyframes shimmer{0%{background-position:-200% 0}to{background-position:200% 0}}@keyframes slideInRight{0%{opacity:0;transform:translate(20px)}to{opacity:1;transform:translate(0)}}@keyframes pulse{0%,to{opacity:1}50%{opacity:.5}}@keyframes spin{to{transform:rotate(360deg)}}.skeleton{background:linear-gradient(90deg,var(--bg-tertiary) 25%,var(--bg-hover) 50%,var(--bg-tertiary) 75%);background-size:200% 100%;animation:shimmer 1.5s infinite;border-radius:var(--radius-md)}.app-layout{display:flex;height:100vh;width:100vw}.sidebar{width:var(--sidebar-width);height:100vh;background:var(--bg-secondary);border-right:1px solid var(--surface-glass-border);display:flex;flex-direction:column;flex-shrink:0;z-index:var(--z-sidebar);transition:width var(--transition-slow);overflow:hidden}.sidebar.collapsed{width:56px;overflow:visible}.sidebar.collapsed .sidebar-nav{overflow-y:auto}.sidebar-header{padding:var(--space-5) var(--space-5);display:flex;align-items:center;gap:var(--space-3);border-bottom:1px solid var(--surface-glass-border);min-height:64px}.sidebar-logo{display:flex;align-items:center;gap:var(--space-3)}.sidebar-logo-icon{width:auto;height:32px;object-fit:contain;display:block;flex-shrink:0}.sidebar-logo-text{font-family:var(--font-display);font-size:var(--text-lg);font-weight:var(--weight-bold);letter-spacing:-.02em;background:linear-gradient(135deg,var(--text-primary),var(--text-secondary));-webkit-background-clip:text;-webkit-text-fill-color:transparent}.sidebar-section{padding:var(--space-3) var(--space-3)}.sidebar-section-title{font-size:var(--text-xs);font-weight:var(--weight-semibold);color:var(--text-tertiary);text-transform:uppercase;letter-spacing:.08em;padding:var(--space-2) var(--space-3);margin-bottom:var(--space-1)}.sidebar-nav{display:flex;flex-direction:column;gap:2px;flex:1;overflow-y:auto;padding:var(--space-2) var(--space-3)}.sidebar-collapse-btn{margin-left:auto;width:28px;height:28px;border-radius:var(--radius-sm);display:flex;align-items:center;justify-content:center;color:var(--text-tertiary);transition:all var(--transition-fast);flex-shrink:0;cursor:pointer}.sidebar-collapse-btn:hover{background:var(--bg-hover);color:var(--text-primary)}.sidebar.collapsed .sidebar-item-label,.sidebar.collapsed .sidebar-item-count,.sidebar.collapsed .sidebar-logo-icon,.sidebar.collapsed .sidebar-user-info,.sidebar.collapsed .sidebar-col-actions,.sidebar.collapsed #tags-list,.sidebar.collapsed .sidebar-section-title{display:none!important}.sidebar.collapsed .sidebar-nav{padding:var(--space-2) var(--space-2)}.sidebar.collapsed .sidebar-item{justify-content:center;padding:var(--space-2)}.sidebar.collapsed .sidebar-section{padding:var(--space-2) var(--space-2)}.sidebar.collapsed .sidebar-header{justify-content:center;padding:var(--space-4) var(--space-2)}.sidebar-item{display:flex;align-items:center;gap:var(--space-3);padding:var(--space-2) var(--space-3);border-radius:var(--radius-md);font-size:var(--text-sm);color:var(--text-secondary);cursor:pointer;transition:all var(--transition-fast);position:relative;-webkit-user-select:none;user-select:none}.sidebar.collapsed .sidebar-item:after{content:attr(data-label);position:absolute;left:calc(100% + 12px);top:50%;transform:translateY(-50%);background:var(--bg-elevated);border:1px solid var(--surface-glass-border);color:var(--text-primary);font-size:var(--text-xs);font-weight:var(--weight-medium);white-space:nowrap;padding:var(--space-1) var(--space-3);border-radius:var(--radius-sm);box-shadow:var(--shadow-md);pointer-events:none;opacity:0;transition:opacity var(--transition-fast);z-index:999}.sidebar.collapsed .sidebar-item:hover:after{opacity:1}.sidebar-item:hover{background:var(--surface-glass-hover);color:var(--text-primary)}.sidebar-item.active{background:var(--accent-primary-subtle);color:var(--accent-primary-hover)}.sidebar-item-icon{font-size:var(--text-md);width:20px;text-align:center;flex-shrink:0}.sidebar-item-label{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.sidebar-item-count{font-size:var(--text-xs);color:var(--text-tertiary);background:var(--bg-tertiary);padding:1px 8px;border-radius:var(--radius-full);min-width:24px;text-align:center}.folder-item{padding-left:calc(var(--space-3) + var(--depth, 0) * 16px)}.folder-toggle{width:16px;height:16px;display:flex;align-items:center;justify-content:center;font-size:10px;transition:transform var(--transition-fast);flex-shrink:0}.folder-toggle.expanded{transform:rotate(90deg)}.collection-dot{width:8px;height:8px;border-radius:50%;flex-shrink:0}.sidebar-footer{padding:var(--space-4);border-top:1px solid var(--surface-glass-border);display:flex;align-items:center;gap:var(--space-3)}.sidebar-user-avatar{width:32px;height:32px;border-radius:50%;background:var(--bg-hover);display:flex;align-items:center;justify-content:center;font-size:var(--text-sm);font-weight:var(--weight-semibold);color:var(--text-secondary);overflow:hidden}.sidebar-user-avatar img{width:100%;height:100%;object-fit:cover}.sidebar-user-info{flex:1;min-width:0}.sidebar-user-name{font-size:var(--text-sm);font-weight:var(--weight-medium);color:var(--text-primary)}.sidebar-user-email{font-size:var(--text-xs);color:var(--text-tertiary)}.main-content{flex:1;display:flex;flex-direction:column;overflow:hidden;min-width:0}.header{height:var(--header-height);min-height:var(--header-height);display:flex;align-items:center;padding:0 var(--space-6);gap:var(--space-4);border-bottom:1px solid var(--surface-glass-border);background:var(--bg-secondary);z-index:var(--z-header)}.header-breadcrumb{display:flex;align-items:center;gap:var(--space-2);font-size:var(--text-sm);color:var(--text-secondary);min-width:0}.header-breadcrumb-item{cursor:pointer;transition:color var(--transition-fast);white-space:nowrap}.header-breadcrumb-item:hover{color:var(--text-primary)}.header-breadcrumb-separator{color:var(--text-muted);font-size:var(--text-xs)}.header-breadcrumb-current{color:var(--text-primary);font-weight:var(--weight-medium)}.header-spacer{flex:1}.header-search{position:relative;width:280px}.header-search-input{width:100%;height:36px;padding:0 var(--space-4) 0 36px;background:var(--bg-tertiary);border:1px solid transparent;border-radius:var(--radius-full);font-size:var(--text-sm);color:var(--text-primary);transition:all var(--transition-base)}.header-search-input::placeholder{color:var(--text-tertiary)}.header-search-input:focus{background:var(--bg-elevated);border-color:var(--accent-primary);box-shadow:0 0 0 3px var(--accent-primary-subtle);width:340px}.header-search-icon{position:absolute;left:12px;top:50%;transform:translateY(-50%);color:var(--text-tertiary);font-size:var(--text-sm);pointer-events:none}.header-actions{display:flex;align-items:center;gap:var(--space-2)}.header-btn{width:36px;height:36px;border-radius:var(--radius-md);display:flex;align-items:center;justify-content:center;font-size:var(--text-md);color:var(--text-secondary);transition:all var(--transition-fast)}.header-btn:hover{background:var(--surface-glass-hover);color:var(--text-primary)}.header-btn.active{background:var(--accent-primary-subtle);color:var(--accent-primary-hover)}.header-divider{width:1px;height:24px;background:var(--surface-glass-border);margin:0 var(--space-2)}.sort-dropdown{position:relative}.sort-btn{display:flex;align-items:center;gap:var(--space-2);padding:var(--space-2) var(--space-3);border-radius:var(--radius-md);font-size:var(--text-sm);color:var(--text-secondary);transition:all var(--transition-fast);height:36px}.sort-btn:hover{background:var(--surface-glass-hover);color:var(--text-primary)}.sort-menu{position:absolute;top:calc(100% + 4px);right:0;background:var(--bg-elevated);border:1px solid var(--surface-glass-border);border-radius:var(--radius-lg);padding:var(--space-2);min-width:180px;box-shadow:var(--shadow-lg);z-index:var(--z-dropdown);animation:fadeInScale var(--transition-base);display:none}.sort-menu.open{display:block}.sort-menu-item{display:flex;align-items:center;gap:var(--space-3);padding:var(--space-2) var(--space-3);border-radius:var(--radius-sm);font-size:var(--text-sm);color:var(--text-secondary);cursor:pointer;transition:all var(--transition-fast);width:100%}.sort-menu-item:hover{background:var(--surface-glass-hover);color:var(--text-primary)}.sort-menu-item.active{color:var(--accent-primary-hover)}.toolbar{display:flex;align-items:center;gap:var(--space-3);padding:var(--space-3) var(--space-6);border-bottom:1px solid var(--surface-glass-border);background:var(--bg-secondary);min-height:44px;flex-wrap:wrap}.toolbar-stats{font-size:var(--text-sm);color:var(--text-tertiary)}.toolbar-stats strong{color:var(--text-secondary);font-weight:var(--weight-medium)}.toolbar-spacer{flex:1}.filter-pills{display:flex;gap:var(--space-2);flex-wrap:wrap}.filter-pill{display:flex;align-items:center;gap:var(--space-2);padding:var(--space-1) var(--space-3);background:var(--tag-bg);border:1px solid var(--tag-border);border-radius:var(--radius-full);font-size:var(--text-xs);color:var(--tag-text);cursor:pointer;transition:all var(--transition-fast)}.filter-pill:hover{background:#6366f133}.filter-pill-close{font-size:10px;opacity:.6;transition:opacity var(--transition-fast)}.filter-pill-close:hover{opacity:1}.content-area{flex:1;overflow-y:auto;padding:var(--space-5)}.photo-grid{display:grid;grid-template-columns:repeat(6,1fr);gap:4px;animation:fadeIn var(--transition-slow)}.photo-grid.list-view{grid-template-columns:1fr;gap:2px}.photo-card{position:relative;border-radius:3px;overflow:hidden;background:var(--bg-tertiary);cursor:pointer;transition:all var(--transition-base);animation:fadeInUp var(--transition-slow) both;will-change:transform}.photo-card:hover{transform:translateY(-2px);box-shadow:var(--shadow-lg)}.photo-card:hover .photo-card-overlay{opacity:1}.photo-card:hover .photo-card-actions{opacity:1;transform:translateY(0)}.photo-card-thumb{width:100%;aspect-ratio:9 / 16;object-fit:cover;transition:transform var(--transition-slow)}.photo-card:hover .photo-card-thumb{transform:scale(1.05)}.photo-card-overlay{position:absolute;inset:0;background:linear-gradient(180deg,transparent 40%,rgba(0,0,0,.7) 100%);opacity:0;transition:opacity var(--transition-base);pointer-events:none}.photo-card-info{display:none}.photo-card:hover .photo-card-info{opacity:1;transform:translateY(0)}.photo-card-name{font-size:var(--text-sm);font-weight:var(--weight-medium);color:#fff;margin-bottom:var(--space-1);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.photo-card-meta{font-size:var(--text-xs);color:#ffffffa6}.photo-card-actions{position:absolute;top:var(--space-3);right:var(--space-3);display:flex;gap:var(--space-2);opacity:0;transform:translateY(-4px);transition:all var(--transition-base)}.photo-card-action-btn{width:32px;height:32px;border-radius:var(--radius-sm);background:#0000008c;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);display:flex;align-items:center;justify-content:center;font-size:var(--text-sm);color:#fff;transition:all var(--transition-fast);pointer-events:all}.photo-card-action-btn:hover{background:#000c;transform:scale(1.1)}.photo-card-checkbox{position:absolute;top:var(--space-3);left:var(--space-3);width:22px;height:22px;border-radius:var(--radius-sm);border:2px solid rgba(255,255,255,.5);background:#0006;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);display:flex;align-items:center;justify-content:center;font-size:12px;color:#fff;opacity:0;transition:all var(--transition-fast);cursor:pointer}.photo-card:hover .photo-card-checkbox{opacity:1}.photo-card-checkbox.checked{opacity:1;background:var(--accent-primary);border-color:var(--accent-primary)}.photo-card-tier{position:absolute;bottom:var(--space-3);left:var(--space-3);background:var(--tier-color);color:#fff;font-size:11px;font-family:var(--font-mono, monospace);font-weight:var(--weight-bold);padding:2px 6px;border-radius:var(--radius-sm);box-shadow:0 1px 4px #00000080;pointer-events:none;z-index:2}.photo-card-tags{position:absolute;bottom:var(--space-3);right:var(--space-3);display:flex;gap:var(--space-1);max-width:60%;justify-content:flex-end;flex-wrap:wrap}.photo-card-tag{padding:1px 6px;background:#0000008c;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border-radius:var(--radius-sm);font-size:10px;color:#ffffffd9;white-space:nowrap}.photo-grid.list-view .photo-card{display:flex;align-items:center;border-radius:var(--radius-sm);height:56px;gap:var(--space-4);padding-right:var(--space-4)}.photo-grid.list-view .photo-card:hover{transform:none;background:var(--bg-hover)}.photo-grid.list-view .photo-card-thumb{width:56px;height:56px;aspect-ratio:auto;border-radius:var(--radius-sm);flex-shrink:0}.photo-grid.list-view .photo-card:hover .photo-card-thumb{transform:none}.photo-grid.list-view .photo-card-overlay,.photo-grid.list-view .photo-card-info,.photo-grid.list-view .photo-card-actions,.photo-grid.list-view .photo-card-tags{display:none}.photo-card-list-info{display:none;flex:1;min-width:0}.photo-grid.list-view .photo-card-list-info{display:flex;align-items:center;gap:var(--space-6)}.photo-card-list-name{font-size:var(--text-sm);color:var(--text-primary);flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.photo-card-list-date{font-size:var(--text-xs);color:var(--text-tertiary);width:100px;text-align:right}.photo-card-list-size{font-size:var(--text-xs);color:var(--text-tertiary);width:70px;text-align:right}.photo-card-list-rating{display:flex;align-items:center;width:30px}.list-tier-badge{color:var(--tier-color);font-size:11px;font-family:var(--font-mono, monospace);font-weight:var(--weight-bold);padding:2px 6px;border-radius:var(--radius-sm);background:color-mix(in srgb,var(--tier-color) 15%,transparent);border:1px solid color-mix(in srgb,var(--tier-color) 30%,transparent)}.lb-download-btn{display:flex;align-items:center;justify-content:center;gap:var(--space-2);width:100%;padding:var(--space-3) var(--space-4);border-radius:var(--radius-md);background:#000;color:#fff;font-size:var(--text-sm);font-weight:var(--weight-semibold);text-decoration:none;transition:all var(--transition-fast);cursor:pointer;border:1px solid var(--surface-glass-border)}.lb-download-btn:hover{background:#1a1a1a;transform:translateY(-1px);box-shadow:0 4px 16px #00000080}.lb-download-btn:active{transform:translateY(0)}.lightbox{position:fixed;inset:0;z-index:var(--z-lightbox);background:#000000f2;display:flex;animation:fadeIn var(--transition-base)}.lightbox-close{position:absolute;top:var(--space-5);right:20px;width:32px;height:32px;border-radius:50%;background:#ffffff1a;display:flex;align-items:center;justify-content:center;font-size:var(--text-xl);color:#fff;z-index:10;transition:all var(--transition-fast)}.lightbox-close:hover{background:#fff3;transform:scale(1.1)}.lightbox-image-container{flex:1;display:flex;align-items:center;justify-content:center;padding:var(--space-4);position:relative}.lightbox-image{max-width:100%;max-height:100%;object-fit:contain;border-radius:var(--radius-md);animation:fadeInScale var(--transition-slow)}.lightbox-nav{position:absolute;top:50%;transform:translateY(-50%);width:48px;height:48px;border-radius:50%;background:#ffffff1a;display:flex;align-items:center;justify-content:center;font-size:var(--text-xl);color:#fff;transition:all var(--transition-fast);z-index:10}.lightbox-nav:hover{background:#fff3;transform:translateY(-50%) scale(1.1)}.lightbox-prev{left:var(--space-6)}.lightbox-next{right:var(--space-6)}.lightbox-panel{width:340px;background:var(--bg-secondary);border-left:1px solid var(--surface-glass-border);display:flex;flex-direction:column;overflow-y:auto;animation:slideInRight var(--transition-slow)}.lightbox-panel-header{padding:var(--space-5);border-bottom:1px solid var(--surface-glass-border);position:relative}.lightbox-stack-badge{position:absolute;top:var(--space-5);left:var(--space-5);background:#0009;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border:1px solid rgba(255,255,255,.15);color:#fff;padding:var(--space-1) var(--space-3);border-radius:var(--radius-full);font-size:var(--text-xs);font-weight:var(--weight-bold);display:flex;align-items:center;gap:var(--space-2);text-transform:uppercase;letter-spacing:.05em;z-index:10}.lightbox-panel-title{font-size:var(--text-md);font-weight:var(--weight-semibold);color:var(--text-primary);margin-bottom:var(--space-1);word-break:break-all}.lightbox-panel-subtitle{font-size:var(--text-xs);color:var(--text-tertiary)}.lightbox-panel-section{padding:var(--space-5);border-bottom:1px solid var(--surface-glass-border)}.lightbox-panel-section-title{font-size:var(--text-xs);font-weight:var(--weight-semibold);color:var(--text-tertiary);text-transform:uppercase;letter-spacing:.08em;margin-bottom:var(--space-3)}.lightbox-rating{display:flex;gap:var(--space-2)}.tier-badge{padding:4px 12px;border-radius:var(--radius-full);font-size:12px;font-family:var(--font-mono, monospace);font-weight:var(--weight-bold);color:var(--text-primary);background:var(--bg-tertiary);border:1px solid var(--surface-glass-border);cursor:pointer;transition:all var(--transition-fast)}.tier-badge:hover{background:var(--bg-hover);border-color:var(--tier-color)}.tier-badge.active{background:var(--tier-color);border-color:var(--tier-color);color:#fff;box-shadow:0 0 12px color-mix(in srgb,var(--tier-color) 40%,transparent)}.lightbox-textarea{width:100%;padding:var(--space-3);background:var(--bg-tertiary);border:1px solid var(--surface-glass-border);border-radius:var(--radius-md);font-size:var(--text-sm);color:var(--text-primary);font-family:inherit;resize:none;transition:all var(--transition-fast)}.lightbox-textarea:focus{border-color:var(--accent-primary);box-shadow:0 0 0 3px var(--accent-primary-subtle)}.lightbox-textarea::placeholder{color:var(--text-tertiary)}.lightbox-tags{display:flex;flex-wrap:wrap;gap:var(--space-2)}.lightbox-tag{display:flex;align-items:center;gap:var(--space-2);padding:var(--space-1) var(--space-3);background:var(--tag-bg);border:1px solid var(--tag-border);border-radius:var(--radius-full);font-size:var(--text-xs);color:var(--tag-text)}.lightbox-tag-remove{font-size:10px;cursor:pointer;opacity:.6}.lightbox-tag-remove:hover{opacity:1}.lightbox-add-tag{display:flex;align-items:center;gap:var(--space-2);padding:var(--space-1) var(--space-3);border:1px dashed var(--surface-glass-border);border-radius:var(--radius-full);font-size:var(--text-xs);color:var(--text-tertiary);cursor:pointer;transition:all var(--transition-fast)}.lightbox-add-tag:hover{border-color:var(--accent-primary);color:var(--accent-primary-hover)}.lightbox-meta-row{display:flex;align-items:center;justify-content:space-between;padding:var(--space-2) 0;font-size:var(--text-sm)}.lightbox-meta-label{color:var(--text-tertiary)}.lightbox-meta-value{color:var(--text-secondary);font-weight:var(--weight-medium)}.tag-input-container{position:relative}.tag-input{width:100%;height:32px;padding:0 var(--space-3);background:var(--bg-tertiary);border:1px solid var(--surface-glass-border);border-radius:var(--radius-md);font-size:var(--text-sm);color:var(--text-primary);transition:all var(--transition-fast)}.tag-input:focus{border-color:var(--accent-primary);box-shadow:0 0 0 3px var(--accent-primary-subtle)}.tag-suggestions{position:absolute;top:calc(100% + 4px);left:0;right:0;background:var(--bg-elevated);border:1px solid var(--surface-glass-border);border-radius:var(--radius-md);padding:var(--space-2);box-shadow:var(--shadow-lg);z-index:var(--z-dropdown);max-height:200px;overflow-y:auto;display:none}.tag-suggestions.open{display:block}.tag-suggestion-item{padding:var(--space-2) var(--space-3);border-radius:var(--radius-sm);font-size:var(--text-sm);color:var(--text-secondary);cursor:pointer;transition:all var(--transition-fast)}.tag-suggestion-item:hover{background:var(--surface-glass-hover);color:var(--text-primary)}.tag-suggestion-new{color:var(--accent-primary)}.toast-container{position:fixed;bottom:var(--space-6);right:var(--space-6);z-index:var(--z-toast);display:flex;flex-direction:column;gap:var(--space-3);pointer-events:none}.toast{display:flex;align-items:center;gap:var(--space-3);padding:var(--space-3) var(--space-5);background:var(--bg-elevated);border:1px solid var(--surface-glass-border);border-radius:var(--radius-lg);box-shadow:var(--shadow-lg);font-size:var(--text-sm);color:var(--text-primary);pointer-events:auto;animation:fadeInUp var(--transition-base);max-width:360px}.toast-icon{font-size:var(--text-md);flex-shrink:0}.toast.success .toast-icon{color:var(--accent-success)}.toast.error .toast-icon{color:var(--accent-danger)}.toast.info .toast-icon{color:var(--accent-info)}.toast-message{flex:1}.toast-close{font-size:var(--text-xs);color:var(--text-tertiary);cursor:pointer;padding:var(--space-1)}.sign-in-screen{display:flex;align-items:center;justify-content:center;height:100vh;width:100vw;background:var(--bg-primary);overflow:hidden;position:relative}.sign-in-bg{position:absolute;inset:0;overflow:hidden}.sign-in-bg-orb{position:absolute;border-radius:50%;filter:blur(120px);opacity:.12}.sign-in-bg-orb:nth-child(1){width:500px;height:500px;background:#fff;top:-150px;right:-100px}.sign-in-bg-orb:nth-child(2){width:400px;height:400px;background:#888;bottom:-100px;left:-50px}.sign-in-card{position:relative;background:var(--surface-glass);border:1px solid var(--surface-glass-border);border-radius:var(--radius-xl);padding:var(--space-12);width:420px;text-align:center;-webkit-backdrop-filter:blur(40px);backdrop-filter:blur(40px);animation:fadeInScale var(--transition-slow)}.sign-in-logo{height:40px;width:auto;object-fit:contain;display:block;margin:0 auto var(--space-6)}.sign-in-title{font-family:var(--font-display);font-size:var(--text-3xl);font-weight:var(--weight-bold);letter-spacing:-.03em;margin-bottom:var(--space-3);background:linear-gradient(135deg,var(--text-primary),var(--accent-primary-hover));-webkit-background-clip:text;-webkit-text-fill-color:transparent}.sign-in-subtitle{font-size:var(--text-base);color:var(--text-secondary);margin-bottom:var(--space-8);line-height:var(--leading-relaxed)}.sign-in-btn{display:flex;align-items:center;justify-content:center;gap:var(--space-3);width:100%;height:48px;background:#fff;color:#333;border-radius:var(--radius-md);font-size:var(--text-base);font-weight:var(--weight-medium);transition:all var(--transition-base);margin-bottom:var(--space-4)}.sign-in-btn:hover{background:#f0f0f0;transform:translateY(-1px);box-shadow:var(--shadow-md)}.sign-in-btn svg{width:20px;height:20px}.sign-in-demo-btn{display:flex;align-items:center;justify-content:center;gap:var(--space-3);width:100%;height:48px;background:var(--accent-primary-subtle);color:var(--accent-primary-hover);border:1px solid var(--accent-primary);border-radius:var(--radius-md);font-size:var(--text-base);font-weight:var(--weight-medium);transition:all var(--transition-base)}.sign-in-demo-btn:hover{background:var(--bg-hover);color:var(--text-primary);transform:translateY(-1px);box-shadow:var(--shadow-md)}.sign-in-footer{margin-top:var(--space-6);font-size:var(--text-xs);color:var(--text-tertiary);text-align:center}.sign-in-form{display:flex;flex-direction:column;gap:var(--space-3);width:100%;margin:var(--space-4) 0}.sign-in-label{display:block;font-size:var(--text-xs);font-weight:var(--weight-semibold);color:var(--text-secondary);text-transform:uppercase;letter-spacing:.06em;margin-bottom:var(--space-1)}.sign-in-input{width:100%;padding:var(--space-3) var(--space-4);border-radius:var(--radius-md);border:1px solid var(--surface-glass-border);background:var(--bg-elevated);color:var(--text-primary);font-size:var(--text-sm);font-family:var(--font-mono, monospace);transition:border-color var(--transition-fast);box-sizing:border-box}.sign-in-input:focus{outline:none;border-color:var(--accent-primary)}.sign-in-input::placeholder{color:var(--text-tertiary);font-family:var(--font-sans, sans-serif)}.sign-in-error{font-size:var(--text-xs);color:#f87171;background:#f871711a;border:1px solid rgba(248,113,113,.3);border-radius:var(--radius-sm);padding:var(--space-2) var(--space-3)}.sign-in-divider{display:flex;align-items:center;gap:var(--space-3);font-size:var(--text-xs);color:var(--text-tertiary);width:100%;margin:var(--space-2) 0}.sign-in-divider:before,.sign-in-divider:after{content:"";flex:1;height:1px;background:var(--surface-glass-border)}.empty-state{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:var(--space-12);text-align:center;gap:var(--space-4);min-height:400px}.empty-state-icon{font-size:48px;opacity:.3}.empty-state-title{font-size:var(--text-lg);font-weight:var(--weight-semibold);color:var(--text-secondary)}.empty-state-text{font-size:var(--text-sm);color:var(--text-tertiary);max-width:300px;line-height:var(--leading-relaxed)}.spinner{width:24px;height:24px;border:3px solid var(--bg-hover);border-top-color:var(--accent-primary);border-radius:50%;animation:spin .8s linear infinite}.context-menu{position:fixed;background:var(--bg-elevated);border:1px solid var(--surface-glass-border);border-radius:var(--radius-lg);padding:var(--space-2);min-width:200px;box-shadow:var(--shadow-lg);z-index:var(--z-dropdown);animation:fadeInScale var(--transition-fast)}.context-menu-item{display:flex;align-items:center;gap:var(--space-3);padding:var(--space-2) var(--space-3);border-radius:var(--radius-sm);font-size:var(--text-sm);color:var(--text-secondary);cursor:pointer;transition:all var(--transition-fast);width:100%}.context-menu-item:hover{background:var(--surface-glass-hover);color:var(--text-primary)}.context-menu-item.danger{color:var(--accent-danger)}.context-menu-divider{height:1px;background:var(--surface-glass-border);margin:var(--space-2) 0}.modal-overlay{position:fixed;inset:0;background:#0009;z-index:var(--z-modal);display:flex;align-items:center;justify-content:center;animation:fadeIn var(--transition-fast)}.modal{background:var(--bg-secondary);border:1px solid var(--surface-glass-border);border-radius:var(--radius-xl);padding:var(--space-8);width:440px;max-width:90vw;animation:fadeInScale var(--transition-base)}.modal-title{font-size:var(--text-lg);font-weight:var(--weight-semibold);margin-bottom:var(--space-5)}.modal-input{width:100%;height:44px;padding:0 var(--space-4);background:var(--bg-tertiary);border:1px solid var(--surface-glass-border);border-radius:var(--radius-md);font-size:var(--text-base);color:var(--text-primary);transition:all var(--transition-fast);margin-bottom:var(--space-5)}.modal-input:focus{border-color:var(--accent-primary);box-shadow:0 0 0 3px var(--accent-primary-subtle)}.modal-actions{display:flex;gap:var(--space-3);justify-content:flex-end}.modal-btn{height:40px;padding:0 var(--space-5);border-radius:var(--radius-md);font-size:var(--text-sm);font-weight:var(--weight-medium);transition:all var(--transition-fast)}.modal-btn-secondary{background:var(--bg-tertiary);color:var(--text-secondary)}.modal-btn-secondary:hover{background:var(--bg-hover);color:var(--text-primary)}.modal-btn-primary{background:var(--accent-primary);color:#fff}.modal-btn-primary:hover{background:var(--accent-primary-hover);transform:translateY(-1px)}.color-selector{display:flex;gap:var(--space-3);margin-bottom:var(--space-5)}.color-option{width:28px;height:28px;border-radius:50%;cursor:pointer;transition:all var(--transition-fast);border:2px solid transparent}.color-option:hover{transform:scale(1.15)}.color-option.selected{border-color:#fff;box-shadow:0 0 0 3px var(--bg-primary)}.upload-drop-overlay{position:fixed;inset:0;background:#0e0e0ed9;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);z-index:9999;display:flex;align-items:center;justify-content:center;opacity:0;pointer-events:none;transition:opacity var(--transition-base)}.upload-drop-overlay.visible{opacity:1;pointer-events:auto}.upload-drop-content{text-align:center;border:3px dashed var(--accent-primary);border-radius:var(--radius-xl);padding:var(--space-12);width:80%;max-width:600px;background:var(--surface-glass);color:var(--text-primary);transform:scale(.95);transition:transform var(--transition-spring)}.upload-drop-overlay.visible .upload-drop-content{transform:scale(1)}.upload-drop-icon{font-size:48px;color:var(--accent-primary);margin-bottom:var(--space-4);display:flex;justify-content:center}.upload-drop-title{font-size:var(--text-2xl);font-family:var(--font-display);font-weight:var(--weight-bold);margin-bottom:var(--space-2)}.upload-drop-subtitle{font-size:var(--text-base);color:var(--text-secondary)}.upload-btn{display:inline-flex;align-items:center;gap:var(--space-2);padding:0 var(--space-4);height:32px;background:var(--accent-primary);color:var(--bg-primary);border:none;border-radius:var(--radius-md);font-size:var(--text-sm);font-weight:var(--weight-medium);cursor:pointer;transition:all var(--transition-fast)}.upload-btn:hover{background:var(--accent-primary-hover);transform:translateY(-1px);box-shadow:var(--shadow-sm)}.upload-modal{width:520px;max-width:90vw}.upload-tag-chips{display:flex;flex-wrap:wrap;gap:var(--space-2)}.upload-tag-chip{padding:var(--space-1) var(--space-3);border:1px solid var(--surface-glass-border);border-radius:var(--radius-full);font-size:var(--text-xs);font-weight:var(--weight-medium);color:var(--text-secondary);background:var(--bg-tertiary);cursor:pointer;transition:all var(--transition-fast)}.upload-tag-chip:hover{border-color:var(--accent-primary);color:var(--accent-primary-hover);background:var(--accent-primary-subtle)}.upload-tag-chip.active{background:var(--accent-primary);border-color:var(--accent-primary);color:#fff}.upload-prefix-row{display:flex;gap:var(--space-2);align-items:center}.upload-prefix-row .modal-input{flex:1;margin-bottom:0}.upload-prefix-datalist{flex:1}.upload-preview-strip{display:flex;gap:var(--space-2);margin-bottom:var(--space-4);overflow-x:auto;padding-bottom:var(--space-2)}.upload-preview-thumb{width:120px;height:120px;border-radius:var(--radius-md);overflow:hidden;flex-shrink:0;background:var(--bg-tertiary);border:2px solid transparent;transition:border-color var(--transition-fast)}.upload-preview-thumb:hover{border-color:var(--accent-primary)}.upload-preview-strip:has(.upload-preview-thumb:only-child) .upload-preview-thumb{width:100%;height:220px;border-radius:var(--radius-lg)}.upload-preview-thumb img{width:100%;height:100%;object-fit:cover;display:block}.upload-preview-more{width:120px;height:120px;border-radius:var(--radius-md);background:var(--bg-elevated);display:flex;align-items:center;justify-content:center;font-size:var(--text-sm);color:var(--text-secondary);flex-shrink:0}.upload-info{display:flex;align-items:center;gap:var(--space-2);font-size:var(--text-sm);color:var(--text-secondary);margin-bottom:var(--space-6);padding:var(--space-3);background:var(--bg-elevated);border-radius:var(--radius-md)}.upload-form{display:flex;flex-direction:column;gap:var(--space-4);margin-bottom:var(--space-6)}.upload-field{display:flex;flex-direction:column;gap:var(--space-2)}.upload-label{font-size:var(--text-sm);font-weight:var(--weight-medium);color:var(--text-primary)}.upload-select{appearance:none;background-image:url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="%23999999" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><polyline points="6 9 12 15 18 9"></polyline></svg>');background-repeat:no-repeat;background-position:right 12px center;padding-right:36px}.upload-field-hint{font-size:var(--text-xs);color:var(--text-tertiary)}.upload-progress-panel{position:fixed;bottom:var(--space-6);right:var(--space-6);width:340px;background:var(--bg-secondary);border:1px solid var(--surface-glass-border);border-radius:var(--radius-lg);box-shadow:var(--shadow-lg);z-index:var(--z-toast);overflow:hidden;transform:translateY(20px) scale(.95);opacity:0;pointer-events:none;transition:all var(--transition-spring)}.upload-progress-panel.visible{transform:translateY(0) scale(1);opacity:1;pointer-events:auto}.upload-progress-header{display:flex;align-items:center;justify-content:space-between;padding:var(--space-4);background:var(--bg-tertiary);border-bottom:1px solid var(--surface-glass-border)}.upload-progress-title{font-weight:var(--weight-medium);font-size:var(--text-sm);color:var(--text-primary)}.upload-progress-count{font-size:var(--text-xs);color:var(--text-secondary)}.upload-progress-bar-track{height:4px;background:var(--bg-elevated);width:100%}.upload-progress-bar-fill{height:100%;background:var(--accent-primary);width:0%;transition:width .3s ease}.upload-progress-panel.complete .upload-progress-bar-fill{background:var(--accent-success)}.upload-progress-files{max-height:200px;overflow-y:auto;padding:var(--space-2) 0}.upload-file-item{display:flex;align-items:center;gap:var(--space-3);padding:var(--space-2) var(--space-4);font-size:var(--text-sm)}.upload-file-status{color:var(--text-tertiary);display:flex;align-items:center;justify-content:center}.upload-file-item.done .upload-file-status{color:var(--accent-success)}.upload-file-item.error .upload-file-status{color:var(--accent-danger)}.upload-file-name{flex:1;color:var(--text-secondary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.upload-file-item.done .upload-file-name{color:var(--text-primary)}.upload-file-item.error .upload-file-name{color:var(--accent-danger);text-decoration:line-through}.upload-file-size{color:var(--text-tertiary);font-size:var(--text-xs);font-feature-settings:"tnum"}.collections-overview-wrapper{flex:1;overflow-y:auto;padding:var(--space-6);background:var(--bg-primary)}.collections-overview-header{margin-bottom:var(--space-6)}.collections-overview-title{font-family:var(--font-display);font-size:var(--text-2xl);font-weight:var(--weight-bold);color:var(--text-primary);margin-bottom:var(--space-1)}.collections-overview-subtitle{font-size:var(--text-sm);color:var(--text-secondary)}.collections-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:var(--space-6);padding-bottom:var(--space-12)}.collection-card{background:var(--bg-secondary);border:1px solid var(--surface-glass-border);border-radius:var(--radius-lg);overflow:hidden;cursor:pointer;transition:transform var(--transition-base),box-shadow var(--transition-base)}.collection-card:hover{transform:translateY(-4px);box-shadow:var(--shadow-md);border-color:var(--bg-hover)}.collection-card-previews{height:180px;background:var(--bg-tertiary);display:flex;overflow:hidden;position:relative;border-bottom:1px solid var(--surface-glass-border)}.collection-card-previews.empty{align-items:center;justify-content:center}.collection-card-empty-icon{display:flex;align-items:center;justify-content:center;opacity:.5}.collection-card-previews .collection-card-preview-img{height:100%;flex:1;overflow:hidden;border-right:2px solid var(--bg-secondary)}.collection-card-previews .collection-card-preview-img:last-child{border-right:none}.collection-card-previews img{width:100%;height:100%;object-fit:cover;transition:transform var(--transition-slow)}.collection-card:hover .collection-card-previews img{transform:scale(1.05)}.collection-card-info{padding:var(--space-4)}.collection-card-title-row{display:flex;align-items:center;gap:var(--space-2);margin-bottom:var(--space-1)}.collection-card-dot{width:12px;height:12px;border-radius:50%;flex-shrink:0}.collection-card-title{font-size:var(--text-md);font-weight:var(--weight-semibold);color:var(--text-primary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.collection-card-meta{font-size:var(--text-xs);color:var(--text-tertiary);padding-left:calc(12px + var(--space-2))}.collection-card-actions-wrapper{position:relative;margin-left:auto}.collection-card-actions-btn{background:transparent;border:none;color:var(--text-tertiary);cursor:pointer;padding:var(--space-1);border-radius:var(--radius-sm);display:flex;align-items:center;justify-content:center;transition:background var(--transition-fast),color var(--transition-fast)}.collection-card-actions-btn:hover{background:var(--bg-hover);color:var(--text-primary)}.card-context-menu{position:absolute;top:100%;right:0;margin-top:var(--space-1);background:var(--bg-primary);border:1px solid var(--surface-glass-border);border-radius:var(--radius-md);padding:var(--space-1);min-width:140px;box-shadow:var(--shadow-lg);z-index:10;display:none;flex-direction:column}.card-context-menu.open{display:flex}.card-context-menu-item{display:flex;align-items:center;gap:var(--space-2);padding:var(--space-2) var(--space-3);border:none;background:transparent;color:var(--text-primary);font-size:var(--text-sm);text-align:left;cursor:pointer;border-radius:var(--radius-sm);transition:background var(--transition-fast)}.card-context-menu-item:hover{background:var(--bg-hover)}.card-context-menu-item.danger{color:var(--accent-danger)}.selection-bar{position:sticky;top:0;z-index:var(--z-sticky);background:var(--bg-elevated);border-bottom:1px solid var(--surface-glass-border);padding:var(--space-3) var(--space-6);display:flex;align-items:center;gap:var(--space-4);box-shadow:var(--shadow-sm)}.selection-bar-count{font-size:var(--text-sm);font-weight:var(--weight-medium);color:var(--text-primary)}.selection-bar-actions{display:flex;align-items:center;gap:var(--space-2)}.selection-btn{display:inline-flex;align-items:center;gap:var(--space-2);padding:0 var(--space-3);height:28px;background:var(--bg-tertiary);color:var(--text-secondary);border:1px solid var(--surface-glass-border);border-radius:var(--radius-sm);font-size:var(--text-xs);font-weight:var(--weight-medium);cursor:pointer;transition:all var(--transition-fast)}.selection-btn:hover{background:var(--bg-hover);color:var(--text-primary)}.selection-btn.secondary{background:transparent;border-color:transparent}.selection-btn.secondary:hover{background:var(--bg-hover)}.photo-card-stack-badge{position:absolute;bottom:var(--space-3);right:var(--space-3);background:#000000a6;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);color:#fff;padding:var(--space-1) var(--space-2);border-radius:var(--radius-sm);font-size:var(--text-xs);font-weight:var(--weight-medium);display:flex;align-items:center;gap:var(--space-1);z-index:2;pointer-events:none}.lightbox-carousel-dots{position:absolute;bottom:var(--space-6);left:50%;transform:translate(-50%);display:flex;gap:var(--space-2);z-index:10}.lightbox-carousel-dot{width:8px;height:8px;border-radius:50%;background:#fff6;transition:all var(--transition-fast)}.lightbox-carousel-dot.active{background:#fff;transform:scale(1.2)}
