*{margin:0;padding:0;box-sizing:border-box}body{font-family:Segoe UI,Tahoma,Geneva,Verdana,sans-serif;background:#f5f7fb;min-height:100vh;display:grid;place-items:center;color:#222;padding:10px}.app-container{width:100%;display:flex;justify-content:center}.card{background:#fff;width:440px;padding:26px;border-radius:16px;box-shadow:0 12px 30px #00000014;display:flex;flex-direction:column;gap:16px;transition:transform .2s ease,box-shadow .2s ease}.card:hover{transform:translateY(-3px);box-shadow:0 18px 40px #0000001f}h1{font-size:24px;color:#0a66c2;text-align:center;margin-bottom:16px;letter-spacing:.5px}.field{display:block;margin:12px 0}.field>span{display:block;font-size:13px;margin-bottom:6px;color:#555}.field input[type=file],.field input[type=number]{width:100%;padding:12px;border:1px solid #dcdfe6;border-radius:12px;transition:border-color .2s,box-shadow .2s}.field input[type=file]:focus,.field input[type=number]:focus{border-color:#0a66c2;outline:none;box-shadow:0 0 6px #0a66c24d}.row{display:flex;gap:10px}.half{flex:1}button{margin-top:10px;background:#0a66c2;color:#fff;border:none;padding:12px 16px;border-radius:12px;cursor:pointer;font-weight:500;transition:background .2s ease,transform .1s ease}button:hover:not(:disabled){background:#084d99;transform:translateY(-1px)}button:disabled{opacity:.6;cursor:not-allowed}.download-link div{display:flex;gap:6px;align-items:center;margin-top:6px}.download-link input{flex:1;padding:6px;border-radius:6px;border:1px solid #c3e6cb}.copy-btn{margin-left:8px;background:#2a7b46;color:#fff;padding:6px 12px;border-radius:10px;border:none;cursor:pointer;transition:background .2s ease,transform .1s ease}.copy-btn:hover{background:#1f5935;transform:translateY(-1px)}.progress-bar{width:100%;background:#e0e0e0;border-radius:12px;overflow:hidden;margin-top:10px;height:10px}.progress-bar-inner{width:0;height:100%;background:#0a66c2;transition:width .3s ease}.alert{margin-top:10px;padding:10px 14px;border-radius:12px;font-size:14px;opacity:0;transform:translateY(-5px);transition:all .3s ease}.alert.show{opacity:1;transform:translateY(0)}.alert.success{background:#e9f7ef;color:#2a7b46;border:1px solid #c3e6cb}.alert.error{background:#fdecea;color:#a71d2a;border:1px solid #f5c2c0}@media (max-width: 500px){.card{width:90%;padding:20px}}
