@import"https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600&display=swap";:root{font-family:system-ui,Avenir,Helvetica,Arial,sans-serif;line-height:1.5;font-weight:400;color-scheme:light dark;color:#ffffffde;background-color:#242424;font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}a{font-weight:500;color:#646cff;text-decoration:inherit}a:hover{color:#535bf2}body{margin:0;display:flex;place-items:center;min-width:320px;min-height:100vh}h1{font-size:3.2em;line-height:1.1}button{border-radius:8px;border:1px solid transparent;padding:.6em 1.2em;font-size:1em;font-weight:500;font-family:inherit;background-color:#1a1a1a;cursor:pointer;transition:border-color .25s}button:hover{border-color:#646cff}button:focus,button:focus-visible{outline:4px auto -webkit-focus-ring-color}@media(prefers-color-scheme:light){:root{color:#213547;background-color:#fff}a:hover{color:#747bff}button{background-color:#f9f9f9}}.modal-overlay{position:fixed;inset:0;background-color:#00000080;display:flex;align-items:center;justify-content:center;z-index:1000;padding:var(--space-4);animation:fadeIn .15s ease}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.modal{background-color:var(--color-bg-primary);border-radius:var(--radius-lg);box-shadow:var(--shadow-lg);max-height:calc(100vh - var(--space-8));display:flex;flex-direction:column;animation:slideUp .2s ease}@keyframes slideUp{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}.modal-sm{width:100%;max-width:400px}.modal-md{width:100%;max-width:560px}.modal-lg{width:100%;max-width:720px}.modal-xl{width:100%;max-width:1024px}.modal-full{width:calc(100vw - var(--space-8));height:calc(100vh - var(--space-8));max-width:none;max-height:none}.modal-header{display:flex;align-items:center;justify-content:space-between;padding:var(--space-4) var(--space-6);border-bottom:1px solid var(--color-border-light);flex-shrink:0}.modal-title{font-size:var(--text-lg);font-weight:var(--font-semibold);color:var(--color-text-primary);margin:0}.modal-close{display:flex;align-items:center;justify-content:center;width:32px;height:32px;border:none;background:none;color:var(--color-text-secondary);cursor:pointer;border-radius:var(--radius-md);transition:all var(--transition-fast)}.modal-close:hover{background-color:var(--color-bg-hover);color:var(--color-text-primary)}.modal-content{padding:var(--space-6);overflow-y:auto;flex:1}.modal-full .modal-content{padding:0}.settings-modal{min-width:320px}.settings-section{margin-bottom:var(--space-6)}.settings-section:last-child{margin-bottom:0}.settings-section-header{display:flex;align-items:center;gap:var(--space-2);margin-bottom:var(--space-3);color:var(--color-text-primary)}.settings-section-header h3{margin:0;font-size:var(--text-base);font-weight:var(--font-semibold)}.settings-description{font-size:var(--text-sm);color:var(--color-text-secondary);line-height:1.5;margin:0 0 var(--space-4)}.settings-input-group{margin-bottom:var(--space-4)}.settings-input-wrapper{position:relative;display:flex;align-items:center}.settings-input{width:100%;padding:var(--space-3) var(--space-4);padding-right:44px;border:1px solid var(--color-border);border-radius:var(--radius-md);font-size:var(--text-sm);font-family:monospace;background-color:var(--color-bg-secondary);color:var(--color-text-primary);transition:border-color var(--transition-fast)}.settings-input:focus{outline:none;border-color:var(--color-accent)}.settings-input::placeholder{color:var(--color-text-muted);font-family:inherit}.settings-input-toggle{position:absolute;right:var(--space-2);display:flex;align-items:center;justify-content:center;width:32px;height:32px;border:none;background:none;color:var(--color-text-secondary);cursor:pointer;border-radius:var(--radius-sm);transition:all var(--transition-fast)}.settings-input-toggle:hover{background-color:var(--color-bg-hover);color:var(--color-text-primary)}.settings-actions{display:flex;gap:var(--space-3);margin-bottom:var(--space-4)}.settings-btn{display:flex;align-items:center;justify-content:center;gap:var(--space-2);padding:var(--space-2) var(--space-4);border:none;border-radius:var(--radius-md);font-size:var(--text-sm);font-weight:var(--font-medium);cursor:pointer;transition:all var(--transition-fast)}.settings-btn:disabled{opacity:.5;cursor:not-allowed}.settings-btn-primary{background-color:var(--color-accent);color:#fff}.settings-btn-primary:hover:not(:disabled){background-color:var(--color-accent-dark, #2563eb)}.settings-btn-danger{background-color:transparent;color:var(--color-error);border:1px solid var(--color-error)}.settings-btn-danger:hover{background-color:#ef44441a}.settings-info{display:flex;align-items:center;gap:var(--space-2);font-size:var(--text-sm);color:var(--color-text-secondary)}.settings-info a{color:var(--color-accent);text-decoration:none}.settings-info a:hover{text-decoration:underline}.settings-status{display:flex;align-items:center;gap:var(--space-2);margin-top:var(--space-3);padding:var(--space-2) var(--space-3);border-radius:var(--radius-md);font-size:var(--text-sm)}.settings-status-success{background-color:#22c55e1a;color:#22c55e}.settings-status-error{background-color:#ef44441a;color:#ef4444}.user-menu{position:relative}.user-menu-trigger{display:flex;align-items:center;justify-content:center;width:36px;height:36px;padding:0;border:none;background:none;cursor:pointer;border-radius:var(--radius-full);overflow:hidden;transition:opacity var(--transition-fast)}.user-menu-trigger:hover{opacity:.8}.user-avatar{width:36px;height:36px;border-radius:var(--radius-full);object-fit:cover}.user-avatar-initials{display:flex;align-items:center;justify-content:center;background-color:var(--color-accent);color:#fff;font-size:var(--text-sm);font-weight:var(--font-semibold)}.user-menu-dropdown{position:absolute;top:calc(100% + var(--space-2));right:0;min-width:200px;background-color:var(--color-bg-primary);border:1px solid var(--color-border);border-radius:var(--radius-md);box-shadow:var(--shadow-md);z-index:100;animation:dropdownSlide .15s ease}.user-menu-header{padding:var(--space-3) var(--space-4)}.user-menu-name{display:block;font-weight:var(--font-medium);color:var(--color-text-primary)}.user-menu-email{display:block;font-size:var(--text-sm);color:var(--color-text-secondary);margin-top:var(--space-1)}.user-menu-divider{height:1px;background-color:var(--color-border-light);margin:var(--space-1) 0}.user-menu-item{display:flex;align-items:center;gap:var(--space-2);width:100%;padding:var(--space-2) var(--space-4);border:none;background:none;font-size:var(--text-sm);color:var(--color-text-primary);text-align:left;cursor:pointer;transition:background-color var(--transition-fast)}.user-menu-item:hover{background-color:var(--color-bg-hover)}.user-menu-item-danger{color:var(--color-error)}.user-menu-item-danger:hover{background-color:#fa52521a}.search-mode-toggle{display:flex;background-color:var(--color-bg-tertiary);border-radius:var(--radius-md);padding:2px}.search-mode-btn{display:flex;align-items:center;gap:var(--space-1);padding:var(--space-1) var(--space-3);border:none;background:none;font-size:var(--text-sm);font-weight:var(--font-medium);color:var(--color-text-secondary);cursor:pointer;border-radius:var(--radius-sm);transition:all var(--transition-fast)}.search-mode-btn:hover{color:var(--color-text-primary)}.search-mode-btn-active{background-color:var(--color-bg-primary);color:var(--color-text-primary);box-shadow:var(--shadow-sm)}@media(max-width:480px){.search-mode-btn span{display:none}}.btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--space-2);font-weight:var(--font-medium);border-radius:var(--radius-md);border:1px solid transparent;cursor:pointer;transition:all var(--transition-fast);white-space:nowrap}.btn-sm{padding:var(--space-1) var(--space-3);font-size:var(--text-sm);height:32px}.btn-md{padding:var(--space-2) var(--space-4);font-size:var(--text-sm);height:40px}.btn-lg{padding:var(--space-3) var(--space-6);font-size:var(--text-base);height:48px}.btn-primary{background-color:var(--color-accent);color:#fff;border-color:var(--color-accent)}.btn-primary:hover:not(:disabled){background-color:var(--color-accent-hover);border-color:var(--color-accent-hover)}.btn-secondary{background-color:var(--color-bg-primary);color:var(--color-text-primary);border-color:var(--color-border)}.btn-secondary:hover:not(:disabled){background-color:var(--color-bg-hover);border-color:var(--color-text-muted)}.btn-ghost{background-color:transparent;color:var(--color-text-secondary);border-color:transparent}.btn-ghost:hover:not(:disabled){background-color:var(--color-bg-hover);color:var(--color-text-primary)}.btn-danger{background-color:var(--color-error);color:#fff;border-color:var(--color-error)}.btn-danger:hover:not(:disabled){background-color:#e03131;border-color:#e03131}.btn-loading{position:relative;color:transparent}.btn-spinner{position:absolute;width:16px;height:16px;border:2px solid currentColor;border-right-color:transparent;border-radius:50%;animation:spin .6s linear infinite}.btn-loading .btn-spinner{color:#fff}.btn-secondary.btn-loading .btn-spinner{color:var(--color-text-primary)}.btn-icon{display:flex;align-items:center;justify-content:center}.btn-icon svg{width:18px;height:18px}.dropdown{position:relative;width:100%}.dropdown-label{display:block;font-size:var(--text-sm);font-weight:var(--font-medium);color:var(--color-text-secondary);margin-bottom:var(--space-1)}.dropdown-trigger{display:flex;align-items:center;justify-content:space-between;width:100%;padding:var(--space-2) var(--space-3);background-color:var(--color-bg-primary);border:1px solid var(--color-border);border-radius:var(--radius-md);font-size:var(--text-sm);color:var(--color-text-primary);cursor:pointer;transition:all var(--transition-fast)}.dropdown-trigger:hover:not(:disabled){border-color:var(--color-text-muted)}.dropdown-trigger:disabled{opacity:.6;cursor:not-allowed}.dropdown-trigger-open{border-color:var(--color-accent);box-shadow:0 0 0 3px var(--color-accent-light)}.dropdown-value{display:flex;align-items:center;gap:var(--space-2);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.dropdown-placeholder{color:var(--color-text-muted)}.dropdown-chevron{flex-shrink:0;color:var(--color-text-muted);transition:transform var(--transition-fast)}.dropdown-trigger-open .dropdown-chevron{transform:rotate(180deg)}.dropdown-menu{position:absolute;top:100%;left:0;right:0;margin-top:var(--space-1);background-color:var(--color-bg-primary);border:1px solid var(--color-border);border-radius:var(--radius-md);box-shadow:var(--shadow-md);max-height:240px;overflow-y:auto;z-index:100;animation:dropdownSlide .15s ease}@keyframes dropdownSlide{0%{opacity:0;transform:translateY(-8px)}to{opacity:1;transform:translateY(0)}}.dropdown-option{display:flex;align-items:center;justify-content:space-between;width:100%;padding:var(--space-2) var(--space-3);background:none;border:none;font-size:var(--text-sm);color:var(--color-text-primary);text-align:left;cursor:pointer;transition:background-color var(--transition-fast)}.dropdown-option:hover{background-color:var(--color-bg-hover)}.dropdown-option-selected{background-color:var(--color-accent-light);color:var(--color-accent)}.dropdown-count{font-size:var(--text-xs);color:var(--color-text-muted)}.dropdown-option-selected .dropdown-count{color:var(--color-accent)}.spinner{border-radius:50%;border:2px solid var(--color-border);border-top-color:var(--color-accent);animation:spin .6s linear infinite}.spinner-sm{width:16px;height:16px}.spinner-md{width:24px;height:24px}.spinner-lg{width:40px;height:40px;border-width:3px}.header{position:fixed;top:0;left:0;right:0;height:var(--header-height);background-color:var(--color-bg-primary);border-bottom:1px solid var(--color-border-light);display:flex;align-items:center;justify-content:space-between;padding:0 var(--space-4);z-index:50}.header-left{display:flex;align-items:center;gap:var(--space-3)}.header-menu-btn{display:none;align-items:center;justify-content:center;width:40px;height:40px;border:none;background:none;color:var(--color-text-secondary);cursor:pointer;border-radius:var(--radius-md);transition:all var(--transition-fast)}.header-menu-btn:hover{background-color:var(--color-bg-hover);color:var(--color-text-primary)}.header-logo{display:flex;align-items:center;gap:var(--space-2);color:var(--color-text-primary);text-decoration:none}.header-logo:hover{color:var(--color-accent)}.header-logo-text{font-size:var(--text-lg);font-weight:var(--font-semibold)}.header-center{flex:1;display:flex;justify-content:center;max-width:400px;margin:0 var(--space-4)}.header-right{display:flex;align-items:center;gap:var(--space-3)}.header-upload-btn span{display:none}.header-gallery-toggle{display:flex;align-items:center;background-color:var(--color-bg-secondary);border-radius:var(--radius-md);padding:2px;gap:2px}.header-toggle-btn{display:flex;align-items:center;gap:var(--space-1);padding:var(--space-1) var(--space-2);border:none;background:none;color:var(--color-text-muted);cursor:pointer;border-radius:var(--radius-sm);font-size:var(--text-sm);font-weight:var(--font-medium);transition:all var(--transition-fast)}.header-toggle-btn:hover{color:var(--color-text-primary)}.header-toggle-btn-active{background-color:var(--color-bg-primary);color:var(--color-accent);box-shadow:var(--shadow-sm)}.header-toggle-btn span{display:none}@media(max-width:1024px){.header-menu-btn{display:flex}}@media(min-width:640px){.header-upload-btn span,.header-toggle-btn span{display:inline}}@media(max-width:640px){.header-center,.header-logo-text{display:none}}.search-box{position:relative;display:flex;align-items:center}.search-icon{position:absolute;left:var(--space-3);color:var(--color-text-muted);pointer-events:none}.search-input{width:100%;padding:var(--space-2) var(--space-3);padding-left:calc(var(--space-3) + 18px + var(--space-2));padding-right:calc(var(--space-3) + 16px + var(--space-2));background-color:var(--color-bg-secondary);border:1px solid var(--color-border);border-radius:var(--radius-md);font-size:var(--text-sm);color:var(--color-text-primary);transition:all var(--transition-fast)}.search-input::placeholder{color:var(--color-text-muted)}.search-input:focus{outline:none;border-color:var(--color-accent);background-color:var(--color-bg-primary);box-shadow:0 0 0 3px var(--color-accent-light)}.search-clear{position:absolute;right:var(--space-2);display:flex;align-items:center;justify-content:center;width:24px;height:24px;border:none;background:none;color:var(--color-text-muted);cursor:pointer;border-radius:var(--radius-sm);transition:all var(--transition-fast)}.search-clear:hover{background-color:var(--color-bg-hover);color:var(--color-text-primary)}.filter-section{display:flex;flex-direction:column;gap:var(--space-3)}.flag-filter{margin-top:var(--space-4)}.flag-filter-label{display:block;font-size:var(--text-sm);font-weight:var(--font-medium);color:var(--color-text-secondary);margin-bottom:var(--space-2)}.flag-filter-buttons{display:flex;gap:var(--space-2)}.flag-btn{display:flex;align-items:center;justify-content:center;width:32px;height:32px;border:2px solid var(--color-border);background:none;border-radius:var(--radius-md);cursor:pointer;transition:all var(--transition-fast);color:var(--flag-color)}.flag-btn:hover{border-color:var(--flag-color);background-color:var(--color-bg-hover)}.flag-btn-active{border-color:var(--flag-color);background-color:var(--flag-color);color:#fff}.flag-btn-active:hover{opacity:.9}.flag-dot{width:12px;height:12px;border-radius:var(--radius-full);background-color:var(--flag-color)}.flag-btn-active .flag-dot{background-color:#fff}.arrange-section{display:flex;flex-direction:column;gap:var(--space-3)}.arrange-row{display:flex;flex-direction:column}.arrange-label{font-size:var(--text-sm);font-weight:var(--font-medium);color:var(--color-text-secondary);margin-bottom:var(--space-1)}.arrange-order-buttons{display:flex;background-color:var(--color-bg-tertiary);border-radius:var(--radius-md);padding:2px}.arrange-order-btn{flex:1;padding:var(--space-2);border:none;background:none;font-size:var(--text-sm);color:var(--color-text-secondary);cursor:pointer;border-radius:var(--radius-sm);transition:all var(--transition-fast)}.arrange-order-btn:hover{color:var(--color-text-primary)}.arrange-order-btn-active{background-color:var(--color-bg-primary);color:var(--color-text-primary);box-shadow:var(--shadow-sm)}.action-buttons{display:flex;flex-direction:column;gap:var(--space-2)}.action-buttons .action-btn.btn{width:100%;justify-content:flex-start}.action-btn-link{text-decoration:none;display:block}.action-btn-link .action-btn.btn{width:100%;justify-content:flex-start}.sidebar{position:fixed;top:var(--header-height);left:0;bottom:0;width:var(--sidebar-width);background-color:var(--color-bg-primary);border-right:1px solid var(--color-border-light);overflow-y:auto;transition:width var(--transition-normal);z-index:30}.sidebar-collapsed{width:0;border-right:none}.sidebar-toggle{position:absolute;top:var(--space-4);right:-12px;width:24px;height:24px;display:flex;align-items:center;justify-content:center;background-color:var(--color-bg-primary);border:1px solid var(--color-border);border-radius:var(--radius-full);cursor:pointer;z-index:10;transition:all var(--transition-fast)}.sidebar-toggle:hover{background-color:var(--color-bg-hover)}.sidebar-collapsed .sidebar-toggle{right:-36px}.sidebar-content{padding:var(--space-4)}.sidebar-title{font-size:var(--text-lg);font-weight:var(--font-semibold);color:var(--color-text-primary);margin:0}.sidebar-section{margin-bottom:var(--space-4)}.sidebar-section-title{font-size:var(--text-xs);font-weight:var(--font-semibold);text-transform:uppercase;letter-spacing:.05em;color:var(--color-text-muted);margin:0 0 var(--space-3) 0}.sidebar-divider{height:1px;background-color:var(--color-border-light);margin:var(--space-4) 0}.sidebar-mobile{display:none;position:fixed;top:0;left:0;bottom:0;width:var(--sidebar-width);background-color:var(--color-bg-primary);transform:translate(-100%);transition:transform var(--transition-normal);z-index:50;overflow-y:auto}.sidebar-mobile-open{transform:translate(0)}.sidebar-mobile-header{display:flex;align-items:center;justify-content:space-between;padding:var(--space-4);border-bottom:1px solid var(--color-border-light)}.sidebar-close{display:flex;align-items:center;justify-content:center;width:32px;height:32px;border:none;background:none;color:var(--color-text-secondary);cursor:pointer;border-radius:var(--radius-md);transition:all var(--transition-fast)}.sidebar-close:hover{background-color:var(--color-bg-hover);color:var(--color-text-primary)}@media(max-width:1024px){.sidebar{display:none}.sidebar-mobile{display:block}}.gallery-layout{display:flex;flex-direction:column;min-height:100vh}.gallery-body{display:flex;flex:1;padding-top:var(--header-height)}.gallery-main{flex:1;margin-left:var(--sidebar-width);min-height:calc(100vh - var(--header-height));transition:margin-left var(--transition-normal);background-color:var(--color-bg-secondary)}.gallery-main-expanded{margin-left:0}.sidebar-overlay{position:fixed;inset:0;background-color:#00000080;z-index:40;display:none}@media(max-width:1024px){.gallery-main{margin-left:0}.sidebar-overlay{display:block}}.media-card{background-color:var(--color-bg-primary);border-radius:var(--radius-md);box-shadow:var(--shadow-card);overflow:hidden;cursor:pointer;transition:all var(--transition-fast)}.media-card:hover{box-shadow:var(--shadow-card-hover);transform:translateY(-2px)}.media-card-selected{outline:2px solid var(--color-accent);outline-offset:2px}.media-card-image-container{position:relative;aspect-ratio:1;background-color:var(--color-bg-tertiary)}.media-card-image{width:100%;height:100%;object-fit:cover;display:block}.media-card-placeholder{width:100%;height:100%;display:flex;align-items:center;justify-content:center;color:var(--color-text-muted);font-size:var(--text-sm)}.media-card-overlay{position:absolute;inset:0;background:linear-gradient(to bottom,rgba(0,0,0,.3) 0%,transparent 30%,transparent 70%,rgba(0,0,0,.3) 100%);opacity:0;transition:opacity var(--transition-fast);padding:var(--space-2);display:flex;justify-content:space-between;align-items:flex-start}.media-card-overlay-visible{opacity:1}.media-card-checkbox{width:18px;height:18px;border:2px solid rgba(255,255,255,.95);border-radius:2px;background:transparent;cursor:pointer;display:flex;align-items:center;justify-content:center;color:#fff;transition:all var(--transition-fast)}.media-card-checkbox:hover{background:#fff3}.media-card-checkbox-checked{background:var(--color-accent);border-color:var(--color-accent)}.media-card-favourite{width:28px;height:28px;border:none;background:#00000080;border-radius:var(--radius-full);cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all var(--transition-fast);box-shadow:0 1px 3px #0000004d;padding:0}.media-card-favourite:hover{background:#000000b3;transform:scale(1.15)}.media-card-favourite-icon{font-size:14px;line-height:1}.media-card-favourite-active{background:#ff64644d}.media-card-favourite-active:hover{background:#ff646480}.media-card-edit{border:none;background:#000000b3;border-radius:var(--radius-sm);cursor:pointer;display:flex;align-items:center;justify-content:center;color:#fff;font-size:11px;font-weight:600;padding:4px 8px;transition:all var(--transition-fast);position:absolute;bottom:var(--space-2);right:var(--space-2);box-shadow:0 1px 3px #0000004d}.media-card-edit:hover{background:var(--color-accent)}.media-card-badges{position:absolute;bottom:var(--space-2);left:var(--space-2);display:flex;gap:4px;align-items:center}.media-card-flag{width:14px;height:14px;border-radius:var(--radius-full);border:2px solid rgba(255,255,255,.8);box-shadow:0 1px 2px #0000004d;cursor:help}.media-card-flag-green{background-color:#22c55e}.media-card-flag-yellow{background-color:#eab308}.media-card-flag-red{background-color:#ef4444}.media-card-status{width:18px;height:18px;border-radius:var(--radius-full);display:flex;align-items:center;justify-content:center;color:#fff;box-shadow:0 1px 2px #0000004d;cursor:help}.media-card-status-approved{background-color:#22c55e}.media-card-status-rejected{background-color:#ef4444}.media-card-similarity-container{position:absolute;bottom:var(--space-2);right:var(--space-2);display:flex;flex-direction:column;gap:2px;align-items:flex-end}.media-card-similarity{display:flex;align-items:center;gap:3px;color:#fff;font-size:10px;font-weight:600;padding:2px 5px;border-radius:var(--radius-sm);box-shadow:0 1px 2px #0000004d;cursor:help}.media-card-similarity-text{background:#3b82f6e6}.media-card-similarity-image{background:#9333eae6}.media-card-footer{padding:var(--space-2) var(--space-3);border-top:1px solid var(--color-border-light)}.media-card-filename{font-size:var(--text-xs);color:var(--color-text-secondary);display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.media-card-skeleton{background-color:var(--color-bg-primary);border-radius:var(--radius-md);overflow:hidden}.skeleton-image{aspect-ratio:1;background:linear-gradient(90deg,var(--color-bg-tertiary) 0%,var(--color-bg-hover) 50%,var(--color-bg-tertiary) 100%);background-size:200% 100%;animation:shimmer 1.5s infinite}.skeleton-footer{padding:var(--space-2) var(--space-3);border-top:1px solid var(--color-border-light)}.skeleton-text{height:14px;width:70%;background:linear-gradient(90deg,var(--color-bg-tertiary) 0%,var(--color-bg-hover) 50%,var(--color-bg-tertiary) 100%);background-size:200% 100%;animation:shimmer 1.5s infinite;border-radius:var(--radius-sm)}@keyframes shimmer{0%{background-position:-200% 0}to{background-position:200% 0}}.empty-state{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:var(--space-12);text-align:center}.empty-state-icon{color:var(--color-text-muted);margin-bottom:var(--space-4)}.empty-state-title{font-size:var(--text-lg);font-weight:var(--font-semibold);color:var(--color-text-primary);margin:0 0 var(--space-2) 0}.empty-state-description{font-size:var(--text-sm);color:var(--color-text-secondary);margin:0;max-width:400px}.gallery-grid-container{padding:var(--space-6)}.gallery-grid-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:var(--space-4)}.gallery-grid-count{font-size:var(--text-sm);color:var(--color-text-secondary)}.gallery-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(var(--card-min-width),1fr));gap:var(--grid-gap)}.gallery-grid-footer{display:flex;justify-content:center;margin-top:var(--space-8)}.load-more-btn{padding:var(--space-3) var(--space-6);background-color:var(--color-bg-primary);border:1px solid var(--color-border);border-radius:var(--radius-md);font-size:var(--text-sm);font-weight:var(--font-medium);color:var(--color-text-primary);cursor:pointer;transition:all var(--transition-fast)}.load-more-btn:hover{background-color:var(--color-bg-hover);border-color:var(--color-text-muted)}@media(min-width:1280px){.gallery-grid{grid-template-columns:repeat(auto-fill,minmax(200px,1fr))}}@media(max-width:640px){.gallery-grid-container{padding:var(--space-4)}.gallery-grid{grid-template-columns:repeat(2,1fr);gap:var(--space-3)}}.image-viewer{width:100%;height:100%;display:flex;flex-direction:column}.image-viewer-container{flex:1;overflow:hidden;display:flex;align-items:center;justify-content:center;position:relative}.image-viewer-img{max-width:100%;max-height:100%;object-fit:contain;transition:transform .1s ease-out,opacity .2s ease;-webkit-user-select:none;user-select:none}.image-viewer-loader{position:absolute;inset:0;display:flex;align-items:center;justify-content:center}.image-viewer-spinner{width:40px;height:40px;border:3px solid rgba(255,255,255,.2);border-top-color:#fff;border-radius:50%;animation:spin .8s linear infinite}.image-viewer-controls{display:flex;align-items:center;justify-content:center;gap:var(--space-2);padding:var(--space-3);background-color:#000c}.image-viewer-btn{display:flex;align-items:center;justify-content:center;width:36px;height:36px;border:none;background:#ffffff1a;color:#fff;cursor:pointer;border-radius:var(--radius-md);transition:all var(--transition-fast)}.image-viewer-btn:hover{background:#fff3}.image-viewer-scale{font-size:var(--text-sm);color:#fffc;min-width:60px;text-align:center}.metadata-panel{padding:var(--space-4)}.metadata-section{margin-bottom:var(--space-6)}.metadata-section-title{font-size:var(--text-sm);font-weight:var(--font-semibold);color:var(--color-text-primary);margin:0 0 var(--space-3) 0;padding-bottom:var(--space-2);border-bottom:1px solid var(--color-border-light)}.metadata-field{margin-bottom:var(--space-3)}.metadata-field label{display:block;font-size:var(--text-xs);font-weight:var(--font-medium);color:var(--color-text-secondary);margin-bottom:var(--space-1)}.metadata-field input,.metadata-field textarea{width:100%;padding:var(--space-2);background-color:var(--color-bg-secondary);border:1px solid var(--color-border);border-radius:var(--radius-md);font-size:var(--text-sm);color:var(--color-text-primary);transition:all var(--transition-fast)}.metadata-field input:focus,.metadata-field textarea:focus{outline:none;border-color:var(--color-accent);background-color:var(--color-bg-primary)}.metadata-field textarea{resize:vertical;min-height:60px}.metadata-field-readonly span{display:block;font-size:var(--text-sm);color:var(--color-text-primary);padding:var(--space-2);background-color:var(--color-bg-tertiary);border-radius:var(--radius-md)}.metadata-actions{padding-top:var(--space-4);border-top:1px solid var(--color-border-light)}.metadata-actions button{width:100%;justify-content:center}.detail-modal-overlay{position:fixed;inset:0;background-color:#000000e6;z-index:1000;display:flex;align-items:stretch}.detail-modal{width:100%;height:100%;display:flex;flex-direction:column;background-color:var(--color-bg-primary)}.detail-modal-header{display:flex;align-items:center;justify-content:space-between;padding:var(--space-3) var(--space-4);border-bottom:1px solid var(--color-border-light);background-color:var(--color-bg-primary);flex-shrink:0}.detail-modal-header-left{display:flex;align-items:center;gap:var(--space-4)}.detail-breadcrumb{display:flex;align-items:center;gap:var(--space-2);padding:var(--space-2) var(--space-3);border:none;background:var(--color-bg-secondary);color:var(--color-text-secondary);cursor:pointer;border-radius:var(--radius-md);transition:all var(--transition-fast);font-size:var(--text-sm);font-weight:var(--font-medium)}.detail-breadcrumb:hover{background-color:var(--color-bg-hover);color:var(--color-accent)}.detail-breadcrumb-separator{color:var(--color-text-muted);margin-left:var(--space-1)}.detail-modal-nav{display:flex;align-items:center;gap:var(--space-2)}.detail-nav-btn{display:flex;align-items:center;justify-content:center;width:36px;height:36px;border:none;background:none;color:var(--color-text-secondary);cursor:pointer;border-radius:var(--radius-md);transition:all var(--transition-fast)}.detail-nav-btn:hover:not(:disabled){background-color:var(--color-bg-hover);color:var(--color-text-primary)}.detail-nav-btn:disabled{opacity:.4;cursor:not-allowed}.detail-nav-position{font-size:var(--text-sm);color:var(--color-text-secondary);min-width:80px;text-align:center}.detail-modal-actions{display:flex;align-items:center;gap:var(--space-2)}.detail-action-btn{display:flex;align-items:center;gap:var(--space-1);padding:var(--space-2);border:none;background:none;color:var(--color-text-secondary);cursor:pointer;border-radius:var(--radius-md);transition:all var(--transition-fast);font-size:var(--text-sm)}.detail-action-btn:hover{background-color:var(--color-bg-hover);color:var(--color-text-primary)}.detail-action-btn-active{color:#ff6b6b}.detail-action-btn-danger:hover{color:var(--color-error)}.detail-action-btn-edit:hover{color:var(--color-accent)}.detail-close-btn{display:flex;align-items:center;justify-content:center;width:40px;height:40px;border:none;background:none;color:var(--color-text-secondary);cursor:pointer;border-radius:var(--radius-md);transition:all var(--transition-fast);margin-left:var(--space-2)}.detail-close-btn:hover{background-color:var(--color-bg-hover);color:var(--color-text-primary)}.detail-modal-content{display:flex;flex:1;overflow:hidden}.detail-image-section{flex:1;background-color:#1a1a1a;display:flex;align-items:center;justify-content:center;overflow:hidden}.detail-sidebar{width:320px;background-color:var(--color-bg-primary);border-left:1px solid var(--color-border-light);overflow-y:auto;flex-shrink:0}@media(max-width:768px){.detail-modal-content{flex-direction:column}.detail-sidebar{width:100%;max-height:40vh;border-left:none;border-top:1px solid var(--color-border-light)}}.upload-modal{display:flex;flex-direction:column;gap:var(--space-6)}.upload-dropzone{border:2px dashed var(--color-border);border-radius:var(--radius-lg);padding:var(--space-10);text-align:center;cursor:pointer;transition:all var(--transition-fast)}.upload-dropzone:hover,.upload-dropzone-active{border-color:var(--color-accent);background-color:var(--color-accent-light)}.upload-dropzone-icon{color:var(--color-text-muted);margin-bottom:var(--space-4)}.upload-dropzone:hover .upload-dropzone-icon,.upload-dropzone-active .upload-dropzone-icon{color:var(--color-accent)}.upload-dropzone-text{font-size:var(--text-base);color:var(--color-text-primary);margin:0 0 var(--space-2) 0}.upload-dropzone-text span{color:var(--color-accent)}.upload-dropzone-hint{font-size:var(--text-sm);color:var(--color-text-muted);margin:0}.upload-input-hidden{display:none}.upload-queue{border-top:1px solid var(--color-border-light);padding-top:var(--space-4)}.upload-queue-title{font-size:var(--text-sm);font-weight:var(--font-semibold);color:var(--color-text-secondary);margin:0 0 var(--space-3) 0}.upload-queue-list{display:flex;flex-direction:column;gap:var(--space-2);max-height:240px;overflow-y:auto}.upload-item{display:flex;align-items:center;gap:var(--space-3);padding:var(--space-3);background-color:var(--color-bg-secondary);border-radius:var(--radius-md);border:1px solid var(--color-border-light)}.upload-item-success{border-color:var(--color-success);background-color:#40c0570d}.upload-item-error{border-color:var(--color-error);background-color:#fa52520d}.upload-item-icon{color:var(--color-text-muted);flex-shrink:0}.upload-item-info{flex:1;min-width:0}.upload-item-name{display:block;font-size:var(--text-sm);color:var(--color-text-primary);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.upload-item-metadata{display:flex;align-items:center;gap:var(--space-1);font-size:var(--text-xs);color:var(--color-text-muted);margin-top:var(--space-1)}.upload-item-status{flex-shrink:0;min-width:80px;text-align:center;font-size:var(--text-sm);color:var(--color-text-muted)}.upload-progress{width:80px;height:6px;background-color:var(--color-bg-tertiary);border-radius:var(--radius-full);overflow:hidden}.upload-progress-bar{height:100%;background-color:var(--color-accent);transition:width .2s ease}.upload-status-success{color:var(--color-success)}.upload-status-error{color:var(--color-error);cursor:help}.upload-item-remove{display:flex;align-items:center;justify-content:center;width:24px;height:24px;border:none;background:none;color:var(--color-text-muted);cursor:pointer;border-radius:var(--radius-sm);transition:all var(--transition-fast)}.upload-item-remove:hover{background-color:var(--color-bg-hover);color:var(--color-error)}.upload-summary{padding:var(--space-4);background-color:var(--color-bg-secondary);border-radius:var(--radius-md);border:1px solid var(--color-border-light)}.upload-summary-stats{display:flex;flex-direction:column;gap:var(--space-2)}.upload-summary-success{display:flex;align-items:center;gap:var(--space-2);color:var(--color-success);font-size:var(--text-sm);font-weight:var(--font-medium)}.upload-summary-error{display:flex;align-items:center;gap:var(--space-2);color:var(--color-error);font-size:var(--text-sm);font-weight:var(--font-medium)}.upload-actions{display:flex;justify-content:flex-end;gap:var(--space-3);padding-top:var(--space-4);border-top:1px solid var(--color-border-light)}.edit-modal-backdrop{position:fixed;inset:0;background-color:#000c;z-index:1100;display:flex;align-items:center;justify-content:center;padding:var(--space-4)}.edit-modal{background-color:var(--color-bg-primary);border-radius:var(--radius-lg);box-shadow:var(--shadow-xl);max-width:800px;width:100%;max-height:90vh;display:flex;flex-direction:column;overflow:hidden}.edit-modal-header{display:flex;align-items:center;justify-content:space-between;padding:var(--space-4);border-bottom:1px solid var(--color-border-light)}.edit-modal-header h2{font-size:var(--text-lg);font-weight:var(--font-semibold);margin:0}.edit-modal-close{display:flex;align-items:center;justify-content:center;width:36px;height:36px;border:none;background:none;color:var(--color-text-secondary);cursor:pointer;border-radius:var(--radius-md);transition:all var(--transition-fast)}.edit-modal-close:hover{background-color:var(--color-bg-hover);color:var(--color-text-primary)}.edit-modal-content{display:flex;flex-wrap:wrap;flex:1;overflow:hidden}.edit-modal-api-warning{display:flex;align-items:center;gap:var(--space-2);padding:var(--space-3) var(--space-4);background-color:#eab30826;border-bottom:1px solid rgba(234,179,8,.3);color:#ca8a04;font-size:var(--text-sm);width:100%;flex-shrink:0}.edit-modal-preview{flex:1;background-color:#1a1a1a;display:flex;align-items:center;justify-content:center;padding:var(--space-4);min-height:300px}.edit-modal-preview img{max-width:100%;max-height:400px;object-fit:contain;border-radius:var(--radius-md)}.edit-modal-form{width:300px;padding:var(--space-4);display:flex;flex-direction:column;gap:var(--space-3);border-left:1px solid var(--color-border-light)}.edit-modal-form>label{font-size:var(--text-sm);font-weight:var(--font-medium);color:var(--color-text-primary)}.edit-modal-field{display:flex;flex-direction:column;gap:var(--space-2)}.edit-modal-field label{font-size:var(--text-sm);font-weight:var(--font-medium);color:var(--color-text-primary)}.edit-modal-select{width:100%;padding:var(--space-2) var(--space-3);border:1px solid var(--color-border);border-radius:var(--radius-md);background-color:var(--color-bg-secondary);color:var(--color-text-primary);font-size:var(--text-sm);cursor:pointer;transition:border-color var(--transition-fast)}.edit-modal-select:focus{outline:none;border-color:var(--color-accent);box-shadow:0 0 0 2px #3b82f633}.edit-modal-select:disabled{opacity:.6;cursor:not-allowed}.edit-modal-options-row{display:grid;grid-template-columns:1fr 1fr;gap:var(--space-3)}.edit-modal-upload-zone{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:var(--space-2);padding:var(--space-4);border:2px dashed var(--color-border);border-radius:var(--radius-md);background-color:var(--color-bg-secondary);color:var(--color-text-muted);cursor:pointer;transition:all var(--transition-fast)}.edit-modal-upload-zone:hover:not(:has(input:disabled)){border-color:var(--color-accent);color:var(--color-accent);background-color:#3b82f60d}.edit-modal-file-input{display:none}.edit-modal-reference-preview{display:flex;align-items:center;gap:var(--space-3);padding:var(--space-2);border:1px solid var(--color-border);border-radius:var(--radius-md);background-color:var(--color-bg-secondary)}.edit-modal-reference-preview img{width:60px;height:60px;object-fit:cover;border-radius:var(--radius-sm)}.edit-modal-reference-info{flex:1;display:flex;align-items:center;justify-content:space-between;min-width:0}.edit-modal-reference-info span{font-size:var(--text-sm);color:var(--color-text-secondary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.edit-modal-reference-remove{display:flex;align-items:center;justify-content:center;width:28px;height:28px;border:none;background:none;color:var(--color-text-muted);cursor:pointer;border-radius:var(--radius-sm);transition:all var(--transition-fast);flex-shrink:0}.edit-modal-reference-remove:hover:not(:disabled){background-color:#ef44441a;color:var(--color-error)}.edit-modal-reference-remove:disabled{opacity:.6;cursor:not-allowed}.edit-modal-form textarea{width:100%;min-height:150px;padding:var(--space-3);border:1px solid var(--color-border);border-radius:var(--radius-md);background-color:var(--color-bg-secondary);color:var(--color-text-primary);font-size:var(--text-sm);resize:vertical;font-family:inherit}.edit-modal-form textarea:focus{outline:none;border-color:var(--color-accent);box-shadow:0 0 0 2px #3b82f633}.edit-modal-form textarea:disabled{opacity:.6;cursor:not-allowed}.edit-modal-form textarea::placeholder{color:var(--color-text-muted)}.edit-modal-char-count{font-size:var(--text-xs);color:var(--color-text-muted);text-align:right;margin-top:calc(-1 * var(--space-2))}.edit-modal-error{background-color:#ef44441a;border:1px solid rgba(239,68,68,.3);color:var(--color-error);padding:var(--space-2) var(--space-3);border-radius:var(--radius-md);font-size:var(--text-sm)}.edit-modal-actions{display:flex;gap:var(--space-2);margin-top:auto}.edit-modal-cancel,.edit-modal-generate{flex:1;display:flex;align-items:center;justify-content:center;gap:var(--space-2);padding:var(--space-3);border-radius:var(--radius-md);font-size:var(--text-sm);font-weight:var(--font-medium);cursor:pointer;transition:all var(--transition-fast)}.edit-modal-cancel{background-color:var(--color-bg-secondary);border:1px solid var(--color-border);color:var(--color-text-primary)}.edit-modal-cancel:hover:not(:disabled){background-color:var(--color-bg-hover)}.edit-modal-generate{background-color:var(--color-accent);border:none;color:#fff}.edit-modal-generate:hover:not(:disabled){background-color:var(--color-accent-hover)}.edit-modal-generate:disabled,.edit-modal-cancel:disabled{opacity:.6;cursor:not-allowed}.edit-modal-hint{font-size:var(--text-xs);color:var(--color-text-muted);text-align:center;margin:0}.edit-modal-hint kbd{background-color:var(--color-bg-tertiary);border:1px solid var(--color-border);border-radius:var(--radius-sm);padding:2px 4px;font-size:var(--text-xs);font-family:inherit}@media(max-width:768px){.edit-modal-content{flex-direction:column}.edit-modal-form{width:100%;border-left:none;border-top:1px solid var(--color-border-light)}.edit-modal-preview{min-height:200px}.edit-modal-preview img{max-height:250px}.edit-modal-options-row{grid-template-columns:1fr}}.compare-panel{flex:1;display:flex;flex-direction:column;background-color:#1a1a1a;min-width:0;position:relative;transition:box-shadow var(--transition-fast)}.compare-panel:first-child{border-right:1px solid var(--color-border-light)}.compare-panel-active{box-shadow:inset 0 0 0 2px var(--color-accent)}.compare-panel-header{display:flex;align-items:center;justify-content:space-between;padding:var(--space-2) var(--space-3);background-color:#0009;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border-bottom:1px solid rgba(255,255,255,.1);flex-shrink:0;z-index:10}.compare-panel-label{display:flex;align-items:center;gap:var(--space-2);min-width:0}.compare-panel-badge{width:24px;height:24px;display:flex;align-items:center;justify-content:center;border-radius:var(--radius-sm);font-size:var(--text-xs);font-weight:var(--font-bold);flex-shrink:0}.compare-panel-badge-a{background-color:var(--color-accent);color:#fff}.compare-panel-badge-b{background-color:#9b59b6;color:#fff}.compare-panel-filename{font-size:var(--text-sm);color:var(--color-text-secondary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.compare-panel-nav{display:flex;align-items:center;gap:var(--space-1);flex-shrink:0}.compare-nav-btn{display:flex;align-items:center;justify-content:center;width:28px;height:28px;border:none;background:#ffffff1a;color:var(--color-text-secondary);cursor:pointer;border-radius:var(--radius-sm);transition:all var(--transition-fast)}.compare-nav-btn:hover:not(:disabled){background:#fff3;color:var(--color-text-primary)}.compare-nav-btn:disabled{opacity:.3;cursor:not-allowed}.compare-nav-position{font-size:var(--text-xs);color:var(--color-text-muted);min-width:60px;text-align:center}.compare-image-container{flex:1;overflow:hidden;display:flex;align-items:center;justify-content:center;position:relative}.compare-image-img{max-width:100%;max-height:100%;object-fit:contain;transition:transform .1s ease-out,opacity .2s ease;-webkit-user-select:none;user-select:none}.compare-image-loader{position:absolute;inset:0;display:flex;align-items:center;justify-content:center}.compare-image-spinner{width:32px;height:32px;border:3px solid rgba(255,255,255,.2);border-top-color:#fff;border-radius:50%;animation:compare-spin .8s linear infinite}@keyframes compare-spin{to{transform:rotate(360deg)}}.compare-image-controls{display:flex;align-items:center;justify-content:center;gap:var(--space-1);padding:var(--space-2);background-color:#0009;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);flex-shrink:0}.compare-zoom-btn{display:flex;align-items:center;justify-content:center;width:28px;height:28px;border:none;background:#ffffff1a;color:#fff;cursor:pointer;border-radius:var(--radius-sm);transition:all var(--transition-fast)}.compare-zoom-btn:hover{background:#fff3}.compare-zoom-scale{font-size:var(--text-xs);color:#ffffffb3;min-width:45px;text-align:center}.compare-sidebar{width:320px;flex-shrink:0;background-color:var(--color-bg-primary);border-left:1px solid var(--color-border-light);display:flex;flex-direction:column;overflow:hidden}.compare-tabs{display:flex;border-bottom:1px solid var(--color-border-light);flex-shrink:0}.compare-tab{flex:1;padding:var(--space-3) var(--space-2);border:none;background:none;font-size:var(--text-sm);font-weight:var(--font-medium);color:var(--color-text-secondary);cursor:pointer;transition:all var(--transition-fast);display:flex;align-items:center;justify-content:center;gap:var(--space-2);position:relative;min-width:0}.compare-tab:hover{background-color:var(--color-bg-hover)}.compare-tab-active{color:var(--color-text-primary);background-color:var(--color-bg-secondary)}.compare-tab-active:after{content:"";position:absolute;bottom:0;left:0;right:0;height:2px;background-color:var(--color-accent)}.compare-tab:first-child.compare-tab-active:after{background-color:var(--color-accent)}.compare-tab:last-child.compare-tab-active:after{background-color:#9b59b6}.compare-tab-badge{width:20px;height:20px;display:flex;align-items:center;justify-content:center;border-radius:var(--radius-xs);font-size:var(--text-xs);font-weight:var(--font-bold);flex-shrink:0}.compare-tab-badge-a{background-color:var(--color-accent);color:#fff}.compare-tab-badge-b{background-color:#9b59b6;color:#fff}.compare-tab-label{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0}.compare-metadata-content{flex:1;overflow-y:auto}.compare-metadata-panel{padding:var(--space-4)}.compare-metadata-panel .metadata-section{margin-bottom:var(--space-5)}.compare-metadata-panel .metadata-section:last-child{margin-bottom:0}.compare-metadata-panel .metadata-section-title{font-size:var(--text-xs);font-weight:var(--font-semibold);color:var(--color-text-muted);text-transform:uppercase;letter-spacing:.05em;margin-bottom:var(--space-3)}.compare-metadata-panel .metadata-field{margin-bottom:var(--space-3)}.compare-metadata-panel .metadata-field label{display:block;font-size:var(--text-xs);font-weight:var(--font-medium);color:var(--color-text-secondary);margin-bottom:var(--space-1)}.compare-metadata-panel .metadata-field input,.compare-metadata-panel .metadata-field textarea{width:100%;padding:var(--space-2);border:1px solid var(--color-border-light);border-radius:var(--radius-md);background-color:var(--color-bg-secondary);color:var(--color-text-primary);font-size:var(--text-sm);transition:border-color var(--transition-fast)}.compare-metadata-panel .metadata-field input:focus,.compare-metadata-panel .metadata-field textarea:focus{outline:none;border-color:var(--color-accent)}.compare-metadata-panel .metadata-field textarea{resize:vertical;min-height:60px}.compare-metadata-panel .metadata-field-readonly span{display:block;font-size:var(--text-sm);color:var(--color-text-primary);word-break:break-word}.compare-metadata-panel .metadata-prompt{font-style:italic;line-height:1.5}.compare-metadata-panel .metadata-actions{margin-top:var(--space-4);padding-top:var(--space-4);border-top:1px solid var(--color-border-light)}@media(max-width:1200px){.compare-sidebar{width:280px}}@media(max-width:992px){.compare-sidebar{width:100%;height:40vh;border-left:none;border-top:1px solid var(--color-border-light)}}.compare-modal-overlay{position:fixed;inset:0;background-color:#000000e6;z-index:1000;display:flex;align-items:stretch}.compare-modal{width:100%;height:100%;display:flex;flex-direction:column;background-color:var(--color-bg-primary)}.compare-modal-header{display:flex;align-items:center;justify-content:space-between;padding:var(--space-3) var(--space-4);border-bottom:1px solid var(--color-border-light);background-color:var(--color-bg-primary);flex-shrink:0}.compare-modal-header-left{display:flex;align-items:center;gap:var(--space-4)}.compare-breadcrumb{display:flex;align-items:center;gap:var(--space-2);padding:var(--space-2) var(--space-3);border:none;background:var(--color-bg-secondary);color:var(--color-text-secondary);cursor:pointer;border-radius:var(--radius-md);transition:all var(--transition-fast);font-size:var(--text-sm);font-weight:var(--font-medium)}.compare-breadcrumb:hover{background-color:var(--color-bg-hover);color:var(--color-accent)}.compare-mode-label{font-size:var(--text-sm);font-weight:var(--font-semibold);color:var(--color-text-primary);padding:var(--space-1) var(--space-3);background:linear-gradient(135deg,var(--color-accent),#9b59b6);border-radius:var(--radius-md)}.compare-modal-actions{display:flex;align-items:center;gap:var(--space-2)}.compare-action-btn{display:flex;align-items:center;gap:var(--space-2);padding:var(--space-2) var(--space-3);border:none;background:var(--color-bg-secondary);color:var(--color-text-secondary);cursor:pointer;border-radius:var(--radius-md);transition:all var(--transition-fast);font-size:var(--text-sm);font-weight:var(--font-medium)}.compare-action-btn:hover{background-color:var(--color-bg-hover);color:var(--color-text-primary)}.compare-close-btn{display:flex;align-items:center;justify-content:center;width:40px;height:40px;border:none;background:none;color:var(--color-text-secondary);cursor:pointer;border-radius:var(--radius-md);transition:all var(--transition-fast);margin-left:var(--space-2)}.compare-close-btn:hover{background-color:var(--color-bg-hover);color:var(--color-text-primary)}.compare-modal-content{display:flex;flex:1;overflow:hidden}.compare-image-section{flex:1;display:flex;min-width:0}.compare-shortcuts-hint{display:flex;align-items:center;justify-content:center;gap:var(--space-6);padding:var(--space-2);background-color:var(--color-bg-secondary);border-top:1px solid var(--color-border-light);flex-shrink:0}.compare-shortcuts-hint span{display:flex;align-items:center;gap:var(--space-1);font-size:var(--text-xs);color:var(--color-text-muted)}.compare-shortcuts-hint kbd{display:inline-flex;align-items:center;justify-content:center;min-width:20px;height:20px;padding:0 var(--space-1);background-color:var(--color-bg-primary);border:1px solid var(--color-border-light);border-radius:var(--radius-xs);font-family:inherit;font-size:var(--text-xs);color:var(--color-text-secondary)}@media(max-width:1200px){.compare-shortcuts-hint{gap:var(--space-4)}}@media(max-width:992px){.compare-modal-content{flex-direction:column}.compare-image-section{flex-direction:row;height:55vh;flex:none}.compare-shortcuts-hint{display:none}}@media(max-width:768px){.compare-modal-header{padding:var(--space-2) var(--space-3)}.compare-modal-header-left{gap:var(--space-2)}.compare-breadcrumb span{display:none}.compare-mode-label{font-size:var(--text-xs);padding:var(--space-1) var(--space-2)}.compare-action-btn span{display:none}.compare-image-section{flex-direction:column;height:auto;flex:1}}.selection-action-bar{position:fixed;bottom:var(--space-6);left:50%;transform:translate(-50%);z-index:100;animation:slideUp .2s ease-out}@keyframes slideUp{0%{opacity:0;transform:translate(-50%) translateY(20px)}to{opacity:1;transform:translate(-50%) translateY(0)}}.selection-action-bar-content{display:flex;align-items:center;gap:var(--space-4);padding:var(--space-3) var(--space-4);background-color:var(--color-bg-primary);border:1px solid var(--color-border-light);border-radius:var(--radius-lg);box-shadow:0 8px 32px #0000004d,0 2px 8px #0003}.selection-info{display:flex;align-items:center;gap:var(--space-2);font-size:var(--text-sm);font-weight:var(--font-medium);color:var(--color-text-primary);padding-right:var(--space-4);border-right:1px solid var(--color-border-light)}.selection-info svg{color:var(--color-accent)}.selection-actions{display:flex;align-items:center;gap:var(--space-2)}.selection-action-btn{display:flex;align-items:center;gap:var(--space-2);padding:var(--space-2) var(--space-3);border:none;background:var(--color-bg-secondary);color:var(--color-text-secondary);cursor:pointer;border-radius:var(--radius-md);transition:all var(--transition-fast);font-size:var(--text-sm);font-weight:var(--font-medium)}.selection-action-btn:hover{background-color:var(--color-bg-hover);color:var(--color-text-primary)}.selection-action-btn-danger{background:#dc3545;color:#fff}.selection-action-btn-danger:hover{background:#c82333;color:#fff}.selection-action-btn-primary{background:linear-gradient(135deg,var(--color-accent),#9b59b6);color:#fff}.selection-action-btn-primary:hover{opacity:.9;color:#fff}@media(max-width:640px){.selection-action-bar{bottom:var(--space-4);left:var(--space-4);right:var(--space-4);transform:none}.selection-action-bar-content{width:100%;justify-content:space-between}}.workspace-card{background-color:var(--color-bg-primary);border-radius:var(--radius-md);box-shadow:var(--shadow-card);overflow:hidden;cursor:pointer;transition:all var(--transition-fast)}.workspace-card:hover{box-shadow:var(--shadow-card-hover);transform:translateY(-2px)}.workspace-card-selected{box-shadow:0 0 0 2px var(--color-accent)}.workspace-card-selected:hover{box-shadow:0 0 0 2px var(--color-accent),var(--shadow-card-hover)}.workspace-card-image-container{position:relative;aspect-ratio:1;background-color:var(--color-bg-tertiary)}.workspace-card-select{position:absolute;top:var(--space-2);left:var(--space-2);width:24px;height:24px;border:2px solid white;border-radius:var(--radius-sm);background:#0006;color:#fff;cursor:pointer;display:flex;align-items:center;justify-content:center;opacity:0;transition:all var(--transition-fast);z-index:5}.workspace-card-select-visible{opacity:1}.workspace-card-select:hover{background:var(--color-accent);border-color:var(--color-accent)}.workspace-card-selected .workspace-card-select{opacity:1;background:var(--color-accent);border-color:var(--color-accent)}.workspace-card-image{width:100%;height:100%;object-fit:cover;display:block}.workspace-card-placeholder{width:100%;height:100%;display:flex;align-items:center;justify-content:center;color:var(--color-text-muted);font-size:var(--text-sm)}.workspace-card-overlay{position:absolute;inset:0;background:linear-gradient(to bottom,transparent 60%,rgba(0,0,0,.5) 100%);opacity:0;transition:opacity var(--transition-fast);display:flex;align-items:flex-end;justify-content:flex-end;padding:var(--space-2);gap:var(--space-2)}.workspace-card-overlay-visible{opacity:1}.workspace-card-action{width:32px;height:32px;border:none;border-radius:var(--radius-full);cursor:pointer;display:flex;align-items:center;justify-content:center;color:#fff;transition:all var(--transition-fast)}.workspace-card-edit{background:#0009}.workspace-card-edit:hover{background:var(--color-accent)}.workspace-card-delete{background:#0009}.workspace-card-delete:hover{background:var(--color-error)}.workspace-card-similarity{position:absolute;top:var(--space-2);right:var(--space-2);background:#0009;color:#fff;font-size:var(--text-xs);font-weight:var(--font-medium);padding:2px 6px;border-radius:var(--radius-sm)}.workspace-card-footer{padding:var(--space-2) var(--space-3);border-top:1px solid var(--color-border-light);display:flex;flex-direction:column;gap:var(--space-1)}.workspace-card-prompt{font-size:var(--text-xs);color:var(--color-text-secondary);display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.workspace-card-date{font-size:var(--text-xs);color:var(--color-text-muted)}.workspace-card-skeleton{background-color:var(--color-bg-primary);border-radius:var(--radius-md);box-shadow:var(--shadow-card);overflow:hidden}.workspace-card-skeleton-image{aspect-ratio:1;background:linear-gradient(90deg,var(--color-bg-tertiary) 25%,var(--color-bg-secondary) 50%,var(--color-bg-tertiary) 75%);background-size:200% 100%;animation:skeleton-shimmer 1.5s infinite}.workspace-card-skeleton-footer{padding:var(--space-2) var(--space-3);border-top:1px solid var(--color-border-light);display:flex;flex-direction:column;gap:var(--space-1)}.workspace-card-skeleton-text{height:12px;width:80%;background:linear-gradient(90deg,var(--color-bg-tertiary) 25%,var(--color-bg-secondary) 50%,var(--color-bg-tertiary) 75%);background-size:200% 100%;animation:skeleton-shimmer 1.5s infinite;border-radius:var(--radius-sm)}.workspace-card-skeleton-date{height:10px;width:50%;background:linear-gradient(90deg,var(--color-bg-tertiary) 25%,var(--color-bg-secondary) 50%,var(--color-bg-tertiary) 75%);background-size:200% 100%;animation:skeleton-shimmer 1.5s infinite;border-radius:var(--radius-sm)}@keyframes skeleton-shimmer{0%{background-position:200% 0}to{background-position:-200% 0}}.workspace-detail-overlay{position:fixed;inset:0;background-color:#000000e6;z-index:1000;display:flex;align-items:stretch}.workspace-detail-modal{width:100%;height:100%;display:flex;flex-direction:column;background-color:var(--color-bg-primary)}.workspace-detail-header{display:flex;align-items:center;justify-content:space-between;padding:var(--space-3) var(--space-4);border-bottom:1px solid var(--color-border-light);background-color:var(--color-bg-primary);flex-shrink:0}.workspace-detail-header-left{display:flex;align-items:center;gap:var(--space-4)}.workspace-detail-breadcrumb{display:flex;align-items:center;gap:var(--space-2);padding:var(--space-2) var(--space-3);border:none;background:var(--color-bg-secondary);color:var(--color-text-secondary);cursor:pointer;border-radius:var(--radius-md);transition:all var(--transition-fast);font-size:var(--text-sm);font-weight:var(--font-medium)}.workspace-detail-breadcrumb:hover{background-color:var(--color-bg-hover);color:var(--color-accent)}.workspace-detail-breadcrumb-separator{color:var(--color-text-muted);margin-left:var(--space-1)}.workspace-detail-nav{display:flex;align-items:center;gap:var(--space-2)}.workspace-detail-nav-btn{display:flex;align-items:center;justify-content:center;width:36px;height:36px;border:none;background:none;color:var(--color-text-secondary);cursor:pointer;border-radius:var(--radius-md);transition:all var(--transition-fast)}.workspace-detail-nav-btn:hover:not(:disabled){background-color:var(--color-bg-hover);color:var(--color-text-primary)}.workspace-detail-nav-btn:disabled{opacity:.4;cursor:not-allowed}.workspace-detail-nav-position{font-size:var(--text-sm);color:var(--color-text-secondary);min-width:80px;text-align:center}.workspace-detail-actions{display:flex;align-items:center;gap:var(--space-2)}.workspace-detail-action-btn{display:flex;align-items:center;justify-content:center;padding:var(--space-2);border:none;background:none;color:var(--color-text-secondary);cursor:pointer;border-radius:var(--radius-md);transition:all var(--transition-fast)}.workspace-detail-action-btn:hover{background-color:var(--color-bg-hover);color:var(--color-text-primary)}.workspace-detail-action-edit:hover{color:var(--color-accent)}.workspace-detail-action-danger:hover{color:var(--color-error)}.workspace-detail-close-btn{display:flex;align-items:center;justify-content:center;width:40px;height:40px;border:none;background:none;color:var(--color-text-secondary);cursor:pointer;border-radius:var(--radius-md);transition:all var(--transition-fast);margin-left:var(--space-2)}.workspace-detail-close-btn:hover{background-color:var(--color-bg-hover);color:var(--color-text-primary)}.workspace-detail-content{display:flex;flex:1;overflow:hidden}.workspace-detail-image-section{flex:1;background-color:#1a1a1a;display:flex;align-items:center;justify-content:center;overflow:hidden;padding:var(--space-4)}.workspace-detail-image-section img{max-width:100%;max-height:100%;object-fit:contain}.workspace-detail-sidebar{width:320px;background-color:var(--color-bg-primary);border-left:1px solid var(--color-border-light);overflow-y:auto;flex-shrink:0;padding:var(--space-4);display:flex;flex-direction:column;gap:var(--space-6)}.workspace-detail-info h3{font-size:var(--text-sm);font-weight:var(--font-semibold);color:var(--color-text-secondary);margin:0 0 var(--space-2) 0;text-transform:uppercase;letter-spacing:.05em}.workspace-detail-prompt{position:relative;background-color:var(--color-bg-secondary);border-radius:var(--radius-md);padding:var(--space-3);padding-right:var(--space-10)}.workspace-detail-prompt p{margin:0;font-size:var(--text-sm);color:var(--color-text-primary);line-height:1.5;white-space:pre-wrap}.workspace-detail-copy-btn{position:absolute;top:var(--space-2);right:var(--space-2);display:flex;align-items:center;justify-content:center;width:28px;height:28px;border:none;background:none;color:var(--color-text-muted);cursor:pointer;border-radius:var(--radius-sm);transition:all var(--transition-fast)}.workspace-detail-copy-btn:hover{background-color:var(--color-bg-hover);color:var(--color-text-primary)}.workspace-detail-meta{display:flex;flex-direction:column;gap:var(--space-3)}.workspace-detail-meta-item{display:flex;flex-direction:column;gap:var(--space-1)}.workspace-detail-meta-label{font-size:var(--text-xs);font-weight:var(--font-medium);color:var(--color-text-muted);text-transform:uppercase;letter-spacing:.05em}.workspace-detail-meta-value{font-size:var(--text-sm);color:var(--color-text-primary)}@media(max-width:768px){.workspace-detail-content{flex-direction:column}.workspace-detail-sidebar{width:100%;max-height:40vh;border-left:none;border-top:1px solid var(--color-border-light)}}.workspace-gallery{padding:var(--space-4);max-width:1600px;margin:0 auto}.workspace-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:var(--space-6);gap:var(--space-4);flex-wrap:wrap}.workspace-title{display:flex;align-items:center;gap:var(--space-3)}.workspace-title h1{font-size:var(--text-2xl);font-weight:var(--font-bold);margin:0}.workspace-title svg{color:var(--color-accent)}.workspace-count{font-size:var(--text-sm);color:var(--color-text-muted);background-color:var(--color-bg-secondary);padding:var(--space-1) var(--space-2);border-radius:var(--radius-full)}.workspace-search{display:flex;align-items:center;gap:var(--space-2);background-color:var(--color-bg-secondary);border:1px solid var(--color-border);border-radius:var(--radius-md);padding:var(--space-2) var(--space-3);width:300px}.workspace-search svg{color:var(--color-text-muted);flex-shrink:0}.workspace-search input{flex:1;border:none;background:none;color:var(--color-text-primary);font-size:var(--text-sm);outline:none}.workspace-search input::placeholder{color:var(--color-text-muted)}.workspace-search:focus-within{border-color:var(--color-accent);box-shadow:0 0 0 2px #3b82f633}.workspace-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:var(--space-4)}.workspace-empty{grid-column:1 / -1;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:var(--space-12);text-align:center;color:var(--color-text-muted)}.workspace-empty svg{margin-bottom:var(--space-4);opacity:.5}.workspace-empty h3{font-size:var(--text-lg);font-weight:var(--font-semibold);margin:0 0 var(--space-2) 0;color:var(--color-text-secondary)}.workspace-empty p{margin:0;font-size:var(--text-sm)}.workspace-load-more{display:flex;justify-content:center;margin-top:var(--space-6)}.workspace-load-more button{padding:var(--space-3) var(--space-6);background-color:var(--color-bg-secondary);border:1px solid var(--color-border);border-radius:var(--radius-md);color:var(--color-text-primary);font-size:var(--text-sm);font-weight:var(--font-medium);cursor:pointer;transition:all var(--transition-fast)}.workspace-load-more button:hover{background-color:var(--color-bg-hover);border-color:var(--color-accent)}.workspace-loading{text-align:center;padding:var(--space-4);color:var(--color-text-muted);font-size:var(--text-sm)}@media(max-width:768px){.workspace-header{flex-direction:column;align-items:stretch}.workspace-search{width:100%}.workspace-grid{grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:var(--space-3)}}.metadata-editor{display:flex;flex-direction:column;gap:var(--space-3)}.metadata-editor-modal{background-color:var(--color-bg-primary);border-radius:var(--radius-lg);padding:var(--space-4);width:100%;max-width:500px}.metadata-editor-inline{padding:var(--space-3);background-color:var(--color-bg-secondary);border-radius:var(--radius-md)}.metadata-editor-header{display:flex;align-items:center;justify-content:space-between;padding-bottom:var(--space-3);border-bottom:1px solid var(--color-border-light)}.metadata-editor-title{display:flex;align-items:center;gap:var(--space-2);color:var(--color-text-primary)}.metadata-editor-title h3{margin:0;font-size:var(--text-lg);font-weight:var(--font-semibold)}.metadata-editor-close{display:flex;align-items:center;justify-content:center;width:32px;height:32px;border:none;background:none;color:var(--color-text-muted);cursor:pointer;border-radius:var(--radius-md);transition:all var(--transition-fast)}.metadata-editor-close:hover{background-color:var(--color-bg-hover);color:var(--color-text-primary)}.metadata-editor-content{display:flex;flex-direction:column;gap:var(--space-2)}.metadata-editor-label{font-size:var(--text-sm);font-weight:var(--font-medium);color:var(--color-text-secondary)}.metadata-editor-textarea{min-height:120px;padding:var(--space-3);border:1px solid var(--color-border-light);border-radius:var(--radius-md);background-color:var(--color-bg-primary);color:var(--color-text-primary);font-family:inherit;font-size:var(--text-sm);line-height:1.5;resize:vertical;transition:border-color var(--transition-fast)}.metadata-editor-textarea:focus{outline:none;border-color:var(--color-accent)}.metadata-editor-textarea:disabled{opacity:.6;cursor:not-allowed}.metadata-editor-textarea::placeholder{color:var(--color-text-muted)}.metadata-editor-footer{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:var(--space-2)}.metadata-editor-char-count{font-size:var(--text-xs);color:var(--color-text-muted)}.metadata-editor-error{font-size:var(--text-xs);color:var(--color-error)}.metadata-editor-actions{display:flex;align-items:center;gap:var(--space-3);margin-left:auto}.metadata-editor-unsaved{font-size:var(--text-xs);color:var(--color-warning)}.metadata-editor-save{display:flex;align-items:center;gap:var(--space-1);padding:var(--space-2) var(--space-3);border:none;border-radius:var(--radius-md);background-color:var(--color-accent);color:#fff;font-size:var(--text-sm);font-weight:var(--font-medium);cursor:pointer;transition:all var(--transition-fast)}.metadata-editor-save:hover:not(:disabled){background-color:var(--color-accent-hover)}.metadata-editor-save:disabled{opacity:.5;cursor:not-allowed}.metadata-editor-hint{font-size:var(--text-xs);color:var(--color-text-muted);margin:0}.metadata-editor-hint kbd{display:inline-block;padding:2px 6px;background-color:var(--color-bg-secondary);border:1px solid var(--color-border-light);border-radius:var(--radius-sm);font-family:inherit;font-size:.85em}.metadata-editor-loading{display:flex;align-items:center;justify-content:center;gap:var(--space-2);padding:var(--space-4);color:var(--color-text-muted)}.login-page{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:var(--space-4);background-color:var(--color-bg-secondary)}.login-card{width:100%;max-width:400px;background-color:var(--color-bg-primary);border-radius:var(--radius-lg);box-shadow:var(--shadow-lg);padding:var(--space-8)}.login-header{text-align:center;margin-bottom:var(--space-6)}.login-logo{color:var(--color-accent);margin-bottom:var(--space-3)}.login-title{font-size:var(--text-xl);font-weight:var(--font-semibold);color:var(--color-text-primary);margin:0 0 var(--space-1) 0}.login-subtitle{font-size:var(--text-sm);color:var(--color-text-secondary);margin:0}.login-error{background-color:#fa52521a;border:1px solid var(--color-error);color:var(--color-error);padding:var(--space-3);border-radius:var(--radius-md);font-size:var(--text-sm);margin-bottom:var(--space-4)}.login-form{display:flex;flex-direction:column;gap:var(--space-4)}.login-field{display:flex;flex-direction:column;gap:var(--space-1)}.login-field label{font-size:var(--text-sm);font-weight:var(--font-medium);color:var(--color-text-secondary)}.login-field input{padding:var(--space-3);background-color:var(--color-bg-secondary);border:1px solid var(--color-border);border-radius:var(--radius-md);font-size:var(--text-base);transition:all var(--transition-fast)}.login-field input:focus{outline:none;border-color:var(--color-accent);background-color:var(--color-bg-primary)}.login-submit{width:100%;justify-content:center;margin-top:var(--space-2)}.login-divider{display:flex;align-items:center;gap:var(--space-4);margin:var(--space-6) 0}.login-divider:before,.login-divider:after{content:"";flex:1;height:1px;background-color:var(--color-border-light)}.login-divider span{font-size:var(--text-sm);color:var(--color-text-muted)}.login-google{width:100%;justify-content:center;gap:var(--space-2)}.google-icon{flex-shrink:0}.login-toggle{text-align:center;font-size:var(--text-sm);color:var(--color-text-secondary);margin-top:var(--space-6)}.login-toggle button{background:none;border:none;color:var(--color-accent);cursor:pointer;font-size:inherit}.login-toggle button:hover{text-decoration:underline}.login-loading{min-height:100vh;display:flex;align-items:center;justify-content:center}.login-spinner{width:40px;height:40px;border:3px solid var(--color-border);border-top-color:var(--color-accent);border-radius:50%;animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.batch-import-page{padding:var(--space-6);max-width:1400px;margin:0 auto}.batch-import-header{display:flex;align-items:center;gap:var(--space-4);margin-bottom:var(--space-6)}.batch-import-header h1{font-size:var(--text-2xl);font-weight:600;color:var(--color-text-primary)}.batch-import-content{display:grid;grid-template-columns:320px 1fr;gap:var(--space-6);min-height:600px}.batch-task-list{background:var(--color-bg-secondary);border-radius:var(--radius-lg);padding:var(--space-4);display:flex;flex-direction:column}.batch-task-list-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:var(--space-4)}.batch-task-list-header h2{font-size:var(--text-lg);font-weight:600}.refresh-btn{padding:var(--space-2);background:transparent;border:none;color:var(--color-text-secondary);cursor:pointer;border-radius:var(--radius-md)}.refresh-btn:hover{background:var(--color-bg-tertiary);color:var(--color-text-primary)}.create-task-form{display:flex;gap:var(--space-2);margin-bottom:var(--space-4)}.create-task-form input{flex:1;padding:var(--space-2) var(--space-3);border:1px solid var(--color-border);border-radius:var(--radius-md);background:var(--color-bg-primary);color:var(--color-text-primary);font-size:var(--text-sm)}.create-btn{display:flex;align-items:center;gap:var(--space-1);padding:var(--space-2) var(--space-3);background:var(--color-primary);color:#fff;border:none;border-radius:var(--radius-md);font-size:var(--text-sm);cursor:pointer;white-space:nowrap}.create-btn:hover{background:var(--color-primary-hover)}.create-btn:disabled{opacity:.6;cursor:not-allowed}.task-items{flex:1;overflow-y:auto;display:flex;flex-direction:column;gap:var(--space-2)}.no-tasks{text-align:center;color:var(--color-text-muted);padding:var(--space-6)}.task-item{padding:var(--space-3);background:var(--color-bg-primary);border-radius:var(--radius-md);cursor:pointer;border:2px solid transparent;transition:all var(--transition-fast)}.task-item:hover{border-color:var(--color-border)}.task-item.selected{border-color:var(--color-primary)}.task-item-header{display:flex;align-items:center;gap:var(--space-2);margin-bottom:var(--space-1)}.task-name{font-weight:500;font-size:var(--text-sm);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.task-item-meta{display:flex;gap:var(--space-3);font-size:var(--text-xs);color:var(--color-text-muted)}.task-progress-bar{height:4px;background:var(--color-bg-tertiary);border-radius:2px;margin-top:var(--space-2);overflow:hidden}.task-progress-fill{height:100%;background:var(--color-primary);transition:width .3s ease}.status-uploading{color:#3b82f6}.status-pending{color:#f59e0b}.status-processing{color:#6366f1}.status-completed{color:#22c55e}.status-warning{color:#f59e0b}.status-failed{color:#ef4444}.status-archived{color:#6b7280}.batch-task-detail{background:var(--color-bg-secondary);border-radius:var(--radius-lg);padding:var(--space-6)}.no-task-selected{display:flex;flex-direction:column;align-items:center;justify-content:center;height:100%;color:var(--color-text-muted);gap:var(--space-4)}.task-detail-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:var(--space-6)}.task-title{display:flex;align-items:center;gap:var(--space-3)}.task-title h2{font-size:var(--text-xl);font-weight:600}.task-actions{display:flex;gap:var(--space-2)}.start-btn,.archive-btn,.delete-btn,.upload-btn{display:flex;align-items:center;gap:var(--space-1);padding:var(--space-2) var(--space-3);border:none;border-radius:var(--radius-md);font-size:var(--text-sm);cursor:pointer}.start-btn{background:#22c55e;color:#fff}.start-btn:hover{background:#16a34a}.start-btn:disabled{opacity:.6;cursor:not-allowed}.archive-btn{background:var(--color-bg-tertiary);color:var(--color-text-primary)}.archive-btn:hover{background:var(--color-border)}.delete-btn{background:transparent;color:#ef4444;padding:var(--space-2)}.delete-btn:hover{background:#ef4444;color:#fff}.upload-btn{background:var(--color-primary);color:#fff}.upload-btn:hover{background:var(--color-primary-hover)}.upload-btn:disabled{opacity:.6;cursor:not-allowed}.batch-dropzone{border:2px dashed var(--color-border);border-radius:var(--radius-lg);padding:var(--space-8);text-align:center;cursor:pointer;transition:all var(--transition-fast);margin-bottom:var(--space-6)}.batch-dropzone:hover,.batch-dropzone.dragging{border-color:var(--color-primary);background:#6366f10d}.batch-dropzone p{margin:var(--space-3) 0 var(--space-1);font-weight:500}.batch-dropzone span{font-size:var(--text-sm);color:var(--color-text-muted)}.pending-files{background:var(--color-bg-primary);border-radius:var(--radius-md);padding:var(--space-4);margin-bottom:var(--space-6)}.pending-files-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:var(--space-3)}.pending-files-header h3{font-size:var(--text-base);font-weight:500}.pending-files-list{display:flex;flex-direction:column;gap:var(--space-1);max-height:200px;overflow-y:auto}.pending-file{display:flex;align-items:center;gap:var(--space-2);padding:var(--space-2);background:var(--color-bg-secondary);border-radius:var(--radius-sm);font-size:var(--text-sm)}.pending-file span{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.file-size{color:var(--color-text-muted);font-size:var(--text-xs);flex:0 0 auto!important}.more-files{text-align:center;color:var(--color-text-muted);font-size:var(--text-sm);padding:var(--space-2)}.progress-monitor{background:var(--color-bg-primary);border-radius:var(--radius-md);padding:var(--space-4);margin-bottom:var(--space-6)}.progress-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:var(--space-3)}.progress-header h3{font-size:var(--text-base);font-weight:500}.progress-percent{font-size:var(--text-lg);font-weight:600;color:var(--color-primary)}.progress-bar-large{height:8px;background:var(--color-bg-tertiary);border-radius:4px;overflow:hidden;margin-bottom:var(--space-4)}.progress-fill{height:100%;background:var(--color-primary);transition:width .3s ease}.progress-stats{display:flex;gap:var(--space-6)}.stat{display:flex;flex-direction:column;gap:var(--space-1)}.stat-label{font-size:var(--text-xs);color:var(--color-text-muted)}.stat-value{font-size:var(--text-lg);font-weight:600}.current-file{display:flex;align-items:center;gap:var(--space-2);margin-top:var(--space-4);padding:var(--space-2) var(--space-3);background:var(--color-bg-secondary);border-radius:var(--radius-sm);font-size:var(--text-sm);color:var(--color-text-secondary)}.task-stats{background:var(--color-bg-primary);border-radius:var(--radius-md);padding:var(--space-4);margin-bottom:var(--space-6)}.stat-row{display:flex;justify-content:space-between;padding:var(--space-2) 0;border-bottom:1px solid var(--color-border);font-size:var(--text-sm)}.stat-row:last-child{border-bottom:none}.status-badge{padding:var(--space-1) var(--space-2);border-radius:var(--radius-sm);font-size:var(--text-xs);font-weight:500;text-transform:capitalize}.status-badge.uploading{background:#3b82f61a;color:#3b82f6}.status-badge.pending{background:#f59e0b1a;color:#f59e0b}.status-badge.processing{background:#6366f11a;color:#6366f1}.status-badge.completed{background:#22c55e1a;color:#22c55e}.status-badge.completed_with_errors{background:#f59e0b1a;color:#f59e0b}.status-badge.failed{background:#ef44441a;color:#ef4444}.status-badge.archived{background:var(--color-bg-tertiary);color:var(--color-text-muted)}.task-errors{background:#ef44440d;border:1px solid rgba(239,68,68,.2);border-radius:var(--radius-md);padding:var(--space-4)}.task-errors h3{font-size:var(--text-base);font-weight:500;color:#ef4444;margin-bottom:var(--space-3)}.error-list{display:flex;flex-direction:column;gap:var(--space-2)}.error-item{display:flex;align-items:flex-start;gap:var(--space-2);font-size:var(--text-sm)}.error-filename{font-weight:500}.error-message{color:var(--color-text-secondary)}@media(max-width:900px){.batch-import-content{grid-template-columns:1fr}.batch-task-list{max-height:300px}}.projects-card{background:var(--bg-secondary, #1a1a1a);border-radius:12px;overflow:hidden;transition:transform .2s,box-shadow .2s;border:1px solid var(--border, #333);cursor:pointer}.projects-card:hover{transform:translateY(-2px);box-shadow:0 8px 24px #0000004d}.projects-card.selected{border-color:var(--accent, #3b82f6);box-shadow:0 0 0 2px #3b82f64d}.projects-card-image{aspect-ratio:1;overflow:hidden;background:var(--bg-primary, #0a0a0a);position:relative}.projects-card-image img{width:100%;height:100%;object-fit:cover;transition:transform .3s}.projects-card:hover .projects-card-image img{transform:scale(1.05)}.projects-card-select{position:absolute;top:8px;left:8px;width:24px;height:24px;border-radius:6px;border:2px solid rgba(255,255,255,.6);background:#0006;color:transparent;display:flex;align-items:center;justify-content:center;cursor:pointer;transition:all .2s;opacity:0}.projects-card:hover .projects-card-select,.projects-card.selected .projects-card-select{opacity:1}.projects-card-select.active{background:var(--accent, #3b82f6);border-color:var(--accent, #3b82f6);color:#fff}.projects-card-info{padding:.75rem}.projects-card-prompt{font-size:.85rem;color:var(--text-primary, #fff);margin:0 0 .25rem;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.projects-card-date{font-size:.75rem;color:var(--text-tertiary, #666)}.projects-card-actions{display:flex;justify-content:flex-end;gap:.25rem;padding:.5rem .75rem;border-top:1px solid var(--border, #333);opacity:0;transition:opacity .2s}.projects-card:hover .projects-card-actions{opacity:1}.projects-card-action{display:flex;align-items:center;justify-content:center;width:32px;height:32px;border-radius:6px;border:none;background:transparent;color:var(--text-secondary, #888);cursor:pointer;transition:all .2s}.projects-card-action:hover{background:var(--bg-hover, #252525);color:var(--text-primary, #fff)}.projects-card-action.danger:hover{background:#ef444433;color:#ef4444}.projects-gallery{flex:1;display:flex;flex-direction:column}.projects-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:1rem;flex-wrap:wrap;gap:1rem}.projects-title{display:flex;align-items:center;gap:.5rem;font-size:1rem;font-weight:600;color:var(--text-primary, #fff)}.projects-count{font-size:.85rem;font-weight:400;color:var(--text-tertiary, #666);margin-left:.25rem}.projects-search{display:flex;align-items:center;gap:.5rem;background:var(--bg-secondary, #1a1a1a);padding:.5rem .75rem;border-radius:8px;border:1px solid var(--border, #333);max-width:280px;width:100%}.projects-search:focus-within{border-color:var(--accent, #3b82f6)}.projects-search input{background:transparent;border:none;color:var(--text-primary, #fff);width:100%;outline:none;font-size:.85rem}.projects-search input::placeholder{color:var(--text-tertiary, #666)}.projects-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:1rem;flex:1}.projects-loading,.projects-empty{grid-column:1 / -1;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:3rem 1rem;color:var(--text-secondary, #888);text-align:center}.projects-empty h3{margin:1rem 0 .5rem;color:var(--text-primary, #fff)}.projects-empty p{margin:0;font-size:.9rem}.projects-load-more{display:flex;justify-content:center;padding:1.5rem}.projects-load-more button{padding:.5rem 1.5rem;border-radius:8px;border:1px solid var(--border, #333);background:var(--bg-secondary, #1a1a1a);color:var(--text-primary, #fff);cursor:pointer;font-size:.9rem;transition:all .2s}.projects-load-more button:hover{background:var(--bg-hover, #252525);border-color:var(--accent, #3b82f6)}.projects-loading-more{text-align:center;padding:1rem;color:var(--text-secondary, #888);font-size:.9rem}.assets-page{min-height:100vh;background:var(--bg-primary, #0a0a0a);color:var(--text-primary, #ffffff);padding:1.5rem}.assets-loading{display:flex;align-items:center;justify-content:center;min-height:100vh;background:var(--bg-primary, #0a0a0a);color:var(--text-secondary, #888)}.assets-header{margin-bottom:1.5rem}.back-link{display:inline-flex;align-items:center;gap:.5rem;color:var(--text-secondary, #888);text-decoration:none;font-size:.9rem;margin-bottom:.75rem;transition:color .2s}.back-link:hover{color:var(--text-primary, #fff)}.header-title{display:flex;align-items:center;gap:1rem}.header-title h1{font-size:1.75rem;margin:0}.admin-badge{padding:.25rem .75rem;background:var(--accent, #3b82f6);color:#fff;font-size:.75rem;font-weight:600;border-radius:9999px;text-transform:uppercase}.assets-unauthorized{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:60vh;text-align:center;color:var(--text-secondary, #888)}.assets-unauthorized h2{margin:1rem 0 .5rem;color:var(--text-primary, #fff)}.assets-unauthorized p{margin:0 0 1.5rem}.assets-tabs{display:flex;gap:.5rem;margin-bottom:1.5rem;border-bottom:1px solid var(--border, #333);padding-bottom:0}.assets-tabs .tab{display:flex;align-items:center;gap:.5rem;padding:.75rem 1.5rem;background:transparent;border:none;color:var(--text-secondary, #888);cursor:pointer;border-bottom:2px solid transparent;margin-bottom:-1px;transition:all .2s;font-size:.95rem}.assets-tabs .tab:hover{color:var(--text-primary, #fff)}.assets-tabs .tab.active{color:var(--accent, #3b82f6);border-bottom-color:var(--accent, #3b82f6)}.assets-toolbar{display:flex;justify-content:space-between;align-items:center;margin-bottom:1.5rem;gap:1rem;flex-wrap:wrap}.assets-page .search-box{display:flex;align-items:center;gap:.5rem;background:var(--bg-secondary, #1a1a1a);padding:.5rem 1rem;border-radius:8px;flex:1;max-width:400px;border:1px solid var(--border, #333)}.assets-page .search-box:focus-within{border-color:var(--accent, #3b82f6)}.assets-page .search-box input{background:transparent;border:none;color:var(--text-primary, #fff);width:100%;outline:none;font-size:.9rem}.assets-page .search-box input::placeholder{color:var(--text-tertiary, #666)}.clear-search{background:transparent;border:none;color:var(--text-secondary, #888);cursor:pointer;padding:0;display:flex}.clear-search:hover{color:var(--text-primary, #fff)}.toolbar-actions{display:flex;gap:.5rem}.btn-icon{display:flex;align-items:center;justify-content:center;padding:.5rem;border-radius:6px;border:none;background:var(--bg-secondary, #1a1a1a);color:var(--text-primary, #fff);cursor:pointer;transition:all .2s}.btn-icon:hover{background:var(--bg-hover, #252525)}.btn-icon.btn-danger:hover{background:#ef444433;color:#ef4444}.btn-icon.btn-edit{color:var(--accent, #3b82f6)}.btn-icon.btn-edit:hover{background:#3b82f633;color:var(--accent, #3b82f6)}.btn-primary{display:flex;align-items:center;gap:.5rem;padding:.5rem 1rem;border-radius:8px;border:none;background:var(--accent, #3b82f6);color:#fff;cursor:pointer;font-size:.9rem;font-weight:500;transition:all .2s}.btn-primary:hover,.btn-primary.active{background:var(--accent-hover, #2563eb)}.btn-primary:disabled{opacity:.6;cursor:not-allowed}.btn-success{background:#22c55e}.btn-success:hover{background:#16a34a}.btn-full{width:100%;justify-content:center;padding:.75rem}.btn-sm{padding:.375rem .75rem;font-size:.85rem}.btn-close{background:transparent;border:none;color:var(--text-secondary, #888);cursor:pointer;padding:.25rem;display:flex}.btn-close:hover{color:var(--text-primary, #fff)}.assets-content{display:flex;gap:1.5rem}.upload-panel{width:380px;background:var(--bg-secondary, #1a1a1a);border-radius:12px;padding:1.25rem;flex-shrink:0;max-height:calc(100vh - 200px);overflow-y:auto;border:1px solid var(--border, #333)}.upload-panel-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:1rem}.upload-panel-header h2{font-size:1.1rem;margin:0;font-weight:600}.create-task{display:flex;gap:.5rem;margin-bottom:1rem}.create-task input{flex:1;padding:.5rem .75rem;border-radius:6px;border:1px solid var(--border, #333);background:var(--bg-primary, #0a0a0a);color:var(--text-primary, #fff);font-size:.9rem}.create-task input:focus{outline:none;border-color:var(--accent, #3b82f6)}.task-list{margin-bottom:1rem;max-height:200px;overflow-y:auto}.no-tasks{text-align:center;padding:1.5rem;color:var(--text-tertiary, #666);font-size:.9rem}.task-item{padding:.75rem;border-radius:8px;cursor:pointer;margin-bottom:.5rem;background:var(--bg-primary, #0a0a0a);border:1px solid transparent;transition:all .2s}.task-item:hover{border-color:var(--border, #333)}.task-item.selected{background:#3b82f61a;border-color:var(--accent, #3b82f6)}.task-item-header{display:flex;align-items:center;gap:.5rem;margin-bottom:.25rem}.task-name{font-weight:500;font-size:.9rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.task-item-meta{display:flex;gap:.75rem;font-size:.8rem;color:var(--text-tertiary, #666)}.task-progress-bar{height:4px;background:var(--bg-secondary, #1a1a1a);border-radius:2px;margin-top:.5rem;overflow:hidden}.task-progress-fill{height:100%;background:var(--accent, #3b82f6);transition:width .3s}.task-detail{padding-top:1rem;border-top:1px solid var(--border, #333)}.task-detail-header{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:1rem}.task-title{display:flex;align-items:center;gap:.5rem}.task-title h3{margin:0;font-size:1rem;font-weight:600}.task-actions{display:flex;gap:.25rem}.dropzone{border:2px dashed var(--border, #333);border-radius:8px;padding:2rem 1rem;text-align:center;cursor:pointer;transition:all .2s;margin-bottom:1rem}.dropzone:hover,.dropzone.dragging{border-color:var(--accent, #3b82f6);background:#3b82f60d}.dropzone p{margin:.5rem 0 .25rem;font-size:.9rem}.dropzone span{font-size:.8rem;color:var(--text-tertiary, #666)}.pending-files{margin-bottom:1rem}.pending-files-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:.5rem;font-size:.85rem}.pending-files-list{max-height:150px;overflow-y:auto}.pending-file{display:flex;align-items:center;gap:.5rem;padding:.375rem 0;font-size:.8rem;color:var(--text-secondary, #888)}.pending-file span:first-of-type{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.file-size{color:var(--text-tertiary, #666)}.more-files{font-size:.8rem;color:var(--text-tertiary, #666);padding:.375rem 0}.progress-monitor{margin-bottom:1rem}.progress-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:.5rem;font-size:.85rem}.progress-percent{font-weight:600;color:var(--accent, #3b82f6)}.progress-bar-large{height:8px;background:var(--bg-primary, #0a0a0a);border-radius:4px;overflow:hidden;margin-bottom:.75rem}.progress-fill{height:100%;background:var(--accent, #3b82f6);transition:width .3s}.progress-stats{display:flex;gap:1rem}.stat{display:flex;flex-direction:column;gap:.125rem}.stat-label{font-size:.75rem;color:var(--text-tertiary, #666)}.stat-value{font-size:.9rem;font-weight:600}.stat-value.success{color:#22c55e}.stat-value.error{color:#ef4444}.current-file{display:flex;align-items:center;gap:.5rem;font-size:.8rem;color:var(--text-secondary, #888);margin-top:.75rem}.current-file span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.task-errors{margin-top:1rem}.task-errors h4{margin:0 0 .5rem;font-size:.85rem;color:#ef4444}.error-list{max-height:120px;overflow-y:auto}.error-item{display:flex;align-items:flex-start;gap:.5rem;padding:.375rem 0;font-size:.8rem;color:var(--text-secondary, #888)}.error-item svg{color:#ef4444;flex-shrink:0;margin-top:.125rem}.error-filename{font-weight:500;flex-shrink:0}.error-message{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.status-uploading{color:var(--info, #3b82f6)}.status-pending{color:var(--warning, #f59e0b)}.status-processing{color:var(--accent, #3b82f6)}.status-completed{color:var(--success, #22c55e)}.status-warning{color:var(--warning, #f59e0b)}.status-failed{color:var(--error, #ef4444)}.status-archived{color:var(--text-tertiary, #666)}.assets-main{flex:1;min-width:0}.assets-main.with-panel{max-width:calc(100% - 400px)}.empty-state,.loading-state{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:4rem 2rem;color:var(--text-secondary, #888);text-align:center}.empty-state p,.loading-state p{margin:1rem 0 0}.empty-state .hint{font-size:.9rem;margin-top:.5rem;color:var(--text-tertiary, #666)}.assets-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:1rem}.asset-card{background:var(--bg-secondary, #1a1a1a);border-radius:12px;overflow:hidden;transition:transform .2s,box-shadow .2s;border:1px solid var(--border, #333)}.asset-card:hover{transform:translateY(-2px);box-shadow:0 8px 24px #0000004d}.asset-thumbnail{aspect-ratio:1;overflow:hidden;background:var(--bg-primary, #0a0a0a)}.asset-thumbnail img{width:100%;height:100%;object-fit:cover;transition:transform .3s}.asset-card:hover .asset-thumbnail img{transform:scale(1.05)}.asset-info{padding:.75rem}.asset-info h3{font-size:.9rem;font-weight:500;margin:0 0 .25rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.asset-description{font-size:.8rem;color:var(--text-secondary, #888);margin:0;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.asset-meta{display:flex;align-items:center;gap:.5rem;margin-top:.5rem;flex-wrap:wrap}.category-tag{display:inline-block;padding:.125rem .5rem;background:#3b82f626;color:var(--accent, #3b82f6);font-size:.7rem;border-radius:4px}.date{font-size:.75rem;color:var(--text-tertiary, #666)}.asset-actions{display:flex;justify-content:flex-end;padding:.5rem .75rem;border-top:1px solid var(--border, #333);opacity:0;transition:opacity .2s}.asset-card:hover .asset-actions{opacity:1}.assets-footer{margin-top:1.5rem;padding-top:1rem;border-top:1px solid var(--border, #333);color:var(--text-secondary, #888);font-size:.9rem}@media(max-width:1024px){.assets-content{flex-direction:column}.upload-panel{width:100%;max-height:none}.assets-main.with-panel{max-width:100%}}@media(max-width:640px){.assets-page{padding:1rem}.assets-toolbar{flex-direction:column;align-items:stretch}.search-box{max-width:none}.toolbar-actions{justify-content:flex-end}.assets-grid{grid-template-columns:repeat(auto-fill,minmax(150px,1fr))}}:root{--color-bg-primary: #ffffff;--color-bg-secondary: #f8f9fa;--color-bg-tertiary: #e9ecef;--color-bg-hover: #f1f3f5;--color-border: #dee2e6;--color-border-light: #e9ecef;--color-text-primary: #212529;--color-text-secondary: #6c757d;--color-text-muted: #adb5bd;--color-accent: #228be6;--color-accent-hover: #1c7ed6;--color-accent-light: #e7f5ff;--color-flag-green: #40c057;--color-flag-yellow: #fab005;--color-flag-red: #fa5252;--color-approved: #228be6;--color-rejected: #868e96;--color-success: #40c057;--color-success-bg: #ebfbee;--color-warning: #fab005;--color-warning-bg: #fff9db;--color-error: #fa5252;--color-error-bg: #fff5f5;--color-primary: #228be6;--color-primary-bg: #e7f5ff;--shadow-sm: 0 1px 2px rgba(0, 0, 0, .05);--shadow-md: 0 4px 6px rgba(0, 0, 0, .07);--shadow-lg: 0 10px 15px rgba(0, 0, 0, .1);--shadow-card: 0 1px 3px rgba(0, 0, 0, .08);--shadow-card-hover: 0 4px 12px rgba(0, 0, 0, .12);--font-family: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;--font-family-mono: "JetBrains Mono", "Fira Code", monospace;--text-xs: .75rem;--text-sm: .875rem;--text-base: 1rem;--text-lg: 1.125rem;--text-xl: 1.25rem;--font-normal: 400;--font-medium: 500;--font-semibold: 600;--leading-tight: 1.25;--leading-normal: 1.5;--leading-relaxed: 1.75;--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: 280px;--sidebar-collapsed-width: 64px;--header-height: 56px;--card-min-width: 180px;--card-max-width: 240px;--card-aspect-ratio: 1;--grid-gap: var(--space-4);--breakpoint-sm: 640px;--breakpoint-md: 768px;--breakpoint-lg: 1024px;--breakpoint-xl: 1280px;--radius-sm: 4px;--radius-md: 8px;--radius-lg: 12px;--radius-full: 9999px;--transition-fast: .15s ease;--transition-normal: .2s ease;--transition-slow: .3s ease;--color-surface: var(--color-bg-primary);--color-bg: var(--color-bg-secondary);--font-mono: var(--font-family-mono);--font-size-xs: var(--text-xs);--font-size-sm: var(--text-sm);--font-size-lg: var(--text-lg);--font-size-xl: var(--text-xl);--spacing-xxs: var(--space-1);--spacing-xs: var(--space-2);--spacing-sm: var(--space-3);--spacing-md: var(--space-4);--spacing-lg: var(--space-6)}.ftp-credentials{background:var(--color-surface);border-radius:var(--radius-lg);padding:var(--spacing-lg);margin-bottom:var(--spacing-lg)}.ftp-credentials__header{display:flex;align-items:center;gap:var(--spacing-sm);margin-bottom:var(--spacing-md)}.ftp-credentials__header h2{margin:0;font-size:var(--font-size-xl)}.ftp-credentials__description{color:var(--color-text-muted);margin-bottom:var(--spacing-lg)}.ftp-credentials__loading{display:flex;align-items:center;gap:var(--spacing-sm);color:var(--color-text-muted)}.ftp-credentials__generate{display:flex;flex-direction:column;gap:var(--spacing-md)}.ftp-credentials__expiry{display:flex;align-items:center;gap:var(--spacing-sm)}.ftp-credentials__expiry label{font-weight:500}.ftp-credentials__expiry select{padding:var(--spacing-xs) var(--spacing-sm);border:1px solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-bg);font-size:var(--font-size-sm)}.ftp-credentials__display h3,.ftp-credentials__instructions h3{font-size:var(--font-size-lg);margin-bottom:var(--spacing-md)}.ftp-credentials__grid{display:grid;gap:var(--spacing-sm);margin-bottom:var(--spacing-md)}.ftp-credentials__item{display:flex;align-items:center;gap:var(--spacing-sm)}.ftp-credentials__item label{font-weight:500;min-width:80px;color:var(--color-text-muted)}.ftp-credentials__item code{background:var(--color-bg);padding:var(--spacing-xs) var(--spacing-sm);border-radius:var(--radius-sm);font-family:var(--font-mono);font-size:var(--font-size-sm)}.ftp-credentials__value{display:flex;align-items:center;gap:var(--spacing-xs)}.ftp-credentials__value .copied{color:var(--color-success);font-size:var(--font-size-xs)}.ftp-credentials__actions{display:flex;gap:var(--spacing-sm);margin-top:var(--spacing-md)}.ftp-credentials__instructions{margin-top:var(--spacing-lg);padding-top:var(--spacing-lg);border-top:1px solid var(--color-border)}.ftp-credentials__instructions ol{margin:0;padding-left:var(--spacing-lg)}.ftp-credentials__instructions li{margin-bottom:var(--spacing-sm)}.ftp-credentials__instructions small{color:var(--color-text-muted);font-size:var(--font-size-xs)}.ftp-credentials__limits{margin-top:var(--spacing-md);padding:var(--spacing-sm);background:var(--color-bg);border-radius:var(--radius-sm)}.ftp-credentials__limits p{margin:0 0 var(--spacing-xs) 0}.ftp-credentials__limits ul{margin:0;padding-left:var(--spacing-md)}.ftp-credentials__limits li{font-size:var(--font-size-sm);color:var(--color-text-muted)}.ftp-credentials__error{margin-top:var(--spacing-md);padding:var(--spacing-sm);background:var(--color-error-bg);color:var(--color-error);border-radius:var(--radius-sm)}.ftp-sessions{background:var(--color-surface);border-radius:var(--radius-lg);padding:var(--spacing-lg)}.ftp-sessions__header{display:flex;align-items:center;justify-content:space-between;margin-bottom:var(--spacing-md)}.ftp-sessions__header h2{margin:0;font-size:var(--font-size-xl)}.ftp-sessions__loading,.ftp-session__loading{display:flex;align-items:center;gap:var(--spacing-sm);color:var(--color-text-muted);padding:var(--spacing-md)}.ftp-sessions__empty{color:var(--color-text-muted);text-align:center;padding:var(--spacing-lg)}.ftp-sessions__list{display:flex;flex-direction:column;gap:var(--spacing-sm)}.ftp-session{border:1px solid var(--color-border);border-radius:var(--radius-md);overflow:hidden}.ftp-session__header{display:flex;align-items:center;gap:var(--spacing-md);padding:var(--spacing-md);cursor:pointer;transition:background .15s}.ftp-session__header:hover{background:var(--color-bg)}.ftp-session__status{display:flex;align-items:center;gap:var(--spacing-xs)}.ftp-session__info{flex:1;display:flex;flex-direction:column;gap:var(--spacing-xxs)}.ftp-session__date{font-weight:500}.ftp-session__stats{font-size:var(--font-size-sm);color:var(--color-text-muted)}.ftp-session__results{display:flex;gap:var(--spacing-sm)}.result{display:flex;align-items:center;gap:var(--spacing-xxs);font-size:var(--font-size-sm)}.result--success{color:var(--color-success)}.result--error{color:var(--color-error)}.ftp-session__toggle{color:var(--color-text-muted)}.ftp-session__details{border-top:1px solid var(--color-border);padding:var(--spacing-md);background:var(--color-bg)}.ftp-session__no-files{color:var(--color-text-muted);text-align:center}.ftp-session__files{width:100%;border-collapse:collapse;font-size:var(--font-size-sm)}.ftp-session__files th,.ftp-session__files td{padding:var(--spacing-xs) var(--spacing-sm);text-align:left;border-bottom:1px solid var(--color-border)}.ftp-session__files th{font-weight:600;color:var(--color-text-muted);background:var(--color-surface)}.file-row--failed{background:var(--color-error-bg)}.file-name{font-family:var(--font-mono);font-size:var(--font-size-xs)}.file-type{text-transform:capitalize}.file-status{display:flex;align-items:center;gap:var(--spacing-xxs)}.media-link{color:var(--color-primary);text-decoration:none}.media-link:hover{text-decoration:underline}.error-message{color:var(--color-error);font-size:var(--font-size-xs)}.status-icon{flex-shrink:0}.status-icon--success{color:var(--color-success)}.status-icon--warning{color:var(--color-warning)}.status-icon--error{color:var(--color-error)}.status-icon--processing{color:var(--color-primary)}.status-icon--pending{color:var(--color-text-muted)}.status-badge{font-size:var(--font-size-xs);padding:var(--spacing-xxs) var(--spacing-xs);border-radius:var(--radius-sm);text-transform:capitalize}.status-badge--completed{background:var(--color-success-bg);color:var(--color-success)}.status-badge--completed_with_errors{background:var(--color-warning-bg);color:var(--color-warning)}.status-badge--failed{background:var(--color-error-bg);color:var(--color-error)}.status-badge--processing{background:var(--color-primary-bg);color:var(--color-primary)}.status-badge--uploading{background:var(--color-bg);color:var(--color-text-muted)}.ftp-upload-page{max-width:800px;margin:0 auto;padding:var(--spacing-lg)}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.animate-spin{animation:spin 1s linear infinite}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}html{font-size:16px;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}body{font-family:var(--font-family);font-size:var(--text-base);line-height:var(--leading-normal);color:var(--color-text-primary);background-color:var(--color-bg-secondary);min-height:100vh}#root{min-height:100vh;display:flex;flex-direction:column}a{color:var(--color-accent);text-decoration:none}a:hover{color:var(--color-accent-hover)}button{font-family:inherit;cursor:pointer}input,textarea,select{font-family:inherit;font-size:inherit}img{max-width:100%;height:auto}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-track{background:var(--color-bg-secondary)}::-webkit-scrollbar-thumb{background:var(--color-border);border-radius:var(--radius-full)}::-webkit-scrollbar-thumb:hover{background:var(--color-text-muted)}:focus-visible{outline:2px solid var(--color-accent);outline-offset:2px}::selection{background-color:var(--color-accent-light);color:var(--color-text-primary)}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--space-2);padding:var(--space-2) var(--space-4);border:1px solid transparent;border-radius:var(--radius-md);font-size:var(--text-sm);font-weight:var(--font-medium);transition:var(--transition-fast);cursor:pointer}.btn:disabled{opacity:.6;cursor:not-allowed}.btn--primary{background:var(--color-accent);color:#fff}.btn--primary:hover:not(:disabled){background:var(--color-accent-hover)}.btn--secondary{background:var(--color-bg-tertiary);color:var(--color-text-primary);border-color:var(--color-border)}.btn--secondary:hover:not(:disabled){background:var(--color-bg-hover)}.btn--danger{background:var(--color-error);color:#fff}.btn--danger:hover:not(:disabled){opacity:.9}.btn--icon{background:none;border:none;padding:var(--space-1);color:var(--color-text-muted);border-radius:var(--radius-sm)}.btn--icon:hover{background:var(--color-bg-hover);color:var(--color-text-primary)}
