*{box-sizing:border-box}html,body{margin:0;color:#2a2328;background:#fdf6f8;font-family:-apple-system,BlinkMacSystemFont,"Hiragino Sans","Noto Sans JP",sans-serif}button{font:inherit;color:inherit;border:0;background:#f3f4f6;border-radius:8px;min-height:44px;cursor:pointer}button:focus-visible,a:focus-visible{outline:3px solid #5576bb;outline-offset:2px}button:disabled{opacity:.55;cursor:default}[hidden]{display:none!important}.sweet-shell{max-width:450px;margin:auto;background:white}.machine{position:relative;flex:1 1 auto;min-height:0;overflow:hidden}canvas{display:block;width:100%;height:100%;touch-action:manipulation}.hud{position:absolute;top:8px;left:15px;right:15px;display:flex;align-items:center;gap:12px;pointer-events:none;font-size:14px}.hud strong{font-size:20px}.hud button{pointer-events:auto;margin-left:auto;width:44px}.hud span{background:#ffffffdc;border-radius:8px;padding:4px 8px}.controls{display:flex;gap:7px;padding:6px 12px max(8px,env(safe-area-inset-bottom));align-items:center;min-height:65px}.controls>button{flex:1;font-weight:700;min-height:50px}.controls #action{flex:2;background:#2a2328;color:white}.controls #album{flex:0 0 50px;font-size:22px}.overlay{position:absolute;inset:0;display:grid;place-items:center;background:#ffffff70;padding:18px}.panel{width:100%;max-width:330px;background:#fff;border:1px solid #e9e4e5;border-radius:12px;padding:20px;text-align:center;box-shadow:0 8px 35px #39252916}.panel h2{font-size:22px;margin:2px 0 12px}.panel p{font-size:14px;line-height:1.8;margin:8px 0}.panel>button{width:100%;margin-top:8px;font-weight:700}.panel .start{background:#2a2328;color:white}.preview{height:95px;display:flex;justify-content:center;gap:2px}.preview img{width:30%;object-fit:contain}.collection{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin:12px 0;max-height:45svh;overflow:auto}.collection figure{margin:0;min-width:0;background:#f3f4f6;border-radius:8px;padding:7px}.collection img{width:100%;height:67px;object-fit:contain}.collection figcaption{font-size:10px;overflow-wrap:anywhere}.collection strong{display:block;font-size:15px}.collection .empty img{filter:grayscale(1);opacity:.35}.note{position:absolute;top:96%;bottom:0;left:0;right:0;display:flex;align-items:center;justify-content:center;overflow:hidden;white-space:nowrap;pointer-events:none;text-align:center;font-size:12px;line-height:1;font-weight:700;color:#6e626a}.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%)}@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto}}

/* Keep the real header and safe-area heights out of the playfield calculation. */
body{height:100svh;height:100dvh;display:flex;flex-direction:column;overflow:hidden}
.game-nav-header{flex:0 0 auto}
.sweet-shell{display:flex;flex-direction:column;flex:1 1 auto;min-height:0;width:100%}
.controls{flex:0 0 auto}
.panel{max-height:100%;overflow-y:auto;overscroll-behavior:contain}
.preview figure{flex:1;min-width:0;margin:0}
.preview figure img{width:100%;height:72px;object-fit:contain}
.preview figcaption{font-size:10px;line-height:1.4;overflow-wrap:anywhere}
.preview:has(figure){height:auto;min-height:95px}

/* The canvas prize lip ends at y=584 of 610. Keep hints in the remaining footer, at every viewport height. */
