:root{--bg:#f5f6f8;--surface:#ffffff;--border:#e2e5ea;--text:#1c2330;--text-sub:#667085;--accent:#2456c4;--accent-hover:#1d47a3;--accent-soft:#e8eef9;--green:#157347;--green-soft:#e2f3ea;--amber:#9a6700;--amber-soft:#fff3d6;--red:#b42318;--red-soft:#fdebe9;--gray-soft:#eef0f3;--radius:10px;--shadow:0 1px 2px rgba(16,24,40,0.06),0 1px 3px rgba(16,24,40,0.1)}*{box-sizing:border-box}body,html{margin:0;padding:0;background:var(--bg);color:var(--text);font-family:Hiragino Sans,Hiragino Kaku Gothic ProN,Yu Gothic UI,Noto Sans JP,Meiryo,system-ui,sans-serif;font-size:14px;line-height:1.6}a{color:var(--accent);text-decoration:none}a:hover{text-decoration:underline}.app-header{background:var(--surface);border-bottom:1px solid var(--border);padding:0 24px;gap:24px;height:56px;position:-webkit-sticky;position:sticky;top:0;z-index:20}.app-header,.app-header .brand{display:flex;align-items:center}.app-header .brand{font-size:16px;font-weight:700;color:var(--text);gap:8px}.app-header .brand:hover{text-decoration:none}.app-main{max-width:1240px;margin:0 auto;padding:24px}.panel{border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow)}.btn,.panel{background:var(--surface)}.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;padding:8px 16px;border-radius:8px;border:1px solid var(--border);color:var(--text);font-size:14px;font-family:inherit;cursor:pointer;transition:background .15s,border-color .15s;white-space:nowrap}.btn:hover{background:var(--gray-soft)}.btn:disabled{opacity:.5;cursor:not-allowed}.btn-primary{background:var(--accent);border-color:var(--accent);color:#fff}.btn-primary:hover{background:var(--accent-hover)}.btn-success{background:var(--green);border-color:var(--green);color:#fff}.btn-success:hover{background:#0f5c38}.btn-danger{color:var(--red);border-color:#f1c1bd}.btn-danger:hover{background:var(--red-soft)}.btn-sm{padding:4px 10px;font-size:13px}.badge{display:inline-flex;align-items:center;gap:4px;padding:2px 10px;border-radius:999px;font-size:12px;font-weight:600;white-space:nowrap}.badge-queued{background:var(--gray-soft);color:var(--text-sub)}.badge-processing{background:var(--accent-soft);color:var(--accent)}.badge-needs_review{background:var(--amber-soft);color:var(--amber)}.badge-confirmed{background:var(--green-soft);color:var(--green)}.badge-failed{background:var(--red-soft);color:var(--red)}input[type=password],input[type=search],input[type=text],textarea{font-family:inherit;font-size:14px;padding:8px 12px;border:1px solid var(--border);border-radius:8px;background:var(--surface);color:var(--text);width:100%}input:focus,textarea:focus{outline:2px solid var(--accent-soft);border-color:var(--accent)}.toolbar{display:flex;flex-wrap:wrap;align-items:center;gap:12px;margin-bottom:16px}.toolbar .spacer{flex:1 1}.search-box{width:280px}.batch-select{font-family:inherit;font-size:13.5px;padding:7px 10px;border:1px solid var(--border);border-radius:8px;background:var(--surface);color:var(--text);max-width:280px}.tabs{display:flex;gap:4px;flex-wrap:wrap}.tab{padding:6px 14px;border-radius:8px;border:1px solid transparent;background:transparent;color:var(--text-sub);font-size:13.5px;font-family:inherit;cursor:pointer}.tab:hover{background:var(--gray-soft)}.tab.active{background:var(--surface);border-color:var(--border);color:var(--text);font-weight:600;box-shadow:var(--shadow)}.tab .count{margin-left:6px;font-size:12px;color:var(--text-sub)}.dropzone{border:2px dashed var(--border);border-radius:var(--radius);background:var(--surface);padding:22px;text-align:center;color:var(--text-sub);margin-bottom:16px;transition:border-color .15s,background .15s;cursor:pointer}.dropzone.dragover{border-color:var(--accent);background:var(--accent-soft);color:var(--accent)}.card-table{width:100%;border-collapse:collapse}.card-table th{text-align:left;font-size:12.5px;font-weight:600;color:var(--text-sub);white-space:nowrap}.card-table td,.card-table th{padding:10px 14px;border-bottom:1px solid var(--border)}.card-table td{vertical-align:middle}.card-table tbody tr{cursor:pointer;transition:background .1s}.card-table tbody tr:hover{background:#f8fafd}.card-table tbody tr:last-child td{border-bottom:none}.thumb{width:88px;height:54px;object-fit:cover;border-radius:6px;border:1px solid var(--border);background:var(--gray-soft);display:block}.cell-main{font-weight:600}.cell-sub{color:var(--text-sub);font-size:12.5px}.empty-state{padding:60px 20px;text-align:center;color:var(--text-sub)}.status-line{display:flex;align-items:center;gap:16px;font-size:12.5px;color:var(--text-sub);margin-top:12px;flex-wrap:wrap}.dot{display:inline-block;width:8px;height:8px;border-radius:50%;margin-right:5px}.dot-on{background:var(--green)}.dot-off{background:#c2c7cf}.dot-err{background:var(--red)}.review-layout{display:grid;grid-template-columns:minmax(360px,1fr) minmax(420px,1fr);grid-gap:20px;gap:20px;align-items:start}@media (max-width:960px){.review-layout{grid-template-columns:1fr}}.image-pane{position:-webkit-sticky;position:sticky;top:76px;overflow:hidden}.image-pane .image-scroll{overflow:auto;max-height:calc(100vh - 190px);background:#2a2f3a;border-radius:0 0 var(--radius) var(--radius);text-align:center}.image-pane img{display:inline-block;transform-origin:top left}.image-toolbar{display:flex;align-items:center;gap:8px;padding:10px 14px;border-bottom:1px solid var(--border)}.field-list{display:flex;flex-direction:column;gap:14px;padding:18px}.field-row label{display:block;font-size:12.5px;font-weight:600;color:var(--text-sub);margin-bottom:4px}.field-flag{margin-left:8px;font-weight:600;font-size:11.5px;padding:1px 8px;border-radius:999px}.flag-mismatch{background:var(--amber-soft);color:var(--amber)}.flag-invalid{background:var(--red-soft);color:var(--red)}.flag-ok{background:var(--green-soft);color:var(--green)}.badge-auto,.flag-carried{background:var(--border);color:var(--text-sub)}.flag-carried{font-weight:500}.field-hint{font-size:11.5px;color:var(--text-sub);margin:-2px 0 4px}.field-section{margin-top:6px;padding-top:14px;border-top:1px dashed var(--border);font-size:12px;font-weight:600;color:var(--text-sub)}.field-row input.warn,.field-row textarea.warn{border-color:var(--amber);background:#fffdf5}.field-row input.invalid,.field-row textarea.invalid{border-color:var(--red);background:#fffafa}.field-note{font-size:12px;margin-top:4px}.field-note.warn{color:var(--amber)}.field-note.error{color:var(--red)}.candidates{font-size:12px;color:var(--text-sub);margin-top:4px}.candidates button{border:1px solid var(--border);background:var(--surface);border-radius:6px;padding:1px 8px;margin-left:6px;cursor:pointer;font-size:12px;font-family:inherit}.candidates button:hover{background:var(--accent-soft)}.banner{padding:12px 16px;border-radius:var(--radius);margin-bottom:14px;font-size:13.5px}.banner-warn{background:var(--amber-soft);color:var(--amber);border:1px solid #f0d9a0}.banner-error{background:var(--red-soft);color:var(--red);border:1px solid #f1c1bd}.banner-info{background:var(--accent-soft);color:var(--accent);border:1px solid #c4d4f2}.banner-success{background:var(--green-soft);color:var(--green);border:1px solid #b7e0c8}.action-bar{gap:10px;padding:14px 18px;border-top:1px solid var(--border);flex-wrap:wrap;position:-webkit-sticky;position:sticky;bottom:0;background:var(--surface);border-radius:0 0 var(--radius) var(--radius)}.action-bar,.login-wrap{display:flex;align-items:center}.login-wrap{min-height:80vh;justify-content:center}.login-box{width:360px;padding:32px}.login-box h1{font-size:18px;margin:0 0 20px}.upload-results{margin-bottom:16px;font-size:13px}.upload-results li{margin:2px 0}.spin{display:inline-block;width:14px;height:14px;border:2px solid var(--accent-soft);border-top-color:var(--accent);border-radius:50%;animation:spin .8s linear infinite;vertical-align:-2px}@keyframes spin{to{transform:rotate(1turn)}}