:root{--bg:#f4f6fb;--surface:#fff;--text:#1c2233;--muted:#6b7489;--border:#e2e6ef;--primary:#3b5bfd;--primary-soft:#e9edff;--success:#12a46b;--warning:#c98a06;--warning-soft:#fff6df;--danger:#d23d3d;--shadow:0 10px 30px #1c223314}@media (prefers-color-scheme:dark){:root{--bg:#0f1320;--surface:#171c2c;--text:#e8ebf3;--muted:#9099ae;--border:#283048;--primary:#6f86ff;--primary-soft:#1f2846;--warning-soft:#33290f;--shadow:0 10px 30px #00000059}}*{box-sizing:border-box;margin:0;padding:0}body{background:var(--bg);color:var(--text);min-height:100vh;font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif}.bg-blobs{z-index:-1;pointer-events:none;position:fixed;inset:0;overflow:hidden}.bg-blobs span{filter:blur(90px);opacity:.35;border-radius:50%;width:420px;height:420px;animation:18s ease-in-out infinite float;position:absolute}.bg-blobs span:first-child{background:#7c93ff;top:-120px;left:-100px}.bg-blobs span:nth-child(2){background:#5fd3b0;animation-delay:-6s;bottom:-140px;right:-80px}.bg-blobs span:nth-child(3){background:#f7b267;width:260px;height:260px;animation-delay:-12s;top:40%;left:55%}.container{max-width:1040px;margin:0 auto;padding:48px 16px 64px}header.hero{text-align:center;margin-bottom:32px;animation:.6s both fadeUp}.hero h1{letter-spacing:-.02em;font-size:clamp(1.6rem,4vw,2.2rem)}.hero p{color:var(--muted);margin-top:8px}.steps{flex-wrap:wrap;justify-content:center;gap:8px;margin:24px 0 8px;display:flex}.step{background:var(--surface);border:1px solid var(--border);color:var(--muted);border-radius:999px;align-items:center;gap:8px;padding:6px 14px;font-size:.85rem;transition:all .3s;display:flex}.step b{background:var(--border);width:22px;height:22px;color:var(--text);border-radius:50%;place-items:center;font-size:.75rem;transition:all .3s;display:grid}.step.active{color:var(--text);border-color:var(--primary)}.step.active b{background:var(--primary);color:#fff}.step.done b{background:var(--success);color:#fff}.card{background:var(--surface);border:1px solid var(--border);box-shadow:var(--shadow);border-radius:16px;padding:24px;animation:.5s both fadeUp}.card+.card{margin-top:20px}.dropzone{border:2px dashed var(--border);text-align:center;cursor:pointer;border-radius:14px;padding:44px 16px;transition:border-color .25s,background .25s,transform .25s}.dropzone:hover,.dropzone.drag{border-color:var(--primary);background:var(--primary-soft);transform:scale(1.01)}.dropzone .icon{font-size:2.6rem;animation:2.4s ease-in-out infinite bob;display:inline-block}.dropzone h3{margin-top:10px}.dropzone p{color:var(--muted);margin-top:6px;font-size:.9rem}.toolbar{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;margin-bottom:16px;display:flex}.toolbar h2{font-size:1.1rem}.toolbar .meta{color:var(--muted);margin-top:2px;font-size:.85rem}.actions{flex-wrap:wrap;gap:8px;display:flex}.btn{border:1px solid var(--border);background:var(--surface);color:var(--text);cursor:pointer;border-radius:10px;padding:10px 16px;font-size:.9rem;font-weight:600;transition:transform .15s,box-shadow .2s,background .2s,opacity .2s}.btn:hover:not(:disabled){box-shadow:var(--shadow);transform:translateY(-2px)}.btn:active:not(:disabled){transform:translateY(0)}.btn:disabled{opacity:.5;cursor:not-allowed}.btn.primary{background:var(--primary);border-color:var(--primary);color:#fff}.btn.link{color:var(--primary);background:0 0;border:none;padding:6px 8px}.btn.small{padding:6px 10px;font-size:.8rem}.table-wrap{border:1px solid var(--border);border-radius:12px;max-height:460px;overflow-x:auto}table{border-collapse:collapse;width:100%;font-size:.86rem}th,td{text-align:left;border-bottom:1px solid var(--border);white-space:nowrap;padding:10px 12px}th{background:var(--surface);color:var(--muted);text-transform:uppercase;letter-spacing:.04em;font-size:.78rem;font-weight:600;position:sticky;top:0}tbody tr{transition:background .2s;animation:.4s both rowIn}tbody tr:hover{background:var(--primary-soft)}td.empty{color:var(--danger);font-style:italic}.badge{border-radius:999px;padding:2px 8px;font-size:.75rem;font-weight:600;display:inline-block}.badge.ok{color:var(--success);background:#12a46b1f}.badge.warn{background:var(--warning-soft);color:var(--warning)}.alert{border-radius:10px;margin-bottom:16px;padding:12px 14px;font-size:.88rem;animation:.3s both fadeUp}.alert.error{color:var(--danger);background:#d23d3d1a}.alert.warn{background:var(--warning-soft);color:var(--warning)}.progress{margin-top:16px}.progress .bar{background:var(--border);border-radius:999px;height:10px;overflow:hidden}.progress .fill{background:linear-gradient(90deg, var(--primary), #5fd3b0, var(--primary));background-size:200% 100%;border-radius:999px;height:100%;transition:width .25s;animation:1.4s linear infinite shimmer}.progress .label{color:var(--muted);justify-content:space-between;margin-top:6px;font-size:.8rem;display:flex}.success{text-align:center;padding:8px 0 4px}.success .check{background:var(--success);color:#fff;border-radius:50%;place-items:center;width:56px;height:56px;margin:0 auto 10px;font-size:1.6rem;animation:.5s cubic-bezier(.2,1.6,.4,1) both pop;display:grid}footer{text-align:center;color:var(--muted);margin-top:32px;font-size:.8rem}@keyframes fadeUp{0%{opacity:0;transform:translateY(14px)}to{opacity:1;transform:none}}@keyframes rowIn{0%{opacity:0;transform:translate(-8px)}to{opacity:1;transform:none}}@keyframes bob{0%,to{transform:translateY(0)}50%{transform:translateY(-8px)}}@keyframes float{0%,to{transform:translate(0)}50%{transform:translate(40px,30px)}}@keyframes shimmer{0%{background-position:200% 0}to{background-position:0 0}}@keyframes pop{0%{transform:scale(0)}to{transform:scale(1)}}@media (prefers-reduced-motion:reduce){*,:before,:after{transition:none!important;animation:none!important}}
