:root{--bg: #fafaf9;--surface: #ffffff;--text: #1c1917;--muted: #8a8580;--border: #e7e5e4;--border-strong: #d6d3d1;--primary: #2563eb;--primary-hover: #1d4ed8;--primary-soft: #eff4ff;--danger: #dc2626;--danger-soft: #fef2f2}*{box-sizing:border-box}html,body,#root{margin:0;height:100%}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,PingFang SC,Hiragino Sans GB,Microsoft YaHei,sans-serif;background:var(--bg);color:var(--text);-webkit-font-smoothing:antialiased}button{font:inherit;height:36px;padding:0 14px;border:1px solid transparent;background:var(--primary);color:#fff;cursor:pointer;transition:background-color .15s,border-color .15s,color .15s;white-space:nowrap}button:hover:not(:disabled){background:var(--primary-hover)}button:disabled{opacity:.45;cursor:not-allowed}button.ghost{background:transparent;color:var(--text);border-color:var(--border-strong)}button.ghost:hover:not(:disabled){background:var(--surface);border-color:var(--muted)}button.ghost.danger{color:var(--danger)}button.ghost.danger:hover:not(:disabled){background:var(--danger-soft);border-color:var(--danger)}button.ghost.accent{color:var(--primary)}button.ghost.accent:hover:not(:disabled){background:var(--primary-soft);border-color:var(--primary)}button.linklike{background:none;border:none;color:var(--primary);height:auto;padding:0;font-size:14px}button.linklike:hover:not(:disabled){background:none;text-decoration:underline}input{font:inherit;height:40px;padding:0 12px;border:1px solid var(--border-strong);width:100%;background:var(--surface);color:var(--text);transition:border-color .15s}input::placeholder{color:var(--muted)}input:focus-visible,button:focus-visible{outline:2px solid var(--primary);outline-offset:1px}input:focus-visible{border-color:var(--primary);outline-offset:0}.center-screen{height:100%;display:flex;align-items:center;justify-content:center;padding:16px}.center-content{flex:1;display:flex;align-items:center;justify-content:center;padding:16px}.loading-screen{position:fixed;top:0;right:0;bottom:0;left:0;z-index:50;display:grid;place-items:center;padding:16px;color:var(--muted);pointer-events:none}.muted{color:var(--muted)}.error{color:var(--danger);font-size:14px;margin:0}.page{height:100%;display:flex;flex-direction:column}.topbar{position:relative;display:flex;align-items:center;gap:12px;padding:12px 16px;background:var(--surface);border-bottom:1px solid var(--border)}.brand{display:inline-flex;align-items:center;gap:8px;font-weight:700;letter-spacing:.2px}.brand svg{flex-shrink:0}.logo{display:inline-flex;align-items:center}.logo-title{font-weight:700;letter-spacing:.2px;line-height:1}.logo-slogan{margin-left:12px;font-size:13px;font-weight:400;white-space:nowrap}.login-logo{display:flex;justify-content:center;margin:8px 0 2px}.spacer{flex:1}.filename{max-width:40vw;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:14px;color:var(--muted)}.user-menu{position:relative;display:inline-flex}.user-menu-trigger{display:inline-flex;align-items:center;justify-content:center}.user-menu-trigger svg{display:block}.user-menu-dropdown{position:absolute;top:calc(100% + 8px);right:0;display:none;flex-direction:column;gap:10px;min-width:180px;max-width:calc(100vw - 24px);padding:12px;background:var(--surface);border:1px solid var(--border-strong);z-index:20}.user-menu-dropdown:before{content:"";position:absolute;top:-9px;left:0;right:0;height:9px}.user-menu:hover .user-menu-dropdown,.user-menu:focus-within .user-menu-dropdown{display:flex}.user-menu-email{font-size:13px;word-break:break-all}.progress-track{position:absolute;left:0;right:0;bottom:-1px;height:2px;background:transparent}.progress-fill{height:100%;background:var(--primary);transition:width .3s ease}.card{background:var(--surface);border:1px solid var(--border);padding:36px 32px;width:100%;max-width:380px;display:flex;flex-direction:column;gap:16px}.login-card{text-align:center}.login-card .slogan{margin:0;font-size:15px;font-weight:600;letter-spacing:.2px}.lang-switch{position:fixed;top:16px;right:16px}.lang-segment{display:inline-flex;border:1px solid var(--border-strong);background:var(--surface);padding:2px;gap:2px}.lang-segment button{height:28px;padding:0 10px;font-size:13px;background:transparent;color:var(--muted);border:none}.lang-segment button:hover:not(:disabled){background:var(--bg);color:var(--text)}.lang-segment button.active{background:var(--text);color:var(--surface)}.lang-segment button.active:hover:not(:disabled){background:var(--text);color:var(--surface)}.login-card label{display:flex;flex-direction:column;gap:6px;font-size:13px;text-align:left;color:var(--muted)}.login-card button[type=submit]{width:100%;height:42px;margin-top:6px;font-size:15px}.upload-area{width:100%;max-width:460px;display:flex;flex-direction:column;gap:14px;text-align:center}.upload-area .hint{margin:0 0 6px;font-size:14px}.dropzone{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;padding:56px 24px;border:1.5px dashed var(--border-strong);background:var(--surface);cursor:pointer;transition:border-color .15s,background-color .15s;color:var(--muted);font-size:14px}.dropzone strong{color:var(--text);font-size:15px;font-weight:500}.dropzone:hover,.dropzone.dragover{border-color:var(--primary);background:var(--primary-soft)}.dropzone input{display:none}.reader-body{flex:1;overflow:auto;background:#fff;display:flex;flex-direction:column;align-items:center;padding:16px 12px 24px;touch-action:manipulation;-webkit-tap-highlight-color:transparent;-webkit-user-select:none;user-select:none}.reader-body .react-pdf__Page{overflow:hidden;margin:0 auto}.toolbar-group{display:flex;align-items:center;gap:8px}.zoom-label{font-size:13px;min-width:44px;text-align:center;font-variant-numeric:tabular-nums}button.icon{width:36px;padding:0}.fit-btn{display:inline-flex;align-items:center;justify-content:center;gap:6px}.fit-btn svg{display:block;flex-shrink:0}.page-pill{position:fixed;left:50%;bottom:14px;transform:translate(-50%);padding:5px 14px;background:#ffffffeb;border:1px solid var(--border);font-size:12px;color:var(--muted);font-variant-numeric:tabular-nums;pointer-events:none}.finish-banner{position:fixed;left:50%;bottom:20px;transform:translate(-50%);display:flex;align-items:center;gap:12px;background:var(--surface);border:1px solid var(--border-strong);padding:12px 16px;max-width:calc(100vw - 24px);flex-wrap:wrap;font-size:14px}@media(max-width:640px){.filename,.logo-slogan{display:none}.reader-body{padding:12px 22px 24px}.topbar{padding:10px 12px;gap:6px}.lang-segment button{padding:0 6px}.reader .topbar .brand{display:none}.toolbar-group{gap:6px}.zoom-label,.fit-btn-text{display:none}.fit-btn{width:32px;padding:0}button{padding:0 10px}button.icon{width:32px}.finish-banner{left:12px;right:12px;bottom:12px;transform:none;max-width:none;flex-direction:column;align-items:stretch;gap:10px;padding:16px 14px 14px;text-align:center}.finish-banner button{height:40px}}
