*{box-sizing:border-box}body{margin:0;font-family:system-ui,-apple-system,sans-serif;background:#f5f5f5;color:#222}.app{max-width:900px;margin:0 auto;padding:1.5rem}.app-loading{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:100vh;gap:1rem}.spinner{width:32px;height:32px;border:3px solid #e0e0e0;border-top-color:#333;border-radius:50%;animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.card{background:#fff;border:1px solid #ddd;border-radius:8px;padding:1.25rem;margin-bottom:1rem}.card h2{margin:0 0 .75rem;font-size:1.1rem}input[type=text],input[type=password],input[type=email]{display:block;width:100%;padding:.5rem .75rem;margin-bottom:.75rem;border:1px solid #ccc;border-radius:4px;font-size:1rem}button{padding:.5rem 1rem;border:1px solid #333;border-radius:4px;background:#333;color:#fff;font-size:.95rem;cursor:pointer}button:hover{background:#555}button:disabled{opacity:.6;cursor:not-allowed}button.secondary{background:#fff;color:#333}button.secondary:hover{background:#f0f0f0}.error{color:#c00;font-size:.9rem;margin-bottom:.75rem}.upload-zone{border:2px dashed #ccc;border-radius:8px;padding:2rem;text-align:center;background:#fafafa;margin-bottom:1rem}.upload-zone.dragover{border-color:#333;background:#f0f0f0}.upload-zone input[type=file]{margin-top:.5rem}table{width:100%;border-collapse:collapse;font-size:.9rem}th,td{padding:.5rem .75rem;text-align:left;border-bottom:1px solid #eee}th{background:#f8f8f8;font-weight:600}.status-json{font-family:monospace;font-size:.85rem;background:#f8f8f8;padding:.75rem;border-radius:4px;overflow-x:auto;white-space:pre-wrap}.success-msg{color:#060;font-size:.9rem;margin-top:.5rem}
