body.game-shell{--panel-width: clamp(340px, 24vw, 410px);background:#f4f4ee}body.game-shell .play-stage{min-height:680px;background:radial-gradient(circle at 64% 42%,#fff 0 30%,#f8faf6 62%,#e7f1ef)}body.game-shell #scene{width:calc(100% - var(--panel-width));height:100%;display:grid;place-items:center;position:absolute;inset:0 0 0 auto;padding:clamp(12px,2vw,28px);overflow:auto;outline:none;-webkit-user-select:none;user-select:none}.board-wrap{--board-size: min(52vw, 64svh, 560px);width:min(100%,640px);display:grid;justify-items:center;gap:12px;position:relative;z-index:1}.puzzle-card{width:calc(var(--board-size) + 18px);max-width:100%;padding:12px;border:2px solid #b9edf1;border-radius:24px;background:#fff;box-shadow:0 18px 40px #4a665e1f}.puzzle-stage{position:relative;width:100%;aspect-ratio:1;overflow:hidden;border-radius:0;background:#f4f8fb}.board-art{display:block;width:100%;height:100%;pointer-events:none}.board-art svg{display:block;width:100%;height:100%}.hole-layer{position:absolute;inset:0;touch-action:none}.hole-slot,.hole-slot:hover,.hole-slot:active,.hole-slot:disabled{position:absolute;width:12.5%;height:12.5%;min-width:0;min-height:0;margin:0;padding:0;border:2px dashed transparent;border-radius:22%;background:transparent;box-shadow:none;cursor:pointer;z-index:1;transform:none;filter:none;font-size:0;color:transparent}.hole-slot.filled{pointer-events:none;cursor:default}.hole-slot.hot{background:#ffec9661;border-color:#f0c02e;box-shadow:inset 0 0 0 2px #f0c02e8c}.hole-slot.reject{animation:hole-reject .42s ease}@keyframes hole-reject{0%,to{transform:translate(0)}25%{transform:translate(-4px)}75%{transform:translate(4px)}}.locked-piece{pointer-events:none;animation:snap-in .22s ease-out}@keyframes snap-in{0%{opacity:.55}to{opacity:1}}.drag-ghost{position:fixed;width:min(118px,22vw);height:min(118px,22vw);transform:translate(-50%,-50%) scale(1.08);pointer-events:none;z-index:40;filter:drop-shadow(0 10px 16px rgba(30,40,50,.28))}.drag-ghost.snapped{transform:none}.drag-ghost.fits{filter:drop-shadow(0 0 10px rgba(46,170,90,.55))}.drag-ghost.misfits{opacity:.7;filter:drop-shadow(0 0 10px rgba(210,50,40,.5))}.drag-ghost svg{display:block;width:100%;height:100%}.piece-rack{width:min(100%,calc(var(--board-size) + 18px));display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:15px 8px}.piece-btn{display:grid;grid-template-rows:auto auto;justify-items:center;gap:3px;margin:0;padding:0 2px 2px;border:0;border-radius:10px;background:transparent;box-shadow:none;cursor:grab;color:#6e5c43;font:900 .78rem/1 Nunito,sans-serif;text-transform:none;touch-action:none;-webkit-user-select:none;user-select:none;-webkit-user-drag:none}.piece-btn svg{grid-row:2;width:100%;height:auto;pointer-events:none}.piece-btn span{grid-row:1;min-height:.85em}.piece-btn.selected{background:#ffeba36b;box-shadow:inset 0 0 0 2px #e0962f8c}.piece-btn.solved{background:#daefa47a;box-shadow:inset 0 0 0 2px #6f9d3573}.piece-btn.placed{opacity:.28;filter:grayscale(.35);cursor:default}.piece-btn.dragging{opacity:.18;cursor:grabbing}.piece-btn:disabled{cursor:default}.piece-btn:hover:not(:disabled){transform:none;filter:brightness(1.03)}.piece-btn:active:not(:disabled){transform:none;box-shadow:none}#celebration{position:absolute;inset:0;z-index:7;pointer-events:none;overflow:hidden}#celebration.active:before{content:"✦  •  ✦  •  ✦";position:absolute;left:50%;color:#ee9d1d;font-size:clamp(1.4rem,4vw,3rem);letter-spacing:.28em;opacity:0;animation:celebrate 1.1s ease-out both}@keyframes celebrate{0%{top:58%;opacity:0;transform:translate(-50%,20px) scale(.7)}24%{opacity:1}to{top:12%;opacity:0;transform:translate(-50%,-40px) scale(1.2)}}body.game-shell #hud{padding:18px 0 max(18px,env(safe-area-inset-bottom)) clamp(16px,2vw,28px)}body.game-shell #hud .hud-left{width:calc(var(--panel-width) - clamp(32px,4vw,54px));max-width:390px;align-self:flex-start;gap:9px}body.game-shell #hud .hud-left .topbar,body.game-shell #hud .hud-left .clue-card{width:100%;border-color:#305b5d38;color:#234d59;background:#fdfffaf0;box-shadow:0 17px 42px #2f544924,inset 0 1px #fff}body.game-shell #hud .hud-left .topbar{min-height:62px;padding:9px 11px 9px 14px;border-radius:19px}body.game-shell #hud .hud-left .eyebrow,body.game-shell #hud .hud-left .clue-label{color:#ce7515}body.game-shell #hud .hud-left .stats span{color:#234d59;background:linear-gradient(180deg,#ffe676,#f4c43d)}body.game-shell #hud .hud-left .clue-card{padding:12px 14px 14px;border-radius:19px;pointer-events:auto}body.game-shell #hud .hud-left #clue{color:#315865;font-size:clamp(.78rem,1.08vw,.92rem);line-height:1.38}.live-sum{display:flex;justify-content:space-between;margin-top:8px;padding:7px 9px;border-radius:11px;background:#f4faf4;color:#38635b;font-size:.72rem;font-weight:800}body.game-shell #hud .hud-left .hint{margin-top:8px;color:#70837f;font-size:.62rem;line-height:1.3}body.game-shell .dock.dock-right{right:max(18px,env(safe-area-inset-right))}body.game-shell .dock button,body.game-shell .overlay .panel button{border-color:#694a10;color:#244b55;background:linear-gradient(180deg,#ffdf61,#efb929);box-shadow:0 5px #a86d0c,0 13px 25px #3f574329}body.game-shell .dock .ghost{border-color:#224b5480;color:#315a61;background:#fcfff9f5;box-shadow:0 5px #a8c9c0}body.game-shell .dock button[disabled]{opacity:.42;filter:saturate(.45);cursor:not-allowed}body.game-shell .overlay.end-overlay{place-items:center start;padding-left:clamp(18px,3vw,42px);pointer-events:none}body.game-shell .overlay.end-overlay .panel{width:min(380px,36vw);pointer-events:auto}body.game-shell.preview-mode #scene{width:100%;inset:0}body.game-shell.preview-mode .board-wrap{--board-size: min(52vw, 62svh, 560px)}body.game-shell.preview-mode .piece-rack,body.game-shell.preview-mode .hole-layer{display:none}@media(max-width:1040px){body.game-shell{--panel-width: min(360px, 36vw)}.board-wrap{--board-size: min(52vw, 58svh, 500px)}body.game-shell .dock.dock-right{top:auto;bottom:max(18px,env(safe-area-inset-bottom));flex-direction:row;transform:none}}@media(max-width:760px){body.game-shell .play-stage{height:1100px;min-height:1100px}body.game-shell #scene{width:100%;height:720px;top:300px;bottom:auto;padding:8px 10px 72px}.board-wrap{--board-size: min(82vw, 360px);gap:8px}body.game-shell #hud{padding:8px 9px}body.game-shell #hud .hud-left{width:min(100%,370px);max-width:calc(100% - 18px)}body.game-shell #hud .hud-left .hint{display:none}body.game-shell .overlay.end-overlay{place-items:center;padding:16px}body.game-shell .overlay.end-overlay .panel{width:min(430px,100%)}}
