:root{color-scheme:dark;--paper:#f0e6d8;--muted:#a8a8bd;--gold:#e1c397;--blue:#afd3e4;--pink:#e5b6c9;--line:#dbc6a51c;font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif}*{box-sizing:border-box}html,body{margin:0;width:100%;height:100%;height:100dvh;overflow:hidden;overscroll-behavior:none}body{background:radial-gradient(ellipse at 20% 0,#35516d42,transparent 55%),radial-gradient(ellipse at 100% 80%,#6c3f6040,transparent 65%),#1f2539;color:var(--paper);display:flex;flex-direction:column}button,select{font:inherit;color:inherit}button{cursor:pointer;touch-action:manipulation;-webkit-tap-highlight-color:transparent}button:disabled{cursor:default}button:focus-visible,select:focus-visible{outline:2px solid var(--gold);outline-offset:3px}header{max-width:1050px;width:100%;margin:auto;flex:0 0 99px;display:flex;align-items:center;padding:20px 27px;gap:33px;border-bottom:1px solid var(--line)}.brand{display:flex;align-items:center;gap:9px}.brand>span{font:29px Georgia;border:1px solid #d6bd9366;border-radius:20px 20px 8px 8px;width:34px;height:40px;text-align:center;line-height:37px;color:var(--gold)}.brand p{font-size:7px;letter-spacing:1.5px;line-height:1.6;margin:0;font-weight:650}.heading{flex:1}.heading>p{font-size:7px;color:var(--gold);letter-spacing:2px;margin:0 0 7px}h1{font:36px/1.1 Georgia,serif;font-weight:400;margin:0;letter-spacing:-.8px}h1 em{color:var(--pink);font-weight:400}nav{display:flex;gap:6px}nav button{min-width:33px;height:33px;border:1px solid #fff2;border-radius:50%;background:#ffffff03;font-size:15px}nav button.active{color:var(--gold);border-color:#e0c19466;background:#e0c19412}nav .language{border-radius:20px;padding:0 10px;font-size:9px}main{max-width:1050px;width:100%;padding:15px 27px 10px;margin:auto;flex:1;min-height:0;display:flex;flex-direction:column}.room-toolbar{display:flex;align-items:center;gap:18px;flex:0 0 41px;padding-bottom:11px}select{min-width:0;width:250px;max-width:50%;border:1px solid #d4b98e30;border-radius:8px;background:#ffffff04;padding:7px 25px 7px 10px;font-size:11px;color:#e5dbd5}option{background:#2a2d43;color:var(--paper)}.key-state{display:flex;align-items:center;gap:5px;font-size:8px;letter-spacing:.3px;color:#9d98a9;margin-left:auto;white-space:nowrap}.key-state>svg{width:18px;height:22px;opacity:.3}.key-state.collected{color:var(--gold)}.key-state.collected>svg{opacity:1}.key-state[hidden]{display:none}.move-counter{margin-left:auto;display:flex;align-items:center;gap:7px}.key-state:not([hidden])+.move-counter{margin-left:0}.move-counter strong{font:25px Georgia;color:var(--gold);min-width:22px}.move-counter span,.par-counter span{font-size:7px;letter-spacing:1px;color:var(--muted)}.par-counter{display:flex;align-items:center;gap:8px;padding-left:18px;border-left:1px solid var(--line)}.par-counter strong{font:21px Georgia;color:#b7b0bd}.play-area{flex:1;min-height:0;display:flex;flex-direction:column}.rooms{min-height:0;flex:1;display:grid;grid-template-columns:minmax(0,1fr) 58px minmax(0,1fr);align-items:stretch;gap:9px}.room{min-height:0;display:flex;flex-direction:column}.room-name{height:26px;flex:none;display:flex;align-items:center;gap:7px;font-size:8px;letter-spacing:2px;color:var(--blue);padding:0 4px}.room-name>span:last-child{margin-left:auto;font-size:7px;letter-spacing:.5px}.right-room .room-name{color:var(--pink)}.dot{width:5px;height:5px;background:var(--blue);border-radius:50%;box-shadow:0 0 10px #aed0e655}.right-room .dot{background:var(--pink);box-shadow:0 0 10px #e4b1c855}.room-window{min-height:0;flex:1;border:1px solid #8db4ce40;border-radius:19px;background:radial-gradient(ellipse at 50% 0,#52728b22,transparent 70%),#141c2c77;padding:14px;display:flex;align-items:center;justify-content:center;position:relative;box-shadow:inset 0 0 30px #09122144,0 14px 35px #0a0d2022;overflow:hidden}.right-room .room-window{border-color:#c19ab440;background:radial-gradient(ellipse at 50% 0,#a76e9020,transparent 70%),#20192d77}.room-window:before{content:"";position:absolute;inset:6px;border:1px solid #b8cada0a;border-radius:13px;pointer-events:none}.board{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));grid-template-rows:repeat(5,minmax(0,1fr));gap:4px;flex:none;position:relative;aspect-ratio:1;width:100%}.tile{padding:0;min-width:0;min-height:0;border:1px solid #aac4d716;border-radius:7px;background:linear-gradient(140deg,#3c536b44,#35415c2b);position:relative;display:flex;align-items:center;justify-content:center;isolation:isolate;touch-action:manipulation;transition:background .18s}.tile:after{content:"";position:absolute;inset:4px;border:1px solid #a0bfdc06;border-radius:4px;pointer-events:none}.right-room .tile{background:linear-gradient(140deg,#72516b38,#51435f38);border-color:#d9b4cf12}.tile.wall{background:linear-gradient(180deg,#152235,#182033);border-color:#8fb1c314;box-shadow:inset 0 -4px 0 #0c132a44,inset 0 1px 0 #a4c5dd0b;cursor:default}.right-room .tile.wall{background:linear-gradient(180deg,#2f2339,#241d31);border-color:#b598b411}.tile.wall:before{content:"";position:absolute;inset:26% 0 0;border-top:1px solid #050b1866;background:linear-gradient(90deg,transparent 46%,#050b1866 47%,#050b1866 50%,transparent 51%)}.tile:not(.wall):hover{background:#7d96b726}.right-room .tile:not(.wall):hover{background:#b682ab26}.tile>svg{width:73%;height:73%;pointer-events:none}.tile .ghost{position:absolute;inset:-3%;z-index:3;pointer-events:none;filter:drop-shadow(0 4px 4px #08112166);animation:arrive .15s ease-out}.ghost>svg{width:100%;height:100%}.tile.goal{background:#9ec5d913}.right-room .tile.goal{background:#daa1bf12}.tile.home{box-shadow:inset 0 0 0 1px #c8dcdd77,0 0 12px #bed9da12}.tile .goal-art{position:absolute;inset:4%;z-index:0}.goal-art>svg{width:100%;height:100%}.tile.gate{background:#b3a17d0e}.tile.open{background:#6c95751a}.tile.start:before{content:"✧";position:absolute;bottom:4px;right:5px;font-size:13px;color:#c0c4d81b}.tile.key-taken>svg{opacity:.12}.reflection{display:flex;flex-direction:column;align-items:center;gap:15px;padding:22px 0 15px;min-height:0}.reflection-star{font:23px Georgia;color:#d6ba8e99}.mirror-line{width:1px;min-height:5px;background:linear-gradient(transparent,#cab48a55,transparent);flex:1}.phase{width:54px;min-height:65px;border:1px solid #e4c69666;border-radius:35px;background:#e1c19609;display:flex;align-items:center;flex-direction:column;justify-content:center;gap:4px;color:var(--gold);flex-shrink:0;padding:5px}.phase>span{font:26px Georgia;line-height:1}.phase small{font-size:6px;letter-spacing:.4px}.phase:disabled{border-color:#dbbe8f22;background:none;color:#bda882aa}.phase:not(:disabled):hover,.phase.aligned{background:#e6c3971f;box-shadow:0 0 18px #d6b77a11}.phase.hinted{animation:pulse 1s ease-in-out 3;border-color:#e9d4ad}.reflection-heart{font:25px Georgia;color:#cc9bb5aa}.status-row{flex:0 0 31px;display:flex;align-items:center;justify-content:center;min-height:0}.status-row p{font-size:10px;line-height:1.5;text-align:center;color:var(--gold);margin:0;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.controls{flex:0 0 61px;display:flex;justify-content:space-between;gap:18px;align-items:center;border-top:1px solid var(--line);padding:10px 0}.tools{display:flex;gap:15px}.tools>button{border:0;background:none;display:flex;align-items:center;gap:6px;color:#b9b5c5;height:36px;padding:0 2px}.tools>button:disabled{opacity:.3}.tools span{font:22px Georgia;color:var(--gold)}.tools small{font-size:10px}.dpad{display:flex;gap:7px;align-items:center;justify-content:center}.dpad button{width:43px;height:38px;border:1px solid #b8b8d333;background:#ffffff05;border-radius:8px;font-size:23px;display:grid;place-items:center;padding:0;color:#e3d6da}.dpad button:active{background:#d4bb8c25;transform:translateY(1px)}.dpad button.hinted{border-color:var(--gold);animation:pulse 1s ease-in-out 3}.control-note{font-size:7px;line-height:1.9;letter-spacing:1px;color:#a9a0b6;text-align:right}.control-note span{font-size:6px;color:#807c95}.journey{display:grid;grid-template-columns:repeat(12,1fr);gap:6px;flex:0 0 40px;margin-top:4px}.level{min-width:0;border:1px solid #cbb49220;border-radius:6px;background:#ffffff02;color:#918da2;position:relative;font:16px Georgia;padding:0 0 7px;overflow:hidden}.level.active{color:var(--gold);border-color:#dfc39877;background:#e0c18e0b}.level.done{color:#d4c9c9}.level small{position:absolute;left:0;right:0;bottom:2px;font:6px Georgia;letter-spacing:1px;color:#d6b68e}.level:not(.done) small{opacity:.25}.level.hinted{border-color:var(--gold)}footer{flex:0 0 27px;display:flex;justify-content:space-between;align-items:end;gap:10px;font:italic 10px Georgia;color:#8c879e}footer>span:last-child{font:7px system-ui;letter-spacing:1px}.night-sky{pointer-events:none;position:absolute;inset:0;z-index:-1;overflow:hidden}.night-sky i{position:absolute;top:5%;left:8%;width:2px;height:2px;border-radius:50%;background:#d8c49a77;box-shadow:70px 30px #c7b9ce55,164px 7px #c7b9ce77,300px 67px #c7b9ce44,590px 15px #c7b9ce77,890px 84px #c7b9ce22}.night-sky i:nth-child(2){top:72%;left:5%}.night-sky i:nth-child(3){top:94%;left:20%}dialog{max-width:440px;width:calc(100% - 28px);max-height:calc(100dvh - 20px);overflow:auto;overscroll-behavior:contain;border:1px solid #d6bd9470;background:linear-gradient(145deg,#343049,#222a40);color:var(--paper);border-radius:20px;padding:28px;box-shadow:0 25px 100px #0009}dialog::backdrop{background:#0b1124cc;backdrop-filter:blur(6px)}dialog h2{font:32px/1.15 Georgia;font-weight:400;letter-spacing:-.4px;margin:8px 0 15px}.eyebrow{font-size:8px;letter-spacing:1.8px;color:var(--gold);margin:0 0 12px}.close{position:absolute;right:12px;top:7px;border:0;background:none;font-size:27px;color:#bbb1c9}#help-copy{font-size:12px;line-height:1.8;color:#c9c2d3}#help-copy strong{color:var(--gold)}#help-copy ul{padding-left:19px}.primary,.secondary{width:100%;border:0;border-radius:9px;background:var(--gold);color:#2c2b3a;font-size:12px;font-weight:600;padding:12px;margin-top:17px}.secondary{background:none;border:1px solid #dcc09355;color:var(--gold);margin-top:9px}#win-dialog{text-align:center}.win-art{height:100px;display:flex;align-items:center;justify-content:center;gap:0}.win-art>svg{width:85px;height:90px}.win-art>svg:nth-child(2){width:44px;height:45px;margin:0 -6px;transform:translateY(-16px)}#win-copy{font-size:12px;line-height:1.8;color:#c7bdcf}.stars{font:25px Georgia;letter-spacing:7px;color:var(--gold);margin:8px 0 12px}#share-status{font-size:10px;color:var(--gold);line-height:1.6;overflow-wrap:anywhere;margin:9px 0 0}@keyframes arrive{from{opacity:.7;transform:scale(.9)}to{opacity:1;transform:scale(1)}}@keyframes pulse{50%{background:#d6bd9533;box-shadow:0 0 10px #d6bd9530}}@media(max-width:850px){header{height:86px;flex-basis:86px;gap:23px;padding:17px 20px}.brand p{font-size:6px}.brand>span{width:29px;height:35px;font-size:25px;line-height:32px}h1{font-size:29px}.heading>p{font-size:6px;letter-spacing:1.6px}main{padding:12px 20px 9px}.rooms{grid-template-columns:minmax(0,1fr) 48px minmax(0,1fr);gap:7px}.phase{width:46px;min-height:58px}.room-window{padding:10px;border-radius:15px}.board{gap:3px}.tile{border-radius:5px}.tools{gap:13px}.control-note{display:none}.controls{justify-content:space-between;gap:12px}}@media(max-width:600px){header{height:70px;flex-basis:70px;padding:11px 12px;gap:10px}.brand{display:none}.heading>p{font-size:5.5px;letter-spacing:1px;margin-bottom:6px}h1{font-size:25px;letter-spacing:-.5px}nav{gap:4px}nav button{height:29px;min-width:29px;font-size:14px}nav .language{font-size:9px;padding:0 8px}main{padding:8px 10px 7px}.room-toolbar{flex-basis:44px;gap:10px;padding-bottom:10px}select{width:190px;max-width:53%;font-size:10px;padding:7px 20px 7px 7px}.move-counter{gap:4px}.move-counter strong{font-size:22px}.move-counter span{font-size:6px;letter-spacing:.5px}.par-counter{padding-left:9px;gap:4px}.par-counter strong{font-size:18px}.par-counter span{font-size:6px;letter-spacing:.3px}.key-state{position:absolute;top:122px;left:12px;font-size:7px;z-index:5;display:none}.key-state:not([hidden])+.move-counter{margin-left:auto}.rooms{grid-template-columns:minmax(0,1fr) 30px minmax(0,1fr);gap:4px}.room-name{font-size:7px;height:24px;gap:5px;letter-spacing:1.4px}.room-name>span:last-child{font-size:6px;letter-spacing:.1px}.room-window{padding:6px;border-radius:12px}.room-window:before{inset:3px;border-radius:8px}.board{gap:2px}.tile{border-radius:4px}.tile:after{inset:2px;border-radius:2px}.tile.wall{box-shadow:inset 0 -2px 0 #0c132a44}.reflection{gap:9px;padding-top:22px}.reflection-star{font-size:18px}.reflection-heart{font-size:21px}.phase{width:30px;min-height:56px;padding:2px;gap:5px}.phase>span{font-size:22px}.phase small{font-size:5px;letter-spacing:0}.status-row{flex-basis:35px;padding:4px 0}.status-row p{font-size:9px;white-space:normal;line-height:1.45;max-height:27px}.controls{flex-basis:62px;gap:8px;padding:10px 0}.tools{gap:11px}.tools>button{flex-direction:column;gap:0;justify-content:center;min-width:27px;height:39px}.tools span{font-size:22px;line-height:23px}.tools small{font-size:7px}.dpad{gap:5px}.dpad button{width:38px;height:39px;font-size:22px;border-radius:7px}.journey{flex-basis:35px;gap:4px;margin-top:5px}.level{font-size:13px;padding-bottom:7px;border-radius:5px}.level small{font-size:5px;letter-spacing:0}footer{flex-basis:25px;font-size:9px}footer>span:last-child{font-size:6px;letter-spacing:.7px}}@media(max-height:600px) and (min-width:601px){header{flex-basis:65px;height:65px;padding-top:10px;padding-bottom:10px}.heading>p{font-size:6px;margin-bottom:4px}h1{font-size:27px}.brand>span{width:27px;height:33px;font-size:23px;line-height:30px}.brand p{font-size:6px}main{padding-top:8px;padding-bottom:6px}.room-toolbar{flex-basis:36px;padding-bottom:7px}.rooms{grid-template-columns:minmax(0,1fr) 46px minmax(0,1fr);gap:7px}.room-name{height:21px;font-size:7px}.room-window{padding:8px;border-radius:12px}.phase{width:44px;min-height:53px}.phase>span{font-size:23px}.phase small{font-size:6px}.reflection{padding-top:17px;padding-bottom:7px;gap:8px}.reflection-star{font-size:19px}.reflection-heart{font-size:20px}.board{gap:3px}.status-row{flex-basis:25px}.status-row p{font-size:9px}.controls{flex-basis:49px;padding:6px 0}.dpad button{width:39px;height:34px;font-size:20px}.tools>button{height:32px}.tools small{font-size:9px}.journey{flex-basis:32px;margin-top:2px}.level{font-size:13px}.level small{font-size:5px}.level:not(.done) small{display:none}footer{flex-basis:22px;font-size:9px}}@media(max-height:400px){header{height:37px;flex-basis:37px;padding:4px 10px;gap:10px}.brand,.heading>p{display:none}h1{font-size:21px}.heading{min-width:0}nav button{height:26px;min-width:26px;font-size:13px}nav .language{font-size:8px;padding:0 7px}main{padding:4px 9px 3px}.room-toolbar{flex-basis:29px;gap:12px;padding-bottom:4px}select{font-size:9px;padding:4px 20px 4px 7px;width:225px}.move-counter strong{font-size:20px}.move-counter span,.par-counter span{font-size:6px}.par-counter strong{font-size:16px}.par-counter{padding-left:11px;gap:5px}.rooms{grid-template-columns:minmax(0,1fr) 37px minmax(0,1fr);gap:6px}.room-name{height:17px;font-size:6px;letter-spacing:1.4px}.room-name>span:last-child{font-size:6px}.room-window{padding:4px;border-radius:8px}.room-window:before{inset:2px;border-radius:6px}.board{gap:2px}.tile{border-radius:3px}.tile:after{inset:1px;border-radius:1px}.tile.wall{box-shadow:inset 0 -2px 0 #0c132a44}.reflection{padding:14px 0 3px;gap:5px}.reflection-star,.reflection-heart{display:none}.phase{width:34px;min-height:48px;border-radius:20px;padding:2px;gap:4px}.phase>span{font-size:22px}.phase small{font-size:5px}.status-row{flex-basis:19px;padding:0}.status-row p{font-size:8px;line-height:15px;white-space:nowrap;max-height:16px}.controls{flex-basis:41px;padding:4px 0;gap:10px}.tools{gap:18px}.tools>button{height:32px;flex-direction:row;gap:5px}.tools span{font-size:21px}.tools small{font-size:8px}.dpad{gap:6px}.dpad button{width:38px;height:32px;font-size:20px}.journey{display:none}footer{flex-basis:17px;font-size:8px}footer>span:last-child{font-size:6px}.key-state{font-size:7px}.key-state>svg{height:18px;width:14px}dialog{padding:16px;max-height:calc(100dvh - 10px)}dialog h2{font-size:23px;margin:5px 0 9px}#help-copy{font-size:11px;line-height:1.65}.eyebrow{font-size:6px;margin-bottom:7px}.win-art{height:53px}.win-art>svg{height:50px;width:49px}.win-art>svg:nth-child(2){height:24px;width:26px;transform:translateY(-7px)}.stars{font-size:20px;margin:4px 0 7px}#win-copy{font-size:10px;margin:5px 0;line-height:1.6}.primary,.secondary{padding:8px;font-size:10px;margin-top:8px}#share-status{font-size:9px;margin-top:6px}}@media(max-width:600px) and (max-height:400px){header{height:31px;flex-basis:31px;padding:3px 5px;gap:5px}h1{font-size:17px;letter-spacing:-.5px}nav{gap:3px}nav button{height:24px;min-width:24px;font-size:12px}nav .language{font-size:8px;padding:0 5px}main{padding:3px 5px 2px}.room-toolbar{flex-basis:27px;padding-bottom:3px;gap:8px}select{padding:3px 17px 3px 5px;font-size:8px;width:170px;max-width:56%;border-radius:5px}.move-counter strong{font-size:18px;min-width:18px}.move-counter span,.par-counter span{font-size:5px;letter-spacing:.3px}.par-counter{padding-left:6px;gap:3px}.par-counter strong{font-size:15px}.rooms{grid-template-columns:minmax(0,1fr) 25px minmax(0,1fr);gap:3px}.room-name{height:15px;font-size:5px;gap:4px;letter-spacing:.8px;padding:0 3px}.room-name>span:last-child{font-size:5px}.dot{width:4px;height:4px}.room-window{padding:3px}.board{gap:1px}.tile{border-radius:2px}.tile.start:before{font-size:8px;right:2px;bottom:2px}.phase{width:25px;min-height:44px;gap:3px}.phase>span{font-size:19px}.phase small{font-size:4.5px;letter-spacing:0}.reflection{padding-top:13px}.status-row{flex-basis:18px}.status-row p{font-size:7px;line-height:14px}.controls{flex-basis:41px;gap:7px;padding:3px 0}.tools{gap:9px}.tools>button{flex-direction:column;gap:0;min-width:23px;height:34px}.tools span{font-size:18px;line-height:19px}.tools small{font-size:6px}.dpad{gap:4px}.dpad button{width:34px;height:34px;font-size:19px;border-radius:6px}footer{flex-basis:14px;font-size:7px}footer>span:last-child{font-size:5px;letter-spacing:.4px}}@media(prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}}

@media(max-width:370px) and (min-height:401px){h1{font-size:21px}.heading>p{letter-spacing:.6px}.dpad{gap:4px}.dpad button{width:34px}.tools{gap:8px}}

/* Victory-only reunion: approach, embrace, a cheek kiss, then a quiet held pose. */
#win-art{height:132px;pointer-events:none}
#win-art>.reunion-scene{display:block;width:auto;height:100%;max-width:100%;overflow:visible}
#win-dialog .reunion-caption{font-size:11px;line-height:1.5;color:#dfb9ca;margin:2px 0 12px}
#win-dialog .win-actions{display:grid;grid-template-columns:1fr;gap:9px;margin-top:17px}
#win-dialog .win-actions>button{margin:0}
#share-status:empty{display:none}
.reunion-scene .reunion-luna,.reunion-scene .reunion-rose{transform-box:fill-box;transform-origin:50% 82%;animation-duration:2.8s;animation-timing-function:cubic-bezier(.22,.7,.3,1);animation-fill-mode:both}
.reunion-scene .reunion-luna{transform:rotate(9deg);animation-name:reunion-luna}
.reunion-scene .reunion-rose{transform:rotate(-9deg);animation-name:reunion-rose}
.reunion-scene .reunion-embrace{opacity:1;transform-box:fill-box;transform-origin:center;animation:reunion-embrace 2.8s ease-out both}
.reunion-scene .reunion-smile{opacity:1;animation:reunion-smile 2.8s ease both}
.reunion-scene .reunion-kiss-mouth{opacity:0;animation:reunion-kiss 2.8s ease both}
.reunion-scene .reunion-kiss-mark{opacity:0;animation:reunion-kiss 2.8s ease both}
.reunion-scene .reunion-blush{opacity:.6;animation:reunion-blush 2.8s ease both}
.reunion-scene .reunion-kiss-bubble{opacity:0;transform-box:fill-box;transform-origin:center;animation:reunion-kiss-bubble 2.8s ease-out both}
.reunion-scene .reunion-heart{opacity:.8;transform-box:fill-box;transform-origin:center;animation:reunion-heart 2.8s ease-out both}
@keyframes reunion-luna{0%{transform:translate(-35px,4px) rotate(-6deg)}34%{transform:translate(-3px,-3px) rotate(6deg)}46%{transform:translate(0,0) rotate(9deg)}58%{transform:translate(1px,-1px) rotate(11deg)}74%,100%{transform:translate(0,0) rotate(9deg)}}
@keyframes reunion-rose{0%{transform:translate(35px,6px) rotate(6deg)}34%{transform:translate(3px,-3px) rotate(-6deg)}46%{transform:translate(0,0) rotate(-9deg)}58%{transform:translate(-1px,-1px) rotate(-11deg)}74%,100%{transform:translate(0,0) rotate(-9deg)}}
@keyframes reunion-embrace{0%,34%{opacity:0;transform:scale(.65)}48%,100%{opacity:1;transform:scale(1)}}
@keyframes reunion-smile{0%,42%,78%,100%{opacity:1}48%,68%{opacity:0}}
@keyframes reunion-kiss{0%,43%,76%,100%{opacity:0}49%,66%{opacity:1}}
@keyframes reunion-blush{0%,34%,100%{opacity:.6}51%,72%{opacity:.95}}
@keyframes reunion-kiss-bubble{0%,48%{opacity:0;transform:translateY(4px) scale(.45)}57%{opacity:1;transform:translateY(0) scale(1)}70%{opacity:1;transform:translateY(-4px) scale(1)}90%,100%{opacity:0;transform:translateY(-14px) scale(.8)}}
@keyframes reunion-heart{0%,70%{opacity:0;transform:scale(.55)}88%,100%{opacity:.8;transform:scale(1)}}
@media(max-height:400px){
 #win-dialog{padding:12px 16px}
 #win-art{height:68px}
 #win-dialog .reunion-caption{font-size:9px;line-height:1.3;margin:2px 0 4px}
 #win-dialog .eyebrow{font-size:6px;margin-bottom:5px}
 #win-dialog h2{margin:4px 0 6px}
 #win-dialog .stars{margin:2px 0 5px}
 #win-dialog #win-copy{margin:4px 0;line-height:1.5}
 #win-dialog .win-actions{grid-template-columns:1fr 1fr;gap:6px;margin-top:8px}
 #win-dialog .win-actions>button{min-height:34px;padding:7px 5px;line-height:1.3}
}
@media(prefers-reduced-motion:reduce){
 .reunion-scene *{animation:none!important;transition:none!important}
 .reunion-scene .reunion-luna{transform:rotate(9deg)}
 .reunion-scene .reunion-rose{transform:rotate(-9deg)}
 .reunion-scene .reunion-embrace{opacity:1;transform:none}
 .reunion-scene .reunion-kiss-mouth,.reunion-scene .reunion-kiss-mark,.reunion-scene .reunion-kiss-bubble{opacity:0}
 .reunion-scene .reunion-smile{opacity:1}
 .reunion-scene .reunion-heart{opacity:.8;transform:none}
}
