.habit-tracker-card{height:100%;display:flex;flex-direction:column;min-height:0;padding:.75rem;background-color:var(--card);border-radius:.75rem;box-shadow:0 1px 2px 0 rgba(0,0,0,.05);transition:box-shadow .2s ease;border-width:1px;border-style:solid;border-color:var(--border)}.habit-tracker-card:hover{box-shadow:0 4px 6px -1px rgba(0,0,0,.1),0 2px 4px -1px rgba(0,0,0,.06)}@media (min-width:640px){.habit-tracker-card{padding:1rem}}.habit-tracker-card__header{display:flex;align-items:center;justify-content:space-between;margin-bottom:.75rem}@media (min-width:640px){.habit-tracker-card__header{margin-bottom:1rem}}.habit-tracker-card__title-container{display:flex;align-items:center;gap:.5rem}.habit-tracker-card__icon{width:1rem;height:1rem;color:var(--accent)}@media (min-width:640px){.habit-tracker-card__icon{width:1.25rem;height:1.25rem}}.habit-tracker-card__title{font-weight:600;color:var(--text);font-size:.875rem}@media (min-width:640px){.habit-tracker-card__title{font-size:1rem}}.habit-tracker-card__link{display:flex;align-items:center;font-size:.75rem;color:var(--primary);font-weight:500;padding:.25rem;min-height:2.75rem;min-width:2.75rem;transition:color .2s ease}.habit-tracker-card__link:hover{color:var(--accent)}.habit-tracker-card__week-range{margin-bottom:.75rem;font-size:.75rem;color:var(--text-description);font-weight:500}.habit-tracker-card__content{flex:1;overflow:hidden}.habit-tracker-card__habits-grid{display:flex;flex-direction:column;gap:.5rem}.habit-tracker-card__days-header{display:grid;grid-template-columns:1fr repeat(7,32px);gap:.25rem;align-items:center;margin-bottom:.5rem}.habit-tracker-card__day-header,.habit-tracker-card__days-header-label{font-size:.75rem;font-weight:500;color:var(--text-description)}.habit-tracker-card__day-header{text-align:center}.habit-tracker-card__day-name{display:block}.habit-tracker-card__day-number{color:var(--text);font-weight:700}.habit-tracker-card__habits-list{display:flex;flex-direction:column;gap:.25rem;overflow:hidden;max-height:12rem}.habit-tracker-card__habit-row{display:grid;grid-template-columns:1fr repeat(7,32px);gap:.25rem;align-items:center}.habit-tracker-card__habit-name-container{display:flex;align-items:center;min-width:0}.habit-tracker-card__habit-color{width:.5rem;height:.5rem;border-radius:50%;margin-right:.5rem;flex-shrink:0}.habit-tracker-card__habit-name{font-size:.75rem;font-weight:500;color:var(--text);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.habit-tracker-card__habit-cell{width:2rem;height:2rem;border-radius:.25rem;border-width:2px;display:flex;align-items:center;justify-content:center;transition:all .2s ease;cursor:pointer}.habit-tracker-card__habit-cell:hover{transform:scale(1.05)}.habit-tracker-card__habit-cell--completed{color:#fff}.habit-tracker-card__habit-cell--missed{background-color:#fff;border-color:var(--text-muted);color:var(--text-muted)}.habit-tracker-card__habit-cell--upcoming{background-color:var(--card);border-color:var(--text-muted)}.habit-tracker-card__habit-cell--upcoming:hover{border-color:var(--text-secondary)}.habit-tracker-card__empty-state{text-align:center;padding:1.5rem 0}@media (min-width:640px){.habit-tracker-card__empty-state{padding:2rem 0}}.habit-tracker-card__empty-icon{width:1.5rem;height:1.5rem;color:var(--text-muted);margin:0 auto .5rem}@media (min-width:640px){.habit-tracker-card__empty-icon{width:2rem;height:2rem;margin-bottom:.75rem}}.habit-tracker-card__empty-title{font-size:.75rem;color:var(--text-secondary);margin-bottom:.25rem}@media (min-width:640px){.habit-tracker-card__empty-title{font-size:.875rem;margin-bottom:.5rem}}.habit-tracker-card__empty-subtitle{font-size:.75rem;margin-bottom:.75rem;color:var(--text-description)}@media (min-width:640px){.habit-tracker-card__empty-subtitle{margin-bottom:1rem}}.habit-tracker-card__empty-link{font-size:.75rem;color:var(--primary);font-weight:500;min-height:2.75rem;min-width:2.75rem;display:inline-flex;align-items:center;justify-content:center;transition:color .2s ease}.habit-tracker-card__empty-link:hover{color:var(--accent)}@media (min-width:640px){.habit-tracker-card__empty-link{font-size:.875rem}}.calendar-card{background-color:var(--card);border-radius:.75rem;box-shadow:0 1px 2px 0 rgba(0,0,0,.05);height:100%;display:flex;flex-direction:column;transition:box-shadow .2s ease;border-width:1px;border-style:solid;border-color:var(--border)}.calendar-card:hover{box-shadow:0 4px 6px -1px rgba(0,0,0,.1),0 2px 4px -1px rgba(0,0,0,.06)}.calendar-card__header{display:flex;align-items:center;justify-content:space-between;padding:.75rem;border-bottom:1px solid var(--border)}@media (min-width:640px){.calendar-card__header{padding:1rem}}.calendar-card__title-container{display:flex;align-items:center;gap:.5rem}.calendar-card__icon{width:1rem;height:1rem;color:var(--accent)}@media (min-width:640px){.calendar-card__icon{width:1.25rem;height:1.25rem}}.calendar-card__title{font-weight:600;color:var(--text);font-size:.875rem}@media (min-width:640px){.calendar-card__title{font-size:1rem}}.calendar-card__controls{display:flex;align-items:center;gap:.25rem}@media (min-width:640px){.calendar-card__controls{gap:.5rem}}.calendar-card__view-toggle{display:none;background-color:var(--card);border-radius:.375rem;border:1px solid var(--border)}@media (min-width:640px){.calendar-card__view-toggle{display:flex}}.calendar-card__view-button{padding:.25rem .5rem;font-size:.75rem;font-weight:500;transition:color .2s ease;color:var(--text-description)}.calendar-card__view-button:hover{color:var(--text)}.calendar-card__view-button--active{background-color:var(--primary);color:#fff}.calendar-card__control-button{padding:.25rem;transition:color .2s ease;min-height:2.75rem;min-width:2.75rem;display:inline-flex;align-items:center;justify-content:center;color:var(--text-description)}.calendar-card__control-button:hover{color:var(--text)}.calendar-card__control-icon{width:.75rem;height:.75rem}@media (min-width:640px){.calendar-card__control-icon{width:1rem;height:1rem}}.calendar-card__content{flex:1;padding:.75rem}@media (min-width:640px){.calendar-card__content{padding:1rem}}.calendar-card__loading{display:flex;flex-direction:column;gap:.5rem}@media (min-width:640px){.calendar-card__loading{gap:.75rem}}.calendar-card__loading-item{animation:pulse 2s cubic-bezier(.4,0,.6,1) infinite}.calendar-card__loading-title{height:.75rem;background-color:var(--card);border-radius:.25rem;width:75%;margin-bottom:.25rem}@media (min-width:640px){.calendar-card__loading-title{height:1rem;margin-bottom:.5rem}}.calendar-card__loading-subtitle{height:.5rem;background-color:var(--card);border-radius:.25rem;width:50%}@media (min-width:640px){.calendar-card__loading-subtitle{height:.75rem}}.calendar-card__error{text-align:center;padding:.75rem 0}@media (min-width:640px){.calendar-card__error{padding:1rem 0}}.calendar-card__error-text{color:#ef4444;font-size:.75rem;margin-bottom:.5rem}@media (min-width:640px){.calendar-card__error-text{font-size:.875rem}}.calendar-card__error-button{color:var(--primary);font-size:.75rem;font-weight:500;min-height:2.75rem;min-width:2.75rem;display:inline-flex;align-items:center;justify-content:center;transition:color .2s ease}.calendar-card__error-button:hover{color:var(--accent)}@media (min-width:640px){.calendar-card__error-button{font-size:.875rem}}.calendar-card__empty-state{text-align:center;padding:1rem 0}@media (min-width:640px){.calendar-card__empty-state{padding:1.5rem 0}}.calendar-card__empty-icon{width:1.5rem;height:1.5rem;margin:0 auto .5rem;color:var(--text-description)}@media (min-width:640px){.calendar-card__empty-icon{width:2rem;height:2rem}}.calendar-card__empty-text{font-size:.75rem;color:var(--text-description)}@media (min-width:640px){.calendar-card__empty-text{font-size:.875rem}}.calendar-card__events{display:flex;flex-direction:column;gap:.5rem}@media (min-width:640px){.calendar-card__events{gap:.75rem}}.calendar-card__event{border-left:2px solid var(--primary);padding-left:.5rem;padding-top:.25rem;padding-bottom:.25rem}@media (min-width:640px){.calendar-card__event{padding-left:.75rem}}.calendar-card__event-content{display:flex;align-items:flex-start;justify-content:space-between}.calendar-card__event-info{flex:1;min-width:0}.calendar-card__event-title{font-weight:500;color:var(--text);font-size:.75rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}@media (min-width:640px){.calendar-card__event-title{font-size:.875rem}}.calendar-card__event-details{display:flex;align-items:center;font-size:.75rem;margin-top:.25rem;color:var(--text-description)}.calendar-card__event-time-icon{width:.75rem;height:.75rem;margin-right:.25rem}.calendar-card__event-separator{margin:0 .25rem}.calendar-card__event-location{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.calendar-card__events-footer{padding-top:.5rem;border-top:1px solid var(--border)}.calendar-card__view-all-link{color:var(--primary);font-size:.75rem;font-weight:500;min-height:2.75rem;min-width:2.75rem;display:inline-flex;align-items:center;justify-content:center;transition:color .2s ease}.calendar-card__view-all-link:hover{color:var(--accent)}@media (min-width:640px){.calendar-card__view-all-link{font-size:.875rem}}.calendar-card__connect-state{flex:1;display:flex;align-items:center;justify-content:center;padding:1rem}@media (min-width:640px){.calendar-card__connect-state{padding:1.5rem}}.calendar-card__connect-content{text-align:center}.calendar-card__connect-icon{width:2rem;height:2rem;margin:0 auto .75rem;color:var(--text-description)}@media (min-width:640px){.calendar-card__connect-icon{width:3rem;height:3rem;margin-bottom:1rem}}.calendar-card__connect-text{margin-bottom:.75rem;font-size:.75rem;color:var(--text-description)}@media (min-width:640px){.calendar-card__connect-text{margin-bottom:1rem;font-size:.875rem}}.calendar-card__connect-button{background-color:var(--primary);color:#fff;padding:.75rem;border-radius:.5rem;transition:background-color .2s ease;font-size:.75rem;min-height:2.75rem;min-width:2.75rem;display:inline-flex;align-items:center;justify-content:center}.calendar-card__connect-button:hover{background-color:var(--accent)}@media (min-width:640px){.calendar-card__connect-button{padding:.75rem 1rem;font-size:.875rem}}