*{box-sizing:border-box;margin:0;padding:0}body{background:#f3f2f1;height:100vh;font-family:Segoe UI,Microsoft YaHei,sans-serif;overflow:hidden}#root{height:100vh}.login-page{background:linear-gradient(135deg,#0078d4 0%,#106ebe 100%);justify-content:center;align-items:center;height:100vh;display:flex}.login-card{background:#fff;border-radius:8px;flex-direction:column;gap:14px;width:360px;max-width:calc(100vw - 32px);padding:40px;display:flex;box-shadow:0 8px 32px #00000040}.login-card h1{color:#323130;text-align:center;font-size:20px}.login-tip{color:#605e5c;text-align:center;margin-bottom:6px;font-size:13px}.login-card input{border:1px solid #e1dfdd;border-radius:4px;outline:none;padding:10px 12px;font-size:14px}.login-card input:focus{border-color:#0078d4}.login-error{color:#d13438;font-size:13px}.login-card button{color:#fff;cursor:pointer;background:#0078d4;border:none;border-radius:4px;padding:10px;font-size:15px}.login-card button:hover:not(:disabled){background:#106ebe}.login-card button:disabled{opacity:.6;cursor:default}.app{flex-direction:column;height:100vh;display:flex}.logout-btn{color:#605e5c;cursor:pointer;background:#fff;border:1px solid #e1dfdd;border-radius:4px;justify-content:center;align-items:center;gap:6px;padding:8px 12px;font-size:13px;display:flex}.logout-btn:hover{color:#d13438;border-color:#d13438}.main{flex-direction:column;flex:1;min-height:0;padding:32px 40px 24px;display:flex;overflow:hidden}.main-header{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:16px;display:flex}.header-right{flex-wrap:wrap;align-items:center;gap:12px;display:flex}.header-user{color:#323130;font-size:14px;font-weight:600}.dept-tabs{background:#e9e7e4;border-radius:6px;gap:4px;padding:3px;display:flex}.dept-tab{color:#605e5c;cursor:pointer;background:0 0;border:none;border-radius:4px;padding:6px 14px;font-size:13px}.dept-tab.active{color:#0078d4;background:#fff;font-weight:600;box-shadow:0 1px 2px #0000001a}.dept-badge{color:#0078d4;background:#fff;border:1px solid #e1dfdd;border-radius:4px;padding:6px 12px;font-size:13px}.date{color:#605e5c;margin-top:4px;font-size:13px}.task-list{flex:1;margin-top:20px;list-style:none;overflow-y:auto}.task{background:#fff;border-radius:4px;align-items:center;gap:12px;margin-bottom:8px;padding:14px 16px;display:flex;box-shadow:0 1px 2px #00000014}.task .checkbox{cursor:pointer;color:#fff;border:2px solid #0078d4;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;width:18px;height:18px;font-size:12px;display:flex}.task .checkbox.disabled{cursor:not-allowed;border-color:#c8c6c4}.task.done .checkbox{background:#0078d4}.task.done .checkbox.disabled{background:#c8c6c4}.task-title{color:#323130;word-break:break-all;flex:1;min-width:0;font-size:14px}.task-time{color:#a19f9d;font-variant-numeric:tabular-nums;flex-shrink:0;font-size:12px}.task.done .task-title{color:#a19f9d;text-decoration:line-through}.empty-tip{text-align:center;color:#a19f9d;margin-top:60px;font-size:14px}.done-section-header{color:#605e5c;cursor:pointer;-webkit-user-select:none;user-select:none;border-radius:4px;align-items:center;gap:8px;margin:16px 0 8px;padding:12px 16px;font-size:14px;font-weight:600;display:flex}.done-section-header:hover{background:#edebe9}.done-arrow{color:#a19f9d;font-size:16px;transition:transform .15s;display:inline-block}.done-arrow.open{transform:rotate(90deg)}.add-task-wrap{flex-shrink:0}.add-task{background:#fff;border-radius:4px;flex-shrink:0;align-items:center;gap:12px;padding:14px 16px;display:flex;box-shadow:0 1px 2px #00000014}.add-icon{color:#0078d4;align-items:center;display:flex}.add-task input{border:none;outline:none;flex:1;font-size:14px}.add-task input::placeholder{color:#0078d4}.add-task.focus{box-shadow:0 0 0 2px #0078d4}.add-submit{color:#fff;cursor:pointer;background:#0078d4;border:none;border-radius:4px;flex-shrink:0;padding:8px 20px;font-size:14px}.add-submit:hover:not(:disabled){background:#106ebe}.add-submit:disabled{opacity:.5;cursor:default}@media (width<=768px){.main{padding:16px 16px 12px}.task-list{margin-top:12px}.done-section-header{padding:10px 12px}}.add-task-error{color:#d13438;margin-top:6px;font-size:12px}
