:root{--bg-primary: #0a0a0f;--bg-secondary: #111118;--bg-tertiary: #1a1a24;--bg-elevated: #1e1e2a;--bg-hover: #252535;--bg-active: #2a2a3d;--surface-glass: rgba(255, 255, 255, .03);--surface-glass-hover: rgba(255, 255, 255, .06);--surface-glass-active: rgba(255, 255, 255, .08);--text-primary: #f0f0f5;--text-secondary: #a0a0b5;--text-tertiary: #666680;--text-muted: #4a4a60;--accent: #c8a87c;--accent-hover: #d4b88e;--accent-glow: rgba(200, 168, 124, .15);--accent-soft: rgba(200, 168, 124, .1);--primary: #6366f1;--primary-hover: #7c7ff5;--primary-glow: rgba(99, 102, 241, .2);--success: #34d399;--success-bg: rgba(52, 211, 153, .1);--warning: #fbbf24;--danger: #f87171;--danger-bg: rgba(248, 113, 113, .1);--border: rgba(255, 255, 255, .06);--border-hover: rgba(255, 255, 255, .12);--border-accent: rgba(200, 168, 124, .3);--space-xs: 4px;--space-sm: 8px;--space-md: 12px;--space-lg: 16px;--space-xl: 24px;--space-2xl: 32px;--space-3xl: 48px;--font-sans: "Inter", "Noto Sans JP", -apple-system, BlinkMacSystemFont, sans-serif;--font-mono: "JetBrains Mono", "SF Mono", "Consolas", monospace;--text-xs: 11px;--text-sm: 12px;--text-base: 13px;--text-md: 14px;--text-lg: 16px;--text-xl: 20px;--text-2xl: 28px;--radius-sm: 6px;--radius-md: 8px;--radius-lg: 12px;--radius-xl: 16px;--radius-full: 9999px;--shadow-sm: 0 1px 3px rgba(0, 0, 0, .3);--shadow-md: 0 4px 16px rgba(0, 0, 0, .4);--shadow-lg: 0 8px 32px rgba(0, 0, 0, .5);--shadow-glow: 0 0 24px var(--accent-glow);--transition-fast: .15s cubic-bezier(.4, 0, .2, 1);--transition-base: .25s cubic-bezier(.4, 0, .2, 1);--transition-slow: .4s cubic-bezier(.4, 0, .2, 1);--transition-spring: .5s cubic-bezier(.34, 1.56, .64, 1);--sidebar-width: 280px;--titlebar-height: 36px}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}html,body{height:100%;overflow:hidden;font-family:var(--font-sans);font-size:var(--text-base);color:var(--text-primary);background:var(--bg-primary);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:#ffffff1a;border-radius:var(--radius-full)}::-webkit-scrollbar-thumb:hover{background:#fff3}#titlebar{height:var(--titlebar-height);display:flex;align-items:center;gap:var(--space-sm);padding-left:var(--space-lg);background:var(--bg-primary);border-bottom:1px solid var(--border);-webkit-app-region:drag;-webkit-user-select:none;user-select:none;position:fixed;top:0;left:0;right:0;z-index:1000}.titlebar-icon{color:var(--accent);display:flex;align-items:center}.titlebar-title{font-size:var(--text-sm);font-weight:600;color:var(--text-secondary);letter-spacing:.5px}#app{display:flex;height:calc(100vh - var(--titlebar-height));margin-top:var(--titlebar-height)}#sidebar{width:var(--sidebar-width);min-width:var(--sidebar-width);height:100%;background:var(--bg-secondary);border-right:1px solid var(--border);display:flex;flex-direction:column;overflow-y:auto;overflow-x:hidden}.sidebar-section{padding:var(--space-lg);border-bottom:1px solid var(--border)}.sidebar-heading{font-size:var(--text-sm);font-weight:600;color:var(--text-secondary);text-transform:uppercase;letter-spacing:.8px;margin-bottom:var(--space-md);display:flex;align-items:center;gap:var(--space-sm)}.sidebar-heading svg{color:var(--accent);opacity:.8}.style-grid{display:grid;grid-template-columns:1fr 1fr;gap:var(--space-sm)}.style-btn{background:var(--surface-glass);border:1.5px solid var(--border);border-radius:var(--radius-md);padding:var(--space-sm);cursor:pointer;display:flex;flex-direction:column;align-items:center;gap:var(--space-xs);transition:all var(--transition-base);color:var(--text-secondary)}.style-btn:hover{background:var(--surface-glass-hover);border-color:var(--border-hover);color:var(--text-primary);transform:translateY(-1px)}.style-btn.active{border-color:var(--accent);background:var(--accent-soft);color:var(--accent);box-shadow:0 0 12px var(--accent-glow)}.style-btn span{font-size:var(--text-xs);font-weight:500}.style-preview{width:100%;aspect-ratio:4/3;border-radius:var(--radius-sm);overflow:hidden;display:flex;flex-direction:column}.style-preview-img{flex:1;background:linear-gradient(135deg,#3a3a5c,#2a2a4a)}.style-preview-img.full{position:relative}.style-preview-bar{height:20%}.style-preview-bar.white{background:#f0f0f0}.style-preview-bar.dark{background:#0a0a0a}.preview-film .style-preview-perfs{height:12%;background:#1a1a1a;position:relative}.preview-film .style-preview-img{flex:1}.preview-minimal{position:relative}.style-preview-overlay{position:absolute;bottom:0;left:0;right:0;height:30%;background:linear-gradient(transparent,#00000080);border-radius:0 0 var(--radius-sm) var(--radius-sm)}.setting-row{display:flex;align-items:center;justify-content:space-between;gap:var(--space-md)}.setting-row.vertical{flex-direction:column;align-items:stretch}.select-input{width:100%;padding:8px 12px;background:var(--surface-glass);border:1px solid var(--border);border-radius:var(--radius-md);color:var(--text-primary);font-family:var(--font-sans);font-size:var(--text-sm);outline:none;cursor:pointer;transition:all var(--transition-base)}.select-input:hover{background:var(--surface-glass-hover);border-color:var(--border-hover)}.select-input:focus{border-color:var(--accent);box-shadow:0 0 12px var(--accent-glow)}.select-input option{background:var(--bg-tertiary);color:var(--text-primary)}.setting-row label{font-size:var(--text-sm);color:var(--text-secondary);white-space:nowrap}.slider-group{display:flex;align-items:center;gap:var(--space-sm);flex:1}.slider-group span{font-size:var(--text-xs);color:var(--text-tertiary);font-family:var(--font-mono);min-width:32px;text-align:right}input[type=range]{flex:1;-webkit-appearance:none;-moz-appearance:none;appearance:none;height:4px;background:var(--bg-active);border-radius:var(--radius-full);outline:none}input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;-moz-appearance:none;appearance:none;width:14px;height:14px;border-radius:50%;background:var(--accent);cursor:pointer;transition:transform var(--transition-fast);box-shadow:0 0 8px var(--accent-glow)}input[type=range]::-webkit-slider-thumb:hover{transform:scale(1.2)}.exif-grid{display:flex;flex-direction:column;gap:var(--space-sm)}.exif-row{display:flex;justify-content:space-between;align-items:center;padding:var(--space-xs) 0}.exif-label{font-size:var(--text-xs);color:var(--text-tertiary);text-transform:uppercase;letter-spacing:.5px}.exif-value{font-size:var(--text-sm);color:var(--text-primary);font-family:var(--font-mono);font-weight:500}.exif-value.highlight{color:var(--accent)}.sidebar-actions{padding:var(--space-lg);margin-top:auto;display:flex;flex-direction:column;gap:var(--space-sm);border-top:1px solid var(--border)}.btn{display:flex;align-items:center;justify-content:center;gap:var(--space-sm);padding:var(--space-sm) var(--space-lg);border:1px solid transparent;border-radius:var(--radius-md);font-family:var(--font-sans);font-size:var(--text-sm);font-weight:500;cursor:pointer;transition:all var(--transition-base);white-space:nowrap}.btn:disabled{opacity:.4;cursor:not-allowed}.btn-primary{background:var(--primary);color:#fff}.btn-primary:hover:not(:disabled){background:var(--primary-hover);box-shadow:0 0 16px var(--primary-glow);transform:translateY(-1px)}.btn-secondary{background:var(--surface-glass);color:var(--text-secondary);border-color:var(--border)}.btn-secondary:hover:not(:disabled){background:var(--surface-glass-hover);color:var(--text-primary);border-color:var(--border-hover)}.btn-accent{background:linear-gradient(135deg,var(--accent),#b8956c);color:#0a0a0f;font-weight:600}.btn-accent:hover:not(:disabled){box-shadow:var(--shadow-glow);transform:translateY(-1px)}.btn-ghost{background:transparent;color:var(--text-secondary);padding:var(--space-xs) var(--space-md)}.btn-ghost:hover:not(:disabled){background:var(--surface-glass-hover);color:var(--text-primary)}.btn-danger{color:var(--danger)}.btn-danger:hover:not(:disabled){background:var(--danger-bg)}#main-content{flex:1;overflow:hidden;position:relative;background:var(--bg-primary)}.drop-zone{height:100%;display:flex;align-items:center;justify-content:center;cursor:pointer;position:relative;transition:all var(--transition-base)}.drop-zone:before{content:"";position:absolute;inset:var(--space-xl);border:2px dashed var(--border);border-radius:var(--radius-xl);transition:all var(--transition-base);pointer-events:none}.drop-zone:hover:before,.drop-zone.drag-over:before{border-color:var(--accent);background:var(--accent-soft)}.drop-zone.drag-over{background:#c8a87c05}.drop-zone.drag-over .drop-icon{transform:scale(1.15);color:var(--accent)}.drop-zone-content{display:flex;flex-direction:column;align-items:center;gap:var(--space-lg);text-align:center;z-index:1}.drop-icon{color:var(--text-tertiary);transition:all var(--transition-spring);animation:float 4s ease-in-out infinite}@keyframes float{0%,to{transform:translateY(0)}50%{transform:translateY(-8px)}}.drop-zone-content h2{font-size:var(--text-xl);font-weight:600;color:var(--text-primary)}.drop-zone-content p{font-size:var(--text-md);color:var(--text-tertiary)}.supported-formats{display:flex;gap:var(--space-sm);margin-top:var(--space-sm)}.format-badge{padding:2px 10px;border-radius:var(--radius-full);font-size:var(--text-xs);font-weight:600;font-family:var(--font-mono);background:var(--surface-glass);color:var(--text-tertiary);border:1px solid var(--border)}.format-badge.highlight{background:var(--accent-soft);color:var(--accent);border-color:var(--border-accent)}.gallery-view{height:100%;display:flex;flex-direction:column}.gallery-header{display:flex;align-items:center;justify-content:space-between;padding:var(--space-md) var(--space-xl);border-bottom:1px solid var(--border);flex-shrink:0}.gallery-info{display:flex;align-items:center;gap:var(--space-md);font-size:var(--text-sm);color:var(--text-secondary)}.selected-badge{padding:2px 10px;border-radius:var(--radius-full);font-size:var(--text-xs);font-weight:600;background:var(--accent-soft);color:var(--accent);border:1px solid var(--border-accent)}.gallery-controls{display:flex;gap:var(--space-sm)}.gallery-grid{flex:1;overflow-y:auto;padding:var(--space-xl);display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:var(--space-lg);align-content:start}.gallery-card{position:relative;border-radius:var(--radius-lg);overflow:hidden;background:var(--bg-secondary);border:1.5px solid var(--border);transition:all var(--transition-base);cursor:pointer;animation:cardIn .4s cubic-bezier(.34,1.56,.64,1) forwards;opacity:0;transform:translateY(20px) scale(.95)}@keyframes cardIn{to{opacity:1;transform:translateY(0) scale(1)}}.gallery-card:hover{border-color:var(--border-hover);transform:translateY(-2px);box-shadow:var(--shadow-md)}.gallery-card.selected{border-color:var(--accent);box-shadow:0 0 16px var(--accent-glow)}.gallery-card-image{width:100%;aspect-ratio:4/3;object-fit:cover;display:block;background:var(--bg-tertiary)}.gallery-card-info{padding:var(--space-md);display:flex;flex-direction:column;gap:var(--space-xs)}.gallery-card-name{font-size:var(--text-sm);font-weight:500;color:var(--text-primary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.gallery-card-meta{font-size:var(--text-xs);color:var(--text-tertiary);font-family:var(--font-mono);display:flex;gap:var(--space-sm);flex-wrap:wrap}.gallery-card-meta .film-sim{color:var(--accent);font-weight:500}.card-checkbox{position:absolute;top:var(--space-sm);left:var(--space-sm);width:24px;height:24px;border-radius:var(--radius-sm);background:#00000080;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);border:1.5px solid rgba(255,255,255,.3);display:flex;align-items:center;justify-content:center;cursor:pointer;transition:all var(--transition-fast);z-index:2;opacity:0}.gallery-card:hover .card-checkbox,.gallery-card.selected .card-checkbox{opacity:1}.gallery-card.selected .card-checkbox{background:var(--accent);border-color:var(--accent)}.card-checkbox svg{width:14px;height:14px;stroke:#fff;stroke-width:3;opacity:0}.gallery-card.selected .card-checkbox svg{opacity:1}.card-status{position:absolute;top:var(--space-sm);right:var(--space-sm);padding:2px 8px;border-radius:var(--radius-full);font-size:10px;font-weight:600;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);z-index:2}.card-status.processing{background:#6366f1cc;color:#fff}.card-status.done{background:#34d399cc;color:#fff}.card-status.error{background:#f87171cc;color:#fff}.preview-modal{position:fixed;top:0;right:0;bottom:0;left:0;z-index:2000;display:flex;align-items:center;justify-content:center}.preview-backdrop{position:absolute;top:0;right:0;bottom:0;left:0;background:#000000d9;-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);animation:fadeIn .2s ease}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.preview-content{position:relative;max-width:90vw;max-height:90vh;z-index:1;animation:scaleIn .3s cubic-bezier(.34,1.56,.64,1)}@keyframes scaleIn{0%{opacity:0;transform:scale(.9)}to{opacity:1;transform:scale(1)}}.preview-image{max-width:90vw;max-height:85vh;object-fit:contain;border-radius:var(--radius-md);box-shadow:var(--shadow-lg)}.preview-close-btn{position:absolute;top:-40px;right:0;background:none;border:none;color:#fff;cursor:pointer;padding:var(--space-sm);opacity:.7;transition:opacity var(--transition-fast)}.preview-close-btn:hover{opacity:1}.preview-nav{position:absolute;top:50%;left:-60px;right:-60px;display:flex;justify-content:space-between;transform:translateY(-50%);pointer-events:none}.preview-nav-btn{background:#00000080;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);border:1px solid rgba(255,255,255,.1);border-radius:var(--radius-full);color:#fff;cursor:pointer;padding:var(--space-sm);opacity:.7;transition:all var(--transition-fast);pointer-events:auto}.preview-nav-btn:hover{opacity:1;background:#000000b3}.progress-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:3000;display:flex;align-items:center;justify-content:center;background:#000000b3;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}.progress-card{background:var(--bg-elevated);border:1px solid var(--border);border-radius:var(--radius-xl);padding:var(--space-3xl);display:flex;flex-direction:column;align-items:center;gap:var(--space-lg);min-width:300px;box-shadow:var(--shadow-lg)}.progress-spinner{width:40px;height:40px;border:3px solid var(--border);border-top-color:var(--accent);border-radius:50%;animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.progress-card p{font-size:var(--text-md);color:var(--text-primary);font-weight:500}.progress-bar-container{width:100%;height:4px;background:var(--bg-active);border-radius:var(--radius-full);overflow:hidden}.progress-bar{height:100%;background:linear-gradient(90deg,var(--accent),var(--primary));border-radius:var(--radius-full);transition:width .3s ease}.progress-card span{font-size:var(--text-xs);color:var(--text-tertiary);font-family:var(--font-mono)}.toast-container{position:fixed;bottom:var(--space-xl);right:var(--space-xl);display:flex;flex-direction:column;gap:var(--space-sm);z-index:4000}.toast{background:var(--bg-elevated);border:1px solid var(--border);border-radius:var(--radius-md);padding:var(--space-md) var(--space-lg);display:flex;align-items:center;gap:var(--space-md);font-size:var(--text-sm);color:var(--text-primary);box-shadow:var(--shadow-md);animation:toastIn .4s cubic-bezier(.34,1.56,.64,1);max-width:360px;-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px)}.toast.toast-out{animation:toastOut .3s ease forwards}@keyframes toastIn{0%{opacity:0;transform:translate(100px)}to{opacity:1;transform:translate(0)}}@keyframes toastOut{to{opacity:0;transform:translate(100px)}}.toast-icon{flex-shrink:0}.toast.success{border-left:3px solid var(--success)}.toast.error{border-left:3px solid var(--danger)}.toast.info{border-left:3px solid var(--primary)}.toast.success .toast-icon{color:var(--success)}.toast.error .toast-icon{color:var(--danger)}.toast.info .toast-icon{color:var(--primary)}.global-drag-over:after{content:"";position:fixed;top:0;right:0;bottom:0;left:0;background:#c8a87c0d;border:3px dashed var(--accent);border-radius:var(--radius-lg);margin:var(--space-md);z-index:5000;pointer-events:none;animation:fadeIn .15s ease}body.is-web #titlebar{display:none}body.is-web #app{height:100vh;margin-top:0}
