:root{--red:#D8232A;--gold:#F2B705;--green:#0E8A3C;--ink:#141414;--cream:#FFF7E3;--bg:#FFF7E3;--sec:#0E8A3C}
*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}
html,body{margin:0;height:100%}
body{font-family:system-ui,-apple-system,"Segoe UI",Roboto,Arial,sans-serif;background:var(--cream);color:var(--ink);font-size:18px;line-height:1.4;display:flex;flex-direction:column;overscroll-behavior:none}
.stripe{display:flex;flex-direction:column;height:9px;flex:none}
.stripe i{flex:1}.stripe i:nth-child(1){background:var(--red)}.stripe i:nth-child(2){background:var(--gold)}.stripe i:nth-child(3){background:var(--green)}
#app{flex:1;min-height:0;position:relative;width:100%;max-width:520px;margin:0 auto;display:flex;flex-direction:column;overflow:hidden}
#footer{flex:none;text-align:center;font-size:13px;font-weight:600;padding:8px 12px calc(8px + env(safe-area-inset-bottom));background:var(--ink);color:#fff}
.screen{flex:1;min-height:0;display:flex;flex-direction:column;padding:18px 18px 14px;overflow-y:auto;animation:in .35s ease both}
@keyframes in{from{opacity:0;transform:translateY(14px)}to{opacity:1;transform:none}}
@keyframes pop{0%{transform:scale(.6);opacity:0}70%{transform:scale(1.08)}100%{transform:scale(1);opacity:1}}
@keyframes float{50%{transform:translateY(-8px)}}
@keyframes slideL{from{opacity:0;transform:translateX(40px)}to{opacity:1;transform:none}}
h1{font-size:30px;line-height:1.1;margin:.3em 0}
h2{font-size:26px;line-height:1.15;margin:.2em 0}
p{margin:.5em 0}
.logo{width:120px;height:120px;align-self:center;animation:float 4s ease-in-out infinite}
.btn{display:block;width:100%;min-height:60px;border:0;border-radius:16px;font:inherit;font-weight:800;font-size:20px;padding:14px 18px;background:var(--ink);color:#fff;cursor:pointer;text-align:center;text-decoration:none;transition:transform .12s}
.btn:active{transform:scale(.97)}
.btn.gold{background:var(--gold);color:#111}.btn.green{background:var(--green)}.btn.red{background:var(--red)}
.btn.ghost{background:transparent;color:inherit;border:3px solid currentColor}
.btn[disabled]{opacity:.45}
.btn+.btn{margin-top:10px}
label{display:block;font-weight:700;margin-top:12px}
input{width:100%;font:inherit;font-size:20px;padding:14px;border:3px solid var(--ink);border-radius:14px;background:#fff;margin-top:4px;color:var(--ink)}
.small{font-size:14px;opacity:.8}
.spacer{flex:1}
/* hub */
.hub .tile{display:flex;align-items:center;gap:14px;width:100%;min-height:72px;margin-top:10px;padding:12px 14px;border:0;border-radius:18px;color:#fff;font:inherit;text-align:left;cursor:pointer;animation:slideL .4s ease both}
.tile .dot{flex:none;width:36px;height:36px;border-radius:50%;background:rgba(255,255,255,.25);display:grid;place-items:center;font-weight:900}
.tile b{display:block;font-size:19px}.tile span{font-size:15px}
.tile.done .dot{background:#fff;color:#111}
.tile.gold{color:#111}
.meter{height:12px;border-radius:6px;background:#0002;overflow:hidden;margin:6px 0 4px}
.meter div{height:100%;background:linear-gradient(90deg,var(--red),var(--gold),var(--green));transition:width .5s}
.link{background:none;border:0;font:inherit;text-decoration:underline;color:inherit;padding:10px;cursor:pointer}
/* story */
.story{flex:1;min-height:0;display:flex;flex-direction:column;background:var(--bg);color:#fff;position:relative;transition:background .4s}
.story.dark{color:#111}
.bars{display:flex;gap:4px;padding:12px 12px 6px;flex:none}
.bars i{flex:1;height:6px;border-radius:3px;background:rgba(255,255,255,.35);overflow:hidden}
.story.dark .bars i{background:rgba(0,0,0,.25)}
.bars i::after{content:"";display:block;height:100%;width:0;background:currentColor;transition:width .35s}
.bars i.on::after{width:100%}
.top{display:flex;justify-content:space-between;align-items:center;padding:0 8px 0 16px;font-weight:800;flex:none}
.top button{background:none;border:0;color:inherit;font:inherit;font-size:30px;min-width:52px;min-height:48px;cursor:pointer}
.slide{flex:1;min-height:0;overflow-y:auto;padding:10px 20px;display:flex;flex-direction:column;animation:slideL .35s ease both;position:relative}
.slide .icon{font-size:84px;animation:pop .6s ease both;line-height:1}
.slide h2{font-size:32px;animation:in .5s .1s ease both}
.slide p{font-size:21px;animation:in .5s .25s ease both}
.tapzone{position:absolute;inset:60px 0 90px 0;display:flex;z-index:1}
.tapzone div{flex:1}.tapzone div:first-child{flex:.4}.tapzone div:last-child{flex:1}
.slide>*{position:relative;z-index:2}
.nav{flex:none;padding:8px 16px calc(12px);display:flex;gap:10px;z-index:3}
.nav .btn{margin:0;background:rgba(0,0,0,.35)}
.story.dark .nav .btn{background:rgba(0,0,0,.85);color:#fff}
.nav .btn.back{flex:0 0 72px}
.hint{text-align:center;font-size:14px;opacity:.85;padding-bottom:4px}
/* bubbles + options */
.bubble{background:#fff;color:#111;border-radius:22px 22px 22px 4px;padding:16px 18px;font-size:23px;font-weight:700;margin-bottom:14px;animation:pop .45s ease both}
.opt{display:block;width:100%;text-align:left;border:3px solid #fff;background:rgba(255,255,255,.14);color:inherit;border-radius:16px;padding:14px;margin-top:10px;font:inherit;font-size:18px;font-weight:600;min-height:60px;cursor:pointer;animation:in .4s ease both}
.story.dark .opt{border-color:#111;background:rgba(255,255,255,.4)}
.opt.good{background:#fff;color:#0a5a26;border-color:#fff}
.opt.bad{opacity:.7}
.fb{background:rgba(0,0,0,.4);border-radius:14px;padding:10px 14px;margin-top:10px;font-size:17px;animation:in .3s ease both}
.fb b{display:block}
.skus{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-top:6px}
.sku{border:4px solid #fff;border-radius:16px;padding:10px 6px;color:#fff;font:inherit;font-weight:800;font-size:16px;min-height:96px;cursor:pointer;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px}
.sku img{height:60px}
.sku.good{outline:5px solid #fff;animation:pop .4s}.sku.bad{opacity:.45}
.score{font-size:72px;font-weight:900;animation:pop .6s both}
/* lineup */
.deck{flex:1;min-height:0;display:flex;overflow-x:auto;scroll-snap-type:x mandatory;scrollbar-width:none;gap:0}
.deck::-webkit-scrollbar{display:none}
.card{flex:0 0 100%;scroll-snap-align:center;padding:6px 18px 10px;color:#fff;display:flex;flex-direction:column;align-items:center;text-align:center;overflow-y:auto}
.card img.can{height:min(34vh,300px);margin:6px 0;filter:drop-shadow(0 10px 12px rgba(0,0,0,.35));animation:float 4s ease-in-out infinite}
.card h2{margin:0}
.chips{display:flex;flex-wrap:wrap;gap:6px;justify-content:center;margin:8px 0}
.chip{background:rgba(255,255,255,.25);border-radius:20px;padding:4px 12px;font-weight:700;font-size:15px}
.chip.rosin{background:var(--gold);color:#111}
.pitch{background:#fff;color:#111;border-radius:16px;padding:12px 14px;text-align:left;width:100%;font-size:18px;font-weight:600}
.pitch small{display:block;text-transform:uppercase;letter-spacing:.06em;font-size:12px;color:#555;font-weight:800}
.card.dark{color:#111}.card.dark .chip{background:rgba(0,0,0,.15)}
.card .wob{width:min(60vw,240px);animation:float 4s ease-in-out infinite}
/* badge */
canvas.badge{width:100%;max-width:340px;align-self:center;border-radius:18px;box-shadow:0 8px 24px #0004;animation:pop .6s both}
.center{text-align:center}
@media (prefers-reduced-motion:reduce){*{animation-duration:.01s!important;transition-duration:.01s!important}}
@media (max-height:640px){.slide .icon{font-size:56px}.slide h2{font-size:26px}.slide p{font-size:18px}}
.slide::before,.slide::after{content:"";flex:1}
