:root{--primary: #4772fa;--primary-dark: #3359d1;--danger: #ef5350;--bg: #f4f5f7;--card: #ffffff;--column-bg: #eceef2;--text: #1f2937;--muted: #8a94a6;--border: #e3e6ec;--shadow: 0 1px 3px rgba(16, 24, 40, .08);--radius: 12px}*{box-sizing:border-box;margin:0;padding:0}html,body,#root{height:100%}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,PingFang SC,Microsoft YaHei,Roboto,Helvetica,Arial,sans-serif;background:var(--bg);color:var(--text)}button{font-family:inherit;cursor:pointer}input{font-family:inherit}.auth-page{min-height:100%;display:flex;align-items:center;justify-content:center;padding:24px;background:linear-gradient(135deg,#4772fa,#7b5ff0 55%,#b06ee8)}.auth-card{width:100%;max-width:380px;background:var(--card);border-radius:18px;padding:36px 32px;box-shadow:0 24px 60px #0003;display:flex;flex-direction:column;gap:14px}.auth-brand{font-size:36px;text-align:center}.auth-card h1{font-size:22px;text-align:center}.auth-sub{text-align:center;color:var(--muted);font-size:13px;margin-bottom:6px}.auth-card label{display:flex;flex-direction:column;gap:6px;font-size:13px;color:var(--muted)}.auth-card input{padding:12px 14px;border:2px solid var(--border);border-radius:10px;font-size:15px;outline:none;transition:border-color .15s;color:var(--text)}.auth-card input:focus{border-color:var(--primary)}.auth-error{background:#fdecea;color:#c62828;padding:10px 12px;border-radius:10px;font-size:13px}.auth-submit{padding:13px;border:none;border-radius:10px;background:var(--primary);color:#fff;font-size:15px;font-weight:600;transition:background .15s}.auth-submit:hover:not(:disabled){background:var(--primary-dark)}.auth-submit:disabled{opacity:.6;cursor:not-allowed}.auth-switch{text-align:center;font-size:13px;color:var(--muted)}.auth-switch a{color:var(--primary);text-decoration:none;font-weight:600}.auth-loading{height:100%;display:flex;align-items:center;justify-content:center;color:var(--muted);font-size:15px}.board{height:100%;display:flex;flex-direction:column}.board-header{display:flex;align-items:center;justify-content:space-between;padding:14px 24px;background:var(--card);border-bottom:1px solid var(--border);box-shadow:var(--shadow)}.board-brand{display:flex;align-items:center;gap:8px;font-size:17px;font-weight:700}.board-logo{font-size:20px}.board-user{display:flex;align-items:center;gap:14px}.board-email{color:var(--muted);font-size:13px}.btn-logout{padding:7px 14px;border:1px solid var(--border);border-radius:8px;background:#fff;color:var(--text);font-size:13px;transition:all .15s}.btn-logout:hover{border-color:var(--danger);color:var(--danger)}.board-error{background:#fdecea;color:#c62828;padding:8px 24px;font-size:13px}.board-body{flex:1;display:flex;align-items:flex-start;gap:16px;padding:20px 24px;overflow-x:auto;overflow-y:hidden}.board-hint{padding:0 24px 12px;color:var(--muted);font-size:12px}.column{flex:0 0 300px;width:300px;max-height:100%;background:var(--column-bg);border-radius:var(--radius);display:flex;flex-direction:column;box-shadow:var(--shadow);transition:box-shadow .15s}.column.drag-over{box-shadow:0 0 0 2px var(--primary)}.column-header{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:12px 14px}.column-title{display:flex;align-items:center;gap:8px;font-size:15px;font-weight:700;cursor:pointer;-webkit-user-select:none;user-select:none}.column-dot{width:9px;height:9px;border-radius:50%;background:var(--primary);flex-shrink:0}.column-count{background:#0000000f;color:var(--muted);font-size:12px;font-weight:600;padding:1px 8px;border-radius:999px}.column-name-input{flex:1;padding:6px 8px;border:2px solid var(--primary);border-radius:8px;font-size:15px;outline:none}.column-menu-wrap{position:relative}.column-menu-btn{border:none;background:transparent;color:var(--muted);font-size:16px;padding:2px 8px;border-radius:6px}.column-menu-btn:hover{background:#0000000f;color:var(--text)}.column-menu{position:absolute;right:0;top:28px;z-index:20;background:#fff;border:1px solid var(--border);border-radius:10px;box-shadow:0 8px 24px #00000024;min-width:130px;padding:4px;display:flex;flex-direction:column}.column-menu button{border:none;background:transparent;text-align:left;padding:8px 10px;font-size:13px;border-radius:6px;color:var(--text)}.column-menu button:hover{background:#f3f4f6}.column-menu button.danger{color:var(--danger)}.column-body{flex:1;overflow-y:auto;padding:4px 10px 10px;display:flex;flex-direction:column;gap:8px}.column-empty{text-align:center;color:var(--muted);font-size:12px;padding:18px 0;border:1px dashed #cfd4dd;border-radius:10px}.column-footer{padding:10px}.footer-row{display:flex;gap:6px;align-items:center}.footer-row input{flex:1;min-width:0;padding:9px 12px;border:1px solid transparent;border-radius:8px;font-size:14px;outline:none;background:#ffffffb3}.footer-row input:focus{border-color:var(--primary);background:#fff}.btn-today{flex-shrink:0;border:1px solid var(--border);background:#fff;color:var(--muted);padding:7px 10px;border-radius:8px;font-size:12px;white-space:nowrap;cursor:pointer;transition:all .15s}.btn-today.active{background:var(--primary);border-color:var(--primary);color:#fff}.footer-add{flex-shrink:0;border:none;background:var(--primary);color:#fff;width:30px;height:30px;border-radius:8px;font-size:18px;line-height:1;cursor:pointer}.todo-card{display:flex;align-items:flex-start;gap:10px;background:#fff;border-radius:10px;padding:11px 12px;box-shadow:var(--shadow);cursor:grab;transition:transform .12s,box-shadow .12s}.todo-card:hover{box-shadow:0 3px 10px #10182824}.todo-card.dragging{opacity:.4}.todo-check{display:flex;align-items:center;padding-top:2px;flex-shrink:0}.todo-check input{width:16px;height:16px;accent-color:var(--primary);cursor:pointer}.todo-main{flex:1;min-width:0;display:flex;flex-direction:column;gap:5px}.todo-title{font-size:14px;line-height:1.45;word-break:break-word}.todo-badges{display:flex;flex-wrap:wrap;gap:5px}.badge{font-size:11px;line-height:1;padding:3px 7px;border-radius:999px;background:#eef2ff;color:var(--primary-dark);white-space:nowrap}.badge-due{background:#fff4e5;color:#b25e09}.badge-remind{background:#fdeaea;color:#c62828}.todo-card.completed .todo-title{text-decoration:line-through;color:var(--muted)}.todo-del{border:none;background:transparent;color:#c4c9d3;font-size:16px;line-height:1;padding:0 2px;border-radius:6px;visibility:hidden}.todo-card:hover .todo-del{visibility:visible}.todo-del:hover{color:var(--danger)}.add-column{flex:0 0 300px;width:300px;border:2px dashed #cfd4dd;background:transparent;border-radius:var(--radius);color:var(--muted);font-size:14px;padding:18px;transition:all .15s}.add-column:hover{border-color:var(--primary);color:var(--primary);background:#4772fa0d}.add-column-form{flex:0 0 300px;width:300px;background:var(--column-bg);border-radius:var(--radius);padding:12px;display:flex;flex-direction:column;gap:10px;box-shadow:var(--shadow)}.add-column-form input{padding:10px 12px;border:2px solid var(--primary);border-radius:8px;font-size:14px;outline:none}.add-column-actions{display:flex;gap:8px}.add-column-actions button{padding:7px 16px;border:none;border-radius:8px;background:var(--primary);color:#fff;font-size:13px;font-weight:600}.add-column-actions button.ghost{background:transparent;color:var(--muted)}.toast{position:fixed;bottom:24px;left:50%;transform:translate(-50%);background:#fdecea;color:#c62828;border:1px solid #f5c6cb;padding:12px 18px;border-radius:10px;font-size:14px;box-shadow:0 8px 24px #00000029;z-index:100;max-width:90%;animation:toastIn .2s ease}@keyframes toastIn{0%{opacity:0;transform:translate(-50%,8px)}to{opacity:1;transform:translate(-50%)}}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes modalIn{0%{opacity:0;transform:translateY(10px) scale(.98)}to{opacity:1;transform:translateY(0) scale(1)}}.modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#0f172a73;display:flex;align-items:center;justify-content:center;padding:20px;z-index:200;animation:fadeIn .15s ease}.modal{width:100%;max-width:460px;max-height:90vh;overflow-y:auto;background:#fff;border-radius:16px;box-shadow:0 24px 60px #00000047;padding:22px;animation:modalIn .18s ease}.modal-header{display:flex;align-items:center;gap:10px;margin-bottom:16px}.modal-title{flex:1;border:none;border-bottom:2px solid transparent;font-size:18px;font-weight:700;padding:6px 2px;outline:none;color:var(--text)}.modal-title:focus{border-bottom-color:var(--primary)}.modal-close{border:none;background:transparent;font-size:22px;color:var(--muted);line-height:1;padding:4px 8px;border-radius:8px}.modal-close:hover{background:#f3f4f6;color:var(--text)}.modal-row{margin-bottom:16px}.modal-check{display:flex;align-items:center;gap:8px;font-size:14px;cursor:pointer}.modal-check input{width:17px;height:17px;accent-color:var(--primary);cursor:pointer}.modal-section{padding:14px 0;border-top:1px solid var(--border)}.modal-section h4{font-size:13px;color:var(--muted);margin-bottom:10px;text-transform:uppercase;letter-spacing:.5px}.segmented{display:flex;flex-wrap:wrap;gap:8px}.seg{border:1px solid var(--border);background:#fff;color:var(--text);padding:7px 14px;border-radius:999px;font-size:13px;transition:all .15s}.seg:hover{border-color:var(--primary);color:var(--primary)}.seg.active{background:var(--primary);border-color:var(--primary);color:#fff}.modal-field{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-top:12px;font-size:14px}.modal-field input{padding:8px 10px;border:1px solid var(--border);border-radius:8px;font-size:14px;outline:none;color:var(--text)}.modal-field input:focus{border-color:var(--primary)}.switch-row{display:flex;align-items:center;gap:8px;font-size:14px;cursor:pointer}.switch-row input{width:17px;height:17px;accent-color:var(--primary);cursor:pointer}.modal-footer{display:flex;justify-content:flex-end;padding-top:14px;border-top:1px solid var(--border);margin-top:8px}.modal-delete{border:1px solid #f5c6cb;background:#fdecea;color:#c62828;padding:9px 18px;border-radius:10px;font-size:14px;font-weight:600;transition:all .15s}.modal-delete:hover{background:var(--danger);border-color:var(--danger);color:#fff}.notes-list{display:flex;flex-direction:column;gap:8px;max-height:240px;overflow-y:auto;margin-bottom:10px}.notes-empty{color:var(--muted);font-size:13px;text-align:center;padding:14px 0;border:1px dashed var(--border);border-radius:10px}.note-item{background:#f7f8fa;border-radius:10px;padding:10px 12px}.note-content{font-size:14px;line-height:1.5;white-space:pre-wrap;word-break:break-word}.note-meta{display:flex;align-items:center;justify-content:space-between;margin-top:6px;font-size:11px;color:var(--muted)}.note-meta button{border:none;background:transparent;color:var(--muted);font-size:12px;cursor:pointer;padding:2px 6px;border-radius:6px}.note-meta button:hover{color:var(--danger);background:#ef535014}.note-composer{display:flex;gap:8px;align-items:flex-end}.note-composer textarea{flex:1;resize:none;border:1px solid var(--border);border-radius:10px;padding:9px 11px;font-size:14px;font-family:inherit;outline:none;min-height:40px}.note-composer textarea:focus{border-color:var(--primary)}.note-composer button{padding:9px 16px;border:none;border-radius:10px;background:var(--primary);color:#fff;font-size:13px;font-weight:600;white-space:nowrap}.note-composer button:disabled{opacity:.5;cursor:not-allowed}.overdue-column{background:#fdf3f3;border:1px solid #f5c6cb}.overdue-title{color:#c62828}.overdue-dot{background:var(--danger)}.overdue-date{font-size:11px;color:#c62828}.btn-postpone{flex-shrink:0;border:1px solid var(--primary);background:#eef2ff;color:var(--primary-dark);padding:4px 10px;border-radius:8px;font-size:12px;font-weight:600;transition:all .15s}.btn-postpone:hover{background:var(--primary);color:#fff}.overdue-card .todo-title{color:#c62828}.confirm-modal{max-width:360px;padding:26px 22px;text-align:center}.confirm-text{font-size:15px;line-height:1.5;word-break:break-word;margin-bottom:20px}.confirm-actions{display:flex;gap:10px;justify-content:center}.confirm-cancel,.confirm-ok{padding:9px 22px;border-radius:10px;font-size:14px;font-weight:600;border:1px solid var(--border);background:#fff;color:var(--text);cursor:pointer}.confirm-ok{background:var(--primary);border-color:var(--primary);color:#fff}.confirm-ok:hover{background:var(--primary-dark)}.main-nav{display:flex;gap:4px;margin:0 auto}.nav-tab{padding:7px 16px;border-radius:8px;color:var(--muted);text-decoration:none;font-size:14px;font-weight:500;transition:all .15s}.nav-tab:hover{background:#f3f4f6;color:var(--text)}.nav-tab.active{background:var(--primary);color:#fff}.memo-page{height:100%;display:flex;flex-direction:column}.memo-main{flex:1;overflow-y:auto;padding:28px;max-width:720px;width:100%;margin:0 auto}.memo-title{font-size:22px;margin-bottom:4px}.memo-subtitle{color:var(--muted);font-size:13px;margin-bottom:20px}.memo-composer{display:flex;gap:10px;margin-bottom:20px;align-items:flex-end}.memo-composer textarea{flex:1;resize:vertical;min-height:64px;border:1px solid var(--border);border-radius:12px;padding:12px 14px;font-size:14px;font-family:inherit;outline:none}.memo-composer textarea:focus{border-color:var(--primary)}.memo-composer button{padding:10px 20px;border:none;border-radius:10px;background:var(--primary);color:#fff;font-size:14px;font-weight:600;flex-shrink:0}.memo-composer button:disabled{opacity:.5;cursor:not-allowed}.memo-list{display:flex;flex-direction:column;gap:12px}.memo-card{background:#fff;border:1px solid var(--border);border-radius:12px;padding:14px 16px}.memo-card textarea{width:100%;resize:vertical;min-height:80px;border:1px solid var(--primary);border-radius:8px;padding:8px 10px;font-size:14px;font-family:inherit;outline:none}.memo-content{font-size:14px;line-height:1.6;white-space:pre-wrap;word-break:break-word}.memo-meta{display:flex;align-items:center;justify-content:space-between;margin-top:10px;font-size:12px;color:var(--muted)}.memo-actions{display:flex;gap:8px}.memo-actions button{border:none;background:transparent;color:var(--muted);font-size:12px;cursor:pointer;padding:3px 8px;border-radius:6px}.memo-actions button:hover{background:#f3f4f6;color:var(--text)}.memo-actions button.danger:hover{color:var(--danger)}.memo-empty{color:var(--muted);font-size:14px;text-align:center;padding:30px 0;border:1px dashed var(--border);border-radius:12px}
