:root{--bg: #f5f6f8;--card: #ffffff;--text: #1f2329;--muted: #8a919c;--border: #e3e6ea;--primary: #2563eb;--primary-hover: #1d4ed8;--error: #d93025;--radius: 10px}*{box-sizing:border-box}html,body{margin:0;padding:0}body{background:var(--bg);color:var(--text);font-family:-apple-system,BlinkMacSystemFont,PingFang SC,Microsoft YaHei,Segoe UI,sans-serif;font-size:15px;line-height:1.6}.app-root{min-height:100vh}.loading{text-align:center;padding:48px 16px;color:var(--muted)}.page{max-width:760px;margin:0 auto;padding:16px}.topbar{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:8px;padding:8px 0 16px}.topbar-title{font-size:20px;margin:0}.topbar-right{display:flex;align-items:center;gap:12px}.username{color:var(--muted)}.card{background:var(--card);border:1px solid var(--border);border-radius:var(--radius);padding:16px;margin-bottom:16px}.section-title{font-size:16px;margin:0 0 12px}.field{margin-bottom:16px}.field-label{display:block;font-weight:600;margin-bottom:6px}.input{width:100%;padding:9px 12px;border:1px solid var(--border);border-radius:8px;font-size:15px;background:#fff;color:var(--text)}.input:focus{outline:none;border-color:var(--primary)}.textarea{resize:vertical;min-height:96px}.muted{color:var(--muted);font-weight:400}.hint{color:var(--muted);font-size:13px;margin:8px 0 0}.hint-error{color:var(--error);font-size:13px;margin:8px 0 0}.btn{display:inline-block;padding:9px 18px;border:1px solid var(--border);border-radius:8px;background:#fff;color:var(--text);font-size:15px;cursor:pointer;text-decoration:none;text-align:center}.btn:hover{border-color:var(--primary);color:var(--primary)}.btn-primary{background:var(--primary);border-color:var(--primary);color:#fff}.btn-primary:hover{background:var(--primary-hover);border-color:var(--primary-hover);color:#fff}.btn:disabled{opacity:.5;cursor:not-allowed}.btn-ghost{border-color:transparent;background:transparent;color:var(--muted)}.btn-ghost:hover{color:var(--primary)}.btn-block{width:100%}.dropzone{border:1px dashed var(--border);border-radius:8px;padding:20px 12px;text-align:center;cursor:pointer;background:#fafbfc}.dropzone:hover{border-color:var(--primary)}.dropzone-disabled{opacity:.5;cursor:not-allowed}.dropzone-text{margin:0 0 4px}.thumbs{display:grid;grid-template-columns:repeat(auto-fill,minmax(96px,1fr));gap:8px;margin-top:12px}.thumb{position:relative;border:1px solid var(--border);border-radius:8px;overflow:hidden;aspect-ratio:1 / 1}.thumb img{width:100%;height:100%;object-fit:cover;display:block}.thumb-remove{position:absolute;top:4px;right:4px;width:22px;height:22px;border:none;border-radius:50%;background:#0000008c;color:#fff;font-size:14px;line-height:22px;text-align:center;cursor:pointer;padding:0}.check-row{display:flex;align-items:center;gap:8px;cursor:pointer;font-weight:600}.check-row input{width:16px;height:16px}.factor-row{display:flex;align-items:center;flex-wrap:wrap;gap:8px;margin-top:10px}.factor-btn{padding:6px 14px;border:1px solid var(--border);border-radius:8px;background:#fff;cursor:pointer;font-size:14px}.factor-btn-active{border-color:var(--primary);background:var(--primary);color:#fff}.status-text{font-size:15px;font-weight:600;margin:0 0 8px}.status-error{color:var(--error)}.results{display:flex;flex-wrap:wrap;gap:16px;margin-top:12px}.result-item{flex:1 1 280px;min-width:0;display:flex;flex-direction:column;gap:8px}.result-label{font-weight:600;margin:0}.result-img{width:100%;max-height:480px;object-fit:contain;border:1px solid var(--border);border-radius:8px;background:#fafbfc;display:block}.history-strip{display:flex;gap:10px;overflow-x:auto;overflow-y:hidden;-webkit-overflow-scrolling:touch;overscroll-behavior-x:contain;padding-bottom:8px}.history-item{flex:0 0 auto;width:96px;padding:0;border:1px solid var(--border);border-radius:8px;background:#fff;cursor:pointer;overflow:hidden;display:flex;flex-direction:column;gap:4px}.history-item:hover{border-color:var(--primary)}.history-thumb{width:96px;height:96px;object-fit:cover;display:block;background:#fafbfc}.history-date{font-size:12px;color:var(--muted);padding:0 4px 6px;text-align:center;line-height:1.3}.viewer-mask{position:fixed;top:0;right:0;bottom:0;left:0;background:#0009;z-index:50;display:flex;align-items:center;justify-content:center;padding:16px;overflow:auto}.viewer{background:var(--card);border-radius:var(--radius);width:100%;max-width:760px;max-height:100%;display:flex;flex-direction:column;overflow:hidden}.viewer-head{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;padding:12px 16px;border-bottom:1px solid var(--border)}.viewer-head-text{min-width:0;flex:1 1 auto}.viewer-time{margin:0;color:var(--muted);font-size:13px}.viewer-prompt{margin:4px 0 0;font-size:14px;word-break:break-word}.viewer-close{flex:0 0 auto}.viewer-body{padding:16px;overflow-y:auto;display:flex;flex-wrap:wrap;gap:16px}.viewer-item{flex:1 1 280px;min-width:0;display:flex;flex-direction:column;gap:8px}.viewer-img{width:100%;max-height:60vh;object-fit:contain;border:1px solid var(--border);border-radius:8px;background:#fafbfc;display:block}.login-wrap{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:16px}.login-card{width:100%;max-width:380px;margin:0}.login-title{font-size:20px;text-align:center;margin:4px 0 20px}@media(max-width:480px){.page{padding:12px}.topbar-title{font-size:18px}.card{padding:12px}.thumbs{grid-template-columns:repeat(auto-fill,minmax(80px,1fr))}.result-img{max-height:360px}.history-item{width:80px}.history-thumb{width:80px;height:80px}.viewer-mask{padding:8px}.viewer-head{padding:10px 12px}.viewer-body{padding:12px}.viewer-img{max-height:52vh}}
