:root{--night:#1b1530;--night2:#2b1f4a;--ink:#fff7ec;--muted-ink:#cfc3e6;--orange:#ff8a1f;--orange-d:#c45a00;--leaf:#6aa53a;--card:#2a2145;--card2:#342857;--line:#4a3c74;--dirt:#3b2618;color:var(--ink);background:radial-gradient(1200px 600px at 70% -10%, #3d2a6b 0%, transparent 60%), var(--night);min-height:100%;font-family:Nunito,ui-rounded,system-ui,-apple-system,sans-serif;font-size:16px;line-height:1.45}*{box-sizing:border-box}body{min-height:100vh;margin:0}h1,h2,p{margin:0}button,input,select{font:inherit;color:inherit}:focus-visible{outline-offset:2px;border-radius:8px;outline:3px solid #ffd43b}.muted{color:var(--muted-ink)}.app{gap:18px;max-width:1180px;margin:0 auto;padding:18px 20px 120px;display:grid;position:relative}.top{z-index:2;flex-wrap:wrap;justify-content:space-between;align-items:flex-end;gap:16px;display:flex;position:relative}.logo{letter-spacing:.04em;color:var(--orange);text-shadow:0 0 18px #ff8a1f73,0 3px #5a2a00;font-family:Creepster,Chalkduster,fantasy;font-size:clamp(2.4rem,6vw,3.8rem);font-weight:400;line-height:1}.tagline{color:var(--muted-ink);margin-top:6px;font-size:1.05rem}.top-controls{flex-wrap:wrap;align-items:flex-end;gap:10px;display:flex}.spice{color:var(--muted-ink);gap:2px;font-size:.78rem;font-weight:700;display:grid}.spice select,.icon-btn{background:var(--card);border:1.5px solid var(--line);cursor:pointer;border-radius:12px;padding:8px 12px;font-weight:700}.plant{background:var(--card);border:1.5px solid var(--line);z-index:2;border-radius:20px;gap:10px;padding:16px 18px;display:grid;position:relative}.plant-label{font-size:1.1rem;font-weight:800}.plant-row{gap:10px;display:flex}.plant-row input{border:2px solid var(--line);background:#1d1636;border-radius:14px;flex:1;min-width:0;padding:12px 14px;font-size:1.05rem}.plant-row input::placeholder{color:#8f84b0}.btn{cursor:pointer;white-space:nowrap;border:0;border-radius:14px;padding:12px 18px;font-weight:800}.btn.primary{background:var(--orange);color:#2b1300;box-shadow:0 4px 0 var(--orange-d)}.btn:disabled{opacity:.5;cursor:not-allowed}.when{border:0;flex-wrap:wrap;align-items:center;gap:6px;margin:0;padding:0;display:flex}.when legend{float:left;color:var(--muted-ink);margin-right:8px;font-size:.9rem;font-weight:700}.chip{background:var(--card2);border:1.5px solid var(--line);cursor:pointer;border-radius:999px;padding:5px 12px;font-size:.88rem;font-weight:700;position:relative}.chip input{opacity:0;cursor:pointer;position:absolute;inset:0}.chip.on{background:var(--orange);color:#2b1300;border-color:var(--orange)}.chip:has(input:focus-visible){outline-offset:2px;outline:3px solid #ffd43b}.stats{z-index:2;flex-wrap:wrap;gap:8px;display:flex;position:relative}.stats span{background:var(--card);border:1.5px solid var(--line);border-radius:999px;padding:5px 14px;font-size:.92rem}.scene{background:linear-gradient(#15102a 0%, #2b1f4a 52%, #3a2a2a 53%, var(--dirt) 60%, #2a1a10 100%);border:1.5px solid var(--line);border-radius:26px;min-height:560px;padding:230px 18px 22px;position:relative;overflow:hidden}.sky{pointer-events:none;height:300px;position:absolute;inset:0 0 auto}.moon{background:radial-gradient(circle at 35% 35%,#fffbe6,#ffe8a3 60%,#f2c96b);border-radius:50%;width:92px;height:92px;position:absolute;top:28px;right:7%;box-shadow:0 0 60px 18px #ffe8a359}.stars{opacity:.7;background-image:radial-gradient(1.5px 1.5px at 10% 20%,#fff,#0000),radial-gradient(1px 1px at 25% 60%,#fff,#0000),radial-gradient(1.5px 1.5px at 40% 15%,#fff,#0000),radial-gradient(1px 1px at 55% 40%,#fff,#0000),radial-gradient(1.5px 1.5px at 70% 70%,#fff,#0000),radial-gradient(1px 1px at 85% 55%,#fff,#0000),radial-gradient(1px 1px at 15% 80%,#fff,#0000),radial-gradient(1.5px 1.5px at 62% 8%,#fff,#0000);position:absolute;inset:0}.fence{opacity:.7;background:repeating-linear-gradient(90deg,#0000 0 22px,#4a3424 22px 34px),linear-gradient(#0000 12px,#4a3424 12px 18px,#0000 18px 30px,#4a3424 30px 36px,#0000 36px);height:46px;position:absolute;top:248px;left:0;right:0}.empty{text-align:center;color:var(--muted-ink);padding:60px 20px;font-size:1.1rem;position:relative}.patch{grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:16px;margin:0;padding:0;list-style:none;display:grid;position:relative}.tile{-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);border:1.5px solid var(--line);text-align:center;background:#2a2145d1;border-radius:20px;justify-items:center;gap:8px;padding:12px 12px 14px;animation:.4s sprout;display:grid}.tile.stage-angry{border-color:#ff6b1f;box-shadow:0 0 22px #ff5a1f59}.tile.stage-rotting{background:#302e1ed9;border-color:#7d8f3a}.tile-art{place-items:end center;height:112px;display:grid}.stage-angry .pumpkin{animation:.5s ease-in-out infinite shake}.stage-worried .pumpkin{animation:2.4s ease-in-out infinite wobble}.sign{gap:3px;display:grid}.task-text{font-size:1.02rem;line-height:1.25}.when-left{color:#ffd8a8;font-size:.85rem;font-weight:800}.when-left.over{color:#c3e88d}.stage-chip{font-size:.78rem}.tile-actions{flex-wrap:wrap;justify-content:center;gap:6px;display:flex}.mini{background:var(--card2);border:1.5px solid var(--line);cursor:pointer;border-radius:10px;padding:5px 10px;font-size:.85rem;font-weight:800}.mini:hover{border-color:var(--orange)}.mini.good{background:#2f6b3a;border-color:#4f9a5a}.flicker{animation:.18s infinite alternate flicker}.flies{animation:.7s ease-in-out infinite alternate buzz}.stink{animation:2s ease-in-out infinite rise}.ghost{z-index:5;width:0;position:absolute}.ghost-btn{cursor:pointer;filter:drop-shadow(0 0 16px #dcd2ff8c);background:0 0;border:0;padding:0;transform:translate(-50%)}.float-0 .ghost-btn{animation:6s ease-in-out infinite drift}.float-1 .ghost-btn{animation:7.5s ease-in-out infinite reverse drift}.float-2 .ghost-btn{animation:5.2s ease-in-out 1s infinite drift}.bubble{color:#241a3a;z-index:6;background:#fbf8ff;border-radius:18px;gap:8px;width:min(330px,80vw);padding:12px 14px;animation:.25s pop;display:grid;position:absolute;top:calc(100% + 4px);left:50%;transform:translate(-50%);box-shadow:0 10px 30px #0006}.bubble:after{content:"";border:10px solid #0000;border-bottom-color:#fbf8ff;position:absolute;bottom:100%;left:50%;transform:translate(-50%)}.edge-left .bubble{animation-name:pop-edge;left:-40px;transform:none}.edge-left .bubble:after{left:40px}.edge-right .bubble{animation-name:pop-edge;left:auto;right:-40px;transform:none}.edge-right .bubble:after{left:auto;right:30px;transform:none}.bubble-title{text-transform:uppercase;letter-spacing:.06em;color:#7b5cd6;font-size:.75rem;font-weight:900}.bubble p{font-weight:700}.bubble-actions{flex-wrap:wrap;gap:6px;display:flex}.bubble .mini{color:#241a3a;background:#efe9ff;border-color:#d6ccf7}.bubble .mini.good{background:#d3f9d8;border-color:#8ce99a}.haunt-list,.shelf{background:var(--card);border:1.5px solid var(--line);border-radius:20px;gap:10px;padding:16px 18px;display:grid}.haunt-list h2,.shelf h2{font-size:1.15rem}.haunt-list ul{gap:6px;margin:0;padding:0;list-style:none;display:grid}.haunt-list li{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.pies{border-bottom:10px solid #6b4426;border-radius:4px;flex-wrap:wrap;gap:10px;margin:0;padding:12px 12px 0;list-style:none;display:flex}.pies li{text-align:center;justify-items:center;gap:2px;width:120px;padding-bottom:6px;display:grid}.pie{font-size:2.4rem;animation:.4s sprout}.pie-label{font-size:.8rem;font-weight:700;line-height:1.2}.ontime{color:#b2f2bb;font-size:.72rem}.late{color:#ffd8a8;font-size:.72rem}.pies .mini{opacity:.6;padding:0 6px;font-size:.75rem}.time-machine{z-index:20;background:#120d24ee;border:1.5px solid #ffd43b88;border-radius:16px;gap:6px;padding:10px 14px;display:grid;position:fixed;bottom:18px;right:18px;box-shadow:0 8px 24px #0006}.time-machine p{font-size:.88rem}.tm-buttons{flex-wrap:wrap;gap:6px;display:flex}.foot{flex-wrap:wrap;align-items:center;gap:10px;font-size:.85rem;display:flex}.toast{visibility:hidden;color:#2b1300;z-index:30;text-align:center;background:#fff7ec;border-radius:999px;max-width:90vw;padding:10px 18px;font-weight:800;transition:transform .3s;position:fixed;bottom:22px;left:50%;transform:translate(-50%,140%);box-shadow:0 8px 24px #00000073}.toast.show{visibility:visible;transform:translate(-50%)}.leaves{pointer-events:none;z-index:1;position:fixed;inset:0;overflow:hidden}.leaves span{opacity:.55;font-size:22px;animation:linear infinite fall;position:absolute;top:-40px}@keyframes fall{to{transform:translate(60px,110vh)rotate(540deg)}}@keyframes drift{0%,to{transform:translate(-50%)}50%{transform:translate(-30%,-16px)}}@keyframes shake{0%,to{transform:rotate(0)}25%{transform:rotate(-3deg)}75%{transform:rotate(3deg)}}@keyframes wobble{0%,to{transform:rotate(0)}50%{transform:rotate(-2deg)}}@keyframes flicker{0%{opacity:1}to{opacity:.75}}@keyframes buzz{0%{transform:translate(0)}to{transform:translate(4px,-3px)}}@keyframes rise{0%,to{opacity:.2;transform:translateY(4px)}50%{opacity:.8;transform:translateY(-2px)}}@keyframes pop{0%{opacity:0;transform:translate(-50%)scale(.9)}to{opacity:1;transform:translate(-50%)scale(1)}}@keyframes pop-edge{0%{opacity:0;transform:scale(.9)}to{opacity:1;transform:none}}@keyframes sprout{0%{opacity:0;transform:scale(.85)}to{opacity:1;transform:none}}@media (width<=640px){.plant-row{flex-direction:column}.scene{min-height:480px;padding-top:200px}.patch{grid-template-columns:1fr 1fr;gap:10px}.tile-art svg{width:96px;height:auto}.time-machine{bottom:10px;left:10px;right:10px}.app{padding-bottom:150px}}@media (prefers-reduced-motion:reduce){*,:before,:after{transition:none!important;animation:none!important}.leaves{display:none}}
