*,*:before,*:after{box-sizing:border-box}html{font-size:16px;-webkit-text-size-adjust:100%}body{margin:0;font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;font-size:1rem;line-height:1.5;color:#1e293b;background:#f8fafc;-webkit-font-smoothing:antialiased}#root{width:100%;min-height:100vh}h1,h2,h3,h4,h5,h6{margin:0;font-weight:600;line-height:1.3}p{margin:0}a{color:#6366f1;text-decoration:none}a:hover{text-decoration:underline}button{font-family:inherit;font-size:inherit;cursor:pointer}input,textarea,select{font-family:inherit;font-size:inherit}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:#cbd5e1;border-radius:3px}::-webkit-scrollbar-thumb:hover{background:#94a3b8}::selection{background:#6366f1;color:#fff}:focus-visible{outline:2px solid #6366f1;outline-offset:2px}.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}.home-page{flex:1;display:flex;flex-direction:column;padding:48px 32px;max-width:1200px;margin:0 auto;width:100%}.home-hero{text-align:center;margin-bottom:48px}.home-hero h2{font-size:32px;font-weight:700;color:#0f172a;margin-bottom:12px}.home-hero p{font-size:16px;color:#64748b;max-width:600px;margin:0 auto;line-height:1.6}.services-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:24px;margin-bottom:48px}.service-card{background:#fff;border:1px solid #e2e8f0;border-radius:16px;padding:32px;cursor:pointer;transition:all .2s ease;display:flex;flex-direction:column;gap:16px}.service-card:hover{border-color:#6366f1;box-shadow:0 4px 24px #6366f11f;transform:translateY(-2px)}.service-icon{width:52px;height:52px;display:flex;align-items:center;justify-content:center;border-radius:12px;color:#fff}.service-icon.convert{background:linear-gradient(135deg,#3b82f6,#2563eb)}.service-icon.classify{background:linear-gradient(135deg,#8b5cf6,#7c3aed)}.service-icon.extract{background:linear-gradient(135deg,#10b981,#059669)}.service-card h3{font-size:18px;font-weight:600;color:#0f172a}.service-card p{font-size:14px;color:#64748b;line-height:1.6}.service-tag{display:inline-block;padding:4px 10px;background:#f1f5f9;color:#475569;border-radius:6px;font-size:12px;font-weight:500;align-self:flex-start}.service-tag.future{background:#fef3c7;color:#92400e}.pipeline-section{margin-bottom:48px}.pipeline-section h3{font-size:16px;font-weight:600;color:#0f172a;margin-bottom:20px}.pipeline-flow{display:flex;align-items:center;gap:0;background:#fff;border:1px solid #e2e8f0;border-radius:12px;padding:24px;overflow-x:auto}.pipeline-step{display:flex;flex-direction:column;align-items:center;gap:8px;min-width:120px;text-align:center}.pipeline-step-icon{width:44px;height:44px;display:flex;align-items:center;justify-content:center;border-radius:10px;background:#f1f5f9;color:#475569}.pipeline-step-icon.active{background:#6366f1;color:#fff}.pipeline-step-label{font-size:13px;font-weight:500;color:#334155}.pipeline-step-sub{font-size:11px;color:#94a3b8}.pipeline-arrow{display:flex;align-items:center;padding:0 8px;color:#cbd5e1;flex-shrink:0}.recent-section h3{font-size:16px;font-weight:600;color:#0f172a;margin-bottom:16px;display:flex;align-items:center;justify-content:space-between}.recent-section h3 button{font-size:13px;font-weight:500;color:#6366f1;background:none;border:none;padding:0}.recent-section h3 button:hover{text-decoration:underline}.recent-list{display:flex;flex-direction:column;gap:8px}.recent-item{display:flex;align-items:center;gap:16px;padding:14px 20px;background:#fff;border:1px solid #e2e8f0;border-radius:10px;font-size:14px}.recent-item-service{padding:3px 10px;border-radius:6px;font-size:12px;font-weight:600;text-transform:uppercase;letter-spacing:.5px}.recent-item-service.convert{background:#dbeafe;color:#1d4ed8}.recent-item-service.classify{background:#ede9fe;color:#6d28d9}.recent-item-service.extract{background:#d1fae5;color:#047857}.recent-item-id{color:#64748b;font-family:monospace;font-size:13px}.recent-item-time{color:#94a3b8;font-size:13px;margin-left:auto}.empty-state{text-align:center;padding:40px;color:#94a3b8;font-size:14px}@media(max-width:768px){.home-page{padding:24px 16px}.services-grid{grid-template-columns:1fr}.home-hero h2{font-size:24px}}.service-page{flex:1;display:flex;flex-direction:column;max-width:900px;margin:0 auto;width:100%;padding:32px}.service-page-header{display:flex;align-items:center;gap:16px;margin-bottom:32px}.back-button{display:flex;align-items:center;justify-content:center;width:36px;height:36px;background:#f1f5f9;border:1px solid #e2e8f0;border-radius:8px;color:#475569;transition:all .15s ease}.back-button:hover{background:#e2e8f0;color:#0f172a}.service-page-title{font-size:22px;font-weight:700;color:#0f172a}.service-page-desc{font-size:14px;color:#64748b}.service-form{display:flex;flex-direction:column;gap:24px}.form-group{display:flex;flex-direction:column;gap:6px}.form-group label{font-size:13px;font-weight:600;color:#334155;text-transform:uppercase;letter-spacing:.5px}.form-group input,.form-group select,.form-group textarea{padding:10px 14px;background:#fff;border:1px solid #e2e8f0;border-radius:8px;font-size:14px;color:#0f172a;transition:border-color .15s ease}.form-group input:focus,.form-group select:focus,.form-group textarea:focus{border-color:#6366f1;outline:none;box-shadow:0 0 0 3px #6366f11a}.form-group textarea{min-height:120px;resize:vertical;font-family:SF Mono,Fira Code,monospace;font-size:13px}.form-row{display:grid;grid-template-columns:1fr 1fr;gap:16px}.file-upload-area{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;padding:40px;background:#fafbfc;border:2px dashed #d1d5db;border-radius:12px;cursor:pointer;transition:all .2s ease;text-align:center}.file-upload-area:hover{border-color:#6366f1;background:#f5f3ff}.file-upload-area.has-file{border-color:#22c55e;background:#f0fdf4;border-style:solid}.file-upload-icon{color:#94a3b8}.file-upload-area.has-file .file-upload-icon{color:#22c55e}.file-upload-text{font-size:14px;color:#64748b}.file-upload-text strong{color:#6366f1}.file-name{font-size:14px;font-weight:500;color:#059669}.labels-editor{display:flex;flex-direction:column;gap:12px}.label-row{display:grid;grid-template-columns:200px 1fr 36px;gap:8px;align-items:start}.label-row input{padding:8px 12px;background:#fff;border:1px solid #e2e8f0;border-radius:8px;font-size:13px}.label-row input:focus{border-color:#6366f1;outline:none}.remove-label-btn{width:36px;height:36px;display:flex;align-items:center;justify-content:center;background:#fef2f2;border:1px solid #fecaca;border-radius:8px;color:#dc2626;transition:all .15s ease}.remove-label-btn:hover{background:#fee2e2}.add-label-btn{display:flex;align-items:center;gap:6px;padding:8px 14px;background:#f8fafc;border:1px dashed #cbd5e1;border-radius:8px;color:#6366f1;font-size:13px;font-weight:500;align-self:flex-start;transition:all .15s ease}.add-label-btn:hover{background:#f5f3ff;border-color:#6366f1}.submit-button{display:flex;align-items:center;justify-content:center;gap:8px;padding:14px 28px;background:linear-gradient(135deg,#6366f1,#8b5cf6);border:none;border-radius:10px;color:#fff;font-size:15px;font-weight:600;transition:all .2s ease;align-self:flex-start}.submit-button:hover:not(:disabled){transform:translateY(-1px);box-shadow:0 4px 16px #6366f14d}.submit-button:disabled{opacity:.6;cursor:not-allowed}.spinner{width:18px;height:18px;border:2px solid rgba(255,255,255,.3);border-top-color:#fff;border-radius:50%;animation:spin .6s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}@media(max-width:768px){.service-page{padding:16px}.form-row,.label-row{grid-template-columns:1fr}}.results-page{flex:1;display:flex;flex-direction:column;max-width:1000px;margin:0 auto;width:100%;padding:32px}.results-page-header{display:flex;align-items:center;gap:16px;margin-bottom:32px}.results-page-title{font-size:22px;font-weight:700;color:#0f172a}.results-count{font-size:13px;color:#94a3b8;font-weight:400}.results-list{display:flex;flex-direction:column;gap:16px}.result-card{background:#fff;border:1px solid #e2e8f0;border-radius:12px;overflow:hidden;transition:border-color .15s ease}.result-card:hover{border-color:#cbd5e1}.result-card-header{display:flex;align-items:center;justify-content:space-between;padding:16px 20px;cursor:pointer;-webkit-user-select:none;user-select:none}.result-card-left{display:flex;align-items:center;gap:12px}.result-service-badge{padding:3px 10px;border-radius:6px;font-size:12px;font-weight:600;text-transform:uppercase;letter-spacing:.5px}.result-service-badge.convert{background:#dbeafe;color:#1d4ed8}.result-service-badge.classify{background:#ede9fe;color:#6d28d9}.result-service-badge.extract{background:#d1fae5;color:#047857}.result-request-id{font-family:SF Mono,Fira Code,monospace;font-size:13px;color:#64748b}.result-time{font-size:13px;color:#94a3b8}.result-toggle{display:flex;align-items:center;justify-content:center;width:28px;height:28px;background:#f1f5f9;border-radius:6px;color:#64748b;transition:all .15s ease}.result-toggle.open{transform:rotate(180deg)}.result-card-body{padding:0 20px 20px;border-top:1px solid #f1f5f9}.result-json{background:#0f172a;color:#e2e8f0;padding:16px;border-radius:8px;font-family:SF Mono,Fira Code,monospace;font-size:12px;line-height:1.6;overflow-x:auto;white-space:pre-wrap;word-break:break-word;margin-top:12px;max-height:400px;overflow-y:auto}.results-empty{text-align:center;padding:80px 20px;color:#94a3b8}.results-empty p{font-size:15px;margin-top:12px}@media(max-width:768px){.results-page{padding:16px}.result-card-header{flex-wrap:wrap;gap:8px}}.app{display:flex;flex-direction:column;min-height:100vh}.app-header{display:flex;align-items:center;justify-content:space-between;padding:16px 32px;background:#fff;border-bottom:1px solid #e2e8f0;position:sticky;top:0;z-index:50}.header-left{display:flex;align-items:center;gap:12px}.header-logo{width:40px;height:40px;display:flex;align-items:center;justify-content:center;background:linear-gradient(135deg,#6366f1,#8b5cf6);border-radius:10px;color:#fff}.header-title{font-size:20px;font-weight:700;color:#0f172a}.header-subtitle{font-size:13px;color:#64748b;font-weight:400}.header-right{display:flex;align-items:center;gap:12px}.header-badge{padding:4px 12px;background:#fef3c7;color:#92400e;border-radius:20px;font-size:12px;font-weight:600}.header-status{display:flex;align-items:center;gap:6px;font-size:13px;color:#64748b}.status-dot{width:8px;height:8px;border-radius:50%;background:#22c55e}.status-dot.offline{background:#ef4444}.app-main{flex:1;display:flex;flex-direction:column}
