/* Keep the shared object inside the existing felt scene; both paws get a turn. */
.mutual-scene .mutual-object{position:absolute;left:var(--mutual-x,49%);top:62%;width:23%;height:29%;transform:translate(-50%,var(--mutual-y,0)) rotate(var(--mutual-angle,0deg));transition:left .45s,transform .45s;z-index:6;filter:drop-shadow(0 7px 6px #1a26324d);pointer-events:none}
.mutual-object>img,.mutual-object>.outcome-prop{width:100%;height:100%;object-fit:contain}
.mutual-object.is-bookmark{width:30%;height:34%;top:58%}
.mutual-caption{position:absolute;left:50%;bottom:3%;transform:translateX(-50%);max-width:88%;padding:7px 14px;background:#fff0dbea;color:#493728;border:1px dashed #a78762;border-radius:7px;font-size:1rem;line-height:1.45;text-align:center;z-index:8;white-space:normal}
.mutual-targets{position:absolute;left:13%;right:13%;bottom:13%;display:flex;justify-content:space-between;gap:12px;z-index:7}
.mutual-targets button{max-width:42%;min-height:48px;border:2px dashed #dfbb82;background:#183d63e8;color:#fff0d8;border-radius:12px;padding:10px 14px;font:inherit;font-size:1rem;line-height:1.4;cursor:pointer}
.mutual-targets button:disabled{opacity:.55;cursor:default}
.mutual-targets button:focus-visible{outline:3px solid #ffe5b3;outline-offset:4px}
.mutual-dialogue .actions{flex-wrap:wrap;gap:9px}
.mutual-dialogue .actions .btn{white-space:normal;min-height:44px;font-size:1rem;line-height:1.5}
.mutual-skip{font-size:.875rem!important;opacity:.84}
.mutual-camera{position:absolute;left:20%;right:20%;top:42%;bottom:12%;border:2px solid #fff6ddba;border-radius:5px;pointer-events:none;z-index:5}
.mutual-camera::before{content:'桌面试拍';position:absolute;left:8px;top:6px;color:#fff8e8;background:#173651d9;padding:4px 8px;font-size:.875rem}
.mutual-rhythm{position:absolute;left:20%;right:20%;bottom:18%;padding:18px;background:#183752ec;border:1px dashed #d8b77f;border-radius:14px;color:#fff1da;z-index:6;display:grid;gap:12px}
.mutual-rhythm>div{display:flex;align-items:center;gap:12px;font-size:1rem}
.mutual-rhythm b{width:3em;font-weight:normal}.mutual-rhythm i{width:20px;height:20px;border:2px solid #c6ac82;border-radius:50%;background:transparent}.mutual-rhythm i.filled{background:#f4bb70;border-color:#ffe0ae}
.mutual-rhythm .guest-beat{animation:mutual-beat .6s ease both}.mutual-rhythm .guest-beat:nth-of-type(2){animation-delay:.65s}
.mutual-bookmark-words{position:absolute;left:8%;right:8%;top:18%;padding:9px 10px;background:#fff1d6f2;color:#473b29;border-radius:5px;font-size:clamp(14px,1.35vw,20px);line-height:1.55;text-align:center}
.mutual-bookmark-words span{display:block}.mutual-bookmark-words span+span{border-top:1px dashed #b9a582;margin-top:5px;padding-top:5px}
.mutual-journal{padding:14px 16px;border-left:3px solid #bc9457;background:#f1e4cf;margin-block:16px;border-radius:3px}.mutual-journal h3{margin:0 0 8px}.mutual-journal p{margin:5px 0;line-height:1.65}
@keyframes mutual-beat{0%,100%{transform:scale(1)}45%{transform:scale(1.45);box-shadow:0 0 0 7px #f4bb7033}}
@media(max-width:650px){.mutual-scene{min-height:32dvh}.mutual-caption{font-size:.875rem;bottom:2%;padding:5px 9px;width:max-content}.mutual-targets{left:4%;right:4%;bottom:17%}.mutual-targets button{font-size:.875rem;padding:8px;max-width:46%}.mutual-rhythm{left:12%;right:12%;padding:12px;bottom:20%}.mutual-object.is-bookmark{width:45%;height:42%;top:50%}.mutual-bookmark-words{font-size:.875rem;padding:5px}.service-layout>.mutual-dialogue{max-height:57dvh;overflow-y:auto}.mutual-dialogue .actions{justify-content:flex-start}}
@media(prefers-reduced-motion:reduce){.mutual-scene .mutual-object{transition:none}.mutual-rhythm .guest-beat{animation:none}}

.mutual-journal p{white-space:pre-line}.service-layout>.mutual-dialogue{grid-template-columns:1fr}.mutual-dialogue>.actions{grid-column:1/-1;grid-row:auto;max-width:none;width:100%;justify-content:flex-start}.mutual-dialogue>.dialogue-tools{grid-column:1;justify-content:flex-end}
/* v34: the object remains on the table; camera and revealed sides follow the action. */
.mutual-scene .mutual-object{top:var(--mutual-top,72%);width:18%;height:24%;transform:translate(-50%,-50%) rotate(var(--mutual-angle,0deg));filter:drop-shadow(1px 5px 3px #3b261453)}
.mutual-object.is-pin{width:12%;height:20%}.mutual-object.is-bookmark{width:34%;height:36%}.mutual-object.is-coaster{width:17%;height:22%}
.mutual-bookmark-words{top:15%;left:4%;right:4%;font-size:clamp(14px,1.5vw,22px);padding:10px;line-height:1.6}.mutual-bookmark-words small{font-size:.875rem;display:block;color:#786447;margin-bottom:4px}
.mutual-object.is-flipped{animation:mutual-flip .6s ease-out both}.mutual-object.guest-push{animation:mutual-push .65s ease-out both}.mutual-object.guest-turn{animation:mutual-guest-turn .7s ease-out both}.mutual-object.owner-turn{animation:mutual-owner-turn .7s ease-out both}
.mutual-photo-world{position:absolute;inset:0;background-size:100% 100%;background-position:center}.mutual-photo-cup{position:absolute;width:14%;height:24%;object-fit:contain;transform:translate(-50%,-85%);filter:drop-shadow(2px 5px 3px #35261850)}
.mutual-camera{right:auto;bottom:auto;border:3px solid #ffedc7;box-shadow:0 0 0 1px #17365175;transition:all .6s ease}.mutual-camera::before{content:'打卡咪的取景';font-size:1rem}.mutual-camera.guest-reframe{animation:mutual-reframe .7s ease-out both}
.mutual-photo-print{position:absolute;z-index:9;left:50%;top:49%;width:52%;margin:0;transform:translate(-50%,-50%) rotate(-2deg);background:#f9eedc;padding:12px 12px 6px;box-shadow:0 12px 32px #132a3c77;animation:mutual-print .45s ease-out both}.mutual-photo-print figcaption{font-size:1rem;color:#493728;line-height:1.7;text-align:center;padding-top:6px}.mutual-photo-crop{position:relative;overflow:hidden}.mutual-photo-crop .mutual-photo-world{left:var(--photo-left);top:var(--photo-top);width:var(--photo-width);height:var(--photo-height);right:auto;bottom:auto}
.mutual-seat-marker{position:absolute;z-index:5;top:56%;padding:7px 12px;background:#193953e6;border:1px dashed #f0d4a1;border-radius:6px;color:#fff2d9;font-size:1rem}.seat-window{left:57%}.seat-bar{left:22%}
.mutual-rhythm .rhythm-owner i.filled{background:#87b1ca;border-color:#dbeefa}.mutual-rhythm .rhythm-guest i.filled{background:#efb05f}.mutual-caption{font-size:1rem;bottom:2%;max-width:92%}.mutual-rhythm{bottom:24%}
.ticket-keepsake-options{margin:20px 0}.ticket-keepsake-options h3{font-size:1rem}.ticket-keepsake-options .actions{display:flex;flex-wrap:wrap;gap:8px}.ticket-keepsake-options button{font-size:14px;line-height:1.5;min-height:44px;text-align:left}.ticket-keepsake-options button[aria-pressed=true]{outline:2px solid #e4b468;outline-offset:2px}.ticket-keepsake{padding:12px 8px;border-top:1px dashed #b59a73;margin:16px 0}.ticket-keepsake p{font-size:14px;line-height:1.6;color:#534732}.ticket-keepsake img{width:74px;height:74px;object-fit:contain}.ticket-keepsake .outcome-prop{width:70px;height:80px}.ticket-keepsake .mutual-photo-print{position:relative;left:auto;top:auto;transform:none;width:78%;margin:0 auto;animation:none;box-shadow:0 3px 9px #38251b25;padding:7px}.ticket-keepsake .mutual-photo-print figcaption{font-size:14px}
@keyframes mutual-flip{from{transform:translate(-50%,-50%) rotateY(90deg)}to{transform:translate(-50%,-50%) rotateY(0)}}
@keyframes mutual-push{from{transform:translate(-50%,-85%) scale(.87)}to{transform:translate(-50%,-50%)}}
@keyframes mutual-guest-turn{from{transform:translate(-50%,-50%) rotate(-12deg)}to{transform:translate(-50%,-50%) rotate(24deg)}}
@keyframes mutual-owner-turn{from{transform:translate(-50%,-50%) rotate(12deg)}to{transform:translate(-50%,-50%) rotate(24deg)}}
@keyframes mutual-reframe{from{transform:translate(10%,-4%)}to{transform:none}}
@keyframes mutual-print{from{opacity:.2;transform:translate(-50%,-46%) rotate(0)}to{opacity:1;transform:translate(-50%,-50%) rotate(-2deg)}}
@media(max-width:650px){.mutual-photo-print{width:70%;padding:7px}.mutual-photo-print figcaption,.mutual-caption,.mutual-camera::before{font-size:14px}.mutual-bookmark-words{font-size:14px;padding:6px}.mutual-object.is-bookmark{width:48%;height:42%;--mutual-top:65%!important}.mutual-seat-marker{font-size:14px;top:53%;padding:4px}.mutual-scene{min-height:37dvh}.service-layout>.mutual-dialogue{max-height:56dvh}.mutual-object.is-pin{width:15%;height:22%}.mutual-photo-print figcaption{padding-top:3px}.ticket-keepsake-options{margin:14px 0}}
@media(prefers-reduced-motion:reduce){.mutual-object,.mutual-camera,.mutual-photo-print{animation:none!important;transition:none!important}}
.mutual-owner-seat{position:absolute;z-index:8;top:72%;width:14%;text-align:center}.mutual-owner-seat.owner-at-bar{left:22%}.mutual-owner-seat.owner-at-window{left:70%}.mutual-owner-seat img{width:100%;filter:drop-shadow(0 3px 2px #39291c55)}.mutual-owner-seat span{display:block;background:#fff0d9e8;border-radius:5px;font-size:14px;color:#4d3b28;padding:4px}
.beauty-worn-pin{position:absolute;left:71.5%;top:54.2%;width:4.5%;height:8%;object-fit:contain;transform:translate(-50%,-50%) rotate(24deg);z-index:4;pointer-events:none;filter:drop-shadow(0 2px 1px #30241960)}.mutual-object.is-pin.pin-returned{width:4.5%;height:8%;animation:pin-return .65s ease-out both}
@keyframes pin-return{from{transform:translate(-120%,150%) rotate(24deg) scale(2)}to{transform:translate(-50%,-50%) rotate(24deg) scale(1)}}
