*{margin:0;padding:0;box-sizing:border-box;-webkit-tap-highlight-color:transparent}
html,body{height:100%}
body{font-family:-apple-system,BlinkMacSystemFont,"PingFang SC","Microsoft YaHei",sans-serif;background:#f5f6fa;-webkit-font-smoothing:antialiased}
.hidden{display:none!important}
.page{display:none;min-height:100vh}
.page.active{display:block}
.banner{width:100%;height:220px;overflow:hidden;background:linear-gradient(135deg,#4facfe,#00f2fe)}
.banner img{width:100%;height:100%;object-fit:cover;display:block}
.banner-fallback{width:100%;height:100%;background:linear-gradient(135deg,#5f330f,#b97729,#f0c67c);display:flex;flex-direction:column;align-items:center;justify-content:center;color:#fff7e8}
.banner-fallback-hidden{display:none}
.banner-fallback h2{font-size:22px;font-weight:600;letter-spacing:2px}
.banner-fallback p{font-size:13px;opacity:.85;margin-top:6px}
.form-card{margin:-40px 16px 0;background:#fff;border-radius:16px;box-shadow:0 4px 24px rgba(0,0,0,.08);padding:28px 20px 24px;position:relative;z-index:2}
.field{margin-bottom:20px}
.field-label{display:flex;align-items:center;font-size:14px;font-weight:600;color:#333;margin-bottom:8px}
.field-label .req{color:#e74c3c;margin-left:2px}
.input-wrap input{width:100%;padding:14px 16px;border:2px solid #e8e8e8;border-radius:12px;font-size:16px;color:#333;outline:none;background:#fafbfc;-webkit-appearance:none;transition:border-color .3s,box-shadow .3s}
.input-wrap input:focus{border-color:#c88b3c;background:#fff;box-shadow:0 0 0 4px rgba(200,139,60,.14)}
.input-wrap input.valid{border-color:#27ae60;background:#f0fff4}
.input-wrap input.err{border-color:#e74c3c;background:#fff5f5}
.field-error{font-size:12px;color:#e74c3c;margin-top:6px;min-height:16px}
.submit-btn{width:100%;padding:16px;background:linear-gradient(135deg,#f6d7a0 0%,#d8a04e 45%,#9b5d1f 100%);color:#3a220a;border:none;border-radius:12px;font-size:17px;font-weight:700;cursor:pointer;margin-top:8px;display:flex;align-items:center;justify-content:center;min-height:52px;-webkit-user-select:none;user-select:none;box-shadow:0 10px 24px rgba(106,60,14,.22),inset 0 1px 0 rgba(255,255,255,.38)}
.submit-btn:active{transform:scale(.97)}
.submit-btn:disabled{opacity:.55;cursor:not-allowed}
.notice-entry{display:flex;justify-content:center;margin-top:14px}
.notice-link-btn{border:none;background:none;color:#b97a2a;font-size:13px;font-weight:700;cursor:pointer;padding:6px 10px}
.spinner{display:inline-block;width:20px;height:20px;border:2.5px solid rgba(255,255,255,.3);border-top-color:#fff;border-radius:50%;animation:spin .6s linear infinite;margin-right:8px}
.spinner-lg{width:32px;height:32px;border-width:3px;margin-right:0}
@keyframes spin{to{transform:rotate(360deg)}}
.privacy{text-align:center;font-size:12px;color:#aaa;margin-top:16px;line-height:1.7;padding:0 8px}
.toast-wrap{position:fixed;top:0;left:0;right:0;z-index:9999;display:flex;justify-content:center;padding-top:calc(16px + env(safe-area-inset-top,0px));pointer-events:none}
.toast{padding:12px 24px;border-radius:10px;font-size:14px;font-weight:500;color:#fff;transform:translateY(-80px);opacity:0;transition:all .35s cubic-bezier(.175,.885,.32,1.275);max-width:85%;text-align:center;pointer-events:auto}
.toast.show{transform:translateY(0);opacity:1}
.toast.success{background:#27ae60}.toast.error{background:#e74c3c}.toast.warning{background:#f39c12}
.tip-page{min-height:100vh;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:40px 24px;text-align:center}
.loading-tip-text{margin-top:16px;color:#999}
.tip-page .tip-icon{width:80px;height:80px;margin-bottom:24px}
.tip-page h2{font-size:22px;color:#333;margin-bottom:10px}
.tip-page p{font-size:15px;color:#888;line-height:1.6}
.success-page{min-height:100vh;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:40px 20px calc(40px + env(safe-area-inset-bottom,0px));background:linear-gradient(135deg,#2f1406,#7d4617,#d49a48);text-align:center;color:#fff7e8}
.success-icon{width:96px;height:96px;margin-bottom:24px}
.success-icon .circle{stroke-dasharray:300;stroke-dashoffset:300;animation:drawCircle .6s ease forwards}
.success-icon .check{stroke-dasharray:50;stroke-dashoffset:50;animation:drawCheck .4s .4s ease forwards}
@keyframes drawCircle{to{stroke-dashoffset:0}}
@keyframes drawCheck{to{stroke-dashoffset:0}}
.success-page h2{font-size:26px;font-weight:700;margin-bottom:12px;animation:fadeInUp .5s .3s both}
.success-page .time{font-size:13px;opacity:.7;margin-bottom:40px;animation:fadeInUp .5s .5s both}
@keyframes fadeInUp{from{opacity:0;transform:translateY(16px)}to{opacity:1;transform:translateY(0)}}
.agreement-overlay{position:fixed;top:0;left:0;right:0;bottom:0;background:rgba(0,0,0,.5);z-index:100;display:flex;align-items:flex-end;justify-content:center}
.agreement-box{background:#fff;border-radius:20px 20px 0 0;width:100%;max-width:500px;max-height:85vh;display:flex;flex-direction:column;animation:slideUp .3s ease}
.notice-box{max-width:560px}
@keyframes slideUp{from{transform:translateY(100%)}to{transform:translateY(0)}}
.agreement-header{padding:20px 20px 12px;border-bottom:1px solid #f0f0f0;flex-shrink:0}
.agreement-header h3{font-size:17px;text-align:center}
.agreement-body{flex:1;overflow-y:auto;padding:16px 20px;font-size:14px;line-height:1.8;color:#555;-webkit-overflow-scrolling:touch}
.agreement-body p{margin-bottom:8px}
.agreement-body h4{font-size:15px;color:#333;margin:14px 0 8px}
.agreement-footer{padding:16px 20px calc(16px + env(safe-area-inset-bottom,0px));border-top:1px solid #f0f0f0;flex-shrink:0}
.notice-footer{padding-top:12px}
.agreement-footer label{display:flex;align-items:center;font-size:13px;color:#666;margin-bottom:12px;cursor:pointer}
.agreement-footer input[type=checkbox]{width:18px;height:18px;margin-right:8px;accent-color:#c88b3c}
.agreement-footer .agree-btn{width:100%;padding:14px;background:linear-gradient(135deg,#f6d7a0 0%,#d8a04e 45%,#9b5d1f 100%);color:#3a220a;border:none;border-radius:12px;font-size:16px;font-weight:700;cursor:pointer;transition:opacity .2s;box-shadow:0 10px 24px rgba(106,60,14,.18),inset 0 1px 0 rgba(255,255,255,.38)}
.agreement-footer .agree-btn:disabled{opacity:.4;cursor:not-allowed}
