@import "https://fonts.googleapis.com/css2?family=Noto+Sans+SC:wght@400;500;600;700&display=swap";:root{color:#f8f6ff;font-synthesis:none;-webkit-tap-highlight-color:transparent;--ink:#f8f6ff;--muted:#aaa6c3;--surface:#25213d;--surface-2:#302b4a;--violet:#8d78ff;--violet-bright:#b6a8ff;--coral:#ff686b;--gold:#ffd998;background:#19162d;font-family:Noto Sans SC,system-ui,sans-serif}*{box-sizing:border-box}html,body,#app{min-height:100%}body{background:radial-gradient(circle at 50% -10%,#765be53d,#0000 42%),linear-gradient(170deg,#1d1934 0%,#171429 68%,#121020 100%);min-width:320px;min-height:100dvh;margin:0;overflow-x:hidden}button{color:inherit;font:inherit}button:focus-visible{outline:2px solid var(--gold);outline-offset:3px}.view{width:min(100%,540px);min-height:100dvh;padding:max(22px, env(safe-area-inset-top)) 24px max(24px, env(safe-area-inset-bottom));margin:0 auto;position:relative}.eyebrow{color:var(--violet-bright);letter-spacing:.24em;margin:0;font-size:11px;font-weight:700}.icon-button{cursor:pointer;background:#ffffff0b;border:1px solid #ffffff17;border-radius:14px;place-items:center;width:44px;height:44px;padding:0;font-size:20px;display:grid}.top-right{z-index:2;top:max(22px, env(safe-area-inset-top));position:absolute;right:24px}.home-view{padding-top:max(76px, calc(env(safe-area-inset-top) + 62px));flex-direction:column;justify-content:space-between;display:flex}.hero{margin:auto 0}.logo-grid{grid-template:repeat(3,1fr)/repeat(3,1fr);gap:5px;width:72px;height:72px;margin-bottom:28px;display:grid;transform:rotate(-8deg)}.logo-grid i{background:var(--surface-2);border-radius:7px;box-shadow:inset 0 0 0 1px #ffffff0a}.logo-grid i:first-child,.logo-grid i:nth-child(4),.logo-grid i:nth-child(5),.logo-grid i:nth-child(6),.logo-grid i:nth-child(7){background:linear-gradient(135deg, var(--coral), #ff8a77);box-shadow:0 0 18px #ff686b47}.hero h1{letter-spacing:-.07em;margin:12px 0 20px;font-size:clamp(54px,17vw,82px);font-weight:700;line-height:.94}.hero h1 span{color:var(--coral)}.subtitle{color:var(--muted);font-size:15px;line-height:1.8}.home-actions,.complete-actions{gap:12px;width:100%;display:grid}.button{cursor:pointer;border:0;border-radius:19px;min-height:58px;padding:0 22px;font-weight:600;transition:transform .16s,filter .16s}.button:active{transform:scale(.98)}.button-primary{color:#1c1630;background:linear-gradient(135deg,#c4b8ff,#8d78ff);justify-content:space-between;align-items:center;display:flex;box-shadow:0 14px 34px #5b44be52}.button-support{color:#ffd9dc;background:#ff686b1f;border:1px solid #ff686b33}.text-button{min-height:44px;color:var(--muted);cursor:pointer;background:0 0;border:0}[aria-busy=true]{opacity:.65;pointer-events:none}.game-view{grid-template-rows:auto 1fr auto;gap:18px;display:grid;overflow:hidden}.game-header{grid-template-columns:88px 1fr 88px;align-items:center;display:grid}.header-actions{justify-content:end;gap:7px;display:flex}.header-actions .icon-button{width:40px;height:40px}.level-copy{justify-items:center;gap:3px;display:grid}.level-copy span{color:var(--violet-bright);letter-spacing:.18em;font-size:10px;font-weight:700}.level-copy strong{font-size:15px;font-weight:500}.board-shell{align-content:center;place-items:center;gap:24px;min-height:0;display:grid}.board-host{place-items:center;width:100%;display:grid}.board{--gap:clamp(5px, 1.5vw, 8px);width:min(88vw,440px);aspect-ratio:var(--cols) / var(--rows);grid-template-columns:repeat(var(--cols), 1fr);grid-template-rows:repeat(var(--rows), 1fr);touch-action:none;-webkit-user-select:none;user-select:none;display:grid;position:relative}.cell{z-index:1;margin:calc(var(--gap) / 2);background:linear-gradient(145deg,#3b3655,#302c49);border-radius:clamp(7px,2vw,13px);transition:background .14s,box-shadow .18s,transform .14s;position:relative;overflow:hidden;box-shadow:inset 0 1px #ffffff0e,0 5px 15px #0000001a}.cell[data-lit=true]{background:linear-gradient(145deg,#9f8bff,#715ce9);box-shadow:0 0 20px #8269ff52,inset 0 1px #ffffff42}.cell[aria-current]{transform:scale(.94)}.cell[data-start=true]{background:linear-gradient(145deg,#ff7f79,#f25564)}.start-core{background:#691c3840;border-radius:50%;position:absolute;inset:24%;box-shadow:0 0 0 5px #ffffff17,0 0 18px #ff75748c}.route-layer{z-index:3;pointer-events:none;width:100%;height:100%;position:absolute;inset:0;overflow:visible}.route-line{fill:none;stroke:#eeeaff;stroke-width:7px;stroke-linecap:round;stroke-linejoin:round;vector-effect:non-scaling-stroke;filter:drop-shadow(0 0 5px #ddd4ffe6)drop-shadow(0 0 13px #8970ffd9)}.board.is-complete .cell[data-lit=true]{animation:.9s both cell-finish}.board.is-complete .route-line{animation:1s both route-finish}@keyframes route-finish{0%{stroke:#fff;filter:drop-shadow(0 0 5px #fff)}48%{stroke:#ffdca3;filter:drop-shadow(0 0 12px #fff)drop-shadow(0 0 26px #ffbf78)}to{stroke:#fff;filter:drop-shadow(0 0 8px #fff)drop-shadow(0 0 18px #9c82ff)}}@keyframes cell-finish{50%{filter:brightness(1.35);transform:scale(1.06)}}.tutorial-copy{color:var(--muted);letter-spacing:.04em;margin:0;font-size:12px;transition:opacity .35s}.fade-out{opacity:0}.progress-dots{justify-content:center;gap:7px;display:flex}.progress-dots i{background:#413a60;border-radius:99px;width:5px;height:5px;transition:width .2s}.progress-dots i.active{background:var(--violet);width:17px}.complete-view{text-align:center;padding-top:max(74px, env(safe-area-inset-top));flex-direction:column;justify-content:space-between;align-items:center;display:flex}.complete-copy{margin:auto 0}.completion-orbit{width:104px;height:104px;color:var(--gold);border:1px solid #b6a8ff42;border-radius:50%;place-items:center;margin:0 auto 32px;font-size:40px;animation:3s ease-in-out infinite orbit;display:grid;box-shadow:0 0 55px #8b73ff40,inset 0 0 28px #ffffff0a}@keyframes orbit{50%{transform:translateY(-6px)rotate(8deg);box-shadow:0 0 75px #8b73ff61}}.complete-copy h1{letter-spacing:-.05em;margin:12px 0 15px;font-size:44px}.complete-copy>p:last-child{color:var(--muted);line-height:1.8}.sheet-backdrop{z-index:20;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);background:#0806119e;justify-content:center;align-items:end;padding:16px;display:flex;position:fixed;inset:0}.settings-sheet{background:#27223e;border:1px solid #ffffff17;border-radius:26px;width:min(100%,500px);padding:22px;box-shadow:0 20px 60px #00000073}.settings-sheet header{justify-content:space-between;align-items:center;margin-bottom:15px;display:flex}.setting-row{text-align:left;cursor:pointer;background:0 0;border:0;border-top:1px solid #ffffff12;justify-content:space-between;align-items:center;width:100%;min-height:70px;display:flex}.setting-row span{gap:4px;font-weight:500;display:grid}.setting-row small{color:var(--muted);font-size:11px;font-weight:400}.switch{background:#49435f;border-radius:20px;width:46px;height:27px;position:relative}.switch:after{content:"";background:#aaa5bc;border-radius:50%;width:19px;height:19px;transition:all .2s;position:absolute;top:4px;left:4px}.switch.on{background:var(--violet)}.switch.on:after{background:#fff;left:23px}.toast{z-index:40;bottom:max(28px, env(safe-area-inset-bottom));color:#221c36;background:#f4efff;border-radius:14px;padding:12px 18px;font-size:13px;position:fixed;left:50%;transform:translate(-50%);box-shadow:0 10px 30px #0000004d}@media (width>=700px){body{padding:20px}.view{background:#14112580;border:1px solid #ffffff0d;border-radius:34px;min-height:calc(100dvh - 40px);box-shadow:0 30px 90px #0000003d}}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}html,body{width:100%;min-height:100%}body{place-items:center;min-height:100dvh;padding:16px;display:grid;overflow:hidden}#app{width:390px;height:min(844px,100dvh - 32px);min-height:0}.view{background:#1411259e;border:1px solid #ffffff0f;border-radius:32px;width:100%;height:100%;min-height:0;overflow:hidden;box-shadow:0 30px 90px #00000047}.game-view{padding:max(16px, env(safe-area-inset-top)) 12px max(16px, env(safe-area-inset-bottom))}.game-header{grid-template-columns:82px 1fr 82px}.board-shell{gap:14px}.board{width:min(100%,370px);max-height:calc(100dvh - 180px)}.cell{transition:transform 35ms linear}.cell[data-lit=true]{transition:none}.route-line{pointer-events:none}.board[data-level="1"]{--start-light:#ffd77a;--start-dark:#e8a948;--start-core:#97621a57}.board[data-level="2"]{--start-light:#ff7773;--start-dark:#e64f59;--start-core:#aa2d3857}.board[data-level="3"]{--start-light:#53df83;--start-dark:#35c966;--start-core:#14914759}.board[data-level="4"]{--start-light:#46d9d3;--start-dark:#27beb9;--start-core:#00817f59}.board[data-level="5"]{--start-light:#a7e86f;--start-dark:#84cf50;--start-core:#4d912259}.board[data-level="6"]{--start-light:#f386ce;--start-dark:#df63b4;--start-core:#a8368059}.cell[data-start=true]{background:linear-gradient(145deg, var(--start-light), var(--start-dark));box-shadow:0 0 20px color-mix(in srgb, var(--start-light) 48%, transparent)}.cell[data-start=true] .start-core{background:var(--start-core)}@media (width<=430px){body{padding:0;display:block}#app{width:100%;height:100dvh}.view{box-shadow:none;border:0;border-radius:0}}@media (height<=700px){.game-view{gap:8px;padding-top:10px;padding-bottom:10px}.game-header .icon-button{width:36px;height:36px}.tutorial-copy{display:none}}.board{contain:layout paint}.route-glow,.route-line,.route-current{fill:none;stroke-linecap:round;stroke-linejoin:round;vector-effect:non-scaling-stroke;pointer-events:none;filter:none}.route-glow{stroke:#846bff57;stroke-width:15px}.route-line{stroke:#f5f2ff;stroke-width:5px}.route-current{opacity:0;stroke:#fff6bd;stroke-width:8px;stroke-dasharray:.16 .84;stroke-dashoffset:.16px;filter:drop-shadow(0 0 4px #fffffffa)drop-shadow(0 0 10px #ffcd69e6)}.board.is-complete .route-current{animation:1s linear both electric-current-run}@keyframes electric-current-run{0%{opacity:0;stroke-dashoffset:.16px}8%,88%{opacity:1}to{opacity:0;stroke-dashoffset:-.84px}}.cell[data-lit=true]{box-shadow:inset 0 1px #ffffff47}.board.is-complete .route-glow{stroke:#ffd39475;opacity:.85}#app{position:relative;overflow:hidden}.sheet-backdrop{border-radius:inherit;width:100%;padding:12px;position:absolute}.settings-sheet{width:100%;max-width:none}.level-select-view{padding:max(26px, env(safe-area-inset-top)) 16px max(18px, env(safe-area-inset-bottom));background:radial-gradient(circle at 84% 8%,#8c76ff33,#0000 34%),#141125b8;grid-template-rows:auto 1fr;gap:18px;display:grid}.level-select-header{justify-content:space-between;align-items:start;padding:2px 4px 0;display:flex}.level-select-header h1{letter-spacing:-.05em;margin:7px 0 5px;font-size:32px}.level-select-header>div>p:last-child{color:var(--muted);margin:0;font-size:11px}.level-grid{grid-template-columns:repeat(2,minmax(0,1fr));align-content:center;gap:10px;min-height:0;display:grid}.level-card{min-height:188px;color:var(--ink);text-align:left;cursor:pointer;background:linear-gradient(155deg,#3e365ceb,#231f3afa);border:1px solid #ffffff14;border-radius:22px;grid-template-rows:auto 1fr auto;gap:8px;padding:13px;transition:transform .16s,border-color .16s,filter .16s;display:grid;position:relative;overflow:hidden;box-shadow:0 9px 24px #04030e29}.level-card:active:not(:disabled){transform:scale(.975)}.level-card-top,.level-card-bottom{z-index:3;justify-content:space-between;align-items:center;display:flex;position:relative}.level-card-top strong{color:var(--violet-bright);letter-spacing:.14em;font-size:9px}.level-card-top em{color:var(--muted);background:#ffffff0f;border-radius:99px;padding:3px 6px;font-size:8px;font-style:normal}.level-card-bottom{gap:3px;display:grid}.level-card-bottom b{font-size:13px;font-weight:600}.level-card-bottom small{color:var(--muted);font-size:9px}.level-card-visual{z-index:2;place-items:center;min-height:88px;display:grid;position:relative}.level-miniature{grid-template-columns:repeat(var(--mini-cols), 1fr);grid-template-rows:repeat(var(--mini-rows), 1fr);gap:2px;width:min(100%,108px);height:78px;display:grid}.level-miniature i{background:linear-gradient(145deg,#a18dff,#7662e5);border-radius:2px;min-width:0;min-height:0;box-shadow:0 0 5px #846bff2e}.level-miniature i.is-start{background:linear-gradient(145deg,#ff8a7f,#f15968);box-shadow:0 0 7px #ff686b57}.level-lock{background:#4a445f;border-radius:12px;width:46px;height:40px;margin-top:12px;display:block;position:relative;box-shadow:inset 0 1px #ffffff14}.level-lock:before{content:"";border:5px solid #6b647f;border-bottom:0;border-radius:16px 16px 0 0;width:25px;height:24px;position:absolute;top:-17px;left:9px}.level-lock i{background:#928aa8;border-radius:5px;width:6px;height:12px;position:absolute;top:14px;left:20px}.level-lock.is-open{background:linear-gradient(145deg,#9d88ff,#705be3);box-shadow:0 0 24px #8065ff4d}.level-lock.is-open:before{transform-origin:0 100%;border-color:#bdb0ff;top:-18px;left:21px;transform:rotate(18deg)}.level-lock.is-open i{background:#e8e2ff}.level-card.is-current{background:radial-gradient(circle at 50% 42%,#8b73ff33,#0000 45%),linear-gradient(155deg,#493d74fa,#282146fa);border-color:#b6a8ff80;box-shadow:0 12px 32px #4931ab40}.level-card.is-current .level-card-top em{color:#dcd4ff;background:#9d88ff2e}.level-card.is-completed .level-card-top em{color:#8be0b0;background:#6ada9b1f}.level-card.is-locked{cursor:default;filter:saturate(.35)}.level-card.is-locked:after{content:"";z-index:1;background:#0c0a1738;position:absolute;inset:0}.level-card.is-locked .level-card-top,.level-card.is-locked .level-card-bottom{opacity:.48}@media (height<=760px){.level-select-view{gap:10px;padding-top:14px;padding-bottom:12px}.level-select-header h1{margin-top:3px;font-size:27px}.level-grid{gap:7px}.level-card{border-radius:18px;min-height:158px;padding:10px}.level-card-visual{min-height:68px}.level-miniature{width:min(100%,92px);height:62px}}.language-setting{border-top:1px solid #ffffff14;gap:12px;padding:16px 2px 4px;display:grid}.language-setting>span{gap:3px;font-size:14px;font-weight:650;display:grid}.language-setting small{color:var(--muted);font-size:10px;font-weight:400}.language-options{grid-template-columns:repeat(3,minmax(0,1fr));gap:7px;display:grid}.language-option{min-width:0;color:var(--muted);font:inherit;cursor:pointer;background:#ffffff0d;border:1px solid #ffffff17;border-radius:11px;padding:10px 5px;font-size:11px}.language-option[aria-pressed=true]{color:#f4f0ff;background:#866cff33;border-color:#b09eff99;box-shadow:0 0 18px #7458ee29}.game-footer{justify-items:center;gap:11px;display:grid}.game-rule-copy{color:#d3cde5b8;text-align:center;letter-spacing:.02em;margin:0;font-size:10px;line-height:1.5}.hint-purchase-dialog{text-align:center;background:radial-gradient(circle at 50% 8%,#ffd28021,#0000 32%),radial-gradient(circle at 50% 100%,#8d78ff1f,#0000 46%),linear-gradient(155deg,#2b2546,#24203b);border-color:#bbabff33;align-content:center;justify-items:center;gap:18px;width:min(100%,390px);min-height:305px;padding:48px 24px 24px;position:relative;overflow:hidden;box-shadow:0 24px 70px #03020c94,inset 0 1px #ffffff0d}.hint-purchase-dialog:before{content:"";border:1px solid #ffdca014;border-radius:50%;width:180px;height:180px;position:absolute;top:-115px;left:50%;transform:translate(-50%)}.hint-purchase-close{z-index:2;color:#aaa4c3;background:0 0;border:0;width:38px;height:38px;font-size:24px;transition:color .16s,background .16s;position:absolute;top:12px;right:12px}.hint-purchase-close:active{color:var(--ink);background:#ffffff0f}.hint-token{color:#694017;background:radial-gradient(circle at 35% 28%,#fff2c9 0 8%,#0000 9%),linear-gradient(145deg,#ffd88f,#e8a94d 62%,#a96a28);border:1px solid #ffe0a480;border-radius:50%;place-items:center;width:72px;height:72px;font-size:29px;display:grid;position:relative;box-shadow:0 0 0 7px #ffd4820e,0 0 30px #ffc15b38,inset 0 2px 3px #ffffff80,inset 0 -3px 8px #7743144d}.hint-token:after{content:"";border-radius:inherit;border:1px solid #6f3d1340;position:absolute;inset:6px}.hint-token span{z-index:1;filter:drop-shadow(0 1px #ffffff47);position:relative}.hint-purchase-copy{justify-items:center;gap:10px;max-width:290px;display:grid}.hint-purchase-copy .eyebrow{color:var(--gold);letter-spacing:.19em;font-size:10px}.hint-purchase-message{color:#d4d0e2;margin:0;font-size:15px;font-weight:500;line-height:1.65}.hint-purchase-confirm{text-align:center;color:#21193a;justify-content:center;gap:8px;width:100%;min-height:54px;margin-top:3px;font-size:14px;box-shadow:0 12px 28px #654cce4d,inset 0 1px #ffffff4d}.hint-purchase-confirm span{color:#66511c;font-size:14px}@media (height<=700px){.game-footer{gap:7px}.hint-purchase-dialog{gap:13px;min-height:290px;padding-top:40px}.hint-token{width:62px;height:62px;font-size:25px}}.hint-button{color:var(--gold);font-weight:700}.hint-backdrop{z-index:30;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);background:#080611c7;place-items:center;width:100%;padding:12px;display:grid;position:absolute;inset:0}.hint-dialog{background:#27223e;border:1px solid #ffffff1a;border-radius:26px;gap:20px;width:100%;max-height:calc(100% - 24px);padding:20px;display:grid;overflow:auto;box-shadow:0 20px 60px #0000007a}.hint-dialog header{justify-content:space-between;align-items:center;display:flex}.hint-dialog h2{margin:7px 0 0;font-size:20px}.hint-board{width:min(100%,340px);aspect-ratio:var(--hint-cols) / var(--hint-rows);grid-template-columns:repeat(var(--hint-cols), 1fr);grid-template-rows:repeat(var(--hint-rows), 1fr);margin:0 auto;display:grid;position:relative}.hint-route{z-index:1;pointer-events:none;width:100%;height:100%;position:absolute;inset:0;overflow:visible}.hint-route polyline{fill:none;stroke:#d2c9ffd1;stroke-width:3px;stroke-linecap:round;stroke-linejoin:round;vector-effect:non-scaling-stroke}.hint-cell{z-index:2;color:#fff;background:linear-gradient(145deg,#62558d,#443a69);border:1px solid #ffffff1f;border-radius:clamp(5px,1.6vw,9px);place-items:center;margin:2px;font-size:clamp(8px,2.5vw,12px);font-weight:700;line-height:1;display:grid;position:relative;box-shadow:0 3px 8px #0000002e}.hint-cell.is-start{background:linear-gradient(145deg,#ff7f79,#f25564);box-shadow:0 0 14px #ff686b6b}.hint-copy{color:var(--muted);text-align:center;margin:0;font-size:12px}@media (height<=700px){.hint-dialog{gap:12px;padding:14px}.hint-board{width:min(100%,292px)}}
