:root{--accent: #2563eb;--bg: #f5f6f8;--bg-card: #ffffff;--bg-muted: #f0f1f4;--border: #e3e6eb;--border-strong: #c8cdd6;--text: #1c1f24;--text-muted: #6b7280;--text-faint: #9aa1ac;--primary: #2563eb;--primary-hover: #1d4ed8;--primary-bg: #eff6ff;--success: #16a34a;--success-bg: #dcfce7;--warning: #d97706;--warning-bg: #fef3c7;--error: #dc2626;--error-bg: #fee2e2;--shadow-sm: 0 1px 2px rgba(0, 0, 0, .04);--shadow-md: 0 2px 8px rgba(0, 0, 0, .06);--radius-sm: 6px;--radius-md: 10px;--radius-lg: 14px}*{box-sizing:border-box}html,body,#root{margin:0;padding:0;height:100%}body{background:var(--bg);color:var(--text);font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif;font-size:14px;line-height:1.5;-webkit-font-smoothing:antialiased}button{font-family:inherit;font-size:inherit;cursor:pointer}input,button{font-family:inherit}.app{max-width:1280px;margin:0 auto;padding:24px;min-height:100vh}.app-header{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:16px;margin-bottom:28px;padding-bottom:16px;border-bottom:1px solid var(--border)}.app-title{font-size:22px;font-weight:700;margin:0;letter-spacing:-.01em}.tab-nav{display:flex;gap:4px;background:var(--bg-muted);border-radius:var(--radius-md);padding:4px}.tab-btn{background:transparent;border:none;padding:8px 16px;font-size:14px;font-weight:500;color:var(--text-muted);border-radius:var(--radius-sm);transition:background .12s ease,color .12s ease}.tab-btn:hover{color:var(--text)}.tab-btn--active,.tab-btn--active:hover{background:var(--bg-card);color:var(--text);box-shadow:var(--shadow-sm)}.tab-content{display:flex;flex-direction:column;gap:20px}.dropzone{border:2px dashed var(--border-strong);border-radius:var(--radius-lg);background:var(--bg-card);padding:56px 24px;text-align:center;cursor:pointer;transition:border-color .12s ease,background .12s ease;outline:none}.dropzone:hover{border-color:var(--primary);background:var(--primary-bg)}.dropzone:focus-visible{border-color:var(--primary);box-shadow:0 0 0 3px #2563eb33}.dropzone--dragging{border-color:var(--primary);background:var(--primary-bg)}.dropzone--disabled{cursor:not-allowed;opacity:.6;background:var(--bg-muted)}.dropzone--disabled:hover{border-color:var(--border-strong);background:var(--bg-muted)}.dropzone-content{display:flex;flex-direction:column;align-items:center;gap:8px}.dropzone-icon{font-size:40px;line-height:1}.dropzone-title{font-size:16px;font-weight:600;margin:4px 0 0}.dropzone-hint{font-size:13px;color:var(--text-muted);margin:0}.progress-bar-wrapper{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius-md);padding:14px 16px;box-shadow:var(--shadow-sm)}.progress-bar-header{margin-bottom:8px}.progress-label{font-size:14px;color:var(--text)}.progress-errors{color:var(--error)}.progress-track{height:8px;background:var(--bg-muted);border-radius:999px;overflow:hidden}.progress-fill{height:100%;background:var(--primary);border-radius:999px;transition:width .2s ease}.progress-fill--done{background:var(--success)}.file-list{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius-md);max-height:480px;overflow-y:auto;box-shadow:var(--shadow-sm)}.file-row{display:flex;align-items:center;gap:12px;padding:10px 14px;border-bottom:1px solid var(--border);transition:background .12s ease}.file-row:last-child{border-bottom:none}.file-row--uploading{background:var(--primary-bg)}.file-row--done{background:transparent}.file-row--error{background:var(--error-bg)}.file-row-info{display:flex;align-items:center;gap:12px;flex:1;min-width:0}.file-photo-num{font-variant-numeric:tabular-nums;font-size:12px;color:var(--text-muted);background:var(--bg-muted);padding:2px 8px;border-radius:var(--radius-sm);flex-shrink:0}.file-names{display:flex;flex-direction:column;min-width:0}.file-name{font-size:13px;color:var(--text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.file-path{font-size:11px;color:var(--text-faint);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.file-row-right{display:flex;align-items:center;gap:8px;flex-shrink:0}.file-progress-track{position:relative;width:140px;height:6px;background:var(--bg-muted);border-radius:999px;overflow:hidden}.file-progress-fill{height:100%;background:var(--primary);border-radius:999px;transition:width .12s linear}.file-progress-pct{position:absolute;right:-36px;top:50%;transform:translateY(-50%);font-size:11px;font-variant-numeric:tabular-nums;color:var(--text-muted);width:32px;text-align:right}.badge{display:inline-block;padding:3px 10px;font-size:11px;font-weight:600;border-radius:999px;text-transform:uppercase;letter-spacing:.03em}.badge--pending{background:var(--bg-muted);color:var(--text-muted)}.badge--uploading{background:var(--primary-bg);color:var(--primary)}.badge--done{background:var(--success-bg);color:var(--success)}.badge--error{background:var(--error-bg);color:var(--error)}.file-error-msg{font-size:11px;color:var(--error);max-width:200px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.item-card{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius-md);padding:16px;box-shadow:var(--shadow-sm);display:flex;flex-direction:column;gap:12px}.item-card--empty{background:var(--bg-muted);opacity:.7}.item-card-header{display:flex;justify-content:space-between;align-items:center;gap:8px}.item-card-name{font-size:15px;font-weight:600;color:var(--text)}.item-card-count{font-size:12px;font-weight:600;background:var(--primary-bg);color:var(--primary);padding:3px 10px;border-radius:999px}.item-card-count--zero{background:transparent;color:var(--text-faint);font-style:italic;font-weight:500}.item-thumb-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(96px,1fr));gap:8px}.item-thumb{display:flex;flex-direction:column;gap:4px}.item-thumb img{width:100%;aspect-ratio:1 / 1;object-fit:cover;border-radius:var(--radius-sm);background:var(--bg-muted);display:block}.item-thumb-label{font-size:11px;color:var(--text-muted);text-align:center;font-variant-numeric:tabular-nums}.results-view{display:flex;flex-direction:column;gap:20px}.results-progress{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius-md);padding:14px 16px;box-shadow:var(--shadow-sm)}.results-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(320px,1fr));gap:16px}.results-empty{background:var(--bg-card);border:1px dashed var(--border-strong);border-radius:var(--radius-md);color:var(--text-muted);text-align:center;padding:32px 16px;margin:0}.item-manager{display:flex;flex-direction:column;gap:16px}.item-manager-list{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius-md);box-shadow:var(--shadow-sm);overflow:hidden}.preset-item-row{display:flex;align-items:center;gap:12px;padding:10px 14px;border-bottom:1px solid var(--border)}.preset-item-row:last-child{border-bottom:none}.preset-item-toggle{width:16px;height:16px;cursor:pointer;flex-shrink:0;accent-color:var(--primary)}.preset-item-name{flex:1;font-size:14px;cursor:pointer;padding:4px 6px;border-radius:var(--radius-sm);transition:background .12s ease}.preset-item-name:hover{background:var(--bg-muted)}.preset-item-name--inactive{color:var(--text-faint);text-decoration:line-through}.preset-item-delete{background:transparent;border:none;color:var(--text-faint);font-size:14px;width:28px;height:28px;border-radius:var(--radius-sm);display:flex;align-items:center;justify-content:center;transition:background .12s ease,color .12s ease;flex-shrink:0}.preset-item-delete:hover:not(:disabled){background:var(--error-bg);color:var(--error)}.preset-item-delete:disabled{cursor:not-allowed;opacity:.5}.preset-item-add{display:flex;gap:8px;background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius-md);padding:12px;box-shadow:var(--shadow-sm)}.preset-item-input{flex:1;padding:8px 12px;font-size:14px;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--bg-card);color:var(--text);outline:none;transition:border-color .12s ease,box-shadow .12s ease}.preset-item-input:focus{border-color:var(--primary);box-shadow:0 0 0 3px #2563eb26}.preset-item-input:disabled{background:var(--bg-muted);color:var(--text-muted)}.preset-item-submit{padding:8px 16px;background:var(--primary);color:#fff;border:none;border-radius:var(--radius-sm);font-weight:500;transition:background .12s ease}.preset-item-submit:hover:not(:disabled){background:var(--primary-hover)}.preset-item-submit:disabled{background:var(--border-strong);cursor:not-allowed}.clear-all-btn{align-self:flex-start;padding:8px 16px;background:var(--bg-card);color:var(--error);border:1px solid var(--error);border-radius:var(--radius-sm);font-weight:500;transition:background .12s ease,color .12s ease}.clear-all-btn:hover:not(:disabled){background:var(--error);color:#fff}.clear-all-btn:disabled{cursor:not-allowed;opacity:.5}.clear-all-btn--loading{cursor:wait}.retry-btn{align-self:flex-start;padding:8px 16px;background:var(--bg-card);color:var(--accent);border:1px solid var(--accent);border-radius:var(--radius-sm);font-weight:500;transition:background .12s ease,color .12s ease}.retry-btn:hover{background:var(--accent);color:#fff}.spinner{width:24px;height:24px;border:2px solid var(--bg-muted);border-top-color:var(--primary);border-radius:50%;animation:spin .7s linear infinite;margin:16px auto}@keyframes spin{to{transform:rotate(360deg)}}.error-message{background:var(--error-bg);color:var(--error);border:1px solid rgba(220,38,38,.25);border-radius:var(--radius-sm);padding:10px 14px;font-size:13px}.item-thumb{position:relative}.correction-flag{position:absolute;top:4px;right:4px;width:20px;height:20px;background:#0000008c;color:#fff;border:none;border-radius:50%;font-size:10px;line-height:20px;text-align:center;cursor:pointer;opacity:0;transition:opacity .12s ease;padding:0}.item-thumb:hover .correction-flag{opacity:1}.correction-form{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius-sm);padding:10px 12px;margin-top:4px;margin-bottom:8px;display:flex;flex-direction:column;gap:8px}.correction-label{font-size:.8rem;color:var(--text-secondary);margin:0}.correction-select,.correction-note{font-size:.8rem;padding:5px 8px;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--bg);color:var(--text);width:100%}.correction-actions{display:flex;gap:6px}.correction-submit{padding:4px 12px;background:var(--accent);color:#fff;border:none;border-radius:var(--radius-sm);font-size:.8rem;cursor:pointer}.correction-submit:disabled{opacity:.6;cursor:wait}.correction-cancel{padding:4px 10px;background:transparent;color:var(--text-secondary);border:1px solid var(--border);border-radius:var(--radius-sm);font-size:.8rem;cursor:pointer}
