.habit-card{background:var(--color-background, #FFFFFF);border:1px solid var(--color-border, #E5E5E5);border-radius:var(--radius-md, 8px);padding:var(--space-lg, 1.5rem);transition:all var(--transition-base, .2s ease);margin-bottom:var(--space-md, 1rem)}.habit-card:hover{border-color:var(--color-border-hover, #CCCCCC);box-shadow:var(--shadow-md, 0 4px 12px rgba(0, 0, 0, .08));transform:translateY(-2px)}.habit-card__content{display:flex;align-items:center;gap:var(--space-lg, 1.5rem)}.habit-card__info{flex:1;min-width:0}.habit-card__name{font-size:var(--font-size-lg, 1.125rem);font-weight:var(--font-weight-medium, 500);color:var(--color-text-primary, #1A1A1A);text-decoration:none;display:block;margin-bottom:var(--space-xs, .25rem);transition:color var(--transition-fast, .15s ease)}.habit-card__name:hover{color:var(--color-text-secondary, #6B6B6B)}.habit-card__description{font-size:var(--font-size-sm, .875rem);color:var(--color-text-secondary, #6B6B6B);margin:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.habit-card__week{display:flex;gap:var(--space-sm, .5rem);align-items:center}.habit-card__day{display:flex;flex-direction:column;align-items:center;gap:var(--space-xs, .25rem)}.habit-card__day-label{font-size:var(--font-size-xs, .75rem);color:var(--color-text-tertiary, #9E9E9E);font-weight:var(--font-weight-medium, 500);text-transform:uppercase}.habit-card__day--today .habit-card__day-label{color:var(--color-text-primary, #1A1A1A);font-weight:var(--font-weight-semibold, 600)}.habit-card__day--today .habit-card__day-circle{border-width:2.5px;border-color:var(--color-text-primary, #1A1A1A)}.habit-card__day-circle{width:32px;height:32px;border:2px solid var(--color-border, #E5E5E5);border-radius:50%;transition:all var(--transition-fast, .15s ease);cursor:default;display:flex;align-items:center;justify-content:center;position:relative}.habit-card__day-circle--clickable{cursor:pointer}.habit-card__day-circle:hover{border-color:var(--color-border-hover, #CCCCCC);background:var(--color-hover, #F5F5F5)}.habit-card__day-circle--clickable:hover{border-color:var(--color-text-primary, #1A1A1A);background:var(--color-hover, #F5F5F5)}.habit-card__day-badge{position:absolute;top:-5px;right:-4px;background:var(--color-text-primary, #1A1A1A);color:var(--color-background, #FFFFFF);font-size:9px;font-weight:var(--font-weight-semibold, 600);min-width:14px;height:14px;border-radius:7px;display:flex;align-items:center;justify-content:center;padding:0 3px;line-height:1}.habit-card__day-circle--completed{border-color:var(--color-text-primary, #1A1A1A);background:var(--color-background, #FFFFFF)}.habit-card__check-icon{color:var(--color-text-primary, #1A1A1A)}.habit-card__day-circle--loading{opacity:.4;animation:pulse 1.5s ease-in-out infinite}@keyframes pulse{0%,to{opacity:.4}50%{opacity:.2}}.habit-card__edit{display:flex;align-items:center;justify-content:center;padding:var(--space-sm, .5rem);color:var(--color-text-secondary, #6B6B6B);transition:all var(--transition-fast, .15s ease);border-radius:var(--radius-sm, 4px);flex-shrink:0;min-width:44px;min-height:44px}.habit-card__edit:hover{background:var(--color-hover, #F5F5F5);color:var(--color-text-primary, #1A1A1A)}@media(max-width:768px){.habit-card__content{flex-direction:column;align-items:stretch;gap:var(--space-md, 1rem)}.habit-card__week{justify-content:space-between;width:100%}.habit-card__day-circle{width:28px;height:28px}.habit-card__edit{align-self:flex-end}}@media(max-width:1024px)and (min-width:769px){.habit-card__description{max-width:200px}.habit-card__week{gap:var(--space-xs, .25rem)}.habit-card__day-circle{width:30px;height:30px}}.habits-page{max-width:1200px;margin:0 auto;width:100%}.habits-page__header{margin-bottom:var(--space-xl, 2rem)}.habits-page__header h1{margin:0}.habits-page__form{display:flex;gap:var(--space-md, 1rem);margin-bottom:var(--space-2xl, 3rem);padding:var(--space-lg, 1.5rem);background:var(--color-surface, #FAFAFA);border-radius:var(--radius-md, 8px);border:1px solid var(--color-border, #E5E5E5)}.habits-page__input{flex:1;padding:12px 16px;border:1px solid var(--color-border, #E5E5E5);border-radius:var(--radius-sm, 4px);font-size:var(--font-size-base, 1rem);font-family:inherit;background:var(--color-background, #FFFFFF);color:var(--color-text-primary, #1A1A1A);transition:all var(--transition-fast, .15s ease)}.habits-page__input::placeholder{color:var(--color-text-tertiary, #9E9E9E)}.habits-page__input:focus{outline:none;border-color:var(--color-focus, #3A3A3A);box-shadow:0 0 0 3px #3a3a3a1a}.habits-page__button{padding:12px 24px;white-space:nowrap}.habits-page__list{display:flex;flex-direction:column}.habits-page__empty{text-align:center;padding:var(--space-2xl, 3rem);color:var(--color-text-tertiary, #9E9E9E);font-size:var(--font-size-base, 1rem)}@media(max-width:768px){.habits-page__form{flex-direction:column}.habits-page__button{width:100%}}@media(max-width:1024px)and (min-width:769px){.habits-page{max-width:900px}}.reminder-builder{margin-top:1rem;padding:1rem;border:1px solid #ddd;border-radius:4px;background:#fafafa}.reminder-builder h3{margin-top:0;margin-bottom:1rem;font-size:1.1rem}.day-selector{margin-bottom:1rem}.day-selector label{display:block;margin-bottom:.5rem;font-weight:500}.day-buttons{display:flex;gap:.25rem;flex-wrap:wrap}.day-button{padding:.5rem 1rem;border:1px solid #ccc;background:#fff;cursor:pointer;border-radius:4px;font-size:.9rem;transition:all .2s ease}.day-button:hover{background:#f0f0f0}.day-button.active{background:#4caf50;color:#fff;border-color:#4caf50}.day-button.active:hover{background:#45a049}.time-input{margin-bottom:1rem}.time-input label{display:block;margin-bottom:.5rem;font-weight:500}.time-input input[type=time]{padding:.5rem;border:1px solid #ccc;border-radius:4px;font-size:1rem;width:150px}.advanced-input{margin-bottom:1rem}.advanced-input label{display:block;margin-bottom:.5rem;font-weight:500}.advanced-input input[type=text]{padding:.5rem;border:1px solid #ccc;border-radius:4px;font-size:.9rem;width:100%;font-family:monospace}.advanced-toggle{background:none;border:none;color:#06c;text-decoration:underline;cursor:pointer;padding:0;margin-bottom:1rem;font-size:.9rem}.advanced-toggle:hover{color:#0052a3}.cron-preview{margin:1rem 0;padding:.75rem;background:#f5f5f5;border-radius:4px;font-style:italic;font-size:.9rem;border-left:3px solid #4CAF50}.cron-preview strong{font-style:normal;margin-right:.5rem}.error-message{margin:1rem 0;padding:.75rem;background:#ffebee;color:#c62828;border-radius:4px;font-size:.9rem;border-left:3px solid #c62828}.reminder-builder button[type=submit]{padding:.75rem 1.5rem;background:#4caf50;color:#fff;border:none;border-radius:4px;font-size:1rem;cursor:pointer;transition:background .2s ease}.reminder-builder button[type=submit]:hover{background:#45a049}.reminder-builder button[type=submit]:disabled{background:#ccc;cursor:not-allowed}.habit-selector{margin-bottom:var(--space-xl)}.habit-selector__header{display:flex;align-items:center;justify-content:space-between;margin-bottom:var(--space-md);flex-wrap:wrap;gap:var(--space-sm)}.habit-selector__label{font-size:var(--font-size-sm);font-weight:var(--font-weight-medium);color:var(--color-text-secondary)}.habit-selector__controls{display:flex;gap:var(--space-sm)}.habit-selector__control-btn{padding:var(--space-xs) var(--space-sm);font-size:var(--font-size-xs);font-weight:var(--font-weight-medium);border:1px solid var(--color-border);background:var(--color-background);color:var(--color-text-primary);border-radius:var(--radius-sm);cursor:pointer;transition:all var(--transition-fast)}.habit-selector__control-btn:hover:not(:disabled){background:var(--color-hover)}.habit-selector__control-btn:disabled{opacity:.5;cursor:not-allowed}.habit-selector__list{display:flex;flex-wrap:wrap;gap:var(--space-sm);margin-bottom:var(--space-sm)}.habit-selector__item{display:inline-flex;align-items:center;padding:var(--space-xs) var(--space-md);border:1px solid var(--color-border);border-radius:var(--radius-lg);background:var(--color-background);cursor:pointer;transition:all var(--transition-fast);-webkit-user-select:none;user-select:none}.habit-selector__item:hover{background:var(--color-hover)}.habit-selector__item--selected{background:var(--color-text-primary);color:var(--color-background);border-color:var(--color-text-primary)}.habit-selector__checkbox{position:absolute;opacity:0;pointer-events:none}.habit-selector__item-label{font-size:var(--font-size-sm);font-weight:var(--font-weight-medium)}.habit-selector__count{font-size:var(--font-size-xs);color:var(--color-text-tertiary);text-align:right}@media(max-width:768px){.habit-selector__list{overflow-x:auto;flex-wrap:nowrap;-webkit-overflow-scrolling:touch;scrollbar-width:none}.habit-selector__list::-webkit-scrollbar{display:none}.habit-selector__header{flex-direction:column;align-items:flex-start}.habit-selector__controls{width:100%;justify-content:flex-end}.habit-selector__count{text-align:left}}.day-cell{width:16px;height:16px;border-radius:2px;transition:transform var(--transition-fast);cursor:pointer}.day-cell:hover{transform:scale(1.2)}.day-cell:focus{outline:2px solid var(--color-text-primary);outline-offset:2px}.day-cell--level-0{background:var(--color-surface)}.day-cell--level-1{background:#e8e8e8}.day-cell--level-2{background:#afafaf}.day-cell--level-3{background:#676767}.day-cell--level-4{background:var(--color-text-primary)}@media(max-width:768px){.day-cell{width:16px;height:16px;border-radius:1px}}@media(min-width:768px)and (max-width:1024px){.day-cell{width:16px;height:16px}}.month-heatmap{background:var(--color-background);border-radius:var(--radius-md);padding:var(--space-md)}.month-heatmap__header{font-size:var(--font-size-sm);font-weight:var(--font-weight-medium);color:var(--color-text-secondary);margin-bottom:var(--space-sm);text-transform:uppercase;letter-spacing:.5px}.month-heatmap__grid{display:grid;grid-template-columns:repeat(7,16px);gap:4px 4px}.month-heatmap__empty-cell{width:12px;height:12px}@media(max-width:768px){.month-heatmap{padding:var(--space-sm)}.month-heatmap__grid{grid-template-columns:repeat(7,16px)}.month-heatmap__empty-cell{width:8px;height:8px}}@media(min-width:768px)and (max-width:1024px){.month-heatmap__grid{grid-template-columns:repeat(7,16px)}.month-heatmap__empty-cell{width:10px;height:10px}}.year-heatmap{display:grid;grid-template-columns:repeat(3,1fr);gap:var(--space-md);max-width:1200px;margin:0 auto}@media(min-width:768px)and (max-width:1024px){.year-heatmap{grid-template-columns:repeat(2,1fr)}}@media(max-width:768px){.year-heatmap{grid-template-columns:repeat(2,1fr);gap:var(--space-sm)}}@media(min-width:1440px){.year-heatmap{grid-template-columns:repeat(4,1fr);max-width:1600px}}.day-tooltip{position:fixed;background:var(--color-text-primary);color:var(--color-background);padding:var(--space-sm) var(--space-md);border-radius:var(--radius-md);box-shadow:var(--shadow-lg);z-index:1000;opacity:0;transition:opacity var(--transition-fast);pointer-events:none;max-width:250px;font-size:var(--font-size-sm)}.day-tooltip--visible{opacity:1}.day-tooltip--top{transform:translate(-50%,-100%)}.day-tooltip--bottom{transform:translate(-50%)}.day-tooltip__date{font-weight:var(--font-weight-semibold);margin-bottom:var(--space-xs);font-size:var(--font-size-sm)}.day-tooltip__total{margin-bottom:var(--space-sm);color:#ffffffe6}.day-tooltip__breakdown{margin-top:var(--space-sm);padding-top:var(--space-sm);border-top:1px solid rgba(255,255,255,.2)}.day-tooltip__breakdown-title{font-weight:var(--font-weight-medium);margin-bottom:var(--space-xs);font-size:var(--font-size-xs);text-transform:uppercase;letter-spacing:.5px;color:#fffc}.day-tooltip__breakdown-list{list-style:none;padding:0;margin:0}.day-tooltip__breakdown-item{padding:2px 0;color:#ffffffe6;font-size:var(--font-size-xs)}.day-tooltip__breakdown-item:before{content:"•";margin-right:var(--space-xs);color:#fff9}.day-tooltip:before{content:"";position:absolute;width:0;height:0;border:6px solid transparent}.day-tooltip--top:before{top:100%;left:50%;transform:translate(-50%);border-top-color:var(--color-text-primary)}.day-tooltip--bottom:before{bottom:100%;left:50%;transform:translate(-50%);border-bottom-color:var(--color-text-primary)}@media(max-width:768px){.day-tooltip{max-width:200px;font-size:var(--font-size-xs);padding:var(--space-xs) var(--space-sm)}.day-tooltip__date{font-size:var(--font-size-xs)}}.calendar-page{padding:var(--space-xl);max-width:1600px;margin:0 auto}.calendar-page__header{margin-bottom:var(--space-xl)}.calendar-page__title{font-size:var(--font-size-2xl);font-weight:var(--font-weight-semibold);color:var(--color-text-primary);margin:0 0 var(--space-xs) 0}.calendar-page__subtitle{font-size:var(--font-size-base);color:var(--color-text-secondary);margin:0}.calendar-page__loading{text-align:center;padding:var(--space-3xl);color:var(--color-text-secondary);font-size:var(--font-size-base)}.calendar-page__empty{text-align:center;padding:var(--space-3xl);background:var(--color-surface);border-radius:var(--radius-lg);border:1px solid var(--color-border)}.calendar-page__empty h2{font-size:var(--font-size-xl);font-weight:var(--font-weight-semibold);color:var(--color-text-primary);margin:0 0 var(--space-md) 0}.calendar-page__empty p{font-size:var(--font-size-base);color:var(--color-text-secondary);margin:0}.calendar-page__empty a{color:var(--color-text-primary);font-weight:var(--font-weight-medium);text-decoration:underline}.calendar-page__no-data{text-align:center;padding:var(--space-2xl);background:var(--color-surface);border-radius:var(--radius-md);border:1px solid var(--color-border);color:var(--color-text-secondary);font-size:var(--font-size-sm);margin-bottom:var(--space-xl)}.calendar-page__no-selection{text-align:center;padding:var(--space-2xl);background:var(--color-surface);border-radius:var(--radius-md);border:1px solid var(--color-border);color:var(--color-text-secondary);font-size:var(--font-size-sm)}@media(max-width:768px){.calendar-page{padding:var(--space-md)}.calendar-page__header{margin-bottom:var(--space-lg)}.calendar-page__title{font-size:var(--font-size-xl)}.calendar-page__subtitle{font-size:var(--font-size-sm)}.calendar-page__empty,.calendar-page__no-data,.calendar-page__no-selection{padding:var(--space-lg)}}.navigation{position:fixed;top:0;left:0;height:100vh;background:var(--color-surface, #FAFAFA);width:var(--nav-width-desktop, 80px);z-index:100;display:none}.navigation__list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;align-items:center;gap:var(--space-sm, .5rem);padding-top:var(--space-xl, 2rem)}.navigation__item{width:100%}.navigation__link{display:flex;align-items:center;justify-content:center;padding:var(--space-lg, 1.5rem) 0;color:var(--color-text-secondary, #6B6B6B);text-decoration:none;transition:all var(--transition-fast, .15s ease);position:relative}.navigation__link:hover{background:var(--color-hover, #F0F0F0);color:var(--color-text-primary, #3A3A3A)}.navigation__link--active{color:var(--color-text-primary, #1A1A1A)}.navigation__link--active:after{content:"";position:absolute;right:0;top:0;bottom:0;width:3px;background:var(--color-text-primary, #1A1A1A)}.navigation__icon{width:24px;height:24px}@media(min-width:768px){.navigation{display:block;width:var(--nav-width-tablet, 64px)}.navigation__icon{width:20px;height:20px}}@media(min-width:1024px){.navigation{width:var(--nav-width-desktop, 80px)}.navigation__icon{width:24px;height:24px}}.mobile-nav{position:fixed;bottom:0;left:0;right:0;height:var(--nav-height-mobile, 64px);background:var(--color-background, #FFFFFF);border-top:1px solid var(--color-border, #E5E5E5);z-index:100;display:block}.mobile-nav__list{list-style:none;margin:0;padding:0;display:flex;height:100%}.mobile-nav__item{flex:1;display:flex}.mobile-nav__link{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:var(--space-xs, .25rem);color:var(--color-text-secondary, #6B6B6B);text-decoration:none;transition:all var(--transition-fast, .15s ease);position:relative;padding:var(--space-sm, .5rem);min-height:44px;min-width:44px}.mobile-nav__link:hover{background:var(--color-hover, #F5F5F5);color:var(--color-text-primary, #3A3A3A)}.mobile-nav__link--active{color:var(--color-text-primary, #1A1A1A)}.mobile-nav__link--active:before{content:"";position:absolute;top:0;left:0;right:0;height:2px;background:var(--color-text-primary, #1A1A1A)}.mobile-nav__icon{width:24px;height:24px;flex-shrink:0}.mobile-nav__label{font-size:10px;font-weight:var(--font-weight-medium, 500)}@media(min-width:768px){.mobile-nav{display:none}}.app-layout{display:flex;flex-direction:column;min-height:100vh;width:100%}.app-layout__main{flex:1;width:100%;padding:var(--space-lg, 1.5rem);padding-bottom:calc(var(--nav-height-mobile, 64px) + var(--space-lg, 1.5rem));max-width:100%;box-sizing:border-box}@media(min-width:768px){.app-layout{flex-direction:row}.app-layout__main{margin-left:var(--nav-width-tablet, 64px);padding-bottom:var(--space-lg, 1.5rem);max-width:calc(100% - var(--nav-width-tablet, 64px))}}@media(min-width:1024px){.app-layout__main{margin-left:var(--nav-width-desktop, 80px);max-width:calc(100% - var(--nav-width-desktop, 80px))}}:root{--color-background: #FFFFFF;--color-surface: #FAFAFA;--color-text-primary: #1A1A1A;--color-text-secondary: #6B6B6B;--color-text-tertiary: #9E9E9E;--color-border: #E5E5E5;--color-border-hover: #CCCCCC;--color-divider: #F0F0F0;--color-shadow: rgba(0, 0, 0, .08);--color-hover: #F5F5F5;--color-active: #EEEEEE;--color-focus: #3A3A3A;--space-xs: .25rem;--space-sm: .5rem;--space-md: 1rem;--space-lg: 1.5rem;--space-xl: 2rem;--space-2xl: 3rem;--space-3xl: 4rem;--font-size-xs: .75rem;--font-size-sm: .875rem;--font-size-base: 1rem;--font-size-lg: 1.125rem;--font-size-xl: 1.5rem;--font-size-2xl: 2rem;--font-weight-regular: 400;--font-weight-medium: 500;--font-weight-semibold: 600;--nav-width-desktop: 80px;--nav-width-tablet: 64px;--nav-height-mobile: 64px;--transition-fast: .15s ease;--transition-base: .2s ease;--transition-slow: .3s ease;--radius-sm: 4px;--radius-md: 8px;--radius-lg: 12px;--shadow-sm: 0 1px 3px rgba(0, 0, 0, .04);--shadow-md: 0 4px 12px rgba(0, 0, 0, .08);--shadow-lg: 0 8px 24px rgba(0, 0, 0, .12);font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif;line-height:1.5;font-weight:var(--font-weight-regular);color:var(--color-text-primary);background-color:var(--color-background);font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}*,*:before,*:after{box-sizing:border-box}body{margin:0;min-width:320px;min-height:100vh}h1{font-size:var(--font-size-2xl);line-height:1.2;font-weight:var(--font-weight-semibold);margin:0 0 var(--space-lg) 0}h2{font-size:var(--font-size-xl);line-height:1.3;font-weight:var(--font-weight-semibold);margin:0 0 var(--space-md) 0}h3{font-size:var(--font-size-lg);line-height:1.4;font-weight:var(--font-weight-medium);margin:0 0 var(--space-sm) 0}p{margin:0 0 var(--space-md) 0;color:var(--color-text-secondary)}a{color:var(--color-text-primary);text-decoration:none;transition:color var(--transition-fast)}a:hover{color:var(--color-text-secondary)}button{border-radius:var(--radius-sm);border:1px solid var(--color-border);padding:12px 24px;font-size:var(--font-size-sm);font-weight:var(--font-weight-medium);font-family:inherit;background-color:var(--color-text-primary);color:var(--color-background);cursor:pointer;transition:all var(--transition-fast)}button:hover{background-color:var(--color-focus)}button:focus,button:focus-visible{outline:2px solid var(--color-focus);outline-offset:2px}#root{width:100%;min-height:100vh}
