:root{--bg:#1a0b2e;--pink:#ff3ea5;--cyan:#2ef2ff;--lime:#7dff4a;--red:#ff4a4a;--yel:#ffe14a;--gold:#ffd23e;--plush:#ffb6d9}
*{box-sizing:border-box;margin:0;padding:0}
html,body{width:100%;height:100%;overflow:hidden;background:var(--bg);font-family:'Fredoka',sans-serif;color:#fff;touch-action:none;user-select:none}
canvas{position:fixed;inset:0;width:100%;height:100%;display:block}
#controls{position:fixed;inset:0;display:flex;align-items:center;justify-content:center;pointer-events:none}
#controls>*{pointer-events:auto}
.panel{background:rgba(26,11,46,.9);border:4px solid #000;box-shadow:0 0 0 3px var(--pink),0 0 40px var(--pink);border-radius:22px;padding:22px 26px;max-width:94vw;max-height:90vh;overflow:auto;text-align:center;touch-action:pan-y}
.panel.wide{width:1000px}
.logo{font-family:'Bungee',cursive;font-size:clamp(34px,8vw,92px);line-height:.95;text-align:center;color:var(--yel);-webkit-text-stroke:3px #000;text-shadow:5px 5px 0 var(--pink),10px 10px 0 var(--cyan);animation:bop .5s infinite;pointer-events:none}
.logo span{display:block;color:var(--cyan);text-shadow:5px 5px 0 var(--pink),10px 10px 0 #000}
.sticker{position:absolute;right:-30px;top:-20px;background:var(--gold);color:#000;font-family:'Bungee';padding:8px 12px;border:3px solid #000;border-radius:50%;font-size:clamp(11px,1.6vw,18px);animation:spin 4s linear infinite;pointer-events:none}
@keyframes spin{from{transform:rotate(0)}to{transform:rotate(360deg)}}
@keyframes bop{0%{transform:scale(1.07)}40%{transform:scale(1)}}
.press{font-family:'Bungee';margin-top:30px;font-size:clamp(16px,3vw,28px);animation:blink 1s steps(2) infinite;text-align:center;color:#fff;-webkit-text-stroke:1px #000}
@keyframes blink{50%{opacity:.15}}
.btn{font-family:'Bungee';font-size:16px;padding:10px 18px;margin:5px;border:3px solid #000;border-radius:12px;background:var(--cyan);color:#000;cursor:pointer;box-shadow:4px 4px 0 #000;transition:transform .08s}
.btn:hover{transform:translate(-2px,-2px);box-shadow:6px 6px 0 #000}
.btn:active{transform:translate(2px,2px);box-shadow:1px 1px 0 #000}
.btn:disabled{opacity:.4}
.btn.pink{background:var(--pink);color:#fff}.btn.lime{background:var(--lime)}.btn.yel{background:var(--yel)}
h2{font-family:'Bungee';font-size:clamp(22px,4vw,40px);color:var(--yel);-webkit-text-stroke:2px #000;text-shadow:3px 3px 0 var(--pink);margin-bottom:10px}
.weeks{display:flex;gap:14px;justify-content:center;flex-wrap:wrap;margin:10px 0}
.card{width:170px;padding:12px;border:4px solid #000;border-radius:16px;background:#2b1250;cursor:pointer;position:relative;transition:transform .15s}
.card.sel{box-shadow:0 0 0 4px var(--cyan),0 0 30px var(--cyan);transform:scale(1.05) rotate(-1deg)}
.card .face{height:80px;font-family:'Bungee';font-size:40px;display:flex;align-items:center;justify-content:center}
.card .nm{font-family:'Bungee';font-size:15px}.card small{opacity:.75;display:block}
.card .clr{position:absolute;top:6px;right:6px;font-style:normal;font-family:'Bungee';font-size:10px;background:var(--lime);color:#000;padding:2px 5px;border-radius:6px;border:2px solid #000}
.card.claw{background:linear-gradient(160deg,rgba(180,230,255,.18),rgba(255,182,217,.12) 40%,#3a1050);border-color:var(--gold)}
.card.claw::before{content:'';position:absolute;bottom:8px;right:10px;width:22px;height:6px;background:#000;border:2px solid var(--gold);border-radius:3px}
.card.lock{filter:grayscale(1) brightness(.5)}
.card.lock::after{content:'LOCKED';position:absolute;inset:0;display:flex;align-items:center;justify-content:center;font-family:'Bungee';font-size:26px;color:var(--yel);-webkit-text-stroke:1px #000;transform:rotate(-12deg)}
.clawweek{border:4px solid #000;box-shadow:0 0 0 3px var(--gold);border-radius:18px;margin:14px 0;padding:8px;background:rgba(255,210,62,.06);position:relative}
.marquee{font-family:'Bungee';color:var(--gold);font-size:16px;display:flex;justify-content:space-between;align-items:center;padding:0 8px}
.marquee b{color:var(--pink);font-size:12px;animation:blink .8s steps(2) infinite}
.clawweek.wlock::before{content:'';position:absolute;left:50%;top:-4px;width:4px;height:70px;background:#ccc;animation:dangle 1.6s ease-in-out infinite;transform-origin:top;z-index:2}
.clawweek.wlock::after{content:'';position:absolute;left:calc(50% - 16px);top:62px;width:28px;height:22px;border:5px solid #ddd;border-top:none;border-radius:0 0 14px 14px;animation:dangle2 1.6s ease-in-out infinite;z-index:2}
@keyframes dangle{0%,100%{height:40px}50%{height:80px}}
@keyframes dangle2{0%,100%{top:34px}50%{top:74px}}
.shelf{margin:8px auto;padding:8px;border:3px dashed var(--plush);border-radius:12px;max-width:640px;font-family:'Bungee';font-size:13px;color:var(--plush)}
.plush{display:inline-block;width:14px;height:14px;border-radius:50%;border:2px solid #000;margin:2px;box-shadow:-5px -6px 0 -3px #000}
.diff{display:flex;align-items:center;justify-content:center;gap:10px;margin:8px 0;font-family:'Bungee';font-size:24px}
.grade{font-family:'Bungee';font-size:110px;line-height:1;color:var(--yel);-webkit-text-stroke:4px #000;text-shadow:6px 6px 0 var(--pink);animation:slam .5s cubic-bezier(.2,2,.4,1);position:relative}
.grade.clawdrop{animation:drop 1.1s cubic-bezier(.3,1.5,.5,1);color:var(--gold)}
.grade.clawdrop::before{content:'';position:absolute;left:50%;top:-200px;width:4px;height:200px;background:#ccc;-webkit-text-stroke:0}
@keyframes drop{from{transform:translateY(-300px)}}
@keyframes slam{from{transform:scale(4) rotate(20deg);opacity:0}}
table{margin:10px auto;border-collapse:collapse;font-size:17px}td{padding:3px 12px}
.quote{font-style:italic;margin:10px 0;color:var(--cyan);max-width:420px;margin-inline:auto}
label{display:block;margin:10px 0;font-family:'Bungee';font-size:13px}
input[type=range]{width:220px;accent-color:var(--pink)}
footer{position:fixed;bottom:4px;left:8px;font-size:12px;z-index:5}
footer a{color:var(--cyan);text-shadow:0 0 6px var(--cyan)}
#auth-status{position:fixed;top:6px;right:10px;font-size:12px;opacity:.8;z-index:5}
.lb td:first-child{font-family:'Bungee'}