*{margin:0;padding:0;box-sizing:border-box}body{font-family:Times,serif;background:linear-gradient(135deg,#fdf2f8,#fce7f3);min-height:100vh;color:#7c2d8e}#app{padding:20px;max-width:400px;margin:0 auto;min-height:100vh}.app-title{text-align:center;font-size:2.5rem;font-weight:600;color:#be185d;margin-bottom:30px;text-shadow:0 2px 4px rgba(190,24,93,.1);animation:fade-in-down .8s ease-out}@keyframes fade-in-down{0%{opacity:0;transform:translateY(-20px)}to{opacity:1;transform:translateY(0)}}.update-banner{background:#f472b626;border:1px solid rgba(244,114,182,.3);border-radius:16px;margin-bottom:20px;padding:16px;animation:fade-in-down .6s ease-out;box-shadow:0 4px 15px #f472b61a}.update-content{display:flex;align-items:center;justify-content:space-between;gap:12px}.update-text{color:#be185d;font-weight:500;font-size:.95rem}.update-actions{display:flex;gap:8px}.update-btn{padding:8px 16px;border:none;border-radius:12px;font-family:Times,serif;font-size:.85rem;font-weight:500;cursor:pointer;transition:all .2s ease}.update-btn-primary{background:#be185d;color:#fff}.update-btn-primary:hover{background:#a0145a;transform:translateY(-1px)}.update-btn-secondary{background:#fffc;color:#be185d;border:1px solid rgba(244,114,182,.3)}.update-btn-secondary:hover{background:#ffffffe6;transform:translateY(-1px)}.today-section{background:#ffffffb3;border-radius:24px;padding:28px;margin-bottom:32px;box-shadow:0 12px 40px #be185d14;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border:1px solid rgba(255,255,255,.3);animation:fade-in-up .8s ease-out .2s both}@keyframes fade-in-up{0%{opacity:0;transform:translateY(30px)}to{opacity:1;transform:translateY(0)}}.today-date{text-align:center;font-size:1.3rem;color:#be185d;margin-bottom:20px;font-weight:500}.today-button{width:100%;height:60px;padding:15px;font-size:1.1rem;font-family:Times,serif;font-weight:500;border:none;border-radius:15px;cursor:pointer;transition:all .3s ease;box-shadow:0 4px 15px #be185d33;display:flex;align-items:center;justify-content:center}.today-button.active{background:#f472b626;color:#be185d;border:2px solid rgba(244,114,182,.4)}.today-button.inactive{background:#fffc;color:#be185d;border:2px solid rgba(190,24,93,.2)}.today-button:hover{transform:translateY(-2px);box-shadow:0 6px 20px #be185d4d}.stats-section{background:#ffffffb3;border-radius:24px;margin-bottom:32px;box-shadow:0 12px 40px #be185d14;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border:1px solid rgba(255,255,255,.3);animation:fade-in-up .8s ease-out .3s both;overflow:hidden}.stats-toggle{width:100%;padding:20px 28px;background:none;border:none;display:flex;justify-content:space-between;align-items:center;cursor:pointer;font-family:Times,serif;font-size:1.1rem;font-weight:500;color:#be185d;transition:all .3s ease}.stats-toggle:hover{background:#f472b60d}.stats-toggle.expanded{background:#f472b614}.stats-icon{font-size:1.2rem;transition:transform .3s ease}.stats-toggle.expanded .stats-icon{transform:rotate(180deg)}.stats-content{max-height:0;overflow:hidden;transition:max-height .4s cubic-bezier(.4,0,.2,1),padding .4s ease;padding:0 28px}.stats-content.visible{max-height:400px;padding:20px 28px 16px}.stats-grid{display:flex;flex-wrap:wrap;gap:16px}.stat-card{flex:1;min-width:120px;background:#fff9;border-radius:16px;padding:18px 12px;text-align:center;border:1px solid rgba(244,114,182,.2);transition:all .3s ease;animation:stat-appear .5s ease-out both}.stat-card:nth-child(1){animation-delay:.1s}.stat-card:nth-child(2){animation-delay:.2s}.stat-card:nth-child(3){animation-delay:.3s}.stat-card:nth-child(4){animation-delay:.4s}@keyframes stat-appear{0%{opacity:0;transform:translateY(20px) scale(.95)}to{opacity:1;transform:translateY(0) scale(1)}}.stat-card:hover{transform:translateY(-2px);box-shadow:0 8px 25px #f472b626;border-color:#f472b64d}.stat-value{font-size:1.4rem;font-weight:600;color:#be185d;margin-bottom:6px;line-height:1.2}.stat-label{font-size:.85rem;color:#7c2d8e;font-weight:500;opacity:.8;line-height:1.3}.insights-text{background:#f472b61a;border-radius:16px;padding:16px 20px;text-align:center;color:#be185d;font-style:italic;font-size:.95rem;border:1px solid rgba(244,114,182,.2);animation:insight-glow .6s ease-out .5s both}@keyframes insight-glow{0%{opacity:0;background:#f472b60d}to{opacity:1;background:#f472b61a}}.calendar-section{background:#ffffffb3;border-radius:24px;padding:28px;box-shadow:0 12px 40px #be185d14;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border:1px solid rgba(255,255,255,.3);animation:fade-in-up .8s ease-out .4s both}.calendar-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:20px}.calendar-nav{background:none;border:none;font-size:1.5rem;color:#be185d;cursor:pointer;padding:12px;border-radius:12px;transition:all .2s cubic-bezier(.4,0,.2,1);min-width:44px;min-height:44px;display:flex;align-items:center;justify-content:center}@media (hover: hover) and (pointer: fine){.calendar-nav:hover{background:#f472b626;transform:scale(1.05)}}.calendar-nav:active{transform:scale(.95);background:#f472b640}.calendar-month{font-size:1.3rem;font-weight:600;color:#be185d}.calendar-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:0;transition:opacity .3s ease,transform .3s ease}.calendar-grid.transitioning{opacity:.3;transform:scale(.98)}.calendar-day-header{text-align:center;font-size:.85rem;font-weight:600;color:#be185d;padding:12px 5px;letter-spacing:.5px;text-transform:uppercase;opacity:.8}.calendar-day{aspect-ratio:1;display:flex;align-items:center;justify-content:center;border-radius:10px;cursor:pointer;transition:all .2s cubic-bezier(.4,0,.2,1);font-weight:500;position:relative}.calendar-day.initial-load{animation:calendar-day-appear .4s ease-out both}@keyframes calendar-day-appear{0%{opacity:0;transform:scale(.95)}to{opacity:1;transform:scale(1)}}.calendar-day.current-month{background:#fff9;color:#7c2d8e}.calendar-day.other-month{background:#ffffff1a;color:#c4b5fd;opacity:.5}.calendar-day.today{position:relative;font-weight:600}.calendar-day.today:after{content:"";position:absolute;bottom:5px;left:50%;transform:translate(-50%);width:6px;height:6px;background:#f472b6;border-radius:50%;box-shadow:0 0 8px #f472b699;animation:pulse-glow 2s ease-in-out infinite}@keyframes pulse-glow{0%,to{box-shadow:0 0 8px #f472b699;transform:translate(-50%) scale(1)}50%{box-shadow:0 0 12px #f472b6cc;transform:translate(-50%) scale(1.1)}}.calendar-day.period:not(.initial-load){background:#f472b633;color:#be185d;font-weight:600;position:relative;border-top:1px solid rgba(244,114,182,.4);border-bottom:1px solid rgba(244,114,182,.4)}.calendar-day.period.initial-load{background:#f472b633;color:#be185d;font-weight:600;position:relative;border-top:1px solid rgba(244,114,182,.4);border-bottom:1px solid rgba(244,114,182,.4)}.calendar-day.period.start{border-radius:10px 0 0 10px;border-left:1px solid rgba(244,114,182,.4)}.calendar-day.period.end{border-radius:0 10px 10px 0;border-right:1px solid rgba(244,114,182,.4)}.calendar-day.period.middle{border-radius:0}.calendar-day.period.single{border-radius:10px;border-left:1px solid rgba(244,114,182,.4);border-right:1px solid rgba(244,114,182,.4)}@media (hover: hover) and (pointer: fine){.calendar-day:hover{transform:scale(1.05);box-shadow:0 4px 15px #be185d33;z-index:10;position:relative}}.calendar-day:active{transform:scale(.95);transition:transform .1s ease}@keyframes shimmer{0%{background-position:-200px 0}to{background-position:calc(200px + 100%) 0}}.loading-shimmer{background:linear-gradient(90deg,#fff3 25%,#fff6,#fff3 75%);background-size:200px 100%;animation:shimmer 1.5s infinite}
