:root{--bg:#f5f7fb;--panel:#fff;--text:#1f2937;--muted:#6b7280;--line:#d1d5db;--brand:#0f766e;--danger:#ef4444}*{box-sizing:border-box}body{margin:0;background:#fff;color:var(--text);font-family:PingFang SC,Microsoft YaHei,sans-serif}.topbar{display:flex;justify-content:space-between;align-items:center;padding:.5rem 1.5rem;background:#0f172a;color:#fff}.topbar nav{display:flex;gap:1rem}.topbar a{color:#dbeafe;text-decoration:none;padding:.5rem .75rem;border-radius:8px;transition:background-color .2s}.topbar a:hover{background-color:hsla(0,0%,100%,.1)}.logout-btn,.topbar nav span{color:#dbeafe;padding:.5rem .75rem}.logout-btn{background-color:transparent;border:1px solid #dbeafe;border-radius:8px;cursor:pointer;transition:all .2s}.logout-btn:hover{background-color:hsla(0,0%,100%,.1)}.container{max-width:1200px;margin:1rem auto;padding:0 1rem 2rem}.stack{display:grid;grid-gap:1rem;gap:1rem}.panel{background:var(--panel);border-radius:12px}.panel-header{justify-content:space-between;gap:.75rem;margin-top:-10px}.panel-header,.week-nav{display:flex;align-items:center}.week-nav{gap:.5rem}.week-nav-btn{background:none;border:1px solid var(--line);border-radius:6px;padding:.25rem .5rem;cursor:pointer;font-size:.9rem;color:var(--text)}.week-nav-btn:hover{background:#f3f4f6}.week-nav-date{font-size:.9rem;color:var(--text);min-width:90px;text-align:center}.grid{display:grid;grid-gap:1rem;gap:1rem}.roles-grid{grid-template-columns:repeat(5,minmax(0,1fr))}.card{border:1px solid var(--line);border-radius:10px;padding:.75rem;background:#fafafa}.task-item{border:1px solid var(--line);border-radius:8px;padding:.6rem;margin-top:.6rem;background:#fff}.task-title-list{list-style:none;margin:.8rem 0 .2rem;padding:0;display:grid;grid-gap:.4rem;gap:.4rem}.task-title-list li{display:flex;align-items:center;justify-content:space-between;gap:.4rem;font-size:.92rem}.task-title-text{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:12ch}.task-title-btn{background:none;border:none;padding:0;cursor:pointer;text-align:left;color:inherit;font:inherit}.task-title-btn:hover{text-decoration:underline}.task-title-row{display:flex;justify-content:space-between;align-items:center;gap:.5rem}.status{display:inline-block;font-size:.75rem;border-radius:999px;padding:.15rem .5rem}.status-todo{background:#b7b8ba}.status-doing{background:#f3d869}.status-done{background:#7fdda0}.muted{color:var(--muted);font-size:.9rem}form{display:grid;grid-gap:.5rem;gap:.5rem}.inline-form{display:flex;gap:.5rem;flex-wrap:wrap;align-items:center}button,input,select,textarea{font:inherit}input,select,textarea{border:1px solid var(--line);border-radius:8px;padding:.5rem;width:100%}button{border:none;border-radius:8px;padding:.45rem .7rem;background:var(--brand);color:#fff;cursor:pointer}button.danger{background:var(--danger)}button.danger:hover{background:#dc2626}.task-actions{display:flex;gap:.5rem;flex-wrap:wrap;margin-top:.5rem}.table{width:100%;border-collapse:collapse}.table td,.table th{border:1px solid var(--line);padding:.5rem;text-align:left}.role-switcher{display:inline-flex;align-items:center;gap:.5rem;flex-wrap:nowrap}.role-switcher label{white-space:nowrap}.role-switcher select{width:auto;min-width:130px}@media (max-width:768px){.topbar{gap:.5rem}.panel-header,.topbar{flex-direction:column;align-items:flex-start}.roles-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.personal-board-header{flex-direction:column;align-items:flex-start}.personal-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (max-width:1300px){.roles-grid{grid-template-columns:repeat(3,minmax(0,1fr))}}@media (max-width:1024px){.roles-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (max-width:640px){.personal-grid,.roles-grid{grid-template-columns:1fr}}.user-menu{position:relative}.user-name-btn{background:transparent;color:#dbeafe;border:none;padding:.5rem .75rem;border-radius:8px;cursor:pointer;font-size:inherit;transition:background-color .2s}.user-name-btn:hover{background-color:hsla(0,0%,100%,.1)}.user-dropdown{position:absolute;top:100%;right:0;margin-top:.5rem;background:#fff;border:1px solid var(--line);border-radius:8px;padding:.75rem;min-width:180px;box-shadow:0 4px 6px -1px rgba(0,0,0,.1),0 2px 4px -1px rgba(0,0,0,.06);z-index:1000}.user-info{display:flex;justify-content:space-between;padding:.4rem 0;border-bottom:1px solid var(--line);font-size:.9rem}.user-info span{color:#666}.user-info:last-of-type{border-bottom:none}.user-label{color:#666}.logout-btn-full{width:100%;margin-top:.75rem;padding:.5rem;background:var(--danger);color:#fff;border:none;border-radius:6px;cursor:pointer;font-size:.9rem;transition:background-color .2s}.logout-btn-full:hover{background:#dc2626}.card-current-user{background:#fff;border:2px solid var(--brand)}.card-header{display:flex;justify-content:space-between;align-items:center}.card-header h3{margin:0}.add-task-btn{width:28px;height:28px;padding:0;display:flex;align-items:center;justify-content:center;font-size:1.2rem;border-radius:50%;background:var(--brand);color:#fff}.add-task-btn:hover{background:#0d5d56}.modal-overlay{position:fixed;top:0;left:0;right:0;bottom:0;background:rgba(0,0,0,.5);display:flex;align-items:center;justify-content:center;z-index:1000}.modal-content{background:#fff;border-radius:12px;padding:1.5rem;min-width:400px;max-width:90%;box-shadow:0 20px 25px -5px rgba(0,0,0,.1),0 10px 10px -5px rgba(0,0,0,.04)}.modal-content h3{margin-top:0;margin-bottom:1rem;color:var(--text)}.modal-actions{display:flex;justify-content:flex-end;gap:.75rem;margin-top:1rem}.modal-actions button{padding:.5rem 1rem}.modal-actions button.secondary,.modal-actions button:not(.danger):not(:last-child){background:#9ca3af}.modal-actions button.secondary:hover,.modal-actions button:not(.danger):not(:last-child):hover{background:#6b7280}.task-status-wrapper{position:relative}.status-btn{border:none;cursor:pointer;font-size:.75rem}.status-btn:hover{opacity:.8}.status-dropdown{position:absolute;top:100%;right:0;margin-top:.25rem;background:#fff;border:1px solid var(--line);border-radius:8px;padding:.25rem;min-width:100px;box-shadow:0 4px 6px -1px rgba(0,0,0,.1);z-index:100}.status-dropdown-item{display:block;width:100%;padding:.4rem .6rem;border:none;border-radius:6px;background:transparent;color:var(--text);font-size:.75rem;text-align:left;cursor:pointer}.status-dropdown-item:hover{background:#f3f4f6}.status-dropdown-item.active{background:#e5e7eb;font-weight:500}.personal-board{margin-top:1.5rem;padding:1rem 0 1.5rem}.personal-board-header{display:flex;align-items:baseline;justify-content:space-between;gap:.75rem;padding:0 .25rem .75rem;margin-top:-20px}.personal-board-header h3{margin:0}.personal-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.personal-column{border:1px dashed var(--line);border-radius:12px;background:#fbfbfb;padding:.75rem;min-height:220px;transition:border-color .2s,background-color .2s}.personal-column-active{border-color:var(--brand);background:#f0fdfa}.personal-column-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:.75rem}.personal-task-list{list-style:none;margin:0;padding:0;display:grid;grid-gap:.6rem;gap:.6rem}.personal-task-card{border:1px solid var(--line);border-radius:10px;background:#fff;padding:.65rem .75rem;display:grid;grid-gap:.35rem;gap:.35rem;cursor:-webkit-grab;cursor:grab;box-shadow:0 1px 2px rgba(15,23,42,.06)}.personal-task-card .task-title-text{max-width:none;white-space:nowrap}.personal-task-card:active{cursor:-webkit-grabbing;cursor:grabbing}.personal-task-card .task-title-btn{cursor:-webkit-grab;cursor:grab}.personal-task-card .task-title-btn:hover{text-decoration:none}.personal-task-card .task-title-btn:active{cursor:-webkit-grabbing;cursor:grabbing}.personal-task-desc{margin:0;font-size:.85rem;line-height:1.35}