:root{font-family:Inter,PingFang SC,Microsoft YaHei,sans-serif;color:#24213f;background:#f8f7ff;font-synthesis:none}*{box-sizing:border-box}body{margin:0;min-width:1024px;min-height:100vh}button,input{font:inherit}button{cursor:pointer}button:disabled{cursor:not-allowed;opacity:.58}.login-shell,.app-shell{min-height:100vh;background:radial-gradient(circle at 78% 6%,#efe9ff 0,transparent 28%),#f8f7ff}.login-shell{display:grid;place-items:center;padding:48px}.login-card{width:min(100%,520px);padding:48px;border:1px solid #e5ddff;border-radius:28px;background:#fff;box-shadow:0 20px 60px #5d4ab11f}.brand-mark,.upload-icon{display:grid;place-items:center;color:#6b48ff;background:#eeeaff}.brand-mark{width:58px;height:58px;border-radius:18px}.brand-mark svg{width:30px;height:30px}.eyebrow{margin:24px 0 8px;color:#6b48ff;font-weight:750;letter-spacing:.08em}h1,h2,p{margin-top:0}h1{margin-bottom:10px;font-size:32px}h2{margin-bottom:8px;font-size:23px}.login-copy,.title-row p,.upload-zone p,.history-heading p{color:#66627c;line-height:1.7}form{display:grid;gap:18px;margin-top:32px}label{display:grid;gap:8px;color:#302c50;font-weight:700}input{width:100%;min-height:50px;padding:12px 14px;border:1px solid #cbc4ed;border-radius:12px;outline:none}input:focus{border-color:#6b48ff;box-shadow:0 0 0 4px #6b48ff24}.primary-button,.secondary-button{border:0;border-radius:13px;font-weight:760}.primary-button{min-height:52px;padding:0 28px;color:#fff;background:linear-gradient(100deg,#6b48ff,#9b67ff);box-shadow:0 10px 24px #6b48ff38}.primary-button:hover:not(:disabled){background:linear-gradient(100deg,#5b3be8,#8b55f0)}.secondary-button{min-height:40px;padding:0 18px;color:#5b3be8;background:#f0edff}.topbar{display:flex;align-items:center;justify-content:space-between;height:76px;padding:0 max(48px,calc((100% - 1180px)/2));border-bottom:1px solid #e7e2fa;background:#ffffffe0}.brand,.account,.account button,.history-heading{display:flex;align-items:center}.brand{gap:10px;color:#272148;font-size:19px;font-weight:800}.brand svg{color:#6b48ff}.account{gap:18px;color:#5e5875}.account button{gap:6px;border:0;color:#6250c8;background:transparent}.account button:hover{color:#4028ba}.workspace{width:min(1180px,calc(100% - 96px));margin:0 auto;padding:62px 0 80px}.title-row{display:flex;align-items:center;justify-content:space-between;margin-bottom:30px}.title-row .eyebrow,.title-row h1{margin:0 0 10px}.title-row p{margin:0}.title-icon{width:52px;height:52px;color:#d946ef}.upload-card,.history-card,.job-card{border:1px solid #e6e0fa;border-radius:22px;background:#fff;box-shadow:0 13px 35px #41317d0f}.upload-card{display:flex;align-items:stretch;gap:20px;padding:20px}.upload-zone{display:grid;flex:1;grid-template-columns:auto minmax(0,1fr);align-items:center;gap:20px;min-height:136px;padding:20px;border:2px dashed #b7a8fa;border-radius:16px;background:linear-gradient(110deg,#fbfaff,#fffaff);outline:none;transition:border-color .18s ease,background .18s ease,box-shadow .18s ease}.upload-zone:hover,.upload-zone:focus-visible{border-color:#6b48ff;box-shadow:0 0 0 4px #6b48ff1f}.upload-zone.is-dragover{border-color:#d946ef;background:#fff4fc;box-shadow:0 0 0 5px #d946ef21}.upload-icon{width:58px;height:58px;border-radius:18px}.upload-icon svg{width:30px;height:30px}.upload-zone h2{margin:0 0 6px}.upload-zone p{margin-bottom:12px}.file-picker{display:inline-block;padding:0;border:0;color:#5e3ff1;background:transparent;font-weight:800;text-decoration:underline;text-underline-offset:3px}.file-picker:focus-visible{outline:3px solid rgba(107,72,255,.45);outline-offset:4px;border-radius:4px}.process-button{align-self:center;min-width:144px}.visually-hidden{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;clip-path:inset(50%)}.message{margin:16px 0;padding:14px 16px;border-radius:12px}.error{color:#a33654;background:#fff0f3}.success{color:#276747;background:#ecfff4}.history-card{margin-top:28px;padding:26px}.job-card{display:grid;gap:18px;margin-top:28px;padding:26px}.job-summary{display:flex;flex-wrap:wrap;gap:10px}.job-summary span{padding:6px 10px;border-radius:999px;color:#4d4770;background:#f4f1ff;font-size:13px;font-weight:750}.issue-list{display:grid;gap:8px;max-height:250px;overflow:auto}.issue{display:flex;gap:9px;margin:0;padding:12px;border-radius:10px;line-height:1.5}.issue svg{flex:none;width:19px}.issue.error{color:#922c4b;background:#fff0f3}.issue.warning,.issue.review{color:#7d5b11;background:#fff7db}.download-button{display:inline-grid;width:max-content;place-items:center;text-decoration:none}.result-actions{display:flex;align-items:center;flex-wrap:wrap;gap:14px;color:#276747;font-weight:750}.result-actions a{color:#5e3ff1}.history-heading{gap:14px}.history-heading svg{flex:none;color:#6b48ff}.history-heading h2,.history-heading p{margin:0}.history-heading .secondary-button{margin-left:auto}.empty{margin:24px 0 0;color:#77718b}table{width:100%;margin-top:20px;border-collapse:collapse;text-align:left}th,td{padding:14px;border-top:1px solid #eeeafb;font-size:14px}th{color:#77718b;font-weight:700}td a{margin-right:16px;color:#5e3ff1;font-weight:750}.history-actions{white-space:nowrap}.history-actions button{margin-right:10px;padding:0;border:0;color:#5e3ff1;background:transparent;font-weight:750;text-decoration:underline}.history-actions .danger-button{color:#a33654}.status{display:inline-block;padding:4px 9px;border-radius:999px;color:#276747;background:#e8faef;font-size:12px;font-weight:750}@media(prefers-reduced-motion:reduce){.upload-zone{transition:none}}
