:root{--safe-top:env(safe-area-inset-top,0px);--safe-bottom:env(safe-area-inset-bottom,0px);--safe-left:env(safe-area-inset-left,0px);--safe-right:env(safe-area-inset-right,0px);--navbar:48px;--bg:#12324a;--bg-deep:#0b2233;--text:#fff;--muted:#a9c0d1;--accent:#ffc83d;--danger:#ff6b5e;--ink:#1b2b38;--primary:var(--accent);--on-primary:var(--ink);--surface:#ffffff1f;--surface-strong:#ffffff38;--surface-weak:#ffffff14;--line:#ffffff14;--track:#ffffff26;--switch-off:#ffffff40;--body:#ffffffdb;--overlay:#050c14db;--card:#fff;--card-muted:#4b5b68;--card-button:#e8edf1;--toast-bg:#000000bf;--toast-text:#fff;word-break:keep-all;overflow-wrap:anywhere;color:var(--text);background:var(--bg-deep);font-family:system-ui,-apple-system,Apple SD Gothic Neo,Noto Sans KR,sans-serif}*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}html,body{overscroll-behavior:none;-webkit-user-select:none;user-select:none;-webkit-touch-callout:none;touch-action:manipulation;height:100%;margin:0;overflow:hidden}#app{height:100%;padding:calc(var(--safe-top) + var(--navbar)) calc(var(--safe-right) + 12px) calc(var(--safe-bottom) + 12px) calc(var(--safe-left) + 12px);background:linear-gradient(var(--bg), var(--bg-deep));flex-direction:column;display:flex}button{font:inherit;color:inherit;cursor:pointer;border:0}.screen{flex-direction:column;flex:1;gap:12px;min-height:0;display:flex}.screen[hidden]{display:none}#title{text-align:center;justify-content:center;align-items:center;gap:20px}.brand img{border-radius:28px;width:112px;height:112px;box-shadow:0 8px 24px #0000004d}.brand img.hero{aspect-ratio:1;object-fit:contain;width:min(56vw,220px);height:auto;box-shadow:none;border-radius:0}.brand h1{letter-spacing:.02em;margin:16px 0 4px;font-size:34px}.brand p,#best{color:var(--muted);margin:0}#best{min-height:1.5em;color:var(--accent);font-weight:700}.menu{flex-direction:column;gap:10px;width:min(100%,300px);display:flex}.menu button{background:var(--surface);border-radius:14px;min-height:52px;font-size:17px;font-weight:700}.menu button.primary{background:var(--primary);color:var(--on-primary)}.menu button[hidden]{display:none}.notice{color:var(--muted);flex-direction:column;align-items:center;gap:8px;font-size:12px;display:flex}.notice p{margin:0}#rating{color:#3ecf6e;border:1.5px solid #3ecf6e;border-radius:999px;padding:2px 10px;font-weight:700}#page header{align-items:center;gap:4px;display:flex}#page h2{margin:0;font-size:20px}#back{background:0 0;width:44px;height:44px;margin-left:-8px;font-size:32px;line-height:1}#page .body{overscroll-behavior:contain;-webkit-user-select:text;user-select:text;min-height:0;color:var(--body);flex:1;font-size:15px;line-height:1.65;overflow-y:auto}#page .body h3{color:var(--text);margin:24px 0 4px;font-size:16px}#page .body p{margin:0 0 8px}#page .body ul{margin:0 0 8px;padding-left:20px}#page .body .small{color:var(--muted);font-size:12px}.group{background:var(--surface-weak);border-radius:14px;margin-bottom:16px;overflow:hidden}.item{text-align:left;width:100%;min-height:52px;color:var(--text);background:0 0;justify-content:space-between;align-items:center;gap:12px;padding:0 16px;font-size:16px;display:flex}.item+.item{border-top:1px solid var(--line)}.item span{color:var(--muted);text-align:right;font-size:14px}.item.link:after{content:"›";color:var(--muted);font-size:22px}.switch{background:var(--switch-off);border-radius:14px;flex:none;width:48px;height:28px;transition:background .15s;position:relative}.switch:after{content:"";background:#fff;border-radius:50%;width:22px;height:22px;transition:transform .15s;position:absolute;top:3px;left:3px}[aria-checked=true] .switch{background:var(--primary)}[aria-checked=true] .switch:after{transform:translate(20px)}#page .body h3.chapter:first-child{margin-top:0}#page .body h3.chapter{margin-bottom:8px}#page .body .chapter-note{color:var(--muted);font-size:13px}.levels{grid-template-columns:repeat(2,1fr);gap:10px;padding-bottom:8px;display:grid}.level{background:var(--surface-weak);min-height:96px;box-shadow:inset 0 0 0 1px var(--line);text-align:left;font-variant-numeric:tabular-nums;color:var(--text);border-radius:14px;flex-direction:column;align-items:flex-start;gap:2px;padding:12px 14px;line-height:1.4;display:flex}.level b{font-size:17px}.level span{color:var(--muted);font-size:13px}.level .rec{color:var(--accent);margin-top:auto;font-weight:600}.level.next{box-shadow:inset 0 0 0 2px var(--primary)}.level:disabled{opacity:.45;cursor:default}.level:disabled .rec{color:var(--muted);font-weight:400}#hud .row{font-variant-numeric:tabular-nums;justify-content:space-between;align-items:baseline;gap:12px;font-weight:700;display:flex}#hud .row>:first-child{font-size:18px}#hud .row>:last-child{color:var(--accent);font-size:16px}#timebar{background:var(--track);border-radius:4px;height:8px;margin-top:8px;overflow:hidden}#timebar i{background:var(--accent);transform-origin:0;border-radius:4px;width:100%;height:100%;display:block}#tools{grid-auto-columns:1fr;grid-auto-flow:column;gap:8px;display:grid}#tools button{background:var(--surface);border-radius:12px;min-height:48px;font-size:15px;font-weight:600}#tools button:disabled{opacity:.4}#tools button:active:not(:disabled){background:var(--surface-strong)}#toast{left:50%;bottom:calc(var(--safe-bottom) + 84px);background:var(--toast-bg);max-width:calc(100% - 32px);color:var(--toast-text);text-align:center;z-index:20;border-radius:20px;padding:10px 16px;font-size:14px;position:fixed;transform:translate(-50%)}#modal{background:var(--overlay);z-index:30;place-items:center;padding:24px;display:grid;position:fixed;inset:0}#modal[hidden],#toast[hidden]{display:none}#modal .card{background:var(--card);width:min(100%,340px);color:var(--ink);text-align:center;border-radius:20px;padding:28px 20px 20px;animation:.24s ease-out rise}@keyframes rise{0%{opacity:0;transform:translateY(8px)}}#modal .face{object-fit:contain;width:104px;height:104px;margin:-84px auto 4px;display:block}#modal .face[hidden]{display:none}#modal h2{margin:0 0 8px;font-size:22px}#modal p{color:var(--card-muted);white-space:pre-line;margin:0 0 20px;font-size:15px;line-height:1.5}#modal .actions{gap:8px;display:flex}#modal .actions.col{flex-direction:column}#modal .actions button{background:var(--card-button);min-height:50px;color:var(--ink);border-radius:12px;flex:1;padding:0 8px;font-size:16px;font-weight:700}#modal .actions button.primary{background:var(--primary);color:var(--on-primary)}@media (prefers-reduced-motion:reduce){.switch,.switch:after{transition:none}#modal .card{animation:none}}:root{--bg:#f0eae3;--bg-deep:#ead9c4;--text:#2a2622;--muted:#62574d;--accent:#a8435f;--ink:#2a2622;--primary:#a8435f;--on-primary:#fff;--surface:#34302f14;--surface-strong:#34302f29;--surface-weak:#34302f0f;--line:#34302f1a;--track:#34302f24;--switch-off:#34302f4d;--body:#2a2622e6;--overlay:#3c342e80;--card:#fbf8f1;--card-muted:#5f554b;--card-button:#ece4d6;--toast-bg:#2a2622e6;--toast-text:#f7f2e8;--paper:#faf6eedb;--clear-ms:.3s;--ivory:#fff8e6}#app{background:url(./bg-D_w38gmo.webp) center / cover no-repeat, linear-gradient(var(--bg), var(--bg-deep))}.brand h1{color:var(--text)}.menu button{background:var(--paper);box-shadow:0 1px #34302f0f}.menu button.primary{background:var(--primary)}#title .brand,#title .notice{background:var(--paper);border-radius:18px;padding:4px 18px 10px}#title .brand img.hero{margin-top:6px}#title .notice{border-radius:12px;padding:6px 14px}#best:not(:empty){background:var(--paper);border-radius:999px;padding:2px 12px}#rating{color:#2c7a45;border-color:#2c7a45}#page{background:var(--paper);border-radius:18px;padding:4px 16px 12px}#modal .card{box-shadow:0 12px 32px #34302f33}#game{isolation:isolate;position:relative}#glow{z-index:-1;pointer-events:none;position:absolute;inset:-8px -12px}#glow svg{width:100%;height:100%;display:block}#glow rect{transition:opacity 1.8s}#toast{white-space:pre-line}#hud{background:var(--paper);border-radius:16px;padding:8px 12px 10px}#stage small{color:var(--muted);margin-left:4px;font-size:13px;font-weight:600}.goalrow{align-items:center;gap:10px;margin-top:6px;display:flex}#goals{flex-wrap:wrap;flex:1;gap:6px 12px;min-width:0;margin:0;padding:0;list-style:none;display:flex}#goals li{font-variant-numeric:tabular-nums;align-items:center;gap:4px;font-size:17px;font-weight:700;display:flex}#goals i{place-items:center;width:30px;height:30px;display:grid}#goals i svg,#goals i img{object-fit:contain;width:100%;height:100%}#goals .pts{color:var(--muted);font-size:13px;font-style:normal}#goals li.done b{color:#3d7a4a}#moves{font-variant-numeric:tabular-nums;background:#34302f0f;border-radius:12px;flex-direction:column;align-items:center;min-width:58px;padding:2px 8px;line-height:1.15;display:flex}#moves small{color:var(--muted);font-size:11px}#moves b{font-size:20px}#timebar{height:6px;margin-top:8px}#timebar i{transition:transform .6s;transform:scaleX(0)}#tools{gap:6px}#tools button{background:var(--paper);flex-direction:column;justify-content:center;align-items:center;gap:0;min-height:56px;padding:4px 2px;font-size:13px;display:flex;position:relative}#tools button img{object-fit:contain;width:30px;height:30px}#tools button b{background:var(--primary);min-width:18px;height:18px;color:var(--on-primary);border-radius:9px;padding:0 4px;font-size:11px;line-height:18px;position:absolute;top:4px;right:calc(50% - 26px)}#tools button[aria-pressed=true]{background:var(--primary);color:var(--on-primary)}#tools button[aria-pressed=true] b{background:var(--on-primary);color:var(--primary)}#boardBox:has(#board.picking) .tile:not(.edge){background-color:#faeeeecc}#boardWrap{flex:1;place-items:center;min-height:0;margin:0 -8px;display:grid}#boardBox{--cell:40px;--cols:8;--rows:8;position:relative}#tiles{pointer-events:none;position:absolute;inset:0}#board{width:calc(var(--cell) * var(--cols));height:calc(var(--cell) * var(--rows));touch-action:none;position:relative;overflow:hidden}#fx{pointer-events:none;z-index:3;position:absolute;inset:0}.tile,.frost,.crate{width:var(--cell);height:var(--cell);transform:translate(calc(var(--c) * var(--cell)), calc(var(--r) * var(--cell)));pointer-events:none;position:absolute;top:0;left:0}.tile.edge{width:calc(var(--cell) + 4px);height:calc(var(--cell) + 4px);background:#a07c5b73;border-radius:6px;margin:-2px}.tile:not(.edge){background:#faf6eeb8}.tile.odd:not(.edge){background:#f0e8dcc2}.frost{width:calc(var(--cell) * .94);height:calc(var(--cell) * .94);margin:calc(var(--cell) * .03);background:repeating-linear-gradient(135deg,#ffffff80 0 2px,#0000 2px 7px),#d6e5e8b8;border-radius:6px;box-shadow:inset 0 0 0 1.5px #8fa9b08c}.frost[data-n="2"]{background:repeating-linear-gradient(135deg,#ffffffa6 0 2px,#0000 2px 5px),#b0ccd2d9;box-shadow:inset 0 0 0 2px #6e919bb3}.frost.wipe{animation:.3s ease-out pulse-in}.frost.wipe[data-n="0"]{animation:wipe-out var(--clear-ms) ease-out forwards}.crate{z-index:2;place-items:center;display:grid}.crate img{object-fit:contain;width:94%;height:94%}.crate.knock img{animation:.28s ease-out knock}.crate.open img{animation:open var(--clear-ms) ease-in forwards}.gem{z-index:1;width:var(--cell);height:var(--cell);pointer-events:none;place-items:center;transition:transform .18s ease-in;display:grid;position:absolute;top:0;left:0}.gem>*{grid-area:1/1}.gem svg,.gem img{width:86%;height:86%;transition:transform .2s}.gem img.jar{object-fit:contain;width:92%;height:92%}.gem svg.sp{width:92%;height:92%}.gem img.twine{object-fit:contain;filter:drop-shadow(0 0 .6px #6e543ae6);width:100%;height:100%}#board.still .gem{transition:none}#board.mix .gem{transition:transform .42s cubic-bezier(.4,0,.2,1)}.gem.fresh{animation:.16s ease-out fade-in}.gem .glint{transform-box:view-box;animation:2.6s ease-in-out infinite glint}.gem[data-sp=bomb] svg.sp{animation:2.4s ease-in-out infinite breathe}.gem .dots{transform-box:view-box;transform-origin:50px 50px;animation:9s linear infinite spin}.gem.sel:before{content:"";border:3px solid var(--primary);opacity:.85;border-radius:50% 47% 52% 49%/49% 52% 47% 50%;position:absolute;inset:1px}.gem.sel>*{transform:scale(1.06)}.gem.hint>*{animation:2.4s ease-in-out infinite pulse}.gem.gone>*{animation:gone var(--clear-ms) ease-in forwards}.gem.gone .sweep{animation:sweep var(--clear-ms) ease-in-out forwards}.gem.untie .twine{animation:untie var(--clear-ms) ease-out forwards}.gem.leave>*{animation:.42s ease-in forwards leave}.sweep{transform:translate(-60px)}.shard{clip-path:polygon(50% 0,100% 70%,30% 100%,0 40%);opacity:.95;position:absolute}.bloom{background:radial-gradient(#fffaecf2,#f5d79673 45%,#0000 70%);border-radius:50%;position:absolute}.beam{border-radius:999px;position:absolute}.beam.h{background:linear-gradient(#0000,#ecbc60e6 22%,#fff4d6 50%,#ecbc60e6 78%,#0000)}.beam.v{background:linear-gradient(90deg,#0000,#ecbc60e6 22%,#fff4d6 50%,#ecbc60e6 78%,#0000)}.ring{background:radial-gradient(#fff4d6b3,#fff4d640 60%,#0000 72%);border:5px solid #ecbc60f2;border-radius:50%;position:absolute;box-shadow:0 0 0 2px #fffaecd9}.thread{background:linear-gradient(90deg,#f0c8784d,#f0c878f2);border-radius:1px;position:absolute;box-shadow:0 0 0 1px #fffaecb3}.fly{z-index:15;pointer-events:none;place-items:center;display:grid;position:fixed}.fly svg,.fly img{object-fit:contain;width:86%;height:86%}@keyframes pulse{50%{transform:scale(1.08)}}@keyframes gone{0%{opacity:1;transform:scale(1)}35%{opacity:1;transform:scale(1.12)}to{opacity:0;transform:scale(.55)}}@keyframes sweep{to{transform:translate(160px)}}@keyframes untie{to{opacity:0;transform:scale(1.3)rotate(8deg)}}@keyframes leave{to{opacity:0;transform:translateY(70%)scale(.8)}}@keyframes fade-in{0%{opacity:0}}@keyframes pulse-in{0%{opacity:.35;transform:translate(calc(var(--c) * var(--cell)), calc(var(--r) * var(--cell))) scale(1.08)}}@keyframes wipe-out{to{opacity:0;transform:translate(calc(var(--c) * var(--cell)), calc(var(--r) * var(--cell))) scale(1.12)}}@keyframes knock{40%{transform:scale(1.1)}}@keyframes open{40%{opacity:1;transform:scale(1.12)}to{opacity:0;transform:scale(.7)translateY(12%)}}@keyframes glint{0%,15%{opacity:0;transform:translate(0)}30%{opacity:.9}70%{opacity:.9}85%,to{opacity:0;transform:translate(52px)}}@keyframes breathe{50%{transform:scale(1.07)}}@keyframes spin{to{transform:rotate(360deg)}}@media (prefers-reduced-motion:reduce){.gem.hint>*,.gem .glint,.gem[data-sp=bomb] svg.sp,.gem .dots{animation:none}.gem.hint:before{content:"";border:3px dashed var(--primary);border-radius:50%;position:absolute;inset:1px}.gem.gone .sweep{animation:none}#glow rect,#timebar i{transition:none}}
