:root{--u: calc(100vw / 720);--sat: env(safe-area-inset-top, 0px);--sab: env(safe-area-inset-bottom, 0px);--ink: #2d2621;--ink-soft: #706359;--paper: #ffffff;--accent: #ff6b3d;--accent-dark: #e2512a;--good: #3fb56b;--reward: #6c4df2;--font: -apple-system, BlinkMacSystemFont, "Apple SD Gothic Neo", "Pretendard", "Noto Sans KR", "Malgun Gothic", sans-serif}*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}html,body{margin:0;height:100%;overflow:hidden;background:#f7f3ed;font-family:var(--font);color:var(--ink);-webkit-user-select:none;user-select:none;touch-action:pan-x pan-y;overscroll-behavior:none}#app{position:fixed;inset:0}#stage{position:absolute;inset:0}#stage canvas{display:block;touch-action:none}#hud{position:absolute;left:0;right:0;top:var(--sat);height:calc(var(--u) * 96);display:flex;align-items:center;justify-content:center;pointer-events:none;z-index:5}#app[data-screen=loading] #hud,#app[data-screen=loading] #boosters{visibility:hidden}.round-btn{pointer-events:auto;position:absolute;left:calc(var(--u) * 22);top:calc(var(--u) * 18);width:max(44px,calc(var(--u) * 64));height:max(44px,calc(var(--u) * 64));border:0;border-radius:calc(var(--u) * 22);background:#ffffffeb;box-shadow:0 calc(var(--u) * 4) 0 #7860482e;display:grid;place-items:center}.round-btn:active{transform:translateY(calc(var(--u) * 3));box-shadow:0 calc(var(--u) * 1) 0 #7860482e}.pause-icon{width:calc(var(--u) * 22);height:calc(var(--u) * 26);border-left:calc(var(--u) * 8) solid var(--ink);border-right:calc(var(--u) * 8) solid var(--ink);border-radius:calc(var(--u) * 2)}.title-wrap{display:flex;flex-direction:column;align-items:center;gap:calc(var(--u) * 4)}#level-title{margin:0;font-size:calc(var(--u) * 40);font-weight:900;letter-spacing:-.02em;color:#5a4434;-webkit-text-stroke:calc(var(--u) * 7) #fff;paint-order:stroke fill;text-shadow:0 calc(var(--u) * 4) calc(var(--u) * 6) rgba(110,86,64,.25)}.hard-badge{font-size:max(14px,calc(var(--u) * 20));font-weight:800;color:#fff;background:linear-gradient(#ff5a4a,#e03a2c);padding:calc(var(--u) * 3) calc(var(--u) * 14);border-radius:999px;box-shadow:0 calc(var(--u) * 3) 0 #961e1459}.tip{position:absolute;left:50%;transform:translate(-50%);bottom:calc(var(--sab) + var(--u) * 168);margin:0;padding:calc(var(--u) * 12) calc(var(--u) * 26);font-size:max(14px,calc(var(--u) * 26));font-weight:800;color:var(--ink);background:#ffffffeb;border-radius:999px;box-shadow:0 calc(var(--u) * 4) calc(var(--u) * 14) #5a3c1e24;white-space:nowrap;z-index:6;pointer-events:none;animation:tip-bob 1.6s ease-in-out infinite}@keyframes tip-bob{50%{transform:translate(-50%,calc(var(--u) * -6))}}#boosters{position:absolute;left:0;right:0;bottom:calc(var(--sab) + var(--u) * 16);height:calc(var(--u) * 124);display:flex;justify-content:center;gap:calc(var(--u) * 26);z-index:5}.booster{position:relative;width:calc(var(--u) * 176);height:calc(var(--u) * 116);border:0;border-radius:calc(var(--u) * 30);color:#fff;font-family:var(--font);font-weight:800;font-size:max(14px,calc(var(--u) * 24));display:flex;flex-direction:column;align-items:center;justify-content:center;gap:calc(var(--u) * 2);box-shadow:0 calc(var(--u) * 7) 0 #00000029,inset 0 calc(var(--u) * 3) 0 #ffffff59;transition:transform .08s}.booster:active{transform:translateY(calc(var(--u) * 4))}.booster[data-kind=slot]{background:linear-gradient(#57c98a,#33a866)}.booster[data-kind=hammer]{background:linear-gradient(#ffa24d,#f07c1e)}.booster[data-kind=double]{background:linear-gradient(#6d98ff,#4a6fe8)}.booster.locked{background:linear-gradient(#cbbfb2,#b3a697)}.booster.used{opacity:.55}.booster.armed{outline:calc(var(--u) * 6) solid #fff;outline-offset:calc(var(--u) * 2);animation:armed .8s ease-in-out infinite}@keyframes armed{50%{transform:translateY(calc(var(--u) * -5))}}.b-icon{width:calc(var(--u) * 54);height:calc(var(--u) * 54);display:block}.b-icon svg{width:100%;height:100%;display:block}.b-label{text-shadow:0 calc(var(--u) * 2) 0 rgba(0,0,0,.18)}.b-badge{position:absolute;top:calc(var(--u) * -10);right:calc(var(--u) * -8);min-width:calc(var(--u) * 42);height:calc(var(--u) * 42);padding:0 calc(var(--u) * 10);border-radius:999px;background:#fff;color:var(--ink);font-size:calc(var(--u) * 22);font-weight:900;display:grid;place-items:center;box-shadow:0 calc(var(--u) * 3) calc(var(--u) * 6) #0000002e}.b-badge.ad{background:#ffe14d;color:#3a2a00;font-size:calc(var(--u) * 19)}.b-badge.lock{background:#6b5d51;color:#fff;font-size:calc(var(--u) * 18)}.loading{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:calc(var(--u) * 26);background:#f7f3ed;z-index:20;font-weight:700;font-size:calc(var(--u) * 28);color:var(--ink-soft)}.loading[hidden]{display:none}.loader{display:flex;gap:calc(var(--u) * 16)}.loader span{width:calc(var(--u) * 28);height:calc(var(--u) * 28);border-radius:50%;background:var(--accent);animation:bounce .9s ease-in-out infinite}.loader span:nth-child(2){background:#4a6fe8;animation-delay:.15s}.loader span:nth-child(3){background:#fad02c;animation-delay:.3s}@keyframes bounce{50%{transform:translateY(calc(var(--u) * -22))}}.sheet{position:absolute;inset:0;z-index:30;display:flex;align-items:center;justify-content:center;padding:calc(var(--u) * 40);background:#3a2a1e6b;animation:fade .18s ease-out}.sheet[hidden]{display:none}@keyframes fade{0%{opacity:0}}.card{width:100%;max-width:calc(var(--u) * 600);background:var(--paper);border-radius:calc(var(--u) * 44);padding:calc(var(--u) * 46) calc(var(--u) * 40) calc(var(--u) * 36);display:flex;flex-direction:column;align-items:stretch;gap:calc(var(--u) * 18);text-align:center;box-shadow:0 calc(var(--u) * 16) calc(var(--u) * 40) #3c281440;animation:pop .26s cubic-bezier(.2,1.4,.4,1)}@keyframes pop{0%{transform:scale(.86);opacity:0}}.card h2{margin:0;font-size:calc(var(--u) * 44);font-weight:900;letter-spacing:-.02em}.card .sub{margin:0 0 calc(var(--u) * 8);font-size:max(14px,calc(var(--u) * 26));color:var(--ink-soft);font-weight:600;line-height:1.4}#daily-sub{word-break:keep-all}.card .record{margin:calc(var(--u) * -4) 0 calc(var(--u) * 8);font-size:max(14px,calc(var(--u) * 26));color:#1976d2;font-weight:700}.btn{border:0;border-radius:calc(var(--u) * 28);min-height:max(44px,calc(var(--u) * 96));font-family:var(--font);font-size:max(14px,calc(var(--u) * 30));font-weight:800;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:calc(var(--u) * 4);transition:transform .08s}.btn:active{transform:translateY(calc(var(--u) * 3))}.btn small{font-size:max(14px,calc(var(--u) * 21));font-weight:700;opacity:.9}.btn[hidden]{display:none}.btn.primary{background:linear-gradient(#ff8a52,var(--accent-dark));color:#fff;box-shadow:0 calc(var(--u) * 6) 0 #b93d1c}.btn.big{min-height:calc(var(--u) * 110);font-size:calc(var(--u) * 34)}.btn.reward{background:linear-gradient(#8c72ff,var(--reward));color:#fff;box-shadow:0 calc(var(--u) * 6) 0 #4a31c0;flex-direction:row;gap:calc(var(--u) * 12)}.btn.reward:disabled{opacity:.55}.btn.ghost{background:#f1e7da;color:var(--ink)}.btn.text{background:transparent;color:var(--ink-soft);min-height:max(44px,calc(var(--u) * 70));font-size:max(14px,calc(var(--u) * 26))}.ad-badge{font-size:max(14px,calc(var(--u) * 20));font-weight:900;color:#3a2a00;background:#ffe14d;border-radius:calc(var(--u) * 10);padding:calc(var(--u) * 4) calc(var(--u) * 10)}.toggles{display:flex;justify-content:center;gap:calc(var(--u) * 14);flex-wrap:wrap}.toggle{min-height:44px;box-sizing:border-box;cursor:pointer;display:flex;align-items:center;gap:calc(var(--u) * 10);font-size:max(14px,calc(var(--u) * 26));font-weight:700;padding:calc(var(--u) * 12) calc(var(--u) * 18);border-radius:999px;background:#f1e7da}.toggle[hidden]{display:none}.toggle input{width:calc(var(--u) * 30);height:calc(var(--u) * 30);accent-color:var(--accent)}.sheet-art{height:calc(var(--u) * 150);margin-top:calc(var(--u) * -10);background-repeat:no-repeat;background-position:center;background-size:contain}.fail-art{height:calc(var(--u) * 110);filter:drop-shadow(0 calc(var(--u) * 6) calc(var(--u) * 12) rgba(60,40,20,.2))}.sheet.win .card{background:linear-gradient(180deg,#fff,#fffbf2);border:calc(var(--u) * 3) solid #ffd54f;box-shadow:0 calc(var(--u) * 16) calc(var(--u) * 44) #ffb30038}.sheet.win h2{color:#d84315}.sheet.win .sheet-art{height:calc(var(--u) * 170);filter:drop-shadow(0 calc(var(--u) * 8) calc(var(--u) * 16) rgba(255,160,0,.35))}.unlock-progress{background:#f1e7da;border-radius:calc(var(--u) * 22);padding:calc(var(--u) * 16) calc(var(--u) * 22);display:flex;flex-direction:column;gap:calc(var(--u) * 10)}.unlock-progress[hidden]{display:none}.up-row{display:flex;flex-direction:column;align-items:flex-start;gap:4px;text-align:left;font-size:max(14px,calc(var(--u) * 24));font-weight:800}.up-row span:last-child{color:var(--ink-soft);font-weight:700}.up-track{height:calc(var(--u) * 18);border-radius:999px;background:#e3d5c4;overflow:hidden}.up-fill{height:100%;width:0;border-radius:999px;background:linear-gradient(90deg,#ffb24d,#ff6b3d);transition:width .6s ease-out}.unlock-icon{width:calc(var(--u) * 150);height:calc(var(--u) * 150);margin:0 auto;border-radius:calc(var(--u) * 40);display:grid;place-items:center}.unlock-icon svg{width:62%;height:62%}.unlock-icon[data-kind=slot]{background:linear-gradient(#57c98a,#33a866)}.unlock-icon[data-kind=hammer]{background:linear-gradient(#ffa24d,#f07c1e)}.unlock-icon[data-kind=double]{background:linear-gradient(#6d98ff,#4a6fe8)}.unlock-icon[data-kind=gift]{background:linear-gradient(#ff8a9a,#f0506a)}.toast{position:absolute;left:50%;top:calc(var(--sat) + var(--u) * 470);transform:translate(-50%);z-index:40;background:#3a2a1ee6;color:#fff;font-size:max(14px,calc(var(--u) * 26));font-weight:700;padding:calc(var(--u) * 16) calc(var(--u) * 28);border-radius:calc(var(--u) * 40);width:max-content;max-width:calc(100vw - var(--u) * 64);text-align:center;line-height:1.35;word-break:keep-all;pointer-events:none;animation:fade .15s ease-out}.toast[hidden]{display:none}#app[data-screen=win] .toast{top:auto;bottom:max(8px,calc(var(--sab) + 8px))}.gift{margin:0 auto;display:inline-flex;align-items:center;gap:calc(var(--u) * 10);padding:calc(var(--u) * 10) calc(var(--u) * 22) calc(var(--u) * 10) calc(var(--u) * 10);border-radius:999px;background:#fff3d6;color:#7a4b00;font-size:max(14px,calc(var(--u) * 26));font-weight:800}.gift[hidden]{display:none}.gift-icon{width:calc(var(--u) * 44);height:calc(var(--u) * 44);border-radius:calc(var(--u) * 14);display:grid;place-items:center}.gift-icon svg{width:72%;height:72%}.gift-icon[data-kind=slot]{background:linear-gradient(#57c98a,#33a866)}.gift-icon[data-kind=hammer]{background:linear-gradient(#ffa24d,#f07c1e)}.gift-icon[data-kind=double]{background:linear-gradient(#6d98ff,#4a6fe8)}#app[data-screen=landing] #hud,#app[data-screen=landing] #boosters{visibility:hidden}.loading-screws img{animation:tip-bob 1.6s ease-in-out infinite}.loading-screws img:nth-child(2){animation-delay:.2s}.loading-screws img:nth-child(3){animation-delay:.4s}.loading h2{margin:0;color:var(--ink);font-size:calc(var(--u)*44)}.loading p{max-width:85%;text-align:center;margin:0}.entry{position:absolute;inset:0;z-index:20;display:flex;flex-direction:column;justify-content:space-between;padding:calc(var(--sat) + 28px) 24px calc(var(--sab) + 32px);pointer-events:none}.entry[hidden],.onboarding[hidden]{display:none}.entry-heading{text-align:center}.entry-heading h2{font-size:28px;margin:0 0 8px;font-weight:900}.entry-heading p{font-size:15px;margin:0;color:var(--ink-soft)}.entry-actions{pointer-events:auto;text-align:center}.entry-actions p{font-size:15px;font-weight:700;margin:0 0 16px}.entry-actions .btn{width:100%;max-width:340px;margin:auto}.onboarding{position:absolute;bottom:calc(var(--sab) + var(--u)*168);left:16px;right:16px;z-index:7;text-align:center;pointer-events:none}.onboarding p{margin:0;padding:12px;font-size:15px;font-weight:800;background:var(--paper);border-radius:16px;box-shadow:0 4px 14px #5a3c1e24}.onboarding button{pointer-events:auto;font-size:14px;min-height:44px;width:auto;margin:auto;padding:6px 18px}#app:not([data-screen=play]) .onboarding{visibility:hidden}@media(prefers-reduced-motion:reduce){.loading-screws img{animation:none}}.entry-heading{position:relative;align-self:center;width:100%;max-width:340px;padding:12px 24px 14px;border:2px solid #899da4;border-radius:20px;background:linear-gradient(110deg,#f8fdffd6,#cddde2e0),url(./plate_metal_20261002-BaDurdV6.webp) center/cover;box-shadow:0 5px #71888f,0 10px 20px #243f4924,inset 0 2px #fff}.entry-heading:before,.entry-heading:after{content:"";position:absolute;top:16px;width:20px;height:20px;background:url(./screw_metal_20261002-72AEey2j.png) center/contain no-repeat;opacity:.8}.entry-heading:before{left:9px}.entry-heading:after{right:9px}.entry-heading h2{display:flex;align-items:center;justify-content:center;gap:8px;font-size:clamp(24px,7.2vw,30px);line-height:1.25;margin-bottom:8px;color:#284653;text-shadow:0 2px 0 #fff}.entry-heading h2 .entry-title-puzzle{color:#b44423}.entry-heading p{color:#425963;font-size:14px;line-height:1.35;word-break:keep-all}.entry-actions{padding:14px 12px 12px;border:1px solid #aebdc3;border-radius:22px;background:#f5faf9ed;box-shadow:0 8px 18px #183a4721}.entry-actions p{color:#344b55;font-size:14px;line-height:1.5;margin-bottom:12px;word-break:keep-all}.entry-actions .btn{min-height:52px;font-size:18px}.b-icon img,.unlock-icon img,.gift-icon img{display:block;width:100%;height:100%;object-fit:contain;pointer-events:none}.loading .loading-nameplate h2{font-size:clamp(21px,6.5vw,28px)}.sheet.win .sheet-art{height:clamp(110px,18vh,160px);animation:reward-settle .65s ease-out}@keyframes reward-settle{0%{transform:scale(.7) rotate(-8deg)}55%{transform:scale(1.12) rotate(4deg)}to{transform:scale(1)}}@media(prefers-reduced-motion:reduce){.sheet.win .sheet-art{animation:none}}@media(max-height:650px){.sheet.win .card{padding:16px 18px;gap:7px}.sheet.win .sheet-art{height:108px}.sheet.win .card .sub{margin-bottom:3px}}
