/* Photo character booth: white canvas, one cobalt action, character-first layout. */
.visitor-body{--ui-blue:#4759ef;--ui-ink:#22232c;--ui-muted:#85858f;--ui-line:#e8e8ee;background:#f6f6f9!important;background-image:none!important;color:var(--ui-ink)}
.visitor-body .visitor-shell{max-width:500px;background:#fff;border:0;min-height:100svh}
/* iOS 26 Safari 는 상태바와 하단 도구막대 뒤를 웹 콘텐츠로 채우지 않는다(실측: viewport-fit=cover 를 줘도 safe-area 0,
   고정 요소도 그 사이에만 놓인다). 그 띠는 페이지 위·아래 가장자리의 색으로 칠해진다 — 고정 요소가 없으면 body 배경이다.
   셸이 화면 폭을 다 쓰는 휴대폰에서 body 가 회색이면 흰 화면 위아래로 회색 띠가 생긴다(실기기 제보). 그래서 흰색으로 맞춘다.
   넓은 화면에서는 셸 바깥이 실제로 보이므로 회색 그대로 둔다. */
@media(max-width:500px){.visitor-body{background:#fff!important}}
/* 랜딩은 하늘색 그라디언트다(welcome.css 의 .page: 맨 위 #eaf3ff, 맨 아래 #edf5ff — 눈으로 구분되지 않는다). */
@media(max-width:760px){body:has(.landing-host){background:#eaf3ff!important}}
.visitor-body .visitor-header{height:80px;padding:25px 28px;background:transparent}
.visitor-body .visitor-brand{color:#272730;font-size:22px;letter-spacing:-1.1px;line-height:.85}
.visitor-body .visitor-brand span{font-size:9px;letter-spacing:1.7px;margin-top:7px}
.visitor-body .edition{font-size:11px;letter-spacing:0;color:#90909b}
.visitor-body .visitor-main{padding:0 28px 8px;min-height:calc(100svh - 124px);gap:0}
.visitor-body .step-line{margin:0 0 16px;height:30px;color:#9a9aa5;font-size:11px;letter-spacing:0}
.visitor-body .step-name{display:none}
.visitor-body .visitor-main:not(.has-back) .step-line{height:13px;margin-bottom:10px}
.visitor-body .step-line .plain{text-decoration:none;font-size:24px;color:#333440;text-align:left}
.visitor-body .visitor-main h1{font-size:27px;font-weight:700;line-height:1.43;letter-spacing:-1.15px;margin:0 0 12px;color:var(--ui-ink)}
.visitor-body .visitor-description{font-size:13px;line-height:1.65;color:#878792;letter-spacing:-.25px;margin-bottom:16px}
.visitor-body .visitor-content{min-height:265px;gap:18px}
.visitor-body .visitor-actions{margin-top:25px;gap:10px;padding-bottom:6px}
.visitor-body .visitor-primary{background:var(--ui-blue);border:0;box-shadow:none;min-height:58px;border-radius:16px;color:white;font-size:16px;letter-spacing:-.3px}
.visitor-body .visitor-primary:hover{background:#3648df}
.visitor-body .visitor-primary:active{transform:scale(.99)}
.visitor-body .visitor-primary:disabled{background:#dddfe8;color:#9395a6;opacity:1}
.visitor-body .visitor-secondary{background:#f4f5fa;border:0;border-radius:16px;color:#545665;min-height:53px;font-size:14px}
.visitor-body .visitor-footer{padding:12px 20px 17px;font-size:10px;color:#a1a1aa}
.visitor-body .action-note{font-size:11px;color:#95959f;line-height:1.65}
.visitor-body .sample-note{font-size:11px;color:#92929e;line-height:1.65;max-width:290px;margin:0 auto}
.visitor-body .plain{color:#94949f;font-size:12px;padding:8px}
.visitor-body button:focus-visible,.visitor-body input:focus-visible{outline:3px solid #a9b1ff;outline-offset:4px}
/* Fixed character positions; all movement comes from Studio video. */
.visitor-body .landing-stage{position:relative;width:calc(100% + 48px);max-width:min(460px,100vw);aspect-ratio:860/1080;isolation:isolate}
.visitor-body .landing-stage canvas{display:block;width:100%;height:100%}
.visitor-body .stage-status{position:absolute;left:12%;right:12%;top:43%;background:#fffffff2;padding:18px 15px;border-radius:14px;display:grid;gap:12px;color:#797985;font-size:12px;text-align:center}
.visitor-body .stage-status[hidden],.visitor-body .stage-play[hidden]{display:none}
.visitor-body .stage-status progress{width:100%;height:5px;accent-color:var(--ui-blue)}
.visitor-body .stage-play{position:absolute;bottom:0;right:0;border:1px solid #ededf2;border-radius:20px;background:#fff;color:#787884;padding:8px 12px;font-size:11px}
.visitor-body .stage-sample{font-size:10px;color:#9999a4;margin:0;text-align:center}
.visitor-body .photo-guide{height:255px;margin:15px 0 0}
.visitor-body .portrait-placeholder{background:#f1f1f7;border:0;border-radius:22px;color:#b2b2c6;width:130px;height:188px;font-size:68px}
.visitor-body .photo-guide .single-avatar{height:206px;width:136px}
.visitor-body .guide-arrow{color:#babaca;font-size:23px;margin:0 16px}
.visitor-body .guide-copy{font-size:14px;line-height:1.75;color:#60616e;margin:0 0 10px}
.visitor-body .photo-confirm,.visitor-body .camera-frame{background:#f1f2f7;border-radius:25px}
.visitor-body .candidate-main{background:#f1f0f9;border-radius:28px;width:100%;max-width:285px;height:275px;display:grid;place-items:center;padding:0}
.visitor-body .candidate-main .single-avatar{height:265px;width:220px}
.visitor-body .candidate-options{gap:11px}
.visitor-body .candidate-options button{border:2px solid transparent;background:#f6f6f9;border-radius:17px;padding:9px 3px;color:#92929f}
.visitor-body .candidate-options button[aria-pressed=true]{border-color:#6170f2;background:#f2f3ff;color:#4555d9}
.visitor-body .candidate-options img{height:88px}
.visitor-body .candidate-options span{font-size:11px}
.visitor-body .field-label{color:#888895;font-size:12px}
.visitor-body .name-input{border-bottom:1px solid #dddde8;color:#252632;font-size:24px!important;padding:17px 6px}
.visitor-body .name-input:focus{border-color:var(--ui-blue)}
.visitor-body .pose-options{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:13px;width:100%;padding-top:12px}
.visitor-body .pose-options button{position:relative;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;gap:12px;background:#f7f7fa;border:2px solid transparent;border-radius:22px;padding:19px 8px 18px;min-height:183px;color:#8a8c9e}
.visitor-body .pose-options button[aria-pressed=true]{border-color:#6573f4;background:#f1f2ff;padding:19px 8px 18px;color:var(--ui-blue)}
.visitor-body .pose-icon{width:78px;height:77px;background:none;border:0;border-radius:0;font-size:64px;color:inherit}
.visitor-body .pose-icon svg{width:68px;height:68px;stroke:currentColor;stroke-width:3.4;stroke-linecap:round;stroke-linejoin:round}
.visitor-body .letter-pose{font-family:Pretendard,sans-serif;line-height:1;font-weight:700;font-size:78px;letter-spacing:-6px;margin-right:6px}
.visitor-body .pose-options strong{font-size:15px;color:#55576a;font-weight:700}
.visitor-body .pose-options button[aria-pressed=true] strong{color:#424fc7}
.visitor-body .pose-options small{position:absolute;top:12px;left:12px;padding:3px 6px;font-size:9px;line-height:1.2;color:#6b6f94;background:#e8e9f4;border-radius:5px;margin:0;font-weight:400}
.visitor-body .pose-description{display:none}
.visitor-body .pose-check{position:absolute;right:11px;top:11px;width:21px;height:21px;border-radius:50%;background:white;border:1px solid #e0e1ec;font-size:0;color:transparent;display:grid;place-items:center}
.visitor-body [aria-pressed=true] .pose-check{background:var(--ui-blue);border-color:var(--ui-blue);color:white;font-size:12px}
.visitor-body .pose-pager{gap:20px}
.visitor-body .pose-pager button{background:#f5f5fa;color:#7d809a;border:0}
.visitor-body .pose-pager span{color:#858798}
.visitor-body .design-options button{background:#f6f6fa;border-color:transparent;border-radius:13px;padding:12px 7px;color:#818294;flex-direction:column;gap:8px}
.visitor-body .design-options button[aria-pressed=true]{border-color:var(--ui-blue);padding:11px 6px;color:var(--ui-blue)}
.visitor-body .swatch{width:33px;height:42px;font-size:24px}
.visitor-body .result-canvas{box-shadow:0 8px 25px #2824390c;border-radius:16px}
.visitor-body .result-replay{color:#6f7190;border:1px solid #e4e4ef;background:#fffffff0;font-size:11px;padding:7px 10px}
.visitor-body .work-status{color:#626477}
.visitor-body .work-status progress{accent-color:var(--ui-blue)}
.visitor-body .work-status progress::-webkit-progress-bar{background:#ededf6}
.visitor-body .work-status progress::-webkit-progress-value{background:var(--ui-blue)}
.visitor-body #work-detail{color:#9294a5}
.visitor-body .visitor-modal{background:white;color:#353644;border-radius:26px 26px 0 0}
.visitor-body .visitor-modal h2{font-size:24px;letter-spacing:-.7px}
.visitor-body .close-sheet{color:#88899c}
.visitor-body .sheet-note{color:#9293a1}
.visitor-body .tv-consent{background:#f3f4fb;color:#646779;border-radius:18px}
.visitor-body .tv-consent input{accent-color:var(--ui-blue)}
.visitor-body .tv-illustration{background:#f1f2fa;border-color:#b7bdd9;color:#777da1;font-size:26px;padding:35px 30px}
.visitor-body #toast{background:#30323e;color:white;border-radius:12px;font-size:13px;width:calc(100% - 48px);max-width:350px;bottom:90px}
@media(min-width:700px){.visitor-body .visitor-main{min-height:690px;padding-left:42px;padding-right:42px}.visitor-body .visitor-header{padding-left:38px;padding-right:38px}}
@media(max-width:370px){.visitor-body .visitor-main{padding-left:22px;padding-right:22px}.visitor-body .visitor-main h1{font-size:24px}.visitor-body .pose-options button{min-height:165px}.visitor-body .pose-icon{height:64px}}


/* Approved landing copy: introduction above the cast, keepsake promise above CTA. */
.visitor-body .visitor-main:has(.landing-stage) .step-line{height:6px;margin-bottom:5px}
.visitor-body .visitor-main:has(.landing-stage) h1{line-height:1.3}
.visitor-body .visitor-main:has(.landing-stage) .visitor-actions{margin-top:10px;gap:18px;padding-bottom:20px}
.visitor-body .landing-keepsake{margin:0;font-size:15px;font-weight:500;line-height:1.6;letter-spacing:-.3px;color:#555562;text-align:center}
.visitor-body .visitor-shell:has(.landing-stage) .visitor-header{height:64px;padding-top:17px;padding-bottom:17px}
.visitor-body .visitor-main:has(.landing-stage) .visitor-description{margin-bottom:8px}

.visitor-body .visitor-brand{display:inline-flex;align-items:center;flex-shrink:0}
.visitor-body .visitor-brand img{display:block;width:auto;height:30px;max-width:100%;object-fit:contain}

/* Photo entry: a single portrait guide and two direct input choices. */
.visitor-body .visitor-shell:has(.photo-intro) .visitor-header{height:64px;padding-top:17px;padding-bottom:17px}
.visitor-body .visitor-main:has(.photo-intro){min-height:calc(100svh - 64px);padding-bottom:0}
.visitor-body .visitor-main:has(.photo-intro) .step-line{margin-bottom:16px;height:32px}
.visitor-body .visitor-main:has(.photo-intro) h1{line-height:1.3}
.visitor-body .visitor-main:has(.photo-intro) .visitor-description{color:#71717e;margin-bottom:0}
.visitor-body .visitor-main:has(.photo-intro) .visitor-content{min-height:310px;padding:22px 0;gap:0}
.visitor-body .photo-intro{display:flex;flex-direction:column;align-items:center;gap:22px}
.visitor-body .photo-outline{width:184px;height:207px;position:relative}
.visitor-body .photo-frame{position:absolute;inset:0;width:100%;height:100%;stroke:#8b95e9;stroke-width:2.5;stroke-linecap:round}
.visitor-body .photo-scan-field{position:absolute;inset:14px;border-radius:14px;overflow:hidden;background:transparent;display:grid;place-items:center}
.visitor-body .photo-camera-icon{width:52px;height:52px;stroke:#b5bbd7;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
.visitor-body .photo-scan-light{position:absolute;left:0;right:0;top:0;height:1px;background:#8592f0;animation:photo-scan 3.6s ease-in-out infinite alternate}
@keyframes photo-scan{from{top:0}to{top:calc(100% - 1px)}}
@media(prefers-reduced-motion:reduce){.visitor-body .photo-scan-light{animation:none;top:50%}}
.visitor-body .photo-tip{margin:0;display:grid;gap:8px;font-size:13px;line-height:1.65;color:#787985}
.visitor-body .photo-tip strong{font-size:16px;font-weight:600;color:#41424e}
.visitor-body .visitor-main:has(.photo-intro) .visitor-actions{margin-top:12px;padding-bottom:20px;gap:10px}
.visitor-body .photo-sample{padding-top:5px}
.visitor-body .photo-sample p{font-size:10px;line-height:1.6;color:#777986;margin:0}
.visitor-body .photo-sample .plain{font-size:11px;color:#686a7c;padding:7px 8px}
@media(max-height:760px){.visitor-body .visitor-main:has(.photo-intro) .visitor-content{min-height:258px;padding:16px 0}.visitor-body .photo-outline{width:144px;height:162px}.visitor-body .photo-intro{gap:15px}}

/* Confirm the selected image without cropping or implying completed analysis. */
.visitor-body .visitor-shell:has(.photo-review) .visitor-header{height:64px;padding-top:17px;padding-bottom:17px}
.visitor-body .visitor-main:has(.photo-review){min-height:calc(100svh - 64px);padding-bottom:0}
.visitor-body .visitor-main:has(.photo-review) .step-line{height:32px;margin-bottom:16px}
.visitor-body .visitor-main:has(.photo-review) h1{line-height:1.3}
.visitor-body .visitor-main:has(.photo-review) .visitor-description{margin-bottom:0;color:#71717e}
.visitor-body .visitor-main:has(.photo-review) .visitor-content{padding:24px 0;min-height:340px}
.visitor-body .photo-review{display:flex;flex-direction:column;align-items:center;gap:20px;width:100%}
.visitor-body .photo-review-frame{width:100%;max-width:260px;height:330px;background:#f7f8fc;border:1px solid #ecedf3;border-radius:20px;overflow:hidden}
.visitor-body .photo-review-frame .photo-confirm{display:block;width:100%;height:100%;max-width:none;max-height:none;object-fit:contain;border-radius:0;background:transparent}
.visitor-body .photo-review-tip{margin:0;color:#757683;font-size:13px;line-height:1.65}
.visitor-body .visitor-main:has(.photo-review) .visitor-actions{margin-top:12px;padding-bottom:20px;gap:10px}
.visitor-body .photo-review-note{margin:5px 0 0;color:#777986;font-size:10px;line-height:1.7}
@media(max-height:760px){.visitor-body .visitor-main:has(.photo-review) .visitor-content{min-height:285px;padding:18px 0}.visitor-body .photo-review-frame{max-width:210px;height:255px}.visitor-body .photo-review{gap:14px}}

/* Overall journey is separate from generation/loading progress. */
.visitor-body .visitor-shell.has-journey .journey-header{display:grid;grid-template-columns:44px 1fr 44px;height:68px;padding-top:12px;padding-bottom:12px;align-items:center}
.visitor-body .journey-header .visitor-brand{justify-self:center}
.visitor-body .journey-header .plain{width:44px;height:44px;padding:0;background:none;border:0;text-decoration:none;font-size:25px;color:#333440;text-align:left}
.visitor-body .journey-progress{width:100%;margin:8px 0 26px}
.visitor-body .journey-track{height:3px;background:#eeeef3;border-radius:3px;overflow:hidden}
.visitor-body .journey-fill{display:block;height:100%;background:var(--ui-blue);border-radius:3px}
.visitor-body .journey-caption{display:flex;justify-content:space-between;margin-top:10px;font-size:11px;line-height:1.5;color:#818390}
.visitor-body .journey-caption span:first-child{color:#606274;font-weight:500}
.visitor-body .has-journey .visitor-main:has(.photo-intro),.visitor-body .has-journey .visitor-main:has(.photo-review){min-height:calc(100svh - 68px)}

/* Candidate selection: large transparent character with three clear choices. */
.visitor-body .visitor-main:has(.character-picker){min-height:calc(100svh - 68px);padding-bottom:0}
.visitor-body .visitor-main:has(.character-picker) h1{line-height:1.3}
.visitor-body .visitor-main:has(.character-picker) .visitor-description{color:#71717e;margin-bottom:0}
.visitor-body .visitor-main:has(.character-picker) .visitor-content{padding:16px 0;min-height:360px}
.visitor-body .character-picker{width:100%;display:flex;flex-direction:column;align-items:center;gap:16px}
.visitor-body .character-picker .candidate-main{background:transparent;width:100%;max-width:300px;height:280px}
.visitor-body .character-picker .candidate-main .single-avatar{width:100%;height:100%;min-height:0;object-fit:contain}
.visitor-body .character-picker .candidate-options{width:100%;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}
.visitor-body .character-picker .candidate-options button{position:relative;border:1.5px solid #eeeef3;border-radius:16px;background:white;padding:7px 4px 12px;color:#737584;min-width:0}
.visitor-body .character-picker .candidate-options button[aria-pressed=true]{border-color:var(--ui-blue);background:white;color:var(--ui-blue)}
.visitor-body .candidate-thumb{display:block;height:80px;overflow:hidden}
.visitor-body .character-picker .candidate-options img{width:100%;height:100%;object-fit:contain}
.visitor-body .character-picker .candidate-options .candidate-check{position:absolute;top:7px;right:7px;width:17px;height:17px;border-radius:50%;font-size:11px;display:grid;place-items:center}
.visitor-body .character-picker [aria-pressed=true] .candidate-check{background:var(--ui-blue);color:white}
.visitor-body .visitor-main:has(.character-picker) .visitor-actions{margin-top:14px;padding-bottom:22px;gap:14px}
.visitor-body .candidate-disclosure{margin:0;font-size:11px;line-height:1.7;color:#777986}
@media(max-height:760px){.visitor-body .character-picker .candidate-main{height:220px}.visitor-body .character-picker{gap:14px}.visitor-body .candidate-thumb{height:70px}.visitor-body .visitor-main:has(.character-picker) .visitor-content{padding:12px 0;min-height:320px}}

/* Six ready-made avatars, no gender gate. */
.visitor-body .sample-picker .candidate-main{height:210px}
.visitor-body .sample-picker .candidate-thumb{height:60px}
.visitor-body .sample-picker.character-picker{gap:14px}
.visitor-body .sample-picker .candidate-options{row-gap:9px}
.visitor-body .sample-picker.character-picker .candidate-options button{padding-bottom:8px}
.visitor-body img[data-avatar="studio"],.visitor-body video[data-avatar="studio"],.visitor-body .candidate-options [data-avatar="studio"] .candidate-thumb img{transform:scale(.95)}
@media(max-height:760px){.visitor-body .sample-picker .candidate-main{height:165px}.visitor-body .sample-picker .candidate-thumb{height:48px}}

/* Naming: selected avatar, one field, one next action. */
.visitor-body .visitor-main:has(.name-editor){min-height:calc(100svh - 68px);padding-bottom:0}
.visitor-body .visitor-main:has(.name-editor) h1{line-height:1.3}
.visitor-body .visitor-main:has(.name-editor) .visitor-description{color:#71717e;margin-bottom:0}
.visitor-body .visitor-main:has(.name-editor) .visitor-content{padding:24px 0;min-height:350px}
.visitor-body .name-editor{width:100%;display:flex;flex-direction:column;align-items:center;gap:26px}
.visitor-body .name-editor .name-avatar{width:100%;height:290px;display:flex;justify-content:center}
.visitor-body .name-editor .single-avatar{width:100%;height:100%;object-fit:contain;max-width:270px}
.visitor-body .name-field{width:100%;text-align:left}
.visitor-body .name-field .field-label{display:block;font-size:12px;color:#555969;margin-bottom:10px}
.visitor-body .name-field .name-input{width:100%;border:1px solid #e4e6ee;border-radius:14px;padding:17px 16px;font-size:18px!important;background:white;text-align:left;letter-spacing:-.3px;outline-offset:3px}
.visitor-body .name-field .name-input::placeholder{color:#a2a5b1;font-size:15px}
.visitor-body .name-field .name-input:focus{border-color:var(--ui-blue)}
.visitor-body .name-field-meta{display:flex;justify-content:space-between;align-items:baseline;gap:8px;margin-top:10px;font-size:10px;color:#858896;line-height:1.6}
.visitor-body .name-field-meta p{margin:0}
.visitor-body #name-count{white-space:nowrap;font-variant-numeric:tabular-nums}
.visitor-body .visitor-main:has(.name-editor) .visitor-actions{margin-top:16px;padding-bottom:24px}
@media(max-height:760px){.visitor-body .name-editor .name-avatar{height:210px}.visitor-body .name-editor{gap:20px}.visitor-body .visitor-main:has(.name-editor) .visitor-content{padding:16px 0;min-height:280px}}

/* Pose selection: four choices with clear multi-select states. */
.visitor-body .visitor-main:has(.pose-picker){min-height:calc(100svh - 68px);padding-bottom:0}
.visitor-body .visitor-main:has(.pose-picker) h1{line-height:1.3}
.visitor-body .visitor-main:has(.pose-picker) .visitor-description{color:#71717e;margin-bottom:0}
.visitor-body .visitor-main:has(.pose-picker) .visitor-content{padding:28px 0;min-height:350px}
.visitor-body .pose-picker{width:100%}
.visitor-body .pose-picker-caption{display:flex;justify-content:space-between;font-size:11px;color:#858896;margin-bottom:14px}
.visitor-body .pose-picker-caption span:last-child{color:var(--ui-blue);font-weight:600}
.visitor-body .pose-picker .pose-options{padding:0;gap:12px}
.visitor-body .pose-picker .pose-options button{background:white;border:1.5px solid #e8e9f0;border-radius:18px;min-height:180px;gap:14px;padding:26px 8px 20px}
.visitor-body .pose-picker .pose-options button[aria-pressed=true]{background:#f8f9ff;border-color:var(--ui-blue);padding:26px 8px 20px}
.visitor-body .pose-picker .pose-icon{height:62px;width:64px;color:#9ba2bf}
.visitor-body .pose-picker [aria-pressed=true] .pose-icon{color:var(--ui-blue)}
.visitor-body .pose-picker .pose-icon svg{width:58px;height:58px;stroke-width:2.5}
.visitor-body .pose-picker .letter-pose{font-size:64px;letter-spacing:-4px}
.visitor-body .pose-card-copy{display:grid;gap:8px}
.visitor-body .pose-picker .pose-description{display:block;font-size:10px;line-height:1.5;color:#8a8d9b;margin:0;word-break:keep-all}
.visitor-body .pose-picker .pose-check{width:19px;height:19px;top:12px;right:12px}
.visitor-body .visitor-main:has(.pose-picker) .visitor-actions{margin-top:12px;padding-bottom:22px;gap:14px}
.visitor-body .pose-disclosure{margin:0;font-size:11px;line-height:1.7;color:#777986}
@media(max-height:760px){.visitor-body .visitor-main:has(.pose-picker) .visitor-content{padding:20px 0;min-height:320px}.visitor-body .pose-picker .pose-options button{min-height:155px;padding:20px 7px 16px}.visitor-body .pose-picker .pose-options button[aria-pressed=true]{padding:20px 7px 16px}.visitor-body .pose-picker .pose-description{font-size:9px}}

/* Action-related guidance precedes the action; demo caveats live at entry. */
.visitor-body .cta-hint{margin:0 0 3px;font-size:11px;line-height:1.7;color:#777986;text-align:center;word-break:keep-all}

/* Background choice: one large card and three visual swatches. */
.visitor-body .visitor-main:has(.card-designer){min-height:calc(100svh - 68px);padding-bottom:0}
.visitor-body .visitor-main:has(.card-designer) h1{line-height:1.3;font-size:25px}
.visitor-body .visitor-main:has(.card-designer) .visitor-description{color:#71717e;margin-bottom:0}
.visitor-body .visitor-main:has(.card-designer) .visitor-content{padding:20px 0;min-height:360px}
.visitor-body .card-designer{width:100%;display:flex;flex-direction:column;align-items:center;gap:22px}
.visitor-body .card-designer .result-canvas{width:234px;max-width:100%;aspect-ratio:3/4;border-radius:13px;box-shadow:0 5px 18px #252c4010}
.visitor-body .background-choices{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px;width:100%}
.visitor-body .background-choices button{border:0;background:none;display:flex;flex-direction:column;align-items:center;gap:9px;padding:4px 0;color:#858896;font-size:11px}
.visitor-body .background-swatch{display:grid;place-items:center;width:55px;height:65px;border:3px solid white;outline:1px solid #e6e8ef;border-radius:9px;color:white;font-size:12px}
.visitor-body .background-swatch.garden{background:repeating-linear-gradient(90deg,transparent 0 12px,#cad5b4 12px 13px),#eff0da}
.visitor-body .background-swatch.sky{background:radial-gradient(ellipse at 10% 60%,#fff 0 24%,transparent 25%),#dcecf5}
.visitor-body .background-swatch.ticket{background:repeating-linear-gradient(90deg,#f9e5d6 0 8px,#f4dacf 8px 16px)}
.visitor-body .background-choices [aria-pressed=true]{color:var(--ui-blue)}
.visitor-body .background-choices [aria-pressed=true] .background-swatch{outline:2px solid var(--ui-blue)}
.visitor-body .background-swatch span:not(:empty){display:grid;place-items:center;background:var(--ui-blue);border-radius:50%;width:20px;height:20px}
.visitor-body .visitor-main:has(.card-designer) .visitor-actions{margin-top:12px;padding-bottom:22px;gap:12px}
@media(max-height:760px){.visitor-body .card-designer .result-canvas{width:192px}.visitor-body .card-designer{gap:18px}.visitor-body .visitor-main:has(.card-designer) .visitor-content{padding:16px 0;min-height:310px}}

/* Collection: moving card preview, pose paging and one save entry point. */
.visitor-body .visitor-main:has(.finished-card){min-height:calc(100svh - 68px);padding-bottom:0}
.visitor-body .visitor-main:has(.finished-card) h1{line-height:1.3;font-size:25px}
.visitor-body .visitor-main:has(.finished-card) .visitor-description{color:#71717e;margin-bottom:0}
.visitor-body .visitor-main:has(.finished-card) .visitor-content{padding:20px 0;min-height:360px}
.visitor-body .finished-card{display:flex;flex-direction:column;align-items:center;gap:12px;width:100%}
.visitor-body .finished-card .result-canvas{width:234px;aspect-ratio:3/4;border-radius:13px}
.visitor-body .finished-card .result-replay{width:30px;height:30px;border-radius:50%;font-size:19px;display:grid;place-items:center;padding:0;right:9px;bottom:9px;color:#565b74}
.visitor-body .finished-card .pose-pager{gap:18px}
.visitor-body .finished-card .pose-pager span{font-size:12px;color:#676b7c}
.visitor-body .finished-card .pose-pager button:disabled{opacity:.3}
.visitor-body .finished-card #design{padding:2px 8px;font-size:11px}
.visitor-body .result-status{display:grid;gap:8px;max-width:270px;font-size:11px;line-height:1.6;color:#777986}
.visitor-body .result-status[hidden],.visitor-body .result-status progress[hidden]{display:none}
.visitor-body .result-status progress{width:100%;height:4px;accent-color:var(--ui-blue)}
.visitor-body .visitor-main:has(.finished-card) .visitor-actions{margin-top:10px;padding-bottom:18px;gap:10px}
@media(max-height:760px){.visitor-body .finished-card .result-canvas{width:190px}.visitor-body .finished-card{gap:8px}.visitor-body .visitor-main:has(.finished-card) .visitor-content{min-height:310px;padding:12px 0}}

/* Peek carousel: only the active card plays video; neighbors are still images. */
.visitor-body .result-carousel{--card-width:220px;position:relative;width:calc(100% + 56px);max-width:100vw;height:calc(var(--card-width) * 4 / 3 + 12px);overflow:hidden;touch-action:pan-y;outline-offset:-4px}
.visitor-body .result-track{position:absolute;top:6px;left:calc(50% - var(--card-width) / 2);display:flex;gap:16px;transform:translateX(calc(var(--active-slide) * (var(--card-width) + 16px) * -1))}
.visitor-body .result-slide{width:var(--card-width);flex-shrink:0;transform:scale(.88);opacity:.45;transform-origin:center;transition:opacity .25s,scale .25s}
.visitor-body .result-slide.is-active{transform:scale(1);opacity:1}
.visitor-body .finished-card .result-slide .result-canvas{width:var(--card-width)}
.visitor-body .adjacent-card{position:absolute;inset:0;background:transparent;border:0;border-radius:13px;cursor:pointer}
.visitor-body .carousel-dots{display:flex;align-items:center;justify-content:center;gap:0;height:24px}
.visitor-body .carousel-dots button{width:26px;height:24px;border:0;background:none;position:relative;padding:0}
.visitor-body .carousel-dots button:after{content:'';position:absolute;top:9px;left:10px;width:6px;height:6px;border-radius:4px;background:#dcdfe8}
.visitor-body .carousel-dots [aria-current=true]:after{background:var(--ui-blue);width:16px;left:5px}
.visitor-body .finished-card:has(.carousel-dots){gap:8px}
@media(max-height:760px){.visitor-body .result-carousel{--card-width:190px}}
@media(prefers-reduced-motion:reduce){.visitor-body .result-slide{transition:none}}

/* Preview status must not add/remove height during carousel navigation. */
.visitor-body .finished-card{position:relative}
.visitor-body .finished-card .result-status{position:absolute;z-index:3;top:112px;left:50%;transform:translateX(-50%);width:calc(100% - 70px);max-width:230px;padding:12px 14px;border-radius:12px;background:#fffffff2;box-shadow:0 2px 12px #252c4010;pointer-events:none}

/* Save sheet follows the same cobalt/soft-gray button hierarchy as the maker. */
.visitor-body .visitor-modal.save-sheet{max-width:460px;padding:26px 24px max(20px,env(safe-area-inset-bottom));border-radius:24px 24px 0 0;max-height:90svh}
.visitor-body .save-sheet h2{font-size:22px;margin:0 0 26px;text-align:left;letter-spacing:-.6px;line-height:1.4}
.visitor-body .save-sheet .close-sheet{height:32px;padding:0 2px;border:0;background:none;font-size:12px;color:#858896;margin:0;line-height:32px}
.visitor-body .save-format-buttons{display:grid;grid-template-columns:1fr;gap:10px;margin-bottom:10px}
.visitor-body .save-sheet .visitor-secondary{font-size:14px;min-height:54px;border-radius:14px;background:#f4f5fa;color:#545665;padding:14px 10px}
.visitor-body .save-sheet .visitor-primary{font-size:16px;border-radius:14px;min-height:56px}
.visitor-body .save-utilities{display:flex;justify-content:center;gap:24px;margin-top:6px}
.visitor-body .save-utilities button{border:0;background:none;font-size:13px;color:#858896;padding:8px 6px;line-height:1.5}
.visitor-body .save-utilities button:hover{color:#444958}
/* 상태 칸은 버튼 위에, 높이를 고정해 둔다 — 내보내기가 시작돼도 버튼과 「링크 복사」가 밀리지 않는다(2026-09-28). */
.visitor-body .save-sheet .save-status{min-height:78px;display:flex;flex-direction:column;justify-content:center;margin:0 0 14px;text-align:center}
.visitor-body .save-sheet .save-status p{margin:2px 0}
.visitor-body .save-sheet .save-hint{color:#858896;font-size:14px;line-height:1.5}
.visitor-body .save-sheet .save-status .work-status{width:100%}
.visitor-body .save-sheet .save-status progress{width:100%;margin:6px 0}
/* Shared visitor modal shell: design and save sheets use the same rhythm. */
.visitor-body .visitor-modal{max-width:500px;padding:28px 24px max(28px,env(safe-area-inset-bottom));max-height:90svh}
.visitor-body .visitor-modal h2{margin:0 0 22px;font-size:23px;line-height:1.4;letter-spacing:-.7px}
.visitor-body .visitor-modal .close-sheet{height:32px;margin:0;padding:0 2px;border:0;background:none;font-size:22px;line-height:32px;color:#858896}
.visitor-body .visitor-modal .result-canvas{display:block;margin:0 auto;border-radius:16px}
.visitor-body .visitor-modal .design-options{margin-top:24px}
.visitor-body .visitor-modal .sheet-actions{margin:24px 0 0;gap:12px}
.visitor-body .visitor-modal .sheet-actions .visitor-primary{margin:0}
.visitor-body .visitor-modal.save-sheet{max-width:500px;padding:28px 24px max(28px,env(safe-area-inset-bottom))}
.visitor-body .visitor-modal.save-sheet h2{margin:0 0 22px;font-size:23px;line-height:1.4}
.visitor-body .visitor-modal.save-sheet .close-sheet{font-size:22px;line-height:32px}
/* Optional TV invitation reuses the selected character and one consent action. */
.visitor-body .visitor-main:has(.tv-invitation){min-height:calc(100svh - 68px);padding-top:26px;padding-bottom:0}
.visitor-body .visitor-main:has(.tv-invitation) h1{line-height:1.3}
.visitor-body .visitor-main:has(.tv-invitation) .visitor-description{color:#71717e;margin-bottom:0}
.visitor-body .visitor-main:has(.tv-invitation) .visitor-content{padding:28px 0;min-height:300px}
.visitor-body .tv-invitation{display:flex;flex-direction:column;align-items:center;gap:28px;width:100%}
.visitor-body .tv-demo{width:100%;max-width:290px;position:relative;padding-bottom:16px}
.visitor-body .tv-demo-screen{position:relative;z-index:1;background:#fafbfe;border:5px solid #3b4050;border-radius:14px;height:188px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:0}
.visitor-body .tv-demo-screen img{display:block;height:143px;width:160px;object-fit:contain}
.visitor-body .tv-demo-screen span{font-size:12px;font-weight:600;color:#535b76;max-width:90%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.visitor-body .tv-demo-stand{position:absolute;bottom:0;left:50%;transform:translateX(-50%);width:80px;height:18px;border-bottom:4px solid #3b4050}
.visitor-body .tv-demo-stand:before{content:'';position:absolute;left:34px;width:12px;height:14px;background:#3b4050}
.visitor-body .tv-invitation-copy{font-size:14px;line-height:1.7;color:#6b6f7d;margin:0}
.visitor-body .tv-public-consent{background:white;border:1px solid #e6e8ef;padding:16px 14px;border-radius:14px;gap:12px;font-size:13px;color:#555b6b;line-height:1.6}
.visitor-body .tv-public-consent input{flex-shrink:0;width:18px;height:18px;margin-top:2px}
.visitor-body .visitor-main:has(.tv-invitation) .visitor-actions{gap:14px;padding-bottom:24px;margin-top:12px}
@media(max-height:760px){.visitor-body .visitor-main:has(.tv-invitation){padding-top:18px}.visitor-body .visitor-main:has(.tv-invitation) .visitor-content{min-height:250px;padding:20px 0}.visitor-body .tv-demo{max-width:250px}.visitor-body .tv-demo-screen{height:165px}.visitor-body .tv-demo-screen img{height:123px}.visitor-body .tv-invitation{gap:22px}}


.visitor-body .collection-utilities{display:flex;justify-content:center;gap:24px}
.visitor-body .save-sheet h2{padding-right:38px;font-size:21px}

/* Six reference gesture previews, illustrated by the same sample avatar. */
.visitor-body .pose-picker .pose-options{gap:14px}
.visitor-body .pose-picker .pose-options button,.visitor-body .pose-picker .pose-options button[aria-pressed=true]{padding:9px 9px 15px;gap:9px;min-height:0;overflow:hidden;border-radius:16px}
.visitor-body .pose-avatar-preview{display:block;width:100%;aspect-ratio:1;background-image:url('/assets/pose-previews/avatar05-six-poses-v4.webp');background-size:303% 202%;background-position:var(--pose-x) var(--pose-y);background-repeat:no-repeat;border-radius:10px}
.visitor-body .pose-picker .pose-card-copy{gap:7px}.visitor-body .pose-picker .pose-description{font-size:11px;line-height:1.5;color:#777b8b;font-weight:400;min-height:1.5em}.visitor-body .pose-picker .pose-check{z-index:1;box-shadow:0 1px 5px #1618300d}

/* Final shared modal overrides follow the legacy sheet rules above. */
.visitor-body .visitor-modal h2,.visitor-body .visitor-modal.save-sheet h2{padding-right:38px;margin:0 0 22px;font-size:23px;line-height:1.4;letter-spacing:-.7px}
.visitor-body .visitor-modal.save-sheet .close-sheet,.visitor-body .visitor-modal.design-sheet .close-sheet{font-size:22px;line-height:32px;color:#858896}
.visitor-body .pose-picker .pose-options strong{font-size:14px}.visitor-body .visitor-main:has(.pose-picker) .visitor-content{padding:20px 0;justify-content:flex-start}.visitor-body .pose-picker .pose-options button[aria-pressed=true]{box-shadow:0 0 0 1px var(--ui-blue)}

/* Match the welcome cast and make the chosen character and thumbnails readable. */
.visitor-body .character-picker .candidate-main,.visitor-body .name-editor .name-avatar{height:476px;max-width:100%;flex-shrink:0}
.visitor-body .sample-picker .candidate-thumb{height:100px}
@media(max-height:760px){.visitor-body .character-picker .candidate-main,.visitor-body .name-editor .name-avatar{height:400px}.visitor-body .sample-picker .candidate-thumb{height:84px}}

/* Use the same media bounds as the character selection preview. */
.visitor-body .name-editor .single-avatar{max-width:100%;min-height:0}

/* Regeneration keeps the old result visible and requires an explicit choice. */
.visitor-body .candidate-options[hidden]{display:none!important}
.regeneration-feedback{width:100%;max-width:440px;margin:28px auto;display:grid;gap:18px}
.regeneration-reasons{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.regeneration-reasons button{margin:0;min-height:64px}
.regeneration-reasons button[aria-pressed=true]{border-color:#514bff;background:#f2f1ff;color:#514bff}
.regeneration-feedback textarea{width:100%;min-height:100px;resize:vertical;font:inherit;padding:16px}
.regeneration-compare{width:100%;max-width:460px;margin:32px auto;display:grid;grid-template-columns:1fr 1fr;gap:14px}
.regeneration-compare button{min-width:0;border:1px solid #e4e5ee;border-radius:20px;padding:14px 8px 20px;background:#fff;color:#292936;display:grid;gap:12px;font:inherit}
.regeneration-compare button[aria-pressed=true]{border-color:#514bff;background:#f5f4ff;color:#514bff}
.regeneration-compare img{width:100%;height:clamp(210px,35vh,340px);object-fit:contain}
.regeneration-loading-avatar{width:100%;height:220px;object-fit:contain}
@media(max-width:360px){.regeneration-reasons{gap:8px}.regeneration-reasons button{font-size:13px}.regeneration-compare{gap:8px}}
.visitor-body .regeneration-feedback textarea.regeneration-note{font-size:15px;text-align:left;line-height:1.6;border:1px solid #e4e5ee;border-radius:16px;padding:16px;min-height:110px}

.regeneration-note:focus-visible{outline:2px solid #514bff;outline-offset:3px}

/* Cross reference: wrists overlap in front of the chest; hands fan outward. */
.visitor-body [data-pose="arms-crossed"] .pose-avatar-preview{background-image:url('/assets/pose-previews/avatar05-cross-wrists-v2.webp');background-size:contain;background-position:center}

/* Shared final-pose posters and selected pose clips. */
.visitor-body .pose-avatar-preview.pose-media-preview{position:relative;overflow:hidden;background-image:none;background-color:#f7f4f0}
.visitor-body .pose-media-preview img,.visitor-body .pose-media-preview video{position:absolute;display:block;width:100%;height:100%;max-width:none;left:0;top:0;margin:0;object-fit:contain;object-position:center}
/* ── 바텀 시트 (2026-09-19 아이폰 제보) ─────────────────────────────
   머리(제목·×)와 아래 실행 버튼은 고정, 가운데만 스크롤. dialog 는 화면 전체를 덮는 투명한 틀이고 보이는 시트는 .sheet-panel 이다.
   iOS 26 Safari 는 modal ::backdrop 색으로 위·아래 띠를 둘 다 칠한다 — backdrop 은 투명, 딤과 바닥 조각은 dialog 안의 fixed 요소. */
.visitor-body dialog.visitor-modal[open]{position:fixed;inset:0;width:100%;height:100%;max-width:none;max-height:none;margin:0;padding:0;border:0;border-radius:0;background:transparent;overflow:visible;display:flex;flex-direction:column;justify-content:flex-end;align-items:center}
.visitor-body dialog.visitor-modal::backdrop{background:transparent}
.visitor-body dialog.visitor-modal .sheet-dim{position:fixed;inset:0;background:#18291e88;animation:sheet-dim-in .24s ease both}
.visitor-body dialog.visitor-modal .sheet-floor{position:fixed;left:50%;bottom:0;width:min(100%,500px);height:24px;transform:translateX(-50%);background:#fff;pointer-events:none;animation:sheet-dim-in .24s ease .2s both}
.visitor-body dialog.visitor-modal .sheet-panel{position:relative;display:flex;flex-direction:column;width:100%;max-width:500px;max-height:min(90svh,calc(100% - 40px));background:#fff;color:#353644;border-radius:26px 26px 0 0;overflow:hidden;animation:sheet-in .36s cubic-bezier(.32,.72,0,1) both}
.visitor-body dialog.visitor-modal .sheet-head{flex:0 0 auto;display:flex;align-items:center;gap:8px;padding:18px 14px 10px 24px}
.visitor-body dialog.visitor-modal .sheet-head h2{flex:1 1 auto;min-width:0;margin:0;padding:0;font-size:21px;line-height:1.35;letter-spacing:-.6px;text-align:left;outline:none}
.visitor-body dialog.visitor-modal .sheet-head .close-sheet{flex:0 0 44px;float:none;width:44px;height:44px;margin:0;padding:0;border:0;border-radius:50%;background:none;font-size:24px;line-height:44px;color:#858896}
.visitor-body dialog.visitor-modal .sheet-head .close-sheet:active{background:#f1f2f7}
.visitor-body dialog.visitor-modal .sheet-body{flex:1 1 auto;min-height:0;overflow-y:auto;overscroll-behavior:contain;-webkit-overflow-scrolling:touch;padding:6px 24px 24px}
.visitor-body dialog.visitor-modal .sheet-foot{flex:0 0 auto;padding:12px 24px max(16px,env(safe-area-inset-bottom));background:#fff;box-shadow:0 -1px 0 #eef0f6}
.visitor-body dialog.visitor-modal .sheet-foot .visitor-primary{margin:0;width:100%}
.visitor-body dialog.visitor-modal .sheet-error{margin:0 0 10px;color:#c9364a;font-size:13px;line-height:1.45;text-align:center}
.visitor-body dialog.visitor-modal.save-sheet .sheet-body{padding-bottom:max(24px,env(safe-area-inset-bottom))}
/* 미리보기는 화면 높이에 맞춰 줄인다 — 디자인 넷과 실행 버튼이 스크롤 없이 한 화면에 들어오게. */
.visitor-body dialog.visitor-modal.design-sheet .result-canvas{width:auto;height:auto;max-width:100%;max-height:min(42svh,400px)}
.visitor-body dialog.visitor-modal.design-sheet .design-options{margin-top:18px}
@keyframes sheet-in{from{transform:translateY(100%)}to{transform:translateY(0)}}
@keyframes sheet-dim-in{from{opacity:0}to{opacity:1}}
@media(prefers-reduced-motion:reduce){.visitor-body dialog.visitor-modal .sheet-dim,.visitor-body dialog.visitor-modal .sheet-floor,.visitor-body dialog.visitor-modal .sheet-panel{animation:none}}

/* 생성 화면(2026-09-27 C1+C2): 사진 앵커 + 세로 연결선 스텝퍼 카드. 막대는 시계로 채워져 끊기지 않는다. */
.visitor-body .gen-card{width:100%;max-width:360px;margin:4px auto 6px;padding:22px 22px 18px;background:#fff;border:1px solid #ecedf4;border-radius:22px;box-shadow:0 10px 30px rgba(41,41,54,.06);display:grid;gap:18px;justify-items:center}
.visitor-body .gen-anchor{position:relative;width:96px;height:96px;border-radius:50%;background:#f4f5fa}
.visitor-body .gen-anchor img{width:100%;height:100%;border-radius:50%;object-fit:cover;object-position:center 12%;background:#f4f5fa}
.visitor-body .gen-anchor.empty::after{content:'';position:absolute;inset:30%;border-radius:50%;background:#dcdff0}
.visitor-body .gen-ring{position:absolute;inset:-6px;border-radius:50%;border:3px solid #e6e7f6;border-top-color:var(--ui-blue);animation:gen-spin 1.1s linear infinite}
.visitor-body .gen-card.complete .gen-ring{border-color:var(--ui-blue);animation:none}
@keyframes gen-spin{to{transform:rotate(360deg)}}
.visitor-body .gen-stages{list-style:none;margin:0;padding:0;width:100%;display:grid;gap:0}
.visitor-body .gen-stage{position:relative;display:grid;grid-template-columns:22px 1fr auto;align-items:center;gap:12px;min-height:38px;color:#9294a5;font-size:15px}
.visitor-body .gen-stage+.gen-stage::before{content:'';position:absolute;left:10px;top:-9px;height:18px;border-left:2px solid #e6e7f6;z-index:0}
.visitor-body .gen-stage.done+.gen-stage::before{border-color:var(--ui-blue)}
.visitor-body .gen-stage.active{color:#292936;font-weight:600}
.visitor-body .gen-stage.done{color:#626477}
.visitor-body .gen-dot{position:relative;z-index:1;width:22px;height:22px;border-radius:50%;border:2px solid #dcdff0;background:#fff;justify-self:center}
.visitor-body .gen-stage.active .gen-dot{border-color:var(--ui-blue);background:#fff;box-shadow:0 0 0 4px rgba(81,75,255,.14);animation:gen-pulse 1.2s ease-in-out infinite}
.visitor-body .gen-stage.active .gen-dot::after{content:'';position:absolute;inset:5px;border-radius:50%;background:var(--ui-blue)}
.visitor-body .gen-stage.done .gen-dot{border-color:var(--ui-blue);background:var(--ui-blue)}
.visitor-body .gen-stage.done .gen-dot::after{content:'';position:absolute;left:7px;top:3px;width:5px;height:10px;border:solid #fff;border-width:0 2px 2px 0;transform:rotate(45deg)}
.visitor-body .gen-label{text-align:left}
.visitor-body .gen-hint{font-size:13px;font-weight:400;color:#9294a5;text-align:right;white-space:nowrap}
.visitor-body .gen-stage.active .gen-hint{color:var(--ui-blue)}
@keyframes gen-pulse{0%,100%{box-shadow:0 0 0 3px rgba(81,75,255,.12)}50%{box-shadow:0 0 0 6px rgba(81,75,255,.22)}}
@media(prefers-reduced-motion:reduce){.visitor-body .gen-stage.active .gen-dot,.visitor-body .gen-ring{animation:none}}
.visitor-body .gen-block{display:grid;gap:14px;width:100%;justify-items:center}
.visitor-body .gen-block .work-status{width:100%}
.visitor-body .gen-block #work-label:empty{display:none}
/* 포즈 확인 — 선택 모드(2026-09-27). 카드 탭 = 다시 만들 포즈 선택. 그림은 표시용 WebP 를 쓰고, 오기 전엔 스켈레톤. */
.visitor-body .generated-pose-review{position:relative;border-color:#e4e5ee;background:#fff;transition:border-color .15s,box-shadow .15s}
.visitor-body .generated-pose-review.selected{border-color:var(--ui-blue);box-shadow:0 0 0 2px rgba(81,75,255,.18)}
.visitor-body .generated-pose-review .pose-pick{display:block;width:100%;padding:0;border:0;background:none;font:inherit;text-align:left}
.visitor-body .generated-pose-review .pose-frame{display:block;position:relative;background:linear-gradient(110deg,#f1f2f7 30%,#f8f8fc 45%,#f1f2f7 60%);background-size:200% 100%;animation:pose-shimmer 1.4s linear infinite}
.visitor-body .generated-pose-review .pose-frame.loaded{background:#f7f7fb;animation:none}
.visitor-body .generated-pose-review .pose-frame img{opacity:0;transition:opacity .2s}
.visitor-body .generated-pose-review .pose-frame.loaded img{opacity:1}
.visitor-body .generated-pose-gallery:not(.remake-mode) .pose-check{display:none}
.visitor-body .generated-pose-gallery:not(.remake-mode) .pose-pick{pointer-events:none}
.visitor-body .generated-pose-review .pose-check{position:absolute;top:10px;right:10px;width:26px;height:26px;border-radius:50%;border:2px solid #fff;background:#fff;box-shadow:0 1px 4px rgba(0,0,0,.12);display:grid;place-items:center;color:#fff;font-size:14px;font-weight:700;transition:background .15s}
.visitor-body .generated-pose-review.selected .pose-check{background:var(--ui-blue)}
@keyframes pose-shimmer{to{background-position:-200% 0}}
@media(prefers-reduced-motion:reduce){.visitor-body .generated-pose-review .pose-frame{animation:none}}
/* 포즈 고르기 미리보기: WebP 가 오기 전엔 스켈레톤(2026-09-27) */
.visitor-body .pose-avatar-preview.pose-media-preview{background-image:linear-gradient(110deg,#f1efe9 30%,#faf8f3 45%,#f1efe9 60%);background-size:200% 100%;animation:pose-shimmer 1.4s linear infinite}
.visitor-body .pose-avatar-preview.pose-media-preview.loaded{background-image:none;animation:none}
.visitor-body .pose-avatar-preview.pose-media-preview img{opacity:0;transition:opacity .2s}
.visitor-body .pose-avatar-preview.pose-media-preview.loaded img{opacity:1}
