body{-moz-osx-font-smoothing:grayscale;background:#f5f5f5;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;margin:0}code{font-family:source-code-pro,Menlo,Monaco,Consolas,monospace}:root{--primary:#6366f1;--primary-dark:#4f46e5;--primary-light:#818cf8;--secondary:#0ea5e9;--accent:#10b981;--accent-warn:#f59e0b;--accent-danger:#ef4444;--bg:#f8fafc;--bg-card:#fff;--bg-elevated:#fff;--text:#0f172a;--text-secondary:#64748b;--text-muted:#94a3b8;--border:#e2e8f0;--border-light:#f1f5f9;--shadow-sm:0 1px 2px 0 #0000000d;--shadow:0 1px 3px 0 #0000001a,0 1px 2px -1px #0000001a;--shadow-md:0 4px 6px -1px #0000001a,0 2px 4px -2px #0000001a;--shadow-lg:0 10px 15px -3px #0000001a,0 4px 6px -4px #0000001a;--radius:12px;--radius-sm:8px;--radius-lg:16px;--transition:150ms cubic-bezier(0.4,0,0.2,1);--font:"Inter",system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,sans-serif}*{box-sizing:border-box;margin:0;padding:0}body{-webkit-font-smoothing:antialiased;background:#f8fafc;background:var(--bg);color:#0f172a;color:var(--text);font-family:Inter,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;font-family:var(--font);line-height:1.5}.App{margin:0 auto;max-width:1200px;min-height:100vh;padding:0 16px 40px}.upload-section{background:#0000;border:none;box-shadow:none;padding:16px 8px}.mini-header{border-bottom:1px solid #f1f5f9;border-bottom:1px solid var(--border-light);gap:12px;justify-content:space-between;margin-bottom:8px;padding:10px 8px}.header-left,.mini-header{align-items:center;display:flex;flex-wrap:wrap}.header-left{gap:10px}.header-right{align-items:center;display:flex;gap:12px}.user-name{color:#0f172a;color:var(--text);font-size:14px;font-weight:600}.logout-btn{background:#fff;background:var(--bg-card);border:1px solid #fecaca;border-radius:8px;border-radius:var(--radius-sm);color:#ef4444;color:var(--accent-danger);cursor:pointer;font-size:13px;font-weight:500;padding:7px 14px;transition:.15s cubic-bezier(.4,0,.2,1);transition:var(--transition)}.logout-btn:hover{background:#fef2f2;border-color:#fca5a5}.tabs-inline{align-items:center;background:#7878801f;border:1px solid #e2e8f0;border:1px solid var(--border);border-radius:999px;box-shadow:0 1px 2px 0 #0000000d;box-shadow:var(--shadow-sm);display:flex;gap:2px;padding:3px}.tabs-inline button{background:#0000;border:none;border-radius:999px;color:#64748b;color:var(--text-secondary);cursor:pointer;font-size:13px;line-height:1.2;padding:6px 14px;transition:.15s cubic-bezier(.4,0,.2,1);transition:var(--transition);white-space:nowrap}.tabs-inline button:hover{background:#f8fafc;background:var(--bg);color:#0f172a;color:var(--text)}.tabs-inline button.active{background:linear-gradient(135deg,#6366f1,#4f46e5);background:linear-gradient(135deg,var(--primary),var(--primary-dark))}.model-toggle-btn,.tabs-inline button.active{box-shadow:0 1px 2px 0 #0000000d;box-shadow:var(--shadow-sm);color:#fff}.model-toggle-btn{background:linear-gradient(135deg,#7c3aed,#6d28d9);border:none;border-radius:999px;cursor:pointer;font-size:13px;font-weight:600;line-height:1.2;padding:7px 14px;transition:.15s cubic-bezier(.4,0,.2,1);transition:var(--transition);white-space:nowrap}.model-toggle-btn:hover{box-shadow:0 4px 6px -1px #0000001a,0 2px 4px -2px #0000001a;box-shadow:var(--shadow-md);transform:translateY(-1px)}.model-dropdown{background:#fff;background:var(--bg-elevated);border:1px solid #e2e8f0;border:1px solid var(--border);border-radius:12px;border-radius:var(--radius);box-shadow:0 10px 15px -3px #0000001a,0 4px 6px -4px #0000001a;box-shadow:var(--shadow-lg);margin-top:4px;max-height:360px;min-width:320px;overflow-y:auto;padding:10px;position:absolute;z-index:100}.models-grid{grid-gap:4px;display:grid;gap:4px;grid-template-columns:1fr}.model-option{align-items:center;border:1px solid #0000;border-radius:8px;border-radius:var(--radius-sm);cursor:pointer;display:flex;gap:10px;padding:8px 10px;transition:.15s cubic-bezier(.4,0,.2,1);transition:var(--transition)}.model-option:hover{background:#f8fafc;background:var(--bg);border-color:#e2e8f0;border-color:var(--border)}.model-option.selected{background:#eef2ff;border-color:#818cf8;border-color:var(--primary-light)}.provider-badge{border-radius:20px;color:#fff;flex-shrink:0;font-size:10px;font-weight:700;letter-spacing:.3px;padding:3px 8px;text-transform:uppercase}.model-name{color:#0f172a;color:var(--text);flex:1 1;font-size:13px;font-weight:500}.status-ok{flex-shrink:0;font-size:12px}.upload-toolbar{align-items:center;display:flex;flex-wrap:wrap;gap:6px;margin-bottom:12px;padding:0 4px}.upload-toolbar .btn-camera,.upload-toolbar .btn-file,.upload-toolbar .btn-folder{align-items:center;border:none;border-radius:999px;cursor:pointer;display:inline-flex;font-size:14px;font-weight:600;gap:6px;padding:8px 14px;transition:.15s cubic-bezier(.4,0,.2,1);transition:var(--transition);white-space:nowrap}.upload-toolbar .btn-camera{background:linear-gradient(135deg,#22c55e,#16a34a);color:#fff}.upload-toolbar .btn-camera:hover{box-shadow:0 4px 6px -1px #0000001a,0 2px 4px -2px #0000001a;box-shadow:var(--shadow-md);filter:brightness(1.05);transform:translateY(-1px)}.upload-toolbar .btn-file{background:linear-gradient(135deg,#3b82f6,#2563eb);color:#fff}.upload-toolbar .btn-file:hover{box-shadow:0 4px 6px -1px #0000001a,0 2px 4px -2px #0000001a;box-shadow:var(--shadow-md);filter:brightness(1.05);transform:translateY(-1px)}.upload-toolbar .btn-folder{background:linear-gradient(135deg,#7c3aed,#6d28d9);color:#fff}.upload-toolbar .btn-folder:hover{box-shadow:0 4px 6px -1px #0000001a,0 2px 4px -2px #0000001a;box-shadow:var(--shadow-md);filter:brightness(1.05);transform:translateY(-1px)}.toolbar-controls{align-items:center;display:flex;flex-wrap:wrap;gap:3px;margin-left:0;padding:8px 4px;width:100%}.control-group.compact{align-items:center;display:flex;flex:0 0 auto;gap:2px;min-width:auto}.control-group.compact label{color:#64748b;color:var(--text-secondary);font-size:10px;font-weight:600;letter-spacing:.4px;margin-bottom:0;text-transform:uppercase;white-space:nowrap}.control-group.compact select{appearance:none;background:#78788014;background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='%2364748b' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E");background-position:right 4px center;background-repeat:no-repeat;border:none;border-radius:999px;color:#0f172a;color:var(--text);cursor:pointer;font-size:11px;font-weight:500;min-width:auto;padding:5px 14px 5px 6px}.recognize-bar{margin-bottom:16px}.recognize-main-btn{background:linear-gradient(135deg,#7c3aed,#6d28d9);border:none;border-radius:12px;border-radius:var(--radius);cursor:pointer;font-size:15px;font-weight:700;justify-content:center;letter-spacing:.3px;padding:14px 24px;transition:.15s cubic-bezier(.4,0,.2,1);transition:var(--transition);width:100%}.model-active-badge-inline,.recognize-main-btn{align-items:center;color:#fff;display:inline-flex}.model-active-badge-inline{background:#ffffff2e;border-radius:999px;font-size:12px;gap:6px;margin-right:8px;padding:3px 10px}.recognize-main-btn:hover:not(:disabled){box-shadow:0 4px 6px -1px #0000001a,0 2px 4px -2px #0000001a;box-shadow:var(--shadow-md);filter:brightness(1.05);transform:translateY(-1px)}.recognize-main-btn:disabled{cursor:not-allowed;opacity:.6;transform:none}.upload-layout{grid-gap:20px;align-items:start;display:grid;gap:20px;grid-template-columns:1fr 1fr}@media (max-width:768px){.upload-layout{grid-template-columns:1fr}}.drop-zone{align-items:center;background:linear-gradient(135deg,#f8fafc,#f1f5f9);border:2px dashed #cbd5e1;border-radius:16px;border-radius:var(--radius-lg);cursor:pointer;display:flex;justify-content:center;min-height:300px;overflow:hidden;padding:24px;position:relative;text-align:center;transition:.15s cubic-bezier(.4,0,.2,1);transition:var(--transition)}.drop-zone:hover{background:linear-gradient(135deg,#f8fafc,#eef2ff);border-color:#818cf8;border-color:var(--primary-light)}.drop-zone .drop-text{color:#64748b;color:var(--text-secondary);font-size:14px;line-height:1.8}.drop-zone .drop-text p:first-child{color:#0f172a;color:var(--text);font-size:16px;font-weight:600;margin-bottom:4px}.drop-zone .hint{color:#94a3b8;color:var(--text-muted);font-size:12px;margin-top:4px}.preview-container{position:relative;width:100%}.preview{border-radius:12px;border-radius:var(--radius);box-shadow:0 4px 6px -1px #0000001a,0 2px 4px -2px #0000001a;box-shadow:var(--shadow-md);max-height:420px;max-width:100%;object-fit:contain}.file-nav{gap:12px;margin-top:12px}.file-nav,.file-nav button{align-items:center;display:flex;justify-content:center}.file-nav button{background:#fff;background:var(--bg-card);border:1px solid #e2e8f0;border:1px solid var(--border);border-radius:50%;color:#0f172a;color:var(--text);cursor:pointer;font-size:14px;height:32px;transition:.15s cubic-bezier(.4,0,.2,1);transition:var(--transition);width:32px}.file-nav button:hover:not(:disabled){background:#6366f1;background:var(--primary);border-color:#6366f1;border-color:var(--primary);color:#fff}.file-nav button:disabled{cursor:not-allowed;opacity:.4}.file-nav span{color:#64748b;color:var(--text-secondary);font-size:13px;font-weight:500;min-width:60px;text-align:center}.result-panel{animation:slideUp .3s ease;background:#fff;background:var(--bg-card);border:1px solid #e2e8f0;border:1px solid var(--border);border-radius:16px;border-radius:var(--radius-lg);box-shadow:0 1px 3px 0 #0000001a,0 1px 2px -1px #0000001a;box-shadow:var(--shadow);max-height:600px;overflow:hidden;overflow-y:auto;padding:0}@keyframes slideUp{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}.result-panel-header{align-items:center;background:linear-gradient(135deg,#f0fdf4,#ecfdf5);border-bottom:1px solid #bbf7d0;display:flex;justify-content:space-between;padding:14px 18px}.result-panel-header h3{align-items:center;color:#15803d;display:flex;font-size:15px;font-weight:700;gap:8px}.result-panel-header .close-btn{background:#fff;border:1px solid #e2e8f0;border:1px solid var(--border);border-radius:8px;border-radius:var(--radius-sm);color:#64748b;color:var(--text-secondary);cursor:pointer;font-size:12px;font-weight:600;padding:6px 14px;transition:.15s cubic-bezier(.4,0,.2,1);transition:var(--transition)}.result-panel-header .close-btn:hover{background:#fef2f2;border-color:#fecaca;color:#ef4444;color:var(--accent-danger)}.result-panel-body{display:flex;flex-wrap:wrap;gap:16px;padding:16px}.result-image{flex:0 0 120px}.result-image img{border-radius:8px;border-radius:var(--radius-sm);box-shadow:0 1px 2px 0 #0000000d;box-shadow:var(--shadow-sm);height:160px;object-fit:cover;width:120px}.result-info{flex:1 1;min-width:200px}.result-info p{color:#64748b;color:var(--text-secondary);font-size:13px;line-height:1.5;margin-bottom:6px}.result-info p strong{color:#0f172a;color:var(--text);font-weight:600}.result-info .error{background:#fef2f2;border:1px solid #fecaca;border-radius:8px;border-radius:var(--radius-sm);color:#ef4444;color:var(--accent-danger);font-size:12px;margin-top:8px;padding:8px 12px}.result-items{border-top:1px solid #f1f5f9;border-top:1px solid var(--border-light);padding:12px 16px 16px}.result-items h4{color:#0f172a;color:var(--text);font-size:13px;font-weight:700;margin-bottom:10px}.result-items ul{list-style:none;max-height:200px;overflow-y:auto;padding:0}.result-items li{border-bottom:1px solid #f1f5f9;border-bottom:1px solid var(--border-light);color:#64748b;color:var(--text-secondary);font-size:12px;padding:5px 0}.result-items li:last-child{border-bottom:none}.result-raw-text{border-top:1px solid #f1f5f9;border-top:1px solid var(--border-light);padding:0 16px 16px}.result-raw-text summary{color:#0f172a;color:var(--text);cursor:pointer;font-size:13px;font-weight:600;padding:12px 0}.result-raw-text pre{background:#f8fafc;background:var(--bg);border:1px solid #e2e8f0;border:1px solid var(--border);border-radius:8px;border-radius:var(--radius-sm);color:#64748b;color:var(--text-secondary);font-size:11px;line-height:1.6;max-height:200px;overflow:auto;padding:12px;white-space:pre-wrap}.folder-progress{background:#fff;background:var(--bg-card);border:1px solid #e2e8f0;border:1px solid var(--border);border-radius:12px;border-radius:var(--radius);box-shadow:0 1px 2px 0 #0000000d;box-shadow:var(--shadow-sm);margin-top:16px;padding:16px}.folder-progress-bar{background:#f1f5f9;background:var(--border-light);border-radius:4px;height:8px;margin:10px 0;width:100%}.folder-progress-bar>div{background:linear-gradient(90deg,#10b981,#0ea5e9);background:linear-gradient(90deg,var(--accent),var(--secondary));border-radius:4px;height:100%;transition:width .3s ease}.list-section{animation:fadeIn .3s ease}@keyframes fadeIn{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}.filters{align-items:center;display:flex;flex-wrap:wrap;gap:10px;margin-bottom:16px}.filters input,.filters select{background:#fff;background:var(--bg-card);border:1px solid #e2e8f0;border:1px solid var(--border);border-radius:8px;border-radius:var(--radius-sm);color:#0f172a;color:var(--text);font-size:13px;font-weight:500;padding:9px 12px;transition:.15s cubic-bezier(.4,0,.2,1);transition:var(--transition)}.filters input:focus,.filters select:focus{border-color:#6366f1;border-color:var(--primary);box-shadow:0 0 0 3px #6366f11a;outline:none}.filters input{flex:1 1;min-width:180px}.filters button{background:#fff;background:var(--bg-card);border:1px solid #e2e8f0;border:1px solid var(--border);border-radius:8px;border-radius:var(--radius-sm);color:#0f172a;color:var(--text);cursor:pointer;font-size:13px;font-weight:600;padding:9px 16px;transition:.15s cubic-bezier(.4,0,.2,1);transition:var(--transition);white-space:nowrap}.filters button:hover{background:#f8fafc;background:var(--bg);border-color:#818cf8;border-color:var(--primary-light);color:#6366f1;color:var(--primary)}.receipts-grid{grid-gap:16px;display:grid;gap:16px;grid-template-columns:repeat(auto-fill,minmax(280px,1fr))}.receipt-card{background:var(--bg-card);border:1px solid #e2e8f0;border:1px solid var(--border);border-radius:12px;border-radius:var(--radius);box-shadow:0 1px 2px 0 #0000000d;box-shadow:var(--shadow-sm);display:flex;flex-direction:column;gap:3px;padding:12px;transition:.15s cubic-bezier(.4,0,.2,1);transition:var(--transition)}.receipt-card:hover{border-color:#818cf8;border-color:var(--primary-light);box-shadow:0 4px 6px -1px #0000001a,0 2px 4px -2px #0000001a;box-shadow:var(--shadow-md);transform:translateY(-2px)}.receipt-header{align-items:flex-start;display:flex;gap:8px;margin-bottom:2px}.receipt-header input[type=checkbox]{accent-color:#6366f1;accent-color:var(--primary);cursor:pointer;height:18px;margin-top:2px;width:18px}.receipt-header h3{color:#0f172a;color:var(--text);flex:1 1;font-size:14px;font-weight:600;line-height:1.4;word-break:break-word}.type-badge{background:#e0e7ff;border-radius:20px;color:#4f46e5;color:var(--primary-dark);flex-shrink:0;font-size:10px;font-weight:700;letter-spacing:.5px;line-height:1.2;padding:2px 8px;text-transform:uppercase}.receipt-card .date{color:#94a3b8;color:var(--text-muted);font-size:12px;margin-bottom:1px;margin-left:0}.receipt-card .amount{color:#10b981;color:var(--accent);font-size:16px;font-weight:700;margin-bottom:1px;margin-left:0;margin-top:1px}.receipt-card .items-count{color:#64748b;color:var(--text-secondary);font-size:12px;margin-bottom:3px;margin-left:0}.receipt-card .receipt-thumb{background:#f8fafc;background:var(--bg);cursor:zoom-in;height:auto;max-height:240px;object-fit:contain}.receipt-card .no-image-thumb,.receipt-card .receipt-thumb{border-radius:8px;border-radius:var(--radius-sm);margin-top:4px;width:100%}.receipt-card .no-image-thumb{align-items:center;background:linear-gradient(135deg,#f1f5f9,#e2e8f0);color:#94a3b8;color:var(--text-muted);display:flex;font-size:13px;font-weight:500;height:140px;justify-content:center}.receipt-actions{display:flex;gap:8px;margin-left:0;margin-top:5px}.receipt-actions button{background:#fff;background:var(--bg-card);border:1px solid #e2e8f0;border:1px solid var(--border);border-radius:8px;border-radius:var(--radius-sm);color:#64748b;color:var(--text-secondary);cursor:pointer;flex:1 1;font-size:12px;font-weight:600;padding:7px 12px;transition:.15s cubic-bezier(.4,0,.2,1);transition:var(--transition)}.receipt-actions button:hover{background:#6366f1;background:var(--primary);border-color:#6366f1;border-color:var(--primary);color:#fff}.receipt-actions button.danger{border-color:#fecaca;color:#ef4444;color:var(--accent-danger)}.receipt-actions button.danger:hover{background:#ef4444;background:var(--accent-danger);border-color:#ef4444;border-color:var(--accent-danger);color:#fff}.modal-overlay{align-items:center;animation:fadeIn .2s ease;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);background:#0f172a99;display:flex;inset:0;justify-content:center;padding:20px;position:fixed;z-index:1000}.modal-content{animation:slideUp .3s ease;background:#fff;background:var(--bg-elevated);border-radius:16px;border-radius:var(--radius-lg);box-shadow:0 10px 15px -3px #0000001a,0 4px 6px -4px #0000001a;box-shadow:var(--shadow-lg);display:flex;flex-direction:column;max-height:90vh;max-width:900px;overflow:hidden;width:100%}.modal-header{align-items:center;border-bottom:1px solid #f1f5f9;border-bottom:1px solid var(--border-light);display:flex;justify-content:space-between;padding:16px 20px}.modal-header h2{color:#0f172a;color:var(--text);font-size:16px;font-weight:700}.modal-close{align-items:center;background:#f8fafc;background:var(--bg);border:none;border-radius:50%;color:#64748b;color:var(--text-secondary);cursor:pointer;display:flex;font-size:16px;height:32px;justify-content:center;transition:.15s cubic-bezier(.4,0,.2,1);transition:var(--transition);width:32px}.modal-close:hover{background:#fecaca;color:#ef4444;color:var(--accent-danger)}.modal-body{display:flex;flex:1 1;flex-wrap:wrap;gap:20px;overflow-y:auto;padding:20px}.modal-image-section{flex:0 0 300px}.modal-image{border-radius:12px;border-radius:var(--radius);box-shadow:0 1px 2px 0 #0000000d;box-shadow:var(--shadow-sm);max-height:400px;object-fit:contain;width:100%}.modal-info{flex:1 1;min-width:280px}.info-block{background:#f8fafc;background:var(--bg);border:1px solid #f1f5f9;border:1px solid var(--border-light);border-radius:12px;border-radius:var(--radius);margin-bottom:20px;padding:16px}.info-block h3{color:#0f172a;color:var(--text);font-size:13px;font-weight:700;letter-spacing:.5px;margin-bottom:12px;text-transform:uppercase}.info-block p{color:#64748b;color:var(--text-secondary);font-size:13px;margin-bottom:6px}.info-block p strong{color:#0f172a;color:var(--text);font-weight:600}.items-table{border-collapse:collapse;font-size:12px;width:100%}.items-table th{background:#fff;background:var(--bg-card);border-bottom:2px solid #e2e8f0;border-bottom:2px solid var(--border);color:#64748b;color:var(--text-secondary);font-size:11px;font-weight:600;letter-spacing:.3px;padding:8px 10px;text-align:left;text-transform:uppercase}.items-table td{border-bottom:1px solid #f1f5f9;border-bottom:1px solid var(--border-light);color:#0f172a;color:var(--text);padding:8px 10px}.items-table tr:hover td,.raw-text{background:#fff;background:var(--bg-card)}.raw-text{border:1px solid #e2e8f0;border:1px solid var(--border);border-radius:8px;border-radius:var(--radius-sm);color:#64748b;color:var(--text-secondary);font-size:12px;line-height:1.6;max-height:300px;overflow:auto;padding:12px;white-space:pre-wrap;word-break:break-word}.modal-footer{border-top:1px solid #f1f5f9;border-top:1px solid var(--border-light);display:flex;gap:10px;justify-content:flex-end;padding:16px 20px}.modal-footer button{background:#fff;background:var(--bg-card);border:1px solid #e2e8f0;border:1px solid var(--border);border-radius:8px;border-radius:var(--radius-sm);color:#0f172a;color:var(--text);cursor:pointer;font-size:13px;font-weight:600;padding:9px 20px;transition:.15s cubic-bezier(.4,0,.2,1);transition:var(--transition)}.modal-footer button:hover{background:#f8fafc;background:var(--bg)}.modal-footer button.danger{background:#ef4444;background:var(--accent-danger);border-color:#ef4444;border-color:var(--accent-danger);color:#fff}.modal-footer button.danger:hover{filter:brightness(1.1)}.login-box{animation:slideUp .4s ease;background:#fff;background:var(--bg-card);border:1px solid #e2e8f0;border:1px solid var(--border);border-radius:16px;border-radius:var(--radius-lg);box-shadow:0 10px 15px -3px #0000001a,0 4px 6px -4px #0000001a;box-shadow:var(--shadow-lg);margin:80px auto;max-width:380px;padding:32px}.login-box h1{-webkit-text-fill-color:#0000;background:linear-gradient(135deg,#6366f1,#0ea5e9);background:linear-gradient(135deg,var(--primary),var(--secondary));-webkit-background-clip:text;background-clip:text;font-size:22px;font-weight:800;margin-bottom:20px;text-align:center}.login-box input[type=password]{background:#f8fafc;background:var(--bg);border:1px solid #e2e8f0;border:1px solid var(--border);border-radius:8px;border-radius:var(--radius-sm);font-size:14px;margin-bottom:12px;padding:12px 14px;transition:.15s cubic-bezier(.4,0,.2,1);transition:var(--transition);width:100%}.login-box input[type=password]:focus{border-color:#6366f1;border-color:var(--primary);box-shadow:0 0 0 3px #6366f11a;outline:none}.login-box button{background:linear-gradient(135deg,#6366f1,#4f46e5);background:linear-gradient(135deg,var(--primary),var(--primary-dark));border:none;border-radius:8px;border-radius:var(--radius-sm);box-shadow:0 1px 2px 0 #0000000d;box-shadow:var(--shadow-sm);color:#fff;cursor:pointer;font-size:14px;font-weight:700;padding:12px;transition:.15s cubic-bezier(.4,0,.2,1);transition:var(--transition);width:100%}.login-box button:hover:not(:disabled){box-shadow:0 4px 6px -1px #0000001a,0 2px 4px -2px #0000001a;box-shadow:var(--shadow-md);transform:translateY(-1px)}.login-box button:disabled{cursor:not-allowed;opacity:.6}.loading-center,.loading-screen{align-items:center;display:flex;flex-direction:column;gap:16px;justify-content:center;padding:60px 20px}.loading-center p,.loading-screen p{color:#64748b;color:var(--text-secondary);font-size:14px;font-weight:500}.spinner{animation:spin .8s linear infinite;border:3px solid #e2e8f0;border-top-color:#6366f1;border:3px solid var(--border);border-radius:50%;border-top-color:var(--primary);height:36px;width:36px}@keyframes spin{to{transform:rotate(1turn)}}.empty-state{color:#94a3b8;color:var(--text-muted);font-size:14px;padding:60px 20px;text-align:center}.scan-overlay{background:#0f172a;color:#e2e8f0;display:flex;flex-direction:column;inset:0;position:fixed;z-index:10000}.scan-overlay-header{align-items:center;background:#ffffff05;border-bottom:1px solid #ffffff14;display:flex;justify-content:space-between;padding:14px 16px}.scan-overlay-header button{background:#ffffff26;border:none;border-radius:10px;color:#fff;cursor:pointer;font-size:15px;font-weight:600;padding:8px 14px}.scan-overlay-body{flex:1 1;overflow-y:auto;padding:20px}.scan-overlay-footer{border-top:1px solid #ffffff14;display:flex;gap:12px;padding:16px}.scan-overlay-footer button{border:none;border-radius:12px;border-radius:var(--radius);cursor:pointer;flex:1 1;font-size:15px;font-weight:700;padding:16px;transition:.15s cubic-bezier(.4,0,.2,1);transition:var(--transition)}.scan-overlay-footer button:first-child{background:linear-gradient(135deg,#22c55e,#16a34a);color:#fff}.scan-overlay-footer button:last-child{background:linear-gradient(135deg,#f59e0b,#d97706);color:#fff}.scan-overlay-footer button:hover{filter:brightness(1.1);transform:translateY(-1px)}mark{background:#fef08a;border-radius:3px;color:#1e293b;font-weight:600;padding:1px 3px}@media (max-width:768px){.App{padding:0 12px 30px}.mini-header{align-items:stretch;flex-direction:column}.header-left,.header-right{justify-content:center}.tabs-inline button{font-size:12px;padding:8px 10px}.upload-toolbar{align-items:stretch;flex-direction:column}.toolbar-controls{justify-content:center;margin-left:0}.receipts-grid,.upload-layout{grid-template-columns:1fr}.modal-body{flex-direction:column}.modal-image-section{flex:1 1}}::-webkit-scrollbar{height:6px;width:6px}::-webkit-scrollbar-thumb{background:#cbd5e1;border-radius:3px}::-webkit-scrollbar-thumb:hover{background:#94a3b8}.model-selector-wrap{align-items:center;display:flex;flex-direction:row;gap:8px}.model-active-badge{align-items:center;background:#fff;background:var(--bg-card);border:1px solid #e2e8f0;border:1px solid var(--border);border-radius:999px;box-shadow:0 1px 2px 0 #0000000d;box-shadow:var(--shadow-sm);color:#64748b;color:var(--text-secondary);display:flex;font-size:12px;gap:6px;line-height:1.2;padding:3px 10px}.model-active-badge .provider-badge{font-size:9px;padding:2px 6px}.model-active-name{color:#0f172a;color:var(--text);font-weight:600;max-width:200px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.model-modal-overlay{align-items:center;animation:fadeIn .2s ease;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);background:#0f172a99;display:flex;inset:0;justify-content:center;padding:20px;position:fixed;z-index:1000}.model-modal-content{animation:slideUp .3s ease;background:#fff;background:var(--bg-elevated);border-radius:16px;border-radius:var(--radius-lg);box-shadow:0 10px 15px -3px #0000001a,0 4px 6px -4px #0000001a;box-shadow:var(--shadow-lg);display:flex;flex-direction:column;max-height:85vh;max-width:720px;overflow:hidden;width:100%}.model-modal-header{align-items:center;border-bottom:1px solid #f1f5f9;border-bottom:1px solid var(--border-light);display:flex;justify-content:space-between;padding:16px 20px}.model-modal-header h2{color:#0f172a;color:var(--text);font-size:16px;font-weight:700}.model-modal-search{border-bottom:1px solid #f1f5f9;border-bottom:1px solid var(--border-light);padding:12px 20px}.model-modal-search input{background:#f8fafc;background:var(--bg);border:1px solid #e2e8f0;border:1px solid var(--border);border-radius:8px;border-radius:var(--radius-sm);color:#0f172a;color:var(--text);font-size:14px;padding:10px 14px;transition:.15s cubic-bezier(.4,0,.2,1);transition:var(--transition);width:100%}.model-modal-search input:focus{border-color:#6366f1;border-color:var(--primary);box-shadow:0 0 0 3px #6366f11a;outline:none}.model-modal-body{flex:1 1;overflow-y:auto;padding:16px 20px}.model-modal-grid{grid-gap:10px;display:grid;gap:10px;grid-template-columns:repeat(auto-fill,minmax(220px,1fr))}.model-card{background:#fff;background:var(--bg-card);border:2px solid #e2e8f0;border:2px solid var(--border);border-radius:12px;border-radius:var(--radius);cursor:pointer;display:flex;flex-direction:column;gap:8px;padding:14px;transition:.15s cubic-bezier(.4,0,.2,1);transition:var(--transition)}.model-card:hover{border-color:#818cf8;border-color:var(--primary-light);box-shadow:0 4px 6px -1px #0000001a,0 2px 4px -2px #0000001a;box-shadow:var(--shadow-md);transform:translateY(-2px)}.model-card.selected{background:#eef2ff;border-color:#6366f1;border-color:var(--primary);box-shadow:0 0 0 3px #6366f126}.model-card-top{align-items:center;display:flex;justify-content:space-between}.model-card-top .provider-badge{font-size:10px;padding:3px 8px}.model-check{color:#10b981;color:var(--accent);font-size:16px}.model-card-name{color:#0f172a;color:var(--text);font-size:13px;font-weight:600;line-height:1.4}.model-card-id{color:#94a3b8;color:var(--text-muted);font-family:monospace;font-size:11px}.model-modal-footer{align-items:center;background:#f8fafc;background:var(--bg);border-top:1px solid #f1f5f9;border-top:1px solid var(--border-light);display:flex;gap:12px;justify-content:space-between;padding:12px 20px}.model-modal-active-bar{align-items:center;color:#64748b;color:var(--text-secondary);display:flex;flex-wrap:wrap;font-size:13px;gap:8px}.model-modal-active-bar strong,.model-modal-close-btn{color:#0f172a;color:var(--text);font-weight:600}.model-modal-close-btn{background:#fff;background:var(--bg-card);border:1px solid #e2e8f0;border:1px solid var(--border);border-radius:8px;border-radius:var(--radius-sm);cursor:pointer;font-size:13px;padding:8px 18px;transition:.15s cubic-bezier(.4,0,.2,1);transition:var(--transition)}.model-modal-close-btn:hover{background:#f8fafc;background:var(--bg);border-color:#818cf8;border-color:var(--primary-light);color:#6366f1;color:var(--primary)}@media (max-width:768px){.model-modal-grid{grid-template-columns:1fr}.model-active-name{max-width:140px}.model-modal-footer{align-items:stretch;flex-direction:column}.model-modal-active-bar{justify-content:center}}.bulk-actions-panel{background:#0000;border:none;display:flex;flex-direction:column;gap:10px;margin-bottom:15px;padding:12px 4px}.bulk-actions-row{align-items:center;display:flex;flex-wrap:wrap;gap:8px}.bulk-actions-row-full{width:100%}.bulk-btn{border:none;border-radius:999px;cursor:pointer;font-size:13px;font-weight:600;line-height:1.4;padding:6px 14px;transition:all .2s;white-space:nowrap}.bulk-btn-danger{background:#e74c3c;color:#fff}.bulk-btn-success{background:#27ae60;color:#fff}.bulk-btn-purple{background:#9b59b6;color:#fff}.bulk-btn-teal{background:#16a085;color:#fff}.bulk-btn-gray{background:#7878801f;border:1px solid #e2e8f0;border:1px solid var(--border)}.bulk-btn-gray,.bulk-select{color:#0f172a;color:var(--text)}.bulk-select{appearance:none;background:#fff;background:var(--bg-card);background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='%2364748b' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E");background-position:right 8px center;background-repeat:no-repeat;border:1px solid #e2e8f0;border:1px solid var(--border);border-radius:999px;cursor:pointer;font-size:13px;padding:6px 24px 6px 12px}:root{--apple-blue:#0071e3;--apple-blue-hover:#0077ed;--apple-text:#1d1d1f;--apple-gray:#6e6e73;--apple-bg:#f5f5f7;--apple-card:#fff;--apple-border:#d2d2d7;--apple-fill:#e8e8ed;--apple-shadow:0 4px 24px #0000000f;--apple-shadow-lg:0 12px 40px #0000001f;--apple-radius:14px;--apple-radius-lg:20px;--apple-font:-apple-system,BlinkMacSystemFont,"SF Pro Text","SF Pro Display","Helvetica Neue","Segoe UI",Roboto,Arial,sans-serif}html{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.App,body,button,input,select,textarea{font-family:-apple-system,BlinkMacSystemFont,SF Pro Text,SF Pro Display,Helvetica Neue,Segoe UI,Roboto,Arial,sans-serif!important;font-family:var(--apple-font)!important}body{background:#f5f5f7;background:var(--apple-bg);color:#1d1d1f;color:var(--apple-text);font-size:15px;letter-spacing:.011em;line-height:1.45}#root,.App,body,html{background:#f5f5f7!important;background:var(--apple-bg)!important;min-height:100vh}.modal-header,.model-modal-header,.receipt-header,.result-panel-header,h1,h2,h3,h4{color:#1d1d1f;color:var(--apple-text);font-family:-apple-system,BlinkMacSystemFont,SF Pro Text,SF Pro Display,Helvetica Neue,Segoe UI,Roboto,Arial,sans-serif!important;font-family:var(--apple-font)!important;font-weight:600;letter-spacing:-.022em}b,strong{font-weight:600}::selection{background:#0071e32e}a{color:#0071e3;color:var(--apple-blue);text-decoration:none;transition:opacity .18s ease}a:hover{text-decoration:underline}::-webkit-scrollbar{height:8px;width:8px}::-webkit-scrollbar-track{background:#0000}::-webkit-scrollbar-thumb{background:#00000038;border-radius:999px}::-webkit-scrollbar-thumb:hover{background:#00000061}*{scrollbar-color:#00000038 #0000;scrollbar-width:thin}.btn-folder,button{-webkit-tap-highlight-color:transparent;background:linear-gradient(180deg,#fff,#ececf0)!important;border:1px solid #c7c7cc!important;border-radius:999px!important;color:#1d1d1f!important;cursor:pointer;font-family:-apple-system,BlinkMacSystemFont,SF Pro Text,SF Pro Display,Helvetica Neue,Segoe UI,Roboto,Arial,sans-serif;font-family:var(--apple-font);letter-spacing:-.01em;transition:transform .16s ease,box-shadow .2s ease,filter .18s ease,background .18s ease,border-color .18s ease,color .18s ease}.btn-folder:hover,button:hover:not(:disabled){box-shadow:0 4px 14px #0000001a;filter:brightness(1.03);transform:translateY(-1px)}.btn-folder:active,button:active:not(:disabled){filter:brightness(.97);transform:scale(.97)}button:disabled{cursor:default;opacity:.45}button:focus-visible{box-shadow:0 0 0 4px #0071e359;outline:none}.btn-folder,label[class*=btn]{-webkit-tap-highlight-color:transparent}input:not([type=checkbox]):not([type=radio]):not([type=file]):not([type=range]),select,textarea{background:#fff!important;background:var(--apple-card)!important;border:1px solid #d2d2d7!important;border:1px solid var(--apple-border)!important;border-radius:10px!important;color:#1d1d1f!important;color:var(--apple-text)!important;font-family:-apple-system,BlinkMacSystemFont,SF Pro Text,SF Pro Display,Helvetica Neue,Segoe UI,Roboto,Arial,sans-serif;font-family:var(--apple-font);transition:border-color .18s ease,box-shadow .18s ease}input:not([type=checkbox]):not([type=radio]):not([type=file]):not([type=range]):focus,select:focus,textarea:focus{border-color:#0071e3;border-color:var(--apple-blue);box-shadow:0 0 0 4px #0071e326;outline:none}input[type=checkbox],input[type=radio]{accent-color:#0071e3;accent-color:var(--apple-blue)}.App{color:#1d1d1f;color:var(--apple-text)}.mini-header{-webkit-backdrop-filter:blur(14px) saturate(1.5);backdrop-filter:blur(14px) saturate(1.5);background:linear-gradient(180deg,#fff,#f0f0f3 55%,#e4e4e8)!important;border-bottom:1px solid #d2d2d7!important;box-shadow:0 4px 18px #00000014;color:#1d1d1f!important}.mini-header .user-name{color:#3a3a3c!important;font-weight:500}.mini-header .model-active-name{color:#1d1d1f!important}.mini-header .logout-btn,.mini-header .model-toggle-btn{background:linear-gradient(180deg,#fff,#ececf0)!important;border:1px solid #c7c7cc!important;border-radius:999px!important;color:#1d1d1f!important;font-weight:500}.mini-header .logout-btn{padding:7px 16px!important}.login-box{background:linear-gradient(180deg,#fff,#ececf0)!important;border:1px solid #d2d2d7!important;border-radius:20px!important;border-radius:var(--apple-radius-lg)!important;box-shadow:0 12px 40px #0000001f!important;box-shadow:var(--apple-shadow-lg)!important}.login-box,.login-box h1,.login-box h2,.login-box h3,.login-box label,.login-box p{color:#1d1d1f!important}.tabs-inline{background:#e8e8ed!important;background:var(--apple-fill)!important;gap:2px!important;padding:3px!important}.tabs-inline,.tabs-inline button{border:none!important;border-radius:999px!important}.tabs-inline button{background:#0000!important;box-shadow:none!important;color:#6e6e73!important;color:var(--apple-gray)!important;font-weight:500;padding:7px 18px!important}.tabs-inline button:hover:not(:disabled){color:#1d1d1f!important;color:var(--apple-text)!important;filter:none;transform:none}.tabs-inline button.active{background:#fff!important;background:var(--apple-card)!important;box-shadow:0 2px 8px #0000001f,0 0 0 .5px #0000000a!important;color:#1d1d1f!important;color:var(--apple-text)!important;font-weight:600}.mini-header .tabs-inline{background:#e8e8ed!important;background:var(--apple-fill)!important}.mini-header .tabs-inline button{background:#0000!important;border:none!important;color:#6e6e73!important;color:var(--apple-gray)!important}.mini-header .tabs-inline button.active,.mini-header .tabs-inline button:hover:not(:disabled){color:#1d1d1f!important;color:var(--apple-text)!important}.mini-header .tabs-inline button.active{background:#fff!important;background:var(--apple-card)!important}.info-block,.preview-container,.raw-text,.result-info,.result-items,.result-panel,.result-raw-text,.upload-section{background:#0000;border:none!important;border-radius:0!important;box-shadow:none!important}.receipt-card{background:#fff;background:var(--apple-card);border:1px solid #0000000f!important;border-radius:20px!important;border-radius:var(--apple-radius-lg)!important;box-shadow:0 4px 24px #0000000f;box-shadow:var(--apple-shadow);overflow:hidden;transition:transform .22s ease,box-shadow .22s ease}.receipt-card:hover{box-shadow:0 12px 40px #0000001f;box-shadow:var(--apple-shadow-lg);transform:translateY(-3px)}.receipt-thumb{border-radius:14px 14px 0 0;border-radius:var(--apple-radius) var(--apple-radius) 0 0}.receipt-header,.result-panel-header{border-bottom:1px solid #0000000f}.raw-text,.result-raw-text{font-size:13px;line-height:1.55}.recognize-bar,.toolbar-controls,.upload-toolbar{gap:6px}.btn-folder{border-radius:999px!important;box-shadow:0 2px 10px #0000001a;font-weight:600;padding:10px 20px!important;transition:transform .16s ease,box-shadow .2s ease,filter .18s ease}.btn-folder:hover{box-shadow:0 6px 18px #00000024;filter:brightness(1.06);transform:translateY(-1px)}.btn-folder:active{transform:scale(.97)}.danger,.model-refresh-btn,.recognize-main-btn{background:linear-gradient(180deg,#fff,#ececf0)!important;border:1px solid #c7c7cc!important;border-radius:999px!important;color:#1d1d1f!important;font-weight:600!important}.provider-badge,.type-badge{border-radius:999px!important;font-weight:600;letter-spacing:0;padding:3px 10px!important}.spinner{border-color:#0071e3 #0071e333 #0071e333!important;border-top-color:var(--apple-blue)!important}.folder-progress-bar{background:#e8e8ed;background:var(--apple-fill);border-radius:999px;overflow:hidden}.folder-progress-bar>div{border-radius:999px}.modal-overlay,.model-modal-overlay{animation:apple-fade .22s ease;-webkit-backdrop-filter:blur(10px) saturate(1.4);backdrop-filter:blur(10px) saturate(1.4);background:#0000005c!important}.modal-overlay>div,.model-modal-content{animation:apple-pop .26s cubic-bezier(.2,.9,.3,1.2);border:1px solid #fff6;border-radius:20px!important;border-radius:var(--apple-radius-lg)!important;box-shadow:0 12px 40px #0000001f!important;box-shadow:var(--apple-shadow-lg)!important}.modal-image{border-radius:14px;border-radius:var(--apple-radius)}.modal-close,.model-modal-close-btn{background:#e8e8ed!important;background:var(--apple-fill)!important;border:none!important;border-radius:999px!important;color:#1d1d1f!important;color:var(--apple-text)!important;font-weight:600}.model-modal-search input{border-radius:999px!important}@keyframes apple-fade{0%{opacity:0}to{opacity:1}}@keyframes apple-pop{0%{opacity:0;transform:scale(.96) translateY(8px)}to{opacity:1;transform:scale(1) translateY(0)}}.scan-overlay{-webkit-backdrop-filter:blur(18px) saturate(1.3);backdrop-filter:blur(18px) saturate(1.3)}.scan-overlay-footer,.scan-overlay-header{border-color:#ffffff24}.drop-text,.hint,.no-image,.no-image-thumb{color:#6e6e73;color:var(--apple-gray)}.danger,.model-refresh-btn,.model-toggle-btn{border-radius:999px!important}@media (prefers-reduced-motion:reduce){*,:after,:before{animation-duration:.01ms!important;transition-duration:.01ms!important}}