body{margin:0;overflow:hidden}canvas{display:block}#app{position:fixed;top:0;left:0;width:100%;height:100%}#minimap{position:fixed;bottom:0;left:0;width:min(40vw,350px);height:min(40vw,350px);overflow:hidden;border-top:1px solid rgba(255,255,255,.12);border-right:1px solid rgba(255,255,255,.12);z-index:100}.levelItem{box-sizing:border-box;position:relative;width:148px;display:flex;flex-direction:column;align-items:center;gap:7px;padding:6px;cursor:pointer;border-radius:14px;border:3px solid transparent;transition:transform .15s ease,box-shadow .15s ease,border-color .15s ease}.levelItem:hover{transform:scale(1.05);box-shadow:0 0 0 2px #3b82f6cc,0 8px 24px #00000080}.levelItem.nextLevel{border-color:#3b82f6;box-shadow:0 0 16px #3b82f673}.levelItem.nextLevel:hover{box-shadow:0 0 0 2px #3b82f6e6,0 8px 24px #00000080}.lockedLevel{filter:grayscale(1) opacity(.3);cursor:not-allowed}.lockedLevel:hover{transform:none;box-shadow:none}.levelStars{min-height:17px}.levelThumbWrap{position:relative;width:100%;aspect-ratio:1 / 1;border-radius:10px;overflow:hidden}.levelThumbnail{width:100%;height:100%;object-fit:cover;display:block}.levelDifficultyDot{position:absolute;top:8px;right:8px;width:10px;height:10px;border-radius:50%;box-shadow:0 0 0 2px #0009}.levelNumber{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);font-size:32px;font-weight:800;color:#fff;font-family:ui-sans-serif,system-ui,sans-serif;text-shadow:0 0 12px rgba(0,0,0,1),0 0 32px rgba(0,0,0,.9);letter-spacing:-.5px}.starsRow{display:flex;gap:4px;justify-content:center}.starSlot{display:inline-flex}.star{width:22px;height:22px;stroke:#fbbf24;stroke-width:1.5;fill:none;opacity:.4;display:block}.starSlot.filled .star{fill:#fbbf24;opacity:1}.starsRowSmall .star{width:12px;height:12px;stroke-width:2}.starsRowGrid{gap:5px}.starsRowGrid .star{width:17px;height:17px;stroke-width:1.5}.starsRowLarge .star{width:36px;height:36px}.starSlot.pop .star{animation:starPop .5s cubic-bezier(.34,1.56,.64,1) both}@keyframes starPop{0%{transform:scale(0) rotate(-20deg);opacity:0}55%{transform:scale(1.3) rotate(8deg);opacity:1}80%{transform:scale(.92) rotate(-3deg)}to{transform:scale(1) rotate(0)}}#redispatchUnbalance:empty{display:none!important}.money-badge:empty{display:none}.error-toast{position:fixed;bottom:20px;left:50%;transform:translate(-50%);background:#991b1b;color:#fff;padding:12px 20px;border-radius:10px;font-family:ui-sans-serif,system-ui,sans-serif;font-size:14px;line-height:1.5;box-shadow:0 4px 20px #0009;animation:fadeInOut 4s ease-in-out forwards;text-align:center;z-index:9999;max-width:400px;border:1px solid rgba(255,255,255,.1)}@keyframes fadeInOut{0%{opacity:0;transform:translate(-50%,16px)}12%{opacity:1;transform:translate(-50%)}85%{opacity:1;transform:translate(-50%)}to{opacity:0;transform:translate(-50%,16px)}}#solvedOverlay{transition:opacity 1s ease-out}html[data-theme=light] #minimap{border-color:#0000001a}html[data-theme=light] #LevelInfoPanel{background:#ffffffeb;color:#111827;border-color:#0000001a}html[data-theme=light] #moneyAmount{background:#ffffffeb;color:#d97706;border-color:#0000001a}html[data-theme=light] #helpBtn,html[data-theme=light] #themeToggleBtn{background:#ffffffeb;color:#374151;border-color:#0000001a}html[data-theme=light] #helpBtn:hover,html[data-theme=light] #themeToggleBtn:hover{background:#0000000f}html[data-theme=light] #guestSignInBtn{background:#ffffffeb;color:#d97706;border-color:#f59e0b59}html[data-theme=light] #menuButtons button{background:#fffffff7;color:#111827;border-color:#0000001a}html[data-theme=light] #menuButtons button:hover{background:#0000000d;color:#111827}html[data-theme=light] #menuButtons button svg{color:#9ca3af}html[data-theme=light] #solvedPill{background:#fffffff7;border-color:#05966959}html[data-theme=light] #solvedPill span{color:#059669}html[data-theme=light] #redispatchUnbalance{background:#ffffffeb;color:#dc2626;border-color:#dc262659}html[data-theme=light] #redispatchCost{background:#ffffffeb;color:#6b7280;border-color:#0000001a}html[data-theme=light] #tutorialHelp{background:#fffffff7;color:#111827;border-color:#0000001a}html[data-theme=light] #levelSelectionPanel{background:#0000004d}html[data-theme=light] #levelSelectionPanel>div{background:#fff;border-color:#00000014}html[data-theme=light] #levelSelectionPanel>div>div:first-child{border-color:#00000014}html[data-theme=light] #levelSelectionPanel h2{color:#111827}html[data-theme=light] #levelSelectionPanel button[aria-label=Close]{color:#9ca3af}html[data-theme=light] #levelSelectionPanel button[aria-label=Close]:hover{color:#111827;background:#0000000d}html[data-theme=light] #solvedOverlay{background:#0000004d}html[data-theme=light] #solvedCard{background:#fff;border-color:#00000014}html[data-theme=light] #solvedMessage{color:#111827}html[data-theme=light] #rewardMessage{color:#d97706}html[data-theme=light] #viewSolutionBtn{color:#9ca3af}html[data-theme=light] #viewSolutionBtn:hover{color:#374151;background:#0000000a}#solvedPill.entering{animation:solvedPillIn .28s ease-out forwards}@keyframes solvedPillIn{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}
