:root{color:#f7f2df;background:#171421;font-family:system-ui,sans-serif;font-synthesis:none;text-rendering:optimizeLegibility}*{box-sizing:border-box}html,body{width:100%;height:100%;margin:0;overflow:hidden;overscroll-behavior:none}body{min-height:100dvh;background:radial-gradient(circle at 50% 20%,#353047 0,#171421 65%),#171421}#app{position:fixed;top:calc(var(--visual-viewport-top, 0px) + env(safe-area-inset-top));left:calc(var(--visual-viewport-left, 0px) + env(safe-area-inset-left));display:flex;width:calc(var(--visual-viewport-width, 100vw) - env(safe-area-inset-left) - env(safe-area-inset-right));height:calc(var(--visual-viewport-height, 100dvh) - env(safe-area-inset-top) - env(safe-area-inset-bottom));align-items:center;justify-content:center}.app-shell--hidden{visibility:hidden;opacity:0;pointer-events:none}canvas{display:block;margin:0!important;max-width:100%;max-height:100%;image-rendering:auto;box-shadow:0 24px 80px #00000073;touch-action:none}.game-dom-layer{position:absolute;z-index:80;overflow:hidden;pointer-events:none;user-select:none}.game-dom-layer button{font:inherit}.game-hud{color:#f7f2df;font-family:Rubik,system-ui,sans-serif}.game-hud__top{position:absolute;inset:calc(14px * var(--game-ui-scale, 1)) calc(24px * var(--game-ui-scale, 1)) auto;display:grid;grid-template-columns:minmax(calc(112px * var(--game-ui-scale, 1)),1fr) minmax(0,calc(590px * var(--game-ui-scale, 1))) minmax(calc(112px * var(--game-ui-scale, 1)),1fr);gap:calc(16px * var(--game-ui-scale, 1));align-items:start}.game-hud__scoreboard{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,.82fr);min-height:calc(76px * var(--game-ui-scale, 1));gap:calc(24px * var(--game-ui-scale, 1));align-items:center;padding:calc(12px * var(--game-ui-scale, 1)) calc(24px * var(--game-ui-scale, 1));border:calc(3px * var(--game-ui-scale, 1)) solid rgb(247 220 100 / 88%);border-radius:calc(7px * var(--game-ui-scale, 1));background:#171421b8;box-shadow:0 calc(10px * var(--game-ui-scale, 1)) calc(28px * var(--game-ui-scale, 1)) #00000042;backdrop-filter:blur(calc(3px * var(--game-ui-scale, 1)))}.game-hud__scoreboard--centered{grid-column:2}.game-hud__score,.game-hud__combo{min-width:0;color:#f7f2df;font-weight:900;line-height:1.05;white-space:nowrap}.game-hud__score{font-size:calc(27px * var(--game-ui-scale, 1))}.game-hud__combo{font-size:calc(23px * var(--game-ui-scale, 1));text-align:left}.game-hud__combo-block{display:grid;gap:calc(9px * var(--game-ui-scale, 1));min-width:0}.game-hud__meter{height:calc(8px * var(--game-ui-scale, 1));overflow:hidden;border-radius:999px;background:#4c4755}.game-hud__meter-fill{width:100%;height:100%;transform-origin:left center;transition:transform 80ms linear}.game-hud__nav,.game-hud__scheme{min-width:0;min-height:calc(40px * var(--game-ui-scale, 1));padding:calc(7px * var(--game-ui-scale, 1)) calc(11px * var(--game-ui-scale, 1));border:calc(3px * var(--game-ui-scale, 1)) solid #171421;border-radius:calc(5px * var(--game-ui-scale, 1));color:#171421;font:900 calc(15px * var(--game-ui-scale, 1))/1.05 Rubik,system-ui,sans-serif;overflow:hidden;text-overflow:clip;white-space:nowrap;background:#f7dc64;cursor:pointer;pointer-events:auto;touch-action:manipulation}.game-hud__nav--levels{justify-self:start}.game-hud__nav--retry{justify-self:end}.game-hud__nav:hover,.game-hud__nav:focus-visible,.game-hud__scheme:hover,.game-hud__scheme:focus-visible{background:#fff1a6}.game-hud__status{position:absolute;top:calc(98px * var(--game-ui-scale, 1));left:50%;max-width:min(72%,calc(720px * var(--game-ui-scale, 1)));min-height:calc(34px * var(--game-ui-scale, 1));padding:calc(7px * var(--game-ui-scale, 1)) calc(14px * var(--game-ui-scale, 1));border-radius:calc(5px * var(--game-ui-scale, 1));color:#4d432e;font:900 calc(19px * var(--game-ui-scale, 1))/1.08 Rubik,system-ui,sans-serif;text-align:center;background:#f7dc64;transform:translate(-50%)}.game-hud__hint{position:absolute;top:var(--hud-hint-y);left:var(--hud-hint-x);max-width:calc(260px * var(--game-ui-scale, 1));color:#4d432e;font:900 calc(17px * var(--game-ui-scale, 1))/1.28 Rubik,system-ui,sans-serif;text-align:center;white-space:pre-line;transform:translate(-50%)}.game-hud__footer{position:absolute;inset:auto calc(24px * var(--game-ui-scale, 1)) calc(17px * var(--game-ui-scale, 1));display:flex;align-items:end;justify-content:space-between;gap:calc(14px * var(--game-ui-scale, 1))}.game-hud__controls{color:#f7f2df;font:700 calc(14px * var(--game-ui-scale, 1))/1.2 Rubik,system-ui,sans-serif;text-shadow:0 2px 10px rgb(0 0 0 / 55%)}.game-hud__scheme{min-width:calc(128px * var(--game-ui-scale, 1));background:#71d69f}.game-hud__scheme:hover,.game-hud__scheme:focus-visible{background:#a7efc5}.game-hud__score--pulse{animation:game-hud-pulse .15s ease-out}.game-hud__combo--pulse{animation:game-hud-combo-pulse .17s ease-out}.game-hud__combo--hot.game-hud__combo--pulse{animation-name:game-hud-combo-hot-pulse}.game-hud__combo--expired{animation:game-hud-expired .18s ease-out}@keyframes game-hud-pulse{50%{transform:scale(1.14)}}@keyframes game-hud-combo-pulse{50%{transform:scale(1.16)}}@keyframes game-hud-combo-hot-pulse{50%{transform:scale(1.28)}}@keyframes game-hud-expired{0%{opacity:.25}to{opacity:1}}.result-overlay{position:absolute;z-index:120;inset:0;display:grid;place-items:center;padding:24px;background:#171421ad;opacity:0;pointer-events:auto;transition:opacity .16s ease-out}.result-overlay--shown{opacity:1}.result-overlay__panel{display:grid;width:min(620px,100%);max-height:min(560px,calc(100% - 24px));gap:18px;align-content:start;padding:30px 34px 28px;overflow:auto;border:5px solid #f29b4b;border-radius:8px;color:#f7f2df;background:#4d3346;box-shadow:0 22px 70px #0000007a}.result-overlay--success .result-overlay__panel{border-color:#f7dc64;background:#215f4c}.result-overlay__title{min-height:74px;margin:0;color:#fff;font:900 31px/1.18 Rubik,system-ui,sans-serif;text-align:center}.result-overlay__stars{display:flex;justify-content:center;gap:18px;min-height:76px;padding-top:2px}.result-overlay__star{display:inline-grid;width:72px;height:72px;place-items:center;color:#342f3d;font:900 60px/1 Arial,sans-serif;opacity:0;text-shadow:0 0 0 #746d7c,0 4px 0 rgb(0 0 0 / 22%);transform:scale(2.2) rotate(-18deg);animation:result-star-reveal .36s var(--delay) cubic-bezier(.2,1.4,.36,1) forwards}.result-overlay__star:nth-child(2){font-size:68px}.result-overlay__star--earned{color:#f7dc64;text-shadow:0 0 0 #fff1a6,0 4px 0 rgb(0 0 0 / 25%),0 0 18px rgb(247 220 100 / 40%)}.result-overlay__rating{min-height:22px;margin:-4px 0 0;color:#f7f2df;font:900 15px/1.25 Rubik,system-ui,sans-serif;text-align:center;opacity:0;transform:translateY(10px);transition:opacity .22s ease-out,transform .22s ease-out}.result-overlay__rating--shown{opacity:1;transform:translateY(0)}.result-overlay__rating--perfect{color:#f7dc64}.result-overlay__score{margin:0;color:#f7f2df;font:800 22px/1.45 Rubik,system-ui,sans-serif;text-align:center;white-space:pre-line}.result-overlay__unlock{justify-self:center;min-height:32px;margin:-4px 0 0;padding:8px 14px;border-radius:4px;color:#71d69f;font:900 18px/1 Rubik,system-ui,sans-serif;text-align:center;background:#1a3329;animation:result-unlock-reveal .35s 1.2s ease-out both}.result-overlay__actions{display:grid;grid-template-columns:repeat(auto-fit,minmax(116px,1fr));gap:12px;align-items:stretch;margin-top:2px}.result-overlay__button{min-height:50px;min-width:0;padding:8px 12px;border:3px solid #171421;border-radius:5px;color:#171421;font:900 15px/1.15 Rubik,system-ui,sans-serif;background:#f7dc64;cursor:pointer}.result-overlay__button:hover,.result-overlay__button:focus-visible{background:#fff}.result-overlay__button--primary{background:#71d69f}.result-overlay__button--primary:hover,.result-overlay__button--primary:focus-visible{background:#a7efc5}@keyframes result-star-reveal{to{opacity:1;transform:scale(1) rotate(0)}}@keyframes result-unlock-reveal{0%{opacity:0;transform:translateY(14px)}to{opacity:1;transform:translateY(0)}}.level-menu{position:fixed;inset:0;overflow:auto;color:#f7f2df;background:linear-gradient(115deg,#171421f0,#263242d6),#171421}.level-menu[hidden]{display:none}.level-menu__shell{display:grid;grid-template-columns:minmax(320px,.82fr) minmax(560px,1.18fr);width:min(1180px,calc(100vw - 40px));min-height:100dvh;gap:34px;align-items:center;margin:0 auto;padding:28px 0}.level-menu__cover{display:grid;gap:14px;justify-items:center;transform:rotate(-1.5deg)}.level-menu__cover-image{display:block;width:min(100%,470px);aspect-ratio:1 / 1;object-fit:cover;border:3px solid rgb(247 220 100 / 30%);box-shadow:0 18px 50px #00000061}.level-menu__cover-note{max-width:430px;margin:0;color:#bcb4ca;font:900 12px/1.45 Rubik,system-ui,sans-serif;letter-spacing:1px;text-align:center}.level-menu__registry{position:relative;display:grid;gap:16px;min-width:0}.level-menu__topbar{position:absolute;top:0;right:0;display:flex;gap:8px}.level-menu__icon-button,.level-menu__locale{min-width:38px;height:30px;border:2px solid #6f6977;border-radius:4px;color:#f7f2df;font:900 12px/1 Rubik,system-ui,sans-serif;background:#312d3d;cursor:pointer}.level-menu__icon-button:hover,.level-menu__locale:hover{background:#403a4f}.level-menu__locale--active,.level-menu__locale:disabled{border-color:#f7dc64;color:#171421;background:#f7dc64;cursor:default}.level-menu__header{display:grid;gap:8px;padding-right:150px;text-align:center}.level-menu__header h1{margin:0;color:#f7f2df;font:900 24px/1.15 Rubik,system-ui,sans-serif;letter-spacing:3px}.level-menu__header p{max-width:570px;margin:0 auto;color:#bcb4ca;font:600 13px/1.45 Rubik,system-ui,sans-serif}.level-menu__continue{display:grid;gap:8px;width:100%;min-height:88px;place-items:center;padding:14px 20px;border:4px solid #0d0b12;border-radius:6px;color:#171421;background:#f7dc64;box-shadow:0 12px 30px #00000047;cursor:pointer}.level-menu__continue:hover{background:#ffe779}.level-menu__continue-label{font:900 23px/1.1 Rubik,system-ui,sans-serif}.level-menu__continue-meta{color:#4d421d;font:900 12px/1.35 Rubik,system-ui,sans-serif}.level-menu__list-heading{margin:0;color:#f7dc64;font:900 14px/1.2 Rubik,system-ui,sans-serif;letter-spacing:2px;text-align:center}.level-menu__list{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));max-height:min(430px,calc(100dvh - 280px));gap:16px;padding:16px 18px 16px 16px;overflow-y:auto;border:2px solid rgb(111 105 119 / 28%);border-radius:6px;background:#17142152;scrollbar-color:#f7dc64 #4b4654}.level-menu__card{display:grid;min-height:148px;gap:7px;align-content:start;padding:14px 16px 16px;border:3px solid rgb(247 220 100 / 90%);border-radius:6px;color:#f7f2df;text-align:left;background:#312d3dfa;cursor:pointer}.level-menu__card:hover{border-width:4px;border-color:#ffec87f2;background:#403a4f}.level-menu__card--locked,.level-menu__card:disabled{border-color:#5e5869e5;color:#8f8997;background:#23202b;cursor:default}.level-menu__card--locked:hover,.level-menu__card:disabled:hover{border-width:3px;border-color:#5e5869e5;background:#23202b}.level-menu__card-top{display:flex;justify-content:space-between;gap:8px;align-items:center}.level-menu__card-number,.level-menu__card-status{display:inline-grid;place-items:center;min-height:24px;border:2px solid #171421;border-radius:4px;color:#171421;font:900 12px/1 Rubik,system-ui,sans-serif;background:#f7dc64}.level-menu__card-number{min-width:42px;font-size:15px}.level-menu__card-status{min-width:66px;background:#71d69f}.level-menu__card--locked .level-menu__card-number,.level-menu__card--locked .level-menu__card-status{color:#d8d1df;background:#5e5869}.level-menu__card-title{color:#fff;font:900 15px/1.25 Rubik,system-ui,sans-serif}.level-menu__card-department{color:#f7dc64;font:800 9px/1.25 Rubik,system-ui,sans-serif}.level-menu__card-score,.level-menu__card-stars{color:#f7f2df;font:800 10px/1.3 Rubik,system-ui,sans-serif}.level-menu__card-stars{color:#f7dc64}.level-menu__card--locked .level-menu__card-title,.level-menu__card--locked .level-menu__card-department,.level-menu__card--locked .level-menu__card-score{color:#797381}.fullscreen-button{position:fixed;top:calc(var(--visual-viewport-top, 0px) + env(safe-area-inset-top) + 10px);right:calc(env(safe-area-inset-right) + 10px);z-index:900;width:42px;height:42px;padding:0 0 3px;border:2px solid #f7dc64;border-radius:4px;color:#f7dc64;font:900 24px/1 system-ui,sans-serif;background:#171421d1;box-shadow:0 4px 16px #00000059;touch-action:manipulation}@media(max-width:900px){.level-menu__shell{grid-template-columns:1fr;width:min(680px,calc(100vw - 28px));gap:22px;padding:20px 0}.level-menu__cover{transform:none}.level-menu__cover-image{width:min(72vw,300px)}.level-menu__header{padding-right:0;padding-top:42px}.level-menu__list{grid-template-columns:1fr;max-height:none}.result-overlay{padding:14px}.result-overlay__panel{gap:14px;max-height:calc(100% - 16px);padding:22px 18px 20px}.result-overlay__title{min-height:0;font-size:25px}.result-overlay__stars{gap:10px;min-height:62px}.result-overlay__star{width:58px;height:58px;font-size:50px}.result-overlay__star:nth-child(2){font-size:56px}.result-overlay__score{font-size:18px}.result-overlay__unlock{font-size:14px}}@media(max-height:520px),(max-width:700px){.game-hud__nav,.game-hud__scheme{min-height:max(28px,calc(34px * var(--game-ui-scale, 1)));padding:max(5px,calc(6px * var(--game-ui-scale, 1))) max(10px,calc(12px * var(--game-ui-scale, 1)));border-width:max(2px,calc(2px * var(--game-ui-scale, 1)));border-radius:max(4px,calc(5px * var(--game-ui-scale, 1)));font-size:max(10px,calc(11px * var(--game-ui-scale, 1)));transform:scale(.7)}.game-hud__scheme{min-width:max(84px,calc(96px * var(--game-ui-scale, 1)));transform-origin:right bottom}.game-hud__nav--levels{transform-origin:left top}.game-hud__nav--retry{transform-origin:right top}.game-hud__scoreboard{grid-template-columns:minmax(0,1fr) minmax(0,.86fr);min-height:calc(66px * var(--game-ui-scale, 1));padding:calc(9px * var(--game-ui-scale, 1)) calc(19px * var(--game-ui-scale, 1))}.game-hud__status{top:calc(88px * var(--game-ui-scale, 1))}}@media(max-height:520px){.result-overlay{align-items:center;padding:6px 10px}.result-overlay__panel{width:min(650px,100%);max-height:calc(100% - 12px);gap:8px;padding:14px 18px 12px;border-width:4px}.result-overlay__title{min-height:0;font-size:22px;line-height:1.08}.result-overlay__stars{gap:10px;min-height:42px}.result-overlay__star{width:42px;height:42px;font-size:38px}.result-overlay__star:nth-child(2){font-size:42px}.result-overlay__rating{min-height:18px;margin-top:-2px;font-size:12px}.result-overlay__score{font-size:15px;line-height:1.25}.result-overlay__unlock{min-height:0;padding:6px 10px;font-size:12px}.result-overlay__actions{grid-template-columns:repeat(4,minmax(0,1fr));gap:8px}.result-overlay__button{min-height:34px;padding:6px 8px;border-width:2px;font-size:11px}}.fullscreen-button[hidden]{display:none}.fullscreen-button:active{color:#171421;background:#f7dc64}.dev-panel{position:fixed;top:calc(var(--visual-viewport-top, 0px) + env(safe-area-inset-top) + 10px);left:calc(var(--visual-viewport-left, 0px) + env(safe-area-inset-left) + 10px);z-index:950;width:min(310px,calc(100vw - 20px));color:#e8f5ef;font:700 12px/1.35 ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;filter:drop-shadow(0 6px 18px rgb(0 0 0 / 42%))}.dev-panel button,.dev-panel select,.dev-panel input{font:inherit}.dev-panel__toggle{display:flex;min-height:34px;align-items:center;padding:7px 10px;border:1px solid #71d69f;border-radius:4px;color:#71d69f;background:#0c1214e0;cursor:pointer}.dev-panel__summary{color:#c7d8d1;font-weight:600}.dev-panel__content{display:none;gap:10px;margin-top:5px;padding:12px;border:1px solid rgb(113 214 159 / 65%);border-radius:4px;background:#0c1214f0;backdrop-filter:blur(8px)}.dev-panel--open .dev-panel__content{display:grid}.dev-panel__field{display:grid;gap:4px;color:#8ca89d}.dev-panel__select{width:100%;min-width:0;padding:7px 8px;border:1px solid #58796b;border-radius:3px;color:#edf7f2;background:#18251f}.dev-panel__checkbox{display:flex;align-items:center;color:#dcebe4;cursor:pointer}.dev-panel__checkbox input{width:16px;height:16px;margin:0 7px 0 0;accent-color:#71d69f}.dev-panel__metrics{min-height:136px;margin:0;padding:9px;overflow:hidden;border:1px solid #354c42;border-radius:3px;color:#cce2d8;line-height:1.55;background:#0a100d}.dev-panel__legend{color:#829c91;font-size:10px;font-weight:600;line-height:1.4}.dev-panel__reset{padding:8px 10px;border:1px solid #ff7b7b;border-radius:3px;color:#ff9a9a;background:#2b171a;cursor:pointer}.dev-panel__toggle:hover,.dev-panel__toggle:focus-visible{color:#0c1214;background:#71d69f}.dev-panel__toggle:hover .dev-panel__summary,.dev-panel__toggle:focus-visible .dev-panel__summary{color:#20352c}.dev-panel__reset:hover,.dev-panel__reset:focus-visible{color:#2b171a;background:#ff9a9a}.level-editor{position:fixed;top:calc(var(--visual-viewport-top, 0px) + env(safe-area-inset-top) + 10px);right:calc(var(--visual-viewport-left, 0px) + env(safe-area-inset-right) + 10px);z-index:940;display:grid;width:min(286px,calc(100vw - 20px));max-height:calc(100dvh - 20px);gap:9px;padding:33px 13px 13px;overflow-y:auto;border:2px solid #f7dc64;border-radius:4px;color:#f7f2df;font:800 11px/1.35 ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;background:#171421f2;box-shadow:0 8px 28px #0000007a;backdrop-filter:blur(8px);touch-action:none}.level-editor[hidden]{display:none}.level-editor input,.level-editor select,.level-editor button{font:inherit}.level-editor__drag-handle{position:absolute;top:8px;left:50%;transform:translate(-50%);width:36px;height:18px;display:flex;align-items:center;justify-content:center;color:#f7dc64;font-size:13px;cursor:grab;user-select:none;border-radius:3px;background:#f7dc641f;transition:background .15s}.level-editor__drag-handle:hover{background:#f7dc6447}.level-editor__drag-handle:active{cursor:grabbing}.level-editor__heading{color:#f7dc64;font-size:15px}.level-editor__hint{color:#a9a2b5;font-size:10px}.level-editor__selection{min-height:43px;padding:8px;white-space:pre-line;border:1px solid #5e5869;border-radius:3px;color:#fff;background:#100e17}.level-editor__coordinates{display:grid;grid-template-columns:1fr 1fr;gap:8px}.level-editor__slot-fields{display:grid;gap:8px;padding-top:2px}.level-editor__slot-fields[hidden]{display:none}.level-editor__field{display:grid;gap:3px;color:#aaa3b7}.level-editor__field input,.level-editor__field select{width:100%;min-width:0;padding:7px;border:1px solid #665f73;border-radius:3px;color:#fff;background:#252131}.level-editor__star-info{color:#c9f3f3;font-size:10px;padding:4px 0;line-height:1.4}.level-editor__button{min-height:34px;padding:7px 9px;border:1px solid #8dd8dd;border-radius:3px;color:#c9f3f3;background:#183033;cursor:pointer}.level-editor__button:hover,.level-editor__button:focus-visible{color:#171421;background:#8dd8dd}.level-editor__button--primary{border-color:#71d69f;color:#a8ecc5;background:#173024}.level-editor__button--primary:hover,.level-editor__button--primary:focus-visible{background:#71d69f}.level-editor__button--danger{border-color:#ff7b7b;color:#ffadad;background:#35191f}.level-editor__button--danger:hover,.level-editor__button--danger:focus-visible{background:#ff7b7b}.level-editor__status{min-height:30px;color:#a8ecc5;font-size:10px}.level-editor__status--error{color:#ff9a9a}.orientation-overlay{position:fixed;inset:0;z-index:1000;display:grid;grid-template-rows:auto auto auto;align-content:center;justify-items:center;gap:18px;padding:max(28px,env(safe-area-inset-top)) max(28px,env(safe-area-inset-right)) max(28px,env(safe-area-inset-bottom)) max(28px,env(safe-area-inset-left));color:#f7f2df;text-align:center;background:#171421}.orientation-overlay[hidden]{display:none}.orientation-overlay h1{max-width:360px;margin:8px 0 0;color:#f7dc64;font-family:Rubik,system-ui,sans-serif;font-size:28px;font-weight:900;line-height:1.05}.orientation-overlay p{max-width:330px;margin:0;color:#d8d1df;font-family:Rubik,system-ui,sans-serif;font-size:16px;font-weight:700;line-height:1.4}.orientation-phone{position:relative;width:82px;height:132px;border:6px solid #f7dc64;border-radius:8px;animation:rotate-phone 1.8s ease-in-out 1}.orientation-phone__screen{position:absolute;inset:12px 8px 18px;border:3px solid #8dd8dd;background:#312d3d}.orientation-phone__button{position:absolute;bottom:5px;left:50%;width:16px;height:4px;background:#f7dc64;transform:translate(-50%)}@keyframes rotate-phone{0%,22%{transform:rotate(0)}62%,to{transform:rotate(90deg)}}@media(prefers-reduced-motion:reduce){.orientation-phone{animation:none;transform:rotate(90deg)}}
