/* Soft toy asset presentation. Loaded after cozy.css; keep the surrounding UI quiet. */
@font-face{font-family:"Couple Play";src:url('/fonts/couple-play.woff2') format('woff2');font-weight:400;font-style:normal;font-display:swap}
:root{--play-font:"Couple Play","YouYuan","PingFang SC",sans-serif}
body h1,body h2,body h3,body .party-heading h1,.brand,body button,.playing-card strong,#outcome-title,.room-number,#number,.digits span,.timing-meters strong,.timing-meters output,#water-level{font-family:var(--play-font);font-weight:400;letter-spacing:0}
body .catalog-card h3,body .card-log h2,.latest-clue strong,.history-row strong,.card-clock strong{font-family:var(--play-font);font-weight:400}
body h1,body h2,body h3{line-height:1.45}
.timing-meters output{font-size:20px}
.outcome-art-pair{display:flex;justify-content:center;height:175px;margin:0 auto 10px}
.outcome-art-pair img{width:44%;height:100%;object-fit:contain}
.outcome-pending{overflow:hidden}
.outcome-prelude[hidden]{display:none}
.outcome-prelude{position:fixed;inset:0;z-index:90;display:flex;flex-direction:column;justify-content:center;align-items:center;padding:24px;background:#FFFDF8;color:#493D38;text-align:center;overflow:hidden}
.outcome-prelude:not([hidden]){animation:toy-result-arrive .2s ease-out both}
#outcome-dialog[open] .outcome-sheet{animation:toy-result-arrive .24s ease-out both}
.prelude-caption{font-family:var(--play-font);font-size:clamp(20px,5vw,28px);margin:0 0 26px}
.prelude-actors{display:flex;justify-content:center;gap:clamp(8px,4vw,40px);width:min(620px,100%)}
.prelude-actor{position:relative;flex:1;min-width:0}
.prelude-actor img{display:block;width:100%;height:clamp(150px,42vw,290px);object-fit:contain;transform-origin:50% 92%}
.prelude-actor p{font-family:var(--play-font);font-size:18px;margin:14px 0}
.prelude-sparkles{display:block;height:32px;color:#B58B3E;font-size:26px;opacity:0}
.reacting .prelude-actor.win img{animation:toy-victory 1.6s ease-in-out both}
.reacting .prelude-actor.lose img{animation:toy-defeat 1.6s ease-in-out both}
.reacting .prelude-actor.draw img{animation:toy-draw 1.6s ease-in-out both}
.reacting .prelude-sparkles{animation:toy-sparkles 1.6s ease-out both}
.reacting .lose .prelude-sparkles{color:#8EAEBE}
#water-control.pouring{animation:toy-pour-hold 1.15s ease-in-out infinite}
.hand-card.selected .card-icon{animation:toy-card-nod .4s ease-out both}
.locked .back-art{animation:toy-card-nod .45s ease-out both}
.clue-dots .hit{animation:toy-clue-pop .45s ease-out both}
.clue-dots .hit:nth-child(2){animation-delay:.07s}.clue-dots .hit:nth-child(3){animation-delay:.14s}.clue-dots .hit:nth-child(4){animation-delay:.21s}.clue-dots .hit:nth-child(5){animation-delay:.28s}
@keyframes toy-victory{0%,100%{transform:translateY(0) rotate(0)}15%{transform:scale(1.04,.94)}32%{transform:translateY(-28px) rotate(-7deg)}48%{transform:translateY(0) scale(1.03,.97)}65%{transform:translateY(-15px) rotate(5deg)}82%{transform:translateY(0)}}
@keyframes toy-defeat{0%{transform:translateY(0)}25%{transform:translateY(10px) rotate(-7deg)}45%{transform:translateY(10px) rotate(5deg)}65%{transform:translateY(7px) rotate(-3deg)}100%{transform:translateY(5px) rotate(-2deg)}}
@keyframes toy-draw{0%,100%{transform:rotate(0)}30%{transform:rotate(-7deg)}65%{transform:rotate(7deg)}}
@keyframes toy-sparkles{0%{opacity:0;transform:translateY(12px) scale(.7)}30%,70%{opacity:1}100%{opacity:0;transform:translateY(-15px) scale(1.15)}}
@keyframes toy-pour-hold{50%{box-shadow:0 3px 0 #91BFD2,0 0 0 4px #DCECF4}}
@keyframes toy-card-nod{40%{transform:translateY(-6px) rotate(-4deg)}75%{transform:rotate(3deg)}}
@keyframes toy-clue-pop{0%{transform:scale(.3)}65%{transform:scale(1.2)}100%{transform:scale(1)}}
@keyframes toy-result-arrive{from{opacity:0}to{opacity:1}}
.quiet #water-control,.quiet .card-icon,.quiet .back-art,.quiet .clue-dots .hit,.quiet #outcome-dialog .outcome-sheet{animation:none}
.quiet .primary:active,.quiet .secondary:active{transform:none}
@media(prefers-reduced-motion:reduce){.outcome-prelude *,.hand-card.selected .card-icon,.clue-dots .hit,#water-control.pouring{animation:none}}
.catalog-card,.catalog-card.available{border-color:#D9D0C4}
.duo-art{width:320px;height:210px}
.catalog-art{height:124px}
.playing-card,.hand-card .playing-card{border-color:#CBBEA9}
.playing-card .card-icon{height:137px}
.hand-card .card-icon{height:125px}
.brand-mascot{height:58px}
.back-art{width:122px;height:132px}
.room-ticket,.play-panel,.game-main,.history-panel,.party-arena,.party-arena.water,.court{border-color:#D9D0C4}
.scene-hotspot.pad-left{left:23%;top:70%;width:17%;height:20%}
.scene-hotspot.pad-right{right:22%;top:70%;width:17%;height:20%}
main>section:not([hidden]){animation:toy-enter .22s ease-out both}
@keyframes toy-enter{from{opacity:.2;transform:translateY(5px)}to{opacity:1;transform:translateY(0)}}
.quiet main>section:not([hidden]){animation:none}
@media(prefers-reduced-motion:reduce){main>section:not([hidden]){animation:none}}
@media(max-width:600px){.duo-art{width:260px;height:170px}.catalog-art{height:104px}.playing-card .card-icon{height:117px}.hand-card .card-icon{height:106px}}
