:root{--bg:#0f1420;--bg-soft:#161c2c;--panel:#1b2336;--border:#2a3550;--text:#e8ecf5;--muted:#93a0bd;--accent:#4a9eff;--accent-strong:#2f7fe0;--ok:#34c98f;--warn:#e5b83a;--bad:#ef5b5b;--radius:12px;font-family:Segoe UI,system-ui,-apple-system,Roboto,sans-serif}*{box-sizing:border-box}body{background:radial-gradient(1200px 600px at 20% -10%, #1a2440 0%, var(--bg) 55%);color:var(--text);min-height:100vh;margin:0}.app{max-width:1060px;margin:0 auto;padding:24px 20px 90px}h1{letter-spacing:.2px;align-items:baseline;gap:10px;margin:0 0 4px;font-size:26px;font-weight:800;display:flex}.logo{color:var(--accent)}.sub{color:var(--muted);letter-spacing:.6px;text-transform:uppercase;font-size:12px;font-weight:500}.app-head{justify-content:space-between;align-items:center;margin-bottom:22px;display:flex}.panel{background:var(--panel);border:1px solid var(--border);border-radius:var(--radius);margin-bottom:18px;padding:18px 20px}.panel h2{margin:0 0 6px;font-size:18px}.panel h3{margin:14px 0 6px;font-size:15px}.panel h4{text-transform:uppercase;letter-spacing:.4px;color:var(--muted);margin:0 0 8px;font-size:13px}.muted{color:var(--muted);font-size:13px}code{border:1px solid var(--border);background:#ffffff12;border-radius:5px;padding:1px 5px;font-size:12px}.dropzone{border:2px dashed var(--border);border-radius:var(--radius);width:100%;min-height:90px;color:var(--text);font:inherit;cursor:pointer;background:#ffffff05;flex-direction:column;justify-content:center;align-items:center;gap:4px;padding:18px;transition:border-color .15s,background .15s;display:flex}.dropzone.over{border-color:var(--accent);background:#4a9eff14}.dropzone.disabled{opacity:.5;cursor:not-allowed}.dropzone.compact{min-height:52px;margin-top:6px;padding:10px}.dzone-label{font-size:14px;font-weight:600}.dzone-hint{color:var(--muted);font-size:12px}button.primary{background:var(--accent-strong);color:#fff;cursor:pointer;border:none;border-radius:9px;padding:10px 16px;font-size:14px;font-weight:700}button.primary:hover{background:var(--accent)}button.primary:disabled{opacity:.5;cursor:not-allowed}button.primary.big{padding:13px 22px;font-size:16px}button.link{color:var(--accent);cursor:pointer;font:inherit;background:0 0;border:none;padding:4px;font-size:13px}button.link.danger{color:var(--bad)}button.link:hover{text-decoration:underline}.error{color:var(--bad)}.warn{color:var(--warn)}.ok{color:var(--ok)}.ok-msg{color:var(--ok);font-weight:600}.csv-info{align-items:center;gap:12px;margin-bottom:8px;display:flex}.file-name{font-weight:700}pre{border:1px solid var(--border);color:#bcd0f0;background:#0c1120;border-radius:8px;max-height:180px;padding:10px 12px;font-size:12px;overflow-x:auto}.row.opts{flex-wrap:wrap;gap:26px;margin:12px 0;display:flex}label{color:var(--muted);flex-direction:column;gap:5px;font-size:13px;display:flex}label input[type=text],input,select{border:1px solid var(--border);color:var(--text);background:#0c1120;border-radius:8px;padding:8px 10px;font-size:13px}select{cursor:pointer}label.check{flex-direction:row;align-items:center;gap:8px}.csv-preview .primary{margin-top:8px}.stats{flex-wrap:wrap;gap:10px;margin-bottom:8px;display:flex}.stat{border:1px solid var(--border);background:#ffffff0d;border-radius:20px;padding:4px 12px;font-size:13px;font-weight:600}.stat.bad{color:var(--bad);border-color:var(--bad)}.stat.warn{color:var(--warn);border-color:var(--warn)}.stat.ok{color:var(--ok);border-color:var(--ok)}.table-wrap{overflow-x:auto}table.mapping{border-collapse:collapse;width:100%;font-size:13px}table.mapping th,table.mapping td{border:1px solid var(--border);text-align:left;vertical-align:middle;padding:8px 10px}table.mapping th{color:var(--muted);background:#ffffff08;font-weight:600}.col-source{font-weight:700}.meta-editor{flex-wrap:wrap;gap:6px;display:flex}.meta-editor input{width:90px;padding:6px 8px}.chips{flex-wrap:wrap;gap:8px;margin-top:8px;display:flex}.chip{border:1px solid var(--border);cursor:grab;-webkit-user-select:none;user-select:none;background:#223052;border-radius:20px;padding:3px 12px;font-size:12px}.chip:hover{border-color:var(--accent)}.pending-chip{background:#ef5b5b1f;border-color:#ef5b5b80}.tray .chips{margin-top:0}.items{flex-direction:column;gap:12px;display:flex}.card{border:1px solid var(--border);border-radius:var(--radius);background:var(--bg-soft)}.card.bad{border-left:4px solid var(--bad)}.card.warn{border-left:4px solid var(--warn)}.card.ok{border-left:4px solid var(--ok)}.card-head{cursor:pointer;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;padding:12px 16px;display:flex}.card-title{font-weight:700}.card-meta{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.badge{border:1px solid var(--border);background:#ffffff0f;border-radius:20px;padding:2px 10px;font-size:12px}.badge.pending{color:var(--bad);border-color:var(--bad)}.badge.dot{background:var(--ok);border-radius:50%;width:12px;height:12px;padding:0}.badge.dot.warn{background:var(--warn)}.badge.dot.bad{background:var(--bad)}.card-body{border-top:1px solid var(--border);padding:0 16px 16px}.msg-list{margin:0 0 8px;padding:8px 0 0;font-size:12px;list-style:none}.msg-list li+li{margin-top:3px}.pending-refs{margin-bottom:12px}.files-grid{grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:16px;display:grid}.file-list{flex-direction:column;gap:6px;margin:0 0 6px;padding:0;list-style:none;display:flex}.file-list li{border:1px solid var(--border);background:#ffffff08;border-radius:8px;align-items:center;gap:8px;padding:6px 10px;font-size:13px;display:flex;overflow:hidden}.file-name{overflow-wrap:anywhere;flex:1}.empty{margin:4px 0}.thumb-preview{object-fit:cover;border:1px solid var(--border);border-radius:6px;width:46px;height:46px}.metadata-preview{margin-top:16px}.meta-list{flex-direction:column;gap:4px;margin:0;padding:0;font-size:13px;list-style:none;display:flex}.meta-list li{align-items:baseline;gap:10px;display:flex}.dc{color:#9ec1ff;overflow-wrap:anywhere;flex:none;max-width:45%}.dc-value{color:var(--text);overflow-wrap:anywhere}.settings summary{cursor:pointer;color:var(--accent);font-size:14px;font-weight:700}.settings-grid{grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:14px;margin-top:14px;display:grid}.export .stats{margin-bottom:12px}@media (width<=640px){.app{padding:16px 12px 70px}.card-head{flex-direction:column;align-items:flex-start}.meta-editor input{width:100%}}
