*{box-sizing:border-box}html,body{margin:0;background:#f7f1e8;color:#20160f;font-family:Arial,Helvetica,sans-serif}button,a{font:inherit}button{cursor:pointer}a{color:inherit}button:focus-visible,a:focus-visible,[role=button]:focus-visible{outline:3px solid #ad4a0d;outline-offset:3px}[hidden]{display:none!important}.toolbar{min-height:72px;display:flex;align-items:center;justify-content:space-between;gap:14px;padding:14px 24px;background:#fffaf4;border-bottom:1px solid #e3d6c7}.toolbar a{text-decoration:none;color:#8d4b22;font-weight:800;white-space:nowrap}.brand{font-size:12px;letter-spacing:.16em;font-weight:900}.tools{display:flex;gap:8px;align-items:center}.tools button,dialog button{border:1px solid #dfd0bd;background:#fffaf4;color:#6d3a1d;border-radius:24px;padding:10px 16px;min-height:44px}#progress{font-size:13px;white-space:nowrap;min-width:45px;text-align:center}.selection{max-width:1180px;margin:auto;padding:46px 24px 60px;text-align:center}.eyebrow{font-size:12px;font-weight:900;color:#ad4a0d;text-transform:uppercase;letter-spacing:.14em}h1{font-size:clamp(30px,5vw,52px);letter-spacing:-.025em;margin:12px 0}p{color:#756250;line-height:1.5}.worlds{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:20px;margin-top:32px}.world{padding:0;border:1px solid #e4d7c7;border-radius:22px;background:#fffaf4;overflow:hidden;box-shadow:0 9px 25px #40271410;text-align:left;color:#20160f}.world img{width:100%;height:260px;object-fit:contain;background:#eee3d3;display:block}.world span{display:block;padding:17px 20px;font-size:19px;font-weight:bold}.world:hover{border-color:#e87527}.setup{text-align:center;padding:25px 16px 40px}.setup>img{display:block;max-height:48svh;max-width:100%;width:auto;margin:18px auto;border-radius:16px;box-shadow:0 12px 30px #40271422}.levels{display:flex;gap:12px;justify-content:center;flex-wrap:wrap}.levels button{border:1px solid #dac8ae;border-radius:18px;background:#fffaf4;width:105px;min-height:80px;font-size:28px;font-weight:bold;color:#8d4b22;box-shadow:0 4px 14px #4027140a}.levels small{display:block;font-size:12px;margin-top:5px;font-weight:normal;color:#756250}.workspace{display:grid;grid-template-columns:minmax(0,1fr) minmax(240px,330px);gap:24px;max-width:1140px;margin:22px auto;padding:0 24px;align-items:start}.board-wrap{display:flex;justify-content:center;min-width:0}.board{position:relative;background:#e9dfce;max-width:100%;border-radius:5px;box-shadow:inset 0 2px 10px #4e3d2826,0 10px 26px #40271412;isolation:isolate}.board>svg{display:block;width:100%;height:100%;overflow:visible}.board .slot{fill:#c3b0970d;stroke:#ac99805c;stroke-width:.7;cursor:pointer;pointer-events:all}.board .locked{pointer-events:none}.board.finished .seam{opacity:0;transition:opacity 1.1s}.board.finished .slot{opacity:0}.board.finished .locked{filter:none}.tray-wrap{min-width:0}.tray-wrap>p{font-size:13px;margin:0 0 12px}.tray{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:6px;max-height:calc(100svh - 160px);overflow-y:auto;padding:12px 7px;background:#efe4d3;border:1px solid #e4d7c7;border-radius:20px;scrollbar-width:thin;overscroll-behavior:contain}.piece{position:relative;display:flex;align-items:center;justify-content:center;min-width:0;height:112px;border:1px solid transparent;padding:4px;background:transparent;border-radius:12px;touch-action:none}.piece svg{width:100%;height:100%;overflow:visible;filter:drop-shadow(0 3px 2px #4b39253b);pointer-events:none}.piece[aria-pressed=true]{background:#fffcf3;border-color:#d89b5b}.piece.dragging{opacity:.15}.drag-piece{position:fixed;pointer-events:none;z-index:100;filter:drop-shadow(0 9px 8px #30201444);overflow:visible;will-change:left,top}.feedback{min-height:24px;text-align:center;font-size:13px;margin:5px 12px}.completion{text-align:center;padding:15px 16px 40px}.completion h2{font-size:30px;margin:10px}.completion .actions{display:flex;justify-content:center;gap:12px;flex-wrap:wrap}.actions button,.actions a{border:0;border-radius:24px;padding:14px 22px;background:#e87527;color:white;font-weight:bold;text-decoration:none}.actions a{background:#fffaf4;color:#8d4b22;border:1px solid #dfd0bd}dialog{border:0;border-radius:22px;padding:18px;background:#fffaf4;width:min(92vw,800px);max-height:94svh;box-shadow:0 25px 90px #0004}dialog::backdrop{background:#21170ee0}dialog header{display:flex;justify-content:space-between;align-items:center;gap:12px}dialog h2{font-size:20px;margin:0}dialog img{display:block;max-width:100%;max-height:75svh;margin:14px auto 0;object-fit:contain}
@media(max-width:700px){.toolbar{padding:10px 12px;gap:8px;flex-wrap:wrap}.brand{font-size:10px}.tools{gap:5px;margin-left:auto}.tools button{padding:9px 11px;font-size:12px}.selection{padding:30px 14px}.worlds{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.world img{height:210px}.world span{font-size:16px;padding:12px}.workspace{display:flex;flex-direction:column;align-items:center;margin:14px auto 0;padding:0 14px;gap:15px}.board-wrap{width:100%}.tray-wrap{width:100%}.tray{display:flex;overflow-x:auto;overflow-y:hidden;max-height:none;padding:10px;gap:8px;scroll-snap-type:x proximity;touch-action:pan-x}.piece{flex:0 0 94px;height:112px;scroll-snap-align:start}.tray-wrap>p{font-size:12px;margin-bottom:8px}.setup h1{font-size:28px}.levels{gap:8px}.levels button{width:76px}.feedback{font-size:12px}.world img{height:190px}}
@media(max-height:520px) and (min-width:650px){.toolbar{min-height:58px;padding:7px 16px}.workspace{margin:12px auto;gap:14px}.tray{max-height:calc(100svh - 120px)}.piece{height:84px}}
@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important;transition:none!important}}

.clean-image{opacity:0;transition:opacity 1.2s;pointer-events:none}.clean-image.visible{opacity:1}.completion:focus{outline:none}.slot[aria-disabled=true]{outline:none}

/* V29: portrait artwork keeps its original proportions. */
.worlds{max-width:940px;margin:32px auto 0;align-items:start}
.world img{height:auto;aspect-ratio:auto;object-fit:contain;background:transparent}
.resume-puzzle{margin:20px auto;padding:18px;border:1px solid #dac8ae;border-radius:18px;background:#fffaf4;max-width:520px}
.resume-puzzle button{min-height:48px;padding:12px 22px;border:0;border-radius:24px;background:#ac480e;color:white;font-weight:700}
@media(max-width:700px){.world img{height:auto}.tray{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));overflow-x:hidden;overflow-y:auto;max-height:290px;touch-action:pan-y;scroll-snap-type:none}.piece{height:92px;touch-action:pan-y}.tray-wrap>p{font-size:13px}.world span{padding:12px 10px}}
