:root{--bg:#0f1117;--panel:#171a23;--panel-2:#1f2330;--border:#2a2f3d;--text:#e8eaf0;--muted:#8b91a3;--accent:#f97316;--accent-2:#facc15;--good:#22c55e;--radius:14px;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;font-family:ui-sans-serif,system-ui,-apple-system,Segoe UI,Roboto,sans-serif}@media (prefers-color-scheme:light){:root{--bg:#f5f6fa;--panel:#fff;--panel-2:#f0f2f7;--border:#e1e4ec;--text:#1b1e27;--muted:#6b7182;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}}*{box-sizing:border-box}body{background:var(--bg);color:var(--text);margin:0}h1,h2{margin:0}h2{font-size:1.05rem;font-weight:650}button{font:inherit;color:inherit;cursor:pointer;background:var(--panel-2);border:1px solid var(--border);border-radius:10px;padding:6px 12px}button:hover:not(:disabled){border-color:var(--muted)}button:disabled{cursor:default}button.primary{background:var(--accent);border-color:var(--accent);color:#fff;font-weight:600}button.primary:disabled{opacity:.5}button.danger{color:#ef4444}.muted{color:var(--muted);font-size:.85rem}.app{max-width:1280px;margin:0 auto;padding:20px 16px 60px}.app-header{flex-wrap:wrap;align-items:center;gap:24px;margin-bottom:20px;display:flex}.app-header h1{letter-spacing:-.04em;font-size:2rem}.dot-accent{color:var(--accent)}.stats-bar{flex-wrap:wrap;flex:1;align-items:stretch;gap:12px;display:flex}.stats-bar>*{background:var(--panel);border:1px solid var(--border);border-radius:var(--radius);padding:10px 14px}.level{flex:280px;align-items:center;gap:14px;display:flex}.level-badge{background:conic-gradient(from 200deg, var(--accent), var(--accent-2), var(--accent));color:#1b1200;border-radius:50%;flex-shrink:0;align-content:center;place-items:center;width:52px;height:52px;line-height:1;display:grid}.level-label{letter-spacing:.1em;font-size:.6rem;font-weight:700}.level-num{font-size:1.3rem;font-weight:800}.xp{flex:1}.xp-track{background:var(--panel-2);border-radius:99px;height:10px;overflow:hidden}.xp-fill{background:linear-gradient(90deg, var(--accent), var(--accent-2));border-radius:99px;height:100%;transition:width .5s cubic-bezier(.2,.9,.3,1.2)}.xp-text{color:var(--muted);margin-top:6px;font-size:.8rem}.stat{flex-direction:column;justify-content:center;min-width:110px;display:flex}.stat-value{font-size:1.2rem;font-weight:700}.stat-label{color:var(--muted);font-size:.75rem}.layout{grid-template-columns:320px 1fr;align-items:start;gap:20px;display:grid}@media (width<=860px){.layout{grid-template-columns:1fr}.calendar{order:-1}}.sidebar{flex-direction:column;gap:20px;display:flex}.sidebar>section,.calendar{background:var(--panel);border:1px solid var(--border);border-radius:var(--radius);padding:16px}section>header{justify-content:space-between;align-items:center;margin-bottom:12px;display:flex}.empty{color:var(--muted);font-size:.9rem}.habit-row{background:0 0;border:1px solid #0000;border-radius:10px;align-items:center;gap:10px;width:100%;margin-bottom:6px;padding:8px;display:flex}.habit-row.focused{border-color:var(--c,var(--accent));background:var(--panel-2)}.habit-row.all{text-align:left}.habit-main{text-align:left;background:0 0;border:none;flex-direction:column;flex:1;align-items:flex-start;padding:0;display:flex}.habit-main:hover{border:none}.habit-name{font-weight:600}.habit-meta{color:var(--muted);gap:10px;font-size:.78rem;display:flex}.flame{filter:grayscale();opacity:.6}.flame.on{filter:none;opacity:1;color:var(--accent);font-weight:700}.check{border:2px solid var(--c);color:#fff;background:0 0;border-radius:50%;flex-shrink:0;width:32px;height:32px;padding:0;font-weight:800;transition:transform .15s,background .15s}.check.done{background:var(--c);animation:.3s pop}.icon{color:var(--muted);background:0 0;border:none;padding:4px 8px}.badge-grid{grid-template-columns:repeat(auto-fill,minmax(84px,1fr));gap:8px;display:grid}.badge{background:var(--panel-2);text-align:center;border-radius:10px;flex-direction:column;align-items:center;gap:4px;padding:10px 4px;display:flex}.badge-emoji{font-size:1.6rem}.badge-name{font-size:.7rem;font-weight:600}.badge.locked{opacity:.4}.badge.earned{box-shadow:inset 0 0 0 1px var(--accent-2)}.calendar-header h2{font-size:1.3rem}.calendar-nav{gap:6px;display:flex}.grid{grid-template-columns:repeat(7,1fr);gap:6px;display:grid}.weekday{text-align:center;color:var(--muted);padding-bottom:4px;font-size:.75rem;font-weight:600}.day{background:color-mix(in srgb, var(--good) calc(var(--fill,0) * 28%), var(--panel-2));border:1px solid var(--border);text-align:left;border-radius:10px;flex-direction:column;align-items:stretch;min-height:96px;padding:6px;display:flex;position:relative}.day.outside{opacity:.35}.day.future{opacity:.5}.day.outside.future{opacity:.25}.day.today{outline:2px solid var(--accent);outline-offset:1px}.day.perfect{border-color:var(--accent-2);box-shadow:0 0 12px color-mix(in srgb, var(--accent-2) 35%, transparent)}.day-num{justify-content:space-between;font-size:.85rem;font-weight:600;display:flex}.perfect-mark{font-size:.85rem}.dots{flex-wrap:wrap;gap:4px;margin-top:auto;display:flex}.dot{border:2px solid var(--c);filter:grayscale();opacity:.45;background:0 0;border-radius:50%;width:26px;height:26px;padding:0;font-size:.8rem;line-height:1;transition:all .15s}.dot:hover:not(:disabled){opacity:.8;filter:none}.dot.done{background:color-mix(in srgb, var(--c) 35%, transparent);filter:none;opacity:1;animation:.3s pop}.dot:disabled{opacity:.2}button.day{cursor:pointer}button.day:hover:not(:disabled){border-color:var(--muted)}button.day.done{color:#fff;border-color:#0000;animation:.3s pop}.day-check{margin:auto;font-size:1.6rem;font-weight:800}.day-streak{font-size:.75rem;font-weight:700;position:absolute;bottom:6px;right:6px}@media (width<=600px){.day{min-height:64px;padding:4px}.dot{border-width:1px;width:18px;height:18px;font-size:.6rem}.day-check{font-size:1.1rem}.grid{gap:3px}}.modal-backdrop{z-index:10;background:#0000008c;place-items:center;padding:16px;display:grid;position:fixed;inset:0}.modal{background:var(--panel);border:1px solid var(--border);border-radius:var(--radius);flex-direction:column;gap:14px;width:min(420px,100%);padding:20px;display:flex}.modal label{color:var(--muted);flex-direction:column;gap:6px;font-size:.85rem;display:flex}.modal input{font:inherit;color:var(--text);background:var(--panel-2);border:1px solid var(--border);border-radius:10px;padding:10px}.modal fieldset{border:none;margin:0;padding:0}.modal legend{color:var(--muted);margin-bottom:6px;font-size:.85rem}.choices{flex-wrap:wrap;gap:6px;display:flex}.choice{width:40px;height:40px;padding:0;font-size:1.2rem}.choice.selected{border-color:var(--accent);background:color-mix(in srgb, var(--accent) 20%, var(--panel-2))}.swatch{border:3px solid #0000;border-radius:50%;width:32px;height:32px;padding:0}.swatch.selected{border-color:var(--text)}.modal-actions{gap:8px;display:flex}.spacer{flex:1}.toasts{z-index:20;flex-direction:column;gap:8px;display:flex;position:fixed;bottom:16px;right:16px}.toast{background:var(--panel);border:1px solid var(--border);border-radius:12px;align-items:center;gap:10px;min-width:220px;padding:10px 14px;animation:.3s ease-out slide-in;display:flex;box-shadow:0 8px 24px #0000004d}.toast.big{border-color:var(--accent-2)}.toast-icon{font-size:1.5rem}.toast.big .toast-icon{font-size:2rem}.toast-title{font-weight:700}.toast-detail{color:var(--muted);font-size:.8rem}.confetti{pointer-events:none;z-index:30;position:fixed;inset:0;overflow:hidden}.confetti span{font-size:1.4rem;animation:linear forwards fall;position:absolute;top:-40px}@keyframes pop{0%{transform:scale(.8)}60%{transform:scale(1.15)}to{transform:scale(1)}}@keyframes slide-in{0%{opacity:0;transform:translate(30px)}}@keyframes fall{to{opacity:.8;transform:translateY(110vh)rotate(540deg)}}@media (prefers-reduced-motion:reduce){*,:before,:after{transition:none!important;animation:none!important}.confetti{display:none}}.account{align-items:center;gap:8px;display:flex}.account-email{color:var(--muted);text-overflow:ellipsis;white-space:nowrap;max-width:180px;font-size:.85rem;overflow:hidden}.sync-dot{background:var(--muted);border-radius:50%;flex-shrink:0;width:9px;height:9px}.sync-dot.synced{background:var(--good)}.sync-dot.syncing{background:var(--accent-2);animation:1s infinite pulse}.sync-dot.offline{background:#ef4444}button.link{color:var(--accent);background:0 0;border:none;padding:6px 0}.error{color:#ef4444;margin:0;font-size:.85rem}.hint{color:var(--muted);margin:8px 0 0;font-size:.8rem}.segmented{border:1px solid var(--border);border-radius:10px;display:flex;overflow:hidden}.segmented button{border:none;border-radius:0;flex:1;padding:8px 4px;font-size:.85rem}.segmented button+button{border-left:1px solid var(--border)}.segmented button.selected{background:color-mix(in srgb, var(--accent) 25%, var(--panel-2));font-weight:600}.weekdays{margin-top:8px}.weekdays .choice{font-size:.8rem;font-weight:600}.stepper{align-items:center;gap:12px;margin-top:8px;display:flex}.stepper button{width:36px;height:36px;padding:0;font-size:1.1rem}.habit-body{flex-direction:column;flex:1;align-items:flex-start;gap:6px;min-width:0;display:flex}.habit-meta{flex-wrap:wrap}.habit-row.off .check{opacity:.5;border-style:dashed}.rescue{background:color-mix(in srgb, #38bdf8 18%, var(--panel-2));color:#7dd3fc;border-color:#38bdf8;border-radius:99px;padding:4px 10px;font-size:.75rem;font-weight:600;animation:2s infinite pulse}.rescue:disabled{opacity:.5;animation:none}@media (prefers-color-scheme:light){.rescue{color:#0369a1}}.day-wrap{display:flex;position:relative}.day-wrap>.day{flex:1;width:100%}.day.off:not(.done){background:repeating-linear-gradient(135deg, var(--panel-2) 0 6px, transparent 6px 12px)}.day.frozen:not(.done){background:color-mix(in srgb, #38bdf8 22%, var(--panel-2));border-color:#38bdf8}.day.missed{border-color:color-mix(in srgb, #ef4444 55%, var(--border))}.day.week-done:not(.done){box-shadow:inset 0 0 0 2px color-mix(in srgb, var(--good) 50%, transparent)}.freeze-btn{background:var(--panel);opacity:.85;border-radius:50%;width:24px;height:24px;padding:0;font-size:.75rem;position:absolute;top:4px;right:4px}.freeze-btn:hover{opacity:1;border-color:#38bdf8}.dot.off:not(.done){opacity:.25;border-style:dashed}.dot.frozen{filter:none;opacity:1;background:#38bdf833;border-color:#38bdf8}.legend{flex-wrap:wrap;align-items:center;gap:14px;margin:12px 0 0;font-size:.8rem;display:flex}.legend span{align-items:center;gap:6px;display:inline-flex}.lg{border:1px solid var(--border);border-radius:4px;width:14px;height:14px;display:inline-block}.lg.frozen{background:color-mix(in srgb, #38bdf8 35%, var(--panel-2));border-color:#38bdf8}.lg.missed{border-color:#ef4444}.lg.off{background:repeating-linear-gradient(135deg, var(--muted) 0 2px, transparent 2px 4px)}@keyframes pulse{50%{opacity:.6}}
