@font-face{font-family:Caveat;src:url('/assets/caveat.ttf');font-display:swap}*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:#102e2b;color:#f7edcf;font:14px/1.7 -apple-system,BlinkMacSystemFont,'PingFang SC',sans-serif}button,a{-webkit-tap-highlight-color:transparent}button{font:inherit;cursor:pointer;color:inherit}button:disabled{cursor:default;opacity:.4}a{color:inherit;text-decoration:none}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible{outline:3px solid #ffd577;outline-offset:5px}.app{max-width:1600px;margin:auto;padding:0 4%}header{min-height:100px;display:flex;justify-content:space-between;align-items:center;gap:20px}header>a{font-size:11px;opacity:.8}.wordmark{font:21px Georgia;letter-spacing:-.3px}.wordmark i{color:#e4bc78}header>button,footer button{border:0;background:none;font-size:11px}.chapter-nav{display:grid;grid-template-columns:repeat(8,1fr);gap:6px;margin:0 0 18px}.chapter-nav[hidden]{display:none}.chapter-nav button{padding:9px 5px;border:1px solid #668479;background:#193e37;font-size:10px}.chapter-nav button[aria-current=step]{border-color:#f3cb7e;background:#49624a}.adventure{position:relative;min-height:720px;overflow:hidden;border:1px solid #66816b77;border-radius:9px;background:#244e42;box-shadow:0 18px 70px #071d1b55;isolation:isolate}.world{position:absolute;inset:0;background:linear-gradient(90deg,#102e2beb,#102e2b77 48%,#102e2b05),url('/assets/together-world.jpg') center/cover;z-index:-3;transition:filter .5s}.grain{position:absolute;inset:0;background:linear-gradient(0deg,#143a31 0,transparent 35%,transparent 75%,#18372c77);z-index:-2;pointer-events:none}.topline{position:relative;display:flex;justify-content:space-between;padding:28px 35px;font:9px sans-serif;letter-spacing:2px;opacity:.85}.mode{font-size:8px;letter-spacing:2px}#chapter-content{position:relative;padding:20px 6% 140px;min-height:625px}.eyebrow{font-size:10px;letter-spacing:2px;color:#e5c383}.chapter-title{font:normal clamp(45px,5.8vw,82px)/1.03 Georgia,'Songti SC',serif;letter-spacing:-2px;margin:22px 0}.chapter-title em{font-weight:normal;color:#edc780}.chapter-copy{font-size:13px;line-height:2;max-width:450px;color:#f4ecd2dd;margin-bottom:26px}.chapter-copy small{font-size:10px;opacity:.8}.chapter-meta{font-size:10px;letter-spacing:1.7px;color:#e5c58e}.primary{border:1px solid #f4d597;background:#e9c57f;color:#234036;padding:13px 22px;font-size:12px;font-weight:500;display:inline-block;border-radius:3px}.outline{background:#173d33aa;border:1px solid #9cab7c;color:#f5e9c9;padding:12px 20px;font-size:12px;border-radius:3px}.button-row{display:flex;gap:10px;flex-wrap:wrap;margin-top:20px}.tiny-note{font-size:10px;line-height:1.8;color:#e8dfc5b0;max-width:440px}.ready-controls{display:flex;gap:13px;margin:27px 0 23px}.player-button{border:1px solid #a9b38877;padding:11px 18px;background:#23483ca8;border-radius:4px;font-size:11px}.player-button[aria-pressed=true]{background:#d4b67d;color:#234334;border-color:#f4d597}.player-button span{display:inline-grid;width:19px;height:19px;place-items:center;background:#ad674b;border-radius:50%;font:10px sans-serif;color:#fff1d2;margin-right:9px}.player-button.b span{background:#8aa487}.companions{position:absolute;right:7%;bottom:35px;display:flex;align-items:end;gap:12px;pointer-events:none;filter:drop-shadow(0 7px 5px #112a2555)}.companion{width:64px;text-align:center;transition:transform .5s}.companion>span{font-size:7px;letter-spacing:1.8px;display:block;margin-top:12px;color:#f1dbb1}.avatar{position:relative;height:99px;width:52px;margin:auto}.avatar i{position:absolute;display:block}.head{width:29px;height:31px;top:12px;left:12px;border-radius:45%;background:radial-gradient(circle at 42% 34%,#e6b48a,#b98562);z-index:2;box-shadow:inset -3px -3px 4px #8c644333}.hair{width:33px;height:28px;top:5px;left:10px;border-radius:55% 55% 35% 35%;background:#514338;z-index:3;clip-path:polygon(0 0,100% 0,100% 80%,85% 60%,70% 85%,50% 55%,25% 80%,0 64%)}.body{width:39px;height:43px;top:38px;left:7px;border-radius:10px 10px 8px 8px;background:repeating-linear-gradient(90deg,#b76c4e,#b76c4e 3px,#a65c4322 4px);box-shadow:inset -5px -3px 8px #642d2222;z-index:1}.body:before,.body:after{content:'';position:absolute;top:3px;width:10px;height:33px;border-radius:9px;background:inherit}.body:before{left:-6px;transform:rotate(20deg)}.body:after{right:-6px;transform:rotate(-20deg)}.leg{top:76px;width:12px;height:23px;border-radius:2px 2px 6px 6px;background:#775a3d}.leg.left{left:12px;transform:rotate(4deg)}.leg.right{right:11px;transform:rotate(-4deg)}.two .body{background:repeating-linear-gradient(90deg,#99ac7f,#99ac7f 3px,#899d7422 4px)}.two .hair{clip-path:none;border-radius:50% 50% 20% 20%;height:21px;top:6px}.two .hair:before{content:'';position:absolute;width:20px;height:20px;background:#443c33;border-radius:50%;top:-10px;left:6px}.thread{width:55px;height:35px;border-top:1px dashed #eac57b;border-radius:50%;transform:translateY(-28px);text-align:center;color:#e8c78a}.thread span{display:inline-block;margin-top:-13px;background:#36533d;border-radius:50%;width:21px}.companion.ready{transform:translateY(-9px)}.journey-bar{display:flex;align-items:center;justify-content:space-between;gap:20px;padding:26px 0}.journey-bar>button{background:none;border:0;font-size:11px;white-space:nowrap;padding:10px 0}.progress{display:flex;gap:9px}.progress button{width:26px;height:26px;border-radius:50%;border:1px solid #66877a;background:none;color:#c0cfbc;font-size:9px}.progress button.active{background:#e4c180;color:#193f35;border-color:#e4c180}.progress button.done{border-color:#e4c180;color:#e4c180}#live-status{font-size:11px;color:#e9c681;min-height:20px;margin:0;text-align:center}.demo-note{font-size:9px;color:#c1c9b2aa;max-width:850px;margin:10px auto 30px;line-height:1.8;text-align:center}footer{border-top:1px solid #43695b66;display:flex;justify-content:space-between;padding:22px 0;font-size:8px;letter-spacing:1.5px}.camera-layout{display:grid;grid-template-columns:1fr 1fr;align-items:center;gap:35px}.camera-toy{width:100%;max-width:350px;margin:auto;filter:drop-shadow(0 20px 15px #10261e77);position:relative}.camera-toy svg{width:100%;display:block}.photo-frame{background:#fff9e8;padding:10px 10px 22px;transform:rotate(3deg);max-width:330px;margin:auto;box-shadow:0 15px 35px #071c1555;animation:photo-develop .8s ease both}.photo-frame img{width:100%;aspect-ratio:.8;object-fit:cover;display:block}.photo-frame figcaption{color:#6c5842;font:22px Caveat;text-align:center;margin-top:10px}.photo-controls{display:flex;justify-content:space-between;color:#f1dfb6;font-size:10px;max-width:330px;margin:20px auto}.photo-controls button{background:none;border:1px solid #98ae8a;color:#f1dfb6;padding:6px 10px;font-size:10px}.flash{position:absolute;inset:0;background:#fff9e0;opacity:0;pointer-events:none;z-index:10}.flash.firing{animation:flash .65s ease-out}.memory-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:16px;max-width:850px;margin-top:25px}.memory-card{min-height:210px;background:#f7edd4;color:#395041;border:1px solid #b0aa78;padding:25px 22px;text-align:left;border-radius:6px;position:relative;box-shadow:0 6px 20px #17342533;transition:transform .3s}.memory-card:hover{transform:translateY(-5px) rotate(-1deg)}.memory-card>span{font-size:10px;color:#8a6b4d}.memory-card svg{height:65px;width:75px;margin:15px 0;color:#8f6547;display:block}.memory-card h3{font:26px Caveat;margin:8px 0}.memory-card p{font:19px/1.4 Caveat;display:none;margin:13px 0 0}.memory-card[aria-pressed=true]{background:#e0e3c5}.memory-card[aria-pressed=true] p{display:block}.memory-card[aria-pressed=true] svg{display:none}.date-puzzle{display:flex;gap:16px;margin:25px 0}.date-block{background:#ece2c4;color:#2f503f;border:1px solid #b79b67;min-width:115px;padding:18px;text-align:center;border-radius:4px;box-shadow:5px 6px 0 #a0804f55}.date-block strong{font:50px/1 Georgia;display:block}.date-block span{font-size:8px;letter-spacing:2px}.time-display{display:flex;align-items:center;gap:20px;margin-top:25px}.time-face{width:115px;height:115px;border-radius:50%;border:5px solid #c8aa6a;background:#f6eaca;position:relative;box-shadow:0 8px 20px #112e2455}.time-face:before{content:'';position:absolute;width:3px;height:35px;background:#5c5c40;left:50%;top:19px;transform-origin:50% 35px;transform:rotate(210deg);transition:transform .6s}.time-face:after{content:'';position:absolute;width:3px;height:43px;background:#5c5c40;left:50%;top:11px;transform-origin:50% 43px;transform:rotate(0);transition:transform .6s}.time-face.lit{box-shadow:0 0 35px #f0cd7755}.time-readout strong{font:48px Georgia}.time-readout p{font-size:11px;margin:5px 0}.bridge-world{max-width:640px;margin:20px 0;height:150px;position:relative;display:flex;align-items:center;justify-content:space-between;padding:0 20px}.island{width:110px;height:65px;border-radius:50%;background:#a0aa65;box-shadow:0 14px 0 #746141,0 25px 0 #554b37;display:grid;place-items:center;font:11px Caveat;color:#273e31;z-index:2}.bridge{position:absolute;left:90px;right:90px;height:35px;top:65px;background:repeating-linear-gradient(90deg,#b49560 0,#b49560 15px,#655b3e 16px,#655b3e 18px);transform:scaleX(.12);opacity:.3;transition:transform .8s,opacity .8s;transform-origin:left;border-top:2px solid #d7c28c;border-bottom:2px solid #d7c28c}.bridge.open{transform:scaleX(1);opacity:1}.venue-card{background:#f2e5c4;color:#35503d;padding:22px 27px;max-width:570px;border-left:4px solid #b8975f;margin-top:25px}.venue-card h3{font:26px Georgia;margin:0 0 10px}.venue-card p{font-size:11px;margin:0 0 13px}.venue-card a{font-size:11px;text-decoration:underline;text-underline-offset:4px}.quest-schedule{display:grid;grid-template-columns:1fr 1fr;gap:25px;max-width:900px;margin-top:25px}.schedule-pieces{display:grid;grid-template-columns:1fr 1fr;gap:9px;align-content:start}.schedule-pieces button{background:#eddfb8;color:#38513b;border:1px solid #ae915c;padding:12px 10px;text-align:left;font-size:11px;border-radius:3px}.schedule-pieces button small{font-size:9px;display:block;color:#926b43}.schedule-pieces button[aria-pressed=true]{background:#668364;color:#fff0d0;border-color:#8ca07a}.timeline{list-style:none;padding:0;margin:0;min-height:200px}.timeline li{display:flex;gap:15px;padding:9px 0;border-bottom:1px solid #8a9e7066;font-size:11px}.timeline time{min-width:65px;color:#dfc684;font-size:10px}.palette{display:flex;gap:14px;flex-wrap:wrap;margin:30px 0}.swatch{width:74px;padding:0;border:0;background:none;color:#eedfb8;font-size:9px}.swatch i{display:block;width:55px;height:55px;border-radius:50%;background:var(--swatch);border:3px solid transparent;box-shadow:0 3px 9px #122f2444;margin:0 auto 10px}.swatch[aria-pressed=true] i{border-color:#ffe0a3;box-shadow:0 0 0 3px #c5a67177}.wardrobe{display:flex;gap:20px;align-items:center;max-width:390px;padding:22px;border:1px solid #9caa7c77;border-radius:5px;background:#2c4a38aa}.wardrobe i{width:65px;height:75px;background:var(--chosen-a,#b47555);clip-path:polygon(23% 0,40% 8%,60% 8%,77% 0,100% 22%,80% 40%,78% 100%,22% 100%,20% 40%,0 22%);transition:background .3s}.wardrobe i:nth-child(2){background:var(--chosen-b,#8ba07c);clip-path:polygon(32% 0,68% 0,78% 28%,97% 100%,3% 100%,22% 28%)}.wardrobe span{font:25px Caveat;margin-left:10px}.invitation{max-width:640px;background:#f7edcf;color:#36513f;margin:20px auto 0;padding:42px;text-align:center;box-shadow:10px 12px 0 #8e78464d;position:relative;border:1px solid #ccb681;animation:photo-develop .7s ease both}.invitation:before{content:'';position:absolute;inset:13px;border:1px solid #c2b88e;pointer-events:none}.invitation h2{font:46px/1.1 Georgia;margin:20px 0}.invitation>p{font:23px/1.5 Caveat}.invitation .invite-details{font:12px/2 sans-serif}.invitation .primary{background:#375640;color:#f4e9ca;border-color:#375640;position:relative}.invitation .outline{color:#375640;background:none;border-color:#97a47c;position:relative}.invitation .button-row{justify-content:center}.invite-heart{background:none;border:1px solid #b8a775;border-radius:50%;color:#926640;width:48px;height:48px;font-size:21px}.invite-heart[aria-pressed=true]{background:#d9b984;color:#4f583c}.final-actions{display:flex;gap:15px;justify-content:center;margin:10px 0}.invitation .eyebrow{color:#9b7952}.invitation.sealed h2,.invitation.sealed p,.invitation.sealed .button-row{opacity:.3}.invitation.sealed:after{content:'点亮两颗心，一起打开邀请';position:absolute;bottom:25px;left:0;right:0;font-size:11px;background:#f7edcf;padding:12px;pointer-events:none}dialog{background:#f3e7c9;color:#34513e;border:1px solid #bba16c;max-width:520px;width:calc(100% - 30px);padding:45px 30px 30px}dialog::backdrop{background:#0b211cd9;backdrop-filter:blur(5px)}.dialog-close{position:absolute;right:8px;top:5px;width:44px;height:44px;border:0;background:none;font:30px Georgia}dialog h2{font:40px Georgia;margin:18px 0}dialog p{font-size:12px}dialog .eyebrow{color:#91734c}#demo-rsvp{display:grid;gap:16px}#demo-rsvp label{font-size:11px;display:grid;gap:5px}#demo-rsvp input,#demo-rsvp select{background:#fff7e3;border:1px solid #b3a37e;padding:12px;font:15px sans-serif;color:#34513e}#rsvp-result{font-size:13px}@keyframes flash{0%{opacity:0}15%{opacity:1}100%{opacity:0}}@keyframes photo-develop{from{opacity:0;transform:translateY(25px) rotate(-4deg)}to{opacity:1;transform:translateY(0) rotate(3deg)}}
@media(max-width:650px){.app{padding:0 16px}header{min-height:86px;gap:10px;flex-wrap:wrap;padding:18px 0}header>a{font-size:9px}.wordmark{font-size:17px}header>button{font-size:9px}.chapter-nav{grid-template-columns:repeat(4,1fr)}.adventure{min-height:760px;border-radius:5px}.world{background-image:linear-gradient(0deg,#173c32f5,transparent 80%),linear-gradient(90deg,#102e2b99,#102e2b33),url('/assets/together-world.jpg');background-position:61% center}.topline{padding:20px;font-size:8px;letter-spacing:1px}.mode{display:none}#chapter-content{padding:15px 23px 145px;min-height:685px}.chapter-title{font-size:49px;letter-spacing:-1.5px;margin:18px 0}.chapter-copy{font-size:12px;line-height:1.9}.chapter-meta{font-size:8px;letter-spacing:1px}.ready-controls{gap:8px;flex-wrap:wrap}.player-button{padding:10px 12px;font-size:10px}.primary,.outline{padding:12px 16px;font-size:11px;min-height:44px}.companions{right:24px;bottom:25px;transform:scale(.82);transform-origin:right bottom}.journey-bar{gap:12px;padding:19px 0}.journey-bar>button{font-size:9px}.progress{gap:5px}.progress button{width:18px;height:18px;font-size:7px;padding:0}.camera-layout{grid-template-columns:1fr;gap:25px}.camera-toy{width:72%;max-width:230px}.camera-layout .chapter-title{font-size:44px}.camera-layout .chapter-copy{margin-bottom:12px}.photo-frame{max-width:230px;padding:8px 8px 16px}.photo-frame img{aspect-ratio:1}.photo-controls{max-width:230px}.memory-grid{grid-template-columns:1fr;gap:10px}.memory-card{min-height:110px;padding:15px 18px;display:grid;grid-template-columns:1fr 1fr;align-items:center}.memory-card>span{grid-column:1;font-size:9px}.memory-card svg{grid-row:1/3;grid-column:2;height:45px;width:55px;margin:0 0 0 auto}.memory-card h3{font-size:24px;margin:4px 0}.memory-card p{font-size:19px;margin:8px 0;grid-column:1/-1}.date-puzzle{gap:9px;margin:23px 0}.date-block{min-width:0;flex:1;padding:15px 8px}.date-block strong{font-size:40px}.date-block span{font-size:7px}.time-readout strong{font-size:36px}.time-face{width:100px;height:100px}.time-face:before{top:12px}.time-face:after{top:4px}.bridge-world{height:120px;padding:0 5px}.island{width:90px;height:50px;font-size:10px}.bridge{left:60px;right:60px;top:49px;height:28px}.venue-card{padding:20px}.venue-card h3{font-size:23px}.quest-schedule{grid-template-columns:1fr;gap:18px;margin-top:20px}.schedule-pieces button{font-size:10px;padding:10px}.timeline{min-height:50px}.palette{gap:5px}.swatch{width:57px;font-size:8px}.swatch i{width:43px;height:43px}.wardrobe{padding:18px;gap:15px}.wardrobe i{width:55px;height:65px}.wardrobe span{font-size:22px}.invitation{padding:30px 21px;margin-top:10px}.invitation h2{font-size:35px}.invitation>p{font-size:22px}.invitation .invite-details{font-size:10px}.invitation:before{inset:10px}.final-actions{margin:6px 0}.invitation.sealed:after{font-size:10px;bottom:20px}.demo-note{font-size:8px}footer{font-size:7px;letter-spacing:1px}footer button{font-size:9px}.stage-8 .companions{opacity:.7;transform:scale(.65)}.stage-8 #chapter-content{padding-bottom:130px}}
@media(prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important;scroll-behavior:auto!important}.flash{display:none}.photo-frame,.invitation{transform:none}}
#demo-rsvp[hidden]{display:none}
/* A simpler, guest-led adventure. */
.companions{opacity:.82}.companion.one .body,.hug-actor.hanbi .body{background:repeating-linear-gradient(90deg,#99ac7f,#99ac7f 3px,#899d7422 4px)}.companion.one .hair,.hug-actor.hanbi .hair{clip-path:none;border-radius:50% 50% 20% 20%;height:21px;top:6px}.companion.one .hair:before,.hug-actor.hanbi .hair:before{content:'';position:absolute;width:20px;height:20px;background:#443c33;border-radius:50%;top:-10px;left:6px}.companion.two .body,.hug-actor.kevin .body{background:repeating-linear-gradient(90deg,#b76c4e,#b76c4e 3px,#a65c4322 4px)}.companion.two .hair,.hug-actor.kevin .hair{width:33px;height:28px;top:5px;left:10px;border-radius:55% 55% 35% 35%;clip-path:polygon(0 0,100% 0,100% 80%,85% 60%,70% 85%,50% 55%,25% 80%,0 64%)}.companion.two .hair:before{display:none}.companion>span{font-size:6px;letter-spacing:1px}.player-cast{display:flex;gap:45px;margin:28px 0 23px}.player-cast>div{display:grid;gap:3px}.player-cast span{font-size:8px;letter-spacing:2px;color:#d2c69e}.player-cast strong{font:25px Georgia;color:#faedce}#start-form{display:grid;gap:12px;max-width:330px}#start-form label{font-size:9px;letter-spacing:2px;color:#e0c686}#start-form label span{font:13px Caveat;letter-spacing:0;margin-left:9px;color:#f5e3b9}#nickname{border:1px solid #b3bc9277;background:#183a30c9;color:#fff0cf;padding:12px 15px;border-radius:3px;font:16px/1.5 sans-serif;width:100%}#nickname::placeholder{color:#b5c0a5}#start-form .primary{text-align:center}.snapshot-layout{display:grid;grid-template-columns:1fr 1fr;gap:50px;align-items:center}.shutter-camera{border:0;background:none;padding:0;width:100%;max-width:260px;display:block;margin:20px 0;filter:drop-shadow(0 12px 15px #0b241e77);transition:transform .2s}.shutter-camera:hover{transform:translateY(-3px)}.shutter-camera:active{transform:translateY(2px)}.shutter-camera svg{width:100%;display:block}.shutter-label{font-size:10px;display:flex;justify-content:center;align-items:center;gap:8px;margin-top:10px;color:#f1d698;letter-spacing:1px}.shutter-label i{display:block;width:12px;height:12px;background:#e1b765;border:2px solid #fff0be;border-radius:50%}.photo-count{font:21px Caveat;color:#e2c68f;margin:10px 0}.text-button{padding:4px 0;border:0;border-bottom:1px solid #829c76;background:none;font-size:10px}.photo-stack{position:relative;min-height:420px;width:100%;max-width:350px;justify-self:center}.stack-photo{position:absolute;inset:20px 0 auto;width:90%;max-width:315px;margin:0;background:#fff7df;padding:10px 10px 20px;box-shadow:0 12px 25px #091e1855;transform:translateX(var(--shift)) rotate(var(--turn));pointer-events:none}.stack-photo img{display:block;width:100%;aspect-ratio:.83;object-fit:cover}.stack-photo figcaption{font:25px Caveat;text-align:center;color:#6d5942;margin-top:10px}.stack-photo.new-photo{animation:stack-drop .6s cubic-bezier(.2,.7,.2,1) both}.empty-photo{min-height:380px;border:1px dashed #d2c38b66;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;transform:rotate(3deg);color:#d4c79f;background:#28473455}.empty-photo>span{font:65px Georgia}.empty-photo p{font:26px/1.5 Caveat}.puzzle-layout{display:grid;grid-template-columns:minmax(230px,360px) 1fr;gap:45px;align-items:center;max-width:800px;margin-top:20px}.puzzle-board{aspect-ratio:4/5;position:relative;padding:9px;background:#f2e6c8;box-shadow:0 12px 30px #10281f55;transform:rotate(-2deg);border-radius:3px;overflow:hidden}.puzzle-guide{position:absolute;left:9px;top:9px;width:calc(100% - 18px);height:calc(100% - 18px);object-fit:fill;opacity:.12}.puzzle-slots{position:relative;display:grid;grid-template-columns:repeat(3,1fr);height:100%}.puzzle-slot{display:grid;place-items:center;border:1px dashed #9fa98b88;color:#41533c}.puzzle-slot.filled{background-image:var(--piece-image);background-size:300% 100%;background-position:var(--position) 0;border-color:transparent;animation:piece-place .35s ease both}.puzzle-slot>span{font:19px Georgia}.puzzle-slot.filled>span{display:none}.puzzle-finish{position:absolute;bottom:9px;left:9px;right:9px;padding:14px 6px;background:linear-gradient(transparent,#18382cd9);color:#fff0cb;font:21px Caveat;text-align:center;animation:reveal-glow .8s ease both}.puzzle-finish[hidden]{display:none}.puzzle-tray{display:flex;gap:12px;flex-wrap:wrap;align-items:start}.puzzle-piece{width:75px;aspect-ratio:4/15;background-image:var(--piece-image);background-size:300% 100%;background-position:var(--position) 0;border:4px solid #e1c995;border-radius:3px;position:relative;box-shadow:0 8px 18px #0b241b44;transform:rotate(3deg);cursor:grab}.puzzle-piece:nth-child(2){transform:rotate(-5deg)}.puzzle-piece>span{position:absolute;bottom:4px;left:0;right:0;text-align:center;font-size:10px;color:#fff4d0;background:#2d4d3ac9}.puzzle-piece.placed{background-image:none;background-color:#385c4744;box-shadow:none;border:1px dashed #a2b18a;opacity:.45;cursor:default}.puzzle-piece.placed span{background:none;font-size:24px}.puzzle-count{width:100%}.slot-machine{max-width:680px;margin:30px 0 22px;padding:24px 26px;background:linear-gradient(145deg,#466449dd,#233f30dd);border:1px solid #ac9c62;border-radius:13px;box-shadow:inset 0 0 0 5px #173a2c,0 15px 35px #10251d44}.slot-top{text-align:center;font-size:8px;letter-spacing:2px;color:#dec38d;margin:5px 0 22px}.slot-body{display:flex;gap:24px;align-items:center}.reels{flex:1;display:grid;grid-template-columns:1fr 1fr 1.6fr;gap:8px}.reels>div{background:linear-gradient(#cab882,#f7ebbd 27%,#f3e5b5 73%,#bba56c);border:2px solid #bca36b;border-radius:4px;text-align:center;padding:17px 7px 10px;color:#294331;overflow:hidden}.reels strong{font:46px/1 Georgia;display:block;text-shadow:0 1px #fffae6}.reels span{font-size:7px;letter-spacing:1.5px;color:#8c7344}.reels .time-reel{grid-column:1/-1;padding:11px}.time-reel strong{font-size:32px}.spinning .reels strong{filter:blur(1px);animation:reel-jitter .12s infinite}.slot-lever{width:70px;flex:none;background:none;border:0;padding:0;min-height:170px;position:relative}.lever-arm{display:block;width:10px;height:93px;background:linear-gradient(90deg,#9d8452,#e2c887,#a18959);position:relative;margin:0 auto 25px;border-radius:5px;transform-origin:center 95%;transition:transform .25s;box-shadow:0 6px 8px #172b1c88}.lever-arm:after{content:'';position:absolute;bottom:-8px;left:-9px;width:28px;height:21px;background:#98804f;border-radius:50%;border:3px solid #cbb274}.lever-arm i{position:absolute;top:-12px;left:-13px;width:35px;height:35px;border-radius:50%;background:radial-gradient(circle at 30% 25%,#e69b66,#9f4b32);border:2px solid #c18f54;box-shadow:0 4px 7px #172a1c66}.slot-lever:hover .lever-arm{transform:rotate(12deg)}.spinning .lever-arm{transform:rotate(65deg)}.lever-label{font:17px/1.1 Caveat;color:#ecd29a;display:block}.slot-result{font:23px/1.4 Caveat;text-align:center;margin:22px 0 5px;color:#ffe3a5;animation:reveal-glow .7s ease both}.slot-result small{font:9px/1.8 sans-serif;color:#c3cba4}.slot-result[hidden]{display:none}.hug-scene{position:relative;height:190px;max-width:600px;margin:20px 0}.hug-path{position:absolute;bottom:27px;left:0;right:0;height:26px;background:radial-gradient(ellipse,#c3b06e77,transparent 70%);border-bottom:1px solid #bcb27644}.hug-actor{position:absolute;top:40px;left:20px;text-align:center;transition:left 1.1s cubic-bezier(.35,0,.3,1),transform 1.1s;transform:scale(1.15);width:75px}.hug-actor>span{font-size:8px;letter-spacing:2px;color:#e7ca8e}.hug-actor.kevin{left:calc(100% - 95px)}.reunited .hug-actor.hanbi{left:calc(50% - 64px);transform:scale(1.15) rotate(7deg)}.reunited .hug-actor.kevin{left:calc(50% - 9px);transform:scale(1.15) rotate(-7deg)}.reunited .hug-actor .leg{animation:tiny-walk .22s 4 alternate}.reunited .hug-actor.hanbi .body:after{animation:hug-arm .5s 1s forwards}.reunited .hug-actor.kevin .body:before{animation:hug-arm-left .5s 1s forwards}.hug-heart{position:absolute;left:calc(50% - 15px);top:0;font:42px Georgia;color:#f3ce8b;opacity:0;transform:scale(.4)}.reunited .hug-heart{animation:heart-arrives .8s 1s ease both}.destination{max-width:600px;margin-top:30px;padding:24px 0 0;border-top:1px solid #b4a56d77}.destination h2{font:37px/1.15 Georgia;color:#efdcad;margin:15px 0}.destination p{font-size:11px;color:#d5d9bb}.destination a{font-size:11px;color:#edc98a;border-bottom:1px solid #a69c69;padding-bottom:4px}.evening-reveal{max-width:780px;margin-top:30px}.evening-reveal[hidden],.dress-reveal[hidden]{display:none}.glow-timeline{list-style:none;padding:0;margin:0;display:grid;grid-template-columns:1fr 1fr;gap:20px 35px}.glow-timeline li{display:grid;grid-template-columns:12px 75px 1fr;gap:10px;align-items:start;padding:15px 0;border-top:1px solid #aeb17d55;animation:reveal-glow .65s var(--delay) ease both}.event-light{width:7px;height:7px;border-radius:50%;background:#f3d28a;box-shadow:0 0 15px #ffda76;margin-top:7px}.glow-timeline time{font-size:9px;color:#e7ce95;white-space:nowrap;margin-top:4px}.glow-timeline h3{font:25px/1.1 Caveat;margin:0 0 6px;color:#f5e6bd}.glow-timeline p{font-size:10px;color:#d2d8b9;margin:0;line-height:1.6}.dress-reveal{margin-top:30px;max-width:520px;border-top:1px solid #b4a56d77;padding-top:28px;animation:reveal-glow .8s ease both}.dress-reveal h2{font:45px/1.2 Georgia;color:#f3dfa9;margin:13px 0}.dress-reveal>p:not(.tiny-note){font:25px/1.5 Caveat;color:#eddfb7}.dress-palette{display:flex;gap:20px;margin:25px 0}.dress-palette>span{text-align:center;font-size:9px;color:#d3d9b9}.dress-palette i{display:block;width:44px;height:44px;border-radius:50%;border:1px solid #eedba655;box-shadow:0 4px 13px #18332577;margin-bottom:8px}.personal-note{font-size:28px!important}.stage-5 .companions{display:none}.invitation{max-width:650px}.stage-8 .invitation{animation:reveal-glow .7s ease both;transform:none}.stage-2 .companions,.stage-3 .companions{transform:scale(.65);opacity:.65}
@keyframes stack-drop{from{opacity:0;transform:translate(20px,-55px) rotate(calc(var(--turn) + 9deg))}to{opacity:1;transform:translateX(var(--shift)) rotate(var(--turn))}}@keyframes piece-place{from{opacity:.2;transform:scale(.94)}to{opacity:1;transform:scale(1)}}@keyframes reveal-glow{from{opacity:0;transform:translateY(16px);filter:blur(2px)}to{opacity:1;transform:translateY(0);filter:blur(0)}}@keyframes reel-jitter{50%{transform:translateY(4px)}}@keyframes tiny-walk{to{transform:rotate(-12deg)}}@keyframes hug-arm{to{transform:rotate(-70deg) translate(-3px,-6px)}}@keyframes hug-arm-left{to{transform:rotate(70deg) translate(3px,-6px)}}@keyframes heart-arrives{to{opacity:1;transform:scale(1)}}
@media(max-width:650px){.player-cast{gap:38px;margin:23px 0}.player-cast strong{font-size:23px}#start-form{max-width:100%}.snapshot-layout{grid-template-columns:1fr;gap:25px}.snapshot-layout .chapter-title{font-size:44px}.shutter-camera{max-width:200px;margin:12px 0}.photo-stack{min-height:325px;max-width:260px}.stack-photo{inset:10px 0 auto;width:94%;padding:8px 8px 15px;left:3%}.stack-photo img{aspect-ratio:1}.stack-photo figcaption{font-size:22px}.empty-photo{min-height:220px}.empty-photo>span{font-size:45px}.empty-photo p{font-size:23px}.puzzle-layout{grid-template-columns:1fr;gap:24px}.puzzle-board{width:100%;max-width:320px;justify-self:center}.puzzle-tray{justify-content:center;gap:18px}.puzzle-piece{width:54px;aspect-ratio:4/15;background-size:300% 100%}.puzzle-piece>span{font-size:8px}.puzzle-count{text-align:center;margin:0}.puzzle-finish{font-size:20px}.slot-machine{padding:20px 14px;margin-top:25px}.slot-top{font-size:6px;letter-spacing:1px}.slot-body{gap:10px}.slot-lever{width:45px;min-height:150px}.lever-arm{height:77px;width:8px;margin-bottom:20px}.lever-arm i{width:29px;height:29px;left:-11px}.lever-label{font-size:15px}.reels{gap:5px;grid-template-columns:1fr 1fr 1.45fr}.reels>div{padding:17px 3px 10px;border-width:1px}.reels strong{font-size:30px}.reels span{font-size:6px;letter-spacing:.5px}.time-reel strong{font-size:28px}.slot-result{font-size:21px;line-height:1.5}.slot-result small{font-size:8px}.hug-scene{height:175px;margin-top:12px}.hug-actor{transform:scale(.95);top:35px}.reunited .hug-actor.hanbi{left:calc(50% - 59px);transform:scale(.95) rotate(7deg)}.reunited .hug-actor.kevin{left:calc(50% - 15px);transform:scale(.95) rotate(-7deg)}.destination h2{font-size:32px}.destination{margin-top:25px}.glow-timeline{grid-template-columns:1fr;gap:0}.glow-timeline li{grid-template-columns:10px 68px 1fr;padding:13px 0;gap:8px}.glow-timeline h3{font-size:26px}.glow-timeline p{font-size:10px}.dress-reveal h2{font-size:36px}.dress-reveal>p:not(.tiny-note){font-size:24px}.dress-palette{gap:17px}.dress-palette i{width:40px;height:40px}.stage-8 .invitation .personal-note{font-size:26px!important}.companion>span{font-size:5px;letter-spacing:.5px}.stage-3 #chapter-content{padding-bottom:110px}.stage-3 .companions{display:none}}
@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;transition:none!important}.reunited .hug-heart{opacity:1;transform:scale(1)}}
.journey-bar:has(#next[hidden]){justify-content:center}#previous[hidden],#next[hidden],#restart[hidden]{display:none}
.slot-lever>*{pointer-events:none}
.hug-scene{--hug-scale:1.15;--hanbi-target:calc(50% - 64px);--kevin-target:calc(50% - 9px)}.reunited .hug-actor.hanbi{animation:walk-hanbi 1.1s cubic-bezier(.35,0,.3,1) both}.reunited .hug-actor.kevin{animation:walk-kevin 1.1s cubic-bezier(.35,0,.3,1) both}.spinning .lever-arm{animation:pull-lever .5s ease both}@keyframes walk-hanbi{from{left:20px;transform:scale(var(--hug-scale)) rotate(0)}to{left:var(--hanbi-target);transform:scale(var(--hug-scale)) rotate(7deg)}}@keyframes walk-kevin{from{left:calc(100% - 95px);transform:scale(var(--hug-scale)) rotate(0)}to{left:var(--kevin-target);transform:scale(var(--hug-scale)) rotate(-7deg)}}@keyframes pull-lever{0%{transform:rotate(0)}55%{transform:rotate(65deg)}100%{transform:rotate(0)}}@media(max-width:650px){.hug-scene{--hug-scale:.95;--hanbi-target:calc(50% - 59px);--kevin-target:calc(50% - 15px)}}
/* A continuous, naturally scrolling story. */
.scroll-label{font-size:8px;letter-spacing:1.5px;color:#b8c4ab}.scroll-journey{display:grid;gap:42px}.story-chapter{scroll-margin-top:20px;min-height:720px}.chapter-content{position:relative;padding:20px 6% 155px;min-height:625px}.scroll-cue{position:absolute;bottom:25px;left:6%;font:19px Caveat;color:#d1c499;pointer-events:none}.story-chapter.stage-1{min-height:calc(100svh - 105px)}.story-chapter.stage-1 .chapter-content{min-height:625px}#live-status{position:fixed;clip-path:inset(50%);width:1px;height:1px;overflow:hidden}.story-chapter .companions{right:6%;bottom:32px}.story-chapter.stage-3 .companions{display:none}.story-chapter.stage-8 .chapter-content{padding-bottom:130px}.jigsaw-board{padding:9px;overflow:hidden}.jigsaw-target{position:absolute;left:9px;top:9px;width:calc(100% - 18px);height:calc(100% - 18px);pointer-events:none}.jigsaw-target svg{width:100%;height:100%;display:block;overflow:visible}.jigsaw-target path{pointer-events:fill;fill:transparent}.jigsaw-target.filled path{pointer-events:none;fill:none}.jigsaw-target.filled{animation:piece-place .35s ease both}.piece-number{position:absolute;font:20px Georgia;color:#43573d;pointer-events:none}.number-0{left:21%;top:23%}.number-1{left:77%;top:23%}.number-2{left:49%;top:80%}.jigsaw-tray{display:grid;grid-template-columns:1fr 1fr;gap:20px;max-width:300px;justify-items:center;align-items:center}.jigsaw-piece{position:relative;width:116px;max-width:100%;padding:0;border:0;background:none;filter:drop-shadow(0 7px 6px #0c251d66);cursor:grab;transform:rotate(-5deg);transition:transform .2s}.jigsaw-piece:first-child{grid-column:1/-1;width:180px;transform:rotate(5deg)}.jigsaw-piece:nth-child(3){transform:rotate(6deg)}.jigsaw-piece:hover{transform:translateY(-4px) rotate(0)}.jigsaw-piece svg{display:block;width:100%;height:auto;overflow:visible}.jigsaw-piece>span{position:absolute;left:40%;bottom:12px;min-width:20px;height:20px;border-radius:50%;display:grid;place-items:center;background:#284b39dd;color:#f4e1ac;font:9px sans-serif;pointer-events:none}.jigsaw-piece.placed{opacity:.25;filter:grayscale(.7);cursor:default}.jigsaw-piece.placed>span{background:#d6c69c;color:#294d39}.jigsaw-tray .puzzle-count{grid-column:1/-1;text-align:center;margin:0}.puzzle-board.complete .jigsaw-target svg>path{stroke:transparent}.wardrobe{margin-top:10px}.stage-7 .palette{margin:25px 0}.stage-7 .wardrobe{width:100%;max-width:390px}.stage-7 .wardrobe>i{flex:none}.stage-7 .swatch{min-height:85px}.stage-7 .chapter-copy small{font-size:11px}#restart[hidden]{display:inline-block}
@media(max-width:650px){.scroll-journey{gap:22px}.scroll-label{font-size:6px;letter-spacing:.7px}.story-chapter{scroll-margin-top:12px;min-height:760px}.chapter-content{padding:15px 23px 130px;min-height:685px}.story-chapter.stage-1 .chapter-content{min-height:685px}.story-chapter.stage-1{min-height:760px}.story-chapter.stage-2 .chapter-content{padding-bottom:145px}.scroll-cue{left:23px;font-size:17px;bottom:24px}.story-chapter.stage-3 .chapter-content{padding-bottom:80px}.jigsaw-tray{max-width:280px;grid-template-columns:1fr 1fr;gap:15px;margin:auto}.jigsaw-piece{width:100px}.jigsaw-piece:first-child{width:165px}.puzzle-layout{gap:28px}.jigsaw-board{max-width:300px}.story-chapter.stage-7 .wardrobe span{font-size:21px}.story-chapter.stage-8 .chapter-content{padding-bottom:140px}.stage-7 .chapter-copy{font-size:12px}}
/* Reliable, generous puzzle snapping for touch, mouse and keyboard. */
.jigsaw-piece{touch-action:none;user-select:none;-webkit-user-select:none;-webkit-touch-callout:none}.jigsaw-piece>*{pointer-events:none}.jigsaw-piece svg{pointer-events:none}.jigsaw-board.drop-ready{box-shadow:0 0 0 3px #eaca85,0 0 40px #f5cf824d}.piece-drag-ghost{position:fixed!important;margin:0!important;padding:0!important;max-width:none!important;transform:translate(-50%,-50%) rotate(0)!important;z-index:1000;pointer-events:none!important;opacity:.95;filter:drop-shadow(0 12px 15px #051b1599)!important;transition:none!important}.piece-drag-ghost>span{display:none}.music-controls{position:fixed;left:20px;bottom:18px;z-index:40;display:flex;gap:13px;align-items:center;padding:9px 13px;background:#183a30f0;border:1px solid #b4a77788;border-radius:24px;box-shadow:0 5px 25px #081e1855;backdrop-filter:blur(8px)}.music-controls button{border:0;background:none;color:#f0d6a1;font-size:10px;padding:5px 0;min-width:85px}.music-controls label{display:flex;align-items:center}.music-controls input{width:65px;height:20px;accent-color:#d4b570}.sr-only{position:absolute;width:1px;height:1px;clip-path:inset(50%);overflow:hidden}footer{padding-bottom:90px}@media(max-width:650px){.music-controls{left:16px;bottom:12px;padding:8px 12px;gap:9px}.music-controls button{font-size:9px;min-width:76px}.music-controls input{width:58px}}
