:root{--bg:#fff8f2;--ink:#2b2233;--muted:#6f6477;--card:#ffffff;--accent:#ff7a8a;--accent2:#7cc6b8;--line:#eadfd6;--r:16px}
*{box-sizing:border-box}body{margin:0;font-family:ui-rounded,"SF Pro Rounded",system-ui,-apple-system,"Segoe UI",sans-serif;background:var(--bg);color:var(--ink);line-height:1.5}
a{color:inherit}.wrap{max-width:720px;margin:0 auto;padding:20px}
header.hero{text-align:center;padding:36px 20px 8px}.logo{font-weight:800;font-size:28px;letter-spacing:-.5px}.logo span{color:var(--accent)}
h1{font-size:clamp(28px,6vw,40px);line-height:1.15;margin:14px 0 8px}.sub{color:var(--muted);font-size:18px;margin:0 auto;max-width:520px}
.card{background:var(--card);border:1px solid var(--line);border-radius:var(--r);padding:18px;margin:18px 0;box-shadow:0 2px 0 var(--line)}
.row{display:flex;gap:8px;flex-wrap:wrap}.row>*{flex:1 1 140px}
input,select,button{font:inherit;border-radius:12px;border:1px solid var(--line);padding:11px 12px;background:#fff;color:var(--ink)}
button{cursor:pointer;border:0;background:var(--ink);color:#fff;font-weight:700}button.ghost{background:#fff;color:var(--ink);border:1px solid var(--line)}
button.pink{background:var(--accent)}button.small{padding:6px 10px;font-size:14px}
.shelf-tabs{display:flex;gap:8px;overflow-x:auto;padding-bottom:4px}.shelf-tabs button{white-space:nowrap}.shelf-tabs button.on{background:var(--accent)}
.progress{height:12px;background:#f1e7df;border-radius:99px;overflow:hidden;margin:8px 0}.progress i{display:block;height:100%;background:linear-gradient(90deg,var(--accent2),var(--accent));width:0;transition:width .4s}
.stats{display:flex;gap:14px;flex-wrap:wrap;color:var(--muted);font-size:14px}
.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(120px,1fr));gap:10px;margin-top:12px}
.tile{border:1px solid var(--line);border-radius:14px;padding:10px;text-align:center;background:#fff;cursor:pointer;user-select:none;position:relative;transition:transform .1s}
.tile:active{transform:scale(.97)}.blob{width:56px;height:56px;border-radius:40% 60% 55% 45%;margin:4px auto 8px;display:grid;place-items:center;font-weight:800;color:#fff;font-size:20px;opacity:.35}
.tile.owned .blob{opacity:1}.tile.dupe .blob{opacity:1;outline:3px dashed var(--ink);outline-offset:2px}
.tile .nm{font-size:14px;font-weight:600;word-break:break-word}.tile .st{font-size:12px;color:var(--muted)}.tile .sec{position:absolute;top:6px;right:8px;font-size:12px}
.tile .x{position:absolute;top:4px;left:6px;font-size:12px;color:var(--muted);background:none;padding:2px 4px}
.cta{background:linear-gradient(180deg,#fff,#fff3ea)}.price{font-size:22px;font-weight:800}.fine{font-size:13px;color:var(--muted)}
.ok{background:#e9f7f3;border:1px solid var(--accent2);padding:10px 12px;border-radius:12px;display:none}
footer{text-align:center;color:var(--muted);font-size:13px;padding:24px 20px 40px}.hide{display:none!important}
select{min-width:0;max-width:100%;text-overflow:ellipsis}.shelf-tabs button{max-width:220px;overflow:hidden;text-overflow:ellipsis}

/* honeypot: off-screen, not display:none, so simple bots still see and fill it */
.hp{position:absolute!important;left:-10000px!important;top:auto;width:1px;height:1px;overflow:hidden}
