*{box-sizing:border-box;margin:0;padding:0}:root{--purple:#4A1A63;--purple-soft:#6B3A85;--amber:#FFC42E;--orange:#FF7A2F;--orange-dark:#D95B17;--teal:#2FAFAF;--teal-dark:#1D7E7E;--cream:#FFF7EA;--paper:#FFFCF5;--ink:#331445;--muted:#715E78;--white:#fff;--line:#E4CFB2;--green:#358A58;--font:ui-rounded,"SF Pro Rounded",Nunito,Quicksand,"Hiragino Maru Gothic ProN","Trebuchet MS",system-ui,sans-serif}html,body{min-height:100%;font-family:var(--font);color:var(--ink);background:var(--cream)}body{min-height:100vh;min-height:100dvh;overflow:hidden;background-image:radial-gradient(circle at 12px 12px,rgba(74,26,99,.08) 2px,transparent 2px);background-size:24px 24px}button,input{font:inherit}button{-webkit-tap-highlight-color:transparent}button:focus-visible,a:focus-visible,input:focus-visible{outline:4px solid var(--amber);outline-offset:3px}#app,.screen{min-height:100vh;min-height:100dvh}.screen{display:none}.screen.active{display:flex}.hidden{display:none!important}.menu-screen{flex-direction:column;align-items:center;overflow-y:auto;padding:clamp(14px,4vh,32px) 16px}.brand-mark{width:clamp(82px,22vw,118px);height:auto}h1{margin-top:6px;font-size:clamp(30px,8vw,46px);text-align:center}.tagline{width:min(470px,94vw);margin:10px 0 24px;color:var(--muted);font-size:clamp(16px,4vw,20px);line-height:1.5;text-align:center}.menu-buttons{display:grid;gap:14px;width:min(340px,92vw)}.big-btn{min-height:56px;border:0;border-radius:8px;padding:10px 18px;color:var(--white);background:var(--orange);box-shadow:0 5px 0 var(--orange-dark);font-size:18px;font-weight:800;cursor:pointer}.big-btn:active{transform:translateY(3px);box-shadow:0 2px 0 var(--orange-dark)}.big-btn.ghost{color:var(--purple);background:var(--white);box-shadow:0 5px 0 var(--line)}.reset-btn{background:var(--purple-soft);box-shadow:0 5px 0 var(--purple)}.portal-link{display:inline-flex;align-items:center;min-height:44px;margin-top:24px;padding:10px 20px;border-radius:999px;color:var(--purple);background:var(--white);box-shadow:0 3px 0 var(--line);font-weight:800;text-decoration:none}.build{margin-top:13px;color:var(--muted);font-size:12px}.menu-header{display:flex;align-items:center;gap:14px;width:min(680px,100%);margin-bottom:22px}.menu-header h2{font-size:clamp(23px,6vw,32px)}.subtle{margin-top:3px;color:var(--muted)}.icon-btn{display:grid;flex:0 0 48px;place-items:center;width:48px;height:48px;border:2px solid var(--line);border-radius:8px;color:var(--purple);background:var(--white);font-size:22px;cursor:pointer}.stage-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;width:min(680px,100%)}.stage-card{display:grid;grid-template-columns:58px 1fr 32px;align-items:center;min-height:92px;border:2px solid var(--line);border-radius:8px;padding:10px;color:var(--ink);background:var(--paper);box-shadow:0 4px 0 var(--line);text-align:left;cursor:pointer}.stage-card:not(:disabled):active{transform:translateY(2px);box-shadow:0 2px 0 var(--line)}.stage-card:disabled{opacity:.52}.stage-icon{font-size:34px;text-align:center}.stage-copy{display:grid;gap:4px}.stage-copy strong{font-size:17px}.stage-copy span{color:var(--muted);font-size:13px;line-height:1.25}.stage-state{font-size:21px;text-align:center}#screen-game{flex-direction:column;overflow-y:auto}.game-header{display:flex;align-items:center;gap:9px;min-height:68px;padding:9px 12px;border-bottom:2px solid var(--line);background:var(--paper)}.round-meta{display:grid;flex:1;gap:2px;min-width:0}.round-meta strong{overflow:hidden;font-size:clamp(15px,4vw,19px);text-overflow:ellipsis;white-space:nowrap}.round-meta span{color:var(--muted);font-size:13px}.play-area{display:flex;flex:1;flex-direction:column;align-items:center;width:min(760px,100%);margin:auto;padding:clamp(10px,2vh,20px) 10px}.instruction{min-height:36px;font-size:clamp(17px,4vw,22px);font-weight:900;text-align:center}.memory-board{display:grid;grid-template-columns:repeat(var(--columns),minmax(44px,1fr));gap:clamp(5px,1.4vw,10px);width:min(650px,100%);margin:10px auto}.memory-board[data-columns="3"]{width:min(390px,100%)}.memory-board[data-columns="4"]{width:min(540px,100%)}.memory-card{min-width:44px;min-height:58px;aspect-ratio:.82;border:0;border-radius:8px;padding:0;background:transparent;perspective:700px;cursor:pointer}.card-inner{position:relative;display:block;width:100%;height:100%;transition:transform .28s ease;transform-style:preserve-3d}.memory-card.flipped .card-inner,.memory-card.matched .card-inner{transform:rotateY(180deg)}.card-back,.card-face{position:absolute;display:grid;place-items:center;inset:0;border:3px solid var(--purple);border-radius:8px;backface-visibility:hidden;overflow:hidden}.card-back{color:var(--white);background-color:var(--purple);background-image:linear-gradient(45deg,rgba(255,196,46,.25) 25%,transparent 25%,transparent 75%,rgba(255,196,46,.25) 75%),linear-gradient(45deg,rgba(255,196,46,.25) 25%,transparent 25%,transparent 75%,rgba(255,196,46,.25) 75%);background-position:0 0,8px 8px;background-size:16px 16px;font-size:clamp(22px,6vw,40px);font-weight:900}.card-face{grid-template-rows:1fr auto;padding:7px 4px 6px;color:var(--ink);background:var(--paper);transform:rotateY(180deg)}.face-symbol{align-self:end;font-size:clamp(27px,8vw,54px);line-height:1}.face-label{align-self:end;width:100%;overflow:hidden;font-size:clamp(9px,2.2vw,13px);font-weight:900;text-align:center;text-overflow:ellipsis;white-space:nowrap}.memory-board[data-columns="6"] .card-face{padding:3px 2px}.memory-board[data-columns="6"] .face-symbol{font-size:clamp(24px,7vw,42px)}.memory-board[data-columns="6"] .face-label{font-size:clamp(7px,1.8vw,10px)}.memory-card.matched .card-face{border-color:var(--green);background:#EAF8EF;box-shadow:inset 0 0 0 3px #A8D4B8}.memory-card:disabled{opacity:1;cursor:default}.memory-card.pair-wait{animation:hold-cards .9s ease}.memory-card.pair-found{animation:found-pair .42s ease}.feedback{min-height:48px;width:min(650px,100%);color:var(--purple);font-size:clamp(15px,4vw,19px);font-weight:800;line-height:1.35;text-align:center}.overlay{position:fixed;z-index:10;inset:0;display:grid;place-items:center;padding:16px;background:rgba(40,14,52,.72)}.dialog-card{width:min(430px,100%);max-height:90vh;overflow-y:auto;border:3px solid var(--amber);border-radius:8px;padding:24px;color:var(--ink);background:var(--paper);box-shadow:0 10px 0 rgba(0,0,0,.18);text-align:center}.dialog-card h2{font-size:29px}.dialog-card p{margin:12px 0 20px;color:var(--muted);font-size:17px;line-height:1.45}.celebration{font-size:52px}.card-buttons{display:grid;gap:13px}.setting-row{display:flex;align-items:center;gap:12px;min-height:54px;margin:10px 0;padding:8px;border-bottom:2px solid var(--line);font-size:18px;font-weight:800;text-align:left}.setting-row input{width:26px;height:26px;accent-color:var(--teal)}@keyframes hold-cards{0%,80%{transform:scale(1)}90%{transform:scale(.96)}100%{transform:scale(1)}}@keyframes found-pair{50%{transform:translateY(-5px)}}@media(max-width:460px){.stage-grid{grid-template-columns:1fr}.stage-card{min-height:80px}.game-header{gap:6px;padding-inline:8px}.game-header .icon-btn{width:44px;height:44px;flex-basis:44px}.play-area{padding-inline:8px}.memory-board{gap:5px}.instruction{font-size:16px}.feedback{font-size:15px}}@media(max-height:560px) and (orientation:landscape){.play-area{padding-block:5px}.instruction{min-height:24px}.memory-board{max-width:500px;margin:4px auto}.memory-card{min-height:44px}.feedback{min-height:30px}.face-symbol{font-size:30px}}@media(prefers-reduced-motion:reduce){*,*::before,*::after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}
