:root{--pink:#ec80a4;--deep:#614154;--muted:#a18a99;--line:#f1e2e8;--paper:#fffafc;--sans:"Microsoft YaHei","PingFang SC",system-ui,sans-serif}*{box-sizing:border-box}body{margin:0;background:#f6eef3;color:var(--deep);font-family:var(--sans);font-size:14px}button,a,input,textarea,label{touch-action:manipulation}button,input,textarea{font:inherit}button{cursor:pointer}button:disabled{opacity:.55;cursor:wait}button:focus-visible,a:focus-visible,summary:focus-visible,input:focus-visible{outline:3px solid #b5cde2;outline-offset:3px}a{color:inherit}button{border:0}img{max-width:100%}[hidden]{display:none!important}.phone-shell{width:min(100%,440px);min-height:100dvh;background:var(--paper);margin:0 auto;position:relative;box-shadow:0 15px 90px #ac739629;padding-bottom:96px}.app-header{display:flex;align-items:center;gap:12px;padding:20px 22px 15px;background:#fffafcee;min-height:76px}.wordmark{display:flex;align-items:center;gap:7px;text-decoration:none;font-size:22px;font-weight:900;color:#b56c8e;letter-spacing:1px}.wordmark>img{width:28px;height:30px;object-fit:contain}.wordmark>span{font-size:11px;letter-spacing:2px;color:#b297a7;border-left:1px solid var(--line);padding-left:9px;margin-left:4px}.account-dot{margin-left:auto;width:34px;height:34px;border-radius:50%;border:1px solid #efdce5;background:white;color:#c97e9e;font-size:23px}.account-dot.connected{background:#f9dfec}.icon-button{background:none;font-size:32px;color:var(--deep);padding:0 7px 0 0}main{padding:0 23px}h1,h2,p{margin:0}h1{font-size:30px;line-height:1.4;letter-spacing:-.8px}h2{font-size:16px}.home-intro{position:relative;padding:17px 0 18px}.mini-kicker{display:block;font-size:11px;color:#b97e98;letter-spacing:1.5px;margin-bottom:9px}.home-intro h1{font-size:35px}.home-intro p,.page-heading p{color:var(--muted);font-size:13px;line-height:1.8;margin-top:8px}.home-mascot{position:absolute;width:105px;height:106px;object-fit:contain;right:-2px;bottom:10px;filter:drop-shadow(0 7px 8px #d7a7c329);pointer-events:none}.hero-photo{position:relative;height:274px;border-radius:26px 26px 8px 26px;overflow:visible;margin:0 0 22px}.hero-photo>img:first-child{width:100%;height:100%;object-fit:cover;object-position:50% 37%;border-radius:inherit}.photo-badge{position:absolute;bottom:14px;left:13px;padding:8px 11px;background:#fff9;backdrop-filter:blur(10px);border-radius:20px;font-size:11px;font-weight:700}.hero-photo .photo-bow{position:absolute;right:-10px;top:-15px;width:60px;transform:rotate(12deg);pointer-events:none}.primary{width:100%;min-height:51px;border-radius:16px;padding:14px 18px;background:linear-gradient(120deg,#ee98b3,#e978a1);color:#fff;display:flex;align-items:center;justify-content:center;gap:16px;font-weight:700;font-size:15px;box-shadow:0 7px 14px #ec86aa22}.primary>span{font-size:20px}.text-button{background:none;color:#b3809a;padding:9px 4px;font-size:12px;line-height:1.5}.demo-link{display:block;margin:5px auto 22px}.section-title{display:flex;justify-content:space-between;align-items:center;gap:8px;margin:5px 0 13px}.section-title h2{font-size:16px}.section-title>span{font-size:10px;color:var(--muted)}.style-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:9px}.style-card{padding:0;background:none;text-align:left;color:var(--deep);min-width:0}.style-card img{width:100%;aspect-ratio:3/4;object-fit:cover;border-radius:13px}.style-card b{display:block;font-size:10px;margin:7px 0 2px;white-space:nowrap}.style-card small{font-size:9px;color:var(--muted)}.quiet-note{color:var(--muted);font-size:10px;line-height:1.7;margin-top:12px}.bottom-nav{position:fixed;bottom:0;width:min(100%,440px);background:#fffbfded;backdrop-filter:blur(14px);border-top:1px solid #f2e5ed;display:flex;justify-content:space-around;padding:9px 0 max(12px,env(safe-area-inset-bottom));z-index:10}.bottom-nav button{background:none;color:#bca7b5;font-size:10px;width:90px;display:grid;gap:2px}.bottom-nav button span{font-size:23px;line-height:1.2}.bottom-nav button.active{color:#c57b9c}.steps{display:flex;align-items:center;gap:9px;color:#c3adbb;font-size:10px;padding:10px 0 25px}.steps>i{height:1px;background:#eee0e8;flex:1}.steps .active{color:#d580a5;font-weight:700}.page-heading{margin:7px 0 21px}.main-uploads{display:grid;grid-template-columns:1fr 1fr;gap:12px}.main-uploads h2{font-size:13px;margin-bottom:10px}.main-uploads em{font-style:normal;font-size:9px;font-weight:400;color:#bb8b9e;margin-left:3px}.photo-upload{height:195px;position:relative;display:flex;flex-direction:column;align-items:center;justify-content:center;border:1.5px dashed #ecc9d9;border-radius:20px;background:linear-gradient(135deg,#fff7fa,#f9f2f9);cursor:pointer;gap:10px;overflow:hidden}.photo-upload>span{font-size:29px;color:#d893b0;font-weight:200}.photo-upload>b{font-size:12px}.photo-upload>small{font-size:9px;color:var(--muted);padding:0 8px;text-align:center}.photo-upload>img{position:absolute;inset:0;object-fit:cover;width:100%;height:100%;border-radius:18px}.photo-upload.has-photo::after{content:'点击换一张';position:absolute;bottom:0;left:0;width:100%;text-align:center;padding:8px;background:#fff9;color:#84677c;font-size:10px}.remove{display:block;margin:0 auto}.source-rule{font-size:10px;background:#f8ecf3;color:#aa7893;border-radius:12px;padding:13px 10px;margin:17px 0}.advanced-upload,.extra-options{border:1px solid var(--line);border-radius:18px;background:white;margin:20px 0;padding:16px}.advanced-upload summary,.extra-options summary{list-style:none;cursor:pointer;font-size:12px;font-weight:700;display:flex;justify-content:space-between}.advanced-upload p{font-size:11px;line-height:1.7;color:var(--muted);margin:13px 0}.source-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}.source-mini{position:relative;border:1px solid var(--line);border-radius:12px;padding:9px;min-width:0}.source-mini>label{display:grid;place-items:center;gap:4px;min-height:77px;cursor:pointer;font-size:11px;text-align:center}.source-mini img{width:100%;height:53px;object-fit:cover;border-radius:7px}.source-mini .text-button{font-size:9px;display:block;margin:auto;padding:6px 0 0}.consent{display:flex;align-items:start;gap:8px;font-size:10px;line-height:1.8;color:var(--muted);margin:20px 0 13px;cursor:pointer}.consent input{accent-color:var(--pink);margin:3px 0;min-width:14px}.status-box{padding:12px;background:#f9edf4;border:1px solid #efdae5;border-radius:12px;font-size:12px;line-height:1.8;color:#a26f8a;margin:12px 0;overflow-wrap:anywhere}#skip-analysis{display:block;margin:8px auto}.analysis-summary{border-radius:17px;background:linear-gradient(115deg,#f6e9f2,#edf1fb);padding:15px;font-size:12px;line-height:1.7}.analysis-summary b{font-size:13px}.analysis-summary p{font-size:11px;color:#977d91;margin-top:6px}.choice-toolbar{display:flex;align-items:center;gap:8px;margin:16px 0}.choice-toolbar #reanalyze{margin-left:auto}.soft-button{background:#f6e9f1;color:#b17b98;border:1px solid #efdce7;border-radius:11px;padding:9px 13px;font-size:12px}.target-list{display:grid;gap:11px}.target-card{border:1px solid var(--line);background:white;border-radius:18px;overflow:hidden;transition:border-color .15s}.target-card.selected{border-color:#edb8cf}.target-head{display:flex;align-items:center;gap:12px;padding:14px}.target-toggle{background:none;display:flex;gap:12px;align-items:center;text-align:left;color:var(--deep);flex:1;min-width:0;padding:0}.check-mark{width:22px;height:22px;border-radius:50%;border:1px solid #e6d9e0;display:grid;place-items:center;color:transparent;font-size:13px;flex-shrink:0}.selected .check-mark{background:#e997b6;border-color:#e997b6;color:white}.target-icon{font-size:22px;color:#c797b3;width:24px;text-align:center}.target-copy{min-width:0}.target-copy b{font-size:14px}.target-copy small{display:block;white-space:normal;font-size:10px;color:var(--muted);margin-top:4px;line-height:1.55}.target-expand{width:38px;height:38px;border-radius:12px;background:#faf0f6;color:#b47b99;font-size:17px}.target-detail{padding:0 16px 17px;border-top:1px dashed #f1e3eb}.target-description{font-size:11px;color:var(--muted);line-height:1.7;margin:13px 0}.current-source{display:flex;align-items:center;gap:10px;background:#fcf7fa;border-radius:12px;padding:9px;margin-top:12px}.current-source img{width:45px;height:55px;border-radius:7px;object-fit:cover}.current-source>div{flex:1;font-size:11px;min-width:0}.current-source small{display:block;color:var(--muted);font-size:10px;margin-top:3px}.current-source label{cursor:pointer;color:#bb7e9e;font-size:11px;flex-shrink:0}.strength-top{display:flex;justify-content:space-between;font-size:11px;margin-top:16px;color:#aa7994}.strength-top b{font-size:12px}.strength-range{width:100%;height:26px;margin:9px 0 0;accent-color:#e791b1;cursor:pointer}.strength-labels{display:flex;justify-content:space-between;font-size:9px;color:#baa3b2}.source-remove{font-size:10px}.ratio-options{display:flex;gap:7px;margin:15px 0}.ratio{padding:8px 11px;background:#fff;border:1px solid var(--line);border-radius:9px;color:var(--muted);font-size:11px}.ratio.active{background:#f8e8f1;border-color:#eab5cd;color:#b77697}textarea{width:100%;min-height:90px;padding:12px;border:1px solid var(--line);border-radius:12px;background:#fffbfd;resize:vertical;font-size:12px;line-height:1.7;color:var(--deep)}.strength-note{font-size:10px;color:var(--muted);line-height:1.8;margin:14px 0}.bottom-action{display:flex;align-items:center;gap:14px;padding:12px 0}.bottom-action>span{font-size:11px;color:#ab819a;white-space:nowrap}.bottom-action>.primary{flex:1}.result-image{display:block;width:100%;max-height:64vh;object-fit:contain;border-radius:19px;background:#f6edf3}.result-tabs{display:flex;justify-content:center;gap:8px;margin:0 0 14px}.result-tabs button{padding:8px 13px;border-radius:12px;background:none;font-size:12px;color:var(--muted)}.result-tabs button.active{background:#f6e6ef;color:#b17696}.result-actions{display:grid;grid-template-columns:1.4fr 1fr;gap:10px;margin:20px 0}.waiting{min-height:350px;border:1px solid var(--line);border-radius:24px;background:linear-gradient(140deg,#fff1f7,#f6f4fc);display:flex;align-items:center;justify-content:center;flex-direction:column;gap:14px;text-align:center}.waiting b{font-size:15px}.waiting span{font-size:12px;color:#ab829c}.waiting p{font-size:11px;color:var(--muted);max-width:200px;line-height:1.7}.bunny-loader{font-size:42px;animation:breathe 2.5s ease-in-out infinite}@keyframes breathe{50%{transform:translateY(-9px)}}.works-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:11px}.works-grid img{aspect-ratio:3/4;object-fit:cover;border-radius:15px;width:100%}.works-grid figure{margin:0}.works-grid figcaption{font-size:10px;color:var(--muted);margin-top:6px}.empty-works{grid-column:1/-1;padding:55px 20px;background:#fff4f9;border-radius:20px;text-align:center;line-height:2;color:var(--muted)}.account-settings{margin-top:25px;border-top:1px solid var(--line);padding-top:18px;font-size:12px;color:#b48a9f}.account-settings p{font-size:11px;line-height:1.7;margin:13px 0}.account-settings span{display:block}.demo-banner{position:fixed;bottom:69px;background:#f7e9f1ee;width:min(100%,440px);text-align:center;padding:9px 5px;color:#b07e9c;font-size:10px;z-index:12}dialog{width:min(90%,360px);border:1px solid #eadce5;border-radius:24px;padding:26px;background:#fffafe;color:var(--deep);box-shadow:0 15px 100px #56304844}dialog::backdrop{background:#624d6344;backdrop-filter:blur(4px)}dialog>img{width:60px;display:block;margin:0 auto 10px}dialog h2{text-align:center;font-size:21px}dialog p{font-size:12px;line-height:1.8;color:var(--muted);margin:10px 0 20px}dialog label{font-size:12px;margin-bottom:8px;display:block}dialog input{width:100%;padding:12px;border:1px solid var(--line);border-radius:12px;margin-bottom:13px;background:#fff;color:var(--deep)}.dialog-close{position:absolute;right:15px;top:10px;background:none;color:#bb98ad;font-size:23px}.toast{position:fixed;bottom:95px;left:50%;transform:translateX(-50%);max-width:85%;background:#785269;color:white;border-radius:14px;padding:12px 17px;font-size:12px;z-index:40;opacity:0;pointer-events:none;transition:opacity .2s;line-height:1.7}.toast.show{opacity:1}.desktop-note{display:none}@media(min-width:960px){body{display:flex;align-items:start;justify-content:center;gap:100px;padding:35px 25px}.phone-shell{margin:0;min-height:calc(100dvh - 70px);border-radius:35px;overflow:hidden;border:7px solid white}.bottom-nav,.demo-banner{width:426px}.bottom-nav{bottom:0}.desktop-note{display:block;width:360px;position:sticky;top:110px;padding-top:35px}.desktop-note>img{width:100px;height:100px;object-fit:contain;margin-bottom:25px}.desktop-note .eyebrow{font-size:11px;letter-spacing:3px;color:#b0849e}.desktop-note h1{font-size:39px;line-height:1.6;margin:16px 0}.desktop-note p{font-size:13px;line-height:2;color:var(--muted)}.desktop-note a{display:inline-block;margin-top:30px;font-size:12px;color:#bd87a4;text-decoration:none}}@media(max-width:350px){main{padding:0 16px}.app-header{padding-left:16px;padding-right:16px}.home-intro h1{font-size:30px}.home-mascot{width:85px;right:-8px}.hero-photo{height:238px}.wordmark>span{font-size:9px;letter-spacing:1px}.photo-upload{height:168px}.style-grid{gap:6px}.style-card b{font-size:9px}.choice-toolbar{gap:4px}.choice-toolbar button{font-size:10px}.target-head{gap:7px;padding:12px}.target-icon{width:20px}.target-toggle{gap:9px}}@media(prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}}
body[data-view="edit"] .phone-shell{padding-bottom:calc(var(--bottom-nav-height,76px) + var(--bottom-action-height,74px) + var(--demo-banner-height,0px) + 24px)}
.bottom-action{position:fixed;bottom:calc(var(--bottom-nav-height,76px) + 8px);z-index:11;width:min(calc(100vw - 46px),394px);background:#fffafcf5;backdrop-filter:blur(12px);border-top:1px solid #efdee8;padding:12px 0;box-shadow:0 -12px 22px #fffafceb}
body[data-view="edit"] .demo-banner{bottom:calc(var(--bottom-nav-height,76px) + var(--bottom-action-height,74px) + 16px)}
@media(min-width:960px){.bottom-action{width:380px}}
@media(max-width:350px){.bottom-action{width:calc(100vw - 32px)}}
.strength-range{appearance:none;background:transparent}
.strength-range::-webkit-slider-runnable-track{height:6px;border-radius:20px;background:linear-gradient(to right,#e99ab7 var(--fill,70%),#f0e4ec var(--fill,70%))}
.strength-range::-webkit-slider-thumb{appearance:none;width:18px;height:18px;border-radius:50%;background:#e793b2;border:3px solid white;box-shadow:0 1px 5px #c98ba54d;margin-top:-6px}
.strength-range::-moz-range-track{height:6px;border-radius:20px;background:#f0e4ec}
.strength-range::-moz-range-progress{height:6px;border-radius:20px;background:#e99ab7}
.strength-range::-moz-range-thumb{width:15px;height:15px;border-radius:50%;background:#e793b2;border:3px solid white}

.appearance-card{padding:16px;background:#fff;border:1px solid #efcbdc;border-radius:18px;margin-bottom:16px}.appearance-card .strength-top{margin-top:0;align-items:center;gap:10px}.appearance-note{font-size:10px;line-height:1.7;color:var(--muted);margin-top:10px}.strength-range:disabled{opacity:.45;cursor:default}

/* APP v2: visible controls, two creation routes and inspiration square. */
.home-intro h1{font-size:31px;max-width:calc(100% - 85px)}.home-mascot{width:91px;right:-2px;bottom:16px}.hero-photo{height:245px;margin-bottom:18px}
.creation-entries{display:grid;gap:10px}.feature-entry{display:flex;align-items:center;gap:12px;border:1px solid #eed4e1;border-radius:18px;min-height:78px;width:100%;padding:11px 14px;text-align:left;color:var(--deep);background:linear-gradient(120deg,#fbe4ef,#fff6fa);box-shadow:0 4px 12px #dcabc61a}.feature-entry>img{width:44px;height:49px;object-fit:contain}.feature-entry>span{flex:1}.feature-entry b{display:block;font-size:17px}.feature-entry small{display:block;margin-top:5px;font-size:11px;color:#a07b92}.feature-entry i{font-size:23px;font-style:normal;color:#c986a7}.retouch-entry{background:linear-gradient(120deg,#eef2fb,#fcf6fb);border-color:#e5dfee}.demo-link{margin-bottom:18px}.bottom-nav button>img{width:31px;height:28px;object-fit:contain;margin:0 auto;filter:grayscale(.2);opacity:.68}.bottom-nav button.active>img{opacity:1;filter:none}.bottom-nav button{gap:5px}
.decorated-mini-heading{position:relative;padding-right:62px}.decorated-mini-heading h1{font-size:29px}.decorated-mini-heading>img{position:absolute;width:59px;height:68px;object-fit:contain;right:-3px;bottom:5px;pointer-events:none}.decorated-mini-heading p{font-size:12px}.gallery-search{display:flex;align-items:center;gap:9px;background:#fff;border:1px solid var(--line);padding:10px 14px;border-radius:14px}.gallery-search>span{font-size:24px;color:#be8aa6}.gallery-search>input{min-width:0;flex:1;border:0;background:none;outline:0;font-size:12px;color:var(--deep)}.gallery-categories{display:flex;gap:7px;overflow:auto;padding:15px 0 5px;scrollbar-width:none}.gallery-category{flex-shrink:0;border:1px solid var(--line);background:#fff;border-radius:20px;padding:8px 12px;font-size:11px;color:#ac8b9f}.gallery-category.active{color:#b57294;background:#f8e1ee;border-color:#ebbad0}.gallery-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px 12px;margin-top:15px}.gallery-card{padding:0;background:white;text-align:left;color:var(--deep);border-radius:18px;border:1px solid var(--line);overflow:hidden;min-width:0}.gallery-card>img{display:block;aspect-ratio:3/4;width:100%;object-fit:cover}.gallery-tag{display:inline-block;margin:10px 11px 0;padding:3px 6px;background:#f9edf4;border-radius:6px;font-size:9px;color:#b17f9c}.gallery-card>b{display:block;padding:7px 11px 5px;font-size:13px}.gallery-description{display:block;padding:0 11px 12px;font-size:10px;line-height:1.65;color:var(--muted)}.empty-gallery{grid-column:1/-1;font-size:12px;color:var(--muted);padding:35px 8px;text-align:center;line-height:1.8}.creator-plan{background:#f7edf5;border:1px solid #ebdce7;border-radius:17px;padding:16px;margin:24px 0}.creator-plan summary{font-size:12px;font-weight:700;cursor:pointer;line-height:1.65}.creator-plan p{font-size:11px;color:#a08295;line-height:1.8;margin-top:12px}
.gallery-dialog{padding:0;border-radius:24px;max-width:min(390px,calc(100vw - 36px));max-height:90dvh;overflow:auto}.gallery-dialog>#gallery-detail-image{display:block;width:100%;height:350px;object-fit:cover;margin:0;border-radius:0}.gallery-detail-copy{padding:20px}.gallery-detail-copy>p{line-height:1.8;font-size:12px;margin-top:9px;color:var(--muted)}.gallery-detail-actions{display:grid;gap:10px;margin-top:18px}.gallery-dialog .dialog-close{background:#fff9;border-radius:50%;width:34px;height:34px;z-index:1;font-size:23px;color:#805a70}
.editor-previews{display:flex;align-items:flex-end;gap:12px;margin:0 0 19px}.person-preview{position:relative;flex:1;min-width:0;border-radius:20px;background:#f5edf3}.person-preview>#edit-person-image{display:block;width:100%;height:240px;object-fit:contain;border-radius:20px}.person-preview>span,.reference-preview>span{display:block;text-align:center;font-size:10px;padding:8px;color:#9d7e94}.person-preview>.editor-companion{position:absolute;width:57px;height:55px;right:-9px;bottom:18px;object-fit:contain;pointer-events:none}.reference-preview{width:85px;border-radius:15px;background:#f6edf4;flex-shrink:0}.reference-preview>img{width:100%;height:116px;object-fit:cover;border-radius:15px 15px 0 0}.target-intensity{padding:0 17px 17px}.target-intensity .strength-top{margin-top:0;font-size:11px}.target-intensity .strength-top b{display:flex;align-items:center;gap:9px}.intensity-number,#mini-face-value{font-size:14px;font-weight:800;color:#c4789d;font-variant-numeric:tabular-nums;min-width:25px;text-align:right}#mini-face-value{margin-left:7px}.appearance-card .strength-top> b{font-size:11px}.target-detail{background:#fffbfd}.waiting-companion{display:block;width:110px;height:100px;object-fit:contain;margin:auto}
@media(max-width:350px){.home-intro h1{font-size:27px;max-width:calc(100% - 75px)}.home-mascot{width:77px}.hero-photo{height:217px}.feature-entry{padding:10px 12px;gap:10px;min-height:73px}.feature-entry b{font-size:16px}.feature-entry small{font-size:10px}.decorated-mini-heading h1{font-size:26px}.decorated-mini-heading{padding-right:52px}.decorated-mini-heading>img{width:49px}.person-preview>#edit-person-image{height:215px}.reference-preview{width:72px}.reference-preview>img{height:101px}.gallery-card>b{font-size:12px}.gallery-description{font-size:9px}.gallery-dialog>#gallery-detail-image{height:300px}.appearance-card .strength-top> b{font-size:10px}}
.hero-photo>img:first-child{object-position:50% 18%}


/* 等图小陪伴：只做轻柔动效，不表示生成进度。 */
.waiting{padding:24px 16px;gap:12px;overflow:hidden}
.waiting-stage{position:relative;width:250px;max-width:100%;height:158px;flex-shrink:0}
.waiting-cloud{position:absolute;width:208px;height:51px;left:50%;margin-left:-104px;bottom:14px;border-radius:50%;background:radial-gradient(ellipse,#f6dfea99,transparent 72%)}
.waiting-shadow{position:absolute;bottom:25px;left:50%;width:82px;height:10px;margin-left:-41px;border-radius:50%;background:#d6c4df55;animation:companion-shadow 3.6s ease-in-out infinite}
.waiting-stage .waiting-friend{position:absolute;display:block;object-fit:contain;margin:0;pointer-events:none;transform-origin:50% 85%}
.waiting-stage .friend-cinnamoroll{width:106px;height:106px;left:50%;margin-left:-53px;bottom:30px;z-index:2;animation:companion-float 3.6s ease-in-out infinite}
.waiting-stage .friend-melody{width:65px;height:73px;left:14px;bottom:26px;animation:companion-sway 3.2s ease-in-out -.7s infinite}
.waiting-stage .friend-kuromi{width:67px;height:77px;right:12px;bottom:25px;animation:companion-sway 3.5s ease-in-out -1.9s infinite reverse}
.waiting .waiting-sparkle{position:absolute;font-size:19px;color:#ce9bbb;animation:companion-sparkle 3.2s ease-in-out infinite;pointer-events:none}
.waiting .sparkle-one{left:40px;top:15px;color:#dab789;animation-delay:-.3s}
.waiting .sparkle-two{right:30px;top:25px;font-size:24px;color:#b8a5d7;animation-delay:-1.6s}
.waiting .sparkle-three{right:67px;top:2px;font-size:15px;animation-delay:-2.4s}
.waiting .waiting-message{font-size:12px;line-height:1.7;color:#9f7794;min-height:21px}
.waiting #elapsed{font-variant-numeric:tabular-nums;font-size:11px;color:#ad8ca2}
.waiting p{margin:0;max-width:230px}
.waiting:not(.is-active) .waiting-stage *{animation-play-state:paused}
@keyframes companion-float{0%,100%{transform:translateY(0) rotate(-3deg)}50%{transform:translateY(-11px) rotate(3deg)}}
@keyframes companion-sway{0%,100%{transform:translateY(0) rotate(-6deg)}50%{transform:translateY(-5px) rotate(5deg)}}
@keyframes companion-shadow{0%,100%{transform:scaleX(1);opacity:.65}50%{transform:scaleX(.76);opacity:.35}}
@keyframes companion-sparkle{0%,100%{transform:translateY(3px) scale(.8);opacity:.35}50%{transform:translateY(-4px) scale(1);opacity:.9}}

/* 同一张角色卡片承载等待、恢复连接和真实失败原因。 */
.waiting-reason{font-size:12px;line-height:1.8;width:100%;padding:12px 14px;text-align:left;background:#ffffffb3;border:1px solid #ecd9e5;border-radius:15px;overflow-wrap:anywhere}.waiting-actions{display:grid;gap:10px;width:100%;margin-top:4px}.waiting-actions:empty{display:none}.waiting-actions button{width:100%;min-height:44px}.waiting[data-state="failed"]{background:linear-gradient(145deg,#fff3f7,#f5f1fd);border-color:#ead5e3}.waiting[data-state="failed"] .waiting-stage{filter:saturate(.82)}.waiting[data-state="reconnecting"]{background:linear-gradient(145deg,#fff5fa,#f1f3fc)}

.slider-guide{font-size:11px;color:#9f7d97;line-height:1.9;padding:12px 14px;background:#f6eff8;border:1px solid #e9deef;border-radius:14px;margin:0 0 16px}.slider-freedom-note{font-size:10px;color:#a17c96;line-height:1.8;margin:9px 0 0}.slider-anchors{gap:5px;align-items:center}.slider-anchors span:nth-child(2):not(:last-child){color:#bd7da2;font-weight:600;text-align:center}.scene-hierarchy-note{font-size:10px;line-height:1.8;color:#9f7892;margin:10px 0 0;padding:9px 11px;border-left:3px solid #e5b2c9;background:#fff6fa;border-radius:0 10px 10px 0}

/* Phone touch targets; preserve the existing pastel palette and companions. */
.target-toggle{min-height:44px}.target-expand{width:44px;height:44px;flex-shrink:0}.current-source label{min-height:44px;display:flex;align-items:center}.text-button,.soft-button,.ratio,.dialog-close{min-height:44px}.dialog-close{min-width:44px}.strength-range{min-height:44px}.photo-home-entry{width:100%;margin-top:10px;display:flex;align-items:center;justify-content:space-between}.photo-extend{width:100%;margin-top:14px}.photo-label{display:block;font-size:14px;margin:20px 0 10px}.photo-template-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:9px}.photo-template{border:1px solid var(--line);background:#fff8fc;border-radius:16px;padding:14px 11px;text-align:left;color:var(--deep);min-height:93px}.photo-template.active{background:#f8e9f2;border-color:#eab0ca}.photo-template b{font-size:13px}.photo-template small{display:block;font-size:11px;color:var(--muted);line-height:1.7;margin-top:6px}.photo-source{display:flex;flex-direction:column;gap:10px;border:1px dashed #e9b8d0;border-radius:17px;padding:18px;margin:16px 0;background:#fff8fc;color:#b27a96;font-size:12px;cursor:pointer;min-height:80px}.photo-source img{width:100%;max-height:230px;object-fit:contain;border-radius:12px}.photo-field{margin:20px 0}.photo-field>label{display:block;font-size:13px;margin-bottom:9px}.photo-field select{width:100%;min-height:46px;background:white;border:1px solid var(--line);border-radius:12px;padding:10px;color:var(--deep);font-size:14px}.photo-strength-card,.photo-plan-card{padding:15px;border:1px solid var(--line);border-radius:17px;background:#fff8fc;margin:18px 0}.photo-strength-card .strength-top{margin-top:0}.photo-plan-card summary{min-height:44px;display:flex;align-items:center;font-size:13px;color:#ae7896;cursor:pointer}.photo-plan-card ol{padding-left:23px;margin-bottom:0}.photo-plan-card li{font-size:12px;line-height:1.8;padding:7px 0}.photo-plan-card small{display:block;color:var(--muted);font-size:11px}.photo-consent{font-size:11px}.photo-progress-card{display:flex;flex-direction:column;align-items:center;background:linear-gradient(145deg,#fff0f7,#f0effa);padding:24px 15px;border-radius:23px;margin:24px 0 16px;text-align:center;gap:10px}.photo-progress-card img{width:88px;height:88px;object-fit:contain}.photo-progress-card b{font-size:14px}.photo-progress-card p{font-size:12px;color:var(--muted);line-height:1.8;overflow-wrap:anywhere}.is-shooting{animation:breathe 2.5s ease-in-out infinite}.photo-frames{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.photo-frame{border:1px solid var(--line);border-radius:16px;padding:9px;min-width:0;display:flex;flex-direction:column;gap:9px}.photo-frame>img{width:100%;aspect-ratio:2/3;object-fit:contain;border-radius:9px;background:#faf1f7}.photo-frame>b{font-size:11px}.photo-frame .soft-button{font-size:10px;padding:9px 6px}.photo-frame-empty{aspect-ratio:2/3;display:grid;place-items:center;background:#fbf3f8;border-radius:9px;font-size:11px;color:var(--muted);text-align:center;padding:10px}.photo-frame-error{font-size:11px;line-height:1.7;color:#ad7b95;overflow-wrap:anywhere}#photo-start,#photo-continue,#photo-collage{margin-top:12px}#photo-new{display:block;margin:15px auto}body[data-view="photography"] input:not([type="checkbox"]),body[data-view="photography"] textarea{font-size:16px}@media(prefers-reduced-motion:reduce){.is-shooting{animation:none}}

.quality-warning{padding:10px;border:1px solid #edc8d9;border-radius:12px;background:#fff4f8;color:#9e6b86!important}.quality-reasons p{margin:8px 0 12px}#quality-dialog .primary{margin-top:10px}
/* Keep the next action above navigation, with space to reach the last upload. */
:root{--bottom-nav-height:76px;--bottom-action-height:74px;--demo-banner-height:0px;--phone-shell-width:440px;--upload-action-height:220px}
body[data-view="upload"] [data-page="upload"]{padding-bottom:calc(var(--upload-action-height) + 24px)}
.upload-action{position:fixed;z-index:20;bottom:calc(var(--bottom-nav-height) + 8px);left:var(--phone-shell-center,50%);transform:translateX(-50%);width:calc(var(--phone-shell-width) - 28px);max-width:412px;padding:12px 14px 7px;border:1px solid var(--line);border-radius:20px;background:#fffafcf5;box-shadow:0 4px 24px #b7789521;backdrop-filter:blur(14px)}
.upload-progress{font-size:12px;font-weight:700;color:#aa6488;line-height:1.6}
.upload-action .consent{margin:8px 0;font-size:10px;line-height:1.6;align-items:flex-start}
.upload-action .consent input{width:17px;height:17px;flex-shrink:0;margin-top:2px}
.upload-action .primary{font-size:14px;min-height:48px;padding:12px 10px;gap:10px}
.upload-action .text-button{display:block;margin:0 auto;min-height:36px;font-size:11px;padding:7px 4px}
.upload-action .status-box{margin:7px 0;font-size:11px}
.target-expand{width:auto;min-width:44px;height:44px;font-size:11px;padding:0 5px}
.target-reference{display:flex;align-items:center;gap:8px;padding:0 15px 12px;margin:0}
.target-reference>img{width:38px;height:44px;object-fit:cover;border-radius:9px;flex-shrink:0}
.target-reference>div{flex:1;min-width:0}
.target-reference b{font-size:10px;line-height:1.6;display:block;overflow-wrap:anywhere}
.target-reference small{display:block;font-size:10px;line-height:1.6;color:var(--muted)}
.target-reference-change{min-height:44px;flex-shrink:0;padding:7px 8px;background:#faedf4;color:#ad7091;border-radius:12px;font-size:11px}
.slider-mix-details{margin-top:7px;color:var(--muted);font-size:10px;line-height:1.8}
.slider-mix-details summary{cursor:pointer;min-height:36px;display:flex;align-items:center;color:#b0839e}
.slider-mix-details p{padding:5px 0 0}
.target-intensity .slider-anchors{gap:12px;font-size:10px}
#retry-dialog p{margin:12px 0;line-height:1.8;font-size:12px;color:var(--muted);overflow-wrap:anywhere}
#retry-dialog form{display:grid;gap:8px;margin-top:16px}
#quality-dialog>.text-button{width:100%;margin-top:8px}
@media(max-height:650px){.upload-action{padding-top:8px}.upload-action .consent{margin:5px 0}.upload-action .text-button{min-height:30px;padding:4px}.upload-action .primary{min-height:44px}}

.result-open{display:block;width:100%;padding:0;background:transparent;border-radius:22px}.result-open .result-image{display:block}.result-open:focus-visible{outline:3px solid #b5cde2;outline-offset:3px}
@media(max-width:350px){#result-title{font-size:24px;line-height:1.5}#photo-heading{text-wrap:balance}}

/* Round 3: independent creation routes and compact, truthful task feedback. */
.creation-entries{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.feature-entry{display:grid;grid-template-columns:38px 1fr;gap:8px;min-height:112px;padding:12px;align-items:center}.feature-entry>img{width:38px;height:43px}.feature-entry>span{min-width:0}.feature-entry b{font-size:14px;line-height:1.5}.feature-entry small{font-size:10px;line-height:1.7;margin-top:4px}.feature-entry i{display:none}.photography-entry{background:linear-gradient(140deg,#fde8f1,#fffafd)}.series-entry{background:linear-gradient(140deg,#edf2fc,#fcf8ff)}.retouch-entry{background:linear-gradient(140deg,#fff5e8,#fff8fc)}
.photo-flow-steps{display:flex;gap:5px;list-style:none;padding:0;margin:0 0 10px}.photo-flow-steps li{flex:1;min-width:0;padding:8px 3px;background:#fcf0f7;border-radius:10px;color:#a37b93;font-size:10px;text-align:center;line-height:1.7}.photo-flow-steps li:first-child{background:#f8e3ef;color:#a46789}
.photo-plan-toolbar{display:flex;align-items:center;gap:10px}.photo-plan-toolbar p{flex:1;margin:8px 0;min-width:0}.photo-plan-toolbar button{flex:none;font-size:12px;padding:8px 12px}.photo-create-confirm{max-height:calc(100dvh - 32px);overflow:auto;padding:22px}.photo-create-confirm ol{padding-left:20px;color:var(--muted);font-size:12px;line-height:1.8}.photo-create-confirm button{width:100%;margin-top:8px}
.photo-session-summary{display:flex;flex-direction:column;gap:7px;padding:14px 0 3px}.photo-session-summary b{font-size:14px}.photo-session-summary span{font-size:11px;color:var(--muted)}.photo-recovery:empty{display:none}.photo-recovery .photo-source{font-size:12px;min-height:44px;padding:12px;margin:10px 0}.photo-recovery .consent{margin:10px 0}
.photo-progress-card{display:grid;grid-template-columns:58px minmax(0,1fr);align-items:center;text-align:left;gap:12px;padding:15px 13px;border:1px solid #f0dce7;border-radius:19px;margin:14px 0;background:linear-gradient(140deg,#fff3f9,#f5f4fc);min-height:128px}.photo-progress-card>img{width:58px;height:64px}.photo-progress-copy{min-width:0;position:relative}.photo-progress-copy>b{display:block;font-size:13px;padding-right:22px;line-height:1.6}.photo-progress-copy .photo-spinner{position:absolute;right:0;top:2px;width:14px;height:14px}.photo-progress-copy>p{font-size:11px;line-height:1.8;margin:8px 0 0}.photo-progress-card>.text-button{grid-column:1/-1;width:100%;padding:4px;min-height:36px;font-size:11px;border-top:1px solid #efdfeb}
.photo-count-dots{display:flex;gap:5px;align-items:center;margin:10px 0 4px;min-height:7px}.photo-count-dots span{display:block;width:7px;height:7px;border-radius:50%;background:#ead7e4}.photo-count-dots span.done{background:#c489ad}.photo-frame-pending{align-self:start;min-height:94px;background:#fffafd}.photo-frame-pending .photo-frame-empty{aspect-ratio:auto;min-height:54px;background:#fbf3f8}.photo-progress-card .is-shooting{animation:photo-companion-breathe 4s ease-in-out infinite}.waiting{min-height:250px;padding:18px 16px;gap:10px}.waiting-stage{height:108px;width:220px}.waiting-stage .friend-cinnamoroll{width:76px;height:76px;margin-left:-38px;bottom:15px}.waiting-stage .friend-melody,.waiting-stage .friend-kuromi{width:52px;height:57px;bottom:16px}.waiting-stage .friend-melody{left:22px}.waiting-stage .friend-kuromi{right:20px}.waiting-shadow{bottom:12px}.waiting-cloud{bottom:0}.waiting .sparkle-one{top:9px}.waiting .sparkle-two{top:15px}.waiting .sparkle-three{top:0}.waiting-reason{margin-top:4px}
.photo-activity{display:block;width:calc(100% - 32px);margin:0 16px 10px;min-height:44px;padding:9px 12px;border:1px solid #e5d9ef;border-radius:14px;background:#f8f2fc;color:#977397;font-size:12px}.photo-history{margin-top:25px}.photo-history h2{font-size:16px;margin-bottom:12px}.photo-history-list{display:grid;gap:8px}.photo-history-item{display:flex;align-items:center;justify-content:space-between;gap:10px;text-align:left;border:1px solid var(--line);background:#fffafd;border-radius:15px;padding:13px 12px;min-height:55px;color:var(--deep)}.photo-history-item b{font-size:12px}.photo-history-item span{font-size:10px;color:var(--muted)}
.album-filters{display:flex;gap:6px;overflow-x:auto;padding:0 0 5px;scrollbar-width:none}.album-filter{flex:none;padding:9px 12px;min-height:44px;background:#fffafd;border:1px solid var(--line);border-radius:13px;font-size:11px;color:var(--muted)}.album-filter.active{background:#f7e5ef;color:#a3688d;border-color:#e9bad0}.album-storage-note{line-height:1.8;margin-top:18px}.photo-activity[hidden],#photo-new[hidden],.photo-flow-steps[hidden],.waiting[hidden]{display:none}.phone-shell{padding-bottom:calc(var(--bottom-nav-height,76px) + var(--demo-banner-height,0px) + 24px)}
.account-dot{width:44px;min-width:44px;height:44px}.photo-recovery[hidden],.photo-history[hidden]{display:none}
@keyframes photo-companion-breathe{50%{transform:translateY(-2px) rotate(-1deg)}}
@media(max-width:350px){.feature-entry{grid-template-columns:30px 1fr;padding:10px;gap:6px;min-height:115px}.feature-entry>img{width:30px;height:36px}.feature-entry b{font-size:12px}.feature-entry small{font-size:10px}.photo-progress-card{grid-template-columns:48px minmax(0,1fr);padding:13px 10px;gap:9px}.photo-progress-card>img{width:48px;height:56px}.photo-progress-copy>b{font-size:12px}.photo-history-item{flex-wrap:wrap}}
@media(prefers-reduced-motion:reduce){.photo-progress-card .is-shooting{animation:none}}
