:root{
  --page:#f8f2e9;--surface:#fffaf3;--surface2:#fdf3ed;--wine:#8f1722;--wine2:#bb3140;
  --text:#272325;--muted:#757070;--gold:#d9b779;--border:#eadfd3;--green:#49ad73;--danger:#df4a5b;
  --display:"Songti SC","STSong","Noto Serif SC",serif;
  --ui:"PingFang SC","Microsoft YaHei","Noto Sans SC",sans-serif;
}
*{box-sizing:border-box}html{background:#eee8df}body{margin:0;font-family:var(--ui);color:var(--text);background:#eee8df}a{color:inherit;text-decoration:none}button{font:inherit}
.shell{width:min(100%,430px);margin:auto;min-height:100vh;background:
  radial-gradient(circle at 8% 10%,rgba(228,195,137,.12),transparent 24%),
  radial-gradient(circle at 92% 22%,rgba(228,195,137,.10),transparent 22%),
  linear-gradient(180deg,#fbf7f0 0%,#f8f2e9 54%,#fbf7f0 100%);position:relative;overflow:hidden}
.topbar{height:46px;display:flex;align-items:center;position:relative;padding:0 22px}.back{position:absolute;left:22px;top:13px;width:19px;height:19px}.back img{width:100%;height:100%}.brand{display:flex;align-items:center;gap:6px;font-weight:800;letter-spacing:-1px}.brand img{width:25px;height:25px}.brand span{font-size:20px}
.stepper{padding:1px 52px 7px;display:grid;grid-template-columns:repeat(3,1fr);position:relative}.stepper:before{content:"";position:absolute;height:1px;background:#c1bdbb;left:88px;right:88px;top:14px}.step{position:relative;text-align:center;color:#7d7775;font-size:11px;z-index:1}.step .n{margin:auto;width:25px;height:25px;border:1px solid #bbb5b1;background:#fff;border-radius:50%;display:grid;place-items:center;font-size:13px}.step.active{color:#1d1a19;font-weight:700}.step.active .n{background:var(--wine2);color:#fff;border-color:var(--wine2)}.step>div:last-child{margin-top:2px}
.page-title{text-align:center;padding:0 28px 10px;position:relative}.page-title h1{font-family:var(--display);color:var(--wine);font-size:30px;line-height:1.14;margin:5px 0 4px;font-weight:700;letter-spacing:-1.2px}.page-title .sub{font-family:var(--display);color:#9a6046;font-size:17px;line-height:1.35}.page-title .tip{color:#7c7b7b;font-size:10px;margin-top:5px}
.card{background:rgba(255,252,247,.94);border:1px solid var(--border);border-radius:18px;box-shadow:0 6px 18px rgba(120,70,50,.05)}
.footer{text-align:center;color:#8e8176;font-size:10px}.footer span+span:before{content:"|";margin:0 9px;color:#cabdaf}

/* upload page */
.page-upload .topbar{justify-content:flex-start;padding-left:85px;height:42px}.page-upload .stepper{padding-bottom:5px}.page-upload .page-title{padding-top:5px;padding-bottom:9px}.page-upload .page-title:before,.page-upload .page-title:after{content:"";position:absolute;border:1px solid rgba(218,183,121,.35);width:120px;height:62px;border-radius:50%;top:10px;z-index:0}.page-upload .page-title:before{left:18px;transform:rotate(-18deg)}.page-upload .page-title:after{right:10px;transform:rotate(16deg)}.page-upload .page-title>*{position:relative;z-index:1}
.upload-grid{display:grid;grid-template-columns:1fr 1fr;gap:9px;padding:5px 52px 3px}.upload-card{overflow:hidden;position:relative;border:1.4px solid #e6d7c8;border-radius:14px;background:#fff;padding:0;min-width:0;box-shadow:0 3px 10px rgba(88,57,40,.03)}.upload-card img.photo{display:block;width:100%;aspect-ratio:1/1;object-fit:cover}.upload-label{text-align:center;padding:6px 4px 8px;background:linear-gradient(#fffdf9,#fbf5eb)}.upload-label b{display:block;font-size:13px}.upload-label small{display:block;color:#7d8388;margin-top:2px;font-size:9px}.remove{position:absolute;right:5px;top:5px;width:19px;height:19px}.empty-photo{aspect-ratio:1/1;display:grid;place-items:center;color:#201f1f;border-bottom:1px dashed #e8c5c5;background:#fffaf7}.empty-photo img{width:30px}
.alt-upload{text-align:center;padding:8px 10px 2px;color:#bf3f4d;font-weight:700}.alt-upload .line{display:flex;justify-content:center;align-items:center;gap:6px;font-size:13px}.alt-upload .line img{width:18px}.alt-upload small{display:block;color:#737983;font-weight:400;margin-top:3px;font-size:9px}
.photo-req{padding:5px 52px 0}.photo-req h3{font-size:13px;margin:2px 0 7px}.examples{display:grid;grid-template-columns:repeat(4,1fr);gap:8px}.ex{text-align:center;font-size:9px;color:#5d6570;position:relative}.ex .thumb{position:relative;border-radius:9px;overflow:hidden;background:#ece7e0;aspect-ratio:1}.ex .thumb img{width:100%;height:100%;object-fit:cover}.badge-check,.badge-x{position:absolute!important;right:2px!important;bottom:2px!important;width:18px!important;height:18px!important;float:none!important;margin:0!important;filter:none!important}.ex>span{display:block;margin-top:3px;white-space:nowrap}
.primary-cta{margin:10px 48px 5px;border:0;border-radius:999px;background:linear-gradient(110deg,#c83c48,#8e1721);color:#fff;width:calc(100% - 96px);height:61px;padding:7px 16px 9px;box-shadow:0 8px 18px rgba(137,23,33,.18)}.primary-cta .hint{font-size:9px;opacity:.95}.primary-cta .main{font-size:18px;font-weight:700;margin-top:1px;display:flex;align-items:center;justify-content:center;gap:8px}.primary-cta img{width:17px;filter:brightness(0) invert(1)}
.privacy{text-align:center;color:#7c7e80;font-size:9px;padding:3px 20px 8px;display:flex;justify-content:center;align-items:center;gap:5px}.privacy img{width:12px}.page-upload .footer{padding:11px 10px 9px}.page-upload .shell{min-height:764px}

/* unlock page */
.page-unlock .topbar{justify-content:center;height:40px}.page-unlock .brand img{width:23px;height:23px}.page-unlock .brand span{font-size:18px}.page-unlock .back{left:30px;top:12px;width:17px;height:17px}.page-unlock .stepper{padding:0 87px 5px}.page-unlock .stepper:before{left:110px;right:110px;top:12px}.page-unlock .step .n{width:22px;height:22px;font-size:11px}.page-unlock .step{font-size:9px}.page-unlock .page-title{padding:0 26px 5px}.page-unlock .page-title h1{font-size:29px;margin:2px 0 1px}.page-unlock .page-title .sub{font-size:15px}.mode-switch{display:none}
.hero-wrap{padding:0 54px}.hero-card{position:relative;border-radius:14px;overflow:hidden;border:1px solid #ead8ca;background:#fff}.hero-card.separate{height:106px;display:grid;grid-template-columns:1fr 64px 1fr;gap:6px;padding:6px}.hero-photo{position:relative;overflow:hidden;border-radius:10px;background:#efe8df}.hero-photo img{width:100%;height:100%;object-fit:cover;display:block}.hero-photo .tag{position:absolute;bottom:4px;left:50%;transform:translateX(-50%);background:#fff2d8;border-radius:999px;padding:2px 13px;font-weight:700;font-size:9px}.score-lock{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:1px;color:var(--wine);position:relative;z-index:3}.score-lock img{width:19px}.score-lock strong{font-family:var(--display);font-size:29px;line-height:1}.score-lock small{font-size:7px;white-space:nowrap;color:#b43a40}.hero-card.couple{height:151px}.hero-card.couple>img{width:100%;height:100%;object-fit:cover}.hero-card.couple:after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,transparent 52%,rgba(55,30,20,.12))}.hero-card.couple .score-lock{position:absolute;left:50%;bottom:7px;transform:translateX(-50%);background:rgba(255,246,232,.89);border-radius:15px;padding:4px 10px;backdrop-filter:blur(4px)}.person-tag{position:absolute;bottom:25px;background:#fff1d8;border-radius:999px;padding:2px 11px;font-weight:700;font-size:9px;z-index:3}.person-tag.you{left:17%}.person-tag.ta{right:17%}
.pillars{margin:5px 20px 0;display:grid;grid-template-columns:repeat(3,1fr);gap:5px}.pillar{padding:7px 7px;border-radius:12px;background:#fffaf5;border:1px solid var(--border);min-height:48px;display:grid;grid-template-columns:24px 1fr;grid-template-rows:auto 1fr;column-gap:6px}.pillar img{width:22px;height:22px;color:var(--wine2);grid-row:1/3}.pillar b{display:block;color:var(--wine);font-size:11px;margin:0}.pillar p{font-size:7.6px;line-height:1.35;color:#555;margin:2px 0 0}
.price-card{margin:6px 20px 8px;padding:8px 10px 7px;background:linear-gradient(135deg,#fff7f3,#fbece8);border:1px solid #efcfc9;border-radius:14px;text-align:center}.price-top{display:flex;align-items:center;justify-content:center;gap:7px;flex-wrap:nowrap}.tag-sale{background:#d64b59;color:#fff;border-radius:6px;padding:3px 6px;font-size:8px}.price{font-size:11px;color:var(--wine)}.price strong{font-size:31px}.orig{color:#818386;font-size:9px;text-decoration:line-through}.count{font-size:8.5px;color:#6e6969;margin:0 0 5px}.count .box{background:#d83f54;color:white;border-radius:4px;padding:2px 5px;margin:0 1px}.pay-btn{border:0;width:100%;background:linear-gradient(110deg,#c83c49,#8b1721);color:#fff;border-radius:999px;padding:8px;font-weight:700;font-size:13px}.trust{display:grid;grid-template-columns:repeat(3,1fr);gap:3px;margin-top:5px;color:#686b6d;font-size:6.8px}.trust span{display:flex;align-items:center;justify-content:center;gap:3px}.trust img{width:11px;height:11px}
.detail-title{font-family:var(--display);font-size:19px;color:var(--wine);text-align:center;margin:10px 0 5px}.detail-title:before,.detail-title:after{content:"";display:inline-block;width:42px;height:1px;background:#d89c98;vertical-align:middle;margin:0 8px}
.detail-section{padding:9px 20px 3px;scroll-margin-top:8px}.detail-head{text-align:center;margin-bottom:6px}.detail-no{font-family:var(--display);color:var(--wine);font-size:31px;font-style:italic;line-height:1}.detail-head h2{font-family:var(--display);color:var(--wine);font-size:21px;line-height:1.2;margin:1px 0 0}.detail-head p{font-family:var(--display);color:#9a5e42;font-size:12px;margin:3px 0}.detail-hero{width:100%;height:154px;object-fit:cover;border-radius:14px;border:1px solid #ead8ca;box-shadow:0 4px 12px rgba(110,64,40,.06)}
.feature-list{display:grid;gap:6px;margin-top:7px}.feature-row{display:grid;grid-template-columns:34px 1fr 88px;gap:7px;align-items:center;background:#fffaf5;border:1px solid var(--border);border-radius:13px;padding:7px}.feature-icon{width:31px;height:31px;background:#f9e5e1;border-radius:50%;display:grid;place-items:center;color:var(--wine2);font-weight:700}.feature-icon img{width:18px}.feature-copy h3{margin:0 0 3px;color:var(--wine);font-family:var(--display);font-size:15px}.feature-copy ul{padding:0;margin:0;list-style:none;color:#4a4b4d;font-size:8.5px;line-height:1.55}.feature-copy li:before{content:"✓";display:inline-grid;place-items:center;width:10px;height:10px;background:var(--wine2);color:#fff;border-radius:50%;font-size:6px;margin-right:4px}.feature-row .mini{width:88px;height:66px;border-radius:9px;object-fit:cover}.unlock-note{margin:8px 0 0;padding:8px 9px;background:#fff0e9;border:1px solid #efd6ce;border-radius:12px;color:var(--wine);font-family:var(--display);font-size:12px;text-align:center}.unlock-note small{font-family:var(--ui);color:#7d6d65;display:block;font-size:8px;margin-top:2px}
.proof{margin:8px 20px;padding:9px;border-radius:13px;background:#fffaf5;border:1px solid var(--border)}.proof h3{text-align:center;margin:0 0 6px;font-size:10px}.proof h3 strong{color:var(--wine);font-size:20px}.reviews{display:grid;grid-template-columns:repeat(3,1fr);gap:5px}.review{padding:6px;border:1px solid #eadfd3;border-radius:9px;font-size:7px;line-height:1.35;color:#57585a}.review b{display:block;text-align:center;color:#777;margin-top:2px}
.support{margin:0 20px 58px;padding:8px 9px;border-radius:13px;background:#fffaf5;border:1px solid var(--border);display:grid;grid-template-columns:30px 1fr auto;align-items:center;gap:7px}.support img{width:24px}.support b{font-size:9px}.support small{display:block;color:#777;font-size:7px}.support .more{font-size:14px;color:#777}
.sticky{position:fixed;bottom:0;left:50%;transform:translateX(-50%);width:min(100%,430px);background:rgba(255,255,255,.97);border-top:1px solid #eee4dc;padding:6px 12px;display:grid;grid-template-columns:auto 1fr;gap:8px;align-items:center;z-index:50;backdrop-filter:blur(8px)}.sticky .money{color:var(--wine);font-weight:800;font-size:18px;white-space:nowrap}.sticky .money del{color:#929292;font-size:9px;font-weight:400;margin-left:4px}.sticky button{border:0;border-radius:999px;background:linear-gradient(110deg,#c83c49,#8b1721);color:#fff;padding:9px 8px;font-size:11px;font-weight:700}
@media (max-width:390px){.upload-grid{padding-left:34px;padding-right:34px}.photo-req{padding-left:34px;padding-right:34px}.primary-cta{margin-left:34px;margin-right:34px;width:calc(100% - 68px)}.hero-wrap{padding-left:42px;padding-right:42px}.page-unlock .page-title h1{font-size:27px}.pillar p{font-size:7px}.feature-row{grid-template-columns:30px 1fr 78px}.feature-row .mini{width:78px}}
/* R2 upload vertical calibration against approved 941x1672 reference, normalized to 430x764 */
.page-upload .page-title{padding-top:19px}
.page-upload .alt-upload{padding-top:11px;padding-bottom:4px}
.page-upload .photo-req{padding-top:8px}
.page-upload .primary-cta{margin-top:15px}
.page-upload .privacy{padding-top:6px;padding-bottom:10px}
.page-upload .footer{padding-top:18px;padding-bottom:10px}
/* R2 unlock/detail calibration against approved references */
.page-unlock .topbar{height:30px}
.page-unlock .brand img{width:20px;height:20px}.page-unlock .brand span{font-size:17px}
.page-unlock .back{left:32px;top:7px;width:15px;height:15px}
.page-unlock .stepper{padding:0 87px 3px}.page-unlock .stepper:before{left:108px;right:108px;top:9px}
.page-unlock .step .n{width:19px;height:19px;font-size:9px}.page-unlock .step{font-size:8px}.page-unlock .step>div:last-child{margin-top:1px}
.page-unlock .page-title{padding:0 26px 4px}.page-unlock .page-title h1{font-size:28px;margin:2px 0 1px}.page-unlock .page-title .sub{font-size:14px}
.page-unlock .detail-section{padding:7px 12px 3px}
.page-unlock .detail-head{display:grid;grid-template-columns:auto 1fr;grid-template-rows:auto auto;column-gap:9px;align-items:center;text-align:left;margin:0 30px 7px}
.page-unlock .detail-no{grid-row:1/3;font-size:38px;line-height:.95}
.page-unlock .detail-head h2{font-size:24px;line-height:1.13;margin:0}
.page-unlock .detail-head p{font-size:13px;margin:2px 0 0;grid-column:2}
.page-unlock .detail-hero{height:182px;border-radius:13px}
.page-unlock .feature-list{gap:6px;margin-top:7px}
.page-unlock .feature-row{grid-template-columns:38px 1fr 112px;gap:8px;min-height:92px;border-radius:13px;padding:7px 8px}
.page-unlock .feature-icon{width:34px;height:34px}.page-unlock .feature-icon img{width:19px}
.page-unlock .feature-copy h3{font-size:17px;margin-bottom:4px}.page-unlock .feature-copy ul{font-size:9.6px;line-height:1.55}
.page-unlock .feature-copy li:before{width:11px;height:11px;font-size:7px;margin-right:5px}
.page-unlock .feature-row .mini{width:112px;height:78px;border-radius:9px}
.page-unlock .unlock-note{margin-top:7px;padding:9px;font-size:13px}.page-unlock .unlock-note small{font-size:8px}
.validation-detail .detail-section{padding-top:5px}
/* R2 final vertical tightening for unlock first section */
.page-unlock .topbar{height:25px}
.page-unlock .back{top:5px}.page-unlock .brand img{width:19px;height:19px}.page-unlock .brand span{font-size:16px}
.page-unlock .stepper{padding-bottom:1px}.page-unlock .step{font-size:7.5px}
.page-unlock .page-title{padding-bottom:10px}.page-unlock .page-title h1{font-size:27px}.page-unlock .page-title .sub{font-size:13.5px}
.page-unlock .price-card{margin-top:4px;margin-bottom:4px;padding-top:6px;padding-bottom:5px}
.page-unlock .pay-btn{padding:7px}.page-unlock .trust{margin-top:4px}.page-unlock .detail-title{margin-top:6px;margin-bottom:3px}
/* R2 detail-heading lock: number + first title line centered as in approved standalone demos */
.page-unlock .detail-head{display:block;text-align:center;margin:0 16px 7px}
.page-unlock .detail-no{display:inline;font-size:38px;line-height:1;margin-right:8px;vertical-align:baseline}
.page-unlock .detail-head h2{display:inline;font-size:23px;line-height:1.16;margin:0}
.page-unlock .detail-head p{display:block;font-size:13px;margin:4px 0 0}
