@import url('https://fonts.googleapis.com/css2?family=DM+Sans:wght@400;500;600;700&family=Space+Grotesk:wght@500;600;700&display=swap');
:root{font-family:'DM Sans',sans-serif;font-size:16px;color:#39324e;background:#faf7ff;--ink:#39324e;--muted:#6c647d;--purple:#7560aa;--line:#e4dced}*{box-sizing:border-box}body{margin:0}button,input{font:inherit}button{cursor:pointer;color:inherit}button:disabled{cursor:default}a{color:inherit}[hidden]{display:none!important}button:focus-visible,a:focus-visible,input:focus-visible{outline:3px solid #7150a8;outline-offset:4px}h1:focus,h2:focus{outline:none}h1,h2,strong{overflow-wrap:break-word}h1,h2,.brand,.game-choice strong{font-family:'Space Grotesk',sans-serif}.site-header{position:sticky;top:0;z-index:10;background:#fffdfefa;border-bottom:1px solid var(--line);box-shadow:0 3px 20px #57427005}.header-inner{max-width:1200px;margin:auto;padding:22px 36px 16px;display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:20px}.brand{display:flex;align-items:center;gap:13px;text-decoration:none;font-size:23px;font-weight:700;letter-spacing:-.6px}.logo{width:45px;height:45px;flex-shrink:0;display:grid;place-items:center;color:#fff;background:#8570b8;border-radius:15px;transform:rotate(-6deg);box-shadow:3px 3px 0 #ebdff8}.header-note{font-size:14px;color:var(--muted)}.main-menu{display:flex;gap:9px;width:100%;flex-wrap:wrap}.main-menu button{border:1px solid transparent;padding:11px 21px;min-height:44px;border-radius:13px;font-weight:600;background:#f4eff9;font-size:15px;transition:background .15s,box-shadow .15s}.main-menu button:hover{background:#eae0f6}.main-menu button[aria-pressed=true]{background:#7761a8;color:white;box-shadow:0 3px 0 #e5daf2}.main-menu button[data-category=sounds]:not([aria-pressed=true]){background:#fbe5ed}.main-menu button[data-category=memory]:not([aria-pressed=true]){background:#eee6fa}.main-menu button[data-category=math]:not([aria-pressed=true]){background:#e6f3e8}.main-menu button[data-category=words]:not([aria-pressed=true]){background:#fff0dd}main{max-width:1200px;margin:auto;padding:32px 36px 24px}.intro{display:flex;align-items:center;justify-content:space-between;gap:24px;padding:25px 30px;margin-bottom:32px;border:1px solid #eee4ef;border-radius:24px;background:linear-gradient(110deg,#fae7ee 0%,#fff2d8 38%,#e9f5ed 69%,#e8edfc 100%)}.eyebrow{font-size:12px;letter-spacing:1.8px;font-weight:700;color:#71558b;margin:0 0 10px}h1{font-size:36px;line-height:1.17;letter-spacing:-1.4px;margin:0 0 10px}.intro p:last-child{font-size:16px;color:#655b74;margin:0;line-height:1.6}.free-label{flex-shrink:0;background:#ffffffab;border:1px solid #ffffffcc;padding:10px 14px;border-radius:30px;font-size:13px;color:#655b74}.catalog{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:30px 22px}.game-category{min-width:0}.game-category[data-group=sounds]{grid-column:1/-1}.category-heading{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:14px}.category-heading h2{font-size:21px;letter-spacing:-.6px;line-height:1.3;margin:0}.category-heading>span{font-size:12px;white-space:nowrap;color:var(--muted)}.category-cards{display:grid;grid-template-columns:1fr;gap:22px}.game-category[data-group=sounds] .category-cards{grid-template-columns:repeat(3,minmax(0,1fr))}.game-choice{width:100%;min-height:250px;border:1px solid var(--card-border,#dfd0eb);border-radius:23px;padding:24px;text-align:left;display:flex;align-items:flex-start;flex-direction:column;gap:19px;background:var(--card-bg,#eee5fb);box-shadow:0 5px 0 var(--card-shadow,#ede6f5);transition:transform .18s,box-shadow .18s}.game-choice:hover{transform:translateY(-4px);box-shadow:0 9px 0 var(--card-shadow,#ede6f5)}.game-choice:active{transform:translateY(1px)}.game-choice[data-game=bubbles]{--card-bg:#e1f1fb;--card-border:#cbdcf4;--card-shadow:#dbe5f5}.game-choice[data-game=chimes]{--card-bg:#fbe4ef;--card-border:#eccedd;--card-shadow:#f1dce6}.game-choice[data-game=memory]{--card-bg:#eee5fb;--card-border:#ddcfee;--card-shadow:#e8def2}.game-choice[data-game=numbers]{--card-bg:#e5f4ed;--card-border:#cce4d3;--card-shadow:#dcebe0}.game-choice[data-game=words]{--card-bg:#ffebd9;--card-border:#eedac0;--card-shadow:#f2e5d3}.symbol{font-size:35px;line-height:1;min-width:56px;height:56px;display:grid;place-items:center;background:#ffffff96;border:1px solid #ffffffc9;border-radius:16px;font-weight:600;color:#635175}.game-choice strong{display:block;font-size:23px;letter-spacing:-.5px}.game-choice small{display:block;font-size:15px;line-height:1.55;color:#655b72;margin-top:7px}.card-play{display:flex;align-items:center;justify-content:space-between;border-top:1px solid #6752761c;padding-top:15px;width:100%;margin-top:auto;font-size:14px;font-weight:700;color:#59456f}.catalog[data-filter]:not([data-filter=all]){grid-template-columns:1fr}.catalog[data-filter]:not([data-filter=all]) .category-cards{grid-template-columns:repeat(3,minmax(0,1fr))}.play{max-width:790px;margin:0 auto;background:#fff;border:1px solid var(--line);border-radius:26px;padding:28px 34px;box-shadow:0 7px 0 #efe8f5}.back{padding:10px 16px;min-height:44px;border:1px solid #ddd0ea;border-radius:12px;background:#f6f0fc;color:#5e477f;font-weight:600;margin-bottom:24px;font-size:14px}.back:hover{background:#eae0f5}.play-top{display:flex;align-items:center;justify-content:space-between;gap:12px;color:#78668d;font-size:12px;font-weight:700;letter-spacing:1px}#counter{font-size:14px;letter-spacing:0;color:#70538c}#game-title{font-size:32px;letter-spacing:-1px;margin:18px 0 10px}#instructions{color:var(--muted);line-height:1.6;margin:0 0 23px}.tiles{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px}.tile{min-height:82px;border:2px solid #e5d9f1;background:#eee5fb;border-radius:15px;color:#706082;font-size:29px;font-family:'Space Grotesk',sans-serif}.tile:nth-child(6n+1){background:#f8e2ec;border-color:#f1cfdf}.tile:nth-child(6n+2){background:#fff1cb;border-color:#f0dfb0}.tile:nth-child(6n+3){background:#e4f2de;border-color:#d0e5c7}.tile:nth-child(6n+4){background:#def0f6;border-color:#c7e1eb}.tile:nth-child(6n+5){background:#e8e4fa;border-color:#d8d0ee}.tile:nth-child(6n){background:#f9e5d7;border-color:#ecd2c0}.tile:hover{border-color:#a18abb}.tile.open{background:#fff9e8;border-color:#a08cbd;color:#333}.tile.matched{background:#dcf3e6;border-color:#79b798;color:#215d44}.tile:disabled{opacity:1}#feedback{min-height:24px;font-size:15px;line-height:1.55;color:#40664e;margin:20px 0}.actions{display:flex;align-items:center;gap:18px;flex-wrap:wrap;border-top:1px solid #eee7f4;padding-top:20px}.primary{background:#7560aa;color:white;border:0;min-height:46px;border-radius:12px;padding:12px 21px;font-weight:600}.primary:hover{background:#604a92}#detail{color:var(--muted);font-size:14px}.puzzle{min-height:235px;padding:16px 0}.sequence{display:flex;flex-wrap:wrap;gap:10px;margin:5px 0 26px}.sequence span{font-size:28px;padding:18px;background:#f0eafb;border-radius:13px}.answer-row{display:flex;align-items:center;flex-wrap:wrap;gap:12px}.answer-row input{width:175px;border:2px solid #d6c8e6;border-radius:12px;padding:12px}.hint{font-size:15px;line-height:1.6;color:var(--muted)}.scramble{font-family:'Space Grotesk',sans-serif;font-size:38px;letter-spacing:8px;color:#7560aa;margin:10px 0 20px;overflow-wrap:anywhere}.sound-controls{display:flex;align-items:center;gap:14px;flex-wrap:wrap;margin:18px 0 25px}.sound-controls .back{margin:0}.sound-controls input{accent-color:#7562b8;width:140px;min-height:32px}.bubble-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:18px;padding:10px 0}.bubble{aspect-ratio:1;max-height:105px;border-radius:50%;background:radial-gradient(circle at 35% 30%,#fff,var(--key-color) 75%);border:2px solid #00000012;box-shadow:0 5px 0 #0000000d;font-size:40px;color:#695c80}.bubble.popped{box-shadow:inset 0 2px 7px #00000012;background:#f1edf5;color:#91869c}.chime-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px}.chime{background:var(--key-color);border:1px solid #00000012;border-radius:16px;min-height:115px;font-size:22px;color:#443759;box-shadow:0 5px 0 #00000012}.chime:active,.chime.ringing{animation:ring .35s ease-out}.texture-choices{border:0;padding:0;margin:0 0 22px;display:flex;flex-wrap:wrap;gap:10px}.texture-choices legend{font-weight:600;margin-bottom:12px}.texture-choices label{display:flex;align-items:center;gap:8px;padding:12px 14px;border:1px solid #d8c7ed;border-radius:12px;background:#faf5ff;cursor:pointer;font-size:14px;min-height:46px}.texture-choices label:has(input:checked){background:#e9dcf9;border-color:#8c6db3}.texture-choices input{accent-color:#7562b8}.texture-slime .bubble{border-radius:32% 45% 36% 42%;background:radial-gradient(circle at 35% 25%,#ffffffc9,var(--key-color) 70%)}.texture-cracks .bubble{border-radius:22px;border:3px double #b9a8cb}.squishing{animation:squish .45s ease-out}footer{display:flex;justify-content:space-between;gap:20px;font-size:12px;color:#776b85;margin-top:35px;line-height:1.6;border-top:1px solid var(--line);padding-top:20px}@keyframes squish{35%{transform:scale(1.08,.82)}70%{transform:scale(.96,1.04)}}@keyframes ring{0%{transform:translateY(4px);box-shadow:none}100%{transform:translateY(0)}}@media(max-width:950px){.game-category[data-group=sounds] .category-cards,.catalog[data-filter]:not([data-filter=all]) .category-cards{grid-template-columns:repeat(2,minmax(0,1fr))}.header-note{display:none}.catalog{grid-template-columns:repeat(2,minmax(0,1fr))}.free-label{display:none}.game-choice{padding:22px}.brand{font-size:22px}}@media(max-width:620px){.header-inner{padding:16px 18px 13px;gap:15px}.brand{font-size:19px;letter-spacing:-.3px}.logo{width:38px;height:38px;border-radius:12px}.main-menu{gap:7px}.main-menu button{padding:9px 12px;font-size:14px;min-height:43px}.site-header{position:relative}main{padding:24px 18px}.intro{padding:22px;margin-bottom:26px}h1{font-size:29px}.eyebrow{font-size:11px;letter-spacing:1.4px}.intro p:last-child{font-size:15px}.catalog{grid-template-columns:1fr;gap:28px}.game-category[data-group=sounds] .category-cards,.catalog[data-filter]:not([data-filter=all]) .category-cards{grid-template-columns:1fr}.game-choice{min-height:220px;padding:24px;gap:15px}.category-heading h2{font-size:22px}.play{padding:23px 18px;border-radius:22px}.play-top{flex-wrap:wrap}#game-title{font-size:28px}.tiles{gap:8px}.tile{min-height:66px}.bubble-grid{gap:12px}.chime{font-size:18px;min-height:90px}.sequence span{padding:12px;font-size:24px}.scramble{font-size:32px;letter-spacing:6px}footer{flex-direction:column;gap:7px}}@media(prefers-reduced-motion:reduce){*{transition:none!important;animation:none!important}}

/* Material pads: artwork deforms while the player presses or stretches it. */
.material-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px}.material-pad{display:flex;flex-direction:column;align-items:stretch;min-width:0;padding:10px 10px 18px;border:1px solid #dfd1ea;border-radius:20px;background:#fcf9ff;text-align:left;touch-action:none;user-select:none;-webkit-user-select:none;-webkit-tap-highlight-color:transparent}.material-pad:hover{border-color:#ad95c4;box-shadow:0 5px 15px #71538c0b}.material-stage{display:block;position:relative;aspect-ratio:1.3;overflow:hidden;border-radius:14px;background:#faf7ff;margin-bottom:12px}.material-shape{display:block;position:absolute;inset:0;transform-origin:50% 70%;transition:transform .28s cubic-bezier(.2,.7,.2,1);filter:hue-rotate(var(--tint));pointer-events:none}.material-shape img{width:100%;height:100%;object-fit:contain;position:absolute;inset:0;pointer-events:none}.material-pad strong{font-size:17px;padding:0 8px}.material-description{font-size:14px;line-height:1.5;color:#756480;padding:5px 8px 0}.material-pad.pressed .material-shape{transform:translateY(8px) scale(1.12,.76);transition:transform .09s ease-out}.material-pad.cracks.pressed .material-shape{transform:translateY(8px) scale(1.1,.82)}.cracked-picture{opacity:0;transition:opacity .12s}.pressed .cracked-picture,.settling .cracked-picture{opacity:1}.material-pad.pressed{border-color:#a587bf;background:#f4ebfd}.material-pad.settling .material-shape{transition:transform .4s cubic-bezier(.2,1.5,.4,1)}@media(max-width:500px){.material-grid{gap:12px}.material-pad{padding:7px 7px 12px;border-radius:16px}.material-stage{aspect-ratio:1}.material-pad strong{font-size:15px;padding:0 4px}.material-description{font-size:13px;padding:5px 4px 0}}@media(prefers-reduced-motion:reduce){.material-shape,.cracked-picture{transition:none!important}}

/* Shared playrooms */
.multiplayer-category{grid-column:1/-1}.multiplayer-category .category-cards{grid-template-columns:repeat(3,minmax(0,1fr))}.main-menu button[data-category=together]:not([aria-pressed=true]){background:#e4effc}.game-choice[data-game^=mp-]{--card-bg:#e7edfc;--card-border:#cdd8f0;--card-shadow:#dfe5f3}.game-choice[data-game=mp-gems]{--card-bg:#fbe5f0}.game-choice[data-game=mp-paint]{--card-bg:#e4f3e7}.game-choice[data-game=mp-survive]{--card-bg:#fff0d7}.room-forms{display:grid;grid-template-columns:1fr 1fr;gap:22px}.room-forms form{padding:22px;border:1px solid var(--line);border-radius:18px;background:#faf7fe;display:flex;flex-direction:column;align-items:stretch;gap:10px}.room-forms h3{margin:0 0 8px}.room-forms label,.player-settings label{font-size:14px;font-weight:600}.room-forms select,.room-forms input,.player-settings select{font:inherit;border:1px solid #d7c8e5;border-radius:10px;background:white;color:var(--ink);padding:11px;min-height:44px;max-width:100%}.room-forms .primary{margin-top:10px}#survival-options{display:flex;flex-direction:column;gap:10px}#join-code{text-transform:uppercase;font-family:'Space Grotesk',sans-serif;letter-spacing:3px}.mp-error{color:#8a365c;font-size:14px;line-height:1.5;min-height:20px}.room-top{display:flex;align-items:center;flex-wrap:wrap;gap:12px;padding:16px;background:#f2eafa;border-radius:16px}.room-caption{font-size:11px;letter-spacing:1.5px;display:block}#room-code{font-family:'Space Grotesk',sans-serif;font-size:28px;letter-spacing:4px;margin-right:12px}.room-top .back{margin:0}.room-status{display:flex;align-items:center;justify-content:space-between;gap:15px;margin:20px 0 14px}#match-time{font-variant-numeric:tabular-nums;font-weight:700;font-size:20px}.team-scores{display:flex;gap:10px}.score{flex:1;border-radius:12px;padding:14px;font-weight:700}.mint{background:#def2e5}.peach{background:#ffe7d8}.player-settings{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin:18px 0}.player-settings select{font-size:14px}.room-players{display:flex;gap:8px;flex-wrap:wrap}.player-chip{padding:8px 10px;border-radius:10px;font-size:13px}.lobby-note{padding:25px;border:1px dashed #c5afd9;border-radius:16px;line-height:1.7;background:#fcf9ff}#room-actions{margin:14px 0}.arena{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));gap:3px;padding:5px;background:#d8cbe6;border-radius:12px;overflow:hidden}.arena-cell{aspect-ratio:1;min-width:0;min-height:0;padding:0;border:1px solid #ffffff90;border-radius:4px;font-size:19px;line-height:1;color:#695381}.arena-cell.danger{background:#81738f!important;color:#fff}.arena-cell.you{outline:3px solid #604788;outline-offset:-3px;color:#3d235e;font-size:24px;font-weight:700}.arena-cell.mint-player{color:#256841;font-weight:700}.arena-cell.peach-player{color:#a44d26;font-weight:700}.arena-notice{background:#fff2cf;padding:14px;border-radius:12px;font-weight:600;line-height:1.5}.direction-controls{display:flex;justify-content:center;gap:12px;margin:18px 0}.direction-controls button{width:55px;min-height:48px;border:1px solid #cbb8de;background:#eee3f9;border-radius:12px;font-size:24px;touch-action:manipulation}.quest-targets{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:18px}.quest-targets span{padding:8px 10px;border-radius:10px;background:#f0e6fb;font-size:14px}.quest-targets .found{background:#dcefe1;text-decoration:line-through}.quest-board{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;padding:14px;background:#f3eafb;border-radius:18px}.quest-board button{border:1px solid #e0d2ec;border-radius:12px;background:#ffffffaa;aspect-ratio:1;font-size:36px;min-width:0;padding:0;transform:rotate(var(--twist));touch-action:manipulation}.quest-board.medium{grid-template-columns:repeat(5,minmax(0,1fr))}.quest-board.hard{grid-template-columns:repeat(6,minmax(0,1fr))}.quest-board.impossible{grid-template-columns:repeat(7,minmax(0,1fr));gap:7px}.quest-board.hard button{font-size:26px}.quest-board.impossible button{font-size:21px}.quest-board .found{opacity:.3;transform:none}.room-forms button:disabled{opacity:.6}.room-forms select:focus-visible,.player-settings select:focus-visible{outline:3px solid #7150a8;outline-offset:3px}@media(max-width:950px){.multiplayer-category .category-cards{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:620px){.multiplayer-category .category-cards,.room-forms{grid-template-columns:1fr}.room-forms form{padding:18px}.arena{gap:2px;padding:3px}.arena-cell{font-size:14px}.arena-cell.you{font-size:19px}.quest-board{padding:10px;gap:7px}.quest-board button{font-size:30px}.quest-board.hard button{font-size:23px}.quest-board.impossible{gap:5px}.quest-board.impossible button{font-size:18px}.player-settings select{width:100%}.room-top{padding:13px}#match-time{font-size:17px}.score{padding:11px}}
/* Walkable multiplayer worlds */
.play:has(#multiplayer){max-width:1080px}
.world3d{width:100%;height:510px;border-radius:22px;overflow:hidden;background:#dfeefa;border:3px solid #fff;box-shadow:0 8px 24px #b9adce33;position:relative}
.world3d canvas{display:block;width:100%;height:100%;touch-action:none}
.direction-controls button{touch-action:none;user-select:none;min-width:58px;min-height:54px}
@media(max-width:600px){.world3d{height:390px}.play:has(#multiplayer){padding:16px}.direction-controls{gap:10px}}
