*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}
html,body{margin:0;min-height:100%;background:#000;color:#fff;font-family:ui-monospace,"SF Mono",Menlo,Consolas,monospace;font-weight:700;text-transform:uppercase}
main{max-width:560px;margin:auto;padding:max(8px,env(safe-area-inset-top)) 8px max(12px,env(safe-area-inset-bottom))}
button,a{font:inherit;color:inherit;cursor:pointer}
.bar{display:flex;align-items:center;justify-content:space-between;gap:8px;min-height:44px;padding:0 2px}
.bar .tag{font-size:12px;letter-spacing:4px;color:#ffb347}
.pbtn{background:#000;border:3px solid #d63fd0;padding:8px 12px;font-size:11px;letter-spacing:2px;min-height:44px;text-decoration:none;display:inline-flex;align-items:center;color:#fff}
.pbtn:active{background:#d63fd0}
/* shelf */
.grid{display:grid;grid-template-columns:repeat(3,1fr);gap:12px 11px;padding:14px 12px 16px;border:3px solid #000;background:repeating-linear-gradient(135deg,#ff7a00 0 14px,#c85a00 14px 28px)}
.cart{position:relative;aspect-ratio:5/6;padding:5px 5px 3px;border:2px solid #1a0612;background:#d6204f;box-shadow:3px 3px 0 #000;display:flex;flex-direction:column;gap:3px;color:#fff}
.cart.teal{background:#2aa6b8}.cart.red{background:#d6204f}.cart.empty{background:#8a2c48;opacity:.9}.cart.empty:nth-child(3n){background:#26808e}
.cart.locked{background:#241a30;border-color:#0d0814;box-shadow:3px 3px 0 #000}.cart.locked .scr{background:#0a0512}
.cart .scr{flex:1;background:#000;border:2px solid #1a0612;display:flex;align-items:center;justify-content:center;overflow:hidden;min-height:0}
.cart img.boxart{width:100%;height:100%;object-fit:cover;object-position:center;display:block;-webkit-user-drag:none;pointer-events:none}.cart canvas[hidden],.cart img[hidden]{display:none}.cart canvas{width:100%;height:100%;image-rendering:pixelated;image-rendering:crisp-edges;display:block}
.cart .scr b{font-size:20px;color:#3a3a4a}
.cart .lbl{display:flex;gap:3px;height:7px}.cart .lbl i{flex:1;background:rgba(0,0,0,.35)}.cart .lbl i:first-child{flex:.55;background:rgba(255,255,255,.35)}
.cart.sel{outline:3px solid #fff;outline-offset:1px;z-index:2;animation:jig .45s steps(2) infinite;filter:brightness(1.12)}
@keyframes jig{0%{transform:translate(0,0) rotate(-2deg)}50%{transform:translate(1px,-2px) rotate(2deg)}100%{transform:translate(0,0) rotate(-2deg)}}
.info{display:grid;grid-template-columns:1fr auto auto;gap:3px;margin-top:6px}
.info .box{background:#000;border:3px solid #d63fd0;box-shadow:inset 0 0 0 2px #7b1f77;padding:10px 10px;font-size:13px;letter-spacing:2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.start{display:block;width:100%;margin-top:10px;background:#ffd54a;color:#1a0612;border:0;padding:14px;font-size:16px;letter-spacing:6px;min-height:52px;box-shadow:0 5px 0 #a8801a;text-align:center;text-decoration:none;font-weight:900}
.start:active{transform:translateY(4px);box-shadow:0 1px 0 #a8801a}.start:disabled{background:#444;color:#888;box-shadow:0 5px 0 #222}
.hint{text-align:center;font-size:9px;letter-spacing:2px;color:#9a7ab8;margin-top:12px}
/* select */
.ttl{font-size:14px;letter-spacing:2px;padding:6px 4px 8px;display:flex;gap:8px;align-items:center}
.ttl .no{background:#d63fd0;padding:2px 6px}.ttl .kind{margin-left:auto;background:#ffd54a;color:#1a0612;padding:2px 8px}
.stagewrap{position:relative;border:3px solid #d63fd0;background:repeating-linear-gradient(135deg,#ff7a00 0 14px,#c85a00 14px 28px)}
.stage{display:block;width:100%;height:min(46vh,360px);min-height:240px;touch-action:manipulation;background:#0e1a1d}
.stagehint{position:absolute;left:0;right:0;bottom:4px;text-align:center;font-size:9px;letter-spacing:3px;color:#cfe;text-shadow:1px 1px 0 #000;pointer-events:none}
.plates{display:grid;grid-template-columns:1fr 1fr;gap:6px;margin-top:8px}
.plate{background:#000;border:3px solid #55306a;padding:10px;text-align:left}
.plate h3{margin:0;font-size:16px;letter-spacing:3px}.plate .role{font-size:9px;letter-spacing:1px;color:#b89ad0}
.plate[aria-checked=true]{border-color:#ffd54a;background:#2a1838}.plate[aria-checked=true] h3{color:#ffd54a}
.stats{background:#000;border:3px solid #d63fd0;margin-top:6px;padding:10px 12px}
.stats dl{display:grid;grid-template-columns:auto 1fr;gap:5px 10px;margin:0 0 8px;font-size:10px;letter-spacing:2px;align-items:center}
.stats dt{margin:0}.stats dd{margin:0;height:8px;background:#2a1838}.stats dd i{display:block;height:100%;width:var(--v);background:#ffd54a}
.stats p{margin:0 0 4px;font-size:10px;line-height:1.5;letter-spacing:1px;color:#d9c8e8}.stats .bst{color:#ffd54a;letter-spacing:3px}
.stage.k2d{height:min(36vh,300px);min-height:220px}
@media(min-width:650px){.cart .scr b{font-size:28px}}
@media(prefers-reduced-motion:reduce){.cart.sel{animation:none}}
/* boot title screen */
#boot{position:fixed;inset:0;z-index:60;background:#05030a;display:flex;align-items:center;justify-content:center;overflow:hidden;opacity:0;transition:opacity .35s ease;cursor:pointer;touch-action:manipulation}
#boot.on{opacity:1}
#boot.bye{opacity:0;transform:translateY(-14px);transition:opacity .4s ease,transform .4s ease}
#boot::before,#boot::after{content:'';position:absolute;left:0;right:0;height:16px;background:repeating-linear-gradient(135deg,#ff7a00 0 14px,#c85a00 14px 28px)}
#boot::before{top:0;border-bottom:3px solid #000}
#boot::after{bottom:0;border-top:3px solid #000}
.boot-scan{position:absolute;inset:0;pointer-events:none;background:repeating-linear-gradient(0deg,rgba(0,0,0,.35) 0 2px,transparent 2px 5px)}
.boot-in{position:relative;text-align:center;margin:16px;padding:26px 22px 22px;background:#000;border:3px solid #d63fd0;box-shadow:inset 0 0 0 2px #7b1f77,3px 3px 0 #000;animation:bootzoom .5s steps(6) both}
.boot-pre{font-size:11px;letter-spacing:6px;color:#ffb347;margin-bottom:10px}
.boot-ttl{margin:0;font-size:clamp(30px,9.5vw,54px);letter-spacing:6px;color:#fff;text-shadow:3px 3px 0 #7b1f77;line-height:1}
.boot-ttl span{display:inline-block;opacity:0;animation:btpop .28s steps(3) forwards}
.boot-ttl span:nth-child(1){animation-delay:.30s}.boot-ttl span:nth-child(2){animation-delay:.36s}.boot-ttl span:nth-child(3){animation-delay:.42s}.boot-ttl span:nth-child(4){animation-delay:.48s}.boot-ttl span:nth-child(5){animation-delay:.56s}.boot-ttl span:nth-child(6){animation-delay:.62s}.boot-ttl span:nth-child(7){animation-delay:.68s}.boot-ttl span:nth-child(8){animation-delay:.74s}.boot-ttl span:nth-child(9){animation-delay:.80s}
.boot-sub{font-size:13px;letter-spacing:12px;color:#d63fd0;margin-top:8px;text-shadow:2px 2px 0 #000}
.boot-cats-px{width:min(300px,70vw);aspect-ratio:2/1;margin:14px auto 2px;display:block;image-rendering:pixelated;image-rendering:crisp-edges;animation:btglow 2.4s 1.2s steps(2) infinite}
.boot-go{display:inline-block;margin-top:14px;background:#ffd54a;color:#1a0612;padding:13px 22px;font-size:15px;letter-spacing:4px;font-weight:900;box-shadow:0 5px 0 #a8801a;animation:bootpulse 1.2s 1.3s steps(2) infinite}
.boot-go:active{transform:translateY(4px);box-shadow:0 1px 0 #a8801a}
.boot-hint{margin-top:12px;font-size:9px;letter-spacing:3px;color:#9a7ab8;animation:btblink 1s 1.4s steps(2) infinite}
@keyframes bootzoom{0%{transform:scale(.94);opacity:0}100%{transform:scale(1);opacity:1}}
@keyframes btpop{0%{transform:translateY(8px);opacity:0}100%{transform:translateY(0);opacity:1}}
@keyframes btglow{0%{filter:drop-shadow(0 0 0 rgba(88,196,246,0))}50%{filter:drop-shadow(0 0 5px rgba(88,196,246,.55))}}
@keyframes bootpulse{0%{filter:brightness(1)}50%{filter:brightness(1.18)}}
@keyframes btblink{0%{opacity:1}50%{opacity:.25}}
@media(prefers-reduced-motion:reduce){#boot,.boot-in,.boot-ttl span,.boot-cats-px{animation:none!important;opacity:1!important}.boot-go,.boot-hint{animation:none!important}}
