:root{--green:#25A244;--green-dark:#1A7A32;--green-tint:#ECF8F0;--purple:#6B2BD4;--purple-tint:#F2EDFC;--text:#0D1117;--text-secondary:#3D4458;--muted:#7C839A;--border:#E3E6EF;--surface:#F8F9FC;--gold:#F2A93B;--font-display:Arial,Helvetica,sans-serif;--font-body:Calibri,"Segoe UI",Tahoma,sans-serif;--radius:10px}*{box-sizing:border-box}body,html{height:100%;margin:0}body{font-family:var(--font-body);color:var(--text);background:var(--surface);-webkit-font-smoothing:antialiased}button{font-family:inherit}::-webkit-scrollbar{height:8px;width:8px}::-webkit-scrollbar-thumb{background:var(--border);border-radius:8px}.auth-wrap{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:20px}.auth-card{background:#fff;border:1px solid var(--border);border-radius:14px;padding:32px;width:100%;max-width:380px;text-align:center}.auth-card .logo-mark{width:56px;height:56px;border-radius:12px;margin:0 auto 14px;border:1px solid var(--border)}.auth-card h1{font-family:var(--font-display);font-size:18px;margin:0 0 22px}.auth-card form{display:flex;flex-direction:column;gap:10px;text-align:left}.auth-card label{font-size:11.5px;font-weight:700;color:var(--muted);text-transform:uppercase;letter-spacing:.04em}.auth-card input{border:1px solid var(--border);border-radius:8px;padding:10px 12px;font-size:14px;outline:none}.auth-card input:focus{border-color:var(--purple)}.auth-card button{margin-top:6px;background:var(--green);color:#fff;border:none;border-radius:8px;padding:10px 14px;font-weight:700;font-size:14px;cursor:pointer}.auth-card button:hover{background:var(--green-dark)}.auth-card .error{color:#B3261E;font-size:12.5px;margin:0}.auth-card p{font-size:13.5px;color:var(--text-secondary)}#app-shell{display:flex;flex-direction:column;height:100vh}.topbar{gap:14px;padding:10px 18px;border-bottom:1px solid var(--border)}.logo-mark,.topbar{display:flex;align-items:center;background:#fff;flex:0 0 auto}.logo-mark{width:34px;height:34px;border-radius:8px;overflow:hidden;justify-content:center;border:1px solid var(--border)}.logo-mark img{width:100%;height:100%;object-fit:contain}.topbar h1{font-family:var(--font-display);font-size:16px;font-weight:700;margin:0}.topbar .subtitle{font-size:12px;color:var(--muted);margin-top:1px}.topbar-spacer{flex:1 1}.user-chip{gap:8px;background:var(--surface);border:1px solid var(--border);border-radius:999px;padding:5px 12px 5px 6px;font-size:13px;color:var(--text-secondary);cursor:pointer}.user-avatar,.user-chip{display:flex;align-items:center}.user-avatar{width:22px;height:22px;border-radius:50%;background:var(--purple-tint);color:var(--purple);justify-content:center;font-size:11px;font-weight:700;font-family:var(--font-display);flex:0 0 auto}.role-badge{font-size:10.5px;font-weight:700;text-transform:uppercase;letter-spacing:.04em;padding:2px 8px;border-radius:999px}.role-badge.team{background:var(--green-tint);color:var(--green-dark)}.role-badge.client{background:var(--purple-tint);color:var(--purple)}.layout{flex:1 1 auto}.layout,.sidebar{display:flex;min-height:0}.sidebar{width:240px;flex:0 0 auto;background:#fff;border-right:1px solid var(--border);flex-direction:column}.sidebar-header{padding:14px 16px 8px;font-family:var(--font-display);font-size:11px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--muted)}.board-list{flex:1 1 auto;overflow-y:auto;padding:2px 8px}.board-item{display:flex;align-items:center;gap:10px;padding:9px 10px;border-radius:8px;cursor:pointer;font-size:13.5px;color:var(--text-secondary);margin-bottom:2px}.board-item:hover{background:var(--surface)}.board-item.active{background:var(--green-tint);color:var(--green-dark);font-weight:700}.board-dot{width:9px;height:9px;border-radius:50%;flex:0 0 auto}.board-item .name{flex:1 1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.sidebar-footer{padding:10px;border-top:1px solid var(--border)}.btn{font-family:var(--font-body);font-size:13px;border-radius:8px;border:1px solid var(--border);background:#fff;color:var(--text-secondary);padding:8px 12px;cursor:pointer}.btn:hover{border-color:var(--purple);color:var(--purple)}.btn-primary{background:var(--green);border-color:var(--green);color:#fff;font-weight:700}.btn-primary:hover{background:var(--green-dark);border-color:var(--green-dark);color:#fff}.btn-block{width:100%}.btn-ghost{border:none;background:transparent;color:var(--muted)}.btn-ghost:hover{color:var(--purple)}.btn-danger{color:#B3261E}.btn-danger:hover{color:#B3261E;border-color:#B3261E}.board-area{flex:1 1 auto;display:flex;flex-direction:column;min-width:0;min-height:0}.board-head{display:flex;align-items:center;gap:12px;padding:16px 22px 10px;flex:0 0 auto}.board-head h2{margin:0}.board-head h2,.board-title-input{font-family:var(--font-display);font-size:20px}.board-title-input{font-weight:700;border:1px solid transparent;background:transparent;padding:2px 6px;border-radius:6px;color:var(--text)}.board-title-input:focus,.board-title-input:hover{border-color:var(--border);background:#fff;outline:none}.member-pills{display:flex;gap:6px;flex-wrap:wrap;padding:0 22px 12px;flex:0 0 auto}.member-pill{font-size:11.5px;background:var(--purple-tint);color:var(--purple);border-radius:999px;padding:3px 10px;font-weight:600}.member-pill.add{background:var(--surface);color:var(--muted);border:1px dashed var(--border);cursor:pointer}.member-pill.add:hover{color:var(--purple);border-color:var(--purple)}.columns-wrap{flex:1 1 auto;overflow-x:auto;overflow-y:hidden;padding:4px 22px 18px}.columns{display:flex;gap:14px;height:100%;align-items:flex-start}.column{width:270px;flex:0 0 270px;background:#fff;border-radius:var(--radius);display:flex;flex-direction:column;max-height:100%;border:1px solid var(--border);border-top:3px solid var(--col-accent,var(--green))}.column.drag-over{outline:2px dashed var(--purple);outline-offset:-2px}.column-head{display:flex;align-items:center;gap:6px;padding:10px 10px 8px 12px;cursor:-webkit-grab;cursor:grab}.col-title-input{font-family:var(--font-display);font-weight:700;font-size:13.5px;border:none;background:transparent;flex:1 1;min-width:0;color:var(--text);padding:2px 4px;border-radius:5px}.col-title-input:focus,.col-title-input:hover{background:var(--surface);outline:none}.col-count{font-size:11px;color:var(--muted);background:var(--surface);border-radius:999px;padding:2px 7px;font-weight:700;flex:0 0 auto}.col-menu-btn{background:none;border:none;color:var(--muted);cursor:pointer;font-size:16px;padding:2px 4px;border-radius:5px;line-height:1}.col-menu-btn:hover{color:var(--purple);background:var(--surface)}.col-menu{position:absolute;background:#fff;border:1px solid var(--border);border-radius:8px;box-shadow:0 6px 20px rgba(13,17,23,.12);padding:4px;z-index:40;min-width:150px}.col-menu button{display:block;width:100%;text-align:left;background:none;border:none;padding:7px 10px;font-size:13px;color:var(--text-secondary);border-radius:6px;cursor:pointer}.col-menu button:hover{background:var(--surface)}.card-list{flex:1 1 auto;overflow-y:auto;padding:2px 10px 6px;min-height:30px}.card{background:#fff;border:1px solid var(--border);border-radius:8px;padding:9px 10px;margin-bottom:8px;cursor:-webkit-grab;cursor:grab;box-shadow:0 1px 2px rgba(13,17,23,.04)}.card:hover{border-color:var(--purple)}.card.dragging{opacity:.4}.card-title{font-size:13.5px;color:var(--text);font-weight:600;margin:0 0 6px;word-break:break-word}.card-meta{display:flex;align-items:center;justify-content:space-between;gap:6px;flex-wrap:wrap}.card-assignee{font-size:11px;color:var(--purple);background:var(--purple-tint);padding:2px 8px;border-radius:999px;font-weight:600;max-width:150px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.card-assignee.none{color:var(--muted);background:var(--surface)}.card-due{font-size:10.5px;color:var(--muted);font-weight:600}.card-due.overdue{color:#B3261E}.card-due.soon{color:var(--gold)}.card-waiting{font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.03em;padding:2px 7px;border-radius:999px;background:var(--gold);color:#fff}.add-card-row{padding:2px 10px 10px}.add-card-btn{width:100%;text-align:left;background:none;border:none;color:var(--muted);font-size:13px;padding:7px 4px;cursor:pointer;border-radius:6px}.add-card-btn:hover{color:var(--green-dark);background:var(--green-tint)}.add-card-form textarea{width:100%;border:1px solid var(--purple);border-radius:6px;padding:7px 8px;font-family:var(--font-body);font-size:13px;resize:none;outline:none}.add-card-actions{display:flex;gap:8px;margin-top:6px}.add-column{width:250px;flex:0 0 250px}.add-column-btn{width:100%;background:rgba(255,255,255,.5);border:1px dashed var(--border);border-radius:var(--radius);padding:12px;color:var(--muted);font-size:13.5px;cursor:pointer;text-align:left}.add-column-btn:hover{border-color:var(--green);color:var(--green-dark);background:var(--green-tint)}.empty-state{flex:1 1;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:40px;color:var(--muted);gap:10px}.empty-state h3{font-family:var(--font-display);color:var(--text);margin:0}.modal-overlay{position:fixed;inset:0;background:rgba(13,17,23,.45);display:flex;align-items:center;justify-content:center;z-index:100;padding:20px}.modal{background:#fff;border-radius:12px;width:100%;max-width:440px;max-height:90vh;overflow-y:auto;padding:22px;box-shadow:0 20px 60px rgba(13,17,23,.25)}.modal h3{font-family:var(--font-display);margin:0 0 14px;font-size:17px}.field{margin-bottom:14px}.field label{display:block;font-size:11.5px;font-weight:700;color:var(--muted);text-transform:uppercase;letter-spacing:.04em;margin-bottom:5px}.field input[type=date],.field input[type=email],.field input[type=text],.field select,.field textarea{width:100%;border:1px solid var(--border);border-radius:7px;padding:8px 10px;font-family:var(--font-body);font-size:13.5px;color:var(--text);outline:none}.field input:focus,.field select:focus,.field textarea:focus{border-color:var(--purple)}.field textarea{resize:vertical;min-height:70px}.modal-actions{justify-content:space-between;align-items:center;margin-top:18px}.modal-actions,.modal-actions-right{display:flex;gap:8px}.hint{font-size:11.5px;color:var(--muted);margin:-8px 0 14px}