:root{font-family:system-ui,Avenir,Helvetica,Arial,sans-serif;line-height:1.5;font-weight:400;color-scheme:light;color:#ffffffde;background-color:#242424;font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.game-root{position:relative}.fx-layer{position:fixed;inset:0;pointer-events:none;z-index:100}.mode-placing{background-color:#64c8640d}.mode-buying{background-color:#00c8ff0d}.mode-removing{background-color:#c864640d}button:focus,button:focus-visible{outline:none}a{font-weight:500;color:#646cff;text-decoration:inherit}a:hover{color:#535bf2}body{margin:0;min-width:320px;min-height:100vh}h1{font-size:3.2em;line-height:1.1}@media(prefers-color-scheme:light){:root{color:#213547;background-color:#fff}a:hover{color:#747bff}button{background-color:#f9f9f9}}button{padding:8px 14px;margin:10px;border-radius:6px;border:1px solid #444;background-color:#555;color:#fff;font-weight:500;cursor:pointer;transition:background-color .15s ease,opacity .15s ease}@media(hover:hover){button:hover:not(.disabled){background-color:#777}}button.disabled{background-color:#aaa;cursor:not-allowed}.tooltip-wrapper{position:relative;display:inline-block}.tooltip{position:absolute;bottom:110%;left:50%;transform:translate(-50%);background:#222;color:#fff;padding:6px 10px;border-radius:4px;font-size:12px;white-space:normal;text-align:center;min-width:120px;opacity:0;pointer-events:none;transition:opacity .15s ease;z-index:20}@media(hover:hover){.tooltip-wrapper:hover .tooltip{opacity:1}button:focus,button:focus-visible{outline:none}}.tooltip:after{content:"";position:absolute;top:100%;left:50%;transform:translate(-50%);border-width:5px;border-style:solid;border-color:#222 transparent transparent transparent}.tile-tooltip{position:fixed;background:#222;color:#fff;padding:6px 10px;border-radius:4px;font-size:12px;white-space:pre-line;text-align:left;min-width:120px;pointer-events:none;z-index:20}.tile-overlay{position:absolute;bottom:4px;right:4px;font-size:12px;background:#000000b3;padding:2px 4px;border-radius:4px;pointer-events:none}.modal-overlay{position:fixed;inset:0;background:#0009;display:flex;justify-content:center;align-items:center;z-index:1000}.modal,.upgrade-modal-outer{background:#222;color:#f0f0f0;padding:20px;border-radius:8px;width:400px;max-width:90%;max-height:70vh;overflow-y:auto;display:flex;flex-direction:column}.upgrade-cost{margin-bottom:16px;font-weight:600;font-size:14px;padding-bottom:8px;border-bottom:1px solid #444}.upgrade-entry{padding:12px;margin-bottom:12px;border-radius:6px;background-color:#2c2c2c;border:1px olid #3a3a3a}.upgrade-locked{margin-top:8px;color:#888;font-size:13px}.upgrade-entry.locked{opacity:.6}.grid-scroll{width:100%;height:60vh;overflow:auto;touch-action:none;-webkit-overflow-scrolling:touch;position:relative}.grid-transform{width:max-content;height:max-content;position:relative}.grid-click-area{padding:20px 35px 35px 20px;display:inline-block;width:max-content;height:max-content}.grid{-webkit-user-select:none;user-select:none;position:relative;overflow:visible;grid-auto-rows:60px;display:grid;gap:4px;touch-action:none;width:max-content;height:max-content}.tile{width:60px;height:60px;display:flex;align-items:center;justify-content:center;color:#fff;cursor:pointer;-webkit-user-select:none;user-select:none;position:relative;border:1px solid #333;background:#666;box-sizing:border-box}.tile.empty{background:#fff;border:1px solid white;cursor:default}.tile.placeable-flossBush{background:green}.tile.placeable-beehive{background:#ff0;color:#000}.tile.placeable-washer,.tile.placeable-itemShop,.tile.placeable-melter{background:#fff;color:#000}.tile.buying-highlight{background:#08c}.tile.buying-highlight:hover{background:#0cf}.tile.place-hover{background:#4a4}.tile.invalid{cursor:not-allowed}.tile.blocked{background-color:#ff5050;color:#000}.preview-overlay{position:absolute;inset:0;background:#ffeb3b59;pointer-events:none;z-index:1}.preview-overlay.affects-flossBush{background:#4caf5073}.preview-overlay.center{background:#ffc10799;box-shadow:0 0 08px 3px #ffc107b3}.tile.buying.purchasable{cursor:pointer}.tile.buying:not(.purchasable){cursor:not-allowed}.tile.placing.placeable{cursor:pointer}.tile.placing:not(.placeable){cursor:not-allowed}.beehive-influence{position:absolute;inset:0;background:#ffeb3b59;display:flex;align-items:center;justify-content:center;font-weight:700;font-size:14px;color:#000;pointer-events:none;z-index:3}.flossBush-influence{position:absolute;inset:0;background:#55ff3b59;display:flex;align-items:center;justify-content:center;font-weight:700;font-size:14px;color:#000;pointer-events:none;z-index:3}.message-log-list{flex:1;overflow-y:auto;margin:10px 0;font-size:13px}.log-entry{margin-bottom:6px;opacity:.9;color:#fff;white-space:pre-line}.log-empty{opacity:.6}.log-count{opacity:.6;font-size:11px}.toast-container{position:fixed;top:20px;right:20px;display:flex;flex-direction:column;gap:8px;pointer-events:none;z-index:1000}.toast{background:#000000d9;padding:8px 12px;border-radius:4px;font-size:13px;color:#fff;opacity:1;transform:translateY(0);transition:opacity .4s ease,transform .4s ease;white-space:pre-line}.toast.fading{opacity:0;transform:translateY(-10px)}.toast-count{opacity:.7;font-size:12px}.toast-achievement{background:linear-gradient(135deg,#5a3d00,#a67c00);color:gold;border:1px solid gold;font-weight:700}.toast-warning{background:#4a1e1e;color:#faa}.toast-success{background:#1e4620;color:#8fffa3}.sell-one-btn{position:relative;transition:transform .1s ease,box-shadow .2s ease}@media(hover:hover){.sell-one-btn:active{transform:scale(.97)}}.sell-one-btn.holding{box-shadow:0 0 12px #0ea500cc}.remove-highlight{background-color:#a44!important;cursor:pointer}.cant-remove{cursor:not-allowed}.achievement-list{display:flex;flex-direction:column;gap:10px;margin-bottom:15px}.achievement-entry{padding:10px;border-radius:6px;background:#333;color:#fff}.achievement-entry.locked{opacity:.5}.achievement-entry.unlocked{border:1px solid gold;background:#2a2a2a}.achievement-title{font-weight:700}.achivement-description{font-size:.85rem}.single-message-modal{max-width:500px;text-align:center}.modal-message{margin:20px 0}.modal-message p{margin:8px 0}.tile-progress-bar{position:absolute;right:0;top:0;width:10%;height:100%;background:#000;border:1px solid white;box-sizing:border-box;pointer-events:none}.tile-progress-bar.full{border-color:gold}.tile-progress-bar-fill{position:absolute;bottom:0;left:0;width:100%;transition:height .2s linear,background-color .2s linear}.machine-zone{display:flex;align-items:center;justify-content:center;gap:16px;margin:20px 0}.machine-holder{display:flex;align-items:center;justify-content:center;flex-direction:column;background-color:#fff;padding:20px}.machine{position:relative;width:140px;height:140px;display:flex;flex-direction:column;justify-content:space-between;padding:8px;box-sizing:border-box;color:#000;flex-shrink:0}.machine.no-graphics{background-color:#bbb;border:2px solid #000;border-radius:4px}.machine svg{position:absolute;z-index:1}.machine-info{font-size:12px;text-align:center;z-index:10;background-color:#fffc}.machine-progress-bar{position:relative;width:100%;height:12px;background:#000;border:1px solid white;border-radius:4px;overflow:hidden;flex-shrink:0;z-index:10}.machine-progress-bar-fill{background:linear-gradient(to right,#00e676,#00c853);height:100%}.machine-ready{text-align:center;font-size:13px;font-weight:700;background-color:#fffc;z-index:10}.machine.idle{opacity:.8}.upgrade-modal-outer{width:600px}.upgrade-modal{display:flex;height:400px}.upgrade-categories{width:180px;border-right:1px solid #444;display:flex;flex-direction:column;gap:6px;overflow-y:auto;overflow-x:hidden}.upgrade-list{flex:1;padding:10px;overflow-y:auto;overflow-x:hidden;width:300px}.upgrade-categories button{display:block;width:100%;text-align:left;padding:6px 10px;border:none;background:#222;color:#ccc;cursor:pointer;margin:0}@media(hover:hover){.upgrade-categories button:hover{background:#333}}.upgrade-categories button.active{background:#4a6fa5;color:#fff;font-weight:700}.modal-tabs{display:flex;gap:4px;margin-bottom:-1px}.modal-tabs button{padding:6px 14px;border:1px solid #777;border-bottom:none;background:#ddd;cursor:pointer;font-weight:700;border-radius:6px 6px 0 0;transition:background .15s;color:#000;margin:0}@media(hover:hover){.modal-tabs button:hover{background:#eee}}.modal-tabs button.active{background:#fff;border-bottom:1px solid white;position:relative;z-index:2}.modal-tabs button:not(.active){box-shadow:inset 0 -2px 4px #00000040;background-color:#bbb}.modal-list{background:#fff;border:1px solid #777;padding:16px;color:#000}.modal-entry{display:flex;align-items:center;gap:12px;padding:8px 0}.entry-left{width:60px;height:60px;flex-shrink:0}.shop-image{width:100%;height:100%;object-fit:contain}.entry-right{flex:1}@media(hover:hover){.modal-entry:hover{background:#ffffff80}}.expansion-button{position:absolute;background:#00c8ff40;border:2px solid #00c8ff;box-sizing:border-box;cursor:pointer;z-index:5;display:flex;align-items:center;justify-content:center}@media(hover:hover){.expansion-button:hover{background:#00c8ff73}}.expansion-button.up{clip-path:polygon(20px 0,calc(100% - 20px) 0,100% 100%,0 100%)}.expansion-button.down{clip-path:polygon(0 0,100% 0,calc(100% - 20px) 100%,20px 100%)}.expansion-button.left{clip-path:polygon(0 20px,100% 0,100% 100%,0 calc(100% - 20px))}.expansion-button.right{clip-path:polygon(0 0,100% 20px,100% calc(100% - 20px),0 100%)}.cost-item.missing{color:#ff6b6b;font-weight:700}.upgrade-button-wrapper{position:relative;display:inline-block}.upgrade-tooltip{position:absolute;bottom:110%;left:50%;transform:translate(-50%);background:#222;color:#fff;padding:6px 10px;border-radius:4px;font-size:12px;line-height:1.4;white-space:normal;text-align:center;min-width:120px;opacity:0;pointer-events:none;transition:opacity .15s ease,transform .15s ease;z-index:20}@media(hover:hover){.upgrade-button-wrapper:hover .upgrade-tooltip{opacity:1;transform:translate(-50%) translateY(-2px)}}.upgrade-categories button.has-affordable,button.has-affordable{background:#363}.upgrade-dot{display:inline-block;margin-left:6px;width:8px;height:8px;background:#4caf50;border-radius:50%}.flying-number{position:fixed;font-weight:700;pointer-events:none;z-index:100;color:#fff;text-shadow:0 0 2px black,0 0 4px black,0 0 6px black}.flying-number.floss{color:#fff}.flying-number.dirtyFloss{color:#aaa}.flying-number.wax{color:gold}.context-menu{position:fixed;transform:translate(-50%,-110%);background:#222;color:#fff;border:1px solid #555;border-radius:6px;padding:6px;z-index:200;display:flex;flex-direction:column;gap:4px}.context-menu button{background:#333;color:#fff;border:none;padding:6px 10px;cursor:pointer}@media(hover:hover){.context-menu button:hover{background:#444}}.placeable-text{position:absolute;text-align:center;font-size:12px}.placeable-text.smaller{font-size:10px}.floss-eaten{transform-box:fill-box;transform-origin:50% 75%;animation:flossShrink 3.5s ease-in forwards}.no-anim .floss-eaten{animation:none}@keyframes flossShrink{0%{transform:scale(1)}to{transform:scale(.4)}}.tile-ghost{position:absolute;inset:0;opacity:.25;pointer-events:none;z-index:2;transition:opacity .15s ease}.cursor-plant{cursor:url(/cursors/harvestCursor.png) 16 32,pointer}.cursor-place-valid{cursor:url(cursors/placementCursor.png) 32 60,pointer}.cursor-removing{cursor:url(/cursors/removalCursor.png) 16 4,pointer}.cursor-machine{cursor:url(/cursors/machineCursor.png) 32 32,pointer}.cursor-structure{cursor:url(/cursors/structureCursor.png) 32 16,pointer}.tile-svg{position:absolute}.no-anim .frame{animation:none!important}.frame{position:absolute;inset:0;opacity:0}.mode-loop .frame-0{animation:loopAnim var(--anim-duration) infinite}.mode-loop .frame-1{animation:loopAnim var(--anim-duration) infinite;animation-delay:var(--frame-delay)}.mode-loop .frame-2{animation:loopAnim var(--anim-duration) infinite;animation-delay:calc(var(--frame-delay) * 2)}.mode-loop .frame-3{animation:loopAnim var(--anim-duration) infinite;animation-delay:calc(var(--frame-delay) * 3)}.no-anim.mode-loop .frame-0,.no-anim.mode-on .frame-on-0,.mode-empty .frame-empty,.mode-full .frame-full{opacity:1}.mode-on .frame-on-0{animation:loopAnim var(--anim-duration) infinite}.mode-on .frame-on-1{animation:loopAnim var(--anim-duration) infinite;animation-delay:calc(var(--frame-delay) * 1)}.mode-on .frame-on-2{animation:loopAnim var(--anim-duration) infinite;animation-delay:calc(var(--frame-delay) * 2)}.mode-on .frame-on-3{animation:loopAnim var(--anim-duration) infinite;animation-delay:calc(var(--frame-delay) * 3)}@keyframes loopAnim{0%{opacity:1}25%{opacity:1}25.01%{opacity:0}to{opacity:0}}.equipment-slots{display:flex;gap:10px;margin-bottom:12px}.equipment-slot{width:60px;height:60px;border:2px solid black;background:#ffffff0d;display:flex;align-items:center;justify-content:center;cursor:pointer}@media(hover:hover){.equipment-slot:hover{background:#0000001a}.modal-entry.clickable:hover{background:#0000000d}}.equipment-image{width:100%;height:100%}.modal-entry.clickable{cursor:pointer}.modal-entry.equipped{outline:1px solid #000;background:#0000000d;cursor:default;opacity:.8}.tutorial-controls{position:fixed;bottom:20px;right:20px;display:flex;flex-direction:column;gap:10px;z-index:2000;background:#111;justify-content:center;align-items:stretch;padding:20px 10px}.tutorial-controls button{margin-top:0;margin-bottom:0}.tutorial-message{position:fixed;background:#111;color:#fff;padding:8px 20px;border-radius:6px;z-index:2000;max-width:260px;transition:left .1s linear,top .1s linear;text-align:center}.tutorial-message.centered{top:50%;left:50%;transform:translate(-50%,-50%)}.tutorial-message.anchored:after{content:"";position:absolute;top:100%;left:calc(50% + var(--arrow-offset, 0px));transform:translate(-50%);border-width:10px;border-style:solid;border-color:#111 transparent transparent transparent}.tutorial-message.anchored.flipped:after{top:auto;bottom:100%;border-color:transparent transparent #111 transparent}.tutorial-message-buttons{margin:20px 0 10px;display:flex;align-items:center;justify-content:center}.tutorial-highlight{outline:3px solid #ff0;animation:tutorialPulse 1s infinite}@keyframes tutorialPulse{0%{box-shadow:0 0 5px #ff0}50%{box-shadow:0 0 15px #ff0}to{box-shadow:0 0 5px #ff0}}.game-root.paused *{animation-play-state:paused!important;transition:none!important}
