*{margin:0;padding:0;box-sizing:border-box}:root{--bg: #f4f6f9;--surface: #ffffff;--border: #dde3ea;--text: #1a2330;--text-muted: #5b6b7d;--accent: #1d4ed8;--accent-hover: #1a43b8;--brand-1: #1d4ed8;--brand-2: #06b6d4;--error: #c0392b}body{font-family:Segoe UI,system-ui,-apple-system,sans-serif;background:var(--bg);color:var(--text);line-height:1.5}.app{max-width:900px;margin:0 auto;padding:20px 20px 40px}.topbar{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;background:var(--surface);border:1px solid var(--border);border-radius:12px;padding:10px 16px;margin-bottom:28px}.login-brand{display:flex;align-items:center;gap:10px}.brand-mark{display:inline-flex;align-items:center;justify-content:center;width:38px;height:38px;border-radius:10px;background:linear-gradient(135deg,var(--brand-1),var(--brand-2));color:#fff;font-size:1.25rem;font-weight:700;flex-shrink:0}.brand-name{font-size:1.05rem;font-weight:700;line-height:1.2;color:var(--brand-1)}.brand-name span{color:var(--text)}.brand-tag{font-size:.72rem;color:var(--text-muted)}.topbar-user{display:flex;align-items:center;gap:12px}.topbar-name{font-size:.88rem;color:var(--text-muted)}.footer{margin-top:48px;text-align:center;font-size:.8rem;color:var(--text-muted)}.login-page{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:20px;background:radial-gradient(1000px 500px at 50% -10%,#dbeafe 0%,transparent 60%),var(--bg)}.login-card{width:100%;max-width:380px;background:var(--surface);border:1px solid var(--border);border-radius:14px;padding:28px;box-shadow:0 10px 30px #1a233014}.login-card .login-brand{margin-bottom:24px}.login-card h2{font-size:1.2rem;margin-bottom:2px}.login-hint{font-size:.85rem;color:var(--text-muted);margin-bottom:18px}.field{display:block;margin-bottom:14px}.field span{display:block;font-size:.82rem;font-weight:600;margin-bottom:5px}.field input{width:100%;border:1px solid var(--border);border-radius:8px;padding:9px 12px;font-size:.95rem;font-family:inherit;color:var(--text);background:#fbfcfe;outline:none;transition:border-color .15s,box-shadow .15s}.field input:focus{border-color:var(--accent);box-shadow:0 0 0 3px #1d4ed826}.login-error{background:#fdecea;border:1px solid #f5c6c0;color:var(--error);border-radius:8px;padding:8px 12px;font-size:.85rem;margin-bottom:14px}.btn-block{width:100%;padding:10px 14px;font-size:.95rem}.login-footer{margin-top:18px;text-align:center;font-size:.75rem;color:var(--text-muted)}.header{text-align:center;margin-bottom:28px}.header h1{font-size:1.75rem;margin-bottom:6px}.subtitle{color:var(--text-muted);font-size:.95rem;max-width:560px;margin:0 auto}.dropzone{background:var(--surface);border:2px dashed var(--border);border-radius:12px;padding:40px 20px;text-align:center;cursor:pointer;transition:border-color .15s,background .15s}.dropzone:hover,.dropzone.dragging{border-color:var(--accent);background:#eef4ff}.dropzone-icon{font-size:2rem;margin-bottom:8px}.dropzone-text{font-size:1.05rem}.dropzone-hint{color:var(--text-muted);font-size:.85rem;margin-top:4px}.toolbar{display:flex;gap:10px;justify-content:flex-end;margin-top:20px}.file-list{margin-top:20px;display:flex;flex-direction:column;gap:16px}.card{background:var(--surface);border:1px solid var(--border);border-radius:12px;overflow:hidden}.card-header{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:14px 16px;flex-wrap:wrap}.card-title{display:flex;align-items:center;gap:10px;min-width:0}.file-icon{font-size:1.4rem}.file-name{font-weight:600;word-break:break-all}.file-meta{font-size:.82rem;color:var(--text-muted)}.error-text{color:var(--error)}.card-actions{display:flex;gap:8px;align-items:center}.btn{border:1px solid var(--border);background:var(--surface);color:var(--text);padding:7px 14px;border-radius:8px;font-size:.88rem;cursor:pointer;transition:background .15s,border-color .15s}.btn:hover{background:#f0f3f7}.btn-primary{background:var(--accent);border-color:var(--accent);color:#fff}.btn-primary:hover{background:var(--accent-hover);border-color:var(--accent-hover)}.btn-ghost{border-color:transparent;color:var(--text-muted)}.view-toggle{display:flex;margin-right:4px}.btn-toggle{color:var(--text-muted);border-radius:0}.view-toggle .btn-toggle:first-child{border-radius:8px 0 0 8px}.view-toggle .btn-toggle:last-child{border-radius:0 8px 8px 0;border-left:none}.btn-toggle.active{background:#eef2f8;color:var(--text);font-weight:600}.preview{display:block;width:100%;height:320px;border:none;border-top:1px solid var(--border);padding:14px 16px;font-family:Consolas,Courier New,monospace;font-size:.83rem;line-height:1.55;color:var(--text);resize:vertical;outline:none;background:#fbfcfe}.progress-bar{height:3px;background:linear-gradient(90deg,var(--accent) 30%,#b3ccf5 60%);background-size:200% 100%;animation:slide 1.2s linear infinite}@keyframes slide{0%{background-position:200% 0}to{background-position:-200% 0}}
