*{box-sizing:border-box}body{margin:0;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,PingFang SC,Hiragino Sans GB,Microsoft YaHei,sans-serif;background:#f4f6f9;color:#1f2937}.layout{max-width:1200px;margin:0 auto;padding:16px}.header{text-align:center;padding:16px 0 8px}.header h1{margin:0;font-size:28px;color:#111827}.header p{margin:6px 0 0;color:#6b7280}.banner{padding:10px 14px;border-radius:8px;margin:8px 0}.banner.error{background:#fef2f2;color:#b91c1c}.main{display:grid;grid-template-columns:300px 1fr;gap:16px;margin-top:12px}.sidebar{background:#fff;border-radius:12px;padding:14px;box-shadow:0 1px 3px #00000014;height:fit-content;position:sticky;top:12px}.content{background:#fff;border-radius:12px;padding:20px;box-shadow:0 1px 3px #00000014;min-height:60vh}.upload-box{display:flex;flex-direction:column;gap:8px;padding-bottom:14px;border-bottom:1px solid #e5e7eb;margin-bottom:12px}.name-input{padding:8px 10px;border:1px solid #d1d5db;border-radius:8px;font-size:14px}.btn{padding:8px 14px;border:1px solid #d1d5db;border-radius:8px;background:#fff;color:#1f2937;cursor:pointer;font-size:14px}.btn:hover:not(:disabled){background:#f3f4f6}.btn:disabled{opacity:.6;cursor:not-allowed}.btn.primary{background:#2563eb;border-color:#2563eb;color:#fff}.btn.primary:hover:not(:disabled){background:#1d4ed8}.btn.warn{background:#f59e0b;border-color:#f59e0b;color:#fff}.btn.danger{color:#dc2626;border-color:#fecaca}.btn.small{padding:4px 8px;font-size:12px}.overwrite-box{display:flex;align-items:center;gap:8px;background:#fffbeb;border:1px solid #fde68a;border-radius:8px;padding:8px;font-size:13px}.hint{font-size:13px;color:#6b7280}.hint.error{color:#dc2626}.bank-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:6px}.bank-item{display:flex;justify-content:space-between;align-items:center;padding:10px 12px;border-radius:8px;cursor:pointer;border:1px solid transparent}.bank-item:hover{background:#f9fafb}.bank-item.active{background:#eff6ff;border-color:#bfdbfe}.bank-info{display:flex;flex-direction:column;min-width:0}.bank-name{font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:140px}.bank-count{font-size:12px;color:#6b7280}.bank-actions{display:flex;gap:4px}.empty{text-align:center;color:#9ca3af;padding:80px 0}.panel-title{font-size:16px;margin-bottom:16px}.muted{color:#6b7280;font-size:13px}.tabs{display:flex;gap:4px;border-bottom:1px solid #e5e7eb;margin-bottom:16px}.tab{padding:8px 16px;border:none;background:none;cursor:pointer;font-size:15px;color:#6b7280;border-bottom:2px solid transparent}.tab.active{color:#2563eb;border-bottom-color:#2563eb;font-weight:600}.tab-body{display:flex;flex-direction:column;gap:12px}.text-input{width:100%;padding:12px;border:1px solid #d1d5db;border-radius:8px;font-size:15px;font-family:inherit;resize:vertical}.image-drop{display:flex;justify-content:center;align-items:center;min-height:200px;border:2px dashed #d1d5db;border-radius:12px;cursor:pointer;overflow:hidden}.image-drop:hover{border-color:#2563eb}.drop-text{color:#9ca3af}.image-preview{max-width:100%;max-height:360px;object-fit:contain}.result{margin-top:20px;border:1px solid #e5e7eb;border-radius:12px;padding:16px}.result.hit{border-color:#86efac;background:#f0fdf4}.result.not-hit{border-color:#fca5a5;background:#fef2f2}.result-head{display:flex;justify-content:space-between;align-items:center}.result h3{margin:0 0 8px}.ocr-box{background:#fff;border:1px solid #e5e7eb;border-radius:8px;padding:10px;margin:12px 0}.ocr-text{margin:6px 0;font-size:15px}.best-box{background:#fff;border:2px solid #2563eb;border-radius:10px;padding:14px}.best-title{display:flex;align-items:center;gap:12px;margin-bottom:8px}.big-number{font-size:32px;font-weight:800;color:#2563eb}.score{color:#6b7280;font-size:13px;margin-left:auto}.q-number{display:inline-block;min-width:36px;font-weight:700;color:#2563eb}.q-text{margin:0;white-space:pre-wrap}.candidates{margin-top:12px}.candidates ul{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:6px}.candidates li{display:flex;align-items:flex-start;gap:8px;background:#fff;border:1px solid #e5e7eb;border-radius:8px;padding:8px 10px;font-size:14px}.question-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:8px}.question-list li{display:flex;gap:10px;background:#f9fafb;border-radius:8px;padding:10px 12px;font-size:14px}.pager{display:flex;justify-content:center;align-items:center;gap:14px;margin-top:16px}@media (max-width: 860px){.main{grid-template-columns:1fr}.sidebar{position:static}}.bank-cards{display:flex;flex-direction:column;gap:12px}.bank-card{border:1px solid #e5e7eb;border-radius:10px;padding:12px 14px;background:#fff}.bank-card.hit{border-color:#86efac;background:#f0fdf4}.bank-card.not-hit{border-color:#fde68a;background:#fffbeb}.bank-card-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px;gap:8px}.best-line{display:flex;align-items:center;gap:10px;margin-bottom:6px}.badge{padding:2px 8px;border-radius:999px;font-size:12px;font-weight:600}.badge-hit{background:#dcfce7;color:#15803d}.badge-close{background:#fef3c7;color:#b45309}.candidate-list{list-style:none;margin:8px 0 0;padding:0;display:flex;flex-direction:column;gap:4px}.candidate-list li{display:flex;align-items:flex-start;gap:8px;font-size:13px}
