*{box-sizing:border-box}body{margin:0;background:#faf9f6;color:#29243b;font:16px/1.6 "Microsoft JhengHei",system-ui,sans-serif}header{height:74px;padding:0 5%;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid #eae6f1;background:#fffaf9}.brand{font-size:23px;font-weight:850;color:#4d398d;text-decoration:none;letter-spacing:1px}.brand span{font-size:14px;letter-spacing:0;margin-left:8px}.badge{background:#ece7ff;border-radius:30px;font-size:11px;padding:6px 10px;color:#624899}main{max-width:850px;margin:auto;padding:22px 22px 170px}.steps{display:flex;gap:9px;font-size:12px;color:#8f889c;margin:5px 0 30px}.steps span{flex:1;border-top:3px solid #e3dfeb;padding-top:9px}.steps .active{border-color:#7958b4;color:#604491;font-weight:700}.eyebrow{font-size:10px;letter-spacing:2px;color:#8d71b4;font-weight:800}h1{font-size:clamp(25px,6vw,37px);line-height:1.35;letter-spacing:-.7px;margin:8px 0 10px}.sub{color:#81778c;font-size:14px;margin:0 0 24px}label{font-size:13px;font-weight:700;display:block}.chips{display:flex;gap:8px;overflow:auto;padding:9px 0 17px;scrollbar-width:none}button,select{font:inherit}button{cursor:pointer;min-height:44px;border:0}button:disabled{opacity:.45;cursor:default}.chips button{white-space:nowrap;padding:7px 17px;background:white;border:1px solid #e3dbea;border-radius:25px;font-size:13px;color:#796c89}.chips .selected{background:#7252a7;color:white;border-color:#7252a7}.mode{display:flex;gap:8px;margin:0 0 14px}.mode button{flex:1;padding:12px;border-radius:14px;background:#f0edf6;color:#6b5a86;font-weight:700;font-size:15px}.mode .selected{background:#7252a7;color:#fff}.filters{display:flex;gap:12px;background:#f0edf6;padding:13px;border-radius:16px}.filters label{flex:1;color:#786a8c}select{display:block;width:100%;border:0;border-radius:10px;padding:10px;background:white;color:#382d4d;margin-top:5px;min-height:44px}.gallery-title{display:flex;justify-content:space-between;align-items:center;margin-top:18px}.gallery-title h2{font-size:16px}.gallery-title span{font-size:12px;color:#8f849b}.gallery{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:15px}.card{position:relative;text-align:left;background:white;padding:0;border-radius:17px;overflow:hidden;border:2px solid transparent;box-shadow:0 5px 20px #40345308;transition:transform .15s}.card img{width:100%;aspect-ratio:2/3;object-fit:cover;display:block}.card strong{display:block;padding:10px;font-size:13px;font-weight:650;line-height:1.4}.card.selected{border-color:#8659c8;box-shadow:0 0 0 2px #e3d7f4}.card.selected:after{content:'✓';position:absolute;top:8px;right:8px;background:#7652ab;color:white;border-radius:50%;width:27px;height:27px;text-align:center}.selection{display:flex;gap:17px;align-items:center;background:#eee9f6;padding:13px;border-radius:18px}.selection img{width:74px;height:98px;object-fit:cover;border-radius:9px}.selection p{margin:5px 0;color:#7f708e;font-size:12px}.text{background:transparent;color:#7455a3;font-size:14px;padding:7px 0;text-decoration:underline}.upload-zone{margin-top:22px;min-height:240px;border:2px dashed #c5b7d9;border-radius:23px;background:#f5f1fb;display:flex;align-items:center;justify-content:center;text-align:center;overflow:hidden;cursor:pointer}.upload-zone b{display:block;font-size:44px;color:#a58ac7;font-weight:300}.upload-zone small{display:block;font-weight:400;color:#9788a6;margin-top:8px}.upload-zone img{max-height:360px;max-width:100%;object-fit:contain}.note{font-size:12px;color:#8d8297;margin-top:20px}.result-image{display:block;max-width:100%;max-height:65vh;margin:0 auto 18px;border-radius:18px}.wait{text-align:center;padding:55px 20px;background:#f0eafa;border-radius:25px}.wait h2{font-size:18px}.wait p{color:#867295;font-size:13px}.orb{width:76px;height:76px;margin:0 auto 25px;border:5px solid #e0d3f0;border-top-color:#9371c2;border-radius:50%;animation:spin 1.4s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.receipt{background:#eee8f8;padding:15px;border-radius:15px;margin:15px 0;font-size:16px}.secondary{width:100%;background:#e8ddf5;border-radius:14px;color:#5e4083;margin-bottom:12px;font-weight:700;padding:12px}footer{position:fixed;bottom:0;left:0;right:0;background:#fffefbeF;backdrop-filter:blur(15px);padding:10px max(22px,calc((100vw - 806px)/2)) calc(18px + env(safe-area-inset-bottom));box-shadow:0 -5px 30px #392d5510}#summary{font-size:12px;color:#887891;text-align:center;margin-bottom:8px}#primary{width:100%;background:#7250a6;color:white;border-radius:16px;min-height:55px;font-weight:700;padding:10px 18px;display:flex;justify-content:center;gap:20px}#error,#demo{padding:13px;border-radius:12px;background:#fff0e3;color:#80562c;margin-bottom:15px;font-size:14px}[hidden]{display:none!important}button:focus-visible,a:focus-visible,select:focus-visible{outline:3px solid #b9a1e0;outline-offset:3px}@media(max-width:560px){header{padding:0 18px}.gallery{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}main{padding-left:18px;padding-right:18px}.badge{font-size:10px}.brand{font-size:21px}}@media(prefers-reduced-motion:reduce){.orb{animation:none}}
.host{text-align:center;padding:45px 20px}.host .qr{background:white;border-radius:20px;padding:12px;max-width:90vw;height:auto}.host a{color:#7250a6}
.likeness-review{background:#f0eafa;border:1px solid #d6c7e8;border-radius:18px;padding:18px;margin-bottom:24px}.likeness-review h2{font-size:24px;margin:0 0 8px}.likeness-review p{font-size:16px;margin:0 0 16px;color:#655373}.likeness-pictures{display:grid;grid-template-columns:1fr 1fr;gap:12px}.likeness-pictures figure{margin:0;min-width:0}.likeness-pictures figcaption{font-size:17px;font-weight:700;margin-bottom:8px}.likeness-pictures img{width:100%;height:260px;object-fit:contain;border-radius:12px;background:white}.likeness-confirm{display:flex;gap:10px;align-items:center;font-size:18px;line-height:1.4;margin:6px 0 12px;min-height:44px;color:#382547;cursor:pointer}.likeness-confirm input{width:24px;height:24px;flex-shrink:0;accent-color:#7250a6}#rejectLikeness{font-size:17px;margin-top:12px}@media(max-width:560px){.likeness-pictures img{height:195px}.likeness-review{padding:14px}.likeness-review h2{font-size:23px}.likeness-review p{font-size:15px}}

.wait .wait-countdown{font-size:48px;line-height:1.2;font-weight:750;font-variant-numeric:tabular-nums;color:#7250a6;margin:18px 0 10px;letter-spacing:2px}

.photo-guide{display:flex;gap:16px;align-items:center;margin-top:18px;padding:16px;border:1px solid #ddd0ee;border-radius:18px;background:#fff}.photo-guide svg{width:78px;max-height:145px;flex-shrink:0}.photo-guide strong{font-size:17px;color:#604491}.photo-guide p{font-size:14px;margin:7px 0}.photo-guide small{font-size:12px;color:#81778c}

.footer-feedback{background:#fff0f0;border:2px solid #b9434d;border-radius:14px;padding:10px 14px;margin-bottom:10px;color:#842530}.footer-feedback strong{display:block;font-size:20px;line-height:1.3}.footer-feedback p{font-size:17px;line-height:1.45;font-weight:650;margin:5px 0 0}.footer-feedback.attention{animation:feedback-pop .4s ease-out}#primary.needs-photo{background:#a83949;opacity:1;font-size:18px}.has-feedback main{padding-bottom:310px}@keyframes feedback-pop{0%{transform:translateY(8px);box-shadow:0 0 0 5px #b9434d30}100%{transform:translateY(0);box-shadow:none}}@media(prefers-reduced-motion:reduce){.footer-feedback.attention{animation:none}}
.wait-steps{list-style:none;padding:0;margin:14px auto 0;display:grid;gap:4px;max-width:240px;text-align:left;font-size:14px;color:#a79bb6}.wait-steps .done{color:#7252a7}.wait-steps .now{color:#29243b;font-weight:700}
.mode a{flex:1;padding:12px;border-radius:14px;background:#f0edf6;color:#6b5a86;font-weight:700;font-size:15px;text-align:center;text-decoration:none;display:flex;align-items:center;justify-content:center;min-height:44px}
.confirm-mask{position:fixed;inset:0;z-index:60;background:#29243b99;display:flex;align-items:center;justify-content:center;padding:22px}.confirm-card{background:#fff;border-radius:20px;max-width:420px;width:100%;padding:22px 20px 18px;box-shadow:0 20px 60px #29243b40;text-align:center}.confirm-card .confirm-icon{font-size:40px;margin:0;line-height:1.2}.confirm-card h2{font-size:21px;margin:6px 0 10px;color:#80562c}.confirm-card p{margin:0 0 10px;font-size:18px;font-weight:700;color:#29243b;line-height:1.55}.confirm-card small{display:block;color:#8d8297;font-size:13px;margin-bottom:16px}.confirm-actions{display:flex;gap:10px}.confirm-actions button{flex:1;margin:0;border-radius:14px;min-height:52px;font-weight:700}.confirm-actions .confirm-yes{flex:1.7;background:#7250a6;color:#fff;padding:10px 8px}
.buy h2{font-size:17px;margin:0 0 8px}.buy-options{display:flex;gap:10px}.buy-opt{flex:1;display:flex;flex-direction:column;align-items:center;gap:2px;padding:12px 8px;border-radius:14px;background:#fff;border:2px solid #ddd2ee;color:#4d398d;min-height:92px}.buy-opt b{font-size:16px}.buy-opt small{font-size:12px;color:#8d8297}.buy-opt span{font-size:15px;font-weight:800;color:#80562c}.buy-opt.on{border-color:#7250a6;background:#f3edfc;box-shadow:0 0 0 2px #e3d7f4}
.buy-options{align-items:stretch}.buy-opt{flex:1;min-height:84px}.buy-opt.gold{flex:1.8;min-height:108px;border:3px solid #d4a72c;background:linear-gradient(180deg,#fffaf0,#fff0c9);color:#5c4210;box-shadow:inset 0 0 0 2px #f6e3a1}.buy-opt.gold b{font-size:18px}.buy-opt.gold span{font-size:17px;color:#9a3412}.buy-opt.gold.on{border-color:#b8860b;background:linear-gradient(180deg,#fff7df,#ffe6a3);box-shadow:inset 0 0 0 2px #f6e3a1,0 0 0 3px #f1d27a}
