:root{--bg:#f1f5f9;--surface:#fff;--primary:#4f46e5;--primary-hover:#4338ca;--primary-light:#eef2ff;--success:#10b981;--error:#ef4444;--text:#0f172a;--text-muted:#64748b;--border:#e2e8f0;--radius:14px;--radius-sm:8px;--shadow:0 4px 24px #00000014;--transition:.18s ease}*,:before,:after{box-sizing:border-box;margin:0;padding:0}html,body,#root{height:100%}body{background:var(--bg);color:var(--text);-webkit-font-smoothing:antialiased;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;line-height:1.6}a{color:inherit;text-decoration:none}button{cursor:pointer;font:inherit;background:0 0;border:none}.app{flex-direction:column;align-items:center;min-height:100%;display:flex}.app-header{flex-direction:column;align-items:center;gap:6px;width:100%;padding:28px 24px 0;display:flex}.app-logo{color:var(--text);align-items:center;gap:10px;font-size:1.35rem;font-weight:700;display:flex}.app-tagline{color:var(--text-muted);font-size:.85rem}.app-main{flex:1;width:100%;max-width:540px;padding:28px 20px}.app-footer{color:var(--text-muted);text-align:center;padding:12px 24px 28px;font-size:.78rem}.card{background:var(--surface);border-radius:var(--radius);box-shadow:var(--shadow);padding:32px 28px}.btn{border-radius:var(--radius-sm);transition:background var(--transition), color var(--transition), box-shadow var(--transition), transform var(--transition);justify-content:center;align-items:center;gap:8px;padding:11px 20px;font-size:.95rem;font-weight:600;display:inline-flex}.btn--primary{background:var(--primary);color:#fff}.btn--primary:hover:not(:disabled){background:var(--primary-hover);transform:translateY(-1px);box-shadow:0 2px 12px #4f46e559}.btn--primary:disabled{opacity:.5;cursor:not-allowed}.btn--ghost{color:var(--text-muted);border:1.5px solid var(--border);background:0 0}.btn--ghost:hover{background:var(--bg);color:var(--text)}.btn--full{width:100%}.btn-ghost{color:var(--text-muted);font-size:.82rem}.btn-ghost:hover{color:var(--error)}.btn-sm{padding:4px 10px;font-size:.82rem}.section-title{color:var(--text);margin-bottom:6px;font-size:1.2rem;font-weight:700}.section-subtitle{color:var(--text-muted);margin-bottom:22px;font-size:.87rem;line-height:1.5}.upload-zone{flex-direction:column;gap:14px;display:flex}.dropzone{border:2px dashed var(--border);border-radius:var(--radius-sm);text-align:center;cursor:pointer;transition:border-color var(--transition), background var(--transition);outline:none;padding:32px 20px}.dropzone:hover,.dropzone--active{border-color:var(--primary);background:var(--primary-light)}.dropzone--disabled{pointer-events:none;opacity:.6}.dropzone-placeholder{flex-direction:column;align-items:center;gap:10px;display:flex}.dropzone-text{color:var(--text-muted);font-size:.92rem}.dropzone-hint{color:var(--text-muted);opacity:.7;font-size:.78rem}.file-preview{text-align:left;align-items:center;gap:12px;display:flex}.file-info{flex-direction:column;flex:1;gap:2px;min-width:0;display:flex}.file-name{white-space:nowrap;text-overflow:ellipsis;font-size:.9rem;font-weight:600;overflow:hidden}.file-size{color:var(--text-muted);font-size:.78rem}.alert{border-radius:var(--radius-sm);align-items:center;gap:8px;padding:10px 14px;font-size:.85rem;display:flex}.alert--error{color:var(--error);background:#fef2f2;border:1px solid #fecaca}.icon--upload{color:var(--primary)}.icon--file{color:var(--primary);flex-shrink:0}.icon--success{color:var(--success)}.icon--error{color:var(--error)}.icon--primary{color:var(--primary)}.icon--muted{color:var(--text-muted)}@keyframes spin{to{transform:rotate(360deg)}}.spin{animation:.8s linear infinite spin}.progress-wrap{flex-direction:column;gap:8px;display:flex}.progress-meta{justify-content:space-between;align-items:baseline;font-size:.88rem;display:flex}.progress-pages{color:var(--text)}.progress-pct{color:var(--primary);font-weight:700}.progress-track{background:var(--border);border-radius:99px;height:10px;overflow:hidden}.progress-fill{background:var(--primary);border-radius:99px;min-width:4px;height:100%;transition:width .6s}@keyframes shimmer{0%{background-position:-200% 0}to{background-position:200% 0}}.progress-fill--pulsing{background:linear-gradient(90deg, var(--primary) 0%, #818cf8 45%, var(--primary) 90%);background-size:200% 100%;animation:2.2s linear infinite shimmer}.progress-stage{margin-top:2px}.badge{background:var(--primary-light);color:var(--primary);letter-spacing:.03em;border-radius:99px;padding:3px 10px;font-size:.76rem;font-weight:600;display:inline-block}.status-spinner,.status-queued,.status-error{text-align:center;flex-direction:column;align-items:center;gap:14px;padding:20px 0;display:flex}.status-translating{flex-direction:column;gap:18px;display:flex}.status-label{font-size:1rem;font-weight:600}.status-hint{color:var(--text-muted);text-align:center;font-size:.83rem;line-height:1.5}.status-hint--error{color:var(--error)}.download-card{text-align:center;flex-direction:column;align-items:center;gap:14px;display:flex}.download-icon{margin-bottom:4px}.download-title{font-size:1.25rem;font-weight:700}.download-subtitle{color:var(--text-muted);max-width:340px;margin-bottom:4px;font-size:.87rem;line-height:1.55}@media (width<=480px){.card{padding:22px 16px}.app-main{padding:20px 12px}.dropzone{padding:24px 12px}}.login-page{background:var(--bg);justify-content:center;align-items:center;min-height:100vh;padding:24px 16px;display:flex}.login-card{background:var(--surface);border-radius:var(--radius);width:100%;max-width:400px;box-shadow:var(--shadow);flex-direction:column;gap:20px;padding:36px 32px 28px;display:flex}.login-logo{justify-content:center;align-items:center;gap:10px;display:flex}.login-logo-text{color:var(--text);font-size:1.25rem;font-weight:700}.tab-bar{border:1.5px solid var(--border);border-radius:var(--radius-sm);display:flex;overflow:hidden}.tab{color:var(--text-muted);transition:background var(--transition), color var(--transition);cursor:pointer;background:0 0;border:none;flex:1;padding:9px 0;font-size:.9rem;font-weight:600}.tab--active{background:var(--primary);color:#fff}.login-form{flex-direction:column;gap:14px;display:flex}.login-footer{color:var(--text-muted);text-align:center;font-size:.78rem}.field{flex-direction:column;gap:5px;display:flex}.field-label{color:var(--text);font-size:.85rem;font-weight:600}.field-optional{color:var(--text-muted);font-weight:400}.field-hint{color:var(--text-muted);font-size:.76rem}.field-input{border:1.5px solid var(--border);border-radius:var(--radius-sm);color:var(--text);background:var(--surface);transition:border-color var(--transition);outline:none;padding:9px 12px;font-size:.92rem}.field-input:focus{border-color:var(--primary)}.field-input:disabled{opacity:.6;cursor:not-allowed}.navbar{background:var(--surface);border-bottom:1px solid var(--border);z-index:10;justify-content:space-between;align-items:center;padding:12px 28px;display:flex;position:sticky;top:0}.navbar-brand{align-items:center;gap:10px;display:flex}.navbar-title{color:var(--text);font-size:1.1rem;font-weight:700}.navbar-actions{align-items:center;gap:12px;display:flex}.navbar-user{color:var(--text-muted);font-size:.88rem;font-weight:600}.dashboard{background:var(--bg);flex-direction:column;min-height:100vh;display:flex}.dashboard-main{flex:1;width:100%;max-width:1100px;margin:0 auto;padding:28px 24px}.dashboard-toolbar{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;margin-bottom:24px;display:flex}.dashboard-title{color:var(--text);font-size:1.4rem;font-weight:700}.filter-tabs{flex-wrap:wrap;gap:6px;margin-bottom:18px;display:flex}.filter-tab{color:var(--text-muted);border:1.5px solid var(--border);background:var(--surface);transition:all var(--transition);cursor:pointer;border-radius:99px;padding:6px 16px;font-size:.84rem;font-weight:600}.filter-tab:hover{border-color:var(--primary);color:var(--primary)}.filter-tab--active{background:var(--primary);border-color:var(--primary);color:#fff}.files-grid{grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:16px;display:grid}.files-loading{color:var(--text-muted);justify-content:center;align-items:center;gap:10px;padding:60px 0;font-size:.92rem;display:flex}.files-empty{text-align:center;color:var(--text-muted);padding:60px 0;font-size:.92rem}.file-card{background:var(--surface);border-radius:var(--radius);border:1.5px solid var(--border);transition:box-shadow var(--transition), transform var(--transition);flex-direction:column;gap:10px;padding:18px 20px;display:flex;box-shadow:0 2px 12px #0000000f}.file-card:hover{transform:translateY(-1px);box-shadow:0 4px 20px #0000001a}.file-card--done{border-color:#a7f3d0}.file-card--failed{border-color:#fca5a5}.file-card--processing{border-color:#c7d2fe}.file-card__header{justify-content:space-between;align-items:flex-start;gap:8px;display:flex}.file-card__name{color:var(--text);text-overflow:ellipsis;white-space:nowrap;flex:1;font-size:.9rem;font-weight:700;overflow:hidden}.file-card__date{color:var(--text-muted);white-space:nowrap;flex-shrink:0;font-size:.75rem}.file-card__desc{color:var(--text-muted);font-size:.82rem;line-height:1.4}.file-card__body{margin-top:4px}.file-card__actions{flex-wrap:wrap;align-items:center;gap:8px;margin-top:8px;display:flex}.btn--cancel{color:var(--error);background:0 0;border:1.5px solid #fecaca}.btn--cancel:hover:not(:disabled){background:#fef2f2}.badge--error{color:var(--error);background:#fef2f2;border:1px solid #fecaca}.modal-overlay{z-index:100;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);background:#00000073;justify-content:center;align-items:center;padding:24px 16px;display:flex;position:fixed;inset:0}.modal{background:var(--surface);border-radius:var(--radius);width:100%;max-width:480px;overflow:hidden;box-shadow:0 16px 48px #0003}.modal-header{border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;padding:18px 24px;display:flex}.modal-title{color:var(--text);font-size:1.1rem;font-weight:700}.modal-close{color:var(--text-muted);transition:color var(--transition);cursor:pointer;padding:2px}.modal-close:hover{color:var(--text)}.modal-body{flex-direction:column;gap:16px;padding:20px 24px 24px;display:flex}@media (width<=640px){.dashboard-main{padding:20px 16px}.navbar{padding:10px 16px}.files-grid{grid-template-columns:1fr}.login-card{padding:28px 20px 22px}.modal{max-width:100%}}
