:root{font-family:ui-rounded,'Arial Rounded MT Bold','Trebuchet MS',sans-serif;color:#61466f;background:#fff8fc;font-synthesis:none;--pink:#d83b88;--plum:#61466f;--shadow:0 12px 34px #b95b9410}*{box-sizing:border-box}body{margin:0;min-height:100dvh;background:radial-gradient(ellipse at 10% 25%,#ffe4ef80,transparent 40%),radial-gradient(ellipse at 90% 35%,#e9e1ff80,transparent 40%),#fff8fc}button,a{-webkit-tap-highlight-color:transparent}button{font:inherit;cursor:pointer}button:focus-visible,a:focus-visible{outline:3px solid #8851c5;outline-offset:5px}button{touch-action:manipulation}button:disabled{cursor:default}a{color:inherit}button:hover{filter:brightness(1.025)}[hidden]{display:none!important}.ambient{position:fixed;z-index:-1;border-radius:50%;pointer-events:none}.topbar{max-width:1160px;margin:auto;display:flex;justify-content:space-between;align-items:center;padding:26px 32px}.wordmark{display:flex;gap:10px;align-items:center;text-decoration:none;font-size:16px;font-weight:bold}.brand-star{display:grid;place-items:center;background:#f8ddeb;color:#c9367c;width:34px;height:34px;border-radius:12px;font-size:26px}.sound{border:1px solid #eddced;background:#ffffffb3;border-radius:30px;padding:10px 15px;display:flex;align-items:center;gap:7px;color:#74557d;font-size:13px}.sound>span:first-child{font-size:20px}.setup{max-width:900px;text-align:center;margin:22px auto 0;padding:0 26px}.eyebrow{font-size:11px;letter-spacing:2px;text-transform:uppercase;color:#987699;font-weight:bold}.eyebrow>span{color:#d98bb3;margin:0 6px}h1{margin:13px 0 0;font-size:clamp(40px,5.7vw,65px);line-height:1.07;letter-spacing:-2px;color:#664476;font-weight:900}.setup h1{position:relative;display:inline-block}.setup h1>span:first-child{display:block;color:#d43a86;font-size:.63em;letter-spacing:-1px;line-height:1.25}.title-star{font-size:35px;color:#e5b554;position:absolute;right:-43px;top:43px;transform:rotate(10deg)}.intro{color:#957a9b;font-size:16px;letter-spacing:.15px;margin:16px 0 0}.friends{display:flex;justify-content:center;align-items:center;gap:15px;position:relative;max-width:600px;margin:27px auto 26px;padding:0 15px}.friend{background:var(--c);width:130px;padding:6px 6px 9px;border:4px solid white;border-radius:25px;box-shadow:0 7px 0 #e7cde14d,0 10px 20px #9d568219;transform:rotate(-6deg)}.friend:nth-child(3){transform:rotate(7deg)}.friend.side{width:102px;transform:rotate(-13deg);margin-right:6px}.friend.side.right{transform:rotate(13deg);margin:0 0 0 6px}.portrait{width:100%;aspect-ratio:1;background-image:var(--portrait-image,url('assets/characters.webp'));background-size:var(--portrait-size,400% 300%);background-position:var(--tile-x) var(--tile-y);border-radius:17px}.friend>span{display:block;font-size:13px;font-weight:bold;padding-top:6px}.float-heart{position:absolute;right:11%;top:-21px;font-size:34px;color:#e799ba;transform:rotate(13deg)}.float-star{position:absolute;left:7%;bottom:4px;font-size:23px;color:#c6addf}.selection{background:#ffffffbe;border:1px solid white;box-shadow:var(--shadow);border-radius:28px;padding:23px 28px 15px;max-width:740px;margin:auto}h2{font-size:17px;margin:0 0 19px;font-weight:bold}.size-options{display:grid;grid-template-columns:repeat(3,1fr);gap:14px}.size-choice{position:relative;border:1.5px solid #efdaea;border-radius:19px;background:#fff7fb;text-align:left;padding:15px 17px 13px;color:var(--plum);transition:transform .18s,box-shadow .18s,border-color .18s}.size-choice:nth-child(2){background:#f5f0ff;border-color:#e3d5f7}.size-choice:nth-child(3){background:#fff8ef;border-color:#f2e0c6}.size-choice:hover{transform:translateY(-5px);box-shadow:0 10px 18px #ad75951c;border-color:#dc8bb8}.choice-symbol{display:block;font-size:25px;margin-bottom:6px}.size-choice strong{display:block;font-size:36px;line-height:1.1;letter-spacing:-1px;color:#b83378}.size-choice:nth-child(2) strong{color:#8862b3}.size-choice:nth-child(3) strong{color:#b57830}.size-choice small{font-size:17px;font-weight:normal;letter-spacing:0}.size-choice>span:not(.choice-symbol):not(.play-arrow){display:block;font-size:11px;color:#92768e;margin-top:8px}.play-arrow{position:absolute;right:14px;top:16px;font-size:23px;color:#c0a0b5}.always{font-size:12px;color:#9b7b94;margin:15px 0 0}.always span{color:#d34389;font-size:18px;vertical-align:-1px}.worlds{display:flex;gap:9px;justify-content:center;flex-wrap:wrap;margin-top:24px}.worlds span{font-size:10px;letter-spacing:.2px;padding:7px 11px;background:#ffffff80;border:1px solid #efdfec;border-radius:30px;color:#8d728f}footer{text-align:center;font-size:11px;color:#a188a0;padding:26px 16px}footer span{color:#cf74a0;margin-left:3px}.play{max-width:900px;margin:12px auto 0;padding:0 28px}.game-heading{display:flex;align-items:center;justify-content:space-between;gap:14px}.game-heading h1{font-size:29px;letter-spacing:-1px;margin:7px 0 0}.game-heading .eyebrow{font-size:9px;letter-spacing:1.4px}.text-button{color:#896292;border:1px solid #ebd8e8;border-radius:22px;background:#ffffffa8;padding:11px 17px;font-size:13px}.game-info{display:flex;align-items:center;justify-content:space-between;margin:25px 0 10px;font-size:12px;color:#987e9b}.found-progress{display:flex;align-items:center;gap:7px}.found-progress>span{font-size:24px;color:var(--pink)}.found-progress strong{color:#b73f86;font-size:16px}.progress-track{height:7px;background:#f0dfed;border-radius:20px;overflow:hidden}.progress-track>div{height:100%;width:0;background:linear-gradient(90deg,#e78bbb,#b6a0ed);border-radius:20px;transition:width .4s}.hint{text-align:center;min-height:20px;color:#94759c;font-size:14px;margin:15px 0}.board{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px;max-width:690px;margin:auto}.board[data-size="10"]{grid-template-columns:repeat(5,minmax(0,1fr));max-width:790px}.board[data-size="8"]{max-width:635px}.card{position:relative;aspect-ratio:1.02;perspective:900px;border:0;padding:0;background:transparent;border-radius:20px;transition:opacity .4s,transform .4s}.card-inner{display:block;width:100%;height:100%;position:absolute;inset:0;-webkit-transform-style:preserve-3d;transform-style:preserve-3d;transition:transform .48s cubic-bezier(.2,.7,.3,1)}.card.revealed .card-inner{transform:rotateY(180deg)}.card-face{position:absolute;inset:0;border-radius:18px;backface-visibility:hidden;-webkit-backface-visibility:hidden;overflow:hidden;border:4px solid white;box-shadow:0 5px 0 #dbbbd14d,0 6px 13px #9c648c15}.card-back{display:grid;place-items:center;background:radial-gradient(circle at 20% 25%,#ffffff80 2px,transparent 3px),radial-gradient(circle at 80% 75%,#ffffff80 2px,transparent 3px),linear-gradient(145deg,#f6b4d4,#e899c5);background-size:24px 24px,24px 24px,auto;color:#fff}.card:nth-child(3n) .card-back{background-color:#bda5e5;background-image:radial-gradient(circle at 20% 25%,#ffffff80 2px,transparent 3px),radial-gradient(circle at 80% 75%,#ffffff80 2px,transparent 3px),linear-gradient(145deg,#cbb6ee,#b79bdd)}.card:nth-child(3n + 2) .card-back{background-image:radial-gradient(circle at 20% 25%,#ffffff80 2px,transparent 3px),radial-gradient(circle at 80% 75%,#ffffff80 2px,transparent 3px),linear-gradient(145deg,#ffceb0,#f4b0bc)}.card-back::before{content:'';position:absolute;inset:7px;border:1px solid #ffffff8c;border-radius:11px}.card-back svg{width:55%;height:58%;filter:drop-shadow(0 2px 0 #ae60883b)}.card-front{transform:rotateY(180deg);background:var(--c)}.card-image{width:100%;height:100%;background-image:var(--portrait-image,url('assets/characters.webp'));background-size:var(--portrait-size,400% 300%);background-position:var(--tile-x) var(--tile-y)}.card-name{position:absolute;bottom:0;left:0;right:0;background:linear-gradient(transparent,#fffdf9ed 45%);padding:17px 4px 6px;font-size:13px;color:#65476c;font-weight:bold;text-align:center}.card:hover:not(.revealed):not(.matched){transform:translateY(-3px)}.card.matched{opacity:0;transform:scale(.7);pointer-events:none}.collection-area{text-align:center;border-top:1px solid #edddec;margin:28px auto 0;padding-top:21px;max-width:790px}.collection-area h2{font-size:14px;margin-bottom:12px;color:#88648e}.collection-area h2 span{color:#d6a64b}.collection-area>p{font-size:12px;color:#ad92aa;margin:12px 0 24px}.collection{display:flex;justify-content:center;gap:12px;flex-wrap:wrap}.collected{width:65px;animation:pop .45s ease-out}.collected .portrait{border-radius:17px;border:3px solid white;box-shadow:0 4px 10px #ac789d16}.collected span{display:block;font-size:10px;color:#90718b;padding-top:5px}.win{text-align:center;max-width:740px;margin:45px auto;padding:15px 28px}.victory-icon{font-size:76px;margin-bottom:16px;animation:pop .7s}.win h1{font-size:clamp(32px,7vw,53px);color:#c73f88;letter-spacing:-1px}.win>p{color:#937496;font-size:18px}.win-stats{display:inline-flex;gap:20px;margin:7px auto 25px;background:#fff;border:1px solid #ecd7e9;border-radius:40px;padding:13px 23px;color:#86618d;font-size:14px}.victory-collection{max-width:500px;margin:5px auto 30px}.win-actions{display:flex;flex-direction:column;align-items:center;gap:13px}.primary-button{background:#d64891;border:0;border-radius:25px;color:white;padding:15px 28px;font-weight:bold;font-size:16px;box-shadow:0 5px 0 #b33277}.primary-button>span{margin-left:10px}.win-actions>.text-button{border:0;background:transparent;font-size:12px}.confetti{position:fixed;inset:0;pointer-events:none;overflow:hidden;z-index:10}.confetti i{position:absolute;top:-30px;left:var(--left);width:var(--size);height:var(--size);background:var(--color);border-radius:3px;animation:fall var(--duration) var(--delay) linear forwards}.confetti i:nth-child(3n){border-radius:50%}@keyframes fall{to{transform:translate3d(var(--drift),110vh,0) rotate(640deg);opacity:.2}}@keyframes pop{from{transform:scale(.65);opacity:0}to{transform:scale(1);opacity:1}}@media(min-width:1200px) and (min-height:900px){.setup{margin-top:45px}.friends{margin-top:35px;margin-bottom:35px}.selection{padding-top:28px;padding-bottom:22px}.size-choice{padding-top:20px;padding-bottom:18px}}@media(max-width:600px){.topbar{padding:18px 18px}.wordmark{font-size:13px;gap:7px}.brand-star{height:30px;width:30px;font-size:23px}.sound{padding:7px 11px;font-size:11px}.setup{margin-top:20px;padding:0 15px}h1{font-size:44px}.eyebrow{font-size:9px;letter-spacing:1.3px}.title-star{font-size:23px;right:-23px;top:31px}.intro{font-size:13px;margin-top:12px}.friends{gap:8px;padding:0;margin:25px 0}.friend{width:95px;border-radius:19px;padding:4px 4px 7px;border-width:3px}.friend.side{width:72px;margin-right:0}.friend.side.right{margin:0}.friend .portrait{border-radius:12px}.friend>span{font-size:11px}.float-heart{right:3%;font-size:26px;top:-20px}.float-star{left:0;font-size:17px}.selection{padding:21px 12px 16px;border-radius:23px}h2{font-size:14px;margin-bottom:15px}.size-options{gap:8px}.size-choice{border-radius:15px;padding:12px 9px 13px}.choice-symbol{font-size:23px;margin-bottom:10px}.size-choice strong{font-size:30px}.size-choice small{font-size:13px}.size-choice>span:not(.choice-symbol):not(.play-arrow){font-size:9px;line-height:1.5;white-space:nowrap;letter-spacing:-.2px}.play-arrow{font-size:18px;right:8px;top:12px}.always{font-size:11px;margin-top:12px}.worlds{gap:6px;margin:20px auto 0;max-width:320px}.worlds span{font-size:9px;padding:6px 9px}footer{font-size:10px;padding:24px 10px}.play{padding:0 14px;margin-top:16px}.game-heading{align-items:center;gap:5px}.game-heading h1{font-size:21px;letter-spacing:-.7px;max-width:230px;line-height:1.15}.game-heading .eyebrow{font-size:8px;letter-spacing:.5px}.text-button{font-size:11px;padding:9px 11px;white-space:nowrap}.game-info{margin-top:22px;font-size:11px}.board,.board[data-size="10"]{gap:8px;grid-template-columns:repeat(4,minmax(0,1fr))}.card{border-radius:13px}.card-face{border-radius:12px;border-width:3px}.card-back::before{inset:4px;border-radius:8px}.card-name{font-size:10px;padding-bottom:4px}.hint{font-size:12px;margin:14px 0}.collection-area{margin-top:23px;padding-top:18px}.collection{gap:10px}.collected{width:55px}.win{margin-top:35px}.win-stats{font-size:12px;gap:12px;padding:13px 18px}.victory-collection .collected{width:65px}}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{animation-duration:.01ms!important;transition-duration:.01ms!important}.confetti{display:none}}

.credits{display:inline-block;font-size:9px;color:#a990a7;margin-top:9px}.credits a{color:inherit;text-underline-offset:2px}
