/* 网页版报名样式。数值换算自小程序 WXSS（1rpx = 0.5px，按 375px 宽），视觉与小程序一致。 */
*,*::before,*::after{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
body{margin:0;color:#17263e;background:#f6faff;font-family:-apple-system,BlinkMacSystemFont,"Helvetica Neue","PingFang SC","Hiragino Sans GB","Microsoft YaHei",sans-serif;-webkit-font-smoothing:antialiased;-webkit-tap-highlight-color:transparent}
button{font:inherit;color:inherit;cursor:pointer;-webkit-appearance:none;appearance:none}
input,textarea,select{font:inherit;color:inherit}
[hidden]{display:none!important}
.app{min-height:100vh;min-height:100dvh}
.view{position:relative;width:100%;max-width:480px;min-height:100vh;min-height:100dvh;margin:0 auto;padding:calc(20px + env(safe-area-inset-top)) 24px calc(46px + env(safe-area-inset-bottom));overflow:hidden}
.view-form{background:radial-gradient(115% 62% at 6% 0%,#e3eeff 0%,rgba(227,238,255,0) 56%),radial-gradient(92% 52% at 98% 4%,#d9f3fa 0%,rgba(217,243,250,0) 52%),radial-gradient(130% 50% at 50% 102%,#e9f4ff 0%,rgba(233,244,255,0) 60%),linear-gradient(180deg,#f4f9ff 0%,#f8fbff 52%,#fafcff 100%)}
.view-intro{background:radial-gradient(105% 58% at 94% 0,#dbf3fa 0,rgba(219,243,250,0) 55%),radial-gradient(120% 62% at 0 100%,#e3eefc 0,rgba(227,238,252,0) 60%),linear-gradient(180deg,#f5faff 0,#fafcff 100%)}
.view-done{background:#f6faff;text-align:center}
@media (min-width:520px){body{background:#eef4fb}.view{box-shadow:0 0 60px -30px rgba(20,70,140,.35)}}

/* ---------- 顶栏 ---------- */
.top{display:flex;align-items:center;gap:10px;min-height:40px}
.back{display:flex;align-items:center;justify-content:center;width:35px;height:35px;flex:0 0 35px;padding:0;border:.5px solid rgba(255,255,255,.92);border-radius:50%;background:rgba(255,255,255,.72);box-shadow:0 4px 10px -7px rgba(20,70,140,.6);-webkit-backdrop-filter:blur(7px);backdrop-filter:blur(7px);text-decoration:none}
.back span{margin-top:-3px;color:#17263e;font-size:27px;font-weight:500;line-height:1}
.progress{display:flex;align-items:center;gap:6px;flex:1;margin-left:4px}
.progress i{height:5px;flex:1;border-radius:3px;background:#d8e7f9}
.progress i.on{background:#1868c6}
.top .count{flex:0 0 auto;color:#637087;font-size:12px;font-weight:700;white-space:nowrap}
.topbar{position:relative;display:flex;align-items:center;min-height:40px}
.topbar .back{position:absolute;left:0;top:50%;transform:translateY(-50%);border-color:#e2eaf4;background:#fff}
.page-title{position:absolute;left:50%;transform:translateX(-50%);font-size:17px;font-weight:800;white-space:nowrap}

/* ---------- 标题与字段 ---------- */
.title{margin:18px 0 0;color:#17263e;font-family:Georgia,"Songti SC","STSong",serif;font-size:25px;font-weight:700;letter-spacing:.2px;line-height:1.35}
.title-s1{margin-bottom:26px}
.subtitle{margin:8px 0 22px;color:#637087;font-size:14px;font-weight:500;line-height:1.6}
.error{margin:12px 0;padding:10px 12px;border:.5px solid #f2cccc;border-radius:9px;background:#fff1f1;color:#b74e4e;font-size:12px}
.field{margin:0 0 17px}
.field>label,.field>.label{display:block;margin-bottom:15px;color:#17263e;font-size:13.5px;font-weight:700;line-height:1.5}
.field input[type=text],.field input[type=tel],.pick,.field textarea{display:block;width:100%;height:48px;padding:0 14px;border:.5px solid rgba(255,255,255,.9);border-radius:12px;background:rgba(255,255,255,.66);box-shadow:0 4px 11px -9px rgba(20,70,140,.5);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);color:#17263e;font-size:14px;outline:none}
.field input::placeholder,.field textarea::placeholder{color:#a9b4c2}
.field input:focus,.field textarea:focus,.pick.chosen{border-color:#1868c6}
.pick{display:flex;align-items:center;justify-content:space-between;color:#a9b4c2;text-align:left;line-height:48px}
.pick.chosen{color:#17263e;font-weight:600}
.chevron{color:#637087;font-size:13px;font-weight:700}
.pick-select{position:relative}
.pick-select select{position:absolute;inset:0;width:100%;height:100%;opacity:0;font-size:16px}
.field textarea{height:168px;min-height:168px;padding:13px 14px 27px;line-height:1.6;resize:none}
.note{display:flex;margin:5px 1px 0;color:#637087;font-size:12px;line-height:1.5}
.note+.note{margin-top:4px}
.note-icon{margin-right:5px;color:#169db5;font-size:9.5px;flex:0 0 auto}
.info-icon{display:inline-flex;width:12px;height:12px;margin-top:3px;align-items:center;justify-content:center;border:1px solid currentColor;border-radius:50%;font-family:Georgia,serif;font-style:normal;font-weight:700;line-height:1}
.note.warn,.note.warn .note-icon{color:#c0392b}
.note.blue{color:#1463bc}
.muted{color:#637087;font-size:10.5px;font-weight:400}
.divider{height:.5px;margin:21px 0;background:#dfe8f3}

/* ---------- 选项 ---------- */
.pills{display:flex;flex-wrap:wrap;gap:9px}
.pills button{display:inline-flex;height:35px;padding:0 16px;align-items:center;justify-content:center;border:.5px solid rgba(255,255,255,.9);border-radius:18px;background:rgba(255,255,255,.66);box-shadow:0 4px 11px -9px rgba(20,70,140,.5);color:#17263e;font-size:13px;font-weight:600;line-height:1.35;transition:transform .16s ease}
.pills button:active{transform:scale(.96)}
.pills button.sel{border-color:#1868c6;background:#1868c6;color:#fff;box-shadow:0 8px 16px -8px rgba(20,99,188,.7)}
.pills button.cap-dim{opacity:.4}
.education-pills{display:grid;grid-template-columns:repeat(5,1fr);gap:6px}
.education-pills button{width:100%;padding:0 2px;font-size:11.5px;white-space:nowrap}
.card{position:relative;display:flex;width:100%;align-items:flex-start;gap:13px;margin:6px 0;padding:13.5px;border:.5px solid rgba(255,255,255,.9);border-radius:14px;background:rgba(255,255,255,.66);color:#17263e;font-size:13.5px;line-height:1.5;text-align:left;box-shadow:0 4px 11px -9px rgba(20,70,140,.5);transition:transform .16s ease}
.card:active{transform:translateY(1px) scale(.985)}
.card-radio{display:flex;width:22px;height:22px;flex:0 0 22px;align-items:center;justify-content:center;margin-top:1px;border:2px solid #d8e3ef;border-radius:50%}
.card.sel{border-color:rgba(24,104,198,.45);background:rgba(234,242,253,.84)}
.card.sel .card-radio{border-color:#1868c6}
.card.sel .card-radio::after{content:"";width:12px;height:12px;border-radius:50%;background:#1868c6}
.card>span:last-child{min-width:0;flex:1}
.baby-in{animation:v0fade .35s ease}
@keyframes v0fade{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}

/* ---------- 滑杆 ---------- */
.slider-readout{width:max-content;margin:0 auto 4px;padding:4px 9px;border-radius:9px;background:rgba(255,255,255,.8);box-shadow:0 4px 9px -6px rgba(20,99,188,.45);text-align:center;color:#1463bc;font-size:19px;font-weight:700}
.slider-readout small{color:#637087;font-size:11.5px;font-weight:500}
.v-slider{display:block;width:calc(100% - 4px);height:28px;margin:5px 2px 0;background:transparent;-webkit-appearance:none;appearance:none}
.v-slider::-webkit-slider-runnable-track{height:4px;border-radius:2px;background:linear-gradient(90deg,#1868c6 var(--fill,50%),#dce8f6 var(--fill,50%))}
.v-slider::-webkit-slider-thumb{-webkit-appearance:none;width:24px;height:24px;margin-top:-10px;border:0;border-radius:50%;background:#18aabd;box-shadow:0 2px 6px rgba(20,70,140,.3)}
.v-slider::-moz-range-track{height:4px;border-radius:2px;background:#dce8f6}
.v-slider::-moz-range-progress{height:4px;border-radius:2px;background:#1868c6}
.v-slider::-moz-range-thumb{width:24px;height:24px;border:0;border-radius:50%;background:#18aabd}

/* ---------- 照片 ---------- */
.photo-label{margin-bottom:9px!important}
.photo{display:flex;align-items:center;gap:14px;width:100%;margin-top:12px;padding:16px;border:1.5px dashed rgba(24,104,198,.28);border-radius:16px;background:rgba(255,255,255,.66);box-shadow:0 4px 11px -9px rgba(20,70,140,.5);text-align:left}
.photo-icon{display:flex;width:36px;height:36px;flex:0 0 36px;align-items:center;justify-content:center;border-radius:10.5px;background:#edf3fb}
.camera-icon{position:relative;width:18px;height:14px;border:1.5px solid #1463bc;border-radius:3px}
.camera-icon::before{content:"";position:absolute;left:3.5px;top:-5px;width:7.5px;height:4px;border:1.5px solid #1463bc;border-bottom:0;border-radius:2px 2px 0 0}
.camera-icon::after{content:"";position:absolute;left:4px;top:2px;width:6px;height:6px;border:1px solid #1463bc;border-radius:50%}
.photo-copy{display:flex;min-width:0;flex:1;flex-direction:column}
.photo-copy b{color:#17263e;font-size:14.5px;font-weight:700;line-height:1.35}
.photo-copy span{margin-top:2px;color:#637087;font-size:12px;font-weight:500;line-height:1.35}
.photo-full{border-style:solid;border-color:#1868c6}
.photo-full .photo-icon{background:linear-gradient(135deg,#1868c6,#2ec6dd)}
.photo-full .camera-icon,.photo-full .camera-icon::before,.photo-full .camera-icon::after{border-color:#fff}

/* ---------- 择偶排序 ---------- */
.rank{display:flex;flex-direction:column;gap:9px;margin-top:12px}
.rank-item{position:relative;display:flex;align-items:center;gap:10px;padding:9.5px 8px 9.5px 10px;border:.5px solid rgba(255,255,255,.9);border-radius:10px;background:rgba(255,255,255,.66);color:#17263e;font-size:12.5px;font-weight:700;box-shadow:0 4px 11px -9px rgba(20,70,140,.5);transition:transform .16s ease;user-select:none;-webkit-user-select:none}
.rank-item.moving{z-index:2;background:#f4f9ff;box-shadow:0 5px 12px -6px rgba(20,80,160,.5);transition:none}
.rk-no{display:flex;width:25px;height:25px;flex:0 0 25px;align-items:center;justify-content:center;border-radius:7px;background:#1868c6;color:#fff;font-size:12.5px;font-weight:800}
.rk-t{flex:1;min-width:0}
.rk-move{display:flex;width:26px;height:25px;flex:0 0 26px;align-items:center;justify-content:center;padding:0;border:0;border-radius:8px;background:transparent;color:#7f94ad;font-size:12px}
.rk-move:disabled{opacity:.25;cursor:default}
.rk-move:not(:disabled):hover{background:#eaf2fd;color:#1463bc}
.drag-handle{display:flex;width:32px;height:25px;flex:0 0 32px;align-items:center;justify-content:center;color:#7f94ad;font-size:18px;line-height:1;cursor:grab;touch-action:none}
.rank-item.moving .drag-handle{cursor:grabbing}
.textarea-wrap{position:relative}
.ta-count{position:absolute;right:13px;bottom:10px;color:#637087;font-size:11px;font-weight:700;pointer-events:none}

/* ---------- 同意与提交 ---------- */
.lock-icon{display:inline-block;margin-top:1px;font-style:normal}
.consent-panel{margin-top:20px;padding:14px;border:.5px solid rgba(255,255,255,.92);border-radius:16px;background:rgba(255,255,255,.7);box-shadow:0 7px 17px -10px rgba(20,70,140,.45)}
.consent-title{display:flex;align-items:center;gap:7px;color:#17263e;font-size:13.5px;font-weight:700}
.shield-icon{display:flex;width:16px;height:18px;align-items:center;justify-content:center;border:1px solid #1868c6;border-radius:6px 6px 8px 8px;color:#1868c6;font-size:9px}
.consent{display:flex;align-items:flex-start;gap:9px;margin-top:10px;color:#637087;font-size:12px;line-height:1.7;cursor:pointer}
.cbx{display:flex;width:19px;height:19px;flex:0 0 19px;align-items:center;justify-content:center;margin-top:1px;padding:0;border:1.5px solid #b9c7da;border-radius:6px;background:#fff;color:#fff;font-size:12.5px;font-weight:800;line-height:1}
.consent.on .cbx{border-color:#1868c6;background:#1868c6}
.consent-copy{flex:1}
.doc-link{padding:0;border:0;background:none;color:#1463bc;font-weight:700}
.doc-strong{color:#17263e;font-weight:700}
.primary{display:flex;width:100%;height:55px;align-items:center;justify-content:center;margin:26px 0 0;padding:0;border:0;border-radius:22px;background:linear-gradient(140deg,#1463bc 0,#1868c6 52%,#2ec6dd 135%);color:#fff;font-size:15.5px;font-weight:700;line-height:1.4;box-shadow:0 16px 30px -14px rgba(20,99,188,.7),inset 0 1px 0 rgba(255,255,255,.3);transition:transform .16s ease,box-shadow .2s ease;text-decoration:none}
.primary:active{transform:translateY(1px) scale(.985)}
.primary:disabled{opacity:.45;box-shadow:none;cursor:default}
.gate-hint{margin-top:8px;color:#637087;font-size:12px;text-align:center}
.hp{position:absolute;left:-9999px;top:auto;width:1px;height:1px;overflow:hidden}

/* ---------- 第 1 步的两张图 ---------- */
.s1-viz{position:relative;display:block;width:100%;height:236px;margin-top:26px;padding:0;border:0;background:none}
.sv-panel{position:absolute;inset:0 0 20px;display:flex;flex-direction:column;opacity:0;pointer-events:none;transition:opacity .8s ease}
.sv-panel.show{opacity:1}
.sv-cap{margin-bottom:10px;color:#637087;font-size:11.5px;font-weight:800;letter-spacing:1px;text-align:center}
.sv-bars{display:flex;flex:1;align-items:flex-end;gap:2px;max-height:150px;padding:0 8px}
.bar{position:relative;min-width:3px;flex:1;border-radius:3px 3px 0 0;background:linear-gradient(180deg,#5d97dc,#1868c6);opacity:.45}
.bar.med{background:linear-gradient(180deg,#23b7d3,#1fa8c4);opacity:1}
.bar.mean{background:#1463bc;opacity:.95}
.bar b{position:absolute;top:-16px;left:50%;transform:translateX(-50%);color:#1463bc;font-size:9.5px;font-weight:800}
.bar.med b{color:#1fa8c4}
.sv-axis{display:flex;justify-content:space-between;padding:6px 8px 0;color:#93a3b8;font-size:10px;font-weight:700}
.sv-cloud{display:flex;flex:1;flex-wrap:wrap;align-content:center;justify-content:center;gap:5px 10px;padding:0 6px}
.wc{font-weight:700;line-height:1}
.wc.s1{font-size:10.5px;opacity:.5}.wc.s2{font-size:12.5px;opacity:.68}.wc.s3{font-size:15.5px;opacity:.85}.wc.s4{font-size:20px;font-weight:800}
.wc.c1{color:#1463bc}.wc.c2{color:#169db5}.wc.c3{color:#637087}.wc.c4{color:#1868c6}
.wc.r1{transform:rotate(-4deg)}.wc.r2{transform:rotate(3deg)}
.sv-dots{position:absolute;right:0;bottom:0;left:0;display:flex;justify-content:center;gap:6px}
.sv-dots i{width:6px;height:6px;border-radius:50%;background:#c9d6e6;transition:all .3s}
.sv-dots i.on{width:16px;border-radius:6px;background:#1868c6}

/* ---------- 进场动画 ---------- */
.motion-in .top,.motion-in .title,.motion-in .subtitle,.motion-in .field,.motion-in>.primary{animation:signup-enter .42s ease both}
.motion-in .title{animation-delay:.04s}.motion-in .subtitle{animation-delay:.08s}
.motion-in .field:nth-of-type(1){animation-delay:.1s}.motion-in .field:nth-of-type(2){animation-delay:.14s}.motion-in .field:nth-of-type(3){animation-delay:.18s}.motion-in .field:nth-of-type(4){animation-delay:.22s}.motion-in .field:nth-of-type(5){animation-delay:.26s}
@keyframes signup-enter{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}
@media (prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}}

/* ---------- 报名说明 ---------- */
.eyebrow{display:inline-flex;align-items:center;gap:7px;margin-top:10px;padding:6px 12px;border:.5px solid rgba(212,231,250,.95);border-radius:20px;background:rgba(255,255,255,.72);color:#1463bc;font-size:11.5px;font-weight:800;letter-spacing:.5px}
.eyebrow i{display:inline-block;width:6px;height:6px;border-radius:50%;background:#2ec6dd}
.intro-title{margin:14px 0 0;font-family:Georgia,"Songti SC",serif;font-size:29px;font-weight:700;line-height:1.32;letter-spacing:-.5px}
.lead{margin:14px 0 0;color:#637087;font-size:15px;line-height:1.78}
.road{margin-top:22px}
.road-item{display:flex;align-items:flex-start;gap:14px}
.road-number{display:flex;align-items:center;justify-content:center;width:34px;height:34px;flex:0 0 auto;border-radius:50%;background:#eaf3ff;color:#1463bc;font-size:15px;font-weight:800}
.road-item.active .road-number{background:linear-gradient(135deg,#1463bc,#2e86d6);color:#fff;box-shadow:0 8px 18px -8px rgba(20,99,188,.7)}
.road-copy{padding-top:6px}
.road-copy b{display:block;color:#637087;font-size:15.5px;font-weight:700;line-height:1.4}
.road-item.active .road-copy b{color:#17263e}
.road-copy span{display:block;margin-top:3px;color:#637087;font-size:12.5px;line-height:1.5}
.line{width:2px;height:22px;margin:2px 0 2px 16px;border-radius:2px;background:#d8e7f9}
.privacy{margin-top:18px;padding:14px;background:linear-gradient(180deg,rgba(255,255,255,.95),rgba(246,250,255,.92));border:.5px solid #e2eaf4;border-radius:18px;box-shadow:0 6px 16px -12px rgba(20,70,140,.4)}
.privacy-title{display:flex;align-items:center;gap:8px;font-size:14px;font-weight:800}
.privacy-title i{display:flex;align-items:center;justify-content:center;width:16px;height:16px;border:1.5px solid #1463bc;border-radius:50%;color:#1463bc;font-size:10px;font-style:normal;line-height:1}
.privacy-copy{margin-top:7px;color:#637087;font-size:12.5px;line-height:1.62}
.intro-photo{position:relative;margin:10px -24px -46px}
.intro-photo::after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,#f6faff 0,rgba(246,250,255,.45) 28%,rgba(246,250,255,.05) 58%,rgba(250,252,255,.45) 100%);pointer-events:none}
.intro-photo img{display:block;width:100%;height:auto;opacity:.72}
.view-intro>*{animation:signup-enter .46s ease both}

/* ---------- 完成页 / 回访页 ---------- */
.badge{display:flex;width:72px;height:72px;align-items:center;justify-content:center;margin:30px auto 18px;border-radius:50%;background:linear-gradient(135deg,#1463bc,#2ec6dd);box-shadow:0 16px 30px -12px rgba(20,99,188,.6)}
.checkmark{width:29px;height:15px;border-bottom:3px solid #fff;border-left:3px solid #fff;transform:translateY(-3.5px) rotate(-45deg)}
.done-title{margin:0;font-size:29px;font-weight:700;line-height:1.32;letter-spacing:-.3px}
.view-done .lead{max-width:300px;margin-left:auto;margin-right:auto}
.roadmap{margin:24px auto 0;text-align:left}
.row{display:flex;align-items:flex-start;gap:14px}
.row-number{display:flex;width:34px;height:34px;flex:0 0 34px;align-items:center;justify-content:center;border-radius:50%;background:#eaf2fd;color:#1463bc;font-size:15px;font-weight:800}
.done-row .row-number{background:linear-gradient(135deg,#1463bc,#2ec6dd);color:#fff}
.row.active .row-number{background:linear-gradient(135deg,#1463bc,#2e86d6);color:#fff;box-shadow:0 8px 18px -8px rgba(20,99,188,.7)}
.row-title{color:#17263e;font-size:15.5px;font-weight:700;line-height:1.35}
.pending .row-title{color:#637087}
.row-copy{margin-top:3px;color:#637087;font-size:12.5px;font-weight:500;line-height:1.5}
.roadmap .line{height:18px;border-radius:0}
.status{max-width:320px;margin:18px auto 0;padding:14px;border:.5px solid #e2eaf4;border-radius:18px;background:linear-gradient(180deg,rgba(255,255,255,.95),rgba(246,250,255,.92));box-shadow:0 8px 22px -14px rgba(20,80,160,.34);color:#637087;font-size:12.5px;line-height:1.62}
.status b{color:#17263e;font-weight:700}
.status b.status-value{color:#1463bc}
.tip{margin-top:20px;color:#637087;font-size:14px;font-weight:500;line-height:1.6}
.qr{margin-top:22px;padding-top:14px}
.qr img{display:block;width:168px;height:168px;margin:0 auto}
.qr-loading{display:flex;width:168px;height:168px;margin:0 auto;align-items:center;justify-content:center;border-radius:12px;background:#f3f7fc;color:#637087;font-size:12px;font-weight:500}
.qr-caption{margin-top:12px;color:#17263e;font-size:13px;font-weight:600;line-height:1.5}
.qr-caption b{color:#1463bc;font-weight:700}
.qr-foot{margin-top:7px;color:#637087;font-size:11.5px;font-weight:500;line-height:1.5}
.qr-steps{max-width:300px;margin:12px auto 0;padding:10px 14px;border-radius:12px;background:#eef5fd;color:#4a5a70;font-size:12px;line-height:1.7;text-align:left}
.qr-steps b{color:#1463bc}
.ghost{display:flex;width:100%;height:54px;align-items:center;justify-content:center;margin:22px 0 0;padding:0;border:.5px solid #e2eaf4;border-radius:22px;background:#fff;color:#17263e;font-size:16.5px;font-weight:700;line-height:1.4;box-shadow:0 8px 22px -14px rgba(20,80,160,.34);text-decoration:none}

/* ---------- 底部弹层（城市 / 照片 / 协议） ---------- */
.sheet{position:fixed;inset:0;z-index:60;visibility:hidden;pointer-events:none}
.sheet.open{visibility:visible;pointer-events:auto}
.sheet-backdrop{position:absolute;inset:0;background:rgba(15,30,55,0);transition:background .28s}
.sheet.open .sheet-backdrop{background:rgba(15,30,55,.42)}
.sheet-panel{position:absolute;right:0;bottom:0;left:0;display:flex;width:100%;max-width:480px;margin:0 auto;flex-direction:column;padding:6px 18px calc(26px + env(safe-area-inset-bottom));border-radius:26px 26px 0 0;background:rgba(255,255,255,.96);box-shadow:0 -20px 60px -24px rgba(15,50,110,.42);transform:translateY(100%);transition:transform .3s cubic-bezier(.2,.8,.2,1)}
.sheet.open .sheet-panel{transform:none}
.sheet-grab{width:40px;height:4px;margin:8px auto 4px;border-radius:4px;background:#dbe4ef}
.sheet-head{display:flex;align-items:center;justify-content:space-between;padding:8px 2px 14px;color:#17263e;font-size:16px;font-weight:700}
.sheet-close{display:flex;flex:0 0 32px;align-items:center;justify-content:center;width:32px;height:32px;padding:0;border:0;border-radius:50%;background:#edf3fb;color:#637087;font-size:21px;font-weight:300;line-height:1}
.city-sheet .sheet-panel{height:74vh}
.city-list{flex:1;min-height:0;overflow-y:auto;-webkit-overflow-scrolling:touch}
.city-opt{display:flex;width:100%;align-items:center;margin:0;padding:14px 16px;border:0;border-bottom:.5px solid rgba(226,234,244,.9);background:transparent;color:#17263e;font-size:15px;font-weight:600;text-align:left;line-height:1.4}
.city-opt.chosen{color:#1463bc;background:#f3f8ff}
.city-fill-mark{margin-left:7px;padding:2px 7px;border-radius:8px;background:#edf3fb;color:#637087;font-size:11px;font-weight:700;white-space:nowrap}
.photo-sheet .sheet-panel{max-height:88vh;overflow-y:auto}
.photo-slot-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.photo-slot{position:relative;display:flex;width:100%;aspect-ratio:1;align-items:center;justify-content:center;margin:0;padding:0;overflow:hidden;border:1px dashed #c7dbf3;border-radius:16px;background:#edf4fd;color:#1463bc}
.photo-slot.filled{border-style:solid;border-color:#1868c6;background:linear-gradient(135deg,#1868c6,#2ec6dd)}
.photo-slot img{width:100%;height:100%;object-fit:cover}
.photo-slot-empty{display:flex;align-items:center;flex-direction:column;gap:4px}
.photo-slot-empty b{font-size:28px;font-weight:300;line-height:1}
.photo-slot-empty span{font-size:12px;font-weight:700}
.photo-slot-remove{position:absolute;top:6px;right:6px;display:flex;width:26px;height:26px;align-items:center;justify-content:center;padding:0;border:0;border-radius:50%;background:rgba(0,0,0,.45);color:#fff;font-size:15px;line-height:1}
.photo-sheet-count{margin:14px 0 3px;color:#637087;font-size:12px;font-weight:700;text-align:center}
.photo-sheet-count b{color:#1463bc;font-size:14px}
.photo-sheet-hint{margin-bottom:14px;color:#637087;font-size:11.5px;font-weight:500;text-align:center}
.photo-demo{padding-top:14px;border-top:.5px solid #dfe8f3}
.photo-demo-title{margin-bottom:10px;color:#17263e;font-size:13px;font-weight:800}
.photo-demo-row{display:flex;gap:10px}
.photo-demo-card{flex:1;min-width:0}
.photo-demo-card img{display:block;width:100%;height:auto;aspect-ratio:3/4;border-radius:14px;object-fit:cover;box-shadow:0 10px 22px -12px rgba(23,38,62,.35)}
.photo-demo-card span{display:block;margin-top:7px;color:#1463bc;font-size:10px;font-weight:800;text-align:center}
.photo-sheet-bad{margin-top:10px;padding:9px 11px;border:.5px solid #fad9d2;border-radius:11px;background:#fff4f2;color:#637087;font-size:11.5px;font-weight:600;line-height:1.55}
.photo-sheet-bad b{color:#d9573e;font-weight:700}
.sheet-done{display:flex;width:100%;height:44px;align-items:center;justify-content:center;margin:12px 0 0;padding:0;border:0;border-radius:12px;background:#1868c6;color:#fff;font-size:14.5px;font-weight:700;line-height:1}
.doc-sheet .sheet-panel{height:92vh;background:#fff}
.doc-scroll{flex:1;min-height:0;overflow-y:auto;-webkit-overflow-scrolling:touch}
.doc-h1{margin:4px 0 8px;color:#17263e;font-size:16.5px;font-weight:800;line-height:1.5}
.doc-h2{margin:15px 0 6px;color:#1463bc;font-size:14px;font-weight:800;line-height:1.5}
.doc-h3{margin:10px 0 5px;color:#17263e;font-size:13px;font-weight:700;line-height:1.5}
.doc-p{margin:0 0 7px;color:#4a5a70;font-size:12.5px;line-height:1.75}
.doc-li{margin:0 0 5px;padding-left:7px;color:#4a5a70;font-size:12.5px;line-height:1.7}
.doc-hr{height:.5px;margin:12px 0;background:#e2e9f2}

/* ---------- 提示与遮罩 ---------- */
.toast{position:fixed;left:50%;top:42%;z-index:100;max-width:80vw;padding:11px 16px;border-radius:10px;background:rgba(23,38,62,.88);color:#fff;font-size:13.5px;line-height:1.5;text-align:center;transform:translate(-50%,-50%);opacity:0;pointer-events:none;transition:opacity .2s}
.toast.show{opacity:1}
.loading-mask{position:fixed;inset:0;z-index:90;display:flex;align-items:center;justify-content:center;background:rgba(255,255,255,.35)}
.loading-box{padding:18px 26px;border-radius:12px;background:rgba(23,38,62,.88);color:#fff;font-size:14px}

/* 合作方独立首页：沿用小程序的手机卡片、品牌顶栏和行动按钮。 */
.partner-home{background:linear-gradient(180deg,#e6f0fa 0,#fff7f2 100%);padding-top:max(32px,env(safe-area-inset-top));padding-bottom:48px}
.partner-brand{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-bottom:48px}
.partner-brand img{width:116px;height:52px;object-fit:contain}
.partner-brand>span{font-size:12px;color:#6b6872}
.partner-eyebrow{font-size:13px;color:#1e3a8a;line-height:1.6}
.partner-home h1{margin:16px 0;font-size:29px;line-height:1.5;letter-spacing:0;color:#0d1b33}
.partner-coupon{padding:28px 24px;background:#fff;border:1px solid #e6f0fa;border-radius:24px;text-align:center}
.partner-pill{display:inline-block;padding:6px 12px;border-radius:24px;background:#e6f0fa;color:#1e3a8a;font-size:12px}
.partner-amount{color:#1e3a8a;font-size:72px;font-weight:700;line-height:1.3;margin-top:16px}
.partner-amount>span{font-size:28px;margin-right:6px}
.partner-coupon h2{font-size:20px;color:#0d1b33;margin:8px 0 12px}.partner-coupon p{font-size:13px;line-height:1.7;color:#6b6872;margin:8px 0}
.partner-divider{border-top:1px dashed #d7e2f0;margin:24px -8px 16px}
.partner-home .primary{width:100%;height:52px;background:#1e3a8a;border-radius:16px;margin-top:24px;font-size:16px}
.partner-home .primary:disabled{opacity:.55;cursor:wait}
.partner-note{text-align:center;font-size:12px;line-height:1.7;color:#6b6872;min-height:21px;margin:12px 0}
.partner-note[role=alert]{color:#a32938}
.partner-text-button{display:block;width:100%;padding:12px;background:transparent;border:0;color:#1e3a8a;font-size:14px}
.partner-rules{margin-top:24px;font-size:12px;line-height:1.8;color:#6b6872}.partner-rules summary{cursor:pointer}.partner-rules p{white-space:pre-line}
.partner-code span{overflow-wrap:anywhere;font-family:monospace;font-size:11px}
.partner-footer{display:block;text-align:center;margin-top:32px;color:#6b6872;font-size:12px;text-decoration:none}
@media(max-width:359px){.partner-home h1{font-size:25px}.partner-brand{margin-bottom:32px}}

/* 合作领券后的 Gathr 首页：以小程序首页为结构与交互参考。 */
.partner-note:empty{display:none}
.partner-home h1{margin-bottom:32px}
.signup-home{padding-top:calc(20px + env(safe-area-inset-top));padding-bottom:calc(48px + env(safe-area-inset-bottom));background:radial-gradient(115% 60% at 6% 0,#e3eeff 0,transparent 58%),radial-gradient(95% 58% at 98% 5%,#d9f3fa 0,transparent 54%),linear-gradient(180deg,#f4f9ff,#fafcff);color:#17263e}
.signup-home-back{display:inline-block;margin-bottom:24px;font-size:12px;color:#637087;text-decoration:none}
.signup-home-brand{display:flex;align-items:center;justify-content:space-between;gap:16px}.signup-home-brand img{display:block;width:132px;height:45px;object-fit:contain}.signup-home-brand>span{color:#637087;font-size:12px;letter-spacing:3px;white-space:nowrap}
.signup-home-hero{font-size:25px;line-height:1.65;font-weight:700;margin:32px 0 20px;letter-spacing:0}.signup-home-hero>span{color:#1463bc}
.signup-home-checks{display:grid;gap:10px}.signup-home-checks p{display:flex;align-items:center;gap:10px;margin:0;padding:12px;border:1px solid #fff;border-radius:14px;background:#ffffffb3;font-size:13px;line-height:1.55;font-weight:600}.signup-home-checks p>span{display:grid;place-items:center;flex:0 0 23px;height:23px;border-radius:50%;background:#1868c6;color:#fff}
.signup-home .primary{height:49px;border-radius:22px;margin-top:24px}.signup-home-meta{margin:12px 0 0;text-align:center;font-size:12px;color:#637087}
.signup-home-stats{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;margin:28px 0}.signup-home-stats>div{text-align:center;min-width:0}.signup-home-stats>div+div{border-left:1px solid #d8e3ef}.signup-home-stats dt{font-size:23px;color:#1463bc;font-weight:700}.signup-home-stats dd{font-size:10px;line-height:1.6;color:#637087;margin:8px 0 0}
.signup-home-photo{margin:0 0 28px}.signup-home-photo>img{display:block;width:100%;height:auto;border-radius:18px}.signup-home-photo figcaption{text-align:center;margin-top:16px;font-size:15px;font-weight:600;line-height:1.8}.signup-home-photo figcaption>span{color:#1463bc}
.signup-home-scope{padding:20px 16px;border:1px solid #fff;border-radius:20px;background:#ffffffb8}.signup-home-kicker{display:inline-block;margin:0;padding:6px 12px;background:#e6f0fa;border-radius:20px;color:#1463bc;font-size:11px;font-weight:600}
.signup-home h2{font-size:21px;line-height:1.5;margin:20px 0}.signup-home h2 span{color:#1463bc}.signup-home-scope article{display:flex;gap:12px;padding:16px 0;border-top:1px solid #e2eaf4}.signup-home-icon{flex:0 0 20px;color:#1463bc;font-size:20px}.signup-home-scope h3{font-size:14px;line-height:1.6;margin:0 0 6px}.signup-home-scope article p{font-size:12px;line-height:1.8;color:#637087;margin:0}.signup-home-footnote{font-size:11px;color:#637087;text-align:center;line-height:1.8;margin:12px 0 0}
.signup-home-process{margin-top:32px}.signup-home-process ol{list-style:none;counter-reset:home-step;padding:0;margin:0;display:grid;gap:16px}.signup-home-process li{position:relative;counter-increment:home-step;padding-left:38px;min-height:36px}.signup-home-process li:before{content:counter(home-step);position:absolute;left:0;top:0;display:grid;place-items:center;width:26px;height:26px;color:#1463bc;background:#e6f0fa;border-radius:50%;font-size:13px;font-weight:600}.signup-home-process b,.signup-home-process li>span{display:block}.signup-home-process b{font-size:14px;line-height:1.6}.signup-home-process li>span{font-size:12px;color:#637087;line-height:1.8;margin-top:4px}
.signup-home-checklist{margin-top:32px}.signup-home-checklist>button{position:relative;display:block;width:100%;padding:20px 48px 20px 20px;text-align:left;border:1px solid #fff;border-radius:20px;background:#ffffffc9}.signup-home-list-head{display:flex;align-items:center;gap:12px}.signup-home-list-head b{font-size:17px}.signup-home-list-head>span{padding:4px 10px;border-radius:16px;background:#1868c6;color:#fff;font-size:11px}.signup-home-list-copy{display:block;font-size:12px;color:#637087;line-height:1.8;margin-top:8px}.signup-home-list-arrow{position:absolute;right:18px;top:50%;transform:translateY(-50%);font-size:36px;color:#1463bc}
.signup-home-progress{display:flex;align-items:center;gap:12px;margin-top:12px;font-size:11px;color:#637087}.signup-home-progress progress{display:block;appearance:none;width:100%;height:5px;border:0;border-radius:3px;background:#d8e3ef;overflow:hidden}.signup-home-progress progress::-webkit-progress-bar{background:#d8e3ef}.signup-home-progress progress::-webkit-progress-value{background:#1868c6}.signup-home-progress progress::-moz-progress-bar{background:#1868c6}
.signup-home-direct{display:block;width:100%;border:0;background:transparent;color:#637087;font-size:13px;padding:16px;margin-top:12px}.signup-home-contact-copy{text-align:center;font-size:13px;color:#637087;margin:16px 0}
@media(max-width:359px){.signup-home-hero{font-size:22px}.signup-home-checks p{font-size:12px}.signup-home-brand>span{font-size:11px;letter-spacing:2px}.signup-home-stats dt{font-size:21px}}
