body,html{margin:0;padding:0;font-family:Arial,Helvetica,sans-serif;background:#f7f8fa;color:#1f2430}main{padding:40px}.todo-page{max-width:720px;margin:0 auto}.todo-title{font-size:1.6rem;margin:0 0 20px}.quick-add{gap:8px;margin-bottom:24px}.quick-add,.quick-add-input{display:flex;align-items:center}.quick-add-input{position:relative;flex:1 1}.quick-add-input input[type=text]{width:100%;padding:12px;font-size:1rem;border:1px solid #ccd0d8;border-radius:8px;box-sizing:border-box}.date-chip{position:absolute;right:6px;padding:4px 8px;font-size:.75rem;background:#eef2ff;color:#3b5bdb;border:1px solid #c3cdf5;border-radius:999px;cursor:pointer}.quick-add-date{display:flex;flex-direction:column;font-size:.7rem;color:#667}.quick-add-date input{padding:6px;border:1px solid #ccd0d8;border-radius:6px}.quick-add-button{padding:12px 16px;font-size:1rem;background:#3b5bdb;color:#fff;border:none;border-radius:8px;cursor:pointer}.quick-add-button:disabled{opacity:.5;cursor:not-allowed}.task-list{display:flex;flex-direction:column;gap:12px}.task-group-header{font-size:.85rem;color:#667;margin:8px 0 0}.task-group{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:8px}.task-item{display:flex;gap:12px;align-items:center;background:#fff;border:1px solid #e2e5ea;border-radius:8px;padding:12px;box-shadow:0 1px 2px rgba(0,0,0,.04)}.task-item input[type=checkbox]{width:20px;height:20px;flex-shrink:0}.task-body{flex:1 1;display:flex;flex-direction:column;gap:4px}.task-title{cursor:text;word-break:break-word}.task-done .task-title{text-decoration:line-through;color:#99a}.task-completed,.task-due{font-size:.75rem;color:#667}.task-due-input{padding:4px;border:1px solid #ccd0d8;border-radius:6px}.task-delete{background:none;border:none;color:#99a;font-size:1rem;cursor:pointer}.task-delete:hover{color:#d33}.task-empty,.task-error{color:#667;text-align:center;padding:24px 0}.task-error{color:#d33}.view-toggle{display:flex;gap:6px;margin-bottom:16px}.view-toggle button{padding:6px 16px;border:1px solid #ccd0d8;border-radius:6px;background:#fff;cursor:pointer;color:#445}.view-toggle button.view-toggle-active{background:#3b6;border-color:#3b6;color:#fff;font-weight:600}.calendar{background:#fff;border:1px solid #ccd0d8;border-radius:8px;padding:12px}.calendar-header{display:flex;align-items:center;gap:8px;margin-bottom:8px}.calendar-header button{border:none;background:none;cursor:pointer;font-size:1.1rem;color:#445}.calendar-header button.calendar-today{margin-left:auto;border:1px solid #ccd0d8;border-radius:6px;padding:2px 10px;font-size:.85rem}.calendar-title{font-weight:600;min-width:120px;text-align:center}.calendar-weekdays{display:grid;grid-template-columns:repeat(7,1fr);text-align:center;font-size:.8rem;color:#667;margin-bottom:4px}.calendar-weekdays .calendar-weekend{color:#d44}.calendar-grid{display:grid;grid-template-columns:repeat(7,1fr);grid-gap:4px;gap:4px}.calendar-cell{border:1px solid #e4e6eb;border-radius:6px;min-height:92px;padding:4px;cursor:pointer;overflow:hidden}.calendar-cell:hover{border-color:#3b6}.calendar-cell.calendar-outside{background:#f5f6f8}.calendar-cell.calendar-today-cell{border-color:#3b6;box-shadow:inset 0 0 0 1px #3b6}.calendar-day-number{font-size:.75rem;color:#445}.calendar-today-cell .calendar-day-number{font-weight:700}.calendar-cell-tasks{display:flex;flex-direction:column;gap:2px;margin-top:2px}.calendar-chip{font-size:.72rem;padding:1px 5px;border-radius:4px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;cursor:-webkit-grab;cursor:grab}.calendar-chip-due{background:#e4f1ff;color:#1466b8}.calendar-chip-overdue{background:#ffe0e0;color:#c22}.calendar-chip-done{background:#e6f6e6;color:#278}.calendar-add{width:100%;margin-top:2px;border:1px solid #3b6;border-radius:4px;padding:2px 4px;font-size:.75rem}