/* 单聊里角色发的照片（生图第三阶段）：照片气泡只显示图片，下面不配说明文字；「只要文字」才显示画面描述；大图只写「发送人 · 时间」。 */
#wechat-chat-detail .msg-media.gp{padding:4px;cursor:pointer;transition:transform var(--mo-release) var(--mo-ease-bounce)}
#wechat-chat-detail .msg-media.gp:active{transform:scale(.97)}
#wechat-chat-detail .msg-media.gp.busy{cursor:default}
.gp-frame{position:relative;width:min(212px,56vw);aspect-ratio:3/4;border-radius:14px;overflow:hidden;background:radial-gradient(120% 80% at 20% 15%,#46587a 0,transparent 60%),radial-gradient(90% 70% at 85% 90%,#5d4a68 0,transparent 62%),#2a3446;isolation:isolate}
.gp-img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;display:block;transform:scale(1.18);filter:blur(16px) saturate(.8);transition:filter 900ms var(--mo-ease-out),transform 900ms var(--mo-ease-out)}
.gp-img:not([src]){display:none}
.gp.done .gp-img{transform:none;filter:none}
.gp-veil{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:10px;color:#fff;background:linear-gradient(180deg,rgba(255,255,255,.10),rgba(255,255,255,.02) 55%,rgba(10,14,22,.18));transition:opacity 420ms ease-out}
.gp.done .gp-veil{opacity:0;pointer-events:none}
.gp[data-static] .gp-img,.gp[data-static] .gp-veil{transition:none}
.gp-ic{width:46px;height:46px;border-radius:50%;display:grid;place-items:center;background:rgba(255,255,255,.18);border:1px solid rgba(255,255,255,.35);box-shadow:inset 0 1px 0 rgba(255,255,255,.4);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}
.gp-ic svg{width:21px;height:21px}
.gp-lab{font-size:13px;letter-spacing:.04em;text-shadow:0 1px 6px rgba(0,0,0,.25)}
.gp-sub{font-size:11px;opacity:.75;margin-top:-6px}
.gp.fail .gp-sub{display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:3;line-clamp:3;overflow:hidden;max-width:100%;padding:0 14px;text-align:center}
/* 生成中：一道高光反复扫过 */
.gp-sweep{position:absolute;inset:0;pointer-events:none;opacity:0;transition:opacity 240ms}
.gp.busy .gp-sweep{opacity:1}
.gp-sweep::before{content:"";position:absolute;top:0;bottom:0;width:60%;left:-60%;background:linear-gradient(100deg,transparent,rgba(255,255,255,.28),transparent);animation:gpSweep 1.4s var(--mo-ease-out) infinite}
@keyframes gpSweep{to{transform:translateX(270%)}}
.gp.busy .gp-ic{animation:gpBreath 1.4s ease-in-out infinite}
@keyframes gpBreath{50%{transform:scale(.92);opacity:.8}}
/* 失败 */
.gp.fail .gp-img{filter:blur(16px) saturate(.3) brightness(.7)}
.gp.fail .gp-frame{background:#232a36}
.gp-retry{margin-top:2px;font:inherit;font-size:12px;color:#fff;padding:6px 14px;border-radius:999px;background:rgba(255,255,255,.2);border:1px solid rgba(255,255,255,.4);cursor:pointer;transition:transform var(--mo-release) var(--mo-ease-bounce)}
.gp-retry:active{transform:scale(var(--mo-press-scale-sm))}
/* 只要文字 / 到上限 */
#wechat-chat-detail .msg-media.gp-text{padding:11px 14px;display:flex;gap:10px;align-items:flex-start;max-width:min(236px,62vw);cursor:default}
.gp-text .gp-tic{flex:none;width:30px;height:30px;border-radius:10px;display:grid;place-items:center;background:rgba(255,255,255,.6);color:var(--accent-text)}
:root[data-theme="dark"] .gp-text .gp-tic{background:rgba(255,255,255,.1)}
@media(prefers-color-scheme:dark){:root:not([data-theme="light"]) .gp-text .gp-tic{background:rgba(255,255,255,.1)}}
.gp-text .gp-tic svg{width:17px;height:17px}
.gp-text b{display:block;font-size:12px;font-weight:600;opacity:.6;margin-bottom:2px;letter-spacing:.06em}
.gp-text span{font-size:14px;line-height:1.55}
.gp-text em{display:block;font-style:normal;font-size:11px;opacity:.6;margin-top:6px}
/* 大图 */
.gp-view{position:fixed;inset:0;z-index:1000;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:24px 18px}
.gp-view-bg{position:absolute;inset:0;background:#0e1219;animation:moFade var(--mo-base) ease-out backwards}
.gp-view img{position:relative;width:min(340px,86vw);aspect-ratio:3/4;border-radius:16px;object-fit:cover;transform-origin:top left;box-shadow:0 20px 50px rgba(0,0,0,.4)}
.gp-view-cap{position:relative;width:min(340px,86vw);margin-top:16px;color:#e8edf4;animation:moRise var(--mo-slow) var(--mo-ease-out) 120ms backwards}
.gp-view-cap i{display:block;font-style:normal;font-size:12px;opacity:.55;text-align:center}
.gp-view.closing .gp-view-bg{transition:opacity var(--mo-base) ease-in;opacity:0}
.gp-view.closing .gp-view-cap{transition:opacity var(--mo-fast);opacity:0}
.gp-view-save{position:absolute;left:50%;bottom:calc(env(safe-area-inset-bottom,0px) + 52px);transform:translateX(-50%);width:40px;height:40px;padding:0;display:grid;place-items:center;border-radius:50%;border:1px solid rgba(255,255,255,.3);background:rgba(255,255,255,.14);color:#fff;cursor:pointer;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}
.gp-view-save svg{width:20px;height:20px}
.gp-view.closing .gp-view-save{transition:opacity var(--mo-fast);opacity:0}
