:root{--paper:#f7f7f2;--ink:#252c28;--green:#24483d;--soft:#e7eee8;--muted:#6c756e;--line:#e2e6df;--white:#fff;--amber:#796044;font-family:"PingFang SC","Noto Sans CJK SC","Microsoft YaHei",sans-serif;color:var(--ink);background:#edf0e9;font-synthesis:none}
*{box-sizing:border-box}body{margin:0}button,a,input{-webkit-tap-highlight-color:transparent}button{font:inherit;cursor:pointer}button:disabled{cursor:default}a{color:inherit;text-decoration:none}button:focus-visible,a:focus-visible{outline:3px solid #84a792;outline-offset:4px}[hidden]{display:none!important}.icon-library{position:absolute;width:0;height:0;overflow:hidden}.icon{width:22px;height:22px;fill:none;stroke:currentColor;stroke-width:1.65;stroke-linecap:round;stroke-linejoin:round;flex-shrink:0}h1,h2,p{margin:0}.app-shell{max-width:480px;min-height:100dvh;margin:auto;background:var(--paper);position:relative;padding-bottom:calc(138px + env(safe-area-inset-bottom))}.nav{height:78px;padding:22px 24px 12px;display:flex;align-items:center;justify-content:space-between}.brand{display:flex;align-items:center;gap:8px;font-size:19px;letter-spacing:.5px;font-weight:650}.brand-mark{width:31px;height:31px;background:var(--green);color:#fff;display:grid;place-items:center;border-radius:9px}.brand-mark .icon{width:22px;height:22px}.nav-right{display:flex;gap:12px;align-items:center}.icon-button{display:grid;place-items:center;width:34px;height:34px;background:none;border:0;padding:4px;color:var(--muted)}.wechat-capsule{width:81px;height:30px;display:flex;align-items:center;justify-content:space-evenly;border:1px solid #d5dad2;border-radius:20px;background:#ffffff60}.wechat-capsule span{font-size:15px;letter-spacing:1px;line-height:1;position:relative;top:-2px}.wechat-capsule i{height:16px;width:1px;background:#d5dad2}.wechat-capsule b{width:13px;height:13px;border:1.8px solid var(--ink);border-radius:50%;position:relative}.wechat-capsule b:after{content:"";position:absolute;inset:3px;background:var(--ink);border-radius:50%}main{padding:0 24px}.intro{padding:27px 0 27px}.eyebrow{display:flex;gap:7px;align-items:center;color:#577463;font-size:12px;letter-spacing:.5px}.eyebrow i{width:5px;height:5px;border-radius:50%;background:#658d73}h1{font-size:36px;line-height:1.32;letter-spacing:-1px;font-weight:600;margin:14px 0 11px}h2{font-size:16px;font-weight:600}.intro p,.subtitle{color:var(--muted);font-size:14px;line-height:1.7}.upload-panel{background:var(--white);padding:19px;border-radius:23px;border:1px solid #e9ece5}.panel-heading{display:flex;align-items:center;justify-content:space-between;margin-bottom:17px}.panel-heading>span{font-family:"Avenir Next","PingFang SC",sans-serif;font-size:12px;color:#5d7063;background:#eef3ed;padding:5px 10px;border-radius:12px;font-weight:500;letter-spacing:1px}.upload-zone{width:100%;min-height:209px;background:#f4f7f2;border:1px dashed #c2d1c3;border-radius:16px;padding:23px 12px;display:flex;flex-direction:column;align-items:center;justify-content:center;color:var(--green)}.upload-zone:hover{background:#eef4ec}.upload-zone strong{font-size:17px;font-weight:600;margin-top:20px}.upload-zone>span:last-child{font-size:12px;color:#78897a;margin-top:7px}.upload-illustration{width:95px;height:78px;position:relative;display:block;margin-top:3px}.back-print{position:absolute;width:70px;height:62px;left:7px;top:0;border-radius:9px;background:#dde8dc;border:1px solid #c5d5c6;transform:rotate(-13deg)}.front-print{position:absolute;width:73px;height:62px;left:15px;top:10px;display:grid;place-items:center;background:#fff;border:1px solid #bdd0be;border-radius:9px;transform:rotate(5deg);box-shadow:0 6px 15px #2d4b2f09}.picture-icon{width:40px;height:40px;fill:none;stroke:#829a86;stroke-width:1.15;stroke-linecap:round;stroke-linejoin:round}.plus-dot{position:absolute;right:-13px;bottom:-9px;width:31px;height:31px;background:var(--green);color:#fff;border-radius:50%;border:3px solid #f4f7f2;display:grid;place-items:center}.plus-dot .icon{width:16px;height:16px;stroke-width:2}.file-note{font-size:10px;line-height:1.6;color:#869087;margin-top:15px;text-align:center}.scope-line{display:flex;justify-content:center;align-items:center;gap:15px;margin:19px 0 25px;color:#788478;font-size:11px}.scope-line i{width:3px;height:3px;border-radius:50%;background:#bdc8b9}.sample-entry{width:100%;display:flex;align-items:center;gap:13px;padding:15px 0;border:0;border-top:1px solid var(--line);background:none;text-align:left}.sample-entry>span:nth-child(2){flex:1}.sample-entry strong{font-size:13px;font-weight:500;display:block;color:#4b5d50}.sample-entry small{font-size:10px;color:#8a9389;display:block;margin-top:5px}.sample-entry>.icon{width:18px;color:#859483}.sample-stack{width:70px;height:47px;position:relative;flex-shrink:0}.sample-stack img{position:absolute;width:35px;height:43px;object-fit:cover;border:2px solid var(--paper);border-radius:5px;top:2px;box-shadow:0 2px 6px #1120110a}.sample-stack img:nth-child(1){left:0;transform:rotate(-9deg)}.sample-stack img:nth-child(2){left:19px;top:-1px}.sample-stack img:nth-child(3){left:37px;transform:rotate(9deg)}.action-dock{position:fixed;bottom:0;width:100%;max-width:480px;padding:17px 24px calc(15px + env(safe-area-inset-bottom));background:#f7f7f2f5;border-top:1px solid #e8eae3;z-index:10;backdrop-filter:blur(16px)}.primary{background:var(--green);color:#fff;border:0;border-radius:15px;min-height:53px;width:100%;padding:15px 20px;display:flex;justify-content:center;align-items:center;gap:10px;font-size:15px;font-weight:500}.primary:disabled{background:#dfe6da;color:#879381}.primary:not(:disabled):hover{background:#183b30}.primary>.icon{width:20px;height:20px}.action-dock p{color:#8b9589;font-size:10px;line-height:1.6;text-align:center;margin-top:10px}.selected-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:9px}.selected-photo{position:relative;aspect-ratio:1;overflow:hidden;border-radius:11px;background:#edf2e9}.selected-photo img{width:100%;height:100%;object-fit:cover;display:block}.remove{position:absolute;top:5px;right:5px;background:#162d23b0;color:#fff;border:0;width:26px;height:26px;border-radius:50%;display:grid;place-items:center}.remove .icon{width:15px;height:15px;stroke-width:2}.add-more{min-height:85px;aspect-ratio:1;border:1px dashed #bccdbc;background:#f4f7f2;color:#618069;border-radius:11px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:7px;font-size:11px}.add-more .icon{width:28px;height:28px;stroke-width:1.5}.error,.partial-error{border:1px solid #e2cbb2;color:#795d3f;background:#fbf3e9;padding:13px;border-radius:12px;font-size:12px;line-height:1.7;margin-top:16px}.processing-view{padding-top:36px}.processing-view h1{font-size:36px}.processing-art{height:291px;position:relative;display:grid;place-items:center;margin:22px 0}.processing-print{position:relative;width:190px;height:231px;padding:9px 9px 27px;background:#fff;border:1px solid #d5dfd0;border-radius:12px;transform:rotate(-7deg);overflow:hidden;box-shadow:0 20px 48px #32553813;z-index:2}.processing-print img{width:100%;height:100%;object-fit:cover;border-radius:5px;filter:blur(1.5px);opacity:.9}.scan-light{position:absolute;left:9px;right:9px;height:40px;top:0;background:linear-gradient(transparent,#effffab0,transparent);animation:scan 3s ease-in-out infinite}.orbit{position:absolute;width:267px;height:267px;border:1px solid #dbe5d6;border-radius:50%;transform:rotate(22deg)}.orbit:after{content:"";position:absolute;inset:20px;border:1px dashed #dbe5d6;border-radius:50%}.processing-seal{position:absolute;right:40px;bottom:23px;width:50px;height:50px;display:grid;place-items:center;background:var(--green);color:#fff;border:5px solid var(--paper);border-radius:50%;z-index:3}.indeterminate{height:4px;background:#e4eadf;border-radius:5px;overflow:hidden;width:190px;margin:8px auto 23px}.indeterminate span{display:block;width:40%;height:100%;background:#6f9579;border-radius:5px;animation:progress 2s ease-in-out infinite}.processing-message{font-size:13px;color:#51634f;text-align:center;line-height:1.7}.stay-note{font-size:11px;color:#899283;text-align:center;margin-top:8px}.spinner{width:17px;height:17px;border:2px solid #87938155;border-top-color:#74896b;border-radius:50%;animation:spin 1s linear infinite}.result-intro{padding:25px 0 21px}.result-intro h1{font-size:30px;margin:12px 0 8px}.result-strip{display:flex;gap:9px;overflow-x:auto;padding:3px 1px 12px;margin-bottom:8px;scrollbar-width:none}.result-thumb{width:56px;height:64px;flex-shrink:0;background:#e7eee0;border:2px solid transparent;border-radius:10px;padding:2px}.result-thumb img{width:100%;height:100%;object-fit:cover;border-radius:6px}.result-thumb[aria-pressed=true]{border-color:var(--green);background:#fff}.finished-photo{position:relative;background:#e8ece4;border:1px solid #e1e6da;border-radius:16px;overflow:hidden;min-height:200px;display:grid;place-items:center}.finished-photo>img{width:100%;max-height:470px;object-fit:contain;display:block}.recommended-tag{position:absolute;top:12px;left:12px;display:flex;align-items:center;gap:5px;border:1px solid #ffffff70;border-radius:22px;padding:5px 10px;background:#ffffffec;color:var(--green);font-size:10px}.recommended-tag .icon{width:14px;height:14px;stroke-width:2}.result-meta{display:flex;justify-content:space-between;font-size:10px;color:#899183;margin-top:12px;font-family:"Avenir Next","PingFang SC",sans-serif}.result-warning{font-size:11px;line-height:1.7;color:#816b4f;background:#eee8da;border-radius:9px;margin-top:12px;padding:10px}.partial-error button{display:block;color:var(--amber);background:none;border:0;border-bottom:1px solid #b9a081;padding:4px 0;margin-top:5px;font-size:12px}.restart{margin:25px 0 0;background:none;border:0;color:#617b66;display:flex;align-items:center;justify-content:center;width:100%;gap:8px;padding:10px;font-size:12px}.restart .icon{width:16px;height:16px}.save-row{display:grid;grid-template-columns:1fr 1.65fr;gap:10px}.secondary{background:#edf1e7;border:1px solid #d9e1d1;color:var(--green);border-radius:15px;padding:12px;font-size:14px}.secondary:disabled{opacity:.5}.toast{position:fixed;bottom:150px;left:50%;transform:translateX(-50%);background:#223b2fe8;color:#fff;border-radius:12px;padding:12px 18px;max-width:340px;width:max-content;font-size:12px;line-height:1.6;z-index:30}dialog{width:calc(100% - 40px);max-width:390px;border:1px solid var(--line);border-radius:20px;background:var(--paper);padding:24px;color:var(--ink)}dialog::backdrop{background:#17261d70}.dialog-heading{display:flex;align-items:center;justify-content:space-between;margin-bottom:14px}dialog p{font-size:13px;line-height:1.9;color:var(--muted);margin-top:12px}@keyframes spin{to{transform:rotate(360deg)}}@keyframes progress{0%{transform:translateX(-100%)}100%{transform:translateX(350%)}}@keyframes scan{0%,100%{transform:translateY(0)}50%{transform:translateY(185px)}}@media(min-width:600px){.app-shell{margin:24px auto;min-height:calc(100dvh - 48px);border:1px solid #dee5d6;border-radius:30px 30px 0 0;box-shadow:0 20px 80px #22432e09}.action-dock{width:calc(480px - 2px)}}@media(max-width:360px){.nav{padding-left:19px;padding-right:19px}main{padding:0 19px}h1{font-size:32px}.intro{padding-top:18px}.upload-panel{padding:16px}.upload-zone{min-height:189px}.action-dock{padding-left:19px;padding-right:19px}.scope-line{gap:12px}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;scroll-behavior:auto!important}}
/* Keep the initial upload flow above the dock on common 390px phone screens. */
@media(min-width:361px) and (max-width:599px){.intro{padding-top:21px;padding-bottom:22px}.intro h1{font-size:34px;line-height:1.3}.upload-zone{min-height:190px}.scope-line{margin-top:17px;margin-bottom:20px}.sample-entry{padding-top:12px;padding-bottom:12px}}
.my-results{display:flex;align-items:center;gap:12px;border:1px solid #dce5d5;background:#edf3e7;border-radius:15px;padding:11px 13px;margin-top:15px;color:var(--green);min-height:64px}.my-results-cover{position:relative;width:39px;height:43px;display:grid;place-items:center;flex-shrink:0;background:#dfe9d8;border:2px solid #fff;border-radius:6px;overflow:hidden;transform:rotate(-4deg)}.my-results-cover>img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}.my-results-cover>.icon{width:23px;height:23px;color:#839b7a}.my-results-text{flex:1;min-width:0}.my-results-text strong{font-size:13px;display:block;font-weight:550}.my-results-text small{font-size:10px;display:block;color:#819277;margin-top:4px}.my-results>.icon{width:18px;height:18px;color:#6c8864}.has-delivery .scope-line{margin-bottom:8px}
