@font-face{font-family:Do Hyeon;src:url(../assets/fonts/dohyeon-subset.woff2)format("woff2");font-display:swap}:root{--ink:#1b2a3a;--ink-2:#4a5b6c;--ink-3:#5b6b7b;--cream:#fff7e6;--paper:#fff;--mist:#e9f4f8;--line:#d8cdb4;--sea-900:#0f2f44;--sea-700:#17607e;--sea-500:#2e8fb0;--sun:#ffc93c;--sun-d:#e0a410;--sun-ink:#8a5a00;--coral:#c9402b;--coral-d:#b3371f;--leaf:#2e7d4f;--star-on:#ffc93c;--star-off:#c9d3dc;--scrim:#0f2f44c7;--scrim-2:#0f2f448c;--sp-1:4px;--sp-2:8px;--sp-3:12px;--sp-4:16px;--sp-5:24px;--sp-6:32px;--r-chip:10px;--r-btn:16px;--r-card:20px;--r-sheet:28px;--sh-btn:0 3px 0 #1b2a3a61;--sh-btn-p:0 1px 0 #1b2a3a61;--sh-card:0 6px 0 #1b2a3a24, 0 10px 24px #0f2f4438;--ease-out:cubic-bezier(.2, .8, .2, 1);--ease-pop:cubic-bezier(.3, 1.6, .5, 1);--font-display:"Do Hyeon", "Jua", "Apple SD Gothic Neo", "Noto Sans KR", "Malgun Gothic", system-ui, sans-serif;--font-ui:system-ui, -apple-system, "Apple SD Gothic Neo", "Noto Sans KR", "Malgun Gothic", "Segoe UI", Roboto, sans-serif;--safe-t:env(safe-area-inset-top,0px);--safe-b:env(safe-area-inset-bottom,0px);--fs:1}.large{--fs:1.15}*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}html,body{background:var(--sea-900);height:100%;color:var(--ink);font-family:var(--font-ui);font-size:calc(16px * var(--fs));touch-action:manipulation;-webkit-user-select:none;user-select:none;overscroll-behavior:none;margin:0;line-height:1.35;overflow:hidden}body{background:var(--sea-900) var(--bg-img,none) center / cover no-repeat}button{font:inherit;color:inherit;cursor:pointer}svg.i{fill:currentColor;vertical-align:-.125em;flex:none;width:1em;height:1em}.num{font-family:var(--font-display);font-variant-numeric:tabular-nums;letter-spacing:.2px}.disp{font-family:var(--font-display);font-weight:400}:focus-visible{box-shadow:0 0 0 5px var(--sea-700);outline-offset:2px;outline:3px solid #fff}#app{position:fixed;inset:0}.stage{justify-content:center;align-items:center;gap:24px;display:flex;position:absolute;inset:0}.col{aspect-ratio:9/16;background:#222;max-width:100vw;height:100%;max-height:900px;position:relative;overflow:hidden}@media (aspect-ratio<=9/14),(width<=699px){.col{aspect-ratio:auto;width:100vw;max-height:none}}.col>canvas{touch-action:none;width:100%;height:100%;display:block;position:absolute;inset:0}.side{flex:none;width:320px;display:none}.desk{--fs:1}@media (height>=860px){.desk{--fs:1.15}}@media (height>=1000px){.desk{--fs:1.3}}.desk .col{aspect-ratio:7/9;max-width:calc(100vw - 376px)}.desk .side{display:block}.desk{background:#0f2f4459}.layer{pointer-events:none;position:absolute;inset:0}.layer>*{pointer-events:auto}.page{background:var(--cream);animation:fade .15s var(--ease-out);flex-direction:column;display:flex;position:absolute;inset:0;overflow:hidden}.page .body{padding:12px 16px calc(16px + var(--safe-b));-webkit-overflow-scrolling:touch;flex:1;overflow:hidden auto}@keyframes fade{0%{opacity:0}to{opacity:1}}@keyframes pop{0%{opacity:0;transform:scale(.9)translateY(24px)}to{opacity:1;transform:none}}.hud{pointer-events:none;position:absolute;inset:0}.goals{left:12px;top:calc(var(--safe-t) + 8px);pointer-events:none;grid-template-columns:minmax(0,.92fr) minmax(0,1.16fr) minmax(0,.92fr);gap:6px;display:grid;position:absolute;right:68px}.pill{background:var(--scrim);color:#fff;border-radius:999px;align-items:center;gap:3px;min-width:0;height:44px;padding:0 7px 0 5px;transition:background .16s;display:flex;box-shadow:0 2px #00000040}.pill .ic{background:#ffffff24;border-radius:50%;flex:none;place-items:center;width:28px;height:28px;font-size:18px;display:grid}.pill .v{white-space:nowrap;min-width:0;font-size:19px;line-height:1;overflow:hidden}.pill .v small{opacity:.8;margin-left:1px;font-size:.63em}.pill.ok{background:var(--leaf)}.pill.warn .v{color:#ffd7cf}.pill.bad{background:var(--coral)}.pill.bump{animation:bump .22s var(--ease-pop)}.burst{pointer-events:none;width:0;height:0;position:absolute}.burst svg{width:14px;height:14px;color:var(--star-on);animation:burst .45s var(--ease-out) forwards;position:absolute;top:-7px;left:-7px}@keyframes burst{0%{opacity:1;transform:translate(0)scale(.4)}to{transform:translate(var(--dx), var(--dy)) scale(1);opacity:0}}.pill.shake{animation:.2s linear shake}@keyframes bump{50%{transform:scale(1.12)}}@keyframes shake{25%{transform:translate(-6px)}75%{transform:translate(6px)}}.lostdots{gap:3px;display:flex}.lostdots i{border:2px solid #ffb3a6;border-radius:50%;width:9px;height:9px}.lostdots i.on{background:var(--coral);border-color:#fff}.pbtn{right:12px;top:calc(var(--safe-t) + 6px);background:var(--scrim);color:#fff;pointer-events:auto;border:0;border-radius:50%;place-items:center;width:48px;height:48px;font-size:22px;display:grid;position:absolute;box-shadow:0 2px #00000040}.pbtn:after{content:"";position:absolute;inset:-4px}.next{left:12px;top:calc(var(--safe-t) + 60px);background:var(--scrim-2);color:#fff;letter-spacing:.5px;pointer-events:none;border-radius:14px;align-items:center;gap:6px;padding:4px 8px;font-size:11px;font-weight:700;display:flex;position:absolute}.chip{border-radius:var(--r-chip);background:#ffffffe0;place-items:center;width:40px;height:40px;display:grid;position:relative}.chip.c2{opacity:.7;transform:scale(.88)}.chip.pulse{animation:chippulse .16s var(--ease-pop)}@keyframes chippulse{50%{transform:scale(1.1)}}.dots{justify-content:center;gap:2px;height:6px;display:flex}.dots i{background:var(--ink);border-radius:50%;width:5px;height:5px}.chip .dots{position:absolute;bottom:1px;left:0;right:0}.wind{right:12px;top:calc(var(--safe-t) + 60px);background:var(--scrim-2);color:#fff;pointer-events:none;border-radius:14px;align-items:center;gap:6px;height:40px;padding:0 10px;font-size:18px;display:flex;position:absolute}.wind .num{font-size:15px}.swellbar{left:12px;top:calc(var(--safe-t) + 114px);background:var(--scrim-2);pointer-events:none;border-radius:4px;width:132px;height:8px;position:absolute}.swellbar:before,.swellbar:after{content:"";background:#3fbf72;width:7.5px;position:absolute;top:0;bottom:0}.swellbar:before{border-radius:4px 0 0 4px;left:0}.swellbar:after{border-radius:0 4px 4px 0;right:0}.swellbar b{border:2px solid var(--ink);background:#fff;border-radius:50%;width:14px;height:14px;position:absolute;top:-3px;left:59px}.rot{right:16px;bottom:calc(16px + var(--safe-b));background:var(--sun);width:72px;height:72px;color:var(--ink);border:3px solid var(--ink);box-shadow:var(--sh-btn);pointer-events:auto;animation:rotin .16s var(--ease-pop);border-radius:50%;place-items:center;font-size:36px;display:grid;position:absolute}.rot:after{content:"";border-radius:50%;position:absolute;inset:-11px}.rot.spin svg{animation:spin90 .12s var(--ease-out)}@keyframes spin90{0%{transform:rotate(-90deg)}to{transform:none}}@keyframes rotin{0%{transform:scale(.6)}to{transform:none}}.rot kbd{font:700 10px var(--font-ui);background:var(--ink);color:#fff;border-radius:6px;padding:1px 5px;display:none;position:absolute;top:-6px;left:-2px}.desk .rot kbd{display:block}.left .rot{left:16px;right:auto}.rot.ring:before{content:"";animation:ring 1.2s var(--ease-out) infinite;border:4px solid #fff;border-radius:50%;position:absolute;inset:-8px}@keyframes ring{0%{opacity:.8;transform:scale(1)}to{opacity:0;transform:scale(1.35)}}.hint{color:#fff;filter:drop-shadow(0 2px 6px #00000080);animation:tapb 1.2s var(--ease-out) infinite;pointer-events:none;flex-direction:column;align-items:center;gap:4px;font-size:44px;display:flex;position:absolute;top:56%;left:50%;transform:translate(-50%)}.hint .cap{font:700 13px var(--font-ui);background:var(--scrim);border-radius:999px;padding:4px 12px}@keyframes tapb{0%,to{margin-top:0}50%{margin-top:10px}}.banner{background:var(--coral);color:#fff;border:3px solid var(--ink);font:400 26px var(--font-display);animation:pop .26s var(--ease-pop);pointer-events:none;white-space:nowrap;border-radius:14px;padding:4px 18px;position:absolute;top:34%;left:50%;transform:translate(-50%)}.calmring{left:12px;top:calc(var(--safe-t) + 60px);pointer-events:none;border:4px solid #ffffffd9;border-right-color:#0000;border-radius:50%;width:48px;height:48px;animation:1s linear infinite spinr;position:absolute}@keyframes spinr{to{transform:rotate(360deg)}}.desk .goals,.desk .next,.desk .calmring{display:none}.toast.low{top:auto;bottom:calc(8px + var(--safe-b))}.medals{flex-wrap:wrap;justify-content:center;gap:6px;margin:0 0 8px;display:flex}.mchip{background:var(--paper);border:2px solid var(--sun-d);font:700 13px var(--font-ui);max-width:100%;animation:rotin .2s var(--ease-pop) .9s both;border-radius:999px;align-items:center;gap:4px;padding:2px 10px;display:inline-flex}.mchip svg{width:18px;height:18px}.mchip .lbl{white-space:nowrap;text-overflow:ellipsis;min-width:0;overflow:hidden}.toast{left:50%;top:calc(var(--safe-t) + 132px);background:var(--scrim);color:#fff;text-align:center;z-index:50;pointer-events:none;border-radius:999px;max-width:calc(100% - 32px);padding:6px 14px;font-size:13px;animation:.16s fade;position:absolute;transform:translate(-50%)}.dim{padding:var(--sp-4);background:#0f2f448c;justify-content:center;align-items:center;animation:.15s fade;display:flex;position:absolute;inset:0;overflow-y:auto}.card{background:var(--cream);border-radius:var(--r-sheet);width:100%;max-width:343px;box-shadow:var(--sh-card);padding:var(--sp-5) var(--sp-4) var(--sp-4);text-align:center;border:3px solid var(--ink);animation:pop .26s var(--ease-pop);margin:auto;position:relative}.card.narrow{max-width:311px}.card h2{font:400 calc(26px * var(--fs)) / 1.1 var(--font-display);overflow-wrap:anywhere;margin:0 0 4px}.card .sub{color:var(--ink-2);font-size:calc(14px * var(--fs));margin:0 0 var(--sp-3);overflow-wrap:anywhere}.ribbon{background:var(--coral);color:#fff;font:400 calc(18px * var(--fs)) var(--font-display);overflow-wrap:anywhere;border-radius:10px;max-width:100%;margin-bottom:8px;padding:2px 12px;display:inline-block}.ribbon.neutral{background:var(--sea-700)}.stars{margin:4px 0 var(--sp-2);justify-content:center;gap:6px;display:flex}.stars svg{width:64px;height:64px;color:var(--star-off);filter:drop-shadow(0 3px #1b2a3a40)}.stars svg.on{color:var(--star-on)}.stars svg:first-child{transform:rotate(-8deg)}.stars svg:nth-child(3){transform:rotate(8deg)}.stars svg:nth-child(2){margin-top:-10px}.stars svg.stamp{animation:stamp .26s var(--ease-pop) both}@keyframes stamp{0%{opacity:0;transform:scale(2.2)rotate(12deg)}}.stars.small svg{width:48px;height:48px}.rows{margin:var(--sp-3) 0;text-align:left;gap:6px;display:grid}.row{background:var(--paper);border:2px solid var(--line);border-radius:12px;align-items:center;gap:10px;min-height:36px;padding:4px 12px;display:flex}.row .t{font-size:calc(15px * var(--fs));overflow-wrap:anywhere;flex:1;min-width:0}.row .state{color:#fff;background:var(--leaf);border-radius:50%;flex:none;place-items:center;width:24px;height:24px;font-size:14px;display:grid}.row .state.no{background:var(--star-off);color:var(--ink-3)}.tag-new{font:700 11px var(--font-ui);background:var(--coral);color:#fff;animation:rotin .2s var(--ease-pop);border-radius:6px;padding:1px 5px}.coins{justify-content:center;align-items:center;gap:8px;margin:6px 0 10px;font-size:30px;display:flex}.coins svg{width:28px;height:28px}.btn{border-radius:var(--r-btn);border:3px solid var(--ink);background:var(--paper);width:100%;min-width:96px;min-height:56px;color:var(--ink);font:400 calc(20px * var(--fs)) / 1.1 var(--font-display);box-shadow:var(--sh-btn);text-align:center;justify-content:center;align-items:center;gap:8px;padding:4px 14px;transition:transform 80ms,box-shadow 80ms;display:flex;position:relative}.btn .lbl{white-space:nowrap;text-overflow:ellipsis;min-width:0;overflow:hidden}.btn svg{width:22px;height:22px}.btn:active{box-shadow:var(--sh-btn-p);transform:translateY(2px)scale(.95)}.btn:disabled{opacity:.45;box-shadow:none}.btn.primary{background:var(--sun)}.btn.teal{background:var(--sea-700);color:#fff}.btn.danger{background:var(--coral);color:#fff}.btn.sm{min-height:48px;font-size:calc(16px * var(--fs))}.btn.big{min-height:72px;font-size:calc(26px * var(--fs))}.btn.mid{min-height:64px;font-size:calc(22px * var(--fs));gap:6px;padding:4px 8px}.btn.ad{background:var(--mist);font:700 calc(14px * var(--fs)) / 1.2 var(--font-ui);border-style:dashed;min-height:48px}.btn.ad small{font-weight:500;font-size:calc(11px * var(--fs));opacity:.8;margin-top:2px;display:block}.btn.ad.done{background:var(--leaf);color:#fff;border-style:solid}.btn.pulse{animation:1.2s ease-in-out infinite softpulse}@keyframes softpulse{50%{transform:scale(1.03)}}.btnrow{margin-top:var(--sp-2);gap:12px;display:grid}.btnrow.two{grid-template-columns:minmax(0,1.25fr) minmax(0,1fr)}.btnrow.half{grid-template-columns:1fr 1fr;gap:8px}.adrow{margin-top:var(--sp-5)}.manifest{flex-wrap:wrap;justify-content:center;gap:6px;margin:8px 0;display:flex}.mc{border-radius:var(--r-chip);background:var(--paper);border:2px solid var(--line);flex-direction:column;justify-content:center;align-items:center;gap:1px;width:40px;height:48px;display:flex}.mc .num{font-size:18px}.goalstrip{gap:8px;margin:8px 0;display:flex}.tile{background:var(--paper);border:2px solid var(--line);min-width:0;height:56px;color:var(--sea-700);border-radius:14px;flex:1;justify-content:center;align-items:center;gap:6px;font-size:22px;display:flex}.tile.lab{flex-wrap:wrap;align-content:center;row-gap:0;height:64px}.tile.lab small{text-align:center;font:700 calc(11px * var(--fs)) / 1.2 var(--font-ui);color:var(--ink-2);white-space:nowrap;text-overflow:ellipsis;flex-basis:100%;overflow:hidden}.tile .num{color:var(--ink);white-space:nowrap;font-size:22px}@media (width<=380px){.tile{gap:3px;font-size:18px}.tile .num{font-size:19px}.cchip{gap:4px;padding:0 8px;font-size:16px}.topbar{gap:6px;padding-left:8px;padding-right:8px}.topbar h1{font-size:21px}}.mech{background:var(--mist);text-align:left;font-size:calc(14px * var(--fs));border:2px solid var(--line);border-radius:14px;align-items:center;gap:10px;min-height:44px;margin:8px 0;padding:8px 12px;display:flex}.mech svg{color:var(--sea-700);font-size:26px}.mech span{overflow-wrap:anywhere;min-width:0}.confetti{pointer-events:none;width:6px;height:4px;animation:1.4s ease-in forwards conf;position:absolute;top:0}@keyframes conf{to{transform:translate(var(--dx), 420px) rotate(540deg);opacity:0}}.topbar{min-height:56px;padding:calc(var(--safe-t) + 4px) 12px 4px;background:var(--cream);border-bottom:2px solid var(--line);align-items:center;gap:8px;display:flex}.topbar h1{font:400 calc(24px * var(--fs)) / 1.05 var(--font-display);overflow-wrap:anywhere;flex:1;min-width:60px;margin:0}.ibtn{border:3px solid var(--ink);background:var(--paper);width:48px;height:48px;box-shadow:var(--sh-btn);border-radius:14px;flex:none;place-items:center;font-size:22px;display:grid}.ibtn:active{box-shadow:var(--sh-btn-p);transform:translateY(2px)}.cchip{background:var(--paper);border:2px solid var(--line);border-radius:999px;flex:none;align-items:center;gap:6px;height:40px;padding:0 12px;font-size:18px;display:flex}.cchip svg{width:22px;height:22px}.cchip.star svg{color:var(--star-on)}.cchip.shake{animation:.24s linear shake}.home{padding:calc(var(--safe-t) + 8px) 16px calc(16px + var(--safe-b));flex-direction:column;align-items:center;animation:.15s fade;display:flex;position:absolute;inset:0}.home .hbar{flex:none;align-items:center;gap:8px;width:100%;display:flex}.home .logo,.home .menu{flex:none}.home .hbar .sp{flex:1}.logo{text-align:center;color:var(--ink);margin-top:6vh}.home .logo{background:#0f2f449e;border-radius:22px;padding:10px 22px 12px;box-shadow:0 6px 18px #0f2f444d}.home .menu{border:3px solid var(--ink);border-radius:var(--r-sheet);max-width:343px;box-shadow:var(--sh-card);background:#fff7e6f0;padding:14px}.logo .mark{font-size:0}.logo h1{font:400 calc(40px * var(--fs)) / 1 var(--font-display);color:#fff;text-shadow:0 3px 0 var(--ink), 0 0 2px var(--ink);margin:6px 0 0}.logo p{color:#fff;font:700 13px var(--font-ui);text-shadow:0 1px 2px var(--ink);margin:4px 0 0}.menu{gap:16px;width:100%;max-width:311px;margin-top:auto;display:grid}.menu .btn small{font:700 12px var(--font-ui);opacity:.75;display:block}.dot{background:var(--coral);border:2px solid #fff;border-radius:50%;width:10px;height:10px;position:absolute;top:8px;right:10px}.langsel{border:3px solid var(--ink);background:var(--paper) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8'%3E%3Cpath d='M1 1l5 5 5-5' fill='none' stroke='%231b2a3a' stroke-width='2'/%3E%3C/svg%3E") no-repeat right 10px center;max-width:52%;min-height:44px;color:var(--ink);appearance:none;text-overflow:ellipsis;border-radius:14px;flex:none;padding:0 30px 0 12px;font:700 14px/1.2 system-ui,-apple-system,sans-serif}.langsel option{color:#1b2a3a;background:#fff}.seg{border:3px solid var(--ink);border-radius:14px;flex:none;display:inline-flex;overflow:hidden}.seg button{background:var(--paper);min-width:56px;min-height:44px;font:700 14px var(--font-ui);border:0;padding:0 10px}.seg button.on{background:var(--sun)}.ports{flex-direction:column-reverse;gap:16px;display:flex}.port{border:3px solid var(--ink);color:var(--ink);box-shadow:var(--sh-card);border-radius:22px;padding:14px 12px;position:relative;overflow:hidden}.port .head{align-items:center;gap:10px;margin-bottom:10px;display:flex}.port .emb{border:3px solid var(--ink);background:var(--cream);width:56px;height:56px;color:var(--sea-700);border-radius:16px;flex:none;place-items:center;font-size:30px;display:grid}.port h2{font:400 calc(24px * var(--fs)) / 1.1 var(--font-display);overflow-wrap:anywhere;margin:0}.port .rule{font-size:calc(13px * var(--fs));color:var(--ink-2);overflow-wrap:anywhere}.nodes{grid-template-columns:repeat(4,52px);justify-content:center;gap:12px 16px;margin:6px 0 10px;display:grid}.node{background:0 0;border:0;flex-direction:column;align-items:center;gap:2px;width:52px;height:64px;padding:0;display:flex}.node .ball{border:3px solid var(--ink);background:var(--sun);width:52px;height:52px;font:400 22px var(--font-display);color:var(--ink);border-radius:50%;place-items:center;display:grid;position:relative}.node.done .ball{background:var(--sea-700);color:#fff}.node.locked .ball{background:var(--star-off);color:var(--ink-3)}.node.cur .ball{animation:ringshadow 1.6s var(--ease-out) infinite}@keyframes ringshadow{0%{box-shadow:0 0 #ffc93ce6}to{box-shadow:0 0 0 14px #ffc93c00}}.node .ms{gap:1px;height:12px;display:flex}.node .ms svg{width:12px;height:12px;color:var(--star-off)}.node .ms svg.on{color:var(--star-on)}.port .lockbox{color:#fff;text-align:center;background:#0f2f449e;flex-direction:column;justify-content:center;align-items:center;gap:6px;padding:12px;display:flex;position:absolute;inset:0}.port .lockbox svg{width:40px;height:40px}.bar12{background:#ffffff4d;border-radius:6px;width:70%;height:12px;overflow:hidden}.bar12 i{background:var(--sun);height:100%;display:block}.nav{padding:8px 12px calc(8px + var(--safe-b));background:var(--cream);border-top:2px solid var(--line);grid-template-columns:repeat(3,1fr);gap:8px;display:grid}.nav button{border:2px solid var(--line);background:var(--paper);min-height:56px;font:700 12px var(--font-ui);border-radius:14px;flex-direction:column;justify-content:center;align-items:center;gap:2px;display:flex;position:relative}.nav button svg{width:24px;height:24px}.unlock{left:12px;right:12px;top:calc(var(--safe-t) + 8px);background:var(--sea-700);color:#fff;border:3px solid var(--ink);font:400 20px var(--font-display);animation:slidedown .26s var(--ease-pop);z-index:20;border-radius:18px;align-items:center;gap:10px;padding:10px 14px;display:flex;position:absolute}.unlock span{overflow-wrap:anywhere;min-width:0}@keyframes slidedown{0%{transform:translateY(-120%)}}.tabs{grid-template-columns:repeat(3,1fr);gap:6px;padding:8px 12px 0;display:grid}.tabs button{border:3px solid var(--ink);background:var(--paper);min-height:48px;font:400 calc(16px * var(--fs)) var(--font-display);border-bottom:0;border-radius:14px 14px 0 0;padding:2px 4px}.tabs button.on{background:var(--sun)}.urow{background:var(--paper);border:2px solid var(--line);border-radius:16px;align-items:center;gap:10px;min-height:88px;margin-bottom:8px;padding:8px 10px;display:flex}.urow .uic{background:var(--mist);width:48px;height:48px;color:var(--sea-700);border-radius:12px;flex:none;place-items:center;font-size:26px;display:grid}.urow .uinfo{flex:1;min-width:0}.urow .uinfo b{font:400 calc(19px * var(--fs)) / 1.1 var(--font-display);overflow-wrap:anywhere;display:block}.urow .uinfo span{font-size:calc(13px * var(--fs));color:var(--ink-2);overflow-wrap:anywhere}.pips{gap:4px;margin-top:4px;display:flex}.pips i{border:2px solid var(--ink);border-radius:50%;width:10px;height:10px}.pips i.on{background:var(--sea-500)}.price{width:88px;min-width:88px;min-height:48px;padding:2px 6px;font-size:18px}.price svg{width:18px;height:18px}.price.no{background:var(--star-off)}.price.kachunk{animation:kachunk .3s var(--ease-pop)}@keyframes kachunk{30%{transform:scale(.92)}70%{transform:scale(1.08)}}.swatches{grid-template-columns:repeat(3,1fr);gap:10px;margin:8px 0 16px;display:grid}.sw{background:0 0;border:0;flex-direction:column;align-items:center;gap:4px;min-width:0;padding:0;display:flex}.sw canvas{border:3px solid var(--ink);background:var(--mist);border-radius:14px;width:64px;height:64px}.sw.sel canvas{box-shadow:0 0 0 3px var(--sun)}.sw span{font:700 12px var(--font-ui);overflow-wrap:anywhere;text-align:center}.sw small{font:700 12px var(--font-ui);color:var(--sun-ink);align-items:center;gap:2px;display:flex}.sw small svg{width:14px;height:14px}.sec{font:400 calc(18px * var(--fs)) var(--font-display);margin:8px 0 0}.medal{background:var(--paper);border:2px solid var(--line);border-radius:14px;align-items:center;gap:10px;min-height:56px;margin-bottom:6px;padding:6px 10px;display:flex}.medal svg{flex:none;width:40px;height:40px}.medal.off svg{filter:grayscale();opacity:.6}.medal div{flex:1;min-width:0}.medal b{font:400 calc(16px * var(--fs)) var(--font-display);overflow-wrap:anywhere;display:block}.medal span{font-size:calc(13px * var(--fs));color:var(--ink-2);overflow-wrap:anywhere}.preview{border:3px solid var(--ink);border-radius:16px;height:96px;margin:8px 0;overflow:hidden}.preview canvas{width:100%;height:100%;display:block}.grid30{grid-template-columns:repeat(6,48px);justify-content:center;gap:6px;margin:12px 0;display:grid}.cell{background:var(--paper);border:2px solid var(--line);width:48px;height:48px;font:700 12px var(--font-ui);border-radius:12px;flex-direction:column;justify-content:center;align-items:center;display:flex}.cell.off{opacity:.45}.cell.today{box-shadow:0 0 0 3px var(--sun)}.cell .sd{gap:2px;display:flex}.cell .sd i{background:var(--star-off);border-radius:50%;width:6px;height:6px}.cell .sd i.on{background:var(--sun-d)}.streak{background:var(--paper);border:2px solid var(--line);border-radius:999px;align-items:center;gap:4px;padding:2px 10px;font-size:16px;display:inline-flex}.srow{border-bottom:2px solid var(--line);align-items:center;gap:12px;min-height:56px;padding:4px 0;display:flex}.srow>svg{width:24px;height:24px;color:var(--sea-700)}.srow .t{overflow-wrap:anywhere;flex:1;min-width:0}.tog{background:var(--star-off);border:2px solid var(--ink);border-radius:999px;flex:none;width:56px;height:32px;padding:0;position:relative}.tog:after{content:"";border:2px solid var(--ink);box-sizing:border-box;background:#fff;border-radius:50%;width:26px;height:26px;transition:left .12s;position:absolute;top:1px;left:2px}.tog.on{background:var(--leaf)}.tog.on:after{left:24px}.credits{font-size:calc(13px * var(--fs));color:var(--ink-2);overflow-wrap:anywhere}.credits p{margin:6px 0}.credits a,.about a{color:var(--sea-700)}.about{font-size:calc(14px * var(--fs));overflow-wrap:anywhere;margin:12px 0}.rtgl{justify-content:center;gap:12px;margin:8px 0 12px;display:flex}.rtgl button{border:3px solid var(--ink);background:var(--paper);border-radius:50%;place-items:center;width:56px;height:56px;font-size:24px;display:grid}.rtgl button.off{background:var(--star-off);opacity:.7}.splash{flex-direction:column;justify-content:flex-start;align-items:center;padding-top:30vh;animation:.15s fade;display:flex;position:absolute;inset:0}.splash .rope{background:#ffffff59;border-radius:3px;width:160px;height:6px;margin-top:18px;overflow:hidden}.splash .rope i{background:#fff;width:0;height:100%;animation:1s linear forwards wind;display:block}@keyframes wind{to{width:100%}}.rotatehint{color:#fff;z-index:100;background:#0f2f44eb;flex-direction:column;justify-content:center;align-items:center;gap:12px;font-size:64px;display:none;position:fixed;inset:0}.rotatehint p{font:700 16px var(--font-ui);margin:0}@media (orientation:landscape) and (height<=500px) and (pointer:coarse){.rotatehint{display:flex}}.panel{background:var(--cream);border:3px solid var(--ink);border-radius:var(--r-sheet);box-shadow:var(--sh-card);padding:20px 16px 16px}.panel h3{font:400 calc(22px * var(--fs)) / 1.1 var(--font-display);overflow-wrap:anywhere;margin:0}.panel .port-l{color:var(--ink-2);font-size:calc(13px * var(--fs));margin-bottom:10px}.g{margin:10px 0}.g .l{font-size:calc(14px * var(--fs));justify-content:space-between;align-items:center;gap:8px;display:flex}.g .l span{align-items:center;gap:6px;display:flex}.bar{background:#e5dcc6;border-radius:6px;height:12px;margin-top:4px;overflow:hidden}.bar i{background:var(--sea-500);border-radius:6px;height:100%;transition:width .16s;display:block}.bar.par i{background:var(--sun-d)}.keys{color:var(--ink-2);font-size:calc(12px * var(--fs));flex-wrap:wrap;gap:10px;margin-top:12px;display:flex}.keys kbd{font:700 11px var(--font-ui);border:2px solid var(--ink-2);background:#fff;border-radius:6px;padding:0 6px}.panel .coinline{font-size:calc(22px * var(--fs));align-items:center;gap:6px;margin:8px 0;display:flex}.panel .coinline svg{width:22px;height:22px}@media (height<=600px){.dim{padding:8px}.card{padding:14px 12px 12px}.card h2{font-size:22px}.card .sub{margin-bottom:6px;font-size:13px}.stars svg{width:48px;height:48px}.stars.small svg{width:40px;height:40px}.rows{gap:4px;margin:6px 0}.row{min-height:30px}.row .t{font-size:14px}.coins{margin:2px 0 6px;font-size:24px}.btn.big{min-height:64px;font-size:24px}.btn.mid{min-height:56px;font-size:22px}.ribbon{margin-bottom:4px;font-size:16px}.adrow{margin-top:12px}.btnrow{gap:8px;margin-top:4px}.tile{height:48px}.goalstrip,.manifest{margin:4px 0}.mech{margin:4px 0;padding:4px 10px}.logo{margin-top:2vh}.logo svg{width:60px;height:60px}.logo h1{font-size:32px}.menu .btn.big{min-height:60px}.menu{gap:10px}}@media (prefers-reduced-motion:reduce){.hint,.rot.ring:before,.node.cur .ball,.btn.pulse{animation:none}}.rm .hint,.rm .rot.ring:before,.rm .node.cur .ball,.rm .btn.pulse,.rm .confetti{animation:none!important}.rm .confetti{display:none}html[lang=ja] body{word-break:auto-phrase;line-break:strict}html[lang^=zh] body{line-break:strict}html[lang=th] body,html[lang=vi] body{line-height:1.5}html:not([lang=ko]):not([lang=en]) .btn .lbl{white-space:normal;text-overflow:clip;text-align:center;line-height:1.12;overflow:visible}html:not([lang=ko]):not([lang=en]) .btn.mid{font-size:calc(18px * var(--fs))}html[lang=th] .pill .v{line-height:1.4}
