:root{font-family:Georgia,Times New Roman,serif;color:#243e34;background:#f5efdf;font-synthesis:none;text-rendering:optimizeLegibility;font-weight:400}*{box-sizing:border-box}body{margin:0;background-image:radial-gradient(#66573613 .7px,transparent .7px);background-size:5px 5px}button,input{font:inherit}button,a{-webkit-tap-highlight-color:transparent}button{cursor:pointer}button:disabled{cursor:wait;opacity:.6}a{color:inherit}button:focus-visible,a:focus-visible,input:focus-visible,[tabindex]:focus-visible{outline:3px solid #a33e2e;outline-offset:5px}button{touch-action:manipulation}h1,h2,h3,p{margin-top:0}.site{max-width:1250px;margin:auto;padding:0 48px}.garland{position:absolute;top:-22px;left:0;width:100%;height:68px;border-bottom:1px solid #75806b;display:flex;justify-content:space-around;transform:rotate(-1deg);pointer-events:none}.garland span{align-self:flex-end;color:#a63f2c;position:relative;font-size:22px;bottom:-12px}.garland span:nth-child(2n){color:#b38b38;font-size:14px}.garland span:nth-child(3n){color:#28533e;font-size:26px}.masthead{display:flex;justify-content:space-between;align-items:center;padding:90px 0 30px;border-bottom:1px solid #29463333;font:11px/1.5 ui-monospace,monospace;letter-spacing:1.2px;text-transform:uppercase}.brand{text-decoration:none;display:flex;gap:10px;align-items:center}.brand span{font-size:29px;color:#a33e2e}.edition{font-size:9px;color:#6d705e}.intro{text-align:center;padding:52px 0 36px}.eyebrow,.mini-label{font:10px/1.6 ui-monospace,monospace;letter-spacing:2px;color:#8c3c2e}.intro h1{position:relative;display:inline-block;font-size:clamp(48px,6vw,76px);line-height:1.04;font-weight:400;letter-spacing:-3px;margin:16px 0 22px}.intro em{color:#a33e2e}.intro p{font-size:16px;line-height:1.6;color:#656656}.title-star{position:absolute;right:-57px;top:38px;font-size:48px;color:#b18b35;transform:rotate(14deg)}.workshop{position:relative;max-width:1020px;margin:0 auto}.paper{max-width:620px;margin:auto;background:#fffcf3;box-shadow:1px 5px #e5ddc9,0 10px 35px #47381c12;border:1px solid #e4ddcc;padding:28px 38px 32px;position:relative;min-height:430px;transform:rotate(-.5deg)}.paper:after{content:"";position:absolute;left:0;right:0;bottom:-5px;height:6px;background:linear-gradient(135deg,#fffcf3 25%,transparent 25%) -4px 0/8px 8px,linear-gradient(225deg,#fffcf3 25%,transparent 25%) -4px 0/8px 8px;pointer-events:none}.tape{width:125px;height:33px;background:#d4b57470;position:absolute;top:-17px;left:calc(50% - 62px);transform:rotate(-5deg);clip-path:polygon(2% 0,98% 3%,100% 92%,96% 96%,0 100%,3% 80%)}.mini-label{font-size:9px;letter-spacing:1.4px}h2{font-size:34px;font-weight:400;margin:8px 0 10px;letter-spacing:-1px}.card-copy{color:#656656;font-size:14px;margin-bottom:26px}.names{display:grid;grid-template-columns:1fr 1fr;gap:15px 20px}.name{border:1px solid #c9bfa4;background:#f0e2c7;min-height:64px;text-align:left;display:flex;align-items:center;gap:13px;padding:8px 17px;font-style:italic;font-size:24px;box-shadow:1px 3px #c1b69a44;transition:transform .15s,box-shadow .15s}.name:nth-child(2n){background:#e5e9dc;border-color:#bbc4af;transform:rotate(1deg)}.name:nth-child(3n){background:#f1ddd3;border-color:#d8b9ab;transform:rotate(-1.5deg)}.name:hover:enabled{transform:rotate(0) translateY(-3px);box-shadow:2px 6px #c1b69a44}.tag-hole{width:7px;height:7px;min-width:7px;border-radius:50%;background:#fffcf3;border:1px solid #b9ae93}.tag-star{margin-left:auto;font-size:20px;color:#8b593c}.tiny{font:10px/1.7 ui-monospace,monospace;text-align:center;color:#666453;margin:24px 0 0}.side-note{position:absolute;left:0;top:70px;transform:rotate(-12deg);font-style:italic;font-size:20px;line-height:1.15;color:#8c3c2e}.side-note>span{display:block;font-size:58px;text-align:right;font-style:normal}.postage{position:absolute;right:-12px;top:130px;transform:rotate(9deg);text-align:center;width:150px;color:#786b4c}.postage>div{margin:auto auto 13px;border:3px double #9b4b37;width:83px;padding:8px;font-size:34px;line-height:.8;color:#9b4b37;outline:1px dashed #9b4b37;outline-offset:4px}.postage small{font:9px ui-monospace,monospace}.postage span{display:block;font-style:italic;font-size:14px;line-height:1.4;margin-bottom:12px}.family-strip{display:flex;align-items:center;justify-content:center;gap:35px;margin:52px 0 40px;text-align:center}.family-strip h3{font-size:17px;font-style:italic;font-weight:400;margin-bottom:13px}.family-strip p{font:10px/1.7 ui-monospace,monospace;color:#686958;margin-bottom:4px}.family-strip .arrival{color:#8c3c2e;font:italic 13px/1.6 Georgia,serif;margin-top:11px}.little-star{font-size:45px;color:#a78739;transform:rotate(12deg)}footer{border-top:1px solid #29463333;display:flex;justify-content:space-between;padding:23px 0 32px;font:10px/1.5 ui-monospace,monospace;color:#656656}footer a{text-underline-offset:4px}.stage{text-align:center;padding:0 0 10px}.stage p{font-size:15px;line-height:1.65;color:#62614f}.primary{display:block;background:#294d3d;color:#fffdf2;border:1px solid #1e3c2f;padding:15px 22px;min-height:50px;font:14px/1.4 ui-monospace,monospace;box-shadow:3px 3px #b2b39b;margin:20px auto 16px;width:100%;max-width:360px}.primary:hover:enabled{background:#193d2c}.primary span{margin-left:10px}.text-button{border:0;background:none;color:#70412e;text-decoration:underline;text-underline-offset:4px;font-size:13px;padding:10px;min-height:44px;display:block;margin:0 auto}.big-tag{background:#ead6b6;transform:rotate(-3deg);padding:22px 15px;margin:28px auto;width:85%;box-shadow:3px 4px #d6c5a5}.big-tag span{display:block;font:10px/1.6 ui-monospace,monospace}.big-tag strong{display:block;font:italic 42px/1.5 Georgia,serif}.gift{display:block;position:relative;width:210px;height:215px;border:0;background:none;margin:0 auto 12px;transition:transform .2s}.gift:hover:enabled{transform:rotate(-4deg)}.gift-box{position:absolute;left:22px;right:22px;bottom:10px;height:137px;background:repeating-linear-gradient(45deg,#a24332 0 12px,#aa4b39 12px 14px);box-shadow:4px 4px #bfae8e}.gift-box:after,.gift-lid:after{content:"";position:absolute;height:100%;width:28px;background:#e5c477;left:calc(50% - 14px);top:0}.gift-lid{position:absolute;left:12px;right:12px;top:65px;height:30px;background:#91392b;z-index:2;transform:rotate(-3deg);box-shadow:0 4px #5d291c33}.bow{position:absolute;top:-5px;left:57px;z-index:3;font-size:105px;font-weight:700;color:#bd9b49;line-height:1;transform:rotate(-4deg)}.gift-label{position:absolute;bottom:34px;right:4px;z-index:3;background:#ffefcc;padding:12px;font:italic 17px Georgia;transform:rotate(12deg);box-shadow:1px 2px #6f392744}.reveal{padding:16px 0;animation:unwrap .65s ease-out}.confetti{font-size:35px;color:#ad873b;letter-spacing:12px}.recipient{display:block;font-size:clamp(42px,8vw,64px);font-style:italic;font-weight:400;color:#9b3c2c;overflow-wrap:anywhere;margin:10px 0 17px}.handwritten{font-size:19px;font-style:italic}.notice{background:#f0e8d3;border:1px dashed #a99c79;padding:16px;font-size:14px;line-height:1.6;margin:18px 0}.notice p{margin:8px 0 0}.error{background:#f8e4dc;border-left:3px solid #a33e2e;padding:14px;margin:18px 0;font-size:14px;line-height:1.5;color:#803226}.organizer{padding:20px 0}.organizer p{line-height:1.6}.organizer label{display:block;font-size:14px;margin-bottom:8px}.organizer input{width:100%;min-height:48px;border:1px solid #a49e87;background:#fffef9;padding:10px;color:#243e34}.organizer .primary{max-width:none}@keyframes unwrap{0%{opacity:0;transform:translateY(15px) rotate(-4deg)}to{opacity:1;transform:translateY(0) rotate(0)}}@media(min-width:1400px){.intro{padding-top:58px}.site{max-width:1300px}.paper{max-width:640px}}@media(max-width:1050px){.side-note,.postage{display:none}.site{padding:0 30px}.title-star{right:-40px;font-size:35px}}@media(max-width:600px){.site{padding:0 18px}.masthead{padding-top:75px;padding-bottom:19px}.brand{font-size:9px;letter-spacing:.6px}.edition{display:none}.intro{padding:34px 0 32px}.intro h1{font-size:51px;letter-spacing:-2px}.intro p{font-size:14px}.eyebrow{font-size:9px;letter-spacing:1.2px}.title-star{font-size:28px;right:-20px;top:26px}.paper{padding:25px 20px;transform:rotate(-.35deg)}.names{gap:14px 12px}.name{padding:8px 11px;gap:9px;font-size:21px;min-height:61px}.tag-star{font-size:16px}h2{font-size:30px}.card-copy{line-height:1.6;font-size:13px}.family-strip{margin:36px 0 28px;gap:8px}.family-strip p{font-size:9px}.little-star{font-size:23px}.family-strip h3{font-size:16px}.family-strip .arrival{font-size:12px}footer{font-size:9px;gap:20px;align-items:start}footer span{max-width:180px}.stage .primary{font-size:12px}.tiny{font-size:9px}.gift{margin-top:10px}.recipient{font-size:48px}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;transition:none!important;scroll-behavior:auto!important}}.unwrapped-gift{position:relative;width:100px;height:65px;margin:8px auto 0}.unwrapped-gift .gift-box{height:45px;left:12px;right:12px;bottom:0}.unwrapped-gift .gift-lid{left:6px;right:6px;top:12px;height:15px;transform:translate(-8px,-13px) rotate(-15deg);animation:lift-lid .7s ease-out}.unwrapped-gift .gift-box:after,.unwrapped-gift .gift-lid:after{width:14px;left:calc(50% - 7px)}@keyframes lift-lid{0%{transform:translate(0) rotate(-3deg)}to{transform:translate(-8px,-13px) rotate(-15deg)}}.garland{left:12px;width:calc(100% - 24px)}.puppet{display:block;position:relative;width:120px;height:165px;flex:none;transform-origin:50% 95%;filter:drop-shadow(2px 3px 0 #49331f25);animation:puppet-sway 3s ease-in-out infinite;animation-delay:var(--cast-delay,0s)}.paper-body{position:absolute;inset:0;width:100%;height:100%;overflow:visible}.photo-head{position:absolute;top:-4%;left:3%;width:94%;height:64%;object-fit:contain;transform-origin:50% 85%;animation:head-bob 3s ease-in-out infinite;animation-delay:var(--cast-delay,0s);filter:drop-shadow(1px 0 0 #fff7e4) drop-shadow(-1px -1px 0 #fff7e4)}.arm,.leg{transform-box:view-box}.arm-left{transform-origin:36% 48%;animation:hand-wave 3s ease-in-out infinite;animation-delay:var(--cast-delay,0s)}.arm-right{transform-origin:64% 48%}.leg-left{transform-origin:42% 72%}.leg-right{transform-origin:58% 72%}.reaction-selected{animation:happy-bounce .55s ease-in-out 3}.reaction-selected .arm-right{animation:hand-wave .4s ease-in-out 4}.reaction-opening .photo-head{animation:head-bob .4s ease-in-out infinite}.reaction-celebrate{animation:encore-hop .6s ease-in-out 5}.reaction-celebrate .arm{animation:cheer-arms .6s ease-in-out 5}.reaction-celebrate .leg-left{animation:kick .6s ease-in-out 5}.reaction-celebrate .leg-right{animation:kick .6s ease-in-out 5 reverse}.family-theatre{position:relative;max-width:930px;margin:0 auto 40px;background:#f7e2b9;border:2px solid #754632;box-shadow:6px 7px #9d3e2d;isolation:isolate}.theatre-heading{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:12px 19px;background:#783d32;color:#fff6df;font:10px/1.5 ui-monospace,monospace;letter-spacing:1.5px}.live-sticker{font:italic 13px Georgia,serif;letter-spacing:0;color:#f9d783}.puppet-line{display:grid;grid-template-columns:repeat(8,minmax(0,1fr));padding:30px 25px 10px;background:radial-gradient(ellipse at 50% 100%,#ffe9ab 0,transparent 65%),repeating-linear-gradient(90deg,#b9593a0b 0 2px,transparent 2px 21px);overflow:hidden}.cast-member{display:flex;align-items:center;flex-direction:column;position:relative;min-width:0}.cast-member .puppet{width:100%;max-width:120px;height:auto;aspect-ratio:120/165}.cast-label{font:italic 14px Georgia,serif;padding:4px 7px;background:#fff5d9;transform:rotate(-3deg);box-shadow:1px 2px #74523922;position:relative}.cast-selected .cast-label{background:#365b40;color:#fff}.stage-curtain{position:absolute;top:38px;bottom:43px;width:18px;background:repeating-linear-gradient(90deg,#a64032 0 6px,#84372c 6px 10px);z-index:2;pointer-events:none}.curtain-left{left:0;clip-path:polygon(0 0,100% 0,65% 80%,100% 100%,0 100%)}.curtain-right{right:0;transform:scaleX(-1);clip-path:polygon(0 0,100% 0,65% 80%,100% 100%,0 100%)}.theatre-floor{display:flex;justify-content:space-between;align-items:center;padding:0 14px;background:#e1bc80;border-top:2px solid #976d45;font:10px ui-monospace,monospace;min-height:43px}.theatre-floor button{border:0;background:none;text-decoration:underline;text-underline-offset:4px;color:#633225;font:italic 14px Georgia,serif;min-height:44px}.encore .puppet{animation:encore-hop .6s ease-in-out 5}.encore .arm{animation:cheer-arms .6s ease-in-out 5}.encore .leg-left{animation:kick .6s ease-in-out 5}.puppet-spotlight{display:flex;justify-content:center;margin:16px auto 0;background:radial-gradient(ellipse at 50% 85%,#e7c16d50,transparent 60%)}.puppet-spotlight .puppet{width:145px;height:185px}.puppet-spotlight+.big-tag{margin-top:8px}.name-photo{width:40px;height:44px;object-fit:contain;filter:drop-shadow(1px 1px 0 #fff3d9);flex:none}.name{gap:9px}.name .tag-star{font-size:16px}.name:hover .name-photo{animation:head-bob .4s ease-in-out 3}.pet-parade{display:flex;justify-content:center;gap:8px;margin:0 auto 20px;max-width:560px;padding-top:12px}.pet-member{display:flex;align-items:center;flex-direction:column;min-width:0;flex:1}.pet-member .puppet{width:90px;height:115px;max-width:100%;animation-delay:-1s}.puppet-pet .photo-head{height:80%;top:-8%;left:0;width:100%}.puppet-pet .paper-body{top:15%;height:85%}.pet-member>span:not(.puppet){font:italic 14px Georgia,serif;background:#e5d2ab;padding:4px 9px;transform:rotate(3deg)}.family-strip{display:block;max-width:650px;margin-left:auto;margin-right:auto;border-top:1px dashed #a99c79;padding-top:24px}.family-strip h3{font-size:24px}.child-cameos{display:flex;align-items:center;justify-content:center;gap:24px;margin-top:15px}.child-cameos .puppet{width:70px;height:95px}.child-cameos figure{margin:0}.child-cameos figcaption{font:italic 12px Georgia,serif}.motion-toggle{background:#fff7e5;color:#4c4f38;border:1px dashed #928567;min-height:36px;padding:7px 10px;font:11px ui-monospace,monospace}.motion-controls{display:flex;justify-content:center;margin:-12px auto 28px}.motion-paused *,.motion-paused *:before,.motion-paused *:after{animation-play-state:paused!important}.paper-confetti{position:absolute;left:50%;top:120px;pointer-events:none;z-index:5}.paper-confetti i{position:absolute;display:block;width:8px;height:15px;background:var(--confetti-color);transform:rotate(var(--angle)) translateY(0);opacity:0;animation:confetti-burst 1.5s ease-out forwards;animation-delay:calc(var(--piece)*15ms)}.reveal{position:relative}.gift:not(:disabled){animation:gift-wiggle 4s ease-in-out 2}.gift:disabled{animation:gift-wiggle .3s ease-in-out infinite}.garland span{transform-origin:50% -20px;animation:ornament-sway 4s ease-in-out 2}.garland span:nth-child(2n){animation-delay:-1s}@keyframes puppet-sway{0%,to{transform:rotate(-3deg)}50%{transform:rotate(3deg)}}@keyframes head-bob{0%,to{transform:rotate(-4deg) translateY(0)}50%{transform:rotate(5deg) translateY(-3px)}}@keyframes hand-wave{0%,70%,to{transform:rotate(0)}80%{transform:rotate(25deg)}90%{transform:rotate(-10deg)}}@keyframes happy-bounce{0%,to{transform:translateY(0) rotate(-3deg)}50%{transform:translateY(-10px) rotate(5deg)}}@keyframes encore-hop{0%,to{transform:translateY(0) rotate(-7deg)}50%{transform:translateY(-12px) rotate(8deg)}}@keyframes cheer-arms{0%,to{transform:rotate(-15deg)}50%{transform:rotate(25deg)}}@keyframes kick{0%,to{transform:rotate(-12deg)}50%{transform:rotate(25deg)}}@keyframes confetti-burst{0%{opacity:1;transform:rotate(var(--angle)) translateY(0)}75%{opacity:1}to{opacity:0;transform:rotate(var(--angle)) translateY(var(--distance)) rotate(190deg)}}@keyframes gift-wiggle{0%,80%,to{transform:rotate(0)}85%,95%{transform:rotate(-5deg)}90%{transform:rotate(5deg)}}@keyframes ornament-sway{0%,to{transform:rotate(-12deg)}50%{transform:rotate(12deg)}}@media(max-width:700px){.puppet-line{grid-template-columns:repeat(4,minmax(0,1fr));gap:16px 2px;padding:22px 20px 14px}.cast-member .puppet{max-width:88px}.theatre-heading{padding:10px 12px;font-size:9px}.live-sticker{display:none}.theatre-floor>span{font-size:8px;max-width:120px}.theatre-floor button{font-size:13px}.family-theatre{margin-bottom:34px}.pet-parade{gap:3px}.pet-member .puppet{width:65px;height:90px}.pet-member>span:not(.puppet){font-size:12px;padding:3px 5px}.name{padding:8px;gap:5px;font-size:19px}.name-photo{width:32px;height:40px}.name .tag-star{display:none}.intro{padding-bottom:22px}.intro h1{font-size:48px}.confetti{font-size:26px;letter-spacing:6px;white-space:nowrap}}@media(max-width:360px){.name{font-size:16px;padding:7px 5px}.name-photo{width:26px}.cast-label{font-size:12px;padding:4px}.theatre-heading{font-size:8px;letter-spacing:1px}.pet-member>span:not(.puppet){font-size:11px;padding:3px}.intro h1{font-size:43px}}@media(prefers-reduced-motion:reduce){.puppet,.puppet *,.paper-confetti *,.encore .puppet,.encore .puppet *,.gift,.garland span{animation:none!important;transition:none!important}.paper-confetti{display:none}}.christmas-world{position:fixed;inset:0;pointer-events:none;overflow:hidden;z-index:0}.christmas-world[hidden]{display:none}.site{position:relative;isolation:isolate}.site>header,.site>main,.site>footer,.site>.garland{position:relative;z-index:2}.site>.garland{position:absolute}.site>footer{margin-bottom:110px}.christmas-world{z-index:-1}.roamer{position:absolute;left:var(--x);top:var(--y);animation-duration:var(--roam-duration);animation-delay:var(--roam-delay);animation-iteration-count:infinite;animation-timing-function:linear;will-change:transform}.roamer .puppet{width:98px;height:132px}.roamer-walk{animation-name:village-walk}.roamer-walk .leg-left{animation:walking-leg .55s ease-in-out infinite}.roamer-walk .leg-right{animation:walking-leg .55s ease-in-out infinite reverse}.roamer-dance{animation-name:background-dance}.roamer-dance .puppet{animation:encore-hop 1s ease-in-out infinite}.roamer-peek-left{left:-58px;top:var(--y);animation-name:peek-from-left}.roamer-peek-left .puppet{transform:rotate(30deg)}.roamer-peek-right{left:auto;right:-58px;top:var(--y);animation-name:peek-from-right}.roamer-peek-right .puppet{transform:rotate(-30deg)}.roamer-village-peek{top:auto;bottom:32px;animation-name:peek-from-village;z-index:0}.paper-village{position:absolute;bottom:-12px;left:-2%;width:104%;height:145px;display:flex;justify-content:space-around;align-items:end;pointer-events:none;z-index:1}.village-hills{position:absolute;bottom:0;inset-inline:0;height:55px;background:#e3e8de;border-radius:50% 50% 0 0;border-top:3px solid #fffcf3;box-shadow:0 -12px #f8f4e8;z-index:2}.village-house{width:8%;height:94px;background:var(--house-color);position:relative;transform:rotate(var(--house-lean));box-shadow:4px 3px #60432725;flex:none;border:1px solid #745b4438}.village-house:nth-child(2n){height:110px}.village-house:nth-child(3n){height:78px}.snow-roof{position:absolute;top:-34px;left:-10%;width:120%;height:40px;background:#fffdf2;clip-path:polygon(50% 0,100% 85%,95% 100%,50% 17%,5% 100%,0 85%);filter:drop-shadow(0 3px 0 #c0b59d)}.village-house:before{content:"";position:absolute;top:-28px;left:-4%;width:108%;height:32px;background:#704d3c;clip-path:polygon(50% 0,100% 100%,0 100%)}.chimney{position:absolute;width:13%;height:28px;top:-26px;right:12%;background:#704d3c;border-top:5px solid #fff7e9}.village-house i{display:inline-block;width:19%;height:20px;margin:18px 0 0 20%;background:#ffdf87;border:2px solid #674b37;box-shadow:0 0 15px #ffc96350}.village-house b{display:block;width:19%;height:32px;margin:10px auto 0;background:#e6d4ad;border:2px solid #674b37}.village-sign{position:absolute;bottom:14px;font:italic 13px Georgia;color:#5c624e;z-index:3}.world-snow i{position:absolute;top:-20px;width:5px;height:7px;background:#fffdf2;box-shadow:1px 1px #c4bda4;border-radius:45%;animation:paper-snow 17s linear infinite}.village-controls{max-width:620px;margin:30px auto 0;background:#f5efdfdd;position:relative;display:flex;justify-content:space-between;align-items:center;padding:8px 12px;border-block:1px dashed #b7a985}.village-controls>span{font:9px/1.6 ui-monospace,monospace;letter-spacing:1px;max-width:145px}.village-controls>div{display:flex;align-items:center;gap:8px}.village-controls .text-button{font-size:12px}.village-family-note{margin:35px auto;text-align:center;background:#f5efdfdf;max-width:620px;padding:15px}.village-family-note p{font:10px/1.7 ui-monospace,monospace;margin:5px;color:#686958}.village-family-note p:last-child{font:italic 13px Georgia;color:#8c3c2e}.unwrap-dialog{max-width:none;max-height:none;width:100%;height:100dvh;inset:0;margin:0;padding:0;border:0;background:#182e2b;color:#fff3d7;overflow-y:auto;overscroll-behavior:contain}.unwrap-dialog::backdrop{background:#182e2b}.unwrap-world{position:relative;min-height:100dvh;display:flex;flex-direction:column;align-items:center;background:radial-gradient(ellipse at 50% 45%,#4e6955 0,transparent 55%),radial-gradient(#fff1bf33 .7px,transparent .7px) 0 0/19px 19px;isolation:isolate;overflow:hidden}.unwrap-controls{width:100%;display:flex;align-items:center;justify-content:space-between;gap:12px;padding:12px 22px;z-index:5}.unwrap-controls>div{display:flex;gap:12px}.unwrap-controls button{background:#18322dde;color:#fff2cf;border:1px solid #afbd9955;padding:9px 12px;font:11px/1.5 ui-monospace,monospace;min-height:44px}.unwrap-controls button:hover{background:#355544}.gathered-cast{display:flex;align-items:end;justify-content:center;width:min(100%,1100px);padding:8px 25px;z-index:2;flex:none}.gathered-actor{flex:1;max-width:115px;min-width:0;filter:drop-shadow(0 6px 3px #031b2255)}.gathered-actor .puppet{width:100%;height:auto;aspect-ratio:120/150}.upper-cast{max-width:850px}.lower-cast{padding-bottom:58px;margin-top:auto;z-index:3}.unwrap-center{position:relative;z-index:4;width:calc(100% - 40px);max-width:580px;text-align:center;padding:24px 35px;background:#fff9e9;color:#243e34;box-shadow:7px 7px #d2ad6155;transform:rotate(-.4deg);margin:10px auto 24px}.unwrap-center:before{content:"";position:absolute;inset:-8px 0 auto;height:14px;background:linear-gradient(135deg,transparent 6px,#fff9e9 0) 0 0/12px 14px}.unwrap-center h2{font-size:38px;margin:8px 0 13px}.anticipation-copy{font:italic 15px/1.6 Georgia;color:#696650}.unwrap-center .gift{margin-block:0}.gift-pool{background:radial-gradient(ellipse at 50% 95%,#b9964933,transparent 65%)}.unwrap-center .primary{margin:10px auto}.unwrap-actions{display:flex;align-items:center;gap:12px}.unwrap-actions .primary{max-width:270px}.unwrap-actions .text-button{font-size:12px}.shake-comment{font:11px/1.6 ui-monospace,monospace;min-height:18px;margin:4px 0 12px;color:#6d5238}.no-peeking-note{display:block;margin-top:14px;font:italic 12px Georgia;color:#80664c}.unwrap-center .reveal{padding:0}.unwrap-center .reveal .puppet-spotlight{margin:0}.unwrap-center .reveal .puppet{width:120px;height:150px}.unwrap-center .reveal>p{font-size:15px;line-height:1.5;margin:8px 0}.unwrap-center .recipient{margin:10px 0;font-size:clamp(42px,6vw,64px)}.unwrap-center .handwritten{font-style:italic}.is-anticipating .gathered-actor .puppet{animation:anticipation-lean 2.8s ease-in-out infinite;animation-delay:var(--cast-delay)}.is-anticipating .gathered-actor .photo-head{animation:anticipation-head 2.8s ease-in-out infinite;animation-delay:var(--cast-delay)}.is-anticipating .gathered-actor .arm{animation:none;transform:rotate(10deg)}.is-celebrating .gathered-actor .puppet{animation:encore-hop .7s ease-in-out 6;animation-delay:var(--cast-delay)}.is-celebrating .actor-1 .puppet{animation-name:happy-bounce}.is-celebrating .actor-2 .photo-head{animation:head-bob .4s ease-in-out 10}.unwrap-world .paper-village{opacity:.8;height:115px;z-index:1}.no-peeking-curtain{position:absolute;top:0;bottom:0;width:51%;z-index:10;pointer-events:none;background:repeating-linear-gradient(90deg,#7e2c30 0 24px,#9c3d3e 24px 46px);border-bottom:12px solid #d3ad5b;animation:curtain-away 1.1s cubic-bezier(.5,0,.2,1) forwards}.curtain-intro-left{left:0;transform-origin:left center}.curtain-intro-right{right:0;transform-origin:right center}.gift-shaken{animation:gift-shake .7s ease-out!important}.is-celebrating .paper-confetti{top:130px}@keyframes village-walk{0%{transform:translate(-16vw)}25%{transform:translate(8vw,15px)}50%{transform:translate(28vw,-10px)}75%{transform:translate(8vw,15px)}to{transform:translate(-16vw)}}@keyframes walking-leg{0%,to{transform:rotate(-18deg)}50%{transform:rotate(20deg)}}@keyframes background-dance{0%,40%,to{transform:translateY(0) rotate(-4deg)}50%,70%{transform:translateY(-20px) rotate(7deg)}60%,80%{transform:translateY(0) rotate(-7deg)}}@keyframes peek-from-left{0%,20%,65%,to{transform:translate(-85px) rotate(-10deg)}30%,50%{transform:translate(65px) rotate(18deg)}}@keyframes peek-from-right{0%,20%,65%,to{transform:translate(85px) rotate(10deg)}30%,50%{transform:translate(-65px) rotate(-18deg)}}@keyframes peek-from-village{0%,30%,70%,to{transform:translateY(110px)}40%,60%{transform:translateY(-100px)}}@keyframes paper-snow{to{transform:translate(20px,110dvh) rotate(180deg)}}@keyframes anticipation-lean{0%,to{transform:rotate(-4deg) translateY(0)}50%{transform:rotate(4deg) translateY(-4px)}}@keyframes anticipation-head{0%,to{transform:rotate(-6deg)}50%{transform:rotate(7deg) translateY(2px)}}@keyframes curtain-away{0%{transform:scaleX(1)}to{transform:scaleX(0)}}@keyframes gift-shake{0%,to{transform:rotate(0)}20%,60%{transform:rotate(-12deg)}40%,80%{transform:rotate(12deg)}}@media(min-width:1000px){.unwrap-controls{position:absolute;top:0;left:0}.upper-cast{padding-top:64px}.gathered-actor .puppet{max-height:130px}.unwrap-center{margin-block:0 16px;padding-block:18px}.lower-cast{margin-top:0;padding-bottom:32px}.unwrap-world{justify-content:center}.unwrap-center .gift{height:190px;transform:scale(.9);margin-top:-12px}.unwrap-center .gift .gift-box{height:115px}.unwrap-center .gift .gift-lid{top:61px}.unwrap-center .gift .bow{top:-10px}}@media(max-width:700px){.roamer .puppet{width:66px;height:92px}.roamer-peek-left{left:-42px}.roamer-peek-right{right:-42px}.village-controls{padding:8px;gap:8px}.village-controls>span{font-size:8px;max-width:80px}.village-controls>div{gap:4px}.village-controls .motion-toggle{font-size:9px;padding:7px}.village-controls .text-button{font-size:11px;padding:5px}.paper-village{height:100px}.village-house{width:13%;height:65px}.village-house:nth-child(2n){height:80px}.village-house:nth-child(3n){height:58px}.village-house:nth-of-type(n+7){display:none}.village-sign{font-size:11px;bottom:15px}.village-house i{height:14px}.village-house b{height:24px}.unwrap-controls{padding:8px;gap:6px;align-items:start}.unwrap-controls button{padding:6px;font-size:9px}.unwrap-controls>div{gap:5px}.unwrap-controls>button{max-width:110px}.gathered-cast{padding:4px 8px}.gathered-actor{max-width:65px}.upper-cast{padding-top:8px}.lower-cast{padding:6px 8px 60px}.unwrap-center{width:calc(100% - 28px);padding:18px 15px;margin:10px auto 16px}.unwrap-center h2{font-size:30px}.unwrap-center .mini-label{font-size:8px}.anticipation-copy{font-size:13px;margin-bottom:6px}.unwrap-center .gift{height:185px;width:190px}.unwrap-center .gift .gift-box{height:110px}.unwrap-center .gift .gift-lid{top:57px}.unwrap-center .gift .bow{top:-11px;left:47px}.unwrap-actions{flex-direction:column;gap:0}.unwrap-actions .text-button{min-height:36px}.unwrap-actions .primary{width:100%;max-width:none;font-size:12px}.no-peeking-note{font-size:11px}.shake-comment{font-size:10px;min-height:32px}.unwrap-center .reveal .puppet{width:105px;height:135px}.unwrap-center .reveal .handwritten{font-size:13px}.unwrap-center .reveal .primary{font-size:12px}.unwrap-center .reveal .recipient{font-size:46px}.unwrap-center .reveal .text-button{font-size:12px}}@media(prefers-reduced-motion:reduce){.christmas-world *,.unwrap-world *{animation:none!important;transition:none!important}.no-peeking-curtain{display:none}.roamer-peek-left{transform:translate(55px)}.roamer-peek-right{transform:translate(-55px)}.roamer-village-peek{transform:translateY(-80px)}.world-snow{display:none}}.unwrap-dialog{position:fixed}.intro{background:radial-gradient(ellipse at center,#f5efdf 0,#f5efdfef 45%,transparent 72%)}.cast-gathered .world-cast{visibility:hidden}.dance-lineup{position:fixed;inset:0;z-index:5;pointer-events:none;display:flex;align-items:center;justify-content:center;overflow:clip;background:none;border:0;box-shadow:none}.dance-status{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}.lineup-cast{display:grid;grid-template-columns:repeat(9,minmax(0,1fr));gap:20px 12px;width:min(920px,calc(100% - 40px));padding:15px 0;background:none}.lineup-slot{min-width:0;position:relative}.lineup-traveler{display:flex;flex-direction:column;align-items:center;position:relative;will-change:transform;pointer-events:none}.lineup-traveler .puppet{width:100%;max-width:100px;height:auto;aspect-ratio:120/155}.lineup-label{font:italic 13px Georgia;color:#4b4b34;padding-top:5px;background:none;box-shadow:none}.phase-dancing .puppet{animation:encore-hop .7s ease-in-out 6;animation-delay:0s}.phase-dancing .photo-head{animation:head-bob .7s ease-in-out 6}.phase-dancing .arm{animation:cheer-arms .7s ease-in-out 6}.phase-dancing .leg-left{animation:kick .7s ease-in-out 6}.phase-dancing .leg-right{animation:kick .7s ease-in-out 6 reverse}.phase-dancing .lineup-slot:nth-child(3n) .puppet{animation-name:happy-bounce}.phase-restoring .lineup-cast{visibility:hidden}.phase-gathering .puppet,.phase-scattering .puppet,.phase-gathering .puppet *,.phase-scattering .puppet *{animation:none!important}.village-controls{z-index:6;will-change:transform}.dance-trigger{inline-size:140px;block-size:44px}.intro,.workshop{will-change:transform,opacity}@media(max-width:700px){.lineup-cast{grid-template-columns:repeat(6,minmax(0,1fr));gap:18px 3px;width:calc(100% - 24px)}.lineup-label{font-size:11px}.lineup-traveler .puppet{max-width:70px}.dance-trigger{inline-size:90px}}@media(prefers-reduced-motion:reduce){.dance-lineup *{animation:none!important;transition:none!important}}.village-landscape{position:absolute;inset:0;overflow:hidden;pointer-events:none;z-index:-1}.village-cluster{position:absolute;width:200px;height:140px;display:flex;align-items:end;gap:10px;opacity:.65}.village-cluster .village-house{width:85px;height:86px;flex:none;margin-bottom:5px}.village-cluster .village-house i{height:16px}.village-cluster .village-house b{height:25px}.christmas-tree{position:relative;width:62px;height:115px;flex:none;filter:drop-shadow(3px 4px 0 #5b663d25);transform:rotate(var(--tree-lean,-3deg))}.christmas-tree:before{content:"";position:absolute;inset:14px 0 12px;background:repeating-linear-gradient(165deg,#507957 0 20px,#688d64 20px 25px);clip-path:polygon(50% 0,75% 28%,65% 28%,88% 58%,76% 58%,100% 100%,0 100%,24% 58%,12% 58%,35% 28%,25% 28%)}.christmas-tree:after{content:"";position:absolute;inset:19px 0 20px;background:#fff8df;clip-path:polygon(50% 0,67% 16%,48% 10%,35% 17%,50% 0,28% 43%,43% 39%,63% 47%,78% 55%,60% 52%,42% 47%,22% 52%);opacity:.9}.christmas-tree>span{position:absolute;top:0;left:23px;font-size:23px;line-height:1;color:#be8e30;z-index:1}.christmas-tree>b{position:absolute;width:10px;height:17px;bottom:0;left:26px;background:#8f6545}.christmas-tree>i{position:absolute;left:20px;top:46px;width:7px;height:7px;border-radius:50%;background:#c2513f;box-shadow:18px 23px #d6ac47,-7px 38px #c2513f,11px 45px #efe3b7;z-index:1}.tree-small{transform:scale(var(--small-tree-scale,.7)) rotate(5deg);margin-left:-16px;transform-origin:bottom}.village-controls>div{gap:0}.village-controls{justify-content:space-between}@media(max-width:700px){.village-cluster{width:150px;gap:2px}.village-cluster .village-house{width:62px;height:70px}.village-cluster .christmas-tree{width:52px}}.village-cluster .village-hut{width:98px;height:58px}.village-hut .chimney{height:18px;top:-16px}.village-cluster .village-hut b{height:19px;margin-top:4px}.village-cluster .village-hut i{margin-top:10px;height:13px}.village-controls>div{flex-wrap:wrap;justify-content:flex-end;min-width:0}.replay-welcome{inline-size:125px;min-height:44px}.village-controls .replay-welcome{padding-inline:8px}@media(max-width:700px){.replay-welcome{inline-size:110px}}#main{padding-top:38px}.welcome-active:not(.welcome-card-ready) #main,.welcome-active:not(.welcome-card-ready)>footer{opacity:0;visibility:hidden;pointer-events:none}.welcome-card-ready #main{opacity:1;visibility:visible}.welcome-scene{position:fixed;inset:0;z-index:8;display:flex;align-items:center;justify-content:center;pointer-events:none;overflow:clip}.welcome-caption{position:absolute;top:12%;left:20px;right:20px;text-align:center;color:#754335}.welcome-caption>span{font:10px/1.5 ui-monospace,monospace;letter-spacing:2px}.welcome-caption p{font:italic 25px/1.4 Georgia,serif;margin:14px auto;max-width:520px;text-wrap:balance}.welcome-cast{display:grid;grid-template-columns:repeat(9,minmax(0,1fr));gap:24px 10px;width:min(960px,calc(100% - 40px));margin-top:40px}.welcome-traveler{display:flex;justify-content:center;will-change:transform}.welcome-traveler .puppet{width:100%;max-width:105px;height:auto;aspect-ratio:120/155}.welcome-preparing .welcome-cast,.welcome-card .welcome-cast{visibility:hidden}.welcome-card .welcome-caption{opacity:0;transition:opacity .5s}.skip-welcome{position:absolute;bottom:30px;left:50%;transform:translate(-50%);pointer-events:auto;min-height:44px;padding:12px 20px;background:#fff7e7ef;border:1px dashed #8e7757;color:#70452e;font:13px ui-monospace,monospace}.welcome-card .skip-welcome{opacity:0;pointer-events:none;transition:opacity .3s}@media(max-width:700px){#main{padding-top:24px}.welcome-caption{top:10%}.welcome-caption>span{font-size:8px;letter-spacing:1px}.welcome-caption p{font-size:21px;max-width:300px}.welcome-cast{grid-template-columns:repeat(6,minmax(0,1fr));gap:22px 2px;width:calc(100% - 24px);margin-top:60px}.welcome-traveler .puppet{max-width:72px}.skip-welcome{font-size:12px;bottom:24px}}.welcome-active>.masthead{opacity:0}.welcome-cast{position:absolute;inset:0;width:100%;height:100%;display:block;margin:0;pointer-events:none}.welcome-traveler{position:absolute;display:block;transform-origin:0 0;transition:opacity 1s;will-change:transform}.welcome-traveler .routine-body,.welcome-traveler .puppet{width:100%;max-width:none}.welcome-dancing .dance-audience{opacity:.3}.welcome-dancing .featured-dancer{opacity:1;z-index:2}.welcome-dancing .puppet{animation:none}.welcome-dancing .dance-audience .puppet{animation:puppet-sway 3s ease-in-out infinite}.welcome-group-names{display:block;font:11px/1.7 ui-monospace,monospace;color:#75644d;max-width:580px;margin:auto;text-wrap:balance}.dancer-name{display:block;text-align:center;font:italic 14px Georgia,serif;color:#65452e;margin-top:8px}.featured-dancer .puppet .arm,.featured-dancer .puppet .leg,.featured-dancer .puppet .photo-head{animation-duration:1.2s;animation-timing-function:ease-in-out;animation-iteration-count:infinite;animation-delay:var(--dance-offset)}.featured-dancer[data-routine=shuffle] .puppet{animation:revue-shuffle 1s ease-in-out infinite}.featured-dancer[data-routine=shuffle] .leg-left{animation-name:revue-toe-tap}.featured-dancer[data-routine=shuffle] .leg-right{animation-name:revue-toe-tap;animation-direction:reverse}.featured-dancer[data-routine=shuffle] .arm{animation-name:revue-arm-swing}.featured-dancer[data-routine=conga] .puppet{animation:revue-conga 1.2s ease-in-out infinite}.featured-dancer[data-routine=conga] .arm{animation-name:revue-reach}.featured-dancer[data-routine=conga] .leg-left{animation-name:kick}.featured-dancer[data-routine=conga] .leg-right{animation-name:kick;animation-direction:reverse}.featured-dancer[data-routine=disco] .puppet{animation:revue-disco 1s ease-in-out infinite}.featured-dancer[data-routine=disco] .arm-left{animation-name:revue-disco-point}.featured-dancer[data-routine=disco] .arm-right{animation-name:revue-arm-swing}.featured-dancer[data-routine=disco] .leg-right{animation-name:revue-toe-tap}.featured-dancer[data-routine=waltz] .puppet{animation:revue-waltz 2s ease-in-out infinite}.featured-dancer[data-routine=waltz] .arm-left{animation-name:revue-reach}.featured-dancer[data-routine=waltz] .arm-right{animation-name:revue-reach;animation-direction:reverse}.featured-dancer[data-routine=waltz] .photo-head{animation-name:revue-head-tilt;animation-duration:2s}.featured-dancer[data-routine=kickline] .puppet{animation:revue-kick-bounce .9s ease-in-out infinite}.featured-dancer[data-routine=kickline] .leg-left{animation-name:revue-high-kick;animation-duration:.9s}.featured-dancer[data-routine=kickline] .leg-right{animation-name:revue-high-kick;animation-duration:.9s;animation-direction:reverse}.featured-dancer[data-routine=kickline] .arm{animation-name:revue-arms-up}.featured-dancer[data-routine=zoomies] .puppet{animation:revue-zoomies 1.3s ease-in-out infinite}.featured-dancer[data-routine=zoomies] .arm{animation-name:revue-paws;animation-duration:.65s}.featured-dancer[data-routine=zoomies] .leg-left{animation-name:kick;animation-duration:.65s}.featured-dancer[data-routine=zoomies] .leg-right{animation-name:kick;animation-duration:.65s;animation-direction:reverse}@keyframes revue-shuffle{0%,to{transform:translate(-10px) rotate(-5deg)}25%{transform:translate(-3px,-8px) rotate(0)}50%{transform:translate(10px) rotate(5deg)}75%{transform:translate(3px,-8px) rotate(0)}}@keyframes revue-toe-tap{0%,to{transform:rotate(-8deg)}50%{transform:rotate(30deg)}}@keyframes revue-arm-swing{0%,to{transform:rotate(-18deg)}50%{transform:rotate(22deg)}}@keyframes revue-conga{0%,to{transform:translate(-12px) rotate(-4deg)}25%{transform:translateY(-10px) rotate(4deg)}50%{transform:translate(12px) rotate(4deg)}75%{transform:translateY(4px) rotate(-4deg)}}@keyframes revue-reach{0%,to{transform:rotate(-25deg)}50%{transform:rotate(-65deg)}}@keyframes revue-disco{0%,to{transform:translateY(0) rotate(-9deg)}50%{transform:translateY(-10px) rotate(9deg)}}@keyframes revue-disco-point{0%,to{transform:rotate(-15deg)}50%{transform:rotate(110deg)}}@keyframes revue-waltz{0%,to{transform:translate(-16px) rotate(-14deg)}50%{transform:translate(16px) rotate(14deg)}}@keyframes revue-head-tilt{0%,to{transform:rotate(8deg)}50%{transform:rotate(-12deg)}}@keyframes revue-kick-bounce{0%,50%,to{transform:translateY(0)}25%,75%{transform:translateY(-8px)}}@keyframes revue-high-kick{0%,to{transform:rotate(-4deg)}50%{transform:rotate(-62deg)}}@keyframes revue-arms-up{0%,to{transform:rotate(-8deg)}50%{transform:rotate(70deg)}}@keyframes revue-zoomies{0%,to{transform:translate(-17px) rotate(-12deg)}25%{transform:translateY(-20px) rotate(4deg)}50%{transform:translate(17px) rotate(12deg)}75%{transform:translateY(-7px) rotate(-4deg)}}@keyframes revue-paws{0%,to{transform:rotate(-30deg)}50%{transform:rotate(65deg)}}@media(max-width:700px){.welcome-cast{width:100%;margin:0;gap:0}.welcome-caption p{font-size:20px;margin:10px auto}.welcome-group-names{font-size:9px;max-width:300px}.welcome-traveler .puppet{max-width:none}.dancer-name{font-size:12px;margin-top:4px}}@media(prefers-reduced-motion:reduce){.welcome-scene *{animation:none!important;transition:none!important}}.featured-dancer[data-routine=twist] .puppet{animation:revue-twist 1.1s ease-in-out infinite}.featured-dancer[data-routine=twist] .arm-left{animation-name:revue-arm-swing}.featured-dancer[data-routine=twist] .arm-right{animation-name:revue-reach}.featured-dancer[data-routine=twist] .leg-left{animation-name:revue-toe-tap}.featured-dancer[data-routine=twist] .leg-right{animation-name:revue-toe-tap;animation-direction:reverse}@keyframes revue-twist{0%,to{transform:translate(-9px) rotate(-13deg) scaleX(.9)}25%,75%{transform:translateY(-6px) rotate(0) scaleX(1)}50%{transform:translate(9px) rotate(13deg) scaleX(.9)}}
