body{margin:0;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}code{font-family:source-code-pro,Menlo,Monaco,Consolas,Courier New,monospace}.task-item{background-color:#fff;border:1px solid #e2e8f0;border-radius:8px;padding:1rem;margin-bottom:.5rem;display:flex;align-items:center;justify-content:space-between;transition:all .2s ease;cursor:grab}.task-item:hover{border-color:#cbd5e0;box-shadow:0 2px 4px #0000001a}.task-item:active{cursor:grabbing}.task-label{display:flex;align-items:center;flex:1;cursor:pointer}.task-label.done .task-text{text-decoration:line-through;opacity:.6}.checkbox-custom{width:20px;height:20px;border:2px solid #cbd5e0;border-radius:4px;margin-right:.75rem;position:relative;transition:all .2s ease}.task-label input[type=checkbox]:checked+.checkbox-custom{background-color:#48bb78;border-color:#48bb78}.task-label input[type=checkbox]:checked+.checkbox-custom:after{content:"✓";position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);color:#fff;font-weight:700;font-size:12px}.task-text{display:flex;align-items:center;gap:.5rem;flex-wrap:wrap}.task-date{font-size:.875rem;color:#6b7280}.task-date.overdue{color:#dc2626;font-weight:600}.tag{display:inline-block;padding:.25rem .5rem;border-radius:12px;font-size:.75rem;font-weight:500}.tag-健康{background-color:#dcfce7;color:#166534}.tag-學習{background-color:#dbeafe;color:#1e40af}.tag-工作{background-color:#fef3c7;color:#92400e}.tag-其他{background-color:#f3e8ff;color:#7c3aed}.streak-badge{background:linear-gradient(135deg,#ff6b6b,#ffa726);color:#fff;padding:.25rem .5rem;border-radius:12px;font-size:.75rem;font-weight:600;display:inline-flex;align-items:center;gap:.25rem}.edit-inputs{display:flex;gap:.5rem;flex:1;margin-right:1rem}.edit-input{padding:.5rem;border:1px solid #d1d5db;border-radius:4px;font-size:.875rem}.edit-input:focus{outline:none;border-color:#3b82f6;box-shadow:0 0 0 3px #3b82f61a}.edit-btn,.delete-btn,.save-btn{padding:.5rem .75rem;border:none;border-radius:4px;font-size:.875rem;cursor:pointer;transition:all .2s ease}.edit-btn{background-color:#3b82f6;color:#fff}.delete-btn{background-color:#ef4444;color:#fff}.delete-btn:hover{background-color:#dc2626}.save-btn{background-color:#10b981;color:#fff}.save-btn:hover{background-color:#059669}.task-list{list-style:none;padding:0;margin:1rem 0;min-height:100px;transition:background-color .2s ease}.task-list.dragging-over{background-color:#f8fafc;border:2px dashed #cbd5e0;border-radius:8px;padding:1rem}.draggable-task{margin-bottom:.5rem;transition:transform .2s ease}.draggable-task.dragging{transform:rotate(5deg);box-shadow:0 8px 16px #00000026;z-index:1000}.draggable-task .task-item{margin-bottom:0}.empty-state{text-align:center;padding:3rem 1rem;color:#6b7280;background-color:#f9fafb;border:2px dashed #d1d5db;border-radius:8px;margin:1rem 0}.empty-state p{margin:.5rem 0}.empty-state p:first-child{font-size:1.125rem;font-weight:600;color:#374151}.empty-state p:last-child{font-size:.875rem}.react-calendar-heatmap text{font-size:10px;fill:#aaa}.react-calendar-heatmap .react-calendar-heatmap-small-text{font-size:5px}.react-calendar-heatmap rect:hover{stroke:#555;stroke-width:1px}.react-calendar-heatmap .color-empty{fill:#eee}.react-calendar-heatmap .color-filled{fill:#8cc665}.react-calendar-heatmap .color-github-0{fill:#eee}.react-calendar-heatmap .color-github-1{fill:#d6e685}.react-calendar-heatmap .color-github-2{fill:#8cc665}.react-calendar-heatmap .color-github-3{fill:#44a340}.react-calendar-heatmap .color-github-4{fill:#1e6823}.react-calendar-heatmap .color-gitlab-0{fill:#ededed}.react-calendar-heatmap .color-gitlab-1{fill:#acd5f2}.react-calendar-heatmap .color-gitlab-2{fill:#7fa8d1}.react-calendar-heatmap .color-gitlab-3{fill:#49729b}.react-calendar-heatmap .color-gitlab-4{fill:#254e77}.habit-heatmap{background:white;border-radius:12px;padding:1.5rem;margin:1rem 0;box-shadow:0 2px 8px #0000001a}.habit-heatmap h3{margin:0 0 1rem;color:#1f2937;font-size:1.25rem;font-weight:600}.heatmap-container{margin:1rem 0;overflow-x:auto}.react-calendar-heatmap .color-empty{fill:#ebedf0}.react-calendar-heatmap .color-scale-1{fill:#c6e48b}.react-calendar-heatmap .color-scale-2{fill:#7bc96f}.react-calendar-heatmap .color-scale-3{fill:#239a3b}.react-calendar-heatmap .color-scale-4{fill:#196127}.react-calendar-heatmap .color-completed{fill:#40c463}.heatmap-legend{display:flex;align-items:center;justify-content:center;gap:.5rem;margin-top:1rem;font-size:.875rem;color:#6b7280}.legend-colors{display:flex;gap:2px}.legend-colors>div{width:12px;height:12px;border-radius:2px}.legend-label{font-size:.75rem}.individual-heatmaps{margin-top:2rem;padding-top:1.5rem;border-top:1px solid #e5e7eb}.individual-heatmaps h4{margin:0 0 1rem;color:#374151;font-size:1.125rem;font-weight:600}.individual-heatmap{margin-bottom:1.5rem}.individual-heatmap h5{margin:0 0 .5rem;color:#4b5563;font-size:.875rem;font-weight:500}@media (max-width: 768px){.habit-heatmap{padding:1rem}.heatmap-container{font-size:.75rem}.individual-heatmaps{display:none}}.react-calendar-heatmap text{font-size:10px;fill:#6b7280}.react-calendar-heatmap .react-calendar-heatmap-month-label{font-size:12px;fill:#374151}.react-calendar-heatmap .react-calendar-heatmap-weekday-label{font-size:10px;fill:#6b7280}body{font-family:Segoe UI,Tahoma,Geneva,Verdana,sans-serif;background-color:#f4f6f8;margin:0;padding:0;color:#333}.container{max-width:1200px;margin:2rem auto;padding:2rem;background-color:#fff;border-radius:12px;box-shadow:0 12px 20px #00000014}.app-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:2rem;flex-wrap:wrap;gap:1rem}h1{font-size:2.5rem;margin:0;color:#1a202c;flex:1}.view-toggle{display:flex;background-color:#f1f5f9;border-radius:8px;padding:4px}.toggle-btn{padding:8px 16px;border:none;background:transparent;color:#64748b;border-radius:6px;cursor:pointer;transition:all .2s ease;font-weight:500}.toggle-btn.active{background-color:#3b82f6;color:#fff;box-shadow:0 2px 4px #3b82f633}.toggle-btn:hover:not(.active){background-color:#e2e8f0}.input-group{display:flex;gap:.5rem;flex-wrap:wrap;align-items:center;margin-bottom:1rem}.input-group input[type=text],.input-group input[type=date],.input-group select{padding:10px 14px;font-size:1rem;border:1px solid #ccc;border-radius:8px;background-color:#fff;color:#333;transition:border-color .3s ease;flex-grow:1;min-width:140px}.input-group input:focus,.input-group select:focus{border-color:#3182ce;outline:none}.input-group button{padding:12px 24px;font-size:1rem;background-color:#3182ce;color:#fff;border:none;border-radius:8px;cursor:pointer;transition:background-color .3s ease;min-width:100px}.input-group button:disabled{background-color:#a0aec0;cursor:not-allowed}.filter-buttons{display:flex;flex-wrap:wrap;gap:.5rem;margin:1rem 0;justify-content:center}.filter-btn{padding:8px 16px;border:1px solid #3182ce;background-color:#fff;color:#3182ce;font-size:.9rem;border-radius:6px;cursor:pointer;transition:all .3s ease}.filter-btn:hover{background-color:#ebf8ff}.filter-btn.active{background-color:#3182ce;color:#fff;font-weight:700}.task-list{list-style:none;padding:0;margin:0}.task-item{display:flex;justify-content:space-between;align-items:center;background-color:#edf2f7;padding:1rem;border-radius:8px;margin-bottom:.75rem;transition:background-color .3s ease}.task-item:hover{background-color:#e2e8f0}.task-label input[type=checkbox]{display:none}.checkbox-custom{width:18px;height:18px;border:2px solid #3182ce;border-radius:4px;display:inline-block;position:relative;margin-right:.75rem;flex-shrink:0;cursor:pointer}.task-label input[type=checkbox]:checked+.checkbox-custom{background-color:#3182ce;border-color:#3182ce}.task-label input[type=checkbox]:checked+.checkbox-custom:after{content:"";position:absolute;top:2px;left:5px;width:4px;height:8px;border:solid white;border-width:0 2px 2px 0;transform:rotate(45deg)}.task-label{display:flex;align-items:center;flex-grow:1;cursor:pointer}.task-text{font-size:1rem;position:relative;transition:color .2s}.task-label.done .task-text{color:#a0aec0}.task-label.done .task-text:after{content:"";position:absolute;left:0;top:50%;width:100%;height:1px;background-color:#a0aec0;transform:translateY(-50%)}.tag{display:inline-block;margin-left:.5rem;padding:2px 8px;border-radius:12px;font-size:.75rem;font-weight:600;color:#000;background-color:#e2e8f0}.tag-健康{background-color:#c6f6d5}.tag-學習{background-color:#bee3f8}.tag-工作{background-color:#fbd38d}.tag-其他{background-color:#e2e8f0}.task-date{font-size:.85rem;color:#718096}.task-date.overdue{color:#e53e3e;font-weight:700}.edit-input{padding:8px 12px;font-size:1rem;border:1px solid #3182ce;border-radius:8px;margin-left:.5rem;width:180px}.edit-input:focus{border-color:#2563eb;outline:none}.btn-group{display:flex;gap:.5rem}.edit-btn,.delete-btn,.save-btn{padding:6px 12px;font-size:.9rem;border:none;border-radius:6px;cursor:pointer;font-weight:600;color:#fff;transition:background-color .3s ease}.edit-btn{background-color:#3182ce}.edit-btn:hover{background-color:#2563eb}.save-btn{background-color:#38a169}.save-btn:hover{background-color:#2f855a}.delete-btn{background-color:#e53e3e}.delete-btn:hover{background-color:#c53030}.chart-container{margin-top:2.5rem;background-color:#fff;padding:1.5rem;border-radius:12px;box-shadow:0 8px 15px #0000000d}.stats-container{margin-top:2rem}.stats-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:1.5rem;margin-bottom:2rem}.stat-card{background:white;border-radius:12px;padding:1.5rem;box-shadow:0 2px 8px #0000001a;border:1px solid #e2e8f0}.stat-card h3{margin:0 0 1rem;color:#1f2937;font-size:1.125rem;font-weight:600}.pie-chart-container{display:flex;justify-content:center;align-items:center;min-height:300px;width:100%}.pie-chart-container .recharts-legend-wrapper{padding-top:20px!important}.pie-chart-container .recharts-legend-item{margin:0 10px!important}.pie-chart-container .recharts-legend-item-text{font-size:14px!important;font-weight:500!important}.pie-chart-container .recharts-tooltip-wrapper{background:white!important;border:1px solid #e2e8f0!important;border-radius:8px!important;box-shadow:0 4px 6px #0000001a!important}.completion-rate{text-align:center;padding:1rem 0}.rate-number{display:block;font-size:3rem;font-weight:700;color:#10b981;line-height:1;margin-bottom:.5rem}.rate-text{color:#6b7280;font-size:.875rem}.streak-list{display:flex;flex-direction:column;gap:.75rem}.streak-item{display:flex;justify-content:space-between;align-items:center;padding:.75rem;background:#f8fafc;border-radius:8px;margin-bottom:.5rem}.streak-title{font-weight:500;color:#374151;flex:1}.streak-count{font-weight:600;color:#dc2626;background:white;padding:.25rem .5rem;border-radius:12px;font-size:.875rem}@media (max-width: 768px){.container{margin:1rem;padding:1rem}.app-header{flex-direction:column;text-align:center}h1{font-size:2rem}.stats-grid{grid-template-columns:1fr}.pie-chart-container{min-height:250px}.pie-chart-container .recharts-legend-item-text{font-size:12px!important}.input-group{flex-direction:column}.input-group input,.input-group select{width:100%;min-width:auto}}@media (max-width: 600px){.input-group{flex-direction:column}.input-group input,.input-group select,.input-group button{width:100%}.btn-group{margin-top:.5rem;justify-content:flex-start}.task-item{flex-direction:column;align-items:flex-start}.filter-buttons{flex-direction:column;gap:.5rem}.filter-btn{width:100%}}
