.bottom-nav{z-index:50;width:100%;max-width:32rem;padding-bottom:env(safe-area-inset-bottom,0px);background:#fff;border-top:1px solid #e2e8f0;position:fixed;bottom:0;left:50%;transform:translate(-50%)}.bottom-nav-item{color:#94a3b8;cursor:pointer;background:0 0;border:none;flex-direction:column;flex:1;justify-content:center;align-items:center;gap:.25rem;padding:.625rem 0;font-size:.7rem;line-height:1;transition:color .2s;display:flex}.bottom-nav-item.active{color:#4f46e5}.bottom-nav-item svg{width:1.5rem;height:1.5rem}.main-content{flex:1;padding-bottom:4.5rem}.stats-wrapper{flex-direction:column;max-height:calc(100vh - 7rem);padding-bottom:4.5rem;display:flex;overflow:hidden}.fade-in{animation:.25s ease-out fadeIn}@keyframes fadeIn{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}.confetti-canvas{pointer-events:none;z-index:9999;width:100%;height:100%;position:fixed;top:0;left:0}.pwa-install-banner{z-index:60;background:#fff;border-radius:.75rem;width:calc(100% - 2rem);max-width:28rem;padding:1rem;animation:.3s ease-out slideUp;position:fixed;bottom:5rem;left:50%;transform:translate(-50%);box-shadow:0 10px 25px -5px #0000001a,0 8px 10px -6px #0000001a}@keyframes slideUp{0%{opacity:0;transform:translate(-50%)translateY(1rem)}to{opacity:1;transform:translate(-50%)translateY(0)}}.toast-container{z-index:100;pointer-events:none;width:calc(100% - 2rem);max-width:28rem;position:fixed;top:1rem;left:50%;transform:translate(-50%)}.toast{color:#fff;pointer-events:auto;background:#1e293b;border-radius:.5rem;padding:.75rem 1rem;font-size:.875rem;animation:.3s ease-out toastIn,.3s ease-in 2.2s forwards toastOut;box-shadow:0 4px 12px #00000026}.toast.toast-success{background:#10b981}.toast.toast-error{background:#ef4444}@keyframes toastIn{0%{opacity:0;transform:translateY(-.5rem)}to{opacity:1;transform:translateY(0)}}@keyframes toastOut{0%{opacity:1;transform:translateY(0)}to{opacity:0;transform:translateY(-.5rem)}}.spinner{border:3px solid #e2e8f0;border-top-color:#4f46e5;border-radius:50%;width:2rem;height:2rem;animation:.7s linear infinite spin}.spinner-sm{border-width:2px;width:1.25rem;height:1.25rem}@keyframes spin{to{transform:rotate(360deg)}}.scroll-loading{justify-content:center;align-items:center;padding:1.5rem 0;display:flex}.scroll-loading-dots{gap:.375rem;display:flex}.scroll-loading-dots span{background:#94a3b8;border-radius:50%;width:.5rem;height:.5rem;animation:1.2s ease-in-out infinite dotPulse}.scroll-loading-dots span:nth-child(2){animation-delay:.2s}.scroll-loading-dots span:nth-child(3){animation-delay:.4s}@keyframes dotPulse{0%,80%,to{opacity:.3;transform:scale(.8)}40%{opacity:1;transform:scale(1)}}.achieved-highlight{background:linear-gradient(135deg,#ecfdf5 0%,#d1fae5 100%);border-left:3px solid #10b981}.achieved-badge{color:#fff;background:#10b981;border-radius:9999px;align-items:center;gap:.25rem;padding:.125rem .5rem;font-size:.75rem;font-weight:600;display:inline-flex}.category-badge{color:#6d28d9;background:#ede9fe;border-radius:9999px;padding:.125rem .5rem;font-size:.75rem;display:inline-block}.reaction-btn{color:#94a3b8;cursor:pointer;background:0 0;border:1px solid #e2e8f0;border-radius:9999px;align-items:center;gap:.25rem;padding:.25rem .625rem;font-size:.75rem;transition:all .2s;display:inline-flex}.reaction-btn:hover{color:#f472b6;border-color:#f472b6}.reaction-btn.reacted{color:#ec4899;background:#fdf2f8;border-color:#f472b6}.reaction-btn svg{width:.875rem;height:.875rem}.calendar-grid{grid-template-columns:repeat(7,1fr);gap:1px;display:grid}.calendar-cell{aspect-ratio:1;cursor:pointer;border-radius:.375rem;flex-direction:column;justify-content:center;align-items:center;font-size:.875rem;transition:background .15s;display:flex;position:relative}.calendar-cell:hover{background:#f1f5f9}.calendar-cell.today{color:#4f46e5;background:#eef2ff;font-weight:700}.calendar-cell.has-event:after{content:"";background:#4f46e5;border-radius:50%;width:.375rem;height:.375rem;position:absolute;bottom:.25rem}@media print{body{background:#fff!important}.bottom-nav,.pwa-install-banner,.toast-container,.no-print{display:none!important}.main-content{padding-bottom:0!important}#app{max-width:100%!important}}.chip-group{flex-wrap:wrap;gap:.5rem;display:flex}.chip{cursor:pointer;color:#64748b;background:#fff;border:1px solid #e2e8f0;border-radius:9999px;align-items:center;padding:.375rem .75rem;font-size:.875rem;transition:all .15s;display:inline-flex}.chip.selected{color:#fff;background:#4f46e5;border-color:#4f46e5}.modal-overlay{z-index:70;background:#0006;justify-content:center;align-items:flex-end;animation:.2s ease-out fadeInBg;display:flex;position:fixed;inset:0}@keyframes fadeInBg{0%{opacity:0}to{opacity:1}}.modal-sheet{background:#fff;border-radius:1rem 1rem 0 0;width:100%;max-width:32rem;max-height:80vh;padding:1.5rem;animation:.25s ease-out sheetUp;overflow-y:auto}@keyframes sheetUp{0%{transform:translateY(100%)}to{transform:translateY(0)}}.stat-card{background:#fff;border-radius:.75rem;padding:1rem;box-shadow:0 1px 3px #0000000f}.filter-tab{cursor:pointer;color:#64748b;background:0 0;border:none;border-radius:9999px;padding:.375rem .75rem;font-size:.875rem;transition:all .15s}.filter-tab.active{color:#fff;background:#4f46e5}.app-header{z-index:40;background:#fff;border-bottom:1px solid #e2e8f0;justify-content:space-between;align-items:center;max-width:32rem;margin:0 auto;padding:.75rem 1rem;display:flex;position:sticky;top:0}.app-header-title{color:#4f46e5;font-size:1.125rem;font-weight:700}.notification-bell{cursor:pointer;background:0 0;border:none;padding:.25rem;position:relative}.notification-bell svg{color:#64748b;width:1.5rem;height:1.5rem}.notification-badge{color:#fff;background:#ef4444;border-radius:9999px;justify-content:center;align-items:center;min-width:1rem;height:1rem;padding:0 .25rem;font-size:.625rem;font-weight:700;display:flex;position:absolute;top:-.25rem;right:-.25rem}.notification-item{cursor:pointer;border-bottom:1px solid #f1f5f9;gap:.75rem;padding:.75rem 1rem;display:flex}.notification-item.unread{background:#eff6ff}.notification-item-title{font-size:.875rem;font-weight:600}.notification-item-body{color:#64748b;margin-top:.125rem;font-size:.8rem}.notification-item-time{color:#94a3b8;margin-top:.25rem;font-size:.7rem}
