:root{--space-1:4px;--space-2:8px;--space-3:12px;--space-4:16px;--space-5:24px;--space-6:32px;--space-7:40px;--bg-from:#eef2fb;--bg-via:#f5f6fa;--bg-to:#eaf0f7;--card:#ffffff;--text:#131722;--muted:#5b6472;--muted-2:#8a93a3;--border:#dde2ea;--accent:#2563eb;--accent-strong:#1d4ed8;--accent-ring:rgba(37,99,235,0.18);--accent-disabled:#a9c1f6;--error:#d92d20;--error-bg:#fef3f2;--error-border:#f3b9b4;--success:#099250;--success-bg:#ecfdf3;--radius-input:12px;--radius-card:22px;--shadow-card:0 1px 2px rgba(16,24,40,0.04),0 12px 32px -8px rgba(16,24,40,0.14)}*{box-sizing:border-box}body,html{margin:0;padding:0}body{background:linear-gradient(160deg,var(--bg-from),var(--bg-via) 45%,var(--bg-to));background-attachment:fixed;color:var(--text);font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica,Arial,sans-serif;line-height:1.5;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}.page,body{min-height:100dvh}.page{display:flex;justify-content:center;align-items:flex-start;padding:var(--space-5) var(--space-4) var(--space-7)}.card{width:100%;max-width:440px;background:var(--card);border:1px solid rgba(255,255,255,.6);border-radius:var(--radius-card);padding:var(--space-6) var(--space-5);margin-top:var(--space-5);box-shadow:var(--shadow-card);animation:card-in .3s cubic-bezier(.22,1,.36,1) both}@media (min-width:420px){.card{padding:var(--space-6)}}.header{margin-bottom:var(--space-5)}.title{margin:0 0 var(--space-1);font-size:23px;font-weight:660;letter-spacing:-.01em}.subtitle{margin:0;color:var(--muted);font-size:14px}.field{display:flex;flex-direction:column;gap:var(--space-2);margin-bottom:var(--space-4);animation:field-in .32s cubic-bezier(.22,1,.36,1) both;animation-delay:calc(.12s + var(--i, 0) * 45ms)}.label{font-size:13.5px;font-weight:560;color:var(--text);display:inline-flex;align-items:center;gap:4px}.req{font-weight:500}.optional,.req{color:var(--muted-2)}.optional{font-weight:400}.control{width:100%;min-height:32px;font:inherit;font-size:15px;color:var(--text);background:#fff;border:1px solid var(--border);border-radius:var(--radius-input);padding:8px var(--space-3);outline:none;transition:border-color .15s ease,box-shadow .15s ease,background-color .15s ease;-webkit-appearance:none;-moz-appearance:none;appearance:none}.control::placeholder{color:var(--muted-2)}.control:hover:not(:focus):not(:disabled){border-color:#c6cdd9}.control:focus,.control:focus-visible{border-color:var(--accent);box-shadow:0 0 0 4px var(--accent-ring)}.field-primary .control{min-height:35px;font-size:16px}.field-primary .label{font-size:14px;font-weight:620}textarea.control{min-height:67px;resize:vertical;line-height:1.45;overflow:hidden}select.control{cursor:pointer;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='%235b6472' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='6 9 12 15 18 9'%3E%3C/polyline%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right var(--space-3) center;padding-right:38px}.control[aria-invalid=true]{border-color:var(--error)}.control[aria-invalid=true]:focus,.control[aria-invalid=true]:focus-visible{box-shadow:0 0 0 4px rgba(217,45,32,.15)}.error-msg{color:var(--error);font-size:12.5px;line-height:1.35;animation:msg-in .16s ease both}.button{width:100%;min-height:50px;font:inherit;font-size:15.5px;font-weight:620;color:#fff;background:var(--accent);border:none;border-radius:var(--radius-input);padding:13px 16px;margin-top:var(--space-2);cursor:pointer;display:inline-flex;align-items:center;justify-content:center;gap:var(--space-2);transition:background-color .15s ease,transform 80ms ease,box-shadow .15s ease;box-shadow:0 1px 2px rgba(16,24,40,.1)}.button:hover:not(:disabled){background:var(--accent-strong)}.button:active:not(:disabled){transform:translateY(1px) scale(.995);box-shadow:0 1px 1px rgba(16,24,40,.12)}.button:focus-visible{box-shadow:0 0 0 4px var(--accent-ring)}.button:disabled{cursor:not-allowed}.button[aria-busy=true]{background:var(--accent);opacity:.92}.button:disabled:not([aria-busy=true]){background:var(--accent-disabled)}.spinner{width:18px;height:18px;flex:none;animation:spin .75s linear infinite}.spinner circle{opacity:.35}.spinner path{opacity:1}.banner{display:flex;align-items:flex-start;gap:var(--space-2);background:var(--error-bg);border:1px solid var(--error-border);color:var(--error);border-radius:var(--radius-input);padding:11px var(--space-3);margin-bottom:var(--space-4);font-size:13.5px;animation:banner-in .2s ease both}.banner-text{flex:1 1;padding-top:1px}.banner-close{flex:none;background:transparent;border:none;color:var(--error);cursor:pointer;font-size:18px;line-height:1;padding:2px 4px;margin:-2px -4px 0 0;border-radius:6px;opacity:.75;transition:opacity .15s ease,background-color .15s ease}.banner-close:hover{opacity:1;background:rgba(217,45,32,.08)}.banner-close:focus-visible{outline:2px solid var(--error);outline-offset:1px;opacity:1}.success{flex-direction:column;text-align:center;padding:var(--space-5) var(--space-2) var(--space-3);animation:success-in .32s cubic-bezier(.22,1,.36,1) both}.check-wrap,.success{display:flex;align-items:center}.check-wrap{width:72px;height:72px;border-radius:50%;background:var(--success-bg);justify-content:center;margin-bottom:var(--space-4);animation:check-pop .36s cubic-bezier(.34,1.56,.64,1) both}.check-svg{width:40px;height:40px}.check-svg circle{stroke:var(--success);stroke-width:2.5;fill:none;stroke-dasharray:151;stroke-dashoffset:151;animation:draw .5s ease .12s forwards}.check-svg path{stroke:var(--success);stroke-width:3;fill:none;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:36;stroke-dashoffset:36;animation:draw .32s ease .42s forwards}.success-title{margin:0 0 var(--space-1);font-size:20px;font-weight:640}.success-text{margin:0 0 var(--space-5);color:var(--muted);font-size:14px}.button-secondary{width:100%;min-height:48px;font:inherit;font-size:15px;font-weight:600;color:var(--accent-strong);background:#fff;border:1px solid var(--border);border-radius:var(--radius-input);padding:12px 16px;cursor:pointer;transition:border-color .15s ease,background-color .15s ease,transform 80ms ease}.button-secondary:hover{border-color:var(--accent);background:#f7f9ff}.button-secondary:active{transform:translateY(1px) scale(.995)}.button-secondary:focus-visible{box-shadow:0 0 0 4px var(--accent-ring);border-color:var(--accent);outline:none}@keyframes card-in{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}@keyframes field-in{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}@keyframes msg-in{0%{opacity:0;transform:translateY(-3px)}to{opacity:1;transform:translateY(0)}}@keyframes banner-in{0%{opacity:0;transform:translateY(-6px)}to{opacity:1;transform:translateY(0)}}@keyframes success-in{0%{opacity:0;transform:translateY(8px) scale(.99)}to{opacity:1;transform:translateY(0) scale(1)}}@keyframes check-pop{0%{opacity:0;transform:scale(.6)}to{opacity:1;transform:scale(1)}}@keyframes draw{to{stroke-dashoffset:0}}@keyframes spin{to{transform:rotate(1turn)}}@media (prefers-reduced-motion:reduce){.banner,.card,.check-wrap,.error-msg,.field,.success{animation:none}.check-svg circle,.check-svg path{animation:none;stroke-dashoffset:0}.spinner{animation-duration:1.2s}.button-secondary:active,.button:active:not(:disabled){transform:none}.button,.button-secondary,.control{transition-duration:1ms}}