*{box-sizing:border-box}.memory-page{max-width:1360px;margin:auto;padding:16px;color:#243e3d}.page-heading{padding:4px 4px 16px}.page-heading h1{font-size:28px;margin:0}.page-heading p{font-size:14px;margin:6px 0 0}.memory-page #host{--ink:#263f3d;--cream:#fff9e9;position:relative;isolation:isolate;display:flex;flex-direction:column;width:100%;height:700px;min-height:560px;overflow:hidden;background:#f3e7cf;color:var(--ink);border:1px solid #b4a58b;border-radius:12px;font-family:'Zen Maru Gothic',sans-serif}.memory-page #host [hidden]{display:none!important}#host button{font:inherit;font-weight:700;line-height:1.4;min-height:42px;padding:8px 14px;background:#fff9e9;border:1px solid #b6a383;border-radius:6px;color:var(--ink);cursor:pointer;touch-action:manipulation}#host button:hover{background:#f8ebce}#host button:disabled{cursor:default;opacity:.6}#host button:focus-visible,#host [tabindex]:focus-visible{outline:3px solid #e57d45;outline-offset:2px}#host button.primary{background:#225d4e;border-color:#225d4e;color:#fff9e9}#host button.primary:hover{background:#164e40}.memory-top{flex:none;display:flex;justify-content:space-between;align-items:center;gap:12px;padding:10px 20px;background:#fff9e9;border-bottom:1px solid #cdbb9b}.memory-top strong{letter-spacing:.12em;font-size:18px}.memory-top nav{display:flex;gap:6px}.memory-top button{font-size:12px!important;padding:6px 9px!important;min-height:36px!important}#base{flex:1;min-height:0;position:relative}#cover{display:grid;grid-template-columns:1.15fr 1fr;height:100%;min-height:0}.cover-art{width:100%;height:100%;object-fit:cover;min-height:0;object-position:54% center}.welcome{padding:clamp(20px,3vw,38px);display:flex;flex-direction:column;justify-content:center;gap:12px;background:#fff9e9;min-height:0}.welcome>small{font-size:11px;letter-spacing:.07em}.welcome h2{font-size:clamp(36px,4.5vw,58px);line-height:1.25;margin:0;letter-spacing:.07em}.welcome p{font-size:14px;line-height:1.8;margin:0}#levels{display:grid;gap:10px}#levels button{display:grid;grid-template-columns:1fr auto 20px;align-items:center;text-align:left;gap:10px;background:#ecc296;padding:13px 15px;box-shadow:0 4px 0 #ad7449;border:1px solid #bb8c60;min-height:56px}#levels button:nth-child(2){background:#b6c7ac;box-shadow:0 4px 0 #64816a;border-color:#7e9779}#levels button:nth-child(3){background:#bfcad1;box-shadow:0 4px 0 #667889;border-color:#81929c}#levels b{font-size:17px}#levels span{font-size:12px}#levels i{font-style:normal}#best-records{padding:10px 14px;border-top:1px dashed #cdbb9b;display:grid;grid-template-columns:1fr 1fr;gap:4px 12px}#best-records>small{font-size:11px;grid-column:1/-1;color:#746c59}#best-records p{font-size:11px;white-space:nowrap}#play{height:100%;display:flex;flex-direction:column;padding:16px;gap:12px}.game-stats{display:flex;align-items:center;gap:18px;padding:9px 18px;background:#fff9e9;border:1px solid #d0bf9c;border-radius:5px;flex:none}.game-stats h2{font-size:18px;margin:0 auto 0 0}.game-stats span{font-size:12px;white-space:nowrap}.game-stats b{font-size:23px;font-variant-numeric:tabular-nums}.play-body{flex:1;min-height:0;display:grid;grid-template-columns:minmax(0,1fr) 192px;gap:14px}#board{position:relative;min-height:0;min-width:0;display:flex;padding:15px;background:#27624d url('./assets/table.webp') center/cover;border:5px solid #a7774a;border-radius:8px;box-shadow:0 4px 0 #7f593c}#board-scroll{width:100%;min-height:0;overflow:auto;overscroll-behavior:contain;scrollbar-color:#d1bb8b #294e3e;scrollbar-width:thin;display:flex}#card-grid{--cols:4;--cw:85px;--gap:9px;display:grid;grid-template-columns:repeat(var(--cols),var(--cw));gap:var(--gap);width:max-content;height:max-content;margin:auto;padding:8px}#host .memory-card{width:var(--cw);height:calc(var(--cw)*4/3);min-height:0;padding:0;background:transparent;border:0;position:relative;perspective:700px;border-radius:7px;isolation:isolate;box-shadow:0 2px 3px #16291e66}#host .memory-card:hover{background:transparent;box-shadow:0 0 0 2px #f4c277}#host .memory-card:disabled{opacity:1}#host .memory-card.matched{box-shadow:0 0 0 2px #ffd278}.memory-card .turn{position:absolute;inset:0;display:block;transform-style:preserve-3d;pointer-events:none}.card-front,.card-back{position:absolute;inset:0;backface-visibility:hidden;overflow:hidden;border-radius:7px;display:grid;place-items:center;background:#fff9e9}.card-back img{width:100%;height:100%;object-fit:fill}.card-front{transform:rotateY(180deg);border:3px solid #f7edd0;padding:3px}.card-front img{width:100%;height:100%;object-fit:contain;min-height:0}.card-front img:not([src]){visibility:hidden}.memory-card small{position:absolute;bottom:2px;right:3px;z-index:1;background:#fff9e9e6;border-radius:3px;font-size:9px;line-height:1.2;padding:1px 3px;pointer-events:none}#shelf{display:flex;flex-direction:column;min-width:0;min-height:0;background:#ecdbb8;border:1px solid #bd9b6f;border-radius:5px;padding:12px}#shelf h3{font-size:16px;text-align:center;margin:0 0 10px}#shelf-note{font-size:12px;text-align:center;color:#8b7357}#found-pairs{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));align-content:start;gap:12px 8px;overflow:auto;min-height:0;padding:3px}#found-pairs figure,#result-pairs figure{margin:0;display:grid;place-items:center;background:#fff9e9;border:1px solid #dac4a0;border-bottom:5px solid #9c7249;border-radius:4px;aspect-ratio:1}#found-pairs img,#result-pairs img{width:100%;height:100%;max-height:90px;object-fit:contain;padding:5px;min-height:0}.play-footer{display:flex;align-items:center;justify-content:space-between;gap:12px;flex:none}#feedback{font-size:14px;margin:0;padding:7px 12px;border-left:4px solid #bc7852;line-height:1.4}.play-footer button{font-size:12px!important}#loading{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;background:#f9efdfea;padding:15px;z-index:3}#loading p{font-size:16px}#result{height:100%;display:grid;grid-template-columns:1.25fr 1fr;gap:26px;padding:24px 30px}#collection-panel{min-height:0;display:grid;grid-template-rows:auto minmax(0,1fr) 130px;gap:14px}#collection-panel small{font-size:12px;letter-spacing:.13em}#collection-panel h2{font-size:30px;letter-spacing:.04em;margin:6px 0 0}#result-pairs{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:10px;align-content:center;min-height:0;overflow:auto;padding:6px;background:#dec69e;border:1px solid #b39972;border-radius:4px}.review-art{width:100%;height:100%;object-fit:cover;object-position:center 45%;border-radius:6px;min-height:0}#receipt{align-self:center;max-height:100%;overflow:auto;text-align:center;background:#fff9e9;border-top:5px solid #bda67c;border-bottom:5px solid #bda67c;box-shadow:3px 5px 0 #c7ad834d;padding:25px 26px}#receipt>small{letter-spacing:.14em;font-size:12px}#receipt h3{margin:15px 0 8px;font-size:20px}#result-stars{font-size:36px;letter-spacing:.05em;color:#bb7525;margin:10px 0 5px}#result-message{font-size:16px;line-height:1.65;margin:5px 0 18px}#receipt dl{padding:12px 0;border-block:1px dashed #b6a88b;margin:0}#receipt dl>div{display:flex;align-items:center;justify-content:space-between;gap:12px;margin:5px 0}#receipt dt{font-size:12px}#receipt dd{font-size:25px;margin:0;font-variant-numeric:tabular-nums}#receipt dd b{font-weight:700}#best-badge{font-size:12px;color:#985e37;min-height:36px;margin:14px 0;line-height:1.5}#receipt button{display:block;width:100%;margin-top:9px}#modal{position:absolute;inset:0;display:grid;place-items:center;background:#18372c80;padding:16px;z-index:10}#modal>section{width:min(500px,100%);max-height:100%;overflow-y:auto;background:#fff9e9;border:2px solid #b4a381;border-radius:12px;padding:20px;box-shadow:0 15px 60px #203b3133}#modal header{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:12px}#modal h2{font-size:21px;margin:0}#dialog-content{font-size:15px;line-height:1.9}#dialog-content>button{display:block;width:100%;margin:10px 0}#dialog-content label{display:flex;align-items:center;gap:10px;margin:12px 0;flex-wrap:wrap}#dialog-content input[type=checkbox]{width:22px;height:22px;accent-color:#2b6853}#volume{width:100%;accent-color:#2b6853}#storage-note{font-size:12px}.parent-note{padding:24px 6px;line-height:1.9;color:#635e50;font-size:14px}.parent-note h2{font-size:19px}.memory-page #host:fullscreen,.memory-page #host.faux-fullscreen{width:100vw;height:100dvh;max-height:none;min-height:0;border:0;border-radius:0}.memory-page #host.faux-fullscreen{position:fixed;inset:0;z-index:10000}
@media(max-width:760px){.memory-page{padding:8px}.page-heading h1{font-size:23px}.page-heading p{font-size:12px}.memory-page #host{height:820px;min-height:660px}.memory-top{flex-wrap:wrap;padding:8px 10px;gap:7px}.memory-top strong{font-size:13px}.memory-top nav{gap:4px}.memory-top button{font-size:10px!important;min-height:34px!important;padding:5px 7px!important}#cover{grid-template-columns:1fr;grid-template-rows:32% minmax(0,1fr)}.cover-art{object-position:center 42%}.welcome{padding:18px 22px;gap:10px}.welcome h2{font-size:32px}.welcome h2 br{display:none}.welcome p{font-size:12px;line-height:1.6}#levels{gap:9px}#levels button{min-height:47px;padding:10px 12px}#levels b{font-size:15px}#levels span{font-size:11px}#best-records{padding:8px 0}#play{padding:10px;gap:9px}.game-stats{padding:7px 10px;gap:11px;flex-wrap:wrap}.game-stats h2{font-size:13px;flex-basis:100%;margin:0}.game-stats span{font-size:10px}.game-stats b{font-size:20px}.play-body{grid-template-columns:1fr;grid-template-rows:minmax(0,1fr) 80px;gap:10px}#board{padding:6px;border-width:4px}#shelf{padding:7px 9px;display:grid;grid-template-columns:64px minmax(0,1fr);align-items:center;gap:8px}#shelf h3{font-size:11px;margin:0}#shelf-note{font-size:10px;grid-column:2}#found-pairs{display:flex;gap:7px;padding:2px;overflow-x:auto;overflow-y:hidden;grid-column:2;grid-row:1}#found-pairs figure{height:55px;flex:0 0 50px;aspect-ratio:auto}#found-pairs img{padding:2px}.play-footer{gap:8px}#feedback{font-size:11px;padding:6px;flex:1}.play-footer button{font-size:10px!important;padding:6px;min-height:36px;white-space:nowrap}#result{padding:14px;gap:14px;grid-template-columns:1fr;grid-template-rows:minmax(0,1fr) auto}#collection-panel{grid-template-rows:auto minmax(0,1fr);gap:9px}#collection-panel h2{font-size:22px;margin:3px 0 0}#collection-panel small{font-size:10px}.review-art{display:none}#result-pairs{gap:6px;align-content:center}#result-pairs img{padding:2px}#receipt{padding:12px 18px;width:100%}#receipt>small{display:none}#receipt h3{font-size:15px;margin:3px 0}#result-stars{font-size:25px;margin:3px 0}#result-message{font-size:12px;margin:5px 0 8px}#receipt dl{padding:6px 0;display:flex;gap:20px;justify-content:center}#receipt dl>div{gap:7px;margin:0}#receipt dt{font-size:10px}#receipt dd{font-size:21px}#best-badge{font-size:10px;min-height:0;margin:8px 0}#receipt button{font-size:13px;min-height:36px;margin-top:6px}#modal{padding:10px}#modal>section{padding:16px}#modal h2{font-size:18px}#dialog-content{font-size:13px}}
@media(max-width:360px){.memory-top{justify-content:center}.memory-top strong{display:none}.welcome{padding:16px}.welcome h2{font-size:28px}#levels b{font-size:14px}.game-stats{gap:7px;padding:6px 8px}#play{padding:7px}.game-stats b{font-size:18px}#receipt{padding:10px}#receipt dl{gap:10px}#result{gap:9px;padding:10px}}
@media(max-height:520px) and (min-width:600px){.memory-page #host{height:390px;min-height:360px}.memory-top{padding:6px 12px}.memory-top strong{font-size:13px}.memory-top button{font-size:10px!important;min-height:30px!important}#cover{grid-template-columns:1.1fr 1fr;grid-template-rows:1fr}.welcome{padding:12px 22px;gap:7px}.welcome h2{font-size:30px}.welcome h2 br{display:none}.welcome p{font-size:11px;line-height:1.4}.welcome>small{font-size:9px}#levels{gap:7px}#levels button{min-height:39px;padding:7px 11px}#levels b{font-size:14px}#levels span{font-size:10px}#best-records{padding:6px 0;gap:1px 8px;grid-template-columns:repeat(3,1fr)}#best-records>small{font-size:9px}#best-records p{font-size:8px}#ready-note{display:none}#play{padding:9px;gap:7px}.game-stats{padding:5px 11px;gap:16px;flex-wrap:nowrap}.game-stats h2{font-size:13px;flex-basis:auto;margin-right:auto}.game-stats span{font-size:10px}.game-stats b{font-size:18px}.play-body{grid-template-columns:minmax(0,1fr) 145px;grid-template-rows:1fr;gap:9px}#board{padding:5px;border-width:3px}#shelf{padding:7px;display:flex;gap:0}#shelf h3{font-size:12px;margin:0 0 6px}#shelf-note{font-size:10px}#found-pairs{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:6px;overflow:auto}#found-pairs figure{height:auto;aspect-ratio:1}#found-pairs img{padding:2px}#feedback{font-size:11px;padding:4px 7px}.play-footer button{font-size:10px!important;min-height:30px;padding:5px 9px}#result{grid-template-columns:1.2fr 1fr;grid-template-rows:1fr;padding:12px 20px;gap:18px}#collection-panel{grid-template-rows:auto minmax(0,1fr);gap:7px}#collection-panel h2{font-size:22px;margin:3px 0 0}#collection-panel small{font-size:10px}.review-art{display:none}#result-pairs{gap:7px}#result-pairs img{max-height:57px;padding:3px}#receipt{padding:10px 18px}#receipt>small{display:none}#receipt h3{font-size:14px;margin:3px 0}#result-stars{font-size:25px;margin:3px 0}#result-message{font-size:11px;margin:5px 0 8px}#receipt dl{display:flex;gap:16px;justify-content:center;padding:7px 0}#receipt dl>div{gap:7px;margin:0}#receipt dt{font-size:9px}#receipt dd{font-size:20px}#best-badge{font-size:10px;margin:7px 0;min-height:0}#receipt button{font-size:11px;min-height:30px;margin-top:6px;padding:5px}#modal>section{padding:12px}#modal header{margin:0}#dialog-content{font-size:12px;line-height:1.55}#dialog-content>button{margin:6px 0;min-height:32px}#dialog-content p{margin:8px 0}#dialog-content label{margin:8px 0}}
@media(max-width:360px){#cover{grid-template-columns:minmax(0,1fr)}.cover-art,.welcome{min-width:0}#best-records{grid-template-columns:1fr}}
@media(max-width:360px) and (max-height:660px){.memory-page #host:fullscreen #cover,.memory-page #host.faux-fullscreen #cover{grid-template-rows:18% minmax(0,1fr)}}
@media(max-width:360px){#play{padding:4px}#board{padding:1px;border-width:2px}#card-grid{padding:3px}}
@media(max-width:760px) and (min-height:521px){.welcome h2 br{display:initial}}
.review-art{object-fit:contain;background:#ecdbb8}
