/* Soft toy tiles, with clear region contours. */
body{min-height:100vh;min-height:100svh;background:radial-gradient(ellipse at 50% 12%,#fff 0%,#fff1f5 65%,#f4ecfb 100%)}
.game-shell{width:min(100%,600px);margin:auto}
.play-area{width:min(100%,560px)}
.brand{gap:0;white-space:nowrap}.brand img{width:34px;height:34px;object-fit:contain;margin-right:5px;filter:drop-shadow(0 3px 2px #ad765530)}
.board-wrap{padding:10px;border:1px solid #fff;border-bottom:5px solid #d8c8d9;background:linear-gradient(145deg,#fff,#f2e7f1);border-radius:21px;box-shadow:0 18px 35px #59344c18,0 4px 0 #cdbdce, inset 0 1px 0 #fff}
.board{border:2px solid #655169;border-radius:12px;background:#655169}
.cell{border-right:1px solid #63506c45;border-bottom:1px solid #63506c45;background:linear-gradient(145deg,#ffffff45,transparent 55%,#67427012),var(--seg);box-shadow:inset 1px 1px 0 #ffffff9c,inset -1px -2px 0 #50395429;border-radius:5px;transition:filter .16s,box-shadow .16s,transform .16s}
.cell.edge-top{border-top:2px solid #655169}.cell.edge-bottom{border-bottom:2px solid #655169}.cell.edge-left{border-left:2px solid #655169}.cell.edge-right{border-right:2px solid #655169}
.cell:hover:not(.given){filter:brightness(1.09);transform:translateY(-2px);z-index:2;box-shadow:inset 1px 1px 0 #ffffffbd,inset -1px -3px 0 #50395430,0 3px 5px #50395440}
.cell:active:not(.given){transform:translateY(1px);box-shadow:inset 0 2px 4px #50395440}
.cell.selected{box-shadow:inset 0 0 0 2px #fff,inset 0 0 0 4px #65486d;z-index:1}
.cell:focus-visible{outline:3px solid #533960;outline-offset:-4px;z-index:3}
.cell::after{border-radius:4px}.cell.peer::after{background:#fff3}
.cell .cat{width:94%;height:94%;object-fit:contain;filter:drop-shadow(0 3px 1px #6a3d4d40);pointer-events:none}
.cell.given .cat{filter:drop-shadow(0 1px 0 #fff) drop-shadow(0 3px 2px #58334b50)}
.cell.given::before{content:'';position:absolute;bottom:3px;right:3px;width:5px;height:5px;border-radius:50%;background:#fff;box-shadow:0 1px 2px #5e3b5a66;z-index:2}
.cell .mark{color:#614b69;opacity:.65;text-shadow:0 1px 0 #ffffff80}.cell .mark.automatic{font-size:11px;opacity:.3}
.cell.auto-marked{background:linear-gradient(#fff2,#fff2),var(--seg)}
.board.fresh{animation:board-in .3s ease-out}@keyframes board-in{from{opacity:.4;transform:translateY(5px) scale(.985)}to{opacity:1;transform:none}}
.levels{gap:10px;margin-top:20px}.levels button{--accent:#469b7a;flex:1;min-width:0;padding:12px 5px 10px;border:1px solid #e4d7e3;border-bottom:4px solid #d9cad9;border-radius:15px;background:linear-gradient(#fff,#fff8fc);box-shadow:0 4px 8px #53324c0a;transition:transform .18s,background .18s,box-shadow .18s;color:#76677c}
.levels button[data-level=medium]{--accent:#a373ce}.levels button[data-level=hard]{--accent:#e27681}
.level-name{display:flex;justify-content:center;align-items:center;gap:5px;font-size:14px}.level-name i{font-style:normal;font-size:7px;letter-spacing:1px;color:var(--accent)}
.levels small{display:block;font:500 10px 'DM Sans',sans-serif;margin-top:5px;white-space:nowrap;opacity:.8}
.levels button:hover{transform:translateY(-3px);border-color:var(--accent);box-shadow:0 7px 12px #53324c16}.levels button:active{transform:translateY(2px)}
.levels button.on{background:color-mix(in srgb,var(--accent) 14%,white);color:var(--accent);border-color:var(--accent);box-shadow:0 4px 10px color-mix(in srgb,var(--accent) 18%,transparent)}
.levels button:focus-visible{outline:3px solid var(--accent);outline-offset:3px}
.status-row{gap:12px;line-height:1.45;align-items:flex-start;min-height:38px}#progress{white-space:nowrap;background:#fff9;padding:2px 8px;border-radius:9px;color:#8c688e}
.win-cat img{width:90px;height:90px;object-fit:contain}
@media(max-width:420px){.brand{font-size:19px}.brand img{width:28px;height:28px}.top-actions{gap:5px}.timer{padding:7px 8px;font-size:12px}.lives{padding:7px;font-size:12px;gap:1px}.icon-btn{width:29px;height:29px;font-size:18px}.levels{gap:7px}.levels small{font-size:9px}}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{animation:none!important;transition:none!important}}
