.pwa-toast{position:fixed;right:1rem;bottom:1rem;background:#fff;border:1px solid #ccc;padding:1rem;border-radius:4px;box-shadow:0 2px 4px #0000001a;display:flex;align-items:center;gap:1rem;z-index:1000}.pwa-toast .message{flex-grow:1}:root{--primary-color: #4f46e5;--primary-hover-color: #4338ca;--danger-color: #ef4444;--danger-hover-color: #dc2626;--warning-color: #f59e0b;--success-color: #22c55e;--gray-50: #f9fafb;--gray-100: #f3f4f6;--gray-200: #e5e7eb;--gray-300: #d1d5db;--gray-400: #9ca3af;--gray-500: #6b7280;--gray-700: #374151;--gray-900: #111827;--background-color: var(--gray-100);--surface-color: #ffffff;--text-color: var(--gray-900);--text-muted-color: var(--gray-500);--box-shadow: 0 1px 3px 0 rgba(0, 0, 0, .1), 0 1px 2px -1px rgba(0, 0, 0, .1);--box-shadow-lg: 0 10px 15px -3px rgba(0, 0, 0, .1), 0 4px 6px -4px rgba(0, 0, 0, .1);--border-radius: .5rem;--transition: all .2s ease-in-out}@keyframes spin{to{transform:rotate(360deg)}}.tag-input-group{display:flex;gap:.5rem;margin-bottom:.5rem}.tag-input-group input{flex-grow:1;padding:.5rem}.tag-list{display:flex;flex-wrap:wrap;gap:.25rem}.tag{display:inline-flex;align-items:center;padding:.25rem .5rem;background-color:var(--gray-100);border-radius:9999px;font-size:.875rem}.selectable-tag{cursor:pointer;transition:background-color .2s ease,color .2s ease}.selectable-tag:hover{background-color:var(--gray-200)}.selectable-tag.selected{background-color:#eef2ff;color:#4338ca;font-weight:500}.selectable-tag.selected:hover{background-color:#c7d2fe;color:#3730a3}.loading-spinner{display:inline-block;width:1.25rem;height:1.25rem;border:3px solid var(--primary-color);border-radius:50%;border-top-color:transparent;animation:spin .8s linear infinite;margin-right:.5rem}.loading-feedback{text-align:center;padding:2rem;color:var(--text-muted-color)}.loading-feedback p{margin:1rem 0 .5rem;font-weight:500}.loading-feedback small{font-size:.875em;opacity:.8}.loading-title{text-align:center;margin:1.5rem 0;color:var(--gray-700)}.initialization-steps{margin:2rem 0;padding:0;list-style:none}.step-item{display:flex;align-items:center;gap:1rem;padding:.75rem;margin:.5rem 0;border-radius:var(--border-radius);background:var(--gray-50);border:1px solid var(--gray-200)}.step-icon{width:24px;height:24px;display:flex;align-items:center;justify-content:center;font-weight:500}.step-text{flex-grow:1;color:var(--text-muted-color);display:flex;align-items:center;gap:.5rem;opacity:1;transition:opacity .3s ease,transform .3s ease}.step-item.in-progress .step-text{animation:text-pulse 2s ease-in-out infinite}@keyframes text-pulse{0%{opacity:.8;transform:translate(0)}50%{opacity:1;transform:translate(3px)}to{opacity:.8;transform:translate(0)}}.mini-spinner{width:16px;height:16px;border:2px solid var(--primary-color);border-top-color:transparent;border-radius:50%;animation:spin .8s linear infinite}.progress-dots{display:flex;gap:2px}.progress-dots span{animation:dot-pulse 1.8s infinite ease-in-out}.progress-dots span:nth-child(2){animation-delay:.2s}.progress-dots span:nth-child(3){animation-delay:.4s}@keyframes dot-pulse{0%,to{opacity:.3}50%{opacity:.8}}.step-item{transition:all .3s ease}.settings-container{display:flex;gap:.5rem}.settings-button,.logout-button{padding:.5rem;background:var(--surface-color);color:var(--text-muted-color);border:none;border-radius:var(--border-radius);box-shadow:var(--box-shadow);cursor:pointer;transition:all .2s ease;display:flex;align-items:center;justify-content:center}.settings-button:hover,.logout-button:hover{background:var(--gray-100);transform:translateY(-2px)}.logout-button:hover{background:var(--danger-color);color:#fff}.modal-overlay{position:fixed;inset:0;background:#00000080;display:flex;align-items:center;justify-content:center;z-index:10000}.modal{background:var(--surface-color);padding:2rem;border-radius:var(--border-radius);box-shadow:var(--box-shadow-lg);width:90%;max-width:500px;max-height:90vh;overflow-y:auto}.modal h2{margin-top:0}.modal-actions{display:flex;flex-direction:column;gap:1rem;margin-top:1.5rem}.modal-actions button{width:100%;justify-content:flex-start;padding:.75rem 1rem}.progress-bar{height:10px;background:var(--gray-200);border-radius:5px;margin:1rem 0;overflow:hidden}.progress-fill{height:100%;background:var(--primary-color);transition:width .3s ease}.progress-text{display:block;text-align:center;font-size:.875rem;color:var(--text-muted-color);margin-top:.5rem}.tab-container{display:flex;gap:.5rem}.tab-buttons{display:flex;background:var(--surface-color);border-radius:var(--border-radius);box-shadow:var(--box-shadow);overflow:hidden}.tab-button{padding:.5rem 1rem;background:transparent;color:var(--text-muted-color);border:none;font-weight:500;cursor:pointer;transition:all .2s ease}.tab-button:hover{background:var(--gray-100)}.tab-button.active{background:var(--primary-color);color:#fff}.tab-button:focus{outline:none}.step-icon{transition:opacity .3s ease}.step-item.in-progress{border-left:4px solid var(--primary-color)}.step-item.completed{background:#f0fdf4;border-color:#bbf7d0}.step-item.completed .step-icon{color:#16a34a}.security-note .lock-icon{margin-right:.5rem;opacity:.8}.todo-app ul .loading-feedback{background:transparent;box-shadow:none}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif;background-color:var(--background-color);color:var(--text-color);margin:0;padding:2rem 1rem;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}#root{width:100%;max-width:680px;margin:0 auto}.container{background:var(--surface-color);padding:2.5rem;border-radius:calc(var(--border-radius) * 1.5);box-shadow:0 20px 25px -5px #0000001a,0 8px 10px -6px #0000001a;margin:2rem auto}h1{text-align:center;color:var(--gray-900);font-size:2.5rem;font-weight:800;margin-top:0;margin-bottom:2.5rem;letter-spacing:-.025em;position:relative;padding-bottom:1rem}h1:after{content:"";position:absolute;bottom:0;left:50%;transform:translate(-50%);width:80px;height:4px;background:var(--primary-color);border-radius:2px}.status-bar{padding:.75rem 1rem;margin-bottom:1.5rem;border-radius:calc(var(--border-radius) - 2px);text-align:center;font-weight:500;border:1px solid transparent}.status-bar.online{background-color:#e0f2f1;color:#00796b;border-color:#b2dfdb}.status-bar.offline{background-color:#fff3e0;color:#ef6c00;border-color:#ffe0b2}.error{background-color:#fef2f2;color:var(--danger-color);border:1px solid #fecaca;padding:1rem;margin-bottom:1.5rem;border-radius:calc(var(--border-radius) - 2px)}.notification-prompt,.notification-prompt-denied{padding:1rem;margin-bottom:1.5rem;border-radius:calc(var(--border-radius) - 2px);border:1px solid var(--gray-300);background-color:var(--gray-50);display:flex;justify-content:space-between;align-items:center;gap:1rem}.notification-prompt p,.notification-prompt-denied p{margin:0;color:var(--text-muted-color);font-weight:500}.notification-prompt button{flex-shrink:0}.notification-prompt-denied{background-color:#fffbeb;border-color:#fde68a;justify-content:center}.notification-prompt-denied p{color:#92400e}.dev-tools{background:var(--surface-color);padding:1rem;border-radius:var(--border-radius);box-shadow:var(--box-shadow-lg);display:flex;gap:.75rem}.dev-tools button{padding:.5rem 1rem;font-size:.875rem}.user-actions{position:fixed;top:20px;right:20px;z-index:9999;display:flex;gap:.75rem}.todo-app{position:relative;padding-top:80px}.add-todo-form{margin-bottom:2rem;background-color:var(--gray-50);padding:1.5rem;border-radius:var(--border-radius);border:1px solid var(--gray-200)}.main-input-group{display:flex;gap:.75rem;align-items:center}.task-input{flex-grow:1}.details-input-group{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:1rem;margin-top:1rem}.input-wrapper{display:flex;flex-direction:column;gap:.25rem}.input-wrapper label{font-size:.875rem;font-weight:500;color:var(--text-muted-color);margin-left:.25rem}.input-wrapper input[type=date]::-webkit-calendar-picker-indicator{filter:invert(.5)}.input-wrapper select{appearance:none;background-image:url("data:image/svg+xml;charset=UTF-8,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3e%3cpolyline points='6 9 12 15 18 9'%3e%3c/polyline%3e%3c/svg%3e");background-repeat:no-repeat;background-position:right .75rem center;background-size:1.25rem;padding-right:2.5rem}.form-actions{display:flex;gap:.75rem;justify-content:flex-end;margin-top:1rem}input[type=text],input[type=number],input[type=date],input[type=url],select{padding:.65rem 1rem;font-size:1rem;border:1px solid var(--gray-300);border-radius:calc(var(--border-radius) - 2px);background-color:var(--surface-color);transition:var(--transition);width:100%;box-sizing:border-box}input:focus,select:focus{outline:none;border-color:var(--primary-color);box-shadow:0 0 0 3px #4f46e533}button{padding:.65rem 1.5rem;font-size:1rem;font-weight:600;border:none;border-radius:calc(var(--border-radius) - 2px);cursor:pointer;transition:all .2s cubic-bezier(.4,0,.2,1);display:inline-flex;align-items:center;justify-content:center;line-height:1;gap:.5rem;position:relative;overflow:hidden}button:after{content:"";position:absolute;inset:0;background:currentColor;opacity:0;transition:opacity .2s ease}button:hover:after{opacity:.1}button:active:after{opacity:.2}button:disabled{opacity:.6;cursor:not-allowed}.btn-primary,.add-todo-form .main-input-group button{background-color:var(--primary-color);color:#fff}.btn-primary:hover:not(:disabled),.add-todo-form .main-input-group button:hover:not(:disabled){background-color:var(--primary-hover-color)}.add-todo-form .main-input-group button{padding:.65rem}.btn-secondary{background-color:var(--gray-200);color:var(--gray-700)}.btn-secondary:hover:not(:disabled){background-color:var(--gray-300)}.btn-danger{background-color:var(--danger-color);color:#fff}.btn-danger:hover:not(:disabled){background-color:var(--danger-hover-color)}.filters{display:flex;flex-direction:column;gap:1rem;margin-bottom:1.5rem}.filter-group{display:flex;gap:1rem}.filter-group input,.filter-group select{flex:1}.filters>button{align-self:flex-start}ul{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:.75rem}.todo-item{display:flex;align-items:flex-start;gap:1.25rem;padding:1.5rem;background-color:var(--surface-color);border-radius:var(--border-radius);box-shadow:var(--box-shadow);transition:transform .2s ease,box-shadow .2s ease,opacity .2s ease;position:relative;border-left:4px solid transparent}.todo-item:hover{box-shadow:0 10px 15px -3px #0000001a,0 4px 6px -4px #0000001a;transform:translateY(-3px);border-left-color:var(--primary-color)}.todo-item.archived{opacity:.6;background-color:var(--gray-50);border-left-color:#94a3b8}.todo-item.archived .todo-content .task-text{color:var(--text-muted-color);text-decoration:line-through}.todo-item.completed:not(.archived){opacity:.8;background-color:#f0fdf4;border-left-color:var(--success-color)}.todo-item.completed:not(.archived) .todo-content .task-text{text-decoration:line-through;color:#15803d}.todo-item:not(.completed):not(.archived){border-left-color:#93c5fd}.todo-item input[type=checkbox]{margin-top:.25rem;width:1.25rem;height:1.25rem;flex-shrink:0;accent-color:var(--primary-color)}.todo-content{flex-grow:1;display:flex;flex-direction:column;gap:.75rem;overflow:hidden;word-break:break-word}.todo-content>span{font-weight:500;color:var(--text-color)}.todo-details{display:flex;flex-wrap:wrap;align-items:center;gap:.3rem;font-size:.875rem}.badge{padding:.15rem .4rem;border-radius:9999px;font-weight:600;font-size:.75rem;white-space:nowrap;display:inline-flex;align-items:center}.category{background-color:var(--gray-200);color:var(--gray-700)}.priority-high{background-color:#fee2e2;color:#b91c1c}.priority-medium{background-color:#fef3c7;color:#b45309}.priority-low{background-color:#dcfce7;color:#15803d}.completion-marker{color:var(--success-color);font-weight:700}.due-date{background-color:#e0e7ff;color:#3730a3}.badge.recurrence{background-color:#eef2ff;color:#4338ca;cursor:help;font-size:1rem;line-height:1}.recurrence-toggle{display:flex;align-items:center;gap:.75rem;margin-bottom:.75rem}.recurrence-label{display:flex;align-items:center;gap:.625rem;cursor:pointer;font-weight:500;color:var(--text-color);padding:.625rem 1rem;border-radius:var(--border-radius);background-color:var(--gray-50);border:1px solid var(--gray-200);transition:all .2s ease;font-size:.875rem}.recurrence-label:hover{background-color:var(--gray-100)}.recurrence-icon{font-size:1rem;display:inline-block;transition:transform .2s ease}input:checked+.recurrence-label{background-color:var(--primary-color);color:#fff;border-color:var(--primary-color)}input:checked+.recurrence-label .recurrence-icon{transform:rotate(45deg)}.recurrence-controls{margin-top:.75rem;padding-left:1rem;border-left:2px solid var(--primary-color);transition:opacity .2s ease;margin-left:1.75rem}.recurrence-input-group{display:grid;grid-template-columns:80px 1fr;gap:.75rem;align-items:center}.recurrence-value{width:100%;height:53px;padding:.5rem;border:1px solid var(--gray-300);border-radius:calc(var(--border-radius) - 4px);background:#fff}.recurrence-unit{width:100%;height:53px;padding:.5rem 2rem .5rem 1rem;border:1px solid var(--gray-300);border-radius:calc(var(--border-radius) - 4px);background-color:#fff;background-image:url("data:image/svg+xml;charset=UTF-8,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3e%3cpolyline points='6 9 12 15 18 9'%3e%3c/polyline%3e%3c/svg%3e");background-repeat:no-repeat;background-position:right .75rem center;background-size:1.25rem;appearance:none}.details-input-group .input-wrapper:has(.recurrence-toggle){grid-column:1 / -1}.recurrence-toggle input[type=checkbox]{position:absolute;opacity:0;height:0;width:0}.todo-actions{display:flex;gap:.25rem;margin-left:1rem;align-items:center}.todo-actions button{padding:.25rem;background-color:transparent;color:var(--text-muted-color);border-radius:9999px;width:1.75rem;height:1.75rem;display:flex;align-items:center;justify-content:center;border:none}.todo-actions button:hover{background-color:var(--gray-100)}.todo-actions .edit-btn:hover{color:var(--primary-color)}.todo-actions .delete-btn:hover{color:var(--danger-color)}.edit-todo-form{width:100%}.edit-todo-form .task-input{margin-bottom:1rem}.container>h1+p{text-align:center;color:var(--text-muted-color);margin-top:-1.5rem;margin-bottom:2rem}.container>button.btn-primary{width:100%;padding:.85rem 1.5rem;font-size:1.1rem}.setup-screen{text-align:center;padding:3rem 2rem}.setup-description{font-size:1.1rem;color:var(--text-muted-color);line-height:1.6;max-width:560px;margin:1.5rem auto 3rem}.setup-icon{font-size:4rem;margin-bottom:1.5rem;opacity:.9}.setup-instruction{font-size:.95rem;line-height:1.6;margin:1rem 0 2rem}.setup-footer{margin-top:3rem;padding-top:2rem;border-top:1px solid var(--gray-200)}.setup-option{background-color:var(--gray-50);padding:1.5rem;border-radius:var(--border-radius);border:1px solid var(--gray-200);margin-top:1.5rem;text-align:left}.setup-option h3{margin-top:0;font-size:1.25rem;color:var(--gray-700)}.setup-option p{margin-top:.5rem;margin-bottom:1.5rem;color:var(--text-muted-color)}.setup-option input{margin-bottom:1rem}.setup-option button{width:100%}.or-divider{display:flex;align-items:center;text-align:center;color:var(--text-muted-color);margin:2rem 0}.or-divider:before,.or-divider:after{content:"";flex:1;border-bottom:1px solid var(--gray-300)}.or-divider span{padding:0 1rem}.empty-state{text-align:center;padding:3rem;color:var(--text-muted-color);border:2px dashed var(--gray-200);border-radius:var(--border-radius);margin:2rem 0}.empty-state svg{width:4rem;height:4rem;margin-bottom:1rem;opacity:.6}
