/* Canonical photo view rules from visitor.css and visitor-v2.css. */
.device .visitor-main{padding:4px 30px 12px;flex:1;display:flex;flex-direction:column;text-align:center;min-height:700px}
.device .visitor-main h1{font-size:29px;line-height:1.38;letter-spacing:-1.2px;margin:0 0 12px;font-weight:750;overflow-wrap:break-word}
.device .visitor-description{font-size:14px;line-height:1.6;color:#69716c;margin:0 0 18px;overflow-wrap:break-word}
.device .visitor-content{flex:1;display:flex;flex-direction:column;justify-content:center;align-items:center;gap:16px;min-height:280px}
.device .visitor-actions{display:flex;flex-direction:column;gap:10px;margin-top:26px;padding-bottom:8px}
.device .visitor-primary,.device .visitor-secondary{width:100%;border-radius:13px;min-height:56px;font-size:16px;font-weight:700;padding:14px 20px}
.device .visitor-primary{color:#fffdf4;background:#283e34;border:1px solid #283e34;box-shadow:0 3px 0 #1c2b23}
.device .visitor-primary:hover{background:#365443}
.device .visitor-secondary{background:#fffdf7;border:1px solid #cbd0c3;color:#303d34}
.device .visitor-main .plain{border:0;background:none;color:#677065;padding:8px;font-size:13px;text-decoration:underline;text-underline-offset:4px}
.device .visitor-main{padding-left:52px;padding-right:52px;min-height:690px}
.device .visitor-actions{margin-top:26px}
.device .visitor-main{padding:0 22px 12px;min-height:650px}
.device .visitor-main h1{font-size:25px}
.device .visitor-main h1:lang(ja){word-break:auto-phrase}
.device .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)}
.device .visitor-description{font-size:13px;line-height:1.65;color:#878792;letter-spacing:-.25px;margin-bottom:16px}
.device .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}
.device .visitor-secondary{background:#f4f5fa;border:0;border-radius:16px;color:#545665;min-height:53px;font-size:14px}
.device .visitor-main:has(.landing-stage) .visitor-description{margin-bottom:8px}
.device .visitor-main:has(.photo-intro) .visitor-description{color:#71717e;margin-bottom:0}
.device .visitor-main:has(.photo-intro) .visitor-content{min-height:310px;padding:22px 0;gap:0}
.device .photo-intro{display:flex;flex-direction:column;align-items:center;gap:22px}
.device .photo-outline{width:184px;height:207px;position:relative}
.device .photo-frame{position:absolute;inset:0;width:100%;height:100%;stroke:var(--halloween-guide);stroke-width:2.5;stroke-linecap:round}
.device .photo-scan-field{position:absolute;inset:14px;border-radius:14px;overflow:hidden;background:transparent;display:grid;place-items:center}
.device .photo-camera-icon{width:52px;height:52px;stroke:var(--halloween-icon);stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
.device .photo-scan-light{position:absolute;left:0;right:0;top:0;height:1px;background:var(--halloween-primary);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){.device .photo-scan-light{animation:none;top:50%}}
.device .photo-tip{margin:0;display:grid;gap:8px;font-size:13px;line-height:1.65;color:#787985}
.device .photo-tip strong{font-size:16px;font-weight:600;color:#41424e}
.device .visitor-main:has(.photo-intro) .visitor-actions{margin-top:12px;padding-bottom:20px;gap:10px}
@media(max-height:760px){.device .visitor-main:has(.photo-intro) .visitor-content{min-height:258px;padding:16px 0}.device .photo-outline{width:144px;height:162px}.device .photo-intro{gap:15px}}
.device .visitor-shell:has(.photo-review) .visitor-header{height:64px;padding-top:17px;padding-bottom:17px}
.device .visitor-main:has(.photo-review){min-height:calc(100svh - 64px);padding-bottom:0}
.device .visitor-main:has(.photo-review) .step-line{height:32px;margin-bottom:16px}
.device .visitor-main:has(.photo-review) h1{line-height:1.3}
.device .visitor-main:has(.photo-review) .visitor-description{margin-bottom:0;color:#71717e}
.device .visitor-main:has(.photo-review) .visitor-content{padding:24px 0;min-height:340px}
.device .photo-review{display:flex;flex-direction:column;align-items:center;gap:20px;width:100%}
.device .photo-review-frame{width:100%;max-width:260px;height:330px;background:#f7f8fc;border:1px solid #ecedf3;border-radius:20px;overflow:hidden}
.device .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}
.device .photo-review-tip{margin:0;color:#757683;font-size:13px;line-height:1.65}
.device .visitor-main:has(.photo-review) .visitor-actions{margin-top:12px;padding-bottom:20px;gap:10px}
.device .photo-review-note{margin:5px 0 0;color:#777986;font-size:10px;line-height:1.7}
.device .has-journey .visitor-main:has(.photo-intro),.device .has-journey .visitor-main:has(.photo-review){min-height:calc(100svh - 68px)}
.device .visitor-main:has(.character-picker) .visitor-description{color:#71717e;margin-bottom:0}
.device .visitor-main:has(.name-editor) .visitor-description{color:#71717e;margin-bottom:0}
.device .visitor-main:has(.pose-picker) .visitor-description{color:#71717e;margin-bottom:0}
.device .visitor-main:has(.card-designer) .visitor-description{color:#71717e;margin-bottom:0}
.device .visitor-main:has(.finished-card) .visitor-description{color:#71717e;margin-bottom:0}
.device .save-sheet .visitor-secondary{font-size:14px;min-height:54px;border-radius:14px;background:#f4f5fa;color:#545665;padding:14px 10px}
.device .save-sheet .visitor-primary{font-size:16px;border-radius:14px;min-height:56px}
.device .visitor-modal .sheet-actions .visitor-primary{margin:0}
.device .visitor-main:has(.tv-invitation) .visitor-description{color:#71717e;margin-bottom:0}
.device dialog.visitor-modal .sheet-foot .visitor-primary{margin:0;width:100%}
.device .insta-step .visitor-secondary{width:100%;min-height:48px;background:#fff;border:1px solid var(--ui-line)}
.device .insta-form .visitor-primary{width:100%;margin:6px 0 0}
.device .photo-page{min-height:0;padding:0 28px 8px;text-align:center;flex:1}.device .photo-page h1{font-size:27px;font-weight:700;line-height:1.3;letter-spacing:-1.15px;margin:0 0 12px;color:#22232c}.device .photo-page .visitor-content{width:100%;flex:1}.device .photo-page .photo-frame{margin:0;border:0;border-radius:0;max-width:none;background:transparent}.device .photo-page .visitor-primary{background:var(--halloween-primary)}.device .photo-page .visitor-secondary{background:white;color:#444654;border:1px solid #e0e2ed;box-shadow:none}.device .photo-page .plain{border:0;background:none;color:#686a7c;padding:8px;font-size:13px}.device #app:has(.photo-page) .journey-progress{margin:8px 28px 26px}.device .photo-page .photo-review-frame{margin:auto}@media(max-height:760px){.device .photo-page .photo-review-frame{max-width:210px;height:255px}}

/* Preview banner is outside the original shell: use its remaining flex height. */
.device .visitor-main.photo-page:has(.photo-intro),.device .visitor-main.photo-page:has(.photo-review){min-height:0}.device .photo-page .visitor-content{min-height:0;flex-shrink:1}.device .photo-page .visitor-actions{flex-shrink:0}
