:root{--ink: #3a2f5b;--gold: #ffce47;--gold-dark: #f5a623;--good: #4caf50;--bad: #ff6b6b;--purple: #8b5cf6;--orange: #ff8a3d;--shadow: rgba(58, 47, 91, .18)}*{box-sizing:border-box;margin:0;padding:0}html,body,#root{height:100%;width:100%;font-family:Fredoka,system-ui,-apple-system,sans-serif;color:var(--ink);overflow:hidden;-webkit-font-smoothing:antialiased;-webkit-user-select:none;user-select:none}body{background:linear-gradient(180deg,#9ad6f0,#c9ecfb 60%,#e9f8ff)}.app{position:fixed;top:0;right:0;bottom:0;left:0}.scene{position:absolute;top:0;right:0;bottom:0;left:0}.scene canvas{display:block;touch-action:none}.topbar{position:absolute;top:12px;left:12px;right:12px;display:flex;align-items:center;justify-content:space-between;gap:10px;pointer-events:none;flex-wrap:wrap;z-index:200}.title-block{background:#ffffffd1;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);padding:8px 16px;border-radius:18px;box-shadow:0 6px 16px #0000001f;pointer-events:auto}.title-block h1{font-size:24px;font-weight:700;line-height:1;background:linear-gradient(90deg,var(--purple),var(--orange));-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent}.title-block .sub{font-size:12px;opacity:.7;margin-top:2px}.resources{display:flex;align-items:center;gap:8px;flex-wrap:wrap;pointer-events:auto}.res{background:#ffffffe6;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);border-radius:999px;padding:8px 14px;font-weight:600;font-size:15px;box-shadow:0 4px 12px #0000001f}.res.coins{color:var(--gold-dark)}.res.gems{color:#1c9fbd}.res.rate{color:#7c4dff;font-size:13px}.res.income{color:#2f9e44;font-size:13px}.icon-btn{border:none;background:#ffffffe6;cursor:pointer;width:42px;height:42px;border-radius:50%;font-size:18px;box-shadow:0 4px 12px #0000001f;transition:transform .08s}.icon-btn:active{transform:scale(.92)}.reset-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:5000;background:#140e268c;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);display:flex;align-items:center;justify-content:center;padding:20px}.reset-card{background:#fff;border-radius:22px;padding:26px 26px 22px;max-width:420px;width:100%;box-shadow:0 24px 60px #0006;text-align:center;animation:pop .25s cubic-bezier(.3,1.3,.5,1)}.reset-card h3{font-size:22px;margin-bottom:10px;color:var(--ink)}.reset-card p{font-size:15px;line-height:1.5;opacity:.8;margin-bottom:20px}.reset-actions{display:flex;gap:12px}.reset-actions button{flex:1;border:none;border-radius:14px;padding:13px 10px;font-size:15px;font-weight:700;cursor:pointer;transition:transform .08s,filter .1s}.reset-actions button:active{transform:scale(.96)}.reset-cancel{background:#efeaf7;color:var(--ink)}.reset-confirm{background:#e0392b;color:#fff}.reset-confirm:hover{filter:brightness(1.05)}.habits-panel{position:absolute;top:76px;left:12px;bottom:12px;width:340px;max-width:calc(100vw - 24px);display:flex;flex-direction:column;z-index:200}.panel-toggle{align-self:flex-start;border:none;cursor:pointer;font-family:inherit;font-weight:600;font-size:15px;color:#fff;padding:10px 16px;border-radius:14px;background:linear-gradient(135deg,var(--purple),var(--orange));box-shadow:0 5px #00000026;margin-bottom:10px}.habits-panel.collapsed{width:auto;bottom:auto}.panel-inner{background:#ffffffe0;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border-radius:22px;padding:16px;box-shadow:0 12px 30px #00000026;display:flex;flex-direction:column;overflow:hidden;flex:1;min-height:0}.panel-head{display:flex;align-items:center;justify-content:space-between}.panel-head h2{font-size:19px}.day-control{display:flex;align-items:center;gap:6px}.day-pill{font-size:13px;font-weight:600;background:#fff;padding:4px 10px;border-radius:999px;box-shadow:0 2px 0 var(--shadow)}.next-day{border:none;cursor:pointer;font-size:14px;padding:6px 9px;border-radius:10px;background:linear-gradient(135deg,#ffd86b,#ffb43d);box-shadow:0 3px 0 var(--gold-dark)}.next-day:active{transform:translateY(2px);box-shadow:0 1px 0 var(--gold-dark)}.hint{font-size:12.5px;opacity:.72;margin:8px 0 12px}.hint.center{text-align:center}.habit-list{display:flex;flex-direction:column;gap:10px;overflow-y:auto;flex:1;min-height:0;padding-right:4px}.habit-card{display:flex;align-items:center;gap:10px;position:relative;background:#fff;border-radius:16px;padding:10px 12px;box-shadow:0 4px 0 var(--shadow);border:2px solid transparent}.habit-card.done{border-color:var(--good);background:linear-gradient(135deg,#f3fff0,#fff)}.habit-emoji{font-size:26px;width:46px;height:46px;flex:none;display:grid;place-items:center;background:#f3ecff;border-radius:12px}.habit-info{flex:1;min-width:0}.habit-name{font-weight:600;font-size:16px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.habit-meta{font-size:12px;opacity:.72;display:flex;gap:10px;margin-top:2px}.flame{color:var(--orange);font-weight:700}.flame.cold{color:#9aa;opacity:.7}.check-btn{flex:none;width:50px;height:50px;border-radius:50%;border:none;cursor:pointer;font-size:22px;color:#fff;background:linear-gradient(135deg,var(--good),#2f9e44);box-shadow:0 4px #2b8a3e;transition:transform .08s}.check-btn:active:not(:disabled){transform:translateY(3px);box-shadow:0 1px #2b8a3e}.check-btn.done,.check-btn:disabled{background:linear-gradient(135deg,#cfe9d4,#b6dcbd);box-shadow:0 4px #9ec5a6;cursor:default}.habit-del{position:absolute;top:5px;right:7px;border:none;background:transparent;cursor:pointer;font-size:12px;opacity:.35}.habit-del:hover{opacity:.9}.panel-actions{display:flex;flex-direction:column;gap:9px;margin-top:12px}.big-btn{border:none;cursor:pointer;font-family:inherit;font-weight:600;font-size:15px;padding:12px;border-radius:14px;color:#fff;transition:transform .08s,filter .15s}.big-btn:active:not(:disabled){transform:translateY(3px)}.big-btn.add{background:linear-gradient(135deg,#5cc6ff,#3d8bff);box-shadow:0 4px #2f6fd6}.big-btn.buy{background:linear-gradient(135deg,#b07bff,#7c4dff);box-shadow:0 4px #6438cc}.big-btn:disabled{filter:grayscale(.6) brightness(.97);opacity:.7;cursor:not-allowed}.muted{font-size:12px;opacity:.85;font-weight:500}.plot-tag{background:#3a2f5bd9;color:#fff;font-family:Fredoka,sans-serif;font-size:13px;font-weight:600;padding:5px 12px;border-radius:999px;white-space:nowrap;box-shadow:0 3px 8px #0000004d;transform:translateY(0);transition:transform .12s}.plot-tag.hot{background:var(--purple);transform:scale(1.08)}.build-badge{background:#3a2f5be6;color:#fff;font-family:Fredoka,sans-serif;font-size:12px;font-weight:600;padding:6px 12px;border-radius:14px;white-space:nowrap;box-shadow:0 3px 8px #0000004d;text-align:center}.collect-badge{font-family:Fredoka,sans-serif;font-weight:700;font-size:14px;white-space:nowrap;color:#5a4500;background:linear-gradient(135deg,#ffe45e,#ffc62e);border:2px solid #fff;border-radius:999px;padding:5px 12px;cursor:pointer;box-shadow:0 4px #c9991f,0 6px 12px #00000040;animation:bobBadge .9s ease-in-out infinite}.collect-badge:active{transform:translateY(2px);box-shadow:0 2px #c9991f}.collect-badge.full{background:linear-gradient(135deg,#ffd24a,#ff9f1c);color:#5a2e00}@keyframes bobBadge{0%,to{transform:translateY(0)}50%{transform:translateY(-4px)}}.above-anchor{position:absolute;left:0;top:0;transform:translate(-50%,calc(-100% - 12px));pointer-events:none}.above-anchor.interactive{pointer-events:auto}.sel-row{display:flex;align-items:center;gap:8px;font-family:Fredoka,sans-serif}.sel-upgrade{display:flex;align-items:center;gap:10px;padding:10px 12px;width:320px;max-width:70vw;background:#fffffff7;border:2px solid transparent;border-radius:18px;cursor:pointer;box-shadow:0 8px 20px #0000004d;transition:border-color .15s,background .15s}.sel-upgrade:hover{border-color:var(--purple);background:#fff}.sel-upgrade.disabled,.sel-upgrade.maxed{opacity:.7;cursor:not-allowed}.sel-upgrade.disabled:hover,.sel-upgrade.maxed:hover{border-color:transparent}.sel-btn.sell-fab{width:48px;height:48px;font-size:22px;box-shadow:0 6px 14px #00000047;background:#fff}.sel-bar,.sel-confirm{display:flex;align-items:center;gap:6px;white-space:nowrap;background:#fffffff5;border-radius:999px;padding:5px 8px;box-shadow:0 5px 14px #0000004d;font-family:Fredoka,sans-serif}.sel-confirm{padding:5px 8px 5px 14px;font-weight:600;font-size:13px;color:var(--ink)}.sel-btn{border:none;cursor:pointer;width:36px;height:36px;border-radius:50%;font-size:16px;background:#f1eef9;box-shadow:0 2px 0 var(--shadow);transition:transform .08s}.sel-btn:active{transform:translateY(2px);box-shadow:none}.sel-btn.ok{background:linear-gradient(135deg,var(--good),#2f9e44);color:#fff}.sel-btn.yes{background:linear-gradient(135deg,#ff6b6b,#e0392b);color:#fff}.sel-btn.no{background:#eee}.bldg-pop{font-family:Fredoka,sans-serif;font-weight:700;font-size:16px;white-space:nowrap;color:#fff;text-shadow:0 2px 4px rgba(0,0,0,.4);animation:floatUp 1.3s ease-out forwards}.build-bar{height:6px;background:#ffffff40;border-radius:999px;margin-top:4px;overflow:hidden}.build-bar span{display:block;height:100%;background:linear-gradient(90deg,#ffe45e,#ff9f1c);transition:width .12s linear}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#281e4673;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);display:grid;place-items:center;z-index:2000;padding:16px}.modal{background:#fff;border-radius:24px;padding:22px;width:100%;max-width:420px;position:relative;box-shadow:0 20px 50px #0000004d;max-height:88vh;overflow-y:auto;animation:pop .28s cubic-bezier(.3,1.3,.5,1)}@keyframes pop{0%{transform:scale(.8);opacity:0}to{transform:scale(1);opacity:1}}.modal-close{position:absolute;top:12px;right:12px;width:36px;height:36px;box-shadow:none;background:#f1f1f4}.modal h3{font-size:22px;margin-bottom:4px}.modal-sub{font-size:13px;opacity:.7;margin-bottom:16px}.field{margin-bottom:14px}.field label{display:block;font-size:13px;font-weight:600;margin-bottom:6px;opacity:.8}.field input[type=text]{width:100%;font-family:inherit;font-size:16px;padding:11px 14px;border:2px solid #eee;border-radius:14px;outline:none}.field input[type=text]:focus{border-color:var(--purple)}.emoji-picker{display:flex;flex-wrap:wrap;gap:8px}.emoji-picker button{font-size:22px;width:44px;height:44px;border-radius:12px;border:2px solid #eee;background:#fff;cursor:pointer}.emoji-picker button.sel{border-color:var(--purple);background:#f3ecff}.habit-presets{display:flex;flex-wrap:wrap;gap:8px}.habit-presets button{font-family:inherit;font-size:13px;font-weight:600;color:var(--ink);display:inline-flex;align-items:center;gap:6px;padding:7px 12px;border-radius:999px;border:1.5px solid #e6e1f0;background:#faf8ff;cursor:pointer;transition:background .12s,border-color .12s}.habit-presets button span{font-size:15px}.habit-presets button:hover{background:#f1ecff;border-color:#c9bdf0}.habit-presets button.sel{background:#ece3ff;border-color:var(--purple)}.modal-btn{width:100%;border:none;cursor:pointer;font-family:inherit;font-weight:600;font-size:16px;padding:14px;border-radius:16px;color:#fff;margin-top:6px;background:linear-gradient(135deg,var(--good),#2f9e44);box-shadow:0 4px #2b8a3e}.modal-btn:active{transform:translateY(3px);box-shadow:0 1px #2b8a3e}.modal-btn.secondary{background:linear-gradient(135deg,#b07bff,#7c4dff);box-shadow:0 4px #6438cc}.build-option{display:flex;align-items:center;gap:12px;padding:12px;border:2px solid #eee;border-radius:16px;cursor:pointer;margin-bottom:10px;transition:border-color .15s,background .15s}.build-option:hover{border-color:var(--purple);background:#faf7ff}.build-option.disabled{opacity:.5;cursor:not-allowed}.build-option.disabled:hover{border-color:#eee;background:#fff}.bo-emoji{font-size:32px;width:48px;text-align:center}.bo-info{flex:1}.bo-name{font-weight:600;font-size:16px}.bo-desc{font-size:12px;opacity:.7}.bo-cost{font-weight:700;font-size:14px;white-space:nowrap}.bo-cost.afford{color:var(--gold-dark)}.bo-cost.poor{color:var(--bad)}.build-tabs{display:flex;gap:6px;margin:14px 0 4px}.build-tab{flex:1;min-width:0;border:none;cursor:pointer;font-family:inherit;display:flex;flex-direction:column;align-items:center;gap:2px;padding:8px 4px;border-radius:14px;background:#f1eef9;color:var(--ink);transition:background .15s,transform .08s}.build-tab:active{transform:translateY(1px)}.build-tab.active{background:linear-gradient(135deg,var(--purple),var(--orange));color:#fff;box-shadow:0 3px #0000001f}.bt-icon{font-size:18px;line-height:1}.bt-label{font-size:12px;font-weight:600}.cat-blurb{font-size:13px;opacity:.72;margin:8px 2px 14px}.bo-eff{font-size:12px;font-weight:600;color:#7c4dff}.big-tag{font-size:10px;font-weight:700;color:#fff;background:#8b5cf6;padding:1px 6px;border-radius:999px;margin-left:6px;vertical-align:middle}.modal-btn.sell{background:linear-gradient(135deg,#ffb14e,#f5921b);box-shadow:0 4px #c9740f}.modal-btn.move{background:linear-gradient(135deg,#5cc6ff,#3d8bff);box-shadow:0 4px #2f6fd6}.sell-note{font-size:12px;font-weight:500;opacity:.85}.modal-row{display:flex;gap:8px}.modal-row .modal-btn{margin-top:6px}.limit{font-weight:600;opacity:.85}.limit-max{color:var(--bad);font-weight:700}.move-banner{position:absolute;top:76px;left:50%;transform:translate(-50%);z-index:1900;display:flex;align-items:center;gap:12px;background:#3a2f5bf2;color:#fff;font-weight:600;font-size:14px;padding:10px 16px;border-radius:999px;box-shadow:0 6px 18px #0000004d}.move-banner button{border:none;cursor:pointer;font-family:inherit;font-weight:600;font-size:13px;background:#fff;color:var(--ink);padding:5px 12px;border-radius:999px}.debug-day{position:absolute;bottom:12px;right:12px;z-index:250;border:2px dashed #c0392b;cursor:pointer;font-family:inherit;font-weight:700;font-size:12px;background:#ffffffeb;color:#c0392b;padding:7px 12px;border-radius:12px;box-shadow:0 4px 10px #00000026}.debug-day:active{transform:translateY(1px)}.float-layer,.confetti-layer{position:fixed;top:0;right:0;bottom:0;left:0;pointer-events:none;z-index:1500;overflow:hidden}.float-text{position:absolute;font-weight:700;font-size:20px;text-shadow:0 2px 4px rgba(0,0,0,.25);animation:floatUp 1.1s ease-out forwards;white-space:nowrap;transform:translate(-50%)}.float-text.coin{color:var(--gold-dark)}.float-text.gem{color:#1c9fbd}.float-text.streak{color:var(--orange);font-size:17px}.float-text.crit{color:#ff3d7f;font-size:26px}@keyframes floatUp{0%{transform:translate(-50%) scale(.6);opacity:0}20%{transform:translate(-50%,-14px) scale(1.1);opacity:1}to{transform:translate(-50%,-80px) scale(1);opacity:0}}.confetti{position:absolute;width:10px;height:14px;top:-20px;border-radius:2px;animation:confettiFall linear forwards}@keyframes confettiFall{0%{transform:translateY(-20px) rotate(0);opacity:1}to{transform:translateY(105vh) rotate(720deg);opacity:.9}}.onb-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:4000;cursor:pointer;background:#140e269e;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px)}.onb-overlay.action{background:transparent;-webkit-backdrop-filter:none;backdrop-filter:none;cursor:default;z-index:1500;pointer-events:none}.onb-overlay.action .onb-skip,.onb-overlay.action .onb-bubble{pointer-events:auto}.onb-skip{position:absolute;top:16px;right:18px;border:none;cursor:pointer;z-index:1;background:#ffffffe6;color:var(--ink);font-family:inherit;font-weight:600;font-size:13px;padding:8px 14px;border-radius:999px}.onb-stage{position:absolute;left:0;right:0;bottom:0;display:flex;align-items:flex-end;gap:8px;padding:0 24px 18px;max-width:1140px;margin:0 auto}.onb-stage.action{left:auto;right:0;max-width:680px;margin:0;padding:0 20px 16px;flex-direction:row-reverse}.onb-stage.action .onb-char{height:180px}.onb-stage.action .onb-bubble{margin-bottom:20px;width:330px}.onb-stage.action .onb-bubble:after{display:none}.onb-cast{display:flex;align-items:flex-end;gap:0;flex:none}.onb-char{height:300px;width:auto;flex:none;filter:drop-shadow(0 10px 14px rgba(0,0,0,.35));animation:charIn .4s cubic-bezier(.2,1.3,.5,1)}.onb-cast.both .onb-char{height:250px}.onb-cast.both .onb-char.clara{margin-left:-40px}.onb-cast.both .onb-char.elias{z-index:1}@keyframes charIn{0%{transform:translateY(40px);opacity:0}to{transform:translateY(0);opacity:1}}.onb-bubble{position:relative;background:#fff;border-radius:22px;padding:16px 20px;margin-bottom:80px;box-shadow:0 16px 40px #00000059;flex:0 0 auto;width:440px;max-width:calc(100vw - 360px);animation:pop .3s cubic-bezier(.3,1.3,.5,1)}.onb-bubble:after{content:"";position:absolute;left:-14px;bottom:28px;border-width:10px 16px 10px 0;border-style:solid;border-color:transparent #fff transparent transparent;filter:drop-shadow(-3px 2px 2px rgba(0,0,0,.08))}.onb-bubble.warn{border:3px solid #e0a02f}.onb-bubble.big{border:4px solid #e0392b;background:#fff5f3;width:560px;max-width:calc(100vw - 320px);box-shadow:0 16px 44px #c0392b59;animation:bigWarn .4s cubic-bezier(.3,1.4,.5,1)}.onb-bubble.big .onb-name{color:#c0392b;font-size:16px}.onb-bubble.big p{font-size:20px;line-height:1.55}@keyframes bigWarn{0%{transform:scale(.85);opacity:0}60%{transform:scale(1.04)}to{transform:scale(1);opacity:1}}.onb-name{font-size:13px;font-weight:700;color:var(--purple);margin-bottom:6px;text-transform:uppercase;letter-spacing:.04em}.onb-bubble.warn .onb-name{color:#c0392b}.onb-bubble p{font-size:16px;line-height:1.5}.onb-hint{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-top:12px;font-size:12px;font-weight:600;opacity:.55}.onb-count{background:#f1eef9;color:var(--purple);padding:2px 8px;border-radius:999px;opacity:1}.onb-todo{color:var(--purple);opacity:1;font-weight:700}.onb-todo.done{color:#2e9e4f}body.onb-pulse-habits .big-btn.add{animation:onbBtnPulse 1.1s ease-in-out infinite;box-shadow:0 0 #7c4dff80}@keyframes onbBtnPulse{0%{box-shadow:0 0 #7c4dff8c}70%{box-shadow:0 0 0 14px #7c4dff00}to{box-shadow:0 0 #7c4dff00}}@media (max-width: 620px){.onb-stage{flex-direction:column;align-items:center;gap:0;padding:0 14px 14px}.onb-char{height:150px}.onb-bubble{margin-bottom:8px}.onb-bubble:after{display:none}}.toast{position:fixed;bottom:80px;left:50%;transform:translate(-50%);background:var(--ink);color:#fff;padding:12px 20px;border-radius:999px;font-weight:600;font-size:14px;z-index:3000;box-shadow:0 8px 20px #0000004d;animation:toastIn .25s ease-out;max-width:90vw;text-align:center}@keyframes toastIn{0%{opacity:0;transform:translate(-50%,12px)}to{opacity:1;transform:translate(-50%)}}@media (max-width: 720px){.habits-panel{top:auto;bottom:12px;left:12px;right:12px;width:auto;max-height:56vh}.habits-panel:not(.collapsed) .panel-inner{max-height:50vh}.title-block h1{font-size:20px}}
