:root{--bg:#ebe2ce;--dot:#3a2c1c1a;--card:#fbf7ee;--card-2:#f1e8d5;--ink:#2c2114;--ink-dim:#93826a;--line:#e0d4bc;--line-strong:#2c2114;--tile-top:#fff;--tile-bot:#fbf4e6;--tile-base:#d8c7a4;--tile-ink:#2c2114;--sel-top:#3a4a6b;--sel-bot:#283651;--sel-base:#18223a;--c1-top:#ffce45;--c1-bot:#f2a100;--c1-base:#c47a00;--c2-top:#66c77a;--c2-bot:#2e9e55;--c2-base:#1e6e3a;--c3-top:#5ba8e8;--c3-bot:#2f77c6;--c3-base:#1e5294;--c4-top:#b07bd6;--c4-bot:#8447b6;--c4-base:#5e2e85;--heart:#e8556a;--heart-base:#b23347;--radius:16px;--depth:6px;--gap:16px;--font:"Nunito", system-ui, sans-serif;--display:"Baloo 2", var(--font);--anim:1;--shadow-card:0 1px 0 var(--line), 0 18px 34px -22px #2c21148c}.theme-dark{--bg:#211c15;--dot:#fff6e60d;--card:#2c261d;--card-2:#362f24;--ink:#f6efe0;--ink-dim:#a89a82;--line:#423a2c;--line-strong:#000;--tile-top:#fbf6eb;--tile-bot:#efe5d2;--tile-base:#b0a082;--tile-ink:#2c2114;--sel-top:#6e8bc4;--sel-bot:#4c6499;--sel-base:#2e3e63;--shadow-card:0 0 0 1px #00000060, 0 26px 50px -24px #000c}*{box-sizing:border-box;margin:0;padding:0}html,body{background:var(--bg);color:var(--ink);font-family:var(--font);-webkit-font-smoothing:antialiased;min-height:100%}body{background-color:var(--bg);background-image:radial-gradient(var(--dot) 1.4px, transparent 1.5px);background-position:-11px -11px;background-size:22px 22px;background-attachment:fixed}.page{flex-direction:column;align-items:center;min-height:100vh;display:flex}.center{width:100%;max-width:564px;margin:0 auto}.topbar{justify-content:space-between;align-items:center;gap:14px;margin:8px 0 18px;display:flex}.brand{align-items:center;gap:13px;display:flex}.logo-mark{background:var(--card);border:2px solid var(--line-strong);width:46px;height:46px;box-shadow:4px 4px 0 var(--line-strong);border-radius:13px;flex:none;grid-template-columns:1fr 1fr;gap:3px;padding:6px;display:grid;rotate:-3deg}.logo-mark i{border-radius:4px;display:block}.logo-mark i:first-child{background:var(--c1-bot)}.logo-mark i:nth-child(2){background:var(--c2-bot)}.logo-mark i:nth-child(3){background:var(--c3-bot)}.logo-mark i:nth-child(4){background:var(--c4-bot)}.brand h1{font-family:var(--display);letter-spacing:-.01em;font-size:29px;font-weight:800;line-height:1}.brand .tag{color:var(--ink-dim);letter-spacing:.01em;margin-top:4px;font-size:12px;font-weight:800}.hbtns{align-items:center;gap:9px;display:flex}.streak{background:var(--card);border:2px solid var(--line-strong);box-shadow:3px 3px 0 var(--line-strong);color:#e07a00;border-radius:12px;align-items:center;gap:6px;padding:9px 13px;font-size:15px;font-weight:900;display:flex}.iconbtn{cursor:pointer;background:var(--card);width:42px;height:42px;color:var(--ink);border:2px solid var(--line-strong);box-shadow:3px 3px 0 var(--line-strong);font-size:18px;font-weight:900;font-family:var(--display);border-radius:12px;place-items:center;transition:transform .1s,box-shadow .1s;display:grid}.iconbtn:hover{box-shadow:4px 4px 0 var(--line-strong);transform:translate(-1px,-1px)}.iconbtn:active{box-shadow:0 0 0 var(--line-strong);transform:translate(3px,3px)}.gamecard{background:var(--card);border:2px solid var(--line-strong);box-shadow:8px 8px 0 var(--line-strong);border-radius:24px;padding:26px 26px 30px}.subhead{text-align:center;margin-bottom:20px}.subhead .date{letter-spacing:.16em;text-transform:uppercase;color:var(--ink-dim);font-size:11px;font-weight:900}.subhead .instr{font-family:var(--display);color:var(--ink);margin-top:5px;font-size:19px;font-weight:700}.lives{justify-content:center;align-items:center;gap:10px;margin:6px 0 24px;display:flex}.lives .lab{color:var(--ink-dim);text-transform:uppercase;letter-spacing:.1em;margin-right:5px;font-size:11px;font-weight:900}.heart{width:22px;height:22px;transition:transform .2s;position:relative}.heart svg{width:100%;height:100%;filter:drop-shadow(0 2.5px 0 var(--heart-base));display:block}.heart.lost{animation:heart-pop calc(.5s * var(--anim)) ease forwards}.heart.lost svg{filter:none;opacity:.9;fill:var(--line)!important}@keyframes heart-pop{0%{transform:scale(1)}35%{transform:scale(1.5)rotate(-12deg)}to{transform:scale(1)}}.solved{margin-bottom:var(--gap);text-align:center;color:#fff;border:2px solid var(--line-strong);box-shadow:0 var(--depth) 0 var(--base), 4px calc(var(--depth) + 4px) 0 var(--line-strong);background:linear-gradient(180deg, var(--top), var(--bot));animation:solved-drop calc(.5s * var(--anim)) cubic-bezier(.2,1.3,.5,1);border-radius:14px;padding:13px 14px;position:relative;overflow:hidden}.solved .cat{font-family:var(--display);letter-spacing:.01em;text-shadow:0 1.5px #00000038;font-size:16px;font-weight:800}.solved .ws{opacity:.95;letter-spacing:.05em;margin-top:2px;font-size:12.5px;font-weight:800}.solved.c1{--top:var(--c1-top);--bot:var(--c1-bot);--base:var(--c1-base);color:#4a3100}.solved.c1 .cat{text-shadow:0 1.5px #ffffff4d}.solved.c2{--top:var(--c2-top);--bot:var(--c2-bot);--base:var(--c2-base)}.solved.c3{--top:var(--c3-top);--bot:var(--c3-bot);--base:var(--c3-base)}.solved.c4{--top:var(--c4-top);--bot:var(--c4-bot);--base:var(--c4-base)}@keyframes solved-drop{0%{transform:translateY(-12px)scale(.97)}to{transform:none}}.grid{gap:var(--gap);grid-template-columns:repeat(4,minmax(0,1fr));display:grid}.tile{cursor:pointer;-webkit-user-select:none;user-select:none;aspect-ratio:1;border-radius:var(--radius);text-align:center;background:linear-gradient(180deg, var(--tile-top), var(--tile-bot));min-width:0;color:var(--tile-ink);letter-spacing:-.01em;border:2px solid var(--line-strong);box-shadow:0 var(--depth) 0 var(--tile-base), 0 calc(var(--depth) + 2px) 0 var(--line-strong);place-items:center;padding:4px;font-size:clamp(12px,2.2vw,17px);font-weight:900;transition:transform .13s cubic-bezier(.2,1.4,.5,1),box-shadow .13s;display:grid;position:relative}.tile span{pointer-events:none;line-height:1.05}.tile:hover{box-shadow:0 calc(var(--depth) + 2px) 0 var(--tile-base), 0 calc(var(--depth) + 4px) 0 var(--line-strong);transform:translateY(-2px)}.tile.sel{background:linear-gradient(180deg, var(--sel-top), var(--sel-bot));color:#fff;text-shadow:0 1px #0000004d;box-shadow:0 var(--depth) 0 var(--sel-base), 0 calc(var(--depth) + 2px) 0 var(--line-strong);animation:tile-pop calc(.32s * var(--anim)) cubic-bezier(.2,1.5,.4,1)}.tile.sel:hover{transform:translateY(-2px)}@keyframes tile-pop{0%{transform:scale(1)}45%{transform:scale(1.12)translateY(-3px)}to{transform:scale(1)}}.tile:active{transform:translateY(var(--depth));box-shadow:0 0 0 var(--line-strong)}.tile.shake{animation:tile-shake calc(.5s * var(--anim)) cubic-bezier(.36,.07,.19,.97)}@keyframes tile-shake{10%,90%{transform:translate(-2px)}20%,80%{transform:translate(4px)}30%,50%,70%{transform:translate(-7px)}40%,60%{transform:translate(7px)}}.tile.wobble{animation:tile-wobble calc(.6s * var(--anim)) ease}@keyframes tile-wobble{0%,to{transform:rotate(0)}20%{transform:rotate(-4deg)}40%{transform:rotate(3deg)}60%{transform:rotate(-2deg)}80%{transform:rotate(1deg)}}.tile.jump{animation:tile-jump calc(.5s * var(--anim)) cubic-bezier(.2,1.6,.4,1) both}@keyframes tile-jump{0%{transform:translateY(0)}40%{transform:translateY(-22px)scale(1.08)}to{opacity:0;transform:translateY(0)scale(.6)}}.actions{flex-wrap:wrap;justify-content:center;gap:10px;margin-top:28px;display:flex}.btn{cursor:pointer;font-family:var(--display);letter-spacing:.01em;color:var(--ink);background:var(--card-2);border:2px solid var(--line-strong);box-shadow:0 4px 0 var(--line-strong);border-radius:14px;justify-content:center;align-items:center;gap:7px;padding:12px 22px;font-size:16px;font-weight:700;transition:transform .1s,box-shadow .1s,opacity .15s;display:inline-flex}.btn:hover{box-shadow:0 5px 0 var(--line-strong);transform:translateY(-1px)}.btn:active{box-shadow:0 0 0 var(--line-strong);transform:translateY(4px)}.btn:disabled{opacity:.4;cursor:not-allowed;box-shadow:0 4px 0 var(--line-strong);transform:none}.btn.primary{color:#4a3100;background:linear-gradient(180deg, var(--c1-top), var(--c1-bot));box-shadow:0 5px 0 var(--c1-base)}.btn.primary:not(:disabled):hover{filter:brightness(1.04);box-shadow:0 6px 0 var(--c1-base)}.btn.ghost{box-shadow:0 4px 0 var(--line);border-color:var(--line);color:var(--ink-dim);background:0 0}.btn.ghost:hover{box-shadow:0 5px 0 var(--line)}.btn.ghost:active{box-shadow:0 0 0 var(--line)}.fx-layer{pointer-events:none;z-index:60;position:fixed;inset:0;overflow:hidden}.particle{will-change:transform, opacity;border-radius:3px;position:absolute}.confetti-canvas{pointer-events:none;z-index:70;position:fixed;inset:0}.toast-wrap{z-index:80;flex-direction:column;align-items:center;gap:8px;display:flex;position:fixed;top:80px;left:50%;transform:translate(-50%)}.toast{background:var(--ink);color:var(--card);font-family:var(--display);border:2px solid var(--line-strong);box-shadow:0 4px 0 var(--line-strong);animation:toast-in calc(.35s * var(--anim)) cubic-bezier(.2,1.4,.4,1), toast-out .4s ease 1.5s forwards;border-radius:999px;align-items:center;gap:8px;padding:11px 20px;font-size:15px;font-weight:700;display:flex}@keyframes toast-in{0%{opacity:0;transform:translateY(-14px)scale(.9)}to{opacity:1;transform:none}}@keyframes toast-out{to{opacity:0;transform:translateY(-10px)}}.overlay{z-index:90;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);background:#22190c8c;place-items:center;padding:20px;animation:.25s fade;display:grid;position:fixed;inset:0}@keyframes fade{0%{opacity:0}}.modal{background:var(--card);border:2px solid var(--line-strong);width:100%;max-width:440px;box-shadow:10px 10px 0 var(--line-strong);text-align:center;animation:modal-pop calc(.45s * var(--anim)) cubic-bezier(.2,1.4,.4,1);border-radius:24px;padding:30px 28px 26px}@keyframes modal-pop{0%{opacity:0;transform:scale(.85)translateY(20px)}to{opacity:1;transform:none}}.modal h2{font-family:var(--display);letter-spacing:-.01em;font-size:31px;font-weight:800}.modal .sub{color:var(--ink-dim);margin-top:5px;font-size:14px;font-weight:800}.crest{color:#fff;border:2px solid var(--line-strong);width:70px;height:70px;box-shadow:0 5px 0 var(--cr-base), 6px 9px 0 -2px var(--line-strong);background:linear-gradient(180deg, var(--cr-top), var(--cr-bot));animation:crest-pop calc(.5s * var(--anim)) cubic-bezier(.2,1.5,.4,1) 50ms both;border-radius:20px;place-items:center;margin:0 auto 16px;display:grid;rotate:-3deg}.crest.gold{--cr-top:#ffce45;--cr-bot:#f2a100;--cr-base:#c47a00;color:#4a3100}.crest.violet{--cr-top:#b07bd6;--cr-bot:#8447b6;--cr-base:#5e2e85}@keyframes crest-pop{0%{transform:scale(0)rotate(20deg)}to{transform:scale(1)}}.miniwrap{flex-direction:column;gap:6px;width:max-content;margin:22px auto;display:flex}.minirow{gap:6px;display:flex}.minidot{border:2px solid var(--line-strong);width:30px;height:30px;box-shadow:0 3px 0 var(--base);background:linear-gradient(180deg,var(--top),var(--bot));border-radius:7px}.minidot.c1{--top:var(--c1-top);--bot:var(--c1-bot);--base:var(--c1-base)}.minidot.c2{--top:var(--c2-top);--bot:var(--c2-bot);--base:var(--c2-base)}.minidot.c3{--top:var(--c3-top);--bot:var(--c3-bot);--base:var(--c3-base)}.minidot.c4{--top:var(--c4-top);--bot:var(--c4-bot);--base:var(--c4-base)}.statline{justify-content:center;gap:26px;margin:20px 0 22px;display:flex}.stat .n{font-family:var(--display);font-size:32px;font-weight:800;line-height:1}.stat .l{color:var(--ink-dim);text-transform:uppercase;letter-spacing:.08em;margin-top:6px;font-size:11px;font-weight:900}.beat{color:#e07a00;margin-bottom:20px;font-size:15px;font-weight:900}.modal .actions{margin-top:6px}.reveal{flex-direction:column;gap:16px;margin:22px 0 6px;display:flex}.reveal .solved{margin:0;animation:none}.badge-grid{grid-template-columns:repeat(2,1fr);gap:12px;margin:22px 0;display:grid}.badge{background:var(--card-2);border:2px solid var(--line);text-align:left;border-radius:13px;align-items:center;gap:11px;padding:13px 12px;display:flex}.badge.locked{opacity:.5;filter:grayscale(.7)}.badge .ic{color:#fff;border:2px solid var(--line-strong);width:38px;height:38px;box-shadow:0 3px 0 var(--ic-base);background:linear-gradient(180deg, var(--ic-top), var(--ic-bot));border-radius:11px;flex:none;place-items:center;display:grid}.badge.b1 .ic{--ic-top:#ffce45;--ic-bot:#f2a100;--ic-base:#c47a00;color:#4a3100}.badge.b2 .ic{--ic-top:#ff9f45;--ic-bot:#f26a00;--ic-base:#b84e00}.badge.b3 .ic{--ic-top:#5ba8e8;--ic-bot:#2f77c6;--ic-base:#1e5294}.badge.b4 .ic{--ic-top:#b07bd6;--ic-bot:#8447b6;--ic-base:#5e2e85}.badge.b5 .ic{--ic-top:#66c77a;--ic-bot:#2e9e55;--ic-base:#1e6e3a}.badge.b6 .ic{--ic-top:#ff7e8e;--ic-bot:#e8556a;--ic-base:#b23347}.badge .bt{font-family:var(--display);font-size:13px;font-weight:700;line-height:1.15}.badge>div{flex-direction:column;gap:3px;min-width:0;display:flex}.badge .bd{color:var(--ink-dim);font-size:11px;font-weight:700}.helplist{text-align:left;flex-direction:column;gap:14px;margin:20px 0 24px;display:flex}.helpitem{align-items:flex-start;gap:12px;display:flex}.helpitem .num{width:27px;height:27px;font-family:var(--display);background:var(--card-2);border:2px solid var(--line-strong);border-radius:8px;flex:none;place-items:center;font-size:14px;font-weight:700;display:grid}.helpitem p{color:var(--ink);font-size:14px;font-weight:600;line-height:1.45}.helpitem b{color:var(--ink)}.foot{color:var(--ink-dim);text-align:center;opacity:.8;padding:10px 0 26px;font-size:12px;font-weight:800}@media (prefers-reduced-motion:reduce){.tile.sel,.tile.shake,.tile.wobble,.tile.jump,.solved,.heart.lost,.toast,.modal,.crest,.overlay{animation:none!important}.tile,.btn,.iconbtn{transition:none!important}}
