.calendar[data-v-fe1acd7e]{display:flex;flex-direction:column;height:100%;overflow:hidden}.calendar-header[data-v-fe1acd7e]{display:flex;align-items:center;justify-content:space-between;padding:12px 4px;flex-shrink:0}.cal-month[data-v-fe1acd7e]{font-size:15px;font-weight:600;cursor:pointer;display:inline-flex;align-items:center;gap:var(--md-spacing-4);padding:var(--md-spacing-6) var(--md-spacing-12);border-radius:var(--md-radius-full);transition:background var(--md-duration-fast) var(--md-easing-standard);color:#1d1d1f}.cal-month[data-v-fe1acd7e]:hover{background:#1c1b1f0f}.cal-month-arrow[data-v-fe1acd7e]{font-size:10px;color:#86868b;margin-left:2px}.cal-picker-panel[data-v-fe1acd7e]{flex-shrink:0;background:#f5f5f7;border-radius:var(--md-radius-sm);margin-bottom:8px}.cal-picker-header[data-v-fe1acd7e]{display:flex;align-items:center;justify-content:space-between;padding:var(--md-spacing-12) var(--md-spacing-16)}.cal-picker-year[data-v-fe1acd7e]{font-size:15px;font-weight:600;color:#1d1d1f}.cal-small-btn[data-v-fe1acd7e]{width:28px;height:28px;font-size:14px;border-radius:var(--md-radius-full)}.cal-today-btn[data-v-fe1acd7e]{font-size:12px;font-weight:500;padding:var(--md-spacing-4) var(--md-spacing-12);border-radius:var(--md-radius-full);background:var(--md-primary-container);color:var(--md-on-primary-container);border:none}.cal-today-btn[data-v-fe1acd7e]:hover{background:#c5ed9a}.cal-month-picker[data-v-fe1acd7e]{display:grid;grid-template-columns:repeat(4,1fr);gap:var(--md-spacing-4);padding:var(--md-spacing-8) var(--md-spacing-16) var(--md-spacing-16)}.cal-month-option[data-v-fe1acd7e]{text-align:center;padding:var(--md-spacing-8) 0;font-size:13px;cursor:pointer;border-radius:var(--md-radius-full);transition:all var(--md-duration-fast) var(--md-easing-standard);color:#1d1d1f}.cal-month-option[data-v-fe1acd7e]:hover{background:#1c1b1f0f}.cal-month-active[data-v-fe1acd7e]{background:var(--md-primary);color:var(--md-on-primary);font-weight:500}.cal-nav-btn[data-v-fe1acd7e]{width:32px;height:32px;border:none;background:transparent;cursor:pointer;font-size:18px;display:flex;align-items:center;justify-content:center;color:#86868b;border-radius:var(--md-radius-full);transition:background var(--md-duration-fast) var(--md-easing-standard)}.cal-nav-btn[data-v-fe1acd7e]:hover{background:#1c1b1f0f}.cal-weekdays[data-v-fe1acd7e]{display:grid;grid-template-columns:repeat(7,1fr);text-align:center;font-size:11px;font-weight:500;letter-spacing:.6px;color:#aeaeb2;padding:8px 0;flex-shrink:0}.cal-grid[data-v-fe1acd7e]{display:grid;grid-template-columns:repeat(7,1fr);flex:1;border-top:1px solid #F0F0F4}.cal-cell[data-v-fe1acd7e]{padding:6px 2px;border-bottom:1px solid #F4F4F8;cursor:pointer;display:flex;flex-direction:column;align-items:flex-start;overflow:hidden;position:relative;width:100%;height:100%;transition:background var(--md-duration-fast) var(--md-easing-standard);border-radius:4px;margin:0 1px}.cal-empty[data-v-fe1acd7e]{cursor:default;opacity:.35}.cal-day[data-v-fe1acd7e]{font-size:13px;line-height:1.4;flex-shrink:0;color:#1d1d1f}.cal-today[data-v-fe1acd7e]{background:transparent}.cal-today .cal-day[data-v-fe1acd7e]{font-weight:700;color:var(--md-primary)}.cal-selected[data-v-fe1acd7e]{background:var(--md-primary)!important}.cal-selected .cal-day[data-v-fe1acd7e]{color:var(--md-on-primary)!important;font-weight:600}.cal-selected .cal-dot[data-v-fe1acd7e]{border-color:var(--md-primary)!important}.cal-dots[data-v-fe1acd7e]{display:flex;gap:3px;flex-wrap:wrap;margin-top:4px;flex-shrink:0}.cal-dot[data-v-fe1acd7e]{width:7px;height:7px;border-radius:50%;flex-shrink:0}.dot-urgent_important[data-v-fe1acd7e]{background:#dc3232}.dot-important[data-v-fe1acd7e]{background:#dcb432}.dot-urgent[data-v-fe1acd7e]{background:#32b464}.dot-none[data-v-fe1acd7e]{background:#e5e5ea}:root{--md-primary: #4C7D33;--md-on-primary: #FFFFFF;--md-primary-container: #D7F7B7;--md-on-primary-container: #102300;--md-secondary: #5C6252;--md-on-secondary: #FFFFFF;--md-secondary-container: #DDE5D1;--md-on-secondary-container: #151E0D;--md-tertiary: #5C6252;--md-on-tertiary: #FFFFFF;--md-tertiary-container: #E0E8D7;--md-error: #B3261E;--md-on-error: #FFFFFF;--md-error-container: #F9DEDC;--md-on-error-container: #410E0B;--md-background: #F4F5F8;--md-surface: #FFFFFF;--md-on-surface: #1D1D1F;--md-on-surface-variant: #6E6E73;--md-outline: #E5E5EA;--md-outline-variant: #F0F0F4;--md-surface-container-lowest: #FFFFFF;--md-surface-container-low: #F9FAFB;--md-surface-container: #F5F5F7;--md-surface-container-high: #F0F0F2;--md-surface-container-highest: #E8E8ED;--md-priority-urgent_important: #DC3232;--md-priority-important: #D4A017;--md-priority-urgent: #2E7D32;--md-priority-none: var(--md-outline);--font-family: "Noto Sans", "Noto Sans SC", sans-serif;--max-width: 640px;--md-radius-none: 0px;--md-radius-xs: 4px;--md-radius-sm: 6px;--md-radius-md: 8px;--md-radius-lg: 12px;--md-radius-lg-inc: 16px;--md-radius-xl: 28px;--md-radius-full: 9999px;--md-spacing-2: 2px;--md-spacing-4: 4px;--md-spacing-6: 6px;--md-spacing-8: 8px;--md-spacing-12: 12px;--md-spacing-16: 16px;--md-spacing-20: 20px;--md-spacing-24: 24px;--md-spacing-32: 32px;--md-spacing-48: 48px;--md-state-hover: rgba(76, 125, 51, .08);--md-state-pressed: rgba(76, 125, 51, .12);--md-state-focus: rgba(76, 125, 51, .16);--md-elevation-0: none;--md-elevation-1: 0 1px 3px 1px rgba(0, 0, 0, .04), 0 1px 2px rgba(0, 0, 0, .03);--md-elevation-2: 0 2px 8px 4px rgba(0, 0, 0, .04), 0 1px 3px rgba(0, 0, 0, .02);--md-elevation-3: 0 4px 12px 6px rgba(0, 0, 0, .05), 0 1px 4px rgba(0, 0, 0, .03);--md-easing-standard: cubic-bezier(.2, 0, 0, 1);--md-easing-emphasized: cubic-bezier(.2, 0, 0, 1);--md-duration-fast: .15s;--md-duration-normal: .25s;--md-duration-slow: .35s}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}html{overscroll-behavior:none;-webkit-overflow-scrolling:touch;scroll-behavior:smooth}body{font-family:var(--font-family);color:var(--md-on-surface);background:var(--md-background);line-height:1.6;-webkit-font-smoothing:antialiased;touch-action:pan-y;-webkit-text-size-adjust:100%;overflow-x:hidden}body.drawer-open{overflow:hidden;position:fixed;width:100%;touch-action:none}#app{max-width:1600px;margin:0 auto;padding:20px 24px;display:flex;flex-direction:column;height:100vh;overflow:hidden}.app-root{display:flex;flex-direction:column;flex:1;min-height:0}.main-layout{display:flex;gap:24px;align-items:stretch;flex:1;min-height:0}.todo-panel{flex:0 0 calc(40% - 12px);min-width:0;overflow-y:auto;padding:24px;background:var(--md-surface);border-radius:16px;box-shadow:var(--md-elevation-1)}.calendar-panel{flex:0 0 calc(60% - 12px);min-width:0;display:flex;flex-direction:column;overflow:hidden;background:var(--md-surface);border-radius:16px;box-shadow:var(--md-elevation-1);padding:24px}.app-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:24px;padding:12px 24px;background:var(--md-surface);border-radius:16px;min-height:64px;box-shadow:var(--md-elevation-1)}.header-left{display:flex;align-items:center;gap:var(--md-spacing-12);min-width:0}.header-logo{width:28px;height:28px;flex-shrink:0}.app-title{font-size:22px;font-weight:600;letter-spacing:0;color:var(--md-on-surface);line-height:28px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.header-actions{display:flex;gap:var(--md-spacing-4);align-items:center;flex-shrink:0}.header-icon-btn{width:40px;height:40px;border:none;border-radius:var(--md-radius-full);background:transparent;cursor:pointer;color:var(--md-on-surface-variant);display:flex;align-items:center;justify-content:center;transition:background var(--md-duration-fast) var(--md-easing-standard)}.header-icon-btn:hover{background:var(--md-state-hover)}.header-icon-btn:active{background:var(--md-state-pressed)}.material-symbols-outlined{font-family:Material Symbols Outlined;font-size:22px;font-weight:400;line-height:1;font-style:normal;letter-spacing:normal;text-transform:none;display:inline-block;white-space:nowrap;word-wrap:normal;direction:ltr;-webkit-font-smoothing:antialiased}.search-wrap{display:flex;margin-bottom:var(--md-spacing-8);background:#f0f1f4;border-radius:var(--md-radius-md);overflow:hidden}.search-input{flex:1;padding:0 var(--md-spacing-16);border:none;border-radius:var(--md-radius-md) 0 0 var(--md-radius-md);font-size:15px;font-family:var(--font-family);outline:none;background:transparent;color:var(--md-on-surface);height:40px;transition:background var(--md-duration-fast) var(--md-easing-standard)}.search-input:focus{background:#4c7d330f}.search-input::placeholder{color:var(--md-on-surface-variant);opacity:.6}.search-btn{padding:0 var(--md-spacing-16);border:none;background:transparent;cursor:pointer;font-size:14px;font-family:var(--font-family);color:var(--md-on-surface-variant);height:40px;border-radius:0 var(--md-radius-md) var(--md-radius-md) 0;transition:background var(--md-duration-fast) var(--md-easing-standard),color var(--md-duration-fast) var(--md-easing-standard)}.search-btn:hover{background:#1c1b1f0f;color:var(--md-on-surface)}.search-btn:active{background:#1c1b1f1a}.filter-bar{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:16px}.filter-btn{padding:6px 14px;border:none;border-radius:999px;background:#f0f1f4;cursor:pointer;font-size:13px;font-weight:500;font-family:var(--font-family);color:#5c5c60;display:inline-flex;align-items:center;justify-content:center;transition:all .2s ease;white-space:nowrap;line-height:1}.filter-btn:hover{background:#e8e8ed}.filter-btn:active{background:#e0e0e5}.filter-btn.active{background:#d7f7b7;color:#102300;font-weight:600}.filter-btn.active:hover{background:#c5ed9a}.section-divider{font-size:12px;font-weight:600;color:var(--md-on-surface-variant);padding:var(--md-spacing-20) 0 var(--md-spacing-6);letter-spacing:.8px;line-height:20px;cursor:pointer;-webkit-user-select:none;user-select:none;display:flex;align-items:center;gap:var(--md-spacing-6);text-transform:uppercase}.section-divider:hover{color:var(--md-on-surface)}.collapse-arrow{display:inline-block;font-size:8px;transition:transform var(--md-duration-normal) var(--md-easing-standard);vertical-align:middle;color:var(--md-on-surface-variant);opacity:.5}.collapse-arrow.collapsed{transform:rotate(0)}.collapse-arrow:not(.collapsed){transform:rotate(90deg)}.todo-list{list-style:none}.todo-item{display:flex;align-items:center;padding:12px 16px;margin-bottom:8px;border-radius:var(--md-radius-sm);cursor:pointer;gap:var(--md-spacing-12);background:transparent;border-left:2px solid transparent;transition:background var(--md-duration-fast) var(--md-easing-standard);min-height:44px}.todo-item:hover{background:var(--md-surface-container-low)}.todo-item:active{background:var(--md-surface-container)}.todo-item[data-urgency=urgent_important]{border-left-color:var(--md-priority-urgent_important)}.todo-item[data-urgency=important]{border-left-color:var(--md-priority-important)}.todo-item[data-urgency=urgent]{border-left-color:var(--md-priority-urgent)}.todo-item[data-urgency=none]{border-left-color:transparent}.todo-item[data-completed="1"]{opacity:.5}.todo-item[data-completed="1"] .todo-title{text-decoration:line-through;color:var(--md-on-surface-variant)}.priority-dot{width:7px;height:7px;border-radius:50%;flex-shrink:0}.dot-urgent_important{background:var(--md-priority-urgent_important)}.dot-important{background:var(--md-priority-important)}.dot-urgent{background:var(--md-priority-urgent)}.dot-none{background:var(--md-priority-none)}.todo-title{flex:1;font-size:14px;font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0;line-height:20px;color:#1d1d1f}.todo-meta{display:flex;align-items:center;gap:var(--md-spacing-8);flex-shrink:0;font-size:12px;color:#86868b;line-height:16px}.contact-icon,.pinned-icon{font-size:13px;color:#86868b}.todo-actions{display:flex;gap:var(--md-spacing-2);flex-shrink:0;opacity:0;transition:opacity var(--md-duration-fast) var(--md-easing-standard)}.todo-item:hover .todo-actions{opacity:1}.action-btn{width:28px;height:28px;border:none;border-radius:var(--md-radius-full);cursor:pointer;font-size:13px;display:flex;align-items:center;justify-content:center;background:transparent;color:var(--md-on-surface-variant);transition:background var(--md-duration-fast) var(--md-easing-standard),color var(--md-duration-fast) var(--md-easing-standard)}.action-btn:hover{background:var(--md-state-hover);color:var(--md-on-surface)}.action-complete:hover{color:var(--md-priority-urgent)}.action-delete:hover{color:var(--md-error)}.action-undo:hover{color:var(--md-priority-urgent)}.empty-hint{text-align:center;color:#86868b;padding:var(--md-spacing-48) 0;font-size:13px;line-height:20px}.add-btn{display:flex;align-items:center;justify-content:center;width:100%;padding:0 var(--md-spacing-24);margin-top:var(--md-spacing-20);border:none;border-radius:var(--md-radius-full);background:var(--md-primary-container);cursor:pointer;font-size:13px;font-weight:500;font-family:var(--font-family);color:var(--md-on-primary-container);letter-spacing:.1px;height:40px;transition:background var(--md-duration-fast) var(--md-easing-standard),transform var(--md-duration-fast) var(--md-easing-standard)}.add-btn:hover{background:#c5ed9a}.add-btn:active{transform:scale(.98)}.drawer-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#00000052;z-index:100;display:flex;align-items:flex-end;justify-content:center;animation:fadeIn var(--md-duration-normal) var(--md-easing-standard)}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.drawer{width:100%;max-width:var(--max-width);background:var(--md-surface);border:none;padding:var(--md-spacing-24);max-height:85vh;overflow-y:auto;-webkit-overflow-scrolling:touch;border-radius:var(--md-radius-xl) var(--md-radius-xl) 0 0;scrollbar-width:none;animation:slideUp var(--md-duration-slow) var(--md-easing-emphasized);box-shadow:var(--md-elevation-2)}.drawer::-webkit-scrollbar{display:none}@keyframes slideUp{0%{transform:translateY(100%)}to{transform:translateY(0)}}.drawer-title{font-size:22px;font-weight:500;margin-bottom:var(--md-spacing-24);color:var(--md-on-surface);line-height:28px}.form-group{margin-bottom:var(--md-spacing-16)}.form-label{display:block;font-size:12px;font-weight:500;color:var(--md-on-surface-variant);margin-bottom:var(--md-spacing-8);letter-spacing:.4px}.form-input,.form-textarea,.form-select{width:100%;padding:var(--md-spacing-12) var(--md-spacing-16);border:1px solid transparent;border-radius:var(--md-radius-sm);font-size:16px;font-family:var(--font-family);outline:none;background:#f5f5f7;color:var(--md-on-surface);transition:background var(--md-duration-fast) var(--md-easing-standard),border-color var(--md-duration-fast) var(--md-easing-standard);min-height:48px}.form-input:focus,.form-textarea:focus,.form-select:focus{background:#4c7d330f;border-color:#4c7d334d}.form-input::placeholder{color:var(--md-on-surface-variant);opacity:.5}.form-textarea{resize:vertical;min-height:80px;line-height:1.5}.form-select{cursor:pointer}.form-row{display:flex;gap:var(--md-spacing-12)}.form-row .form-group{flex:1}.form-check{display:flex;align-items:center;gap:var(--md-spacing-8);font-size:14px;color:var(--md-on-surface);cursor:pointer;min-height:48px}.form-check input[type=checkbox]{width:18px;height:18px;accent-color:var(--md-primary);cursor:pointer}.form-actions{display:flex;gap:var(--md-spacing-8);margin-top:var(--md-spacing-24)}.btn-primary{flex:1;padding:0 var(--md-spacing-24);background:var(--md-primary);color:var(--md-on-primary);border:none;border-radius:var(--md-radius-full);cursor:pointer;font-size:14px;font-weight:500;font-family:var(--font-family);letter-spacing:.1px;height:40px;transition:box-shadow var(--md-duration-fast) var(--md-easing-standard),transform var(--md-duration-fast) var(--md-easing-standard)}.btn-primary:hover{box-shadow:var(--md-elevation-1)}.btn-primary:active{transform:scale(.98)}.btn-secondary{padding:0 var(--md-spacing-24);background:var(--md-secondary-container);color:var(--md-on-secondary-container);border:none;border-radius:var(--md-radius-full);cursor:pointer;font-size:14px;font-weight:500;font-family:var(--font-family);letter-spacing:.1px;height:40px;transition:box-shadow var(--md-duration-fast) var(--md-easing-standard),transform var(--md-duration-fast) var(--md-easing-standard)}.btn-secondary:hover{box-shadow:var(--md-elevation-1)}.btn-secondary:active{transform:scale(.98)}.btn-danger{padding:0 var(--md-spacing-24);background:var(--md-error);color:var(--md-on-error);border:none;border-radius:var(--md-radius-full);cursor:pointer;font-size:14px;font-weight:500;font-family:var(--font-family);letter-spacing:.1px;height:40px;transition:box-shadow var(--md-duration-fast) var(--md-easing-standard)}.btn-danger:hover{box-shadow:var(--md-elevation-1)}.btn-pin{padding:0 var(--md-spacing-24);background:transparent;color:var(--md-primary);border:1px solid var(--md-outline);border-radius:var(--md-radius-full);cursor:pointer;font-size:14px;font-weight:500;font-family:var(--font-family);letter-spacing:.1px;height:40px;transition:background var(--md-duration-fast) var(--md-easing-standard)}.btn-pin:hover{background:var(--md-state-hover)}.dialog-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#00000052;z-index:200;display:flex;align-items:center;justify-content:center;animation:fadeIn var(--md-duration-fast) var(--md-easing-standard)}.dialog{background:var(--md-surface);border:none;border-radius:var(--md-radius-xl);padding:var(--md-spacing-24);max-width:360px;width:90%;text-align:center;animation:popIn var(--md-duration-normal) var(--md-easing-emphasized);box-shadow:var(--md-elevation-3)}@keyframes popIn{0%{transform:scale(.9);opacity:0}to{transform:scale(1);opacity:1}}.dialog p{margin-bottom:var(--md-spacing-24);font-size:15px;line-height:20px;color:var(--md-on-surface)}.dialog-actions{display:flex;gap:var(--md-spacing-8)}.dialog-actions button{flex:1}.detail-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#00000052;z-index:150;display:flex;align-items:center;justify-content:center;animation:fadeIn var(--md-duration-fast) var(--md-easing-standard)}.detail-card{background:var(--md-surface);border:none;border-radius:var(--md-radius-xl);padding:var(--md-spacing-24);max-width:420px;width:90%;animation:popIn var(--md-duration-normal) var(--md-easing-emphasized);box-shadow:var(--md-elevation-3)}.detail-card h3{font-size:20px;font-weight:600;margin-bottom:var(--md-spacing-16);color:var(--md-on-surface);line-height:28px}.detail-row{display:flex;justify-content:space-between;padding:var(--md-spacing-12) 0;font-size:13px;line-height:20px;border-bottom:1px solid var(--md-outline-variant);color:var(--md-on-surface-variant)}.detail-row:last-of-type{border-bottom:none}.detail-row .label{color:#86868b;font-weight:500}.detail-actions{display:flex;gap:var(--md-spacing-8);margin-top:var(--md-spacing-16);flex-wrap:wrap}.error-toast{background:var(--md-error-container);color:var(--md-on-error-container);padding:var(--md-spacing-8) var(--md-spacing-16);margin-bottom:var(--md-spacing-8);font-size:13px;border-radius:var(--md-radius-sm);display:flex;align-items:center;justify-content:space-between;border-left:2px solid var(--md-error)}.error-close{background:none;border:none;color:var(--md-on-error-container);cursor:pointer;font-size:18px;padding:0 0 0 var(--md-spacing-12);opacity:.6}.error-close:hover{opacity:1}.selected-date-bar{display:flex;align-items:center;justify-content:space-between;padding:var(--md-spacing-6) var(--md-spacing-12);margin-bottom:var(--md-spacing-8);background:var(--md-primary-container);color:var(--md-on-primary-container);font-size:12px;border-radius:var(--md-radius-sm);font-weight:500}.selected-date-close{background:none;border:none;color:var(--md-on-surface-variant);cursor:pointer;font-size:18px;padding:var(--md-spacing-4);border-radius:var(--md-radius-full);opacity:.6}.selected-date-close:hover{opacity:1;background:var(--md-state-hover)}.todo-panel::-webkit-scrollbar{width:6px}.todo-panel::-webkit-scrollbar-track{background:transparent}.todo-panel::-webkit-scrollbar-thumb{background:var(--md-outline);border-radius:var(--md-radius-full)}.todo-panel::-webkit-scrollbar-thumb:hover{background:var(--md-on-surface-variant)}@media(max-width:768px){#app{padding:12px}.app-header{flex-wrap:wrap;gap:var(--md-spacing-8)}.app-title{font-size:18px}.todo-title{font-size:14px}.drawer{max-height:90vh;border-radius:var(--md-radius-lg-inc) var(--md-radius-lg-inc) 0 0;padding:var(--md-spacing-20)}.drawer-title{font-size:20px}.form-row{flex-direction:column;gap:0}.form-row .form-group{flex:none}.form-input,.form-select{-moz-appearance:none;appearance:none;-webkit-appearance:none}.todo-actions{opacity:1}.main-layout{flex-direction:column;gap:16px}.calendar-panel{display:none}.todo-panel{flex:1;padding:16px;margin-bottom:12px;border-radius:12px}.detail-card{width:95%;padding:var(--md-spacing-20)}.detail-actions{flex-direction:column}.detail-actions button{height:44px}}
