:root{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;color:#44372c;font-synthesis:none;-webkit-tap-highlight-color:transparent;background:#efe3cc;font-family:ui-rounded,SF Pro Rounded,Nunito,system-ui,sans-serif}*{box-sizing:border-box}html{height:100%}body{overscroll-behavior:none;touch-action:manipulation;background:radial-gradient(circle at 12% 2%,#ffffffbf,#0000 25rem),repeating-linear-gradient(96deg,#0000 0 17px,#674f2e06 18px 19px),#efe3cc;flex-direction:column;height:100svh;margin:0;display:flex;overflow:hidden}button,a{font:inherit;-webkit-touch-callout:none}.topbar{width:min(100% - 1.25rem,76rem);min-height:5.4rem;padding:max(.65rem, env(safe-area-inset-top)) .2rem .55rem;flex:none;grid-template-columns:3.7rem 1fr 3.7rem;align-items:center;margin:0 auto;display:grid}.title-lockup{text-align:center;line-height:1}.title-lockup span{color:#a85d3d;letter-spacing:.13em;text-transform:uppercase;margin-bottom:.28rem;font-size:.68rem;font-weight:900;display:block}h1{letter-spacing:-.045em;margin:0;font-size:clamp(1.55rem,5vw,2.25rem)}.icon-button{color:#5f4634;cursor:pointer;background:#fff9eb;border:2px solid #5b442a1a;border-radius:50%;place-items:center;width:3.25rem;height:3.25rem;padding:0;font-size:2.4rem;font-weight:800;line-height:1;text-decoration:none;display:grid;box-shadow:0 .28rem #cfbea3}#sound-button{justify-self:end;font-size:1.35rem}.icon-button:active,.new-button:active,.piece-picker button:active{box-shadow:none;transform:translateY(.18rem)}main{overscroll-behavior:contain;width:min(100% - 1.25rem,76rem);min-height:0;padding-bottom:max(2rem, env(safe-area-inset-bottom));flex:1;margin:0 auto;overflow-y:auto}.controls{flex-wrap:wrap;justify-content:center;align-items:center;gap:1rem;margin-bottom:1rem;display:flex}.piece-picker{background:#fffaede0;border:2px solid #5b442a17;border-radius:1.25rem;align-items:center;gap:.3rem;min-height:3.5rem;padding:.38rem .45rem .38rem .9rem;display:flex;box-shadow:0 .3rem #d7c8ae}.piece-picker>span{color:#7d654f;text-transform:uppercase;letter-spacing:.08em;margin-right:.25rem;font-size:.78rem;font-weight:900}.piece-picker button{color:#705944;cursor:pointer;background:0 0;border:0;border-radius:.82rem;width:2.75rem;height:2.6rem;font-weight:950}.piece-picker button[aria-pressed=true]{color:#fff;background:#d06d49;box-shadow:0 .2rem #9b4932}.new-button{color:#fff;cursor:pointer;background:#4d9a61;border:2px solid #377b4c;border-radius:1.15rem;min-height:3.5rem;padding:.7rem 1.15rem;font-weight:950;box-shadow:0 .3rem #2e6b40}.new-button span{margin-right:.35rem;font-size:1.25em;display:inline-block}.hint-control{background:#fffaede0;border:2px solid #5b442a17;border-radius:1.25rem;align-items:center;gap:.6rem;min-height:3.5rem;padding:.38rem 1rem;display:flex;box-shadow:0 .3rem #d7c8ae}.hint-control span{color:#7d654f;text-transform:uppercase;letter-spacing:.08em;font-size:.78rem;font-weight:900}.hint-control input{accent-color:#d06d49;width:clamp(6.5rem,14vw,10rem)}.play-area{grid-template-columns:minmax(0,1.25fr) minmax(19rem,.75fr);align-items:start;gap:clamp(1rem,3vw,2rem);display:grid}.board-wrap{z-index:3;position:sticky;top:.5rem}.board-meta{justify-content:space-between;align-items:baseline;margin:0 .5rem .45rem;display:flex}.scene-name{color:#765843;font-size:.9rem;font-weight:950}.progress{color:#a08464;font-variant-numeric:tabular-nums;font-size:.8rem;font-weight:950}.board{aspect-ratio:4/3;background:#cbb99e;border:clamp(.5rem,1.5vw,.8rem) solid #fff9eb;border-radius:1.35rem;width:100%;position:relative;overflow:hidden;box-shadow:0 .65rem #bba98e,0 1.1rem 2.8rem #4e392429}.target-cell{position:absolute}.target-cell:after{content:"";background:rgb(92 70 47/var(--hint-dim,47%));transition:opacity .18s;position:absolute;inset:0}.target-cell>.scene-fragment{overflow:hidden}.target-cell.hover{outline-offset:-.35rem;z-index:5;outline:.35rem solid #ffd24e}.target-cell.filled:after{opacity:0}.board-lines{z-index:1;pointer-events:none;width:100%;height:100%;position:absolute;inset:0}.board-lines path{fill:none;stroke:#ffffffad;stroke-width:1.3px;stroke-dasharray:3.5 4.5;stroke-linecap:round}.board.solved .board-lines{display:none}.board.solved{animation:.55s board-pop}@keyframes board-pop{40%{transform:scale(1.015)}}.tray-wrap{background:#fff9ebb8;border:3px solid #6b4c2b17;border-radius:1.5rem;min-height:20rem;padding:1rem;box-shadow:0 .5rem #d6c6ab}.tray-wrap p{color:#806954;text-align:center;margin:0 0 .8rem;font-size:.9rem;font-weight:850}.tray{flex-wrap:wrap;place-content:flex-start center;gap:.1rem;min-height:14rem;display:flex}.piece{rotate:var(--tilt,0deg);filter:drop-shadow(0 .28rem #70512f4d)drop-shadow(0 .4rem .7rem #4f392229);cursor:grab;touch-action:none;-webkit-user-select:none;user-select:none;flex:none;transition:rotate .16s;position:relative}.piece:active{cursor:grabbing}.piece.dragging{z-index:100;pointer-events:none;filter:drop-shadow(0 .9rem 1.6rem #2d221752);margin:0;position:fixed;transform:scale(1.06)}.piece.rejected{animation:.4s piece-wobble}@keyframes piece-wobble{25%{translate:-.4rem;rotate:calc(var(--tilt,0deg) - 5deg)}60%{translate:.4rem;rotate:calc(var(--tilt,0deg) + 5deg)}}.piece-clip{background:#e7d7ba;position:absolute;inset:0;overflow:hidden}.target-cell>.piece{z-index:4;pointer-events:none;cursor:default;filter:none;animation:.24s piece-settle;position:absolute;top:-25%;left:-25%;rotate:0deg;width:150%!important;height:150%!important}@keyframes piece-settle{30%{transform:scale(1.05)}}.scene-fragment{pointer-events:none;position:absolute;inset:0}.scene-fragment .paper-scene{transform-origin:0 0;max-width:none;max-height:none;position:absolute}.clip-defs{width:0;height:0;position:absolute}.paper-scene{isolation:isolate;background:#fff;position:relative;overflow:hidden}.paper-scene svg{width:100%;height:100%;display:block;position:absolute;inset:0}.paper-scene:after{content:"";z-index:20;pointer-events:none;mix-blend-mode:multiply;background:repeating-linear-gradient(105deg,#0000 0 13px,#37261606 14px 15px);position:absolute;inset:0}.completion{z-index:20;color:#68411d;opacity:0;pointer-events:none;background:#ffdc68;border:.28rem solid #fff;border-radius:1.7rem;flex-direction:column;justify-content:center;align-items:center;gap:.75rem;min-width:min(88%,24rem);padding:1.15rem 1.5rem 1.35rem;font-size:clamp(1.2rem,4.5vw,1.8rem);transition:opacity .18s,transform .26s cubic-bezier(.2,1.4,.4,1);display:flex;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)scale(.75);box-shadow:0 .55rem #ca9630,0 1rem 2rem #3e291233}.completion.show{opacity:1;pointer-events:auto;transform:translate(-50%,-50%)scale(1)}.completion span{color:#fff}.completion-actions{flex-wrap:wrap;justify-content:center;gap:.6rem;display:flex}.completion-actions button{color:#68411d;cursor:pointer;background:#fff6dd;border:2px solid #68411d40;border-radius:1rem;min-height:3rem;padding:.55rem 1.05rem;font-size:.95rem;font-weight:950;box-shadow:0 .25rem #d8b054}#next-button{color:#fff;background:#4d9a61;border-color:#377b4c;box-shadow:0 .25rem #2e6b40}.completion-actions button:active{box-shadow:none;transform:translateY(.15rem)}.confetti{z-index:200;pointer-events:none;position:fixed;inset:0;overflow:hidden}.confetti i{border-radius:.2rem;width:.75rem;height:1.2rem;animation:1.8s ease-in forwards fall;position:absolute;top:-2rem}@keyframes fall{to{transform:translate(var(--drift), 110vh) rotate(var(--spin))}}@media (width<=760px){.topbar,main{width:min(100% - .8rem,42rem)}.topbar{grid-template-columns:3.35rem 1fr 3.35rem;min-height:4.8rem}.icon-button{width:3rem;height:3rem}.controls{gap:.65rem}.piece-picker{order:2;justify-content:center;width:100%;padding-left:.4rem}.new-button{order:1;width:min(100%,18rem)}.hint-control{order:3;justify-content:center;width:100%;min-height:3rem}.hint-control input{flex:1;width:auto;max-width:16rem}.play-area{display:block}.board-wrap{top:.25rem}.board{border-radius:1rem}.tray-wrap{min-height:15rem;margin-top:1.15rem;padding:.7rem}.tray{gap:0;min-height:10rem}}@media (width<=390px){.piece-picker>span{display:none}.piece-picker button{width:2.7rem}}@media (prefers-reduced-motion:reduce){*,:before,:after{animation-duration:.01ms!important;animation-iteration-count:1!important}}
